summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Walter <stefw@src.gnome.org>2008-06-30 15:24:09 +0000
committerStefan Walter <stefw@src.gnome.org>2008-06-30 15:24:09 +0000
commite97c46166c565d2599af53d7e6a522562075d173 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent3b12f6fca382c0b61dc04a37683e243d7961c8bc (diff)
downloadgnome-keyring-git-migration-branches-gnome-2-22.tar.gz
Move branch into right placegit-migration-branches-gnome-2-22
svn path=/tags/git-migration-branches-gnome-2-22; revision=1157
-rw-r--r--.cvsignore45
-rw-r--r--AUTHORS6
-rw-r--r--COPYING340
-rw-r--r--COPYING.LIB481
-rw-r--r--CVSVERSION0
-rw-r--r--ChangeLog3586
-rw-r--r--HACKING74
-rw-r--r--INSTALL229
-rw-r--r--MAINTAINERS9
-rw-r--r--Makefile.am64
-rw-r--r--NEWS318
-rw-r--r--README10
-rw-r--r--TODO18
-rwxr-xr-xautogen.sh23
-rw-r--r--common/Makefile.am55
-rw-r--r--common/gkr-async.c631
-rw-r--r--common/gkr-async.h159
-rw-r--r--common/gkr-buffer.c562
-rw-r--r--common/gkr-buffer.h194
-rw-r--r--common/gkr-cleanup.c88
-rw-r--r--common/gkr-cleanup.h35
-rw-r--r--common/gkr-crypto.c1134
-rw-r--r--common/gkr-crypto.h104
-rw-r--r--common/gkr-daemon-util.c327
-rw-r--r--common/gkr-daemon-util.h35
-rw-r--r--common/gkr-dbus.c425
-rw-r--r--common/gkr-dbus.h39
-rw-r--r--common/gkr-id.c246
-rw-r--r--common/gkr-id.h56
-rw-r--r--common/gkr-location-watch.c363
-rw-r--r--common/gkr-location-watch.h70
-rw-r--r--common/gkr-location.c1105
-rw-r--r--common/gkr-location.h126
-rw-r--r--common/gkr-secure-memory.c800
-rw-r--r--common/gkr-secure-memory.h85
-rw-r--r--common/gkr-unix-credentials.c208
-rw-r--r--common/gkr-unix-credentials.h32
-rw-r--r--common/gkr-unix-signal.c148
-rw-r--r--common/gkr-unix-signal.h34
-rw-r--r--common/gkr-wakeup.c105
-rw-r--r--common/gkr-wakeup.h37
-rw-r--r--common/tests/Makefile.am16
-rw-r--r--common/tests/unit-test-async.c228
-rw-r--r--common/tests/unit-test-cleanup.c166
-rw-r--r--common/tests/unit-test-crypto.c303
-rw-r--r--common/tests/unit-test-location-watch.c234
-rw-r--r--common/tests/unit-test-location.c144
-rw-r--r--common/tests/unit-test-secmem.c141
-rw-r--r--common/tests/unit-test-signal.c117
-rw-r--r--common/tests/unit-test-unique.c97
-rw-r--r--configure.in489
-rw-r--r--daemon/Makefile.am49
-rw-r--r--daemon/gkr-daemon-dbus.c152
-rw-r--r--daemon/gkr-daemon-io.c462
-rw-r--r--daemon/gkr-daemon-ops.c1806
-rw-r--r--daemon/gkr-daemon.c603
-rw-r--r--daemon/gkr-daemon.h56
-rw-r--r--daemon/org.gnome.keyring.service.in3
-rw-r--r--data/Makefile.am24
-rw-r--r--data/gnome-keyring.schemas.in32
-rw-r--r--keyring-intro.txt154
-rw-r--r--keyrings/Makefile.am35
-rw-r--r--keyrings/file-format.txt69
-rw-r--r--keyrings/gkr-keyring-binary.c711
-rw-r--r--keyrings/gkr-keyring-item.c284
-rw-r--r--keyrings/gkr-keyring-item.h97
-rw-r--r--keyrings/gkr-keyring-login.c308
-rw-r--r--keyrings/gkr-keyring-login.h48
-rw-r--r--keyrings/gkr-keyring-textual.c452
-rw-r--r--keyrings/gkr-keyring.c551
-rw-r--r--keyrings/gkr-keyring.h140
-rw-r--r--keyrings/gkr-keyrings.c361
-rw-r--r--keyrings/gkr-keyrings.h51
-rw-r--r--keyrings/tests/Makefile.am17
-rw-r--r--keyrings/tests/test-data/encrypted.keyringbin733 -> 0 bytes
-rw-r--r--keyrings/tests/test-data/plain.keyring55
-rw-r--r--keyrings/tests/unit-test-keyring-file.c175
-rw-r--r--keyrings/tests/unit-test-keyring-login.c142
-rw-r--r--keyrings/tests/unit-test-login-prompt.c115
-rw-r--r--library/Makefile.am61
-rw-r--r--library/gnome-keyring-1-uninstalled.pc.in11
-rw-r--r--library/gnome-keyring-1.pc.in11
-rw-r--r--library/gnome-keyring-memory.c264
-rw-r--r--library/gnome-keyring-memory.h62
-rw-r--r--library/gnome-keyring-opcodes.h57
-rw-r--r--library/gnome-keyring-private.h65
-rw-r--r--library/gnome-keyring-proto.c1528
-rw-r--r--library/gnome-keyring-proto.h230
-rw-r--r--library/gnome-keyring-result.h43
-rw-r--r--library/gnome-keyring-utils.c489
-rw-r--r--library/gnome-keyring.c4440
-rw-r--r--library/gnome-keyring.h517
-rw-r--r--library/tests/Makefile.am19
-rw-r--r--library/tests/unit-test-daemon-setup.c94
-rw-r--r--library/tests/unit-test-keyrings-prompt.c279
-rw-r--r--library/tests/unit-test-keyrings.c524
-rw-r--r--library/tests/unit-test-login-prompt.c117
-rw-r--r--library/tests/unit-test-memory.c141
-rw-r--r--library/tests/unit-test-other.c88
-rw-r--r--pam/Makefile.am32
-rw-r--r--pam/gkr-pam-client.c416
-rw-r--r--pam/gkr-pam-module.c1003
-rw-r--r--pam/gkr-pam-stubs.c50
-rw-r--r--pam/gkr-pam.h44
-rw-r--r--pam/tests/Makefile.am13
-rw-r--r--pam/tests/unit-test-pam-setup.c128
-rw-r--r--pam/tests/unit-test-pam.c85
-rw-r--r--pk/Makefile.am40
-rw-r--r--pk/gkr-pk-cert.c799
-rw-r--r--pk/gkr-pk-cert.h73
-rw-r--r--pk/gkr-pk-index.c1216
-rw-r--r--pk/gkr-pk-index.h88
-rw-r--r--pk/gkr-pk-netscape-trust.c397
-rw-r--r--pk/gkr-pk-netscape-trust.h58
-rw-r--r--pk/gkr-pk-object-manager.c468
-rw-r--r--pk/gkr-pk-object-manager.h107
-rw-r--r--pk/gkr-pk-object-storage.c837
-rw-r--r--pk/gkr-pk-object-storage.h69
-rw-r--r--pk/gkr-pk-object.c684
-rw-r--r--pk/gkr-pk-object.h156
-rw-r--r--pk/gkr-pk-places.h58
-rw-r--r--pk/gkr-pk-privkey.c709
-rw-r--r--pk/gkr-pk-privkey.h76
-rw-r--r--pk/gkr-pk-pubkey.c597
-rw-r--r--pk/gkr-pk-pubkey.h74
-rw-r--r--pk/gkr-pk-util.c519
-rw-r--r--pk/gkr-pk-util.h110
-rw-r--r--pk/tests/Makefile.am20
-rw-r--r--pk/tests/check-attribute.c52
-rw-r--r--pk/tests/test-data/certificate-1.crtbin788 -> 0 bytes
-rw-r--r--pk/tests/test-data/certificate-2.crtbin918 -> 0 bytes
-rw-r--r--pk/tests/test-data/privkey-1.keybin1192 -> 0 bytes
-rw-r--r--pk/tests/test-data/privkey-3.keybin447 -> 0 bytes
-rw-r--r--pk/tests/unit-test-memory-stubs.c27
-rw-r--r--pk/tests/unit-test-pk-cert.c326
-rw-r--r--pk/tests/unit-test-pk-index.c181
-rw-r--r--pk/tests/unit-test-pk-key.c379
-rw-r--r--pk/tests/unit-test-pk-netscape-trust.c195
-rw-r--r--pkcs11/Makefile.am60
-rw-r--r--pkcs11/gkr-pkcs11-calls.h165
-rw-r--r--pkcs11/gkr-pkcs11-daemon-session.c1701
-rw-r--r--pkcs11/gkr-pkcs11-daemon.c220
-rw-r--r--pkcs11/gkr-pkcs11-daemon.h39
-rw-r--r--pkcs11/gkr-pkcs11-dsa.c190
-rw-r--r--pkcs11/gkr-pkcs11-dsa.h42
-rw-r--r--pkcs11/gkr-pkcs11-mechanisms.h59
-rw-r--r--pkcs11/gkr-pkcs11-message.c336
-rw-r--r--pkcs11/gkr-pkcs11-message.h94
-rw-r--r--pkcs11/gkr-pkcs11-module.c2486
-rw-r--r--pkcs11/gkr-pkcs11-rsa.c334
-rw-r--r--pkcs11/gkr-pkcs11-rsa.h48
-rw-r--r--pkcs11/pkcs11.h1357
-rw-r--r--pkcs11/pkcs11g.h91
-rw-r--r--pkcs11/pkcs11n.h221
-rw-r--r--pkix/Makefile.am53
-rw-r--r--pkix/asn1-def-pk.h67
-rw-r--r--pkix/asn1-def-pkix.h1107
-rw-r--r--pkix/gkr-pkix-asn1.c771
-rw-r--r--pkix/gkr-pkix-asn1.h81
-rw-r--r--pkix/gkr-pkix-constants.h46
-rw-r--r--pkix/gkr-pkix-der.c1383
-rw-r--r--pkix/gkr-pkix-der.h126
-rw-r--r--pkix/gkr-pkix-marshal.list3
-rw-r--r--pkix/gkr-pkix-openssl.c259
-rw-r--r--pkix/gkr-pkix-openssl.h37
-rw-r--r--pkix/gkr-pkix-parser.c1439
-rw-r--r--pkix/gkr-pkix-parser.h137
-rw-r--r--pkix/gkr-pkix-pem.c281
-rw-r--r--pkix/gkr-pkix-pem.h36
-rw-r--r--pkix/gkr-pkix-serialize.c297
-rw-r--r--pkix/gkr-pkix-serialize.h24
-rw-r--r--pkix/gkr-pkix-types.h19
-rw-r--r--pkix/pk.asn103
-rw-r--r--pkix/pkix.asn1230
-rw-r--r--pkix/tests/Makefile.am27
-rw-r--r--pkix/tests/asn1-def-test.h13
-rw-r--r--pkix/tests/test-data/RSA_Root_Certificate_1.pem19
-rw-r--r--pkix/tests/test-data/RSA_Security_1024_v3.pem16
-rw-r--r--pkix/tests/test-data/RSA_Security_2048_v3.pem22
-rw-r--r--pkix/tests/test-data/Thawte_Personal_Basic_CA.pem20
-rw-r--r--pkix/tests/test-data/Thawte_Personal_Freemail_CA.pem21
-rw-r--r--pkix/tests/test-data/Thawte_Personal_Premium_CA.pem21
-rw-r--r--pkix/tests/test-data/Thawte_Premium_Server_CA.pem21
-rw-r--r--pkix/tests/test-data/Thawte_Server_CA.pem20
-rw-r--r--pkix/tests/test-data/Thawte_Time_Stamping_CA.pem18
-rw-r--r--pkix/tests/test-data/ca-certificates.crt2560
-rw-r--r--pkix/tests/test-data/cacert.org.pem41
-rw-r--r--pkix/tests/test-data/der-certificate.crtbin747 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-dsa-1024.keybin447 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-PBE-MD5-DES.keybin677 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-PBE-SHA1-3DES.keybin678 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-PBE-SHA1-DES.keybin677 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC2-40.keybin678 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC4-128.keybin673 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-dsa.keybin335 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-encrypted-pkcs5.keybin677 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-v2-des.keybin711 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8-v2-des3.keybin714 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-pkcs8.keybin635 -> 0 bytes
-rw-r--r--pkix/tests/test-data/der-rsa-1024.keybin609 -> 0 bytes
-rw-r--r--pkix/tests/test-data/email.p12bin2488 -> 0 bytes
-rw-r--r--pkix/tests/test-data/pem-dsa-1024.key12
-rw-r--r--pkix/tests/test-data/pem-pkcs8.key17
-rw-r--r--pkix/tests/test-data/pem-rsa-enc.key18
-rwxr-xr-xpkix/tests/test-data/test-x509-swiss.p7bbin1002 -> 0 bytes
-rw-r--r--pkix/tests/test-data/unclient.p12bin1476 -> 0 bytes
-rw-r--r--pkix/tests/test.asn14
-rw-r--r--pkix/tests/unit-test-gcrypt-setup.c50
-rw-r--r--pkix/tests/unit-test-pkix-asn1.c204
-rw-r--r--pkix/tests/unit-test-pkix-der.c204
-rw-r--r--pkix/tests/unit-test-pkix-parser.c301
-rw-r--r--pkix/tests/unit-test-pkix-serialize.c131
-rw-r--r--po/.cvsignore14
-rw-r--r--po/ChangeLog1776
-rw-r--r--po/LINGUAS75
-rw-r--r--po/POTFILES.in11
-rw-r--r--po/ar.po635
-rw-r--r--po/az.po395
-rw-r--r--po/be.po296
-rw-r--r--po/be@latin.po602
-rw-r--r--po/bg.po595
-rw-r--r--po/bn.po399
-rw-r--r--po/bn_IN.po397
-rw-r--r--po/bs.po383
-rw-r--r--po/ca.po656
-rw-r--r--po/cs.po585
-rw-r--r--po/cy.po398
-rw-r--r--po/da.po651
-rw-r--r--po/de.po687
-rw-r--r--po/dz.po301
-rw-r--r--po/el.po667
-rw-r--r--po/en_CA.po401
-rw-r--r--po/en_GB.po649
-rw-r--r--po/es.po601
-rw-r--r--po/et.po597
-rw-r--r--po/eu.po593
-rw-r--r--po/fa.po402
-rw-r--r--po/fi.po615
-rw-r--r--po/fr.po630
-rw-r--r--po/gl.po599
-rw-r--r--po/gu.po390
-rw-r--r--po/he.po404
-rw-r--r--po/hi.po370
-rw-r--r--po/hr.po388
-rw-r--r--po/hu.po599
-rw-r--r--po/id.po401
-rw-r--r--po/is.po340
-rw-r--r--po/it.po632
-rw-r--r--po/ja.po619
-rw-r--r--po/ka.po363
-rw-r--r--po/ko.po585
-rw-r--r--po/lt.po607
-rw-r--r--po/lv.po405
-rw-r--r--po/mg.po410
-rw-r--r--po/mk.po589
-rw-r--r--po/ml.po389
-rw-r--r--po/mn.po391
-rw-r--r--po/mr.po559
-rw-r--r--po/ms.po391
-rw-r--r--po/nb.po594
-rw-r--r--po/ne.po395
-rw-r--r--po/nl.po616
-rw-r--r--po/nn.po623
-rw-r--r--po/oc.po534
-rw-r--r--po/or.po387
-rw-r--r--po/pa.po369
-rw-r--r--po/pl.po690
-rw-r--r--po/pt.po655
-rw-r--r--po/pt_BR.po605
-rw-r--r--po/ro.po399
-rw-r--r--po/ru.po594
-rw-r--r--po/rw.po390
-rw-r--r--po/si.po336
-rw-r--r--po/sk.po407
-rw-r--r--po/sl.po483
-rw-r--r--po/sq.po408
-rw-r--r--po/sr.po471
-rw-r--r--po/sr@Latn.po471
-rw-r--r--po/sv.po589
-rw-r--r--po/ta.po401
-rw-r--r--po/te.po348
-rw-r--r--po/th.po610
-rw-r--r--po/tr.po621
-rw-r--r--po/uk.po602
-rw-r--r--po/vi.po635
-rw-r--r--po/xh.po407
-rw-r--r--po/zh_CN.po591
-rw-r--r--po/zh_HK.po533
-rw-r--r--po/zh_TW.po547
-rw-r--r--reference/.cvsignore14
-rw-r--r--reference/Makefile.am92
-rw-r--r--reference/gnome-keyring-docs.sgml26
-rw-r--r--reference/gnome-keyring-sections.txt183
-rw-r--r--reference/tmpl/.cvsignore1
-rw-r--r--reference/tmpl/empty.sgml0
-rw-r--r--reference/tmpl/gnome-keyring-acl.sgml164
-rw-r--r--reference/tmpl/gnome-keyring-attributes.sgml96
-rw-r--r--reference/tmpl/gnome-keyring-daemon.sgml36
-rw-r--r--reference/tmpl/gnome-keyring-find.sgml95
-rw-r--r--reference/tmpl/gnome-keyring-generic-callbacks.sgml58
-rw-r--r--reference/tmpl/gnome-keyring-item-info.sgml133
-rw-r--r--reference/tmpl/gnome-keyring-items.sgml318
-rw-r--r--reference/tmpl/gnome-keyring-keyring-info.sgml104
-rw-r--r--reference/tmpl/gnome-keyring-keyrings.sgml291
-rw-r--r--reference/tmpl/gnome-keyring-memory.sgml100
-rw-r--r--reference/tmpl/gnome-keyring-misc.sgml43
-rw-r--r--reference/tmpl/gnome-keyring-network.sgml122
-rw-r--r--reference/tmpl/gnome-keyring-password.sgml173
-rw-r--r--reference/tmpl/gnome-keyring-result.sgml45
-rw-r--r--ssh/Makefile.am23
-rw-r--r--ssh/gkr-ssh-daemon-io.c329
-rw-r--r--ssh/gkr-ssh-daemon-ops.c789
-rw-r--r--ssh/gkr-ssh-daemon.h30
-rw-r--r--ssh/gkr-ssh-private.h124
-rw-r--r--ssh/gkr-ssh-proto.c588
-rw-r--r--tests/Makefile.am60
-rw-r--r--tests/ca-example/certs/ca.crt23
-rw-r--r--tests/ca-example/certs/client.crt19
-rw-r--r--tests/ca-example/certs/email.crt19
-rw-r--r--tests/ca-example/certs/generic-dsa.crt22
-rw-r--r--tests/ca-example/database.txt0
-rw-r--r--tests/ca-example/keys/ca.key15
-rw-r--r--tests/ca-example/keys/client.key27
-rw-r--r--tests/ca-example/keys/dsa.params9
-rw-r--r--tests/ca-example/keys/email.key27
-rw-r--r--tests/ca-example/keys/generic-dsa.key12
-rw-r--r--tests/ca-example/profiles/ca.conf32
-rw-r--r--tests/ca-example/profiles/extensions.conf16
-rw-r--r--tests/ca-example/profiles/request.conf18
-rw-r--r--tests/ca-example/requests/client.req17
-rw-r--r--tests/ca-example/requests/email.req17
-rw-r--r--tests/ca-example/requests/generic-dsa.req16
-rw-r--r--tests/ca-example/serial.txt1
-rw-r--r--tests/cu-test/AllTests.c25
-rw-r--r--tests/cu-test/CuTest.c309
-rw-r--r--tests/cu-test/CuTest.h111
-rw-r--r--tests/cu-test/CuTestTest.c709
-rw-r--r--tests/cu-test/README209
-rw-r--r--tests/cu-test/license.txt38
-rwxr-xr-xtests/cu-test/make-tests.sh51
-rw-r--r--tests/list-keyrings.c225
-rwxr-xr-xtests/prep-tests.sh115
-rw-r--r--tests/run-tests.sh20
-rw-r--r--tests/test-helpers.c116
-rw-r--r--tests/test-helpers.h33
-rw-r--r--tests/test-keyrings.c524
-rw-r--r--tests/test.make61
-rw-r--r--ui/Makefile.am48
-rw-r--r--ui/gkr-ask-daemon.c120
-rw-r--r--ui/gkr-ask-daemon.h37
-rw-r--r--ui/gkr-ask-entry.c2734
-rw-r--r--ui/gkr-ask-entry.h187
-rw-r--r--ui/gkr-ask-marshal.list1
-rw-r--r--ui/gkr-ask-request.c941
-rw-r--r--ui/gkr-ask-request.h133
-rw-r--r--ui/gkr-ask-tool-widgets.c201
-rw-r--r--ui/gkr-ask-tool.c753
-rw-r--r--ui/gkr-ask-tool.h33
-rw-r--r--ui/test-input.txt8
359 files changed, 0 insertions, 109953 deletions
diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 4cb01d3b..00000000
--- a/.cvsignore
+++ /dev/null
@@ -1,45 +0,0 @@
-.*
-*.prj
-*.pws
-*.anjuta
-ABOUT-NLS
-Makefile
-Makefile.in
-aclocal.m4
-autom4te.cache
-confdefs.h
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.status.lineno
-config.sub
-configure
-install-sh
-intltool-extract
-intltool-extract.in
-intltool-merge
-intltool-merge.in
-intltool-update
-intltool-update.in
-libtool
-ltconfig
-ltmain.sh
-missing
-mkinstalldirs
-obj
-stamp-h
-stamp-h1
-stamp-h.in
-gnome-keyring-ask
-gnome-keyring-daemon
-list-keyrings
-test-keyring
-test-keyring-two
-gnome-keyring-1.pc
-gnome-keyring-1-uninstalled.pc
-gtk-doc.make
-depcomp
-
diff --git a/AUTHORS b/AUTHORS
deleted file mode 100644
index 126cbebf..00000000
--- a/AUTHORS
+++ /dev/null
@@ -1,6 +0,0 @@
-Main authors:
-Alexander Larsson <alexl@redhat.com>
-Stef Walter <stef@memberwebs.com>
-
-Contributors:
-Fernando Herrera <fherrera@onirica.com>
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d60c31a9..00000000
--- a/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 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.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-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.
-
- 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 software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, 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 executable. 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 components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program 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
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-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
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program 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.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-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 program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/COPYING.LIB b/COPYING.LIB
deleted file mode 100644
index eb685a5e..00000000
--- a/COPYING.LIB
+++ /dev/null
@@ -1,481 +0,0 @@
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, 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.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-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.
-
- 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.
-
- 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
-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
-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.
-
- 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.
-
- 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.
-
- GNU LIBRARY 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".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "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.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-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
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile 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
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- 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.
-
- c) 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
- 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
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-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
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-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.
-
-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
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 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.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: 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., 675 Mass Ave, Cambridge, MA 02139, 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!
diff --git a/CVSVERSION b/CVSVERSION
deleted file mode 100644
index e69de29b..00000000
--- a/CVSVERSION
+++ /dev/null
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 960d5c89..00000000
--- a/ChangeLog
+++ /dev/null
@@ -1,3586 +0,0 @@
-2008-06-29 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-unix-credentials.c: Fix build issues.
- See bug #540397. Patch by margali
-
- * keyrings/gkr-keyrings.c:
- * pkcs11/gkr-pkcs11-module.c:
- * pkcs11/gkr-pkcs11-daemon.c:
- * pkcs11/gkr-pkcs11-calls.h:
- * daemon/gkr-daemon-ops.c: Fix build issues on Mac OS X
- See bug #535859. Patch by John Ralls
-
-2008-06-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c: Initialize random number generator
- with something a bit stronger than time().
-
-2008-05-26 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.22.2 ===
-
-2008-05-26 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release version 2.22.2
-
-2008-05-26 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Fix compiler warnings. Fixes bug #534328
-
-2008-05-26 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-unix-credentials.c: Another compiler fix.
-
-2008-05-18 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-unix-credentials.c: Fix use of undefined variable
- on certain OS's. Patch by Brian Cameron. Fixes bug #530989
-
- * common/gkr-unix-credentials.c: Add additional header for
- building on NetBSD. Patch by Matthias Drochner. Fixes bug #532014
-
- * common/gkr-unix-credentials.c: Add socket credential support
- for OpenBSD. Patch by Antoine Jacoutot. Fixes bug #532143
-
-2008-05-18 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c: Fix crash when HAL location volume
- is not registered for some reason. Fixes bug #530316
-
-2008-04-29 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object-storage.c: Return gboolean from parsed_*
- callbacks so we don't have double free scenarios.
-
- * pk/gkr-pk-cert.c: Don't use critical warnings on invalid
- certificates. Return serial number properly.
-
-2008-04-18 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-privkey.c:
- * ui/gkr-ask-request.h: Streamline the importing of keys, and make
- the proper 'import' prompt come up when importing. Don't repeatedly
- try to import a key that a user has 'denied'. Use the 'cancel'
- label instead of 'deny' for the import prompt. See bug #528122
-
-2008-04-16 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.h:
- * ui/gkr-ask-request.c: Don't show 'Location' in password prompt
- for objects in the user's home directory.
-
-2008-04-06 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.22.1 ===
-
-2008-04-06 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release version 2.22.1
-
-2008-04-05 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * pk/gkr-pk-places.h:
- * ssh/gkr-ssh-daemon-io.c:
- * configure.in:
- * Makefile.am: Add configure option to disable SSH agent.
-
-2008-04-05 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-privkey.c:
- * ssh/gkr-ssh-daemon-ops.c: Make 'ssh-add -D' and 'ssh-add -d'
- lock any SSH private keys that gnome-keyring natively handles.
- Fixes bug #524823
-
-2008-04-05 Stef Walter <stef@memberwebs.com>
-
- * pkix/gkr-pkix-openssl.c: Fix compiler warnings about
- uninitialized variables. Patch by Alex Converse. Fixes
- bug #523928
-
-2008-03-20 Sebastian Dröge <slomo@circular-chaos.org>
-
- * daemon/gkr-daemon.c: Include pkcs11 in the --help message too.
-
-2008-03-18 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c: Reconnect to system bus whenever
- the system bus restarts. Patch by Sjoerd Simons. Fixes
- bug #522410
-
-2008-03-16 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-crypto.c:
- * common/gkr-crypto.h:
- * pk/gkr-pkcs11-daemon-session.c:
- * pk/gkr-pkcs11-rsa.c:
- * pk/gkr-pkcs11-rsa.h: Move RSA padding functionality into a
- more accessible location.
-
- * common/gkr-buffer.c:
- * common/gkr-buffer.h:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-manager.h:
- * pk/gkr-pk-pubkey.c:
- * ssh/gkr-ssh-daemon-ops.c:
- * ssh/gkr-ssh-private.h:
- * ssh/gkr-ssh-proto.c: Add SSH agent protocol version 1 support.
- Cleanup how session keys are managed. Fixes bug #520860
-
-2008-03-16 Stef Walter <stef@memberwebs.com>
-
- * library/Makefile.am: Include GNOME_KEYRING_NETWORK_PASSWORD
- exported in libgnome-keyring.so. Patch by Andrea Del Signore.
- Fixes bug #522651
-
-2008-03-13 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c:
- * ui/gkr-ask-request.c: Avoid usage of the 'environ' global
- variable and use g_list_env() instead. Fixes bug #522027
-
-2008-03-13 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c: Log to syslog even when running in
- the foreground. This helps starting from DBus. Patch by
- Tony Espy. Fixes bug #522253
-
-=== gnome-keyring 2.22.0 ===
-
-2008-03-09 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release version 2.22.0
-
-2008-02-26 Stef Walter <stef@memberwebs.com>
-
- * pkcs11/gkr-pkcs11-daemon-session.c: Build fix.
- Patch by Jens Granseuer. Fixes bug #518916
-
-=== gnome-keyring 2.21.92 ===
-
-2008-02-24 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release version 2.21.92
-
-2008-02-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon-io.c:
- * library/gnome-keyring.c: Shutdown socket connections properly.
- This may fix the hang problems described in bug #503278
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-proto.c: Build fix due to glib
- g_realloc signature change.
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-crypto.c:
- * common/tests/unit-test-crypto.c:
- * pkix/gkr-pkix-der.c:
- * pkix/gkr-pkix-parser.c:
- * pkix/tests/test-data/unclient.p12: Try NULL passwords in addition to
- empty passwords when parsing encrypted files. Fixes bug #514761
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * common/tests/unit-test-unique.c:
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h:
- * pk/gkr-pk-netscape-trust.c:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-manager.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-privkey.h:
- * pk/tests/unit-test-pk-index.c: Use the word 'digest' instead of 'unique'
- to make it clearer what is going on.
-
- * pkix/gkr-pkix-parser.c:
- * pkix/gkr-pkix-parser.h:
- * pkix/tests/unit-test-pkix-parser.c: Limit the PKCS#12 parsing to only
- one element per bag, since that is all we can realistically prompt for
- passwords for.
-
-2008-02-14 Stef walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object-storage.c:
- * pkix/gkr-pkix-parser.c:
- * pkix/gkr-pkix-parser.h:
- * pkix/gkr-pkix-types.h: Make strings more easily translateble. Fixes bug #515119
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c: Fix build problem. Fixes bug #516526
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c: Fix problem setting environment variables.
-
-2008-02-14 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-buffer.c:
- * common/gkr-buffer.h:
- * common/gkr-daemon-util.c:
- * common/gkr-daemon-util.h:
- * daemon/gkr-daemon.c:
- * daemon/gkr-daemon-ops.c:
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * library/gnome-keyring-opcodes.h:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-proto.h:
- * library/tests/unit-test-other.c:
- * reference/gnome-keyring-sections.txt:
- * reference/tmpl/gnome-keyring-daemon.sgml: (added)
- * reference/tmpl/gnome-keyring-misc.sgml:
- * ui/gkr-ask-daemon.c:
- * ui/gkr-ask-daemon.h:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-tool.c: Add API to sync up environment between session manager
- and the daemon.
-
-2008-02-13 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-privkey.c: Add null pointer check when
- getting key id.
-
-2008-02-11 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number.
-
-=== gnome-keyring 2.21.91 ===
-
-2008-02-11 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release version 2.21.91
-
-2008-02-10 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object-storage.c: Fix translater comments.
- See bug #515119
-
-2008-02-10 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Don't ask PAM to prompt for password
- if no password is available. Fixes bug #514862. Patch by Ray Strode
-
-2008-02-10 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-crypto.c:
- * common/gkr-crypto.h:
- * common/gkr-unique.c: (moved to gkr-id.c)
- * common/gkr-unique.h: (moved to gkr-id.h)
- * common/Makefile.am:
- * common/tests/unit-test-crypto.c:
- * common/tests/unit-test-unique.c:
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-cert.h:
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h:
- * pk/gkr-pk-netscape-trust.c:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-privkey.h:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-pubkey.h:
- * pk/gkr-pk-util.c:
- * pk/gkr-pk-util.h:
- * pk/tests/unit-test-pk-cert.c:
- * pk/tests/unit-test-pk-index.c:
- * pk/tests/unit-test-pk-key.c:
- * pk/tests/unit-test-pk-netscape-trust.c:
- * pkix/gkr-pkix-parser.c:
- * pkix/gkr-pkix-parser.h:
- * pkix/tests/unit-test-pkix-parser.c:
- * pkix/tests/unit-test-pkix-serialize.c:
- * ssh/gkr-ssh-daemon-ops.c: Change name of gkrunique to gkrid
-
-2008-02-07 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-object-storage.c:
- * pkix/tests/unit-test-pkix-parser.c: Fix assertions for an unknown
- parsed type (ie: zero).
-
-2008-02-07 Stef Walter <stef@memberwebs.com>
-
- * common/Makefile.am:
- * common/gkr-daemon-util.h:
- * common/gkr-unix-credentials.c: (added)
- * common/gkr-unix-credentials.h: (added)
- * daemon/gkr-daemon-io.c:
- * library/gnome-keyring.c:
- * pam/gkr-pam-client.c:
- * pam/gkr-pkcs11-daemon-session.c:
- * pam/gkr-pkcs11-daemon.c:
- * pam/gkr-pkcs11-module.c: Add checking that PKCS#11 socket
- connections come from the appropriate uid.
-
-2008-02-05 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-entry.c: (added)
- * ui/gkr-ask-entry.h: (added)
- * ui/gkr-ask-tool.c:
- * ui/Makefile.am:
- * ui/test-input.txt: (added)
- * configure.in: Don't lock the entire gnome-keyring-ask process into
- memory. This allows it to work properly on systems where there is
- limited lockable memory available.
-
-2008-02-02 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-netscape-trust.c:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c:
- * pk/tests/unit-test-pk-cert.c:
- * pk/tests/unit-test-pk-key.c:
- * pk/tests/unit-test-pk-netscape-trust.c:
- * pkix/Makefile.am:
- * pkix/gkr-pkix-asn1.c:
- * pkix/gkr-pkix-asn1.h:
- * pkix/gkr-pkix-der.c:
- * pkix/gkr-pkix-der.h:
- * pkix/gkr-pkix-openssl.c:
- * pkix/gkr-pkix-openssl.h:
- * pkix/gkr-pkix-parser.c:
- * pkix/gkr-pkix-parser.h:
- * pkix/gkr-pkix-serialize.c: (added)
- * pkix/gkr-pkix-serialize.h: (added)
- * pkix/gkr-pkix-types.h: (added)
- * pkix/tests/Makefile.am:
- * pkix/tests/unit-test-pkix-der.c:
- * pkix/tests/unit-test-pkix-parser.c:
- * pkix/tests/unit-test-pkix-serialize.c: (added)
- * pkix/tests/test-data/der-certificate.crt: (added) Reworked pkix parsing
- and added some serializing capabilities. Add basic infrastructure for
- serializing of objects like certificates and keys.
-
-2008-01-31 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring.c:
- * ssh/gkr-ssh-daemon-ops.c:
- * ssh/gkr-ssh-proto.c:
- * ssh/gkr-ssh-daemon-io.c:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * daemon/gkr-daemon-io.c:
- * library/gnome-keyring-proto.c:
- * pkix/gkr-pkix-asn1.c: Fix more compile problems due to
- glib changing signature of g_realloc.
-
-2008-01-30 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c: Fix compile problem on
- with certain combinations of libraries.
-
-2008-01-29 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-tool.c: Fix message. Add missing word.
-
-2008-01-28 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number.
-
-=== gnome-keyring 2.21.90 ===
-
-2008-01-28 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release version 2.21.90
-
-2008-01-22 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Remove 'startup components' message.
-
-2008-01-22 Stef Walter <stef@memberwebs.com>
-
- * keyring/gkr-keyring-login.c: Fix problem where most keyrings
- were being treated as insecure from the point of view of
- storing passwords for keys or certificates.
-
-2008-01-14 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Fix race condition that is causing
- a deadlock in bug #502603.
-
-2008-01-14 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number.
-
-=== gnome-keyring 2.21.5 ===
-
-2008-01-14 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release version 2.21.5
-
-2008-01-14 Stef Walter <stef@memberwebs.com>
-
- * Merged revisions 924 - 1006 from gnome-2-20 branch
-
-2008-01-13 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-cert.h:
- * pk/gkr-pk-netscape-trust.c:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-object-storage.h:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-privkey.h:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-pubkey.h:
- * pk/gkr-pk-util.c:
- * pk/gkr-pk-util.h:
- * pk/tests/Makefile.am:
- * pk/tests/check-attribute.c:
- * pk/tests/unit-test-pk-cert.c:
- * pk/tests/unit-test-pk-key.c: (added)
- * pk/tests/unit-test-pk-netscape-trust.c:
- * pk/tests/test-data/privkey-1.key: (renamed from .crt)
- * pk/tests/test-data/privkey-3.key: (added)
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-dsa.c: Proper support for creating and destroying
- objects through PKCS#11 (no token save functionality yet). Also proper
- infrastructure for setting of attributes.
-
-2008-01-11 Stef Walter <stef@memberwebs.com>
-
- * common/tests/unit-test-secmem.c:
- * library/tests/unit-test-memory.c: Fix memory tests so they can
- operate in 32K of lockable memory.
-
-2008-01-11 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Drain the wakeup FD properly, so that we
- don't hang in strange ways. Fixes part of bug #502603, see
- backtrace in comment #21
-
-2008-01-05 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * data/gnome-keyring.schemas.in: (added)
- * data/Makefile.am: (added)
- * configure.in:
- * Makefile.am: Added gconf configuration of which components
- are run at startup. Fixes bug #502437
-
-2008-01-04 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring-textual.c: Fix compiler warning.
- Fixes bug #506128
-
-2007-12-21 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h: Refactor index value writing and reading code.
-
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-object-storage.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c:
- * pk/tests/unit-test-pk-index.c:
- * pkix/gkr-pkix-parser.c:
- * pkix/gkr-pkix-parser.h:
- * pkix/tests/test-data/email.p12: Fix up object parsing so that we
- track the type of object in the index. This helps with partial parses
- of things like certificates from PKCS#12 files. Also fix certificate
- object so it can handle delayed loaded certificates.
-
-2007-12-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * pk/gkr-pk-places.h:
- * configure.in: Add configure options for startup components
- and root certificate directory.
-
- * pk/gkr-pk-netscape-trust.c: Fix uninitialized variable.
-
- * pk/gkr-pk-cert.c:
- * pkix/gkr-pkix-asn1.c:
- * pkix/gkr-pkix-der.c: Calculate the CA certificate category properly.
-
- * pk/gkr-pk-netscape-trust.c:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/tests/unit-test-pk-netscape-trust.c: Calculate the trust/purpose properly.
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-places.h: Load values properly from defaults even when
- when no index file exists for the object.
-
- * pk/Makefile.am:
- * pk/tests/Makefile.am:
- * pkcs11/Makefile.am:
- * pkix/Makefile.am: Build and install fixes
-
- * common/gkr-location.c: Use preconditions instead of asserts for
- validating arguments.
-
- * common/gkr-location-watch.c: Don't list directories from the watch.
-
-2007-12-20 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h: Access indexes on an object basis and flush
- the object caches when something in the index changes.
-
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-privkey.h:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-pubkey.h:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-dsa.c:
- * pkcs11/gkr-pkcs11-dsa.h:
- * ssh/gkr-ssh-daemon-ops.c: Change how objects are added into a manager.
-
- * pk/gkr-pk-cert.c:
- * pk/gkr-pk-cert.h:
- * pk/gkr-pk-netscape-trust.c: (added)
- * pk/gkr-pk-netscape-trust.h: (added)
- * pk/gkr-pk-places.h:
- * pk/gkr-pk-purpose.c: (removed)
- * pk/gkr-pk-purpose.h: (removed)
- * pk/gkr-pk-util.c:
- * pk/Makefile.am:
- * pk/tests/check-attribute.c: (added)
- * pk/tests/Makefile.am:
- * pk/tests/unit-test-pk-cert.c: (added)
- * pk/tests/unit-test-pk-index.c:
- * pk/tests/unit-test-pk-netscape-trust.c: (added)
- * pk/tests/test-data/*: (added)
- * pkcs11/pkcs11g.h: Add purpose and trust to certificates and fix a
- number of certificate attribute bugs. Add Netscape trust object.
- Add unit tests for certificates and trust objects.
-
- * pkix/gkr-pkix-asn1.c: ASN.1 boolean can be missing and be false
-
- * pkix/gkr-pkix-der.c:
- * pkix/gkr-pkix-der.h: Fix parsing bugs in basic constraints, key usage
- and enhanced key usage.
-
- * tests/ca-example/*: Add test CA and test certificates.
-
-2007-12-19 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * common/gkr-location.h:
- * common/tests/unit-test-location.c:
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-index.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-places.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-util.c:
- * pk/tests/unit-test-pk-index.c:
- * pkcs11/Makefile.am
- * pkcs11/pkcs11g.h: (added)
- * ssh/gkr-ssh-daemon-ops.c: Added concept of 'places' directories which
- are searched for keys or certificates. Added ability to attach default
- index attributes for places. SSH only uses keys marked as 'ssh-authentication'
-
-2007-12-18 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-buffer.c:
- * common/gkr-buffer.h:
- * daemon/gkr-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyring-binary.c:
- * keyrings/gkr-keyring-login.c:
- * keyrings/gkr-keyring-login.h:
- * keyrings/gkr-keyring-textual.c:
- * keyrings/Makefile.am:
- * keyrings/tests/Makefile.am:
- * keyrings/unit-test-keyring-file.c: (added)
- * keyrings/unit-test-keyring-login.c:
- * keyrings/unit-test-login-prompt.c:
- * keyrings/tests/test-data/*.keyring: (added)
- * pk/gkr-pk-object-storage.c:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * ui/gkr-ask-tool.c: Add support for unencrypted keyrings when
- the user specifies a blank password. Fixes bug #386866
-
-2007-12-18 Stef Walter <stef@memberwebs.com>
-
- * gkr-location.c: Initialize Dbus error structure properly.
- Fixes crash on shutdown. Patch by Jeff Cai. Fixes bug #504239
-
-2007-12-17 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.21.4 ===
-
-2007-12-17 Stef Walter <stef@memberwebs.com>
-
- * daemon/Makefile.am:
- * NEWS:
- * configure.in: Release version 2.21.4
-
-2007-12-15 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-cert.h:
- * pk/gkr-pk-purpose.c:
- * pk/gkr-pk-purpose.h:
- * pkix/gkr-pkix-constants.h:
- * pkix/gkr-pkix-der.c:
- * pkix/gkr-pkix-der.h: Add the PKCS#11 'purpose' object which exposes
- trust and usage.
-
-2007-12-15 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object.c: Fix uninitialized variable. Patch by Cosimo Cecchi.
- Fixes bug # 503737
-
-2007-12-15 Stef Walter <stef@memberwebs.com>
-
- * common/tests/unit-test-crypto.c: Don't generate key and empty
- entropy pool just for tests.
-
- * common/gkr-secure-memory.c: x64 fixes to the secure memory allocator.
-
-2007-12-07 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-cert.[ch]: (moved from pkix/)
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c:
- * pk/Makefile.am:
- * pkix/gkr-pkix-cert.[ch]: (moved to pk/)
- * pkix/Makefile.am: Move the GkrPkixCert class from pkix to pk
-
-2007-12-07 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * daemon/Makefile.am: Only install system DBus service file if
- DBus is in use. Patch from Tom Parker. See bug #421554
-
-2007-12-06 Halton Huo <halton.huo@sun.com>
-
- Fix bug #501996
- * configure.in: check flock and timegm existence.
- * pk/gkr-pk-index.c: (flock): Implement flock if flock not found.
- * pkix/gkr-pkix-asn1.c: (timegm): Implement timegm if timegm not found.
-
-2007-12-06 Stef Walter <stef@memberwebs.com>
-
- * daemon/Makefile.am:
- * org.gnome.keyring.service.in:
- * configure.in: Automatically activate keyring daemon via DBus
- if it is not already running. Patch from Tom Parker. Fixes bug #421554
-
-2007-12-06 Stef Walter <stef@memberwebs.com>
-
- * pkcs11/gkr-pkcs11-module.c: Fix compiler warning.
- See bug #500588
-
-=== gnome-keyring 2.21.3.2 ===
-
-2007-12-05 Stef Walter <stef@memberwebs.com>
-
- * keyrings/Makefile.am:
- * pk/Makefile.am:
- * pkcs11/Makefile.am:
- * pkcs11/gkr-pkcs11-module-export.map: (removed)
- * ssh/Makefile.am:
- * ui/Makefile.am:
- * NEWS:
- * configure.in: Release gnome-keyring 2.21.3.2 with more build
- fixes so it builds in jhbuild
-
-
-2007-12-04 Stef Walter <stef@memberwebs.com>
-
- * pkcs11/Makefile.am: Don't append version numbers to
- the PKCS #11 module, and use simpler linking options.
-
- * pk/gkr-pk-object-manager.c: Fix dangling pointer.
-
- * pkcs11/gkr-pkcs11-message.c:
- * pkcs11/gkr-pkcs11-module.c: Use G_DISABLE_ASSERT to control whether
- assertions are in place. Prevents confusion with half the assertions
- disabled.
-
- * pkix/gkr-pkix-asn1.c:
- * pkix/tests/unit-tests-pkix-asn1.c: Proper parsing of two digit
- dates in the UTCTime type. 40 years into the past, 60 into the future.
-
- * pkcs11/gkr-pkcs11-module.c: Return soft failures from
- C_GetAttributeValue properly.
-
- * pkcs11/gkr-pkcs11-message.c: Fix some erroneous assertions.
-
- * pk/gkr-pk-util.c: Proper formating of a date into a PKCS#11 CK_DATE
-
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c: Lookup related certificates properly using GType
-
-2007-12-04 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-crypto.c:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-util.c:
- * pk/gkr-pk-util.h:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkix/gkr-pkix-cert.c:
- * pkix/gkr-pkix-der.c: x86_64 build fixes. Patch by Dan Winship
-
-2007-12-04 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.21.3.1 ===
-
-2007-12-04 Stef Walter <stef@memberwebs.com>
-
- * NEWS:
- * configure.in: Release gnome-keyring 2.21.3.1
-
-2007-12-04 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-unique.c: Fix buffer sizes when using SHA1, and
- close hashing context.
-
- * pkcs11/Makefile.am: Remove -version-info for PKCS#11 module
-
- * pkix/Makefile.am: Make sure we add the appropriate
- include directories when compiling.
-
-2007-12-03 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-unique.c: Use SHA1 for unique hashes instead of MD5.
-
-2007-12-03 Stef Walter <stef@memberwebs.com>
-
- * pkcs11/Makefile.am: Install PKCS#11 module into
- $(prefix)lib/gnome-keyring.
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.21.3 ===
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * NEWS:
- * pkcs11/Makefile.am:
- * pkix/Makefile.am:
- * pkix/tests/Makefile.am:
- * ssh/Makefile.am:
- * tests/Makefile.am: Release gnome-keyring 2.21.3
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * common/tests/unit-test-async.c:
- * keyrings/tests/unit-test-keyring-login.c:
- * library/tests/unit-test-daemon-setup.c:
- * tests/test-helpers.c: Fix tests so they run properly when
- automatically run.
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * Merge revisions from gnome-2-20 branch. 878 - 924
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-pubkey.c: Fix object finalizing bugs.
-
- * pk/gkr-pk-index.c:
- * pk/gkr-pk-object-storage.c: Store index files in *.keystore, and
- look for keys/certificates in ~/.gnome2/keystore
-
- * pkcs11/gkr-pkcs11-module.c: A simpler name for the PKCS#11 token
- since it gets displayed all over the place.
-
- * common/gkr-unique.c: Fix passing of heap memory to g_slice
-
- * pkcs11/gkr-pkcs11-dsa.c:
- * pkix/gkr-pkix-der.c: Fix some DSA bugs.
-
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-manager.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-pubkey.h:
- * pkcs11/gkr-pkcs11-calls.h:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-module.c:
- * pkcs11/gkr-pkix-cert.c:
- * ssh/gkr-ssh-daemon-ops.c: Fix session objects so they are visible
- for all sessions in a client application, but are still scoped to
- the session they were created on.
-
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-util.c:
- * pk/gkr-pk-util.h:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-dsa.c:
- * pkcs11/gkr-pkcs11-dsa.h: Implement creation of DSA key objects.
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring-login.c: Refresh keyrings before trying
- to create a login keyring, so we don't create it over and over.
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-crypto.c:
- * common/gkr-crypto.h:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-dsa.c: (added)
- * pkcs11/gkr-pkcs11-dsa.h: (added)
- * pkcs11/gkr-pkcs11-mechanisms.h:
- * pkcs11/gkr-pkcs11-rsa.c:
- * pkcs11/gkr-pkcs11-rsa.h:
- * pkcs11/Makefile.am:
- * ssh/gkr-ssh-proto.c: Add RSA encrypt, and DSA operations.
-
-2007-11-30 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-pubkey.c: Implement RSA public key CK_VALUE
-
- * pkcs11/gkr-pkcs11-daemon-module.c: Don't access mechanism
- parameters unless the mechanism is definied to have a parameter.
-
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-gkr-pkcs11-rsa.c:
- * pkcs11/gkr-pkcs11-gkr-pkcs11-rsa.h: Implement decrypt operation
- for CKM_RSA_X_509.
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * common/gkr-location.h:
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-object.h:
- * pk/gkr-pk-object-manager.c:
- * pk/gkr-pk-object-manager.h:
- * pk/gkr-pk-object-storage.c:
- * pk/gkr-pk-object-storage.h:
- * pk/gkr-pk-privkey.c:
- * pk/gkr-pk-privkey.h:
- * pk/gkr-pk-pubkey.c:
- * pk/gkr-pk-pubkey.h:
- * pk/Makefile.am:
- * pkix/gkr-pkix-cert.c:
- * pkix/gkr-pkix-cert.h:
- * pkix/gkr-pkix-parser.c:
- * ssh/gkr-ssh-daemon.c: Rework how objects are loaded and keep
- them in the object manager as long as they are referenced.
-
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-mechanisms.h:
- * pkcs11/gkr-pkcs11-rsa.c:
- * pkcs11/gkr-pkcs11-rsa.h: Implement CKM_RSA_X_509 Sign and Verify
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location-watch.c:
- * common/tests/unit-test-crypto.c:
- * common/tests/unit-test-location-watch.c:
- * library/tests/unit-test-daemon-setup.c:
- * pam/tests/Makefile.am:
- * pam/tests/unit-test-pam.c:
- * pam/tests/unit-test-pam-setup.c:
- * tests/run-tests.sh: Fix bugs in tests and regression bugs exposed
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * common/Makefile.am:
- * common/tests/*:
- * keyrings/tests/*:
- * library/Makefile.am:
- * library/tests/*:
- * pam/Makefile.am:
- * pam/tests/*:
- * pkix/tests/*:
- * tests/*:
- * ui/gkr-ask-daemon.c:
- * ui/gkr-ask-daemon.h:
- * configure.in: Cleanup and organize tests to be with the components
- that they test.
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * daemon/gkr-daemon-ops.c:
- * keyrings/gkr-keyring-login.c: (added)
- * keyrings/gkr-keyring-login.h: (added)
- * keyrings/gkr-keyrings-auto-unlock.c: (removed)
- * keyrings/gkr-keyrings-auto-unlock.h: (removed)
- * keyrings/Makefile.am:
- * pk/gkr-pk-object-manager.c:
- * pkcs11/gkr-pkcs11-daemon-session.c: Prompt for main login when a PKCS#11
- client tries to log in.
-
- * pkcs11/gkr-pkcs11-message.c: Allow sending of null byte arrays
-
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-mechanisms.h:
- * pkcs11/gkr-pkcs11-rsa.c:
- * pkcs11/gkr-pkcs11-rsa.h: A first whack at implementing the PKCS#11
- sign operation.
-
- * pkcs11/gkr-pkcs11-module.c: Properly reuse previous message when
- its output buffers were too short.
-
- * pkcs11/gkr-pkcs11-daemon-session.c: Don't block other tasks during
- reads and writes.
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-stubs.c: Fix missing symbol in PAM module.
-
- * library/gkr-keyring.c: Fix dumb errors loading keyrings.
-
- * ssh/gkr-ssh-daemon-io.c: Cleaner shutdown for SSH agent
- connections.
-
- * common/gkr-async.c: A better async worker task switching location
- is from a GSource rather than from the poll function.
-
- * common/gkr-buffer.c: Fix crasher when serializing null strings.
-
- * tests/unit-test-daemon-setup.c: Use correct path for connection to
- daemon in tests when the daemon is already running.
-
- * pk/gkr-pk-util.c: Don't use g_slice for random sizes of data found
- in attributes.
-
-2007-11-29 Stef Walter <stef@memberwebs.com>
-
- * pk/gkr-pk-privkey.c:
- * pkix/gkr-pkix-asn1.c: Fix uninitialized variable usage.
- Fixes bug #500380
-
-2007-11-28 Stef Walter <stef@memberwebs.com>
-
- * pkix/gkr-pkix-cert.c:
- * pkix/gkr-pkix-der.c:
- * pkix/gkr-pkix-der.h: Parse the certificate public key properly and
- use the correct ID for the public key.
-
- * common/gkr-location-watch.c:
- * common/gkr-location-watch.h:
- * keyrings/gkr-keyrings.c:
- * pk/gkr-pk-object-manager.c:
- * tests/unit-test-location-watch.c: Allow excluding files from location watch
-
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkix/gkr-pkix-asn1.c:
- * pkix/gkr-pkix-cert.c: Fix problems listing certificates
-
- * pk/gkr-pk-object.c:
- * pk/gkr-pk-util.c:
- * pkcs11/gkr-pkcs11-daemon.c:
- * pkcs11/gkr-pkcs11-daemon-session.c:
- * pkcs11/gkr-pkcs11-module.c: Fix problems that prevent listing of
- objects via PKCS#11.
-
-2007-11-28 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * daemon/Makefile.am:
- * pkcs11/gkr-pkcs11-daemon.c:
- * pkcs11/gkr-pkcs11-daemon.h:
- * pkcs11/gkr-pkcs11-daemon-test.c: (removed)
- * Makefile.am: Integrate PKCS#11 daemon code into the main daemon.
-
-2007-11-28 Stef Walter <stef@memberwebs.com>
-
- * cryptoki/*: (moved to pkcs11/, renamed to *pkcs11*)
- * doc/file-format.txt: (moved to keyrings/)
- * doc/keyring-intro.txt: (moved to /)
- * HACKING:
- * Makefile.am: Move cryptoki stuff into pkcs11/ directory and rename
- the namespace prefixes. Move the doc/ files into other locations.
-
-2007-11-28 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-daemon-util.[ch]:
- * common/gkr-dbus.[ch]:
- * common/gkr-location.h:
- * common/gkr-location.[ch]:
- * keyrings/gkr-keyring-auto-unlock.[ch]:
- * pk/gkr-pk-index.[ch]:
- * pk/gkr-pk-util.[ch]:
- * pkix/gkr-pkix-der.[ch]:
- * ui/gkr-ask-tool.[ch]:
- * ui/gkr-ask-tool-widgets.c: Add and update license stubs in
- headers properly.
-
-2007-11-28 Stef Walter <stef@memberwebs.com>
-
- * Massive merge from cryptoki branch: 570 - 887
-
-2007-11-25 Stef Walter <stef@memberwebs.com>
-
- * Merge revisions from gnome-2-20 branch. 860 - 878
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c: Make library more thread friendly
- by not scheduling IO callbacks until after our internal state
- is all in order. See bug #474695
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-utils.c: Add better result messages.
- See bug #476682
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c:
- * pam/gkr-pam-module.c: Make PAM module work withe SELinux
- by passing the login password to the daemon over stdin.
- Patch by Alexander Larrson. Fixes bug #484612
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * reference/gnome-keyring-sections.txt:
- * reference/tmpl/gnome-keyring-password.sgml:
- * tests/unit-test-keyrings.c: Change password API to use schemas,
- which both define reduce typing and encourage developers to use
- the same set of attribute names for similar purposes.
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Define GNU_SOURCE for systems that require
- it. Patch by christopher taylor. Fixes bug #491021
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * reference/tmpl/gnome-keyring-result.sgml: Note about
- additional error codes that might be added from time to time.
- See bug #488851
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-dbus.c:
- * configure.in: Fix building with the latest DBUS.
- Patch by Owen Taylor. Fixes bug #487590
-
-2007-11-24 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-secure-memory.c:
- * daemon/gkr-daemon.c:
- * library/gnome-keyring-memory.c:
- * library/gnome-keyring-private.h: When running an application
- that uses libgnome-keyring don't warn about not being able to
- use secure memory. Only print that warning for the daemon.
- Fixes bug #484976.
-
-2007-11-22 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * reference/gnome-keyring-sections.txt:
- * reference/tmpl/gnome-keyring-item-info.sgml:
- * reference/tmpl/gnome-keyring-memory.sgml:
- * reference/tmpl/gnome-keyring-password.sgml:
- * reference/tmpl/gnome-keyring-unused.sgml:
- * tests/unit-test-keyrings.c: Add new simpler password storage APIs.
-
-2007-10-15 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-secure-memory.c: Include header necessary
- for building on OpenBSD. Patch by Jasper Lievisse Adriaanse
-
-2007-10-15 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.20.1 ===
-
-2007-10-15 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release gnome-keyring 2.20.1
-
-2007-10-09 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * pam/Makefile.am: Link pam module with libpam.
- Patch by Sebastian Dröge. Fixes bug #484629
-
-2007-10-04 Stef Walter <stef@memberwebs.com>
-
- * pam/Makefile.am:
- * configure.in:
- * Makefile.am: Remove 'install-pam' make target and just use
- --with-pam-dir Patch by Rémi Cardona. Fixes bug #474219.
-
-2007-10-04 Stef Walter <stef@memberwebs.com>
-
- * tests/unit-test-cleanup.c: Appease dumb GCC error.
-
-2007-10-03 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon-ops.c:
- * library/gnome-keyring-result.h:
- * library/gnome-keyring-utils.c:
- * tests/unit-test-keyrings.c: Add a NO_MATCH result code and
- return it when 'find' has zero results. We do this because
- it seems that several poorly coded applications don't know how
- to handle empty lists. gnome-keyring-daemon used to return
- 'access denied' in this case, which is clearly bogus. So since
- we don't want to break ABI, we need to return another failure
- result code. Fixes bug #476682
-
-2007-10-03 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyrings.c: Don't remove keyrings on exit which
- clears the 'default' file. Just free them.
-
-2007-09-23 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon-ops.c: Add newly created keyrings to our
- list of loaded keyrings. Patch by Darren Kenny. Fixes bug #476644
-
-2007-09-18 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Release with proper version number 2.20.0
-
-=== gnome-keyring 2.20 ===
-
-2007-09-17 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release gnome-keyring 2.20
-
-2007-09-06 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-1-uninstalled.pc.in: Don't include
- libgnome-keyring-common internal library in stuff we
- advertize. Patch by Halton Huo. Fixes bug #473796
-
-2007-09-01 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon-ops.c: Put in comments for translators,
- suggested by Claude Paroz
-
-2007-08-26 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.19.91 ===
-
-2007-08-26 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release gnome-keyring 2.19.91
-
-2007-08-20 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Fix use of uninitialized return value.
- Fixes bug #468393
-
-2007-08-19 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-dbus.c: Fix building with newer versions of DBus.
- Fixes bug #465936. Patch by Theppitak Karoonboonyanan
-
-2007-08-19 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Correctly start the daemon from PAM's
- pam_sm_open_session callback rather than the pam_sm_authenticate,
- when the 'auto_start' flag is set on the 'session' line.
- This makes us more solid and sane with GDM and well behaved PAM
- using applications. Fixes bug #467852. Patch from Chris Rivera
-
-2007-08-19 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-client.c: stat the socket and check for correct
- user before connecting to it from the PAM module, and sending
- password there.
-
-2007-08-19 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring.c: Don't read from /dev/random when not
- needed. This makes startup faster in many cases, as it won't
- block for entropy.
-
-2007-08-18 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c:
- * library/gnome-keyring-utils.c: Get around more optimizations that
- cancel out wiping of strings before freeing.
-
-2007-08-18 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-client.c: Reorder the inclusion of headers
- necessary for compiling on FreeBSD. See bug #466060
-
-2007-08-15 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-secure-memory.c:
- * pam/gkr-pam-client.c:
- * pam/gkr-pam-module.c: Build fixes for FreeBSD. Patch by
- Joe Marcus Clarke. Fixes bug #466060
-
-2007-08-12 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.19.90 ===
-
-2007-08-12 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS:
- * MAINTAINERS: Release gnome-keyring 2.19.90
-
-2007-08-12 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c: Create keyrings in the right directory.
- Patch from Nathaniel McCallum. Fixes bug #465157
-
-2007-08-10 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyrings.c:
- * ui/gkr-ask-daemon.c: Fix memory leaks
-
-2007-08-10 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Put an upper limit on the amount of data
- the daemon can send to us.
-
-2007-08-10 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-client.c: Make sure the daemon is running as the
- same user as us before passing passwords to it.
-
-2007-08-07 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring.c: Always default to a proper volume
- when none is selected or returned by ask request.
-
-2007-08-06 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-tool.c: Fix possible crash in ask tool from
- dereferencing a NULL error. Fixes bug #464051
- * ui/gkr-ask-request.c: Fix crash when gnome-keyring-ask
- gives an invalid response back to the daemon. Fixes bug #464055
-
-2007-08-01 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Use strtok_r instead of strsep so that
- we can build on Solaris. Fixes bug #462122
-
-2007-08-01 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-export.map: (removed)
- * library/Makefile.am:
- * pam/gkr-pam-export.map: (removed)
- * pam/Makefile.am: Use -export-symbols-regex to mark with symbols
- to export instead of a GNU LD --version-script. This allows us to
- build on Solaris' linker. Fixes bug #462349
-
-2007-07-31 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-client.c:
- * pam/gkr-pam-module.c:
- * pam/gkr-pam.h: Include headers and defines necessary for
- building on Solaris. Patch by Damien Carbery. Fixes bug #462118
-
-2007-07-31 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-tool.c: Don't use err () because of Solaris.
- Fixes bug #462114
-
-2007-07-31 Stef Walter <stef@memberwebs.com>
-
- * pam/Makefile.am:
- * configure.in: Configurable option for PAM library directory.
- Patch from Matthias Clasen. Fixes bug #461045
-
-2007-07-31 Stef Walter <stef@memberwebs.com>
-
- * daemon/gkr-daemon.c: (moved from gnome-keyring-daemon.c)
- * daemon/gkr-daemon.h: (moved from gnome-keyring-daemon.h)
- * daemon/gkr-daemon-io.c: (moved from gnome-keyring-daemon-io.c)
- * daemon/gkr-daemon-ops.c: (moved from gnome-keyring-daemon-ops.c)
- * daemon/Makefile.am:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring-item.h:
- * library/gnome-keyring.c:
- * library/gnome-keyring-export.map: (added)
- * library/gnome-keyring-private.h:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-proto.h:
- * pam/gkr-pam-export.map
- * pam/Makefile.am: Only export the functions from shared libraries
- that we want to export. Prefix all exportable functions with
- gnome_keyring_ and vice versa.
-
-2007-07-31 Stef Walter <stef@memberwebs.com>
-
- * tests/unit-test-location.c: Fix wrong test with regards to
- location children.
-
-=== gnome-keyring 2.19.6.1 ===
-
-2007-07-30 Stef Walter <stef@memberwebs.com>
-
- * NEWS:
- * configure.in: Released version 2.19.6.1
-
-2007-07-30 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * ui/Makefile.am:
- * configure.in: Build fixes when building with/without HAL/PAM
-
-2007-07-30 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c: Fix uninitialized variable
- in op_get_item_info(). Fixes bug #461342
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * pam/Makefile.am:
- * configure.in: Better installing of PAM module.
- Patch from Matthias Clasen. See bug #461045
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * library/gnome-keyring-memory.c: Build fixes from Jens
- Granseuer. Fixes bug #461025
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c: Fix warning when building with
- WITH_TESTS not enabled. Patch from Claudio Saavedra
- Fixes bug #461011
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version
-
-=== gnome-keyring 2.19.6 ===
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * NEWS:
- * configure.in: Released version 2.19.6
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * tests/unit-test-location.c: Choose dummy mount names less likely
- to interfere with real mounts.
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * ui/gkr-ask-tool-widgets.c: Fix compiler warnings
-
-2007-07-27 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-tool.c: Grab the keyboard properly when prompting
- for a password. Fixes bug #349729
-
-2007-07-26 Stef Walter <stef@memberwebs.com>
-
- * doc/keyring-intro.txt: Updated docs to match wiki
-
-2007-07-26 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-location.c:
- * common/gkr-location.h:
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyrings.c:
- * tests/unit-test-location.c:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-request.h:
- * ui/gkr-ask-tool.c:
- * ui/gkr-ask-tool.h: (added)
- * ui/gkr-ask-tool-widgets.c: (added)
- * ui/Makefile.am: Add indications in the UI when a keyring is on
- a removable drive. Add option to create keyrings on a non-local drive.
-
-2007-07-26 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-dbus.c: (split from daemon/gnome-keyring-daemon-dbus.c)
- * common/gkr-dbus.h: (added)
- * common/gkr-location.c: (added)
- * common/gkr-location.h: (added)
- * common/Makefile.am:
- * daemon/gnome-keyring-daemon-dbus.c:
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyrings.c:
- * keyrings/gkr-keyrings.h:
- * library/gnome-keyring.h:
- * tests/Makefile.am:
- * tests/unit-test-async.c:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-location.c: (added)
- * configure.in:
- * HACKING: Added support for using keyrings on removable drives
- Fixes bug #454390
-
-2007-07-26 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- * pam/gkr-pam-module.c: (parse_args): Initialise args
- variable to 0 to silence the compiler with -Werror.
-
-2007-07-25 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c: Close standard file descriptors
- properly when not running in the foreground. Fixes bug #460313
-
-2007-07-24 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam.h:
- * pam/gkr-pam-module.c: Don't try to launch daemon if not requested
- in pam configuration arguments for the module (ie: 'auto_start')
-
-2007-07-24 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c: Don't try to launch DBus if the
- environment variable doesn't exist.
-
-2007-07-23 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam.h:
- * pam/gkr-pam-client.c:
- * pam/gkr-pam-module.c: Fix bugs with changing passwords via
- /usr/bin/passwd
-
-2007-07-23 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring-item.h:
- * keyrings/gkr-keyrings.c:
- * keyrings/gkr-keyrings.h:
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * library/gnome-keyring-utils.c:
- * tests/Makefile.am:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-login-prompt.c:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-requset.h:
- * ui/gkr-ask-tool.c: Add support for automatically unlocking other
- keyrings when their password is entered into the 'login' keyring.
- Fixes bug #459069
-
-2007-07-22 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyrings.c: The first keyring automatically becomes
- the default. This helps the 'login' keyring become default.
-
-2007-07-22 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c:
- * library/gnome-keyring.h:
- * library/gnome-kerying-opcodes.h: (added)
- * library/gnome-keyring-proto.h:
- * library/gnome-keyring-result.h: (added)
- * pam/gkr-pam.h: (added)
- * pam/gkr-pam-client.c: (added)
- * pam/gkr-pam-module.c:
- * pam/gkr-pam-stubs.c: (added)
- * pam/Makefile.am: Now uses the 'login' keyring instead of the
- default. Added support for unlocking an already running keyring.
- Fixes bug #459071. Added initial support for changing passwords on the
- 'login' keyring. See bug #459069
-
-2007-07-22 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Fix race condition.
-
-2007-07-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c:
- * pam/gkr-pam-module.c: Make the 'input password' argument even
- more scary. It's an interim implementation for 2.19 and 2.20
- releases only.
-
-2007-07-21 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Don't use pid file to mark running
- gnome-keyring-daemon process. This causes problems with
- multiple logins.
-
-2007-07-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c: Don't call glib functions in forked
- processes. Wait on child properly.
-
-2007-07-21 Stef Walter <stef@memberwebs.com>
-
- * pam/gkr-pam-module.c: Wait on child process properly, even when
- SIGCHLD is being ignored.
-
-2007-07-21 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-proto.h: Remove identical functions in
- gkr-buffer.c and gnome-keyring-proto.c
-
-2007-07-20 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon-ops.c:
- * daemon/Makefile.am:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * library/Makefile.am:
- * pam/gkr-pam-module.c: (added)
- * pam/Makefile.am: (added)
- * tests/Makefile.am:
- * tests/unit-test-pam.c: (added)
- * tests/unit-test-pam-setup.c: (added)
- * configure.in
- * Makefile.am: Added basic PAM support. Unlock default keyring
- on login if the password matches.
-
-2007-07-16 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- reviewed by: Olav Vitters <ovitters@gnome.org>
-
- * daemon/gnome-keyring-daemon-ops.c: (op_create_item):
- Initialize item to NULL to fix -Werror crap.
-
-2007-07-14 Stef Walter <stef@memberwebs.com>
-
- * tests/Makefile.am:
- * tests/test-helpers.c: (added)
- * tests/unit-test-async.c:
- * tests/unit-test-daemon-setup.c:
- * tests/unit-test-mainloop-setup.c:
- * tests/unit-test-memory.c:
- * tests/unit-test-secmem.c:
- * tests/unit-tests-prep.sh: Fix up unit tests
-
-2007-07-14 Stef Walter <stef@memberwebs.com>
-
- * tests/test-keyrings.c:
- * tests/unit-test-keyrings-prompt.c:
- * ui/gkr-ask-daemon.c:
- * ui/gkr-ask-daemon.h:
- * ui/gkr-ask-daemon.h: Added misssing license headers
-
-2007-07-14 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c:
- * common/gkr-async.h:
- * common/gkr-unix-signal.c:
- * common/gkr-unix-signal.h:
- * common/gkr-wakeup.c:
- * common/gkr-wakeup.h:
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon-ops.c:
- * tests/unit-test-async.c:
- * tests/unit-test-mainloop-setup.c:
- * tests/unit-test-private.h:
- * tests/unit-test-signal.c:
- * ui/gkr-ask-daemon.c:
- * ui/gkr-ask-daemon.h:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-request.h: Move to a cooperative threading model for the
- daemon, this simplifies a lot of code and will make adding in the other
- parts of the daemon (PKCS#11 and SSH, etc...) far easier.
-
-2007-07-11 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c:
- * tests/unit-test-keyrings-prompt.c: Fix problem where keyrings are not
- prompted to be unlocked when accessing items directly. Fixes bug #454871
-
-2007-07-09 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Fix problem building on Sun's strange
- cc compiler. Patch by Halton Huo. Fixes bug #455107
-
-2007-07-06 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-memory.c: Return NULL from
- gnome_keyring_memory_strdup when called with NULL. Fixes bug #453138
-
-2007-07-06 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.19.5 ===
-
-2007-07-06 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release version 2.19.5
-
-2007-07-05 Olav Vitters <olav@bkor.dhs.org>
-
- * common/gkr-secure-memory.c: (suba_print_cell):
- * library/gnome-keyring.c: (read_all): Fix build fail: ambiguous
- fprintf() arguments Fixes bug #452498 (Theppitak Karoonboonyanan).
-
-2007-07-02 Christian Kirbach <Christian.Kirbach@googlemail.com>
-
- * common/gkr-secure-memory.c:
- Fix gcc4 compiler warning that breaks build (bug #452202).
-
-2007-06-30 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c:
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * library/gnome-keyring-utils.c:
- * reference/gnome-keyring-docs.sgml:
- * reference/gnome-keyring-sections.txt:
- * reference/tmpl/gnome-keyring-acl.sgml:
- * reference/tmpl/gnome-keyring-attributes.sgml:
- * reference/tmpl/gnome-keyring-find.sgml:
- * reference/tmpl/gnome-keyring-generic-callbacks.sgml:
- * reference/tmpl/gnome-keyring-item-info.sgml:
- * reference/tmpl/gnome-keyring-items.sgml:
- * reference/tmpl/gnome-keyring-keyring-info.sgml:
- * reference/tmpl/gnome-keyring-keyrings.sgml:
- * reference/tmpl/gnome-keyring-memory.sgml:
- * reference/tmpl/gnome-keyring-misc.sgml:
- * reference/tmpl/gnome-keyring-result.sgml: Add basic API reference documentation
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyrings.c:
- * ui/gkr-ask-daemon.c: Fix inited flag so it we don't try to
- reinitialize when performing cleanup.
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring-item.c:
- * tests/unit-test-keyrings-prompt.c:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-tool.c: Properly unlock keyrings when finding, and
- display item names by looking them up after the keyring is
- unlocked. Fixes bug #451710
-
-2007-06-27 Jürg Billeter <j@bitron.ch>
-
- * daemon/gnome-keyring-daemon-ops.c: (access_request_from_item):
- Display appropriate message when using default keyring.
- Fixes bug #451703
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * tests/Makefile.am:
- * tests/unit-test-async.c:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-mainloop-setup.c: (added)
- * tests/unit-test-private.h: (added)
- * tests/unit-test-signal.c: Added support for async version of
- gnome_keyring_item_grant_access_rights_sync(). Fixes bug #345141
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.h
- * library/gnome-keyring-utils.c:
- * tests/unit-test-other.c: Added strerror() like functionality for
- GnomeKeyringResult. Fixes bug #151084
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-keyrings-prompt.c: Allow passing NULL as a password
- to gnome_keyring_unlock(). Fixes bug #141874
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * tests/unit-test-daemon-setup.c: Don't start gnome-keyring-daemon
- in tests if the GNOME_KEYRING_TEST_PATH environment variable is set.
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-proto.c: Fix memory leaks. Patch from
- Alexander Sack. Fixes bug #451543
-
-2007-06-25 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring-memory.c: Fixed dumb problem with memory
- being freed twice. Fixes bug #450953
-
-2007-06-25 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-ops.c:
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring.c:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-utils.c:
- * library/gnome-keyring.c:
- * library/gnome-keyring.h:
- * ui/gkr-ask-request.c: Use gnome_keyring_free_password() to zero out
- passwords even when not using nonpageable memory.
- * library/gnome-keyring-memory.c: Make warnings about memory be simple
- messages, so that they don't abort the program even when running a
- beta version of GNOME. Fixes bug #450953
-
-2007-06-25 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * common/Makefile.am:
- * common/gkr-async.c: (from cryptoki branch)
- * common/gkr-async.h: (from cyrptoki branch)
- * common/gkr-unix-signal.c: (added)
- * common/gkr-unix-signal.h: (added)
- * common/gkr-wakeup.c: (added)
- * common/gkr-wakeup.h: (added)
- * daemon/gnome-keyring-daemon.c:
- * tests/Makefile.am:
- * tests/unit-test-async.c: (from cryptoki branch)
- * tests/unit-test-signal.c: (added)
- * tests/unit-tests-prep.sh: Properly handle unix signals. Quit main
- loop gracefully.
-
-2007-06-25 Stef Walter <stef@memberwebs.com>
-
- * common/Makefile.am:
- * common/gkr-cleanup.c: (added)
- * common/gkr-cleanup.h: (added)
- * daemon/gnome-keyring-daemon-dbus.c:
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * keyrings/gkr-keyrings.c:
- * keyrings/gkr-keyrings.h:
- * tests/Makefile.am:
- * tests/unit-test-cleanup.c:
- * ui/gkr-ask-daemon.c:
- * ui/gkr-ask-daemon.h: Use registered cleanup callbacks instead of a
- myriad of special functions to cleanup each different part of the daemon.
-
-2007-06-25 Stef Walter <stef@memberwebs.com>
-
- * tests/unit-test-secmem.c: Don't crash during testing by
- allocating too much memory.
-
-2007-06-22 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * Makefile.am:
- * daemon/gonme-keyring-daemon-dbus.c:
- * daemon/gnome-keyring-daemon-io.c:
- * keyrings/gkr-keyrings.c:
- * tests/Makefile.am:
- * tests/unit-test-daemon-setup.c: (added)
- * tests/unit-test-keyrings.c:
- * tests/unit-test-keyrings-prompt.c:
- * tests/unit-test-memory.c:
- * tests/unit-test-other.c:
- * tests/unit-test-secmem.c:
- * tests/unit-test-prep.sh: Automatic unit testing on distcheck,
- modified daemon so it behaves slightly differently (where it
- creates sockets, keyrings) when testing.
-
-=== gnome-keyring 2.19.4.1 ===
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * NEWS: Release version 2.19.4.1
-
-2007-06-18 Stef Walter <stef@memberwebs.com>
-
- * Makefile.am:
- * configure.in:
- * tests/Makefile.am: Fix building problems with tests.
- Fixes bug #448643
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.19.4 ===
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * NEWS: Release version 2.19.4
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c: Sends logs to syslog when not running
- in the foreground.
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * daemon/Makefile.am:
- * daemon/gnome-keyring-daemon-ops.c: (copied from gnome-keyring-daemon.c)
- * daemon/gnome-keyring-daemon.c: Seperate keyring operations into a
- different C file.
-
-2007-06-16 Stef Walter <stef@memberwebs.com>
-
- * library/Makefile.am: Make gnome-keyring-memory.h a public
- header file.
-
-2007-06-15 Stef Walter <stef@memberwebs.com>
-
- * common/Makefile.am:
- * common/gkr-buffer.c:
- * common/gkr-buffer.h:
- * common/gkr-secure-memory.c: (added)
- * common/gkr-secure-memory.h: (added)
- * daemon/Makefile.am:
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon.c:
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring.c:
- * library/Makefile.am:
- * library/gnome-keyring-memory.c:
- * library/gnome-keyring-memory.h:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-proto.h:
- * library/gnome-keyring-utils.c:
- * library/gnome-keyring.c:
- * reference/Makefile.am:
- * reference/gnome-keyring-docs.sgml:
- * reference/gnome-keyring-sections.txt:
- * tests/Makefile.am:
- * tests/unit-test-keyrings-prompt.c:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-memory.c:
- * tests-unit-test-other.c:
- * tests/unit-test-secmem.c:
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-tool.c: gnome-keyring-daemon and libgnome-keyring
- now use non-pageable secure memory for secrets and passwords.
- Fixes bug #419981
-
-2007-06-15 Stef Walter <stef@memberwebs.com>
-
- * common/gkr-async.c: Fix uninitialized variable.
- Fixes bug #448000
-
-2007-06-15 Stef Walter <stef@memberwebs.com>
-
- * Makefile.am:
- * configure.in:
- * common/gkr-buffer.c: (from cryptoki branch)
- * common/gkr-buffer.h: (from cryptoki branch)
- * daemon/Makefile.am:
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * keyrings/gkr-keyring.c:
- * library/Makefile.am:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-proto.h:
- * library/gnome-keyring.c:
- * ui/gkr-ask-request.c: Use GkrBuffer instead of GString which
- will facilitate swapping out to a non-pageable memory allocator.
- See bug #419981
-
-2007-06-14 Stef Walter <stef@memberwebs.com>
-
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring.c:
- * library/gnome-keyring-proto.c:
- * library/gnome-keyring-utils.c:
- * library/gnome-keyring.c:
- * ui/gkr-ask-request.c: Mark all locations that need to use
- non-pageable secure memory. See bug #419981
-
-2007-06-14 Stef Walter <stef@memberwebs.com>
-
- * configure.in:
- * library/Makefile.am:
- * library/gnome-keyring-memory.h:
- * library/gnome-keyring-memory.c:
- * library/gnome-keyring-private.h:
- * tests/Makefile.am:
- * tests/unit-test-memory.c:
- * tests/unit-tests-prep.sh: Build basic implementation for
- non-pageable memory. See bug #419981
-
-2007-06-14 Stef Walter <stef@memberwebs.com>
-
- * ui/gkr-ask-request.c: Initialize GError properly.
-
-2007-06-14 Stef Walter <stef@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-io.c
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * tests/unit-test-keyrings.c: Make a find operation that does not
- match any results, return OK instead of DENIED. Fixes bug #447315
-
-2007-06-14 Stef Walter <stef@memberwebs.com>
-
- * library/gnome-keyring.h: Make -pedantic compatible
- Patch from Sylvain Pasche. Fixes bug #445901
-
-2007-05-29 Stef Walter <stef@memberwebs.com>
-
- * AUTHORS:
- * MAINTAINERS:
- * daemon/gnome-keyring-daemon-dbus.c:
- * keyrings/gkr-keyring-item.c:
- * keyrings/gkr-keyring-item.h:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyrings.c:
- * keyrings/gkr-keyrings.h:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-other.c:
- * ui/gkr-ask-request.c: Use my real name
-
-2007-05-18 Nate Nielsen <nielsen@memberwebs.com>
-
- * tests/Makefile.am:
- * Makefile.am: Pass make distcheck
- * AUTHORS: Add myself as an author
- * HACKING: Update info files about gnome-keyring
-
-2007-05-18 Nate Nielsen <nielsen@memberwebs.com>
-
- * ui/gkr-ask-request.h
- * ui/gkr-ask-tool.c: Fix the ugliness that is the password prompt dialog.
-
-2007-05-18 Nate Nielsen <nielsen@memberwebs.com>
-
- * daemon/gnome-keyring-daemon.c: Fix inconsistencies, such as using the
- default keyring when NULL keyring is used.
- * ui/gkr-ask-request.c:
- * ui/gkr-ask-tool.c: Fix problems returning responses from the ask tool.
- * daemon/gnome-keyring-daemon-io.c:
- * ui/gkr-ask-daemon.c: Fix problem killing client when in an ask request.
-
-2007-05-18 Nate Nielsen <nielsen@memberwebs.com>
-
- * tests/Makefile.am:
- * tests/unit-test-keyrings.c:
- * tests/unit-test-keyring-prompt.c:
- * tests/unit-test-other.c: Complete basic unit tests, including prompting tests
-
-2007-05-18 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * Makefile.am:
- * library/Makefile.am:
- * library/test.c (moved to tests/):
- * library/list-keyrings.c (moved to tests/):
- * tests/Makefile.am (added):
- * tests/list-keyrings.c (moved from library/):
- * tests/test-keyrings.c (moved from library/):
- * tests/unit-test-keyrings.c:
- * tests/unit-tests-prep.sh:
- * tests/Makefile (removed): Consolidate our testing and use proper make files.
-
-2007-05-17 Nate Nielsen <nielsen@memberwebs.com>
-
- * Makefile.am:
- * configure.in:
- * daemon/Makefile.am:
- * daemon/gnome-keyring-ask.c (moved to ui/):
- * daemon/gnome-keyring-daemon-file.c (removed):
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * keyrings/Makefile.am:
- * keyrings/gkr-keyring.c:
- * keyrings/gkr-keyring.h:
- * keyrings/gkr-keyrings.c (added):
- * keyrings/gkr-keyrings.h (added):
- * library/gnome-keyring-private.h:
- * ui/Makefile.am:
- * ui/gkr-ask-daemon.c (added):
- * ui/gkr-ask-daemon.h (added):
- * ui/gkr-ask-request.c (added):
- * ui/gkr-ask-request.h (added):
- * ui/gkr-ask-tool.c (moved from daemon/): Refactor prompting and keyring
- listing functionality into objects.
- * library/gnome-keyring-proto.c: Don't crash on null attributes.
-
-2007-05-17 Nate Nielsen <nielsen@memberwebs.com>
-
- * tests/* (added): Basics of unit testing
-
-2007-05-17 Nate Nielsen <nielsen@memberwebs.com>
-
- * Makefile.am:
- * configure.in:
- * daemon/Makefile.am:
- * daemon/gnome-keyring-daemon-file.c:
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon.c:
- * daemon/gnome-keyring-daemon.h:
- * keyrings/Makefile.am: (added)
- * keyrings/gkr-keyring-item.c (added):
- * keyrings/gkr-keyring-item.h (added):
- * keyrings/gkr-keyring.c (added):
- * keyrings/gkr-keyring.h (added): Use GObject for internal objects
- like keyrings and items.
-
-2007-05-11 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 2.19.2 ===
-
-2007-05-11 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * NEWS:
- * README: Release version 2.19.2
-
-2007-05-10 Nate Nielsen <nielsen@memberwebs.com>
-
- * daemon/gnome-keyring-ask.c: Don't include markup in translatable
- messages. Patch by Elijah Newren. Fixes bug #360445
-
-2007-05-10 Nate Nielsen <nielsen@memberwebs.com>
-
- * daemon/gnome-keyring-daemon-io.c:
- * daemon/gnome-keyring-daemon.c: Cast uid_t and pid_t properly
- to avoid compiler warnings. See bug #340117
-
-2007-05-09 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number to 2.19.1 to sync up
- with GNOME.
-
-2007-05-08 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * daemon/gnome-keyring-daemon.c: Fix build problem with gcrypt
-
-2007-05-05 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * Makefile.am:
- * daemon/aes*.[ch]: (removed)
- * daemon/beecrypt_compat.h: (removed)
- * daemon/md5.[ch]: (removed)
- * daemon/sha256.[ch]: (removed)
- * daemon/gnome-keyring-daemon-file.c:
- * daemon/gnome-keyring-daemon.c: Removed custom crypto code and
- now depend on libgrcypt. Fixes legal issues with Solaris
- not distributing gnome-keyring. See bug #156860
-
-2007-03-31 Nate Nielsen <nielsen@memberwebs.com>
-
- * Reorganized file tree.
- * library/*: All library and common files
- * daemon/*: All daemon files
- * doc/*: Random documentation
- * configure.in: Updated version number development version
-
-=== Branched for 2.18 work on gnome-2-18 branch ==
-
-2007-03-31 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring-daemon.c: Fix null pointer crashes.
- Fixes bug #423320. Patch by Halton Huo
-
-=== gnome-keyring 0.8 ===
-
-2007-02-12 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * NEWS: Release 0.8
-
-=== gnome-keyring 0.7.92 ===
-
-2007-02-24 Nate Nielsen <nielsen@memberwebs.com>
-
- * NEWS: Release 0.7.92
-
-2007-02-13 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- * gnome-keyring-daemon.h: Include sys/types.h to fix the
- build. Fixes bug #407160, patch by Jens Granseuer.
-
-2007-02-12 Pascal Terjan <pterjan@linuxfr.org>
-
- * gnome-keyring-daemon.c: (gnome_keyring_free): Don't crash on NULL
- parameter. Part of #339137
-
-2007-02-12 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 0.7.91 ===
-
-2007-02-12 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * NEWS: Release 0.7.91
-
-2007-02-12 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring-daemon-io.c: (read_unix_socket_credentials):
- * gnome-keyring.c: (write_credentials_byte_sync):
- kFreeBSD build fixes. Patch by Petr Salinger. Fixes bug #382773
-
-2007-02-12 Nate Nielsen <nielsen@memberwebs.com>
-
- * Makefile.am:
- * README:
- * configure.in:
- * gnome-keyring-daemon-dbus.c: (added)
- * gnome-keyring-daemon.c: (main):
- * gnome-keyring-daemon.h:
- * gnome-keyring-private.h:
- * gnome-keyring.c: (connect_to_daemon):
- Added secondary method for daemon discover: via DBus. Added dependency
- on DBus. Fixes bug #400956
-
-2007-01-04 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 0.7.3 ===
-
-2007-01-04 Nate Nielsen <nielsen@memberwebs.com>
-
- * NEWS: Release 0.7.3
-
-2007-01-04 Sebastien Bacher <seb128@ubuntu.com>
-
- * gnome-keyring-daemon-file.c: (get_default_keyring_file_for_name):
- fix infinite loop when creating a keyring with an already existant
- name, issue pointed by "Yachar" on https://launchpad.net/bugs/60765
- (Closes: bug #356897)
-
-2007-01-03 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring.c: Update documentation. Fixes bug #359968
-
-2007-01-03 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring-daemon-file.c: Don't try and delete session
- keyrirng. Fixes bug #355414
-
-2007-01-03 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring-daemon.c: Fix crasher for find operation with
- a NULL attribute string. Fixes #360007
-
-2007-01-03 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * gnome-keyring-daemon-file.c: fsync() after writing to disk.
- See bug #347904
-
-2006-12-18 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.7.2 ===
-
-2006-12-18 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- Build lib before docs
-
- * configure.in:
- * reference/Makefile.am:
- Make docs build
-
-2006-12-18 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2006-12-14 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.[ch]:
- Don't have multiple outstanding password requests for the
- same keyring. (#331003)
-
-2006-11-30 Andre Klapper <a9016009@gmx.de>
-
- * MAINTAINERS: fixed wrong email address
-
-2006-10-05 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number
-
-=== gnome-keyring 0.7.1 ===
-
-2006-10-05 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in:
- * NEWS: Prepare for release
-
-2006-10-05 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring.h:
- * reference/gnome-keyring-sections.txt: Update 'documentation' with
- new functions
-
-2006-10-04 Nate Nielsen <nielsen@memberwebs.com>
-
- * Makefile.am:
- * gnome-keyring-daemon.c (request_allowed_for_app, op_list_items_execute,
- op_create_item_collect, op_create_item_execute, op_set_item_info_execute,
- op_find_execute, op_find_collect, schedule_ask):
- * gnome-keyring.h:
- * test.c: Add ability to mark an item as 'application only' whereby only
- applications on the ACL will ever get access to the data. See bug #356670
-
-2006-10-31 Nate Nielsen <nielsen@memberwebs.com>
-
- * configure.in: Bump version number.
-
-2006-10-31 Nate Nielsen <nielsen@memberwebs.com>
-
- * gnome-keyring-daemon.c (request_allowed_for_app, access_request_from_item,
- access_request_from_item_with_secret, op_get_item_info_collect, op_get_item_info_execute,
- op_get_item_acl_or_attributes_collect, schedule_ask):
- * gnome-keyring-daemon.h:
- * gnome-keyring-proto.c (gnome_keyring_proto_encode_op_string_int_int,
- gnome_keyring_proto_decode_get_item_info):
- * gnome-keyring-proto.h:
- * gnome-keyring.c (gnome_keyring_item_get_info_full, gnome_keyring_item_get_info_full_sync):
- * gnome-keyring.h:
- * test.c: Adds ability to access meta-data without accessing secret itself.
- This does not incur the ACL prompt. See bug #356298
-
-2006-10-30 Nate Nielsen <nielsen@memberwebs.com>
-
- * MAINTAINERS: Added myself
-
-=== Branched for 2.16 work on gnome-2-16 branch ==
-
-2006-10-05 Sven Herzberg <herzi@gnome-de.org>
-
- * gnome-keyring-utils.c,
- * gnome-keyring.c: added documentation to some structures and
- functions
-
-2006-09-04 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Bump version to 0.6.0 (for Gnome 2.16.0)
-
- * NEWS:
- Update for release.
-
-2006-08-28 Julio M. Merino Vidal <jmmv@NetBSD.org>
-
- * gnome-keyring-daemon.c, gnome-keyring-daemon-io.c: Add support for
- LOCAL_CREDS socket credentials so that the keyring works under NetBSD.
-
-2006-08-23 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring.c: (gnome_keyring_find_network_password_sync):
- fix crash due to dereference of NULL (#352587)
-
-2006-08-22 Wouter Bolsterlee <uws+gnome@xs4all.nl>
-
- * gnome-keyring-ask.c: (ask_for_new_keyring_password),
- (ask_for_change_keyring_password): Fix ugly typo:
- s/unkown/unknown/
-
- * po/*: Fix the same typo in all .po files and run
- "make update-po" to update all translations.
-
-2006-08-21 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.5.2 ===
-
-2006-08-21 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2006-08-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.in: Update intltool req.
-
-2006-08-11 Alexander Larsson <alexl@redhat.com>
-
- * reference/gnome-keyring-docs.sgml:
- Use sane title in docs (#348477)
- Patch from Ed Catmur
-
-2006-08-11 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (find_keyring):
- * gnome-keyring.c: (gnome_keyring_find_network_password_sync):
- Don't crash on deleting a NULL keyring (#350417)
- Patch from Gonzalo Paniagua Javier
-
-2006-08-01 Arangel Angov <ufo@linux.net.mk>
-
- * Added Slovenian Translation to LINGUAS
- and added sl.po to /po directory.
-
-2006-06-21 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-proto.c (gnome_keyring_proto_start_operation):
- Add g_warning if application name not set.
-
-2006-06-16 Jules Colding <colding@omesc.com>
-
- * gnome-keyring.c (gnome_keyring_item_grant_access_rights_sync):
- New function to explicitly set access rights to a keyring item
- for a specific application.
-
- * gnome-keyring.h: Declared new function to set access rights to
- keyring item for specific application
-
-2006-06-12 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post-release version bump
-
-=== gnome-keyring 0.5.1 ===
-
-2006-06-12 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
- * configure.in:
- Update version to 0.5.1, better than .0 for an unstable branch.
-
-2006-04-24 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c (gnome_keyring_change_password_sync):
- Whitespace fix (#339436)
-
-2006-04-20 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am (DISTCHECK_CONFIGURE_FLAGS):
- Add --enable-gtk-doc to distcheck flags
-
-2006-04-20 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (op_set_item_info_execute),
- (op_set_item_attributes_execute):
- Fix more NULL check order. (#338594)
- Patch from Pascal Terjan
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- Add password strength meter. (#166504)
- Patch from Jorge Bernal
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
- * gnome-keyring-daemon.c: (finish_ask_io):
- Save keyring when ACL is added. (#326221)
- Patch from Jon Nettleton
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-file.c (get_keyring_dir):
- Create ~/.gnome2 if needed. (#143892)
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c:
- * gnome-keyring-proto.h:
- * gnome-keyring.[ch]:
- Add gnome_keyring_daemon_set_display_sync that lets you
- set the DISPLAY if not already set. (#333653)
- Patch from Jon Nettleton
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (op_delete_item_execute):
- Fix NULL check order. (#338594)
- Patch from Pascal Terjan
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- * configure.in:
- Use po/LINGUAS
- Patch from Przemyslaw Grzegorczyk
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c (close_stdinout):
- Remove unnecessary closes (#141324)
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- * gnome-keyring-daemon.c:
- * gnome-keyring-daemon.h:
- * gnome-keyring-proto.c:
- * gnome-keyring-proto.h:
- * gnome-keyring.c:
- * gnome-keyring.h:
- Allow to change the password of a keyring.
- Patch from Jon Nettleton
-
-2006-04-19 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Update version to 0.5.0
-
- * MAINTAINERS:
- Added file
-
-=== Branched for 2.14 work on gnome-2-14 branch ==
-
-2006-04-17 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.in: Remove obsolete entry for no_NO
- * po/no.po: And the translation.
-
-2006-04-14 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring-daemon-io.c
- - (gnome_keyring_client_state_machine): if we get a null string
- as the GNOME_CLIENT_STATE_READ_DISPLAYNAME for some reason,
- ignore the request. Part of patch from Bug #156860
-
-2006-04-14 Dan Williams <dcbw@redhat.com>
-
- * configure.in
- - Check for getpeerucred
-
- * gnome-keyring-daemon-io.c
- - Use getpeerucred() if we have it (Solaris)
-
-2006-04-14 Dan Williams <dcbw@redhat.com>
-
- * configure.in
- - Check for /dev/random
-
- * gnome-keyring-daemon.c
- - (init_salt): don't hit /dev/random unless we've got it
-
-2006-04-13 Sven Herzberg <herzi@gnome-de.org>
-
- * .cvsignore,
- * reference/.cvsignore,
- * reference/tmpl/.cvsignore: silence
-
-2006-04-11 Sven Herzberg <herzi@gnome-de.org>
-
- * autogen.sh: accept command line parameters
- * reference/tmpl/empty.sgml: satisfy stupid make dependency
-
-2006-04-11 Sven Herzberg <herzi@gnome-de.org>
-
- reviewed by: Alex Larsson
-
- * Makefile.am: added the reference subdirectory
- * autogen.sh: enable gtk-doc for developer builds (necessary for dist)
- * configure.in: check for gtk-doc, set distcheck flags, build the
- Makefile
- * gnome-keyring.c: documented gnome_keyring_find_items_sync()
- * reference/Makefile.am: documentation build system
- * reference/gnome-keyring-docs.sgml: rough documentation framework
- * reference/gnome-keyring-sections.txt: some documentation
- categorization (needs to be further split)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring-daemon.c
- - (init_salt): use fstat() on /dev/random after opening it to
- ensure that it's a character device. Make general rather than just
- for Linux, since Solaris and FreeBSD also use this code.
- (Bug #141322)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring-daemon.c
- - (gnome_keyring_application_ref_new_from_pid): use g_file_read_link(),
- and add code for reading app path on FreeBSD. (Bug #141323)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring-daemon-io.c
- gnome-keyring.c
- - Updates for FreeBSD / SCM_CREDS support, fix endian
- issues on non-i386 platforms.
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- Patch from Joe Marcus Clarke <marcus@freebsd.org>
-
- * gnome-keyring.c
- - Implement SCM_CREDS support (#142373)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- Patch from Dave Malcolm <david@davemalcolm.demon.co.uk>
-
- * test.c
- - More verbose error messages (Bug #141761)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- Patch from Jon Nettleton <jon.nettleton@gmail.com>
-
- * gnome-keyring.c
- - (gnome_keyring_get_info_sync): encode keyring name (Bug #336893)
-
-2006-04-03 Dan Williams <dcbw@redhat.com>
-
- * gnome-keyring-daemon-file.c
- - (update_keyring_from_disk): fix leak (bug #319053)
-
-2006-04-03 Claudio Saavedra <csaavedra@alumnos.utalca.cl>
-
- * gnome-keyring-ask.c: (run_dialog): Added labels for the entries
- (#323269).
-
-2006-03-24 Tommi Vainikainen <thv@iki.fi>
-
- * configure.in (ALL_LINGUAS): Added Dzongkha (dz).
-
-2006-03-20 Vladimer Sichinava <vlsichinava@gmail.com>
-
- * configure.in: Added "ka" (Georgian) to ALL_LINGUAS
-
-2006-03-13 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post-release version bump
-
-=== gnome-keyring 0.4.9 ===
-
-2006-03-13 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2006-03-03 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c:
- Get proper return values for some sync calls. (#332845)
- Patch from Jon Nettleton
-
-2006-02-27 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- post release version bump
-
-=== gnome-keyring 0.4.8 ===
-
-2006-02-27 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2006-02-17 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- Fix crash when you deny without typing a password.
- Patch from Brent Smith
-
-2006-02-13 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump.
-
-=== gnome-keyring 0.4.7 ===
-
-2006-02-13 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
-2006-01-07 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * configure.in: Add "zh_HK" to ALL_LINGUAS.
-
-2005-12-16 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c (_):
- Fix !ENABLE_NLS case (#324213)
-
-2005-11-14 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump.
-
-=== gnome-keyring 0.4.6 ===
-
-2005-11-14 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
-2005-10-26 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (access_request_default_keyring):
- Fix sparse warning. Patch from Kjartan Maraas.
-
-2005-10-24 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- Confirm password when selecting new password.
- Patch from Trevor Davenport (#311872)
-
-2005-09-14 Fernando Herrera <fherrera@onirica.com>
-
- * configure.in: Post release version bump.
-
-=== gnome-keyring 0.4.5 ===
-
-2005-09-14 Fernando Herrera <fherrera@onirica.com>
-
- * NEWS:
- Update for release.
-
-2005-09-14 Fernando Herrera <fherrera@onirica.com>
-
- * gnome-keyring.c: (run_sync_operation),
- (gnome_keyring_set_default_keyring_sync),
- (gnome_keyring_lock_all_sync), (gnome_keyring_create_sync),
- (gnome_keyring_unlock_sync), (gnome_keyring_lock_sync),
- (gnome_keyring_delete_sync), (gnome_keyring_set_info_sync),
- (gnome_keyring_item_delete_sync),
- (gnome_keyring_item_set_info_sync),
- (gnome_keyring_item_set_attributes_sync),
- (gnome_keyring_item_set_acl_sync): Fix all these sync functions
- adding a receive buffer. Patch by Crispin Flowerday <crispin@gnome.org>
-
-=== gnome-keyring 0.4.4 ===
-
-2005-09-05 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
-2005-08-30 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c: (run_dialog):
- Fix warning (#310903)
-
-2005-07-15 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Require gtk 2.6.0 (needed for gtk_window_set_icon_name)
-
-2005-07-01 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump.
-
-=== gnome-keyring 0.4.3 ===
-
-2005-07-01 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
-2005-06-26 Kjartan Maraas <kmaraas@gnome.org>
-
- * gnome-keyring-daemon-file.c: (update_keyrings_from_disk):
- Don't leak the name of the directory here. Closes bug #166797.
-
-2005-06-23 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c: (run_dialog):
- Add window icon.
- Patch by Jaap A. Haitsma
-
-2005-06-10 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * configure.in: Added 'gl' to ALL_LINGUAS.
-
-2005-05-20 James Bowes <bowes@cs.dal.ca>
-
- * gnome-keyring.c: (gnome_keyring_set_default_keyring_sync),
- (gnome_keyring_get_default_keyring_sync),
- (gnome_keyring_list_keyring_names_sync),
- (gnome_keyring_lock_all_sync), (gnome_keyring_create_sync),
- (gnome_keyring_unlock_sync), (gnome_keyring_lock_sync),
- (gnome_keyring_delete_sync), (gnome_keyring_get_info_sync),
- (gnome_keyring_set_info_sync), (gnome_keyring_list_item_ids_sync),
- (gnome_keyring_item_delete_sync),
- (gnome_keyring_item_get_info_sync),
- (gnome_keyring_item_set_info_sync),
- (gnome_keyring_item_get_attributes_sync),
- (gnome_keyring_item_set_attributes_sync),
- (gnome_keyring_item_get_acl_sync),
- (gnome_keyring_item_set_acl_sync):
- * gnome-keyring.h:
- Implement synchronous functions for all async functions.
-
-2005-05-06 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-file.c (generate_key):
- More char signedness fixes.
- Patch from Vincent Untz
-
-2005-05-04 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-file.c:
- * gnome-keyring-daemon-io.c:
- * gnome-keyring-proto.h:
- * md5.c:
- Fix char signness issues (#302938)
- Based on patch from Jeramy Rutley
-
-2005-04-24 James Bowes <bowes@cs.dal.ca>
-
- * gnome-keyring-daemon.c: (op_set_keyring_info_execute):
- * gnome-keyring-proto.c:
- (gnome_keyring_proto_encode_set_keyring_info),
- (gnome_keyring_proto_decode_set_item_info),
- (gnome_keyring_proto_decode_set_keyring_info):
- * gnome-keyring-proto.h: Implement gnome_keyring_set_info.
-
-2005-04-21 James Bowes <bowes@cs.dal.ca>
-
- * gnome-keyring-daemon.c: Fixed a typo in the
- GnomeKeyringOperationImplementation keyring_ops, where
- get_item_acl_execute was hooked to set_item..._collect.
-
-2005-03-31 Steve Murphy <murf@e-tools.com>
-
- * configure.in: Added "rw" to ALL_LINGUAS.
-
-2005-03-23 Adi Attar <aattar@cvs.gnome.org>
-
- * configure.in: Added 'xh' to ALL_LINGUAS.
-
-2005-03-07 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release bump.
-
-=== gnome-keyring 0.4.2 ===
-
-2005-03-07 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release.
-
-2005-02-21 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- * gnome-keyring-daemon-io.c:
- * gnome-keyring-daemon.h:
- * gnome-keyring-private.h:
- * gnome-keyring.c:
- * gnome-keyring.h:
- Some AIX portability patches from The Written Word
- (#148385)
-
-2005-01-14 Pawan Chitrakar <pawan@nplinux.org>
-
- * configure.in: Added ne "Nepali" in ALL_LINGUAS
-
-2005-01-11 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release bump
-
-=== gnome-keyring 0.4.1 ===
-
-2005-01-11 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2004-11-26 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (lifetime_slave_pipe_io), (main):
- Added support for slaving lifetime to filedescriptor.
-
-2004-10-11 Roozbeh Pournader <roozbeh@farsiweb.info>
-
- * configure.in:
- Added 'fa' (Persian) to ALL_LINGUAS
-
-2004-09-13 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release bump.
-
-=== gnome-keyring 0.4.0 ===
-
-2004-09-13 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Bump version to 0.4
-
-2004-09-09 Mugurel Tudor <mugurelu@go.ro>
-
- * configure.in: Added ro to ALL_LINGUAS
-
-2004-09-07 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c:
- * gnome-keyring-daemon.c:
- Include string.h to fix build (#151825)
-
-2004-08-30 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post-release version bump
-
-=== gnome-keyring 0.3.3 ===
-
-2004-08-30 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for 0.3.3
-
-2004-08-28 Akagic Amila <bono@linux.org.ba>
-
- * configure.in: Added 'bs' to ALL_LINGUAS.
-
-2004-08-26 Jayaradha <njaya@redhat.com>
-
- * configure.in: Added ta to ALL_LINGUAS.
-
-2004-08-26 Alexander Larsson <alexl@redhat.com>
-
- * AUTHORS (Contributors):
- Add Fernando to AUTHORS.
-
-2004-08-13 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.in: Added nb to ALL_LINGUAS.
-
-2004-08-09 Amanpreet Singh Alam<aalam@redhat.com>
- *configure.in: Add Gujurati Lang
-
-2004-08-07 Runa Bhattacharjee <runab@redhat.com>
- * configure.in: Added Bengali (bn) to ALL_LINGUAS.
-
-2004-07-20 Fernando Herrera <fherrera@onirica.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.3.2 ===
-
-2004-07-20 Fernando Herrera <fherrera@onirica.com>
-
- * Makefile.am:
- * NEWS:
- * configure.in: Update for 0.3.2 release. Incremented micro number
- because of the API aditions.
-
-2004-07-14 Fernando Herrera <fherrera@onirica.com>
-
- reviewed by: Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-file.c: (remove_keyring_file_from_disk):
- * gnome-keyring-daemon.c: (delete_keyring),
- (op_delete_keyring_execute), (op_get_item_acl_execute),
- (op_set_item_acl_execute):
- * gnome-keyring-daemon.h:
- * gnome-keyring-private.h:
- * gnome-keyring-proto.c: (gnome_keyring_proto_encode_set_acl),
- (gnome_keyring_proto_decode_acl), (gnome_keyring_proto_add_acl),
- (gnome_keyring_proto_decode_get_acl_reply),
- (gnome_keyring_proto_decode_set_attributes),
- (gnome_keyring_proto_decode_set_acl):
- * gnome-keyring-proto.h:
- * gnome-keyring-utils.c: (gnome_keyring_application_ref_new),
- (gnome_keyring_application_ref_free),
- (gnome_keyring_application_ref_copy),
- (gnome_keyring_access_control_new),
- (gnome_keyring_access_control_free),
- (gnome_keyring_access_control_copy), (gnome_keyring_acl_copy),
- (gnome_keyring_acl_free): Add support for deleting keyrings and
- setting/gettings ACL
- * gnome-keyring.c: (op_failed), (gnome_keyring_get_acl_reply),
- (gnome_keyring_item_get_acl), (gnome_keyring_item_set_acl),
- (gnome_keyring_item_ac_get_display_name),
- (gnome_keyring_item_ac_set_display_name),
- (gnome_keyring_item_ac_get_path_name),
- (gnome_keyring_item_ac_set_path_name),
- (gnome_keyring_item_ac_get_access_type),
- (gnome_keyring_item_ac_set_access_type):
- * gnome-keyring.h: new API functions for getting/setting ACL and for
- manipulating GnomeKeyringAccessControl
-
-2004-07-05 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.3.1 ===
-
-2004-07-05 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for 0.3.1
-
- * Makefile.am (EXTRA_DIST):
- Add keyring-intro.txt
-
-2004-06-10 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c (op_unlock_keyring_execute):
- Make NULL unlock the default keyring.
-
-2004-05-27 Mohammad DAMT <mdamt@bisnisweb.com>
-
- * po/id.po: Added Indonesian translation done by Ahmad Riza H Nst <rizahnst@eriagempita.co.id>
- * configure.in: Added id to ALL_LINGUAS
-
-2004-05-26 Alexander Shopov <ash@contact.bg>
-
- * configure.in: Added "bg" (Bulgarian) to ALL_LINGUAS.
-
-2004-05-21 Iñaki Larrañaga <dooteo@euskalgnu.org>
-
- * configure.in: Added "eu" (Basque) to ALL_LINGUAS.
-
-2004-05-18 Fernando Herrera <fherrera@onirica.com>
-
- * keyring-intro.txt: New intro doc.
-
-2004-04-19 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Bump version to 0.3.1 on head. 0.2.x is now on gnome-2-6 branch
-
-2004-04-19 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.2.1 ===
-
-2004-04-19 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- Update for release
-
-2004-04-03 Samúel Jón Gunnarsson <sammi@techattack.nu>
-
- * configur.in: Added "is" to ALL_LINGUAS.
-
-2004-03-24 Guntupalli Karunakar <karunakar@freedomink.org>
-
- * configure.in: Added "pa" (Punjabi) to ALL_LINGUAS.
-
-2004-03-22 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Post release version bump
-
-=== gnome-keyring 0.2.0 ===
-
-2004-03-22 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update to 0.2.0
-
-2004-03-21 Abel Cheung <maddog@linux.org.hk>
-
- * configure.in: Added "ca" "nl" "tr" "zh_CN" "zh_TW" to ALL_LINGUAS.
-
-2004-03-20 Gareth Owen <gowen72@yahoo.com>
-
- * configure.in: Added en_GB to ALL_LINGUAS
-
-2004-03-19 Andras Timar <timar@gnome.hu>
-
- * hu.po: Added "hu" (Hungarian) to ALL_LINGUAS.
-
-2004-03-17 Dafydd Harries <daf@muse.19inch.net>
-
- * configure.in: Added "cy" (Welsh) to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.91 ===
-
-2004-03-15 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update to 0.1.91
-
-2004-03-13 Maxim Dziumanenko <mvd@mylinux.com.ua>
-
- * configure.in: Added uk (Ukrainian) to ALL_LINGUAS.
-
-2004-03-11 Dmitry G. Mastrukov <dmitry@taurussoft.org>
-
- * configure.in: Added Russian to ALL_LINGUAS.
-
-2004-03-10 Alexander Winston <alexander.winston@comcast.net>
-
- * configure.in: Added en_CA to ALL_LINGUAS.
-
-2004-03-10 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
-
- * configure.in: Added pt_BR to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.90 ===
-
-2004-03-08 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update to 0.1.90
-
-2004-03-02 Glynn Foster <glynn.foster@sun.com>
-
- * Makefile.am:
- * configure.in:
- * gnome-keyring-1-uninstalled.pc.in:
- Add uninstalled pkg-config file.
-
-2004-02-27 Paisa Seeluangsawat <paisa@users.sf.net>
-
- * configure.in: Added "th" (Thai) to ALL_LINGUAS.
-
-2004-02-25 Alessio Frusciante <algol@firenze.linux.it>
-
- * configure.in: Added "it" (Italian) to ALL_LINGUAS.
-
-2004-02-22 Mətin Əmirov <metin@karegen.com>
-
- * configure.in: Added "az" to ALL_LINGUAS.
-
-2004-02-11 Arafat Medini <lumina@silverpen.de>
-
- * configure.in: Added Arabic locale ar to ALL_LINGUAS.
-
-2004-02-11 Pauli Virtanen <pauli.virtanen@hut.fi>
-
- * configure.in: Added "fi" (Finnish) to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.4 ===
-
-2004-02-11 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Bump to 0.1.4
-
-2004-02-09 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am (INCLUDES):
- * gnome-keyring-daemon.c (launch_ask_helper):
- Move gnome-keyring-ask to libexec.
-
-2004-02-06 Robert Sedak <robert.sedak@sk.htnet.hr>
-
- * configure.in: Added "hr" (Croatian) to ALL_LINGUAS.
-
-2004-02-04 Laurent Dhima <laurenti@alblinux.net>
-
- * configure.in: Added "sq" to ALL_LINGUAS.
-
-2004-01-31 Sanlig Badral <badral@openmn.org>
-
- * configure.in: Added "mn" (Mongolian) to ALL_LINGUAS.
-
-2004-01-30 Ole Laursen <olau@hardworking.dk>
-
- * configure.in: Added "da" (Danish) to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.3 ===
-
-2004-01-30 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update to 0.1.3
-
-2004-01-14 Jody Goldberg <jody@gnome.org>
-
- * gnome-keyring-ask.c : include <locale.h> cause -Werror makes a
- missing include unhappy.
-
-2004-01-15 Changwoo Ryu <cwryu@debian.org>
-
- * configure.in: Added "ko" to ALL_LINGUAS.
-
-2004-01-14 Christian Neumair <chris@gnome-de.org>
-
- * configure.in: (ALL_LINGUAS): Add German to ALL_LINGUAS.
-
-2004-01-13 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c: (get_app_information),
- (get_keyring_information), (ask_for_keyring_password),
- (ask_for_new_keyring_password), (ask_for_default_keyring),
- (ask_for_item_read_write_acccess):
- Don't split up strings for translations.
- Mark some new strings translated.
- Patch from chris@gnome-de.org
-
-2004-01-13 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- * gnome-keyring-ask.c: (main):
- Actually use translations.
-
-2004-01-13 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- * gnome-keyring-daemon-io.c:
- * gnome-keyring-daemon.c:
- Portability fixes from mterry@fastmail.fm
-
-2004-01-13 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- Fix some leaks.
- Patch from tom@aliacom.fr.
-
-2004-01-12 Žygimantas Beručka <uid0@tuxfamily.org>
-
- * configure.in: Added "lt" (Lithuanian) to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.2 ===
-
-2004-01-12 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update for 0.1.2
-
-2004-01-11 Christophe Merlet <redfox@redfoxcenter.org>
-
- * configure.in (ALL_LINGUAS): Added "fr" (French).
-
-2004-01-08 David Coulthart <davec@columbia.edu>
-
- * gnome-keyring.h:
- * gnome-keyring.c:
- * test.c:
- s/gnome_keyring_is_availible/gnome_keyring_is_available/
-
-2004-01-08 Alex Duggan <aldug@astrolinux.com>
-
- * configure.in: Require glib/gtk+ 2.3.1
- Fixes bug #129713
-
-2004-01-07 Marcel Telka <marcel@telka.sk>
-
- * configure.in (ALL_LINGUAS): Added sk.
-
-2004-01-07 Alex Duggan <aldug@astrolinux.com>
-
- * gnome-keyring-daemon-io.c: Use g_get_tmp_dir () instead of
- hardcoding "/tmp"
- * .cvsignore: Add gnome-keyring-1.pc
-
-2004-01-06 Kostas Papadimas <pkst@gnome.org>
-
- * configure.in: Added Greek (el) to ALL_LINGUAS.
-
-2004-01-05 Artur Flinta <aflinta@cvs.gnome.org>
-
- * configure.in: Added pl to ALL_LINGUAS.
-
-=== gnome-keyring 0.1.1 ===
-
-2003-12-28 Alexander Larsson <alexl@redhat.com>
-
- * NEWS:
- * configure.in:
- Update for 0.1.1
-
-2003-12-27 Hasbullah Bin Pit <sebol@ikhlas.com>
-
- * configure.in: Added 'ms' (Malay) to ALL_LINGUAS.
-
-2003-12-24 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * configure.in: Added Portuguese (pt) to ALL_LINGUAS.
-
-2003-12-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * configure.in: Added Spanish "es" to ALL_LINGUAS.
-
-2003-12-19 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c (main):
- Don't daemonize by default. gnome-keyring now dies with
- gnome-session. -d enables daemonization.
-
-2003-12-17 Miloslav Trmac <mitr@volny.cz>
-
- * configure.in: Added "cs" to ALL_LINGUAS.
-
-2003-12-17 Christian Rose <menthos@menthos.com>
-
- * configure.in: Added "sv" to ALL_LINGUAS.
-
-2003-12-16 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- (ask_for_item_read_write_acccess):
- Better wording for buttons
-
-2003-12-16 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c (ask_for_new_keyring_password):
- Make the ask dialogs nicer.
-
-2003-12-14 Kjartan Maraas <kmaraas@gnome.org>
-
- * configure.in: Add norwegian translation.
- * po/no.po: Here too.
-
-2003-12-15 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * configure.in: Added 'ja' Japanese into ALL_LINGUAS.
-
-2003-12-10 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c (operation_io):
- Correct assertion
-
-2003-12-09 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-io.c:
- FreeBSD patches from Joe Marcus Clarke
-
-2003-12-08 Alex Duggan <aldug@astrolinux.com>
-
- * configure.in:
- * Makefile.am:
- Build fixes to make gnome-keyring build with jhbuild again.
-
-2003-12-08 Alexander Larsson <alexl@redhat.com>
-
- * mkdtemp.[ch]:
- * Makefile.am:
- replacement for suffering OSes (from gettext)
-
- * configure.in:
- * gnome-keyring-daemon.c:
- portability fixes
-
-2003-12-08 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- Make the version 0.1.0 so next version is 0.1.1
-
-=== gnome-keyring 0.1 ===
-
-2003-12-08 Alexander Larsson <alexl@redhat.com>
-
- * AUTHORS:
- * TODO:
- * README:
- * NEWS:
- Some text for the 0.1 release
-
-2003-12-06 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c: (close_stdinout), (main):
- Print daemon pid on startup
- remove old test code
- correct envvar name
-
- * gnome-keyring.c: (connect_to_daemon):
- correct envvar name
-
-2003-12-06 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c (main):
- Close stdin/stdout in daemon process.
-
-2003-12-06 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c (main):
- Spawn in background unless -f specified
- clean up socket dir on exit
-
-2003-12-05 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- remove AC_C_BIGENDIAN
-
-2003-12-05 Alexander Larsson <alexl@redhat.com>
-
- * TODO:
- update
- * gnome-keyring-daemon.c: (op_find_execute):
- fix typo
-
- * test.c: (print_attributes), (find_items_cb),
- (print_attributes_cb), (show_item):
- better find test
-
-2003-12-05 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- * sha256.[ch]:
- * beecrypt_compat.h:
- Added sha256 from beecrypt
-
- * file-format.txt:
- * gnome-keyring-daemon-file.c:
- * gnome-keyring-daemon.[ch]:
- Use sha256 to get key and iv for aes crypto
- Add salt and hash rounds count.
- Warning: This changes the file format.
-
- * gnome-keyring-proto.[ch]:
- New function gnome_keyring_proto_get_bytes
-
-2003-12-04 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c (operation_io):
- Fix type issue.
-
-2003-12-04 Alexander Larsson <alexl@redhat.com>
-
- * configure.in:
- * Makefile.am (libgnomekeyringincludedir):
- * gnome-keyring-1.0.pc.in:
- * gnome-keyring-1.pc.in:
- 1.0 -> 1
-
-2003-12-04 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.c (find_network_password_callback):
- Pass the right user data
-
-2003-12-04 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-proto.c:
- (gnome_keyring_proto_decode_result_integer_reply):
- Allow NULL integer
-
- * gnome-keyring.[ch]:
- Sync item creation
-
- * test.c:
- More tests
-
-2003-12-04 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring.[ch]:
- Add gnome_keyring_is_availible.
-
- * gnome-keyring-daemon-io.c (create_master_socket):
- Only use 6 X:es in socket name
-
-2003-12-03 Alexander Larsson <alexl@redhat.com>
-
- * TODO:
- Updated
-
- * gnome-keyring-daemon.c:
- Clean up acl setting
- Implement update_if_exists for create_item
- Order find results least specific first
-
- * gnome-keyring-proto.[ch]:
- Implement update_if_exists for create_item
-
- * gnome-keyring-utils.c: (gnome_keyring_found_list_free):
- implement
-
- * gnome-keyring.[ch]:
- Implement sync find ops
- Make valist ops don't ignore NULL/0 attributes
- Implement network password helpers
-
- * test.c:
- some more tests
-
-2003-12-01 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- * file-format.txt:
- * md5.[ch]:
- * sha1.[ch]:
- Switch from sha1 to md5 to get a right size key for AES.
-
- * gnome-keyring-daemon-file.c:
- md5 update
-
- * gnome-keyring-daemon.c:
- md5 update.
- append new items instead of prepending
-
- * TODO:
- Update
-
- * test.c:
- Fix up set default command name
-
-2003-11-29 Danilo Šegan <dsegan@gmx.net>
-
- * configure.in: Added "sr" and "sr@Latn" to ALL_LINGUAS.
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon.c:
- * gnome-keyring-proto.c:
- * gnome-keyring-proto.h:
- implement set_info and set_attributes
-
- * gnome-keyring.h:
- * gnome-keyring-utils.c:
- Add gnome_keyring_item_info_new
-
- * test.c:
- generic ok callback
- more tests
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * Makefile.am:
- Install header files and .pc file
-
- * configure.in:
- * gnome-keyring-1.0.pc.in:
- pkg-config file for gnome-keyring
-
- * gnome-keyring.h:
- add some comments about the unfinished part
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-daemon-file.c: (set_default_keyring):
- Handle setting to NULL.
-
- * gnome-keyring-daemon-io.c:
- (gnome_keyring_client_fixup_for_deleted),
- (gnome_keyring_client_state_machine):
- Clean up clients outstanding access requests when
- items/keyring are deleted
-
- * gnome-keyring-daemon.c:
- Clean up outstanding ask access requests when
- items/keyring are deleted.
- Fix up item/keyring destruction paths
- implement lock, lock_all & delete_item
-
- * gnome-keyring-daemon.h:
- New functions
-
- * gnome-keyring-proto.h:
- Remove unnecessary enum value
-
- * gnome-keyring.c: (gnome_keyring_item_delete):
- Fix opcode for delete_item
-
- * test.c:
- Make usable
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * .cvsignore:
- * Makefile.am:
- * test.c:
- Add cheesy test app
-
- * gnome-keyring-daemon-file.c:
- fix errno bugs
- New function set_default_keyring
- Read the default keyring on update_keyrings
-
- * gnome-keyring-daemon.c:
- Reset default_keyring to NULL when its destroyed
- implement set_default_keyring
- fix errno bugs
-
- * gnome-keyring-daemon.h:
- Export new stuff and clean up indention a bit
-
- * list-keyrings.c:
- Nicer output
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-utils.c (gnome_keyring_item_info_free):
- Don't crash if info is NULL
-
- * gnome-keyring-daemon.c:
- Implement gnome_keyring_ask_cancel
-
- * gnome-keyring-daemon-io.c (gnome_keyring_client_state_machine):
- Avoid crash on gnome_keyring_ask reentrancy
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * gnome-keyring-ask.c:
- Fix gettext include
-
-2003-11-28 Alexander Larsson <alexl@redhat.com>
-
- * COPYING.LIB:
- Add LGPL file
-
- * gnome-keyring-ask.c:
- Fix up gettext defines
-
- * gnome-keyring-ask.c:
- * gnome-keyring-daemon-file.c:
- * gnome-keyring-daemon-io.c:
- * gnome-keyring-daemon.c:
- * gnome-keyring-daemon.h:
- * gnome-keyring-private.h:
- * gnome-keyring-proto.c:
- * gnome-keyring-proto.h:
- * gnome-keyring-utils.c:
- * gnome-keyring.c:
- * gnome-keyring.h:
- * list-keyrings.c:
- Add GPL/LGPL headers.
- Library is LGPL, daemon and gui is GPL.
diff --git a/HACKING b/HACKING
deleted file mode 100644
index 8076c5ad..00000000
--- a/HACKING
+++ /dev/null
@@ -1,74 +0,0 @@
-
-HACKING GNOME KEYRING
-
-Patches should be submitted to bugzilla:
-http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-keyring
-
-Gnome Keyring is made up of several distinct parts working on concert with
-each other. These parts generally live in different directories:
-
-daemon
- The main daemon startup code and gnome-keyring password protocol operations.
-
-keyrings
- Code that manages the user's password keyrings
-
-library
- The gnome-keyring library for accessing passwords and secrets.
-
-pk
- General public key / certificate code, management of objects.
-
-pkcs11
- The PKCS#11 module, provider and headers.
-
-pkix
- Nitty gritty handling of various PKCS#?? standards, parsing, ASN.1 stuff.
-
-tests
- Test tools and unit tests.
-
-ui
- Prompting the user, asking for passwords.
-
-
---------------------------------------------------------------------------------
- USING 'LOCATIONS' INSTEAD OF FILE PATHS
-
-Gnome Keyring supports having keyrings on removable media. Because removable
-media can be mounted in different mount-points, and for other related reasons,
-what's called a 'location' is used instead of a file point.
-
-Locations are like paths relative to a base. For example certain locations
-might be relative to a home directory, and others might be relative to a USB
-drive.
-
-Location functionality:
-
- common/gkr-location.h
-
-Common functions:
-
- gkr_location_from_path ()
- gkr_location_from_child ()
- gkr_location_to_path ()
-
---------------------------------------------------------------------------------
- USE OF WORKER THREADS
-
-Gnome Keyring uses threads in a limited manner, as state machines, (ie: execution
-stacks). Only one thread runs at any given time, each thread hands off execution
-to another thread.
-
-The *only* use of threading and/or synchronization primitives should be in:
-
- common/gkr-async.c
-
-Worker threads are created by using gkr_async_worker_start(). Each worker needs
-to call gkr_async_yield() regularly, to give other threads a chance to run.
-
-If a thread needs perform a blocking syscall, or do something that takes a long
-time (like create a key) it can use the gkr_async_begin_concurrent() and
-gkr_async_end_concurrent() functions. While running 'concurrent' no global
-functions and/or data should be accessed.
-
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 54caf7c1..00000000
--- a/INSTALL
+++ /dev/null
@@ -1,229 +0,0 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
diff --git a/MAINTAINERS b/MAINTAINERS
deleted file mode 100644
index f30ce5a4..00000000
--- a/MAINTAINERS
+++ /dev/null
@@ -1,9 +0,0 @@
-Stef Walter
-E-mail: stef@memberwebs.com
-Userid: nnielsen
-
-Alex Larrson
-E-mail: alexl@redhat.com
-Userid: alexl
-
-
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 4ed71d9e..00000000
--- a/Makefile.am
+++ /dev/null
@@ -1,64 +0,0 @@
-if WITH_PAM
-PAM_DIR = pam
-else
-PAM_DIR =
-endif
-
-if WITH_SSH
-SSH_DIR = ssh
-else
-SSH_DIR =
-endif
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = \
- . \
- common \
- library \
- ui \
- keyrings \
- pkix \
- pk \
- $(SSH_DIR) \
- pkcs11 \
- daemon \
- data \
- po \
- reference \
- $(TESTS_DIR) \
- $(PAM_DIR)
-
-EXTRA_DIST = \
- intltool-extract.in \
- intltool-merge.in \
- intltool-update.in \
- keyring-intro.txt \
- HACKING
-
-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-tests
-
-DISTCLEANFILES = \
- intltool-extract \
- intltool-merge \
- intltool-update
-
-# Clean up any EXTRA_DIST we're distributing
-dist-hook:
- rm -rf `find $(distdir)/ -name .svn`
-
-distcheck-hook:
- @echo "RUNNING AUTOMATIC UNIT TESTS ---------------------------"
- @echo
- @echo
- $(MAKE) -C tests run-auto
- @echo
- @echo
- @echo "DONE AUTOMATIC UNIT TESTS ------------------------------"
-
-install-pam:
- @echo "WARNING: install-pam is no longer used, use the --with-pam-dir configure option instead"
diff --git a/NEWS b/NEWS
deleted file mode 100644
index 5ef7dba2..00000000
--- a/NEWS
+++ /dev/null
@@ -1,318 +0,0 @@
-Changes in version 2.22.2 are:
-* Streamline the importing of keys and make the proper prompts show up
- consistently. Better fixes for this to come in 2.24.x
-* Don't show 'location' field in most password prompts.
-* Return serial number of certificates properly to requesting programs.
-* Fix crash when receiving certain HAL events.
-* Build fixes [Brian Cameron, Matthias Drochner, Antoine Jacoutot]
-
-Changes in version 2.22.1 are:
-* Add SSH agent protocol 1 support.
-* Make 'ssh-add -D' lock any SSH private keys that gnome-keyring is
- automatically loading.
-* Reconnect to system DBus whenever the system bus restarts. [Sjoerd Simons]
-* Log to syslog even when running in the foreground [Tony Espy]
-* Add a configure option to disable building of the SSH agent.
-* Build fixes. [Alex Converse, Andrea Del Signore]
-
-Changes in version 2.22.0 are:
-* Build fix. [Jens Granseuer]
-
-Changes in version 2.21.92 are:
-* Sync up user's session environment with the daemon, so that
- things like X authentication, DBUS etc... work properly.
-* Shutdown socket connections properly, so things don't hang, when
- wrong versions of daemon/library are used.
-* Limit PKCS#12 parsing to a clearly defined subset of the format.
-* Decrypt PKCS#12 with empty passwords properly.
-* Build fixes.
-* Translation fixes.
-
-Changes in version 2.21.91 are:
-* Don't prompt for a password from the PAM module since
- gnome-keyring is not an authenticator. [Ray Strode]
-* Check that PKCS#11 socket connections come from same user.
-* Don't lock the entire gnome-keyring-ask process in memory.
- Just the password text. Works better when less non-pageable
- memory is available.
-* Basic serializing of certificates and keys.
-* Build fixes.
-* Translation fixes.
-
-Changes in version 2.21.90 are:
-* Fix problem where most keyrings were being treated as insecure
- from the point of view of storing passwords for keys or certificates.
-* Fix race condition that is causing deadlocks and freezes.
-
-Changes in version 2.21.5 are:
-* Proper support for creating and destroying objects through PKCS#11.
-* Support for setting PKCS#11 attributes.
-* Fix hanging of daemon under certain conditions.
-* Add gconf setting for determining which components of the daemon
- (such as SSH) are run at startup.
-* Better parsing of objects and prompting for passwords in PKCS#12 files.
-* Calculate trust and purpose/usage of certificates.
-* Mark certain key/certificate directories as special requiring certain
- special treatment (such as the CA root store, SSH keys etc...)
-* Add support for unencrypted keyrings which are used when the user
- specifies a blank password.
-* Fix crasher [Jeff Cai]
-* Build fixes.
-
-Changes in version 2.21.4 are:
-* x86_64 memory alignment fixes
-* Other build and install fixes
-* Solaris build fixes [Halton Huo]
-* Automatically activate keyring daemon via DBus if it is not already
- running. [Tom Parker]
-
-Changes in version 2.21.3.2 are:
-* x86_64 build fixes
-* Build and install fixes
-* Fix problems with assertions when not in debug mode.
-* Fix some crashers
-* Better ASN.1 and PKCS#11 date parsing and handling
-* Fix return results from C_GetAttributeValue
-* Lookup certificates related to keys properly.
-
-Changes in version 2.21.3.1 are:
-* Build fixes
-* Use SHA1 instead of MD5 where possible.
-* Install PKCS#11 module to a better prefix
-
-Changes in version 2.21.3 are:
-* Added basic X.509 certificate and key store
-* PKCS#11 module for accessing certificates and keys
-* Now includes an SSH agent
-* PAM module now works with SELinux [Alexander Larrson]
-* Add a simpler API for accessing and storing passwords.
-
-Changes in version 2.20.3 are:
-* Use correct environment to startup gnome-keyring-daemon from PAM.
-* Fix crash when comparing item attributes. [Sam Morris]
-* Fix crash on shutdown. [Jeff Cai]
-* Build fix for OpenBSD [Martynas Venckus]
-
-Changes in version 2.20.2 are:
-* Build fixes for systems that require GNU_SOURCE to be defined. [Christopher Taylor]
-* Builds with the latest DBus [Owen Taylor]
-* Build fix for OpenBSD [Jasper Lievisse Adriaanse]
-* Don't print out a warning message in applications using libgnome-keyring when
- non-pageable memory cannot be allocated.
-
-Changes in version 2.20.1 are:
-* Link pam module properly with libpam [Sebastian Dröge]
-* Remove 'install-pam' make target [Rémi Cardona]
-* Return a 'not found' result when no results are returned
- from a find operation.
-* Don't remove 'default' file on exit. [Alex Larrson]
-* Recognize newly created keyrings properly. [Darren Kenny]
-
-Changes in version 2.20 are:
-* Build fixes [Halton Huo]
-* Translation fixes [Claude Paroz]
-
-Changes in version 2.19.91 are:
-* Builds with newer versions of DBus [Theppitak Karoonboonyanan]
-* In the PAM module we now support starting gnome-keyring-daemon when
- the user's session actually starts, rather than during password validation.
- This makes us more solid and sane with GDM and well behaved PAM using
- applications. [Chris Rivera]
-* In the PAM module check that the socket is owned by the same user, before
- sending the login password there.
-* Don't read from /dev/random when not needed. This makes startup faster
- in many cases, as it won't block for entropy.
-* Get around more optimizations that cancel out wiping of strings in
- memory before freeing.
-* Now builds on FreeBSD [Joe Marcus Clarke]
-
-Changes in version 2.19.90 are:
-* Fix problem where keyrings are created in wrong directory [Nathaniel McCallum]
-* Incorporated security fixes from Novell
-* Fix crashers when the ask dialog sends back bad data.
-* Now builds on Solaris [Damien Carbery]
-* Configure PAM module directory better [Matthias Clasen]
-* Fix memory leaks
-
-Changes in version 2.19.6.1 are:
-* Fix uninitialized variable in 'get_item_info' operation
-* Better installing of PAM module on Fedora. [Matthias Clasen]
-* Build fixes [Jens Granseuer, Claudio Saavedra]
-
-Changes in version 2.19.6 are:
-* Grab the keyboard when prompting for passwords, and always put the prompt
- window above other windows.
-* Now supports use of keyrings on removable drives.
-* PAM module to automatically unlock keyrings on login, or unlocking
-* Simplify daemon code (now uses cooperative threading) and get it ready for
- other PKCS#11, SSH and other stuff running in same process.
-
-Changes in version 2.19.5 are:
-* Allow passing NULL as a password to gnome_keyring_unlock()
-* Added strerror() like functionality for GnomeKeyringResult
-* Added support for async version of gnome_keyring_item_grant_access_rights_sync()
-* Handle unix signals properly, quit gracefully.
-* Fix memory leaks [Alexander Sack]
-* Make unit tests automatic when building a distribution tarball
-* Fix prompt messages [Jürg Billeter]
-* Fix problems prompting for access to items when the keyring is locked.
-* Non-pageable memory degrades gracefully on Solaris, FreeBSD
-* Build fixes [Theppitak Karoonboonyanan, Christian Kirbach]
-* API Documentation
-
-Changes in version 2.19.4.1 are:
-* Build fix for unit tests
-
-Changes in version 2.19.4 are:
-* Fixed problem where zero find results returned 'denied'.
-* Fixed ugly password prompt for making a new keyring.
-* Consistent use of NULL in the API to represent the default keyring.
-* Use non-pageable memory for secrets and passwords.
-* Log warning and error messages to syslog when running as a daemon.
-* Added unit tests for the gnome-keyring API.
-* Refactored and reorganized the code.
-
-Changes in version 2.19.2 are:
-* Sync up version number with GNOME release schedule
-* Use libgcrypt instead of hand-rolled encryption algorithms.
-* Internationalization fixes [Elijah Newren]
-* Solaris build fixes.
-
-Changes in version 0.8 are:
-* Translations
-
-Changes in version 0.7.92 are:
-* Fix build by including sys/types.h
-* In gnome_keyring_free() don't crash on NULL parameter.
-
-Changes in version 0.7.91 are:
-* Add method for library to discover daemon via DBus. Adds soft
- DBus dependency.
-* Fixes for building on kFreeBSD.
-
-Changes in version 0.7.3 are:
-* Fix endless loop when creating a keyring and a file by that name
- already exists.
-* Fix crasher when deleting session keyring.
-* Fix crasher when doing find operation with NULL attribute string.
-* Sync files to disk after writing to keyring.
-
-Changes in version 0.7.2 are:
-* Don't have multiple password dialogs presented for the same
- keyring
-
-Changes in version 0.7.1 are:
-* Added GNOME_KEYRING_ITEM_APPLICATION_SECRET which allows an item
- to be for a single application only with strict access controls.
-* New function gnome_keyring_item_get_info_full(_sync) which allow
- retrieval of item meta data without the secret, thus not incurring
- an ACL prompt.
-* Translation updates
-
-Changes in version 0.6.0 are:
-* NetBSD fixes
-* Crash fix
-* Typo fix
-* Translations
-
-Changes in version 0.5.2 are:
-* Translation updates
-* Better title in docs
-* Fixed crashes
-* New function: gnome_keyring_item_grant_access_rights_sync
-
-Changes in version 0.5.1 are:
-* Support changing password of a keyring
-* Create ~/.gnome2 if needed
-* Save keyring when an ACL is added
-* Add password strength meter
-* Small bugfixes
-
-Changes in version 0.4.9 are:
-* Fix return value for some sync calls
-* Translation updates
-
-Changes in version 0.4.8 are:
-* Fix crash when asking for password
-* Translation updates
-
-Changes in version 0.4.7 are:
-* Fix --disable-nls
-* Translation updates
-
-Changes in version 0.4.6 are:
-* Confirm password when selecting new password
-
-Changes in version 0.4.5 are:
-* Fix a crash in some sync functions.
-
-Changes in version 0.4.4 are:
-* Translation updates
-* warning fixes
-* require gtk 2.6
-
-Changes in version 0.4.3 are:
-* Translation updates
-* Fix bug in acl functions
-* implement gnome_keyring_set_info
-* add sync function for all operations
-* fix leaks
-
-Changes in version 0.4.2 are:
-* AIX portability fixes
-* Translation updates
-
-Changes in version 0.4.1 are:
-* Support for slaving lifecycle to a file descriptor
-* Translation updates
-
-Changes in version 0.4.0 are:
-* Build fix on some systems
-* Translation updates
-
-Changes in version 0.3.3 are:
-* Translation updates
-
-Changes in version 0.3.2 are:
-* New API functions for getting/setting ACL
-* Implemented delete keyring operation
-
-Changes in version 0.3.1 are:
-* New and updated translations.
-* New introduction document
-* unlocking the NULL keyring unlocks the default keyring
-
-Changes in version 0.2.1 are:
-* New and updated translations.
-
-Changes in version 0.2.0 are:
-* New and updated translations.
-
-Changes in version 0.1.91 are:
-* New translations
-
-Changes in version 0.1.90 are:
-* New translations
-* uninstalled pkg-config file
-
-Changes in version 0.1.4 are:
-* New translations
-* put gnome-keyring-ask in libexec
-
-Changes in version 0.1.3 are:
-* Fixed leaks
-* Portability fixes
-* Don't split strings for translations
-
-Changes in version 0.1.2 are:
-* Spelling fix in API
-* require latest gtk/glib
-* use g_get_tmp_dir instead of hardcoding /tmp
-* More translations
-
-Changes in version 0.1.2 are:
-* Slave lifecycle to session
-* More translations
-* Nicer user interface
-* FreeBSD fixes
-* Solaris fixes
diff --git a/README b/README
deleted file mode 100644
index c38c5cbc..00000000
--- a/README
+++ /dev/null
@@ -1,10 +0,0 @@
-gnome-keyring is a program that keep password and other secrets for
-users. It is run as a damon in the session, similar to ssh-agent, and
-other applications locate it via an environment variable or a dbus.
-
-The program can manage several keyrings, each with its own master
-password, and there is also a session keyring which is never stored to
-disk, but forgotten when the session ends.
-
-The library libgnome-keyring is used by applications to integrate with
-the gnome keyring system.
diff --git a/TODO b/TODO
deleted file mode 100644
index b132aab9..00000000
--- a/TODO
+++ /dev/null
@@ -1,18 +0,0 @@
-file format fix:
- hash whole attibname + value
- don't store hash to verify decrypt. Instead check attribute hashes.
-
-set daemon chmod a-r or similar (pctrl)
-
-keyring acls?
-
-keep track of denied_keyrings in ask to avoid asking multiple times
-
-make ask UI nicer
-
-verify acls work
-
-missing ops:
- delete keyring
- set keyring info
-
diff --git a/autogen.sh b/autogen.sh
deleted file mode 100755
index 39df1408..00000000
--- a/autogen.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-# Run this to generate all the initial makefiles, etc.
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-PKG_NAME="gnome-keyring"
-REQUIRED_AUTOMAKE_VERSION=1.6
-
-(test -f $srcdir/configure.in \
- && test -f $srcdir/library/gnome-keyring.h \
- && test -f $srcdir/library/gnome-keyring.c) || {
- echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
- echo " top-level $PKG_NAME directory"
- exit 1
-}
-
-which gnome-autogen.sh || {
- echo "You need to install gnome-common from the GNOME CVS"
- exit 1
-}
-
-USE_GNOME2_MACROS=1 . gnome-autogen.sh
diff --git a/common/Makefile.am b/common/Makefile.am
deleted file mode 100644
index 5046fabc..00000000
--- a/common/Makefile.am
+++ /dev/null
@@ -1,55 +0,0 @@
-
-noinst_LTLIBRARIES = \
- libgkr-common.la \
- libgkr-module-common.la
-
-INCLUDES = \
- -I$(top_srcdir)
- -I$(top_builddir)
-
-# --------------------------------------------------------------------
-# COMMON STUFF COMPILED INTO DAEMON COMPONENTS
-
-libgkr_common_la_CFLAGS = \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- $(DAEMON_CFLAGS) \
- $(GTK_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libgkr_common_la_SOURCES = \
- gkr-async.c gkr-async.h \
- gkr-buffer.c gkr-buffer.h \
- gkr-cleanup.c gkr-cleanup.h \
- gkr-crypto.c gkr-crypto.h \
- gkr-daemon-util.c gkr-daemon-util.h \
- gkr-dbus.c gkr-dbus.h \
- gkr-location.c gkr-location.h \
- gkr-location-watch.c gkr-location-watch.h \
- gkr-secure-memory.c gkr-secure-memory.h \
- gkr-id.c gkr-id.h \
- gkr-unix-credentials.c gkr-unix-credentials.h \
- gkr-unix-signal.c gkr-unix-signal.h \
- gkr-wakeup.c gkr-wakeup.h
-
-libgkr_common_la_LIBADD = \
- $(GTHREAD_LIBS) \
- $(GLIB_LIBS)
-
-# --------------------------------------------------------------------
-# COMMON STUFF COMPILED INTO LOADABLE MODULES
-
-libgkr_module_common_la_SOURCES = \
- gkr-buffer.c gkr-buffer.h \
- gkr-secure-memory.c gkr-secure-memory.h \
- gkr-unix-credentials.c gkr-unix-credentials.h
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
diff --git a/common/gkr-async.c b/common/gkr-async.c
deleted file mode 100644
index b3a0edf8..00000000
--- a/common/gkr-async.c
+++ /dev/null
@@ -1,631 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-async.c - some daemon async functionality
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-
-#include "gkr-async.h"
-#include "gkr-wakeup.h"
-
-#include <glib.h>
-
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-
-#define DEBUG_LOCKS 0
-
-/*
- * See comments on async_poll_func() on the order of the various
- * gets and sets of waiting_on_* flags.
- */
-#if DEBUG_LOCKS
-#define DO_LOCK(mtx) G_STMT_START { \
- g_printerr ("%s LOCK %s\n", __func__, G_STRINGIFY(mtx)); \
- g_atomic_int_inc (&waiting_on_lock); \
- if (g_atomic_int_get (&waiting_on_poll)) gkr_wakeup_now (); \
- g_mutex_lock (mtx); \
- g_atomic_int_exchange_and_add (&waiting_on_lock, -1); \
- } G_STMT_END
-#define DO_UNLOCK(mtx) G_STMT_START { \
- g_printerr ("%s UNLOCK %s\n", __func__, G_STRINGIFY(mtx)); \
- g_mutex_unlock (mtx); \
- } G_STMT_END
-#else
-#define DO_LOCK(mtx) G_STMT_START { \
- g_atomic_int_inc (&waiting_on_lock); \
- if (g_atomic_int_get (&waiting_on_poll)) gkr_wakeup_now (); \
- g_mutex_lock (mtx); \
- g_atomic_int_exchange_and_add (&waiting_on_lock, -1); \
- } G_STMT_END
-#define DO_UNLOCK(mtx) \
- g_mutex_unlock (mtx)
-#endif
-
-/*
- * Private data for the async calls to be used on a worker thread, for making
- * calls to the main thread.
- *
- * This will always be null for the main thread.
- */
-GStaticPrivate thread_private = G_STATIC_PRIVATE_INIT;
-
-#define ASSERT_IS_MAIN() \
- g_assert (g_static_private_get (&thread_private) == NULL)
-
-#define ASSERT_IS_WORKER() \
- g_assert (g_static_private_get (&thread_private) != NULL)
-
-
-static GMainLoop *main_loop = NULL; /* The main loop we're operating on */
-static GMutex *async_mutex = NULL; /* The mutex which is used for cooperative multitasking */
-static GPollFunc orig_poll_func = NULL; /* The system poll function, which we wrap */
-static gint async_source_id = 0; /* Our GSource id for the main loop */
-static GQueue *done_queue = NULL; /* The queue of completed worker threads */
-static GHashTable *running_workers = NULL; /* A set of running worker threads */
-static gint waiting_on_lock = 0; /* Number of threads waiting on lock */
-static gint waiting_on_poll = 0; /* Whether we're waiting on the poll or not */
-
-static void cleanup_done_threads (void);
-
-/* -----------------------------------------------------------------------------
- * ASYNC MAINLOOP FUNCTIONS
- */
-
-static gint
-async_poll_func (GPollFD *ufds, guint nfsd, gint timeout)
-{
- gint ret;
-
- g_assert (orig_poll_func);
-
- /*
- * These two atomic variables are interlocked in the
- * opposite order from those in DO_LOCK which prevents
- * race conditions in the if statements.
- */
- g_atomic_int_set (&waiting_on_poll, 1);
- if (g_atomic_int_get (&waiting_on_lock))
- timeout = 0;
-
- ret = (orig_poll_func) (ufds, nfsd, timeout);
-
- g_atomic_int_set (&waiting_on_poll, 0);
-
- if (done_queue && !g_queue_is_empty (done_queue))
- cleanup_done_threads ();
-
- return ret;
-}
-
-static gboolean
-async_source_prepare(GSource* source, gint *timeout)
-{
- gboolean have = g_atomic_int_get (&waiting_on_lock) > 0;
- *timeout = have ? 0 : -1;
- return have ? TRUE : FALSE;
-}
-
-static gboolean
-async_source_check(GSource* source)
-{
- return g_atomic_int_get (&waiting_on_lock) > 0;
-}
-
-static gboolean
-async_source_dispatch(GSource* source, GSourceFunc callback, gpointer user_data)
-{
- /* Let a worker run */
- gkr_wakeup_drain ();
- DO_UNLOCK (async_mutex);
- g_thread_yield ();
- DO_LOCK (async_mutex);
- return TRUE;
-}
-
-static void
-async_source_finalize(GSource* source)
-{
-
-}
-
-static GSourceFuncs async_source_functions = {
- async_source_prepare,
- async_source_check,
- async_source_dispatch,
- async_source_finalize
-};
-
-void
-gkr_async_workers_init (GMainLoop *mainloop)
-{
- GMainContext *ctx;
- GSource *src;
-
- g_assert (mainloop);
-
- async_mutex = g_mutex_new ();
-
- g_assert (!main_loop);
- main_loop = mainloop;
- g_main_loop_ref (main_loop);
- ctx = g_main_loop_get_context (main_loop);
-
- /* Add our idle handler which processes other tasks */
- g_assert(!async_source_id);
- src = g_source_new (&async_source_functions, sizeof (GSource));
- async_source_id = g_source_attach (src, ctx);
- g_source_unref (src);
-
- /* Swap in our poll func */
- orig_poll_func = g_main_context_get_poll_func (ctx);
- g_assert (orig_poll_func);
- g_main_context_set_poll_func (ctx, async_poll_func);
-
- gkr_wakeup_register (ctx);
-
- /*
- * The mutex gets locked each time the main loop is waiting
- * for input. See lock_step_poll_func()
- */
- DO_LOCK (async_mutex);
-}
-
-void
-gkr_async_workers_uninit (void)
-{
- GMainContext *ctx;
- GSource* src;
-
- gkr_async_workers_stop_all ();
-
- DO_UNLOCK (async_mutex);
-
- gkr_wakeup_unregister ();
- ctx = g_main_loop_get_context (main_loop);
-
- /* Take out the source */
- g_assert (async_source_id);
- src = g_main_context_find_source_by_id(ctx, async_source_id);
- g_assert (src);
- g_source_destroy (src);
- async_source_id = 0;
-
- /* Swap back in original poll func */
- g_assert (orig_poll_func);
- g_main_context_set_poll_func (ctx, orig_poll_func);
-
- if (main_loop) {
- g_main_loop_unref (main_loop);
- main_loop = NULL;
- }
-
- if (async_mutex) {
- g_mutex_free (async_mutex);
- async_mutex = NULL;
- }
-}
-
-/* -----------------------------------------------------------------------------
- * ASYNC WORKER FUNCTIONS
- */
-
-
-typedef struct _GkrCancelCallback {
- GDestroyNotify cancel_func;
- gpointer user_data;
-} GkrCancelCallback;
-
-struct _GkrAsyncWorker {
- GThread *thread;
-
- GThreadFunc func;
- GkrAsyncWorkerCallback callback;
- GQueue *cancel_funcs;
-
- /* The current status */
- gint cancelled;
- gint stopped;
-
- /* Arguments for callbacks and worker calls */
- gpointer user_data;
-};
-
-static gpointer
-async_worker_thread (gpointer data)
-{
- GkrAsyncWorker *worker = (GkrAsyncWorker*)data;
- gpointer result;
-
- g_assert (worker);
- g_assert (worker->func);
-
- /* The marks this as a worker thread, setup async calls to main thread */
- g_assert (g_static_private_get (&thread_private) == NULL);
- g_static_private_set (&thread_private, worker, NULL);
-
- ASSERT_IS_WORKER ();
-
- /*
- * Call the actual thread function. This mutex is unlocked by workers
- * when they yield, or by the main loop when it is waiting for input.
- */
- DO_LOCK (async_mutex);
-
- result = (worker->func) (worker->user_data);
-
- /* We're all done yay, let main thread know about it */
- g_atomic_int_inc (&worker->stopped);
-
- g_assert (done_queue);
- g_queue_push_tail (done_queue, worker);
-
- DO_UNLOCK (async_mutex);
-
- g_static_private_set (&thread_private, NULL, NULL);
-
- gkr_wakeup_now ();
-
- g_thread_exit (result);
- return result;
-}
-
-static gboolean
-cleanup_done_thread (gpointer message, gpointer data)
-{
- GkrAsyncWorker *worker = (GkrAsyncWorker*)message;
- GkrCancelCallback *cb;
- gpointer result;
-
- ASSERT_IS_MAIN ();
-
- g_assert (g_atomic_int_get (&worker->stopped));
-
- /* This shouldn't block, because worker->stopped is set */
- g_assert (worker->thread);
- result = g_thread_join (worker->thread);
-
- if (worker->callback)
- (worker->callback) (worker, result, worker->user_data);
-
- /* Free all the cancel funcs */
- for (;;) {
- cb = g_queue_pop_tail (worker->cancel_funcs);
- if (!cb)
- break;
- g_slice_free (GkrCancelCallback, cb);
- }
- g_queue_free (worker->cancel_funcs);
-
- g_hash_table_remove (running_workers, worker);
- g_free (worker);
-
- /* Cleanup all related stuff */
- if (!g_hash_table_size (running_workers)) {
- g_queue_free (done_queue);
- done_queue = NULL;
-
- g_hash_table_destroy (running_workers);
- running_workers = NULL;
-
- g_assert (main_loop);
- return FALSE;
- }
-
- return TRUE;
-}
-
-static void
-cleanup_done_threads (void)
-{
- gpointer message;
-
- while (done_queue && !g_queue_is_empty (done_queue))
- {
- message = g_queue_pop_head (done_queue);
- g_assert (message);
-
- cleanup_done_thread (message, NULL);
- }
-}
-
-GkrAsyncWorker*
-gkr_async_worker_start (GThreadFunc func, GkrAsyncWorkerCallback callback,
- gpointer user_data)
-{
- GkrAsyncWorker *worker;
- GError *err = NULL;
-
- ASSERT_IS_MAIN ();
-
- if (!done_queue) {
- g_assert (main_loop);
-
- done_queue = g_queue_new ();
- g_assert (!running_workers);
- running_workers = g_hash_table_new (g_direct_hash, g_direct_equal);
- }
-
- worker = g_new0 (GkrAsyncWorker, 1);
- worker->func = func;
- worker->callback = callback;
- worker->cancel_funcs = g_queue_new ();
- worker->user_data = user_data;
- worker->cancelled = 0;
- worker->stopped = 0;
-
- worker->thread = g_thread_create (async_worker_thread, worker, TRUE, &err);
- if (!worker->thread) {
- g_warning ("couldn't create new worker thread: %s", err->message);
- g_error_free (err);
- g_free (worker);
- return NULL;
- }
-
- g_hash_table_replace (running_workers, worker, worker);
- return worker;
-}
-
-void
-gkr_async_worker_cancel (GkrAsyncWorker *worker)
-{
- GkrCancelCallback *cb;
-
- g_assert (gkr_async_worker_is_valid (worker));
- g_atomic_int_inc (&worker->cancelled);
-
- for (;;) {
- cb = g_queue_pop_tail (worker->cancel_funcs);
- if (!cb)
- break;
- (cb->cancel_func) (cb->user_data);
- g_slice_free (GkrCancelCallback, cb);
- }
-}
-
-void
-gkr_async_worker_stop (GkrAsyncWorker *worker)
-{
- g_assert (gkr_async_worker_is_valid (worker));
- g_assert (worker);
- ASSERT_IS_MAIN ();
-
- gkr_async_worker_cancel (worker);
-
- while (!g_atomic_int_get (&worker->stopped)) {
- g_assert (running_workers && g_hash_table_size (running_workers) > 0);
- cleanup_done_threads ();
- gkr_async_yield ();
- }
-
- cleanup_done_threads ();
-}
-
-gboolean
-gkr_async_worker_is_valid (GkrAsyncWorker *worker)
-{
- ASSERT_IS_MAIN ();
-
- return worker && running_workers &&
- g_hash_table_lookup (running_workers, worker);
-}
-
-guint
-gkr_async_workers_get_n (void)
-{
- ASSERT_IS_MAIN ();
-
- if (!running_workers)
- return 0;
- return g_hash_table_size (running_workers);
-}
-
-static void
-cancel_each_worker (gpointer key, gpointer value, gpointer data)
-{
- gkr_async_worker_cancel ((GkrAsyncWorker*)key);
-}
-
-void
-gkr_async_workers_stop_all (void)
-{
- ASSERT_IS_MAIN ();
-
- if (!running_workers)
- return;
-
- g_assert (done_queue);
-
- g_hash_table_foreach (running_workers, cancel_each_worker, NULL);
-
- while (running_workers) {
- g_assert (g_hash_table_size (running_workers) > 0);
- cleanup_done_threads ();
- gkr_async_yield ();
- }
-}
-
-/* -----------------------------------------------------------------------------
- * ASYNC FUNCTIONS FOR ANY THREAD
- */
-
-gboolean
-gkr_async_yield (void)
-{
- GkrAsyncWorker *worker;
-
- g_assert (async_mutex);
-
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
- if (worker && g_atomic_int_get (&worker->cancelled))
- return FALSE;
-
- /* Let another worker or the main loop run */
- DO_UNLOCK (async_mutex);
- g_thread_yield ();
- DO_LOCK (async_mutex);
-
- if (worker && g_atomic_int_get (&worker->cancelled))
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_async_is_stopping (void)
-{
- GkrAsyncWorker *worker;
-
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
- if (worker && g_atomic_int_get (&worker->cancelled))
- return TRUE;
-
- return FALSE;
-}
-
-void
-gkr_async_begin_concurrent (void)
-{
- g_assert (async_mutex);
-
- /* Let another worker or the main loop run */
- DO_UNLOCK (async_mutex);
-}
-
-void
-gkr_async_end_concurrent (void)
-{
- g_assert (async_mutex);
-
- /* Make sure only one thread is running */
- DO_LOCK (async_mutex);
-}
-
-void
-gkr_async_register_cancel (GDestroyNotify cancel, gpointer data)
-{
- GkrCancelCallback *cb;
- GkrAsyncWorker *worker;
-
- g_assert (cancel);
-
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
-
- /* We don't support cancellation funcs for main thread */
- if (!worker)
- return;
-
- cb = g_slice_new (GkrCancelCallback);
- cb->cancel_func = cancel;
- cb->user_data = data;
-
- g_queue_push_tail (worker->cancel_funcs, cb);
-}
-
-static gint
-match_cancel_func (gconstpointer a, gconstpointer b)
-{
- return memcmp (a, b, sizeof (GkrCancelCallback));
-}
-
-void
-gkr_async_unregister_cancel (GDestroyNotify cancel, gpointer data)
-{
- GkrCancelCallback match;
- GkrAsyncWorker *worker;
- GList *l;
-
- g_assert (cancel);
-
- worker = (GkrAsyncWorker*)g_static_private_get (&thread_private);
-
- /* We don't support cancellation funcs for main thread */
- if (!worker)
- return;
-
- match.cancel_func = cancel;
- match.user_data = data;
-
- l = g_queue_find_custom (worker->cancel_funcs, &match, match_cancel_func);
- if (l) {
- g_slice_free (GkrCancelCallback, l->data);
- g_queue_delete_link (worker->cancel_funcs, l);
- }
-}
-
-/* -----------------------------------------------------------------------------
- * ASYNC WAITS
- */
-
-GkrAsyncWait*
-gkr_async_wait_new (void)
-{
- return (GkrAsyncWait*)g_cond_new ();
-}
-
-void
-gkr_async_wait_free (GkrAsyncWait *wait)
-{
- if (!wait)
- return;
- g_cond_free ((GCond*)wait);
-}
-
-void
-gkr_async_wait (GkrAsyncWait *wait)
-{
- g_assert (wait);
- g_cond_wait ((GCond*)wait, async_mutex);
-}
-
-void
-gkr_async_notify (GkrAsyncWait *wait)
-{
- g_assert (wait);
- g_cond_signal ((GCond*)wait);
-}
-
-void
-gkr_async_usleep (gulong microseconds)
-{
- g_assert (async_mutex);
-
- /* Let another worker or the main loop run */
- DO_UNLOCK (async_mutex);
-
- g_usleep (G_USEC_PER_SEC);
-
- DO_LOCK (async_mutex);
-}
-
-void
-gkr_async_sleep (glong seconds)
-{
- g_assert (async_mutex);
-
- /* Let another worker or the main loop run */
- DO_UNLOCK (async_mutex);
-
- g_usleep (G_USEC_PER_SEC * seconds);
-
- DO_LOCK (async_mutex);
-}
diff --git a/common/gkr-async.h b/common/gkr-async.h
deleted file mode 100644
index 2648b10b..00000000
--- a/common/gkr-async.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-async.h - some daemon async functionality
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#ifndef __GKR_ASYNC_H__
-#define __GKR_ASYNC_H__
-
-#include <glib.h>
-
-/* -----------------------------------------------------------------------------
- * ASYNC WAIT CONDITIONS
- */
-
-struct _GkrAsyncWait;
-typedef struct _GkrAsyncWait GkrAsyncWait;
-
-/*
- * Create a new wait condition
- */
-GkrAsyncWait* gkr_async_wait_new (void);
-
-/*
- * Free a wait condition
- */
-void gkr_async_wait_free (GkrAsyncWait *wait);
-
-/*
- * Wait on a condition, this should be done in a loop, as with GCond
- */
-void gkr_async_wait (GkrAsyncWait *wait);
-
-/*
- * Notify that a condition has been satisfied
- */
-void gkr_async_notify (GkrAsyncWait *wait);
-
-/* -----------------------------------------------------------------------------
- * GENERAL ASYNC CALLS
- */
-
-/*
- * Yield the current thread (main thread or worker). Returns FALSE
- * if the current thread is supposed to stop.
- */
-gboolean gkr_async_yield (void);
-
-/*
- * Enable concurrent execution of the current thread in the process
- */
-void gkr_async_begin_concurrent (void);
-
-/*
- * Put current thread back into cooperative execution
- */
-void gkr_async_end_concurrent (void);
-
-/*
- * See if current thread is supposed to stop
- */
-gboolean gkr_async_is_stopping (void);
-
-/*
- * Register a cancellation function which is called when the current
- * thread is supposed to stop. This is often used to close a socket
- * or satisfy some other condition that the thread is blocking on.
- *
- * The GDestroyNotify function is run from an arbitary thread.
- */
-void gkr_async_register_cancel (GDestroyNotify cancel, gpointer data);
-
-/*
- * Unregister a cancellation function.
- */
-void gkr_async_unregister_cancel (GDestroyNotify cancel, gpointer data);
-
-/*
- * The current thread should yield and sleep.
- */
-void gkr_async_usleep (gulong microseconds);
-
-/*
- * The current thread should yield and sleep.
- */
-void gkr_async_sleep (glong seconds);
-
-/* -----------------------------------------------------------------------------
- * WORKER THREADS
- */
-
-struct _GkrAsyncWorker;
-typedef struct _GkrAsyncWorker GkrAsyncWorker;
-
-typedef void (*GkrAsyncWorkerCallback) (GkrAsyncWorker *worker, gpointer result, gpointer user_data);
-
-/*
- * Called before using any async functionality or workers.
- */
-void gkr_async_workers_init (GMainLoop *mainloop);
-
-/*
- * Called at end of application.
- */
-void gkr_async_workers_uninit (void);
-
-/*
- * Stop all running workers and wait for them to finish.
- */
-void gkr_async_workers_stop_all (void);
-
-/*
- * Get number of worker threads.
- */
-guint gkr_async_workers_get_n (void);
-
-/*
- * Start a new worker thread. callback is run when the worker
- * ends, whether cancelled or not. The returned pointer is
- * only valid while worker is running.
- */
-GkrAsyncWorker* gkr_async_worker_start (GThreadFunc worker,
- GkrAsyncWorkerCallback callback,
- gpointer user_data);
-
-/*
- * Send a notification to a worker thread to stop.
- */
-void gkr_async_worker_cancel (GkrAsyncWorker *worker);
-
-/*
- * Send a notification to a worker thread to stop, and wait for
- * it to finish.
- */
-void gkr_async_worker_stop (GkrAsyncWorker *worker);
-
-/*
- * Check if a given worker pointer is still valid.
- */
-gboolean gkr_async_worker_is_valid (GkrAsyncWorker *worker);
-
-#endif /* __GKR_ASYNC_H__ */
diff --git a/common/gkr-buffer.c b/common/gkr-buffer.c
deleted file mode 100644
index 4c0257e6..00000000
--- a/common/gkr-buffer.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-buffer.c - helper code for the keyring daemon protocol
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-#include "config.h"
-
-#include <string.h>
-#include <stdarg.h>
-
-#include "gkr-buffer.h"
-
-#define DEFAULT_ALLOCATOR ((GkrBufferAllocator)realloc)
-
-int
-gkr_buffer_init (GkrBuffer *buffer, size_t reserve)
-{
- return gkr_buffer_init_full (buffer, reserve, NULL);
-}
-
-int
-gkr_buffer_init_full (GkrBuffer *buffer, size_t reserve, GkrBufferAllocator allocator)
-{
- memset (buffer, 0, sizeof (*buffer));
-
- if (!allocator)
- allocator = DEFAULT_ALLOCATOR;
- if (reserve == 0)
- reserve = 64;
-
- buffer->buf = (allocator) (NULL, reserve);
- if (!buffer->buf) {
- buffer->failures++;
- return 0;
- }
-
- buffer->len = 0;
- buffer->allocated_len = reserve;
- buffer->failures = 0;
- buffer->allocator = allocator;
-
- return 1;
-}
-
-void
-gkr_buffer_init_static (GkrBuffer* buffer, unsigned char *buf, size_t len)
-{
- memset (buffer, 0, sizeof (*buffer));
-
- buffer->buf = buf;
- buffer->len = len;
- buffer->allocated_len = len;
- buffer->failures = 0;
-
- /* A null allocator, and the buffer can't change in size */
- buffer->allocator = NULL;
-}
-
-void
-gkr_buffer_init_allocated (GkrBuffer *buffer, unsigned char *buf, size_t len,
- GkrBufferAllocator allocator)
-{
- memset (buffer, 0, sizeof (*buffer));
-
- if (!allocator)
- allocator = DEFAULT_ALLOCATOR;
-
- buffer->buf = buf;
- buffer->len = len;
- buffer->allocated_len = len;
- buffer->failures = 0;
- buffer->allocator = allocator;
-}
-
-void
-gkr_buffer_reset (GkrBuffer *buffer)
-{
- memset (buffer->buf, 0, buffer->allocated_len);
- buffer->len = 0;
- buffer->failures = 0;
-}
-
-void
-gkr_buffer_uninit (GkrBuffer *buffer)
-{
- if (!buffer)
- return;
-
- /*
- * Free the memory block using allocator. If no allocator,
- * then this memory is ownerd elsewhere and not to be freed.
- */
- if (buffer->buf && buffer->allocator)
- (buffer->allocator) (buffer->buf, 0);
-
- memset (buffer, 0, sizeof (*buffer));
-}
-
-int
-gkr_buffer_set_allocator (GkrBuffer *buffer, GkrBufferAllocator allocator)
-{
- unsigned char *buf;
-
- if (!allocator)
- allocator = DEFAULT_ALLOCATOR;
- if (buffer->allocator == allocator)
- return 1;
-
- /* Reallocate memory block using new allocator */
- buf = (allocator) (NULL, buffer->allocated_len);
- if (!buf)
- return 0;
-
- /* Copy stuff and free old memory */
- memcpy (buf, buffer->buf, buffer->allocated_len);
-
- /* If old wasn't static, then free it */
- if (buffer->allocator)
- (buffer->allocator) (buffer->buf, 0);
-
- buffer->buf = buf;
- buffer->allocator = allocator;
-
- return 1;
-}
-
-int
-gkr_buffer_equal (GkrBuffer *b1, GkrBuffer *b2)
-{
- if (b1->len != b2->len)
- return 0;
- return memcmp (b1->buf, b2->buf, b1->len) == 0;
-}
-
-int
-gkr_buffer_reserve (GkrBuffer *buffer, size_t len)
-{
- unsigned char *newbuf;
- size_t newlen;
-
- if (len < buffer->allocated_len)
- return 1;
-
- /* Calculate a new length, minimize number of buffer allocations */
- newlen = buffer->allocated_len * 2;
- if (len > newlen)
- newlen += len;
-
- /* Memory owned elsewhere can't be reallocated */
- if (!buffer->allocator) {
- buffer->failures++;
- return 0;
- }
-
- /* Reallocate built in buffer using allocator */
- newbuf = (buffer->allocator) (buffer->buf, newlen);
- if (!newbuf) {
- buffer->failures++;
- return 0;
- }
-
- buffer->buf = newbuf;
- buffer->allocated_len = newlen;
-
- return 1;
-}
-
-int
-gkr_buffer_resize (GkrBuffer *buffer, size_t len)
-{
- if (!gkr_buffer_reserve (buffer, len))
- return 0;
-
- buffer->len = len;
- return 1;
-}
-
-unsigned char*
-gkr_buffer_add_empty (GkrBuffer *buffer, size_t len)
-{
- size_t pos = buffer->len;
- if (!gkr_buffer_reserve (buffer, buffer->len + len))
- return NULL;
- buffer->len += len;
- return buffer->buf + pos;
-}
-
-int
-gkr_buffer_append (GkrBuffer *buffer, const unsigned char *val,
- size_t len)
-{
- if (!gkr_buffer_reserve (buffer, buffer->len + len))
- return 0; /* failures already incremented */
- memcpy (buffer->buf + buffer->len, val, len);
- buffer->len += len;
- return 1;
-}
-
-int
-gkr_buffer_add_byte (GkrBuffer *buffer, unsigned char val)
-{
- if (!gkr_buffer_reserve (buffer, buffer->len + 1))
- return 0; /* failures already incremented */
- buffer->buf[buffer->len] = val;
- buffer->len++;
- return 1;
-}
-
-int
-gkr_buffer_get_byte (GkrBuffer *buffer, size_t offset,
- size_t *next_offset, unsigned char *val)
-{
- unsigned char *ptr;
- if (buffer->len < 1 || offset > buffer->len - 1) {
- buffer->failures++;
- return 0;
- }
- ptr = (unsigned char*)buffer->buf + offset;
- if (val != NULL)
- *val = *ptr;
- if (next_offset != NULL)
- *next_offset = offset + 1;
- return 1;
-}
-
-void
-gkr_buffer_encode_uint16 (unsigned char* buf, uint16_t val)
-{
- buf[0] = (val >> 8) & 0xff;
- buf[1] = (val >> 0) & 0xff;
-}
-
-uint16_t
-gkr_buffer_decode_uint16 (unsigned char* buf)
-{
- uint16_t val = buf[0] << 8 | buf[1];
- return val;
-}
-
-int
-gkr_buffer_add_uint16 (GkrBuffer *buffer, uint16_t val)
-{
- if (!gkr_buffer_reserve (buffer, buffer->len + 2))
- return 0; /* failures already incremented */
- buffer->len += 2;
- gkr_buffer_set_uint16 (buffer, buffer->len - 2, val);
- return 1;
-}
-
-int
-gkr_buffer_set_uint16 (GkrBuffer *buffer, size_t offset, uint16_t val)
-{
- unsigned char *ptr;
- if (buffer->len < 2 || offset > buffer->len - 2) {
- buffer->failures++;
- return 0;
- }
- ptr = (unsigned char*)buffer->buf + offset;
- gkr_buffer_encode_uint16 (ptr, val);
- return 1;
-}
-
-int
-gkr_buffer_get_uint16 (GkrBuffer *buffer, size_t offset,
- size_t *next_offset, uint16_t *val)
-{
- unsigned char *ptr;
- if (buffer->len < 2 || offset > buffer->len - 2) {
- buffer->failures++;
- return 0;
- }
- ptr = (unsigned char*)buffer->buf + offset;
- if (val != NULL)
- *val = gkr_buffer_decode_uint16 (ptr);
- if (next_offset != NULL)
- *next_offset = offset + 2;
- return 1;
-}
-
-void
-gkr_buffer_encode_uint32 (unsigned char* buf, uint32_t val)
-{
- buf[0] = (val >> 24) & 0xff;
- buf[1] = (val >> 16) & 0xff;
- buf[2] = (val >> 8) & 0xff;
- buf[3] = (val >> 0) & 0xff;
-}
-
-uint32_t
-gkr_buffer_decode_uint32 (unsigned char* ptr)
-{
- uint32_t val = ptr[0] << 24 | ptr[1] << 16 | ptr[2] << 8 | ptr[3];
- return val;
-}
-
-int
-gkr_buffer_add_uint32 (GkrBuffer *buffer, uint32_t val)
-{
- if (!gkr_buffer_reserve (buffer, buffer->len + 4))
- return 0; /* failures already incremented */
- buffer->len += 4;
- gkr_buffer_set_uint32 (buffer, buffer->len - 4, val);
- return 1;
-}
-
-int
-gkr_buffer_set_uint32 (GkrBuffer *buffer, size_t offset, uint32_t val)
-{
- unsigned char *ptr;
- if (buffer->len < 4 || offset > buffer->len - 4) {
- buffer->failures++;
- return 0;
- }
- ptr = (unsigned char*)buffer->buf + offset;
- gkr_buffer_encode_uint32 (ptr, val);
- return 1;
-}
-
-int
-gkr_buffer_get_uint32 (GkrBuffer *buffer, size_t offset, size_t *next_offset,
- uint32_t *val)
-{
- unsigned char *ptr;
- if (buffer->len < 4 || offset > buffer->len - 4) {
- buffer->failures++;
- return 0;
- }
- ptr = (unsigned char*)buffer->buf + offset;
- if (val != NULL)
- *val = gkr_buffer_decode_uint32 (ptr);
- if (next_offset != NULL)
- *next_offset = offset + 4;
- return 1;
-}
-
-int
-gkr_buffer_add_uint64 (GkrBuffer *buffer, uint64_t val)
-{
- if (!gkr_buffer_add_uint32 (buffer, ((val >> 32) & 0xffffffff)))
- return 0;
- return gkr_buffer_add_uint32 (buffer, (val & 0xffffffff));
-}
-
-int
-gkr_buffer_get_uint64 (GkrBuffer *buffer, size_t offset,
- size_t *next_offset, uint64_t *val)
-{
- uint32_t a, b;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &a))
- return 0;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &b))
- return 0;
- if (val != NULL)
- *val = ((uint64_t)a) << 32 | b;
- if (next_offset != NULL)
- *next_offset = offset;
- return 1;
-}
-
-int
-gkr_buffer_add_byte_array (GkrBuffer *buffer, const unsigned char *val,
- size_t len)
-{
- if (val == NULL)
- return gkr_buffer_add_uint32 (buffer, 0xffffffff);
- if (len >= 0x7fffffff) {
- buffer->failures++;
- return 0;
- }
- if (!gkr_buffer_add_uint32 (buffer, len))
- return 0;
- return gkr_buffer_append (buffer, val, len);
-}
-
-unsigned char*
-gkr_buffer_add_byte_array_empty (GkrBuffer *buffer, size_t vlen)
-{
- if (vlen >= 0x7fffffff) {
- buffer->failures++;
- return NULL;
- }
- if (!gkr_buffer_add_uint32 (buffer, vlen))
- return NULL;
- return gkr_buffer_add_empty (buffer, vlen);
-}
-
-int
-gkr_buffer_get_byte_array (GkrBuffer *buffer, size_t offset,
- size_t *next_offset, const unsigned char **val,
- size_t *vlen)
-{
- uint32_t len;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &len))
- return 0;
- if (len == 0xffffffff) {
- if (next_offset)
- *next_offset = offset;
- if (val)
- *val = NULL;
- if (vlen)
- *vlen = 0;
- return 1;
- } else if (len >= 0x7fffffff) {
- buffer->failures++;
- return 0;
- }
-
- if (buffer->len < len || offset > buffer->len - len) {
- buffer->failures++;
- return 0;
- }
-
- if (val)
- *val = buffer->buf + offset;
- if (vlen)
- *vlen = len;
- if (next_offset)
- *next_offset = offset + len;
-
- return 1;
-}
-
-int
-gkr_buffer_add_string (GkrBuffer *buffer, const char *str)
-{
- if (str == NULL) {
- gkr_buffer_add_uint32 (buffer, 0xffffffff);
- } else {
- size_t len = strlen (str);
- if (len >= 0x7fffffff)
- return 0;
- gkr_buffer_add_uint32 (buffer, len);
- gkr_buffer_append (buffer, (unsigned char*)str, len);
- }
- return 1;
-}
-
-int
-gkr_buffer_get_string (GkrBuffer *buffer, size_t offset, size_t *next_offset,
- char **str_ret, GkrBufferAllocator allocator)
-{
- uint32_t len;
-
- if (!allocator)
- allocator = buffer->allocator;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &len)) {
- return 0;
- }
- if (len == 0xffffffff) {
- *next_offset = offset;
- *str_ret = NULL;
- return 1;
- } else if (len >= 0x7fffffff) {
- return 0;
- }
-
- if (buffer->len < len ||
- offset > buffer->len - len) {
- return 0;
- }
-
- /* Make sure no null characters in string */
- if (memchr (buffer->buf + offset, 0, len) != NULL)
- return 0;
-
- /* The passed allocator may be for non-pageable memory */
- *str_ret = (allocator) (NULL, len + 1);
- if (!*str_ret)
- return 0;
- memcpy (*str_ret, buffer->buf + offset, len + 1);
-
- /* Always zero terminate */
- (*str_ret)[len] = 0;
- *next_offset = offset + len;
-
- return 1;
-}
-
-int
-gkr_buffer_add_stringv (GkrBuffer *buffer, const char** strv)
-{
- const char **v;
- uint32_t n = 0;
-
- if (!strv)
- return 0;
-
- /* Add the number of strings coming */
- for (v = strv; *v; ++v)
- ++n;
- if (!gkr_buffer_add_uint32 (buffer, n))
- return 0;
-
- /* Add the individual strings */
- for (v = strv; *v; ++v) {
- if (!gkr_buffer_add_string (buffer, *v))
- return 0;
- }
-
- return 1;
-}
-
-int
-gkr_buffer_get_stringv (GkrBuffer *buffer, size_t offset, size_t *next_offset,
- char ***strv_ret, GkrBufferAllocator allocator)
-{
- uint32_t n, i, j;
- size_t len;
-
- if (!allocator)
- allocator = buffer->allocator;
-
- /* First the number of environment variable lines */
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &n))
- return 0;
-
- /* Then that number of strings */
- len = (n + 1) * sizeof (char*);
- *strv_ret = (char**)(allocator) (NULL, len);
- if (!*strv_ret)
- return 0;
-
- /* All null strings */
- memset (*strv_ret, 0, len);
-
- for (i = 0; i < n; ++i) {
- if (!gkr_buffer_get_string (buffer, offset, &offset,
- &((*strv_ret)[i]), allocator)) {
-
- /* Free all the strings on failure */
- for (j = 0; j < i; ++j) {
- if ((*strv_ret)[j])
- (allocator) ((*strv_ret)[j], 0);
- }
-
- return 0;
- }
- }
-
- if (next_offset != NULL)
- *next_offset = offset;
-
- return 1;
-}
diff --git a/common/gkr-buffer.h b/common/gkr-buffer.h
deleted file mode 100644
index 4dd72a65..00000000
--- a/common/gkr-buffer.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-buffer.h - helper code for the keyring daemon protocol
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKR_BUFFER_H
-#define GKR_BUFFER_H
-
-#include <stdlib.h>
-#include <stdint.h>
-
-/* -------------------------------------------------------------------
- * GkrBuffer
- *
- * IMPORTANT: This is pure vanila standard C, no glib. We need this
- * because certain consumers of this protocol need to be built
- * without linking in any special libraries. ie: the PKCS#11 module.
- *
- * Memory Allocation
- *
- * Callers can set their own allocator. If NULL is used then standard
- * C library heap memory is used and failures will not be fatal. Memory
- * failures will instead result in a zero return value or
- * gkr_buffer_has_error() returning one.
- *
- * If you use something like g_realloc as the allocator, then memory
- * failures become fatal just like in a standard GTK program.
- *
- * Don't change the allocator manually in the GkrBuffer structure. The
- * gkr_buffer_set_allocator() func will reallocate and handle things
- * properly.
- *
- * Pointers into the Buffer
- *
- * Any write operation has the posibility of reallocating memory
- * and invalidating any direct pointers into the buffer.
- */
-
-/* The allocator for the GkrBuffer. This follows the realloc() syntax and logic */
-typedef void* (*GkrBufferAllocator) (void* p, unsigned long len);
-
-typedef struct _GkrBuffer {
- unsigned char *buf;
- size_t len;
- size_t allocated_len;
- int failures;
- GkrBufferAllocator allocator;
-} GkrBuffer;
-
-#define GKR_BUFFER_EMPTY { NULL, 0, 0, 0, NULL }
-
-int gkr_buffer_init (GkrBuffer *buffer, size_t reserve);
-
-int gkr_buffer_init_full (GkrBuffer *buffer,
- size_t reserve,
- GkrBufferAllocator allocator);
-
-void gkr_buffer_init_static (GkrBuffer *buffer,
- unsigned char *buf,
- size_t len);
-
-void gkr_buffer_init_allocated (GkrBuffer *buffer,
- unsigned char *buf,
- size_t len,
- GkrBufferAllocator allocator);
-
-void gkr_buffer_uninit (GkrBuffer *buffer);
-
-int gkr_buffer_set_allocator (GkrBuffer *buffer,
- GkrBufferAllocator allocator);
-
-void gkr_buffer_reset (GkrBuffer *buffer);
-
-int gkr_buffer_equal (GkrBuffer *b1,
- GkrBuffer *b2);
-
-int gkr_buffer_reserve (GkrBuffer *buffer,
- size_t len);
-
-int gkr_buffer_resize (GkrBuffer *buffer,
- size_t len);
-
-int gkr_buffer_append (GkrBuffer *buffer,
- const unsigned char *val,
- size_t len);
-
-unsigned char* gkr_buffer_add_empty (GkrBuffer *buffer,
- size_t len);
-
-int gkr_buffer_add_byte (GkrBuffer *buffer,
- unsigned char val);
-
-int gkr_buffer_get_byte (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- unsigned char *val);
-
-void gkr_buffer_encode_uint32 (unsigned char* buf,
- uint32_t val);
-
-uint32_t gkr_buffer_decode_uint32 (unsigned char* buf);
-
-int gkr_buffer_add_uint32 (GkrBuffer *buffer,
- uint32_t val);
-
-int gkr_buffer_set_uint32 (GkrBuffer *buffer,
- size_t offset,
- uint32_t val);
-
-int gkr_buffer_get_uint32 (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- uint32_t *val);
-
-void gkr_buffer_encode_uint16 (unsigned char* buf,
- uint16_t val);
-
-uint16_t gkr_buffer_decode_uint16 (unsigned char* buf);
-
-int gkr_buffer_add_uint16 (GkrBuffer *buffer,
- uint16_t val);
-
-int gkr_buffer_set_uint16 (GkrBuffer *buffer,
- size_t offset,
- uint16_t val);
-
-int gkr_buffer_get_uint16 (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- uint16_t *val);
-
-int gkr_buffer_add_byte_array (GkrBuffer *buffer,
- const unsigned char *val,
- size_t len);
-
-int gkr_buffer_get_byte_array (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- const unsigned char **val,
- size_t *vlen);
-
-unsigned char* gkr_buffer_add_byte_array_empty (GkrBuffer *buffer,
- size_t vlen);
-
-int gkr_buffer_add_string (GkrBuffer *buffer,
- const char *str);
-
-int gkr_buffer_get_string (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- char **str_ret,
- GkrBufferAllocator allocator);
-
-int gkr_buffer_add_stringv (GkrBuffer *buffer,
- const char** strv);
-
-int gkr_buffer_get_stringv (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- char ***strv_ret,
- GkrBufferAllocator allocator);
-
-int gkr_buffer_add_uint64 (GkrBuffer *buffer,
- uint64_t val);
-
-int gkr_buffer_get_uint64 (GkrBuffer *buffer,
- size_t offset,
- size_t *next_offset,
- uint64_t *val);
-
-#define gkr_buffer_length(b) ((b)->len)
-
-#define gkr_buffer_has_error(b) ((b)->failures > 0)
-
-#endif /* GKR_BUFFER_H */
-
diff --git a/common/gkr-cleanup.c b/common/gkr-cleanup.c
deleted file mode 100644
index 41364d99..00000000
--- a/common/gkr-cleanup.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-cleanup.c - for data cleanup at end of program
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "gkr-cleanup.h"
-
-typedef struct _GkrCleanup {
- GDestroyNotify notify;
- gpointer user_data;
-} GkrCleanup;
-
-static GSList *registered_cleanups = NULL;
-
-void
-gkr_cleanup_register (GDestroyNotify notify, gpointer user_data)
-{
- GkrCleanup *cleanup = g_new0 (GkrCleanup, 1);
-
- g_assert (notify);
- cleanup->notify = notify;
- cleanup->user_data = user_data;
-
- /* Note we're reversing the order, so calls happen that way */
- registered_cleanups = g_slist_prepend (registered_cleanups, cleanup);
-}
-
-void
-gkr_cleanup_unregister (GDestroyNotify notify, gpointer user_data)
-{
- GkrCleanup *cleanup;
- GSList *l;
-
- for (l = registered_cleanups; l; l = g_slist_next (l)) {
- cleanup = (GkrCleanup*)l->data;
- if (cleanup->notify == notify && cleanup->user_data == user_data) {
- registered_cleanups = g_slist_remove (registered_cleanups, cleanup);
- break;
- }
- }
-}
-
-
-void
-gkr_cleanup_perform (void)
-{
- GSList *cleanups, *l;
- GkrCleanup *cleanup;
-
- while (registered_cleanups) {
-
- /*
- * While performing cleanups, more cleanups may be registered.
- * So swap out the list, and keep going until empty.
- */
-
- cleanups = registered_cleanups;
- registered_cleanups = NULL;
-
- for (l = cleanups; l; l = g_slist_next (l)) {
- cleanup = (GkrCleanup*)l->data;
- g_assert (cleanup->notify);
-
- (cleanup->notify) (cleanup->user_data);
- g_free (cleanup);
- }
-
- g_slist_free (cleanups);
- }
-}
diff --git a/common/gkr-cleanup.h b/common/gkr-cleanup.h
deleted file mode 100644
index ffa4a561..00000000
--- a/common/gkr-cleanup.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-cleanup.h - for data cleanup at end of program
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRCLEANUP_H_
-#define GKRCLEANUP_H_
-
-#include <glib.h>
-
-void gkr_cleanup_register (GDestroyNotify notify, gpointer user_data);
-
-void gkr_cleanup_unregister (GDestroyNotify notify, gpointer user_data);
-
-void gkr_cleanup_perform (void);
-
-#endif /* GKRCLEANUP_H_ */
diff --git a/common/gkr-crypto.c b/common/gkr-crypto.c
deleted file mode 100644
index 24e76456..00000000
--- a/common/gkr-crypto.c
+++ /dev/null
@@ -1,1134 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-crypto.c - common crypto functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-crypto.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include <glib.h>
-
-#include <gcrypt.h>
-
-#include <ctype.h>
-#include <stdarg.h>
-
-/* -----------------------------------------------------------------------------
- * UTILITIES
- */
-
-static gboolean gcrypt_initialized = FALSE;
-
-static void
-log_handler (gpointer unused, int unknown, const gchar *msg, va_list va)
-{
- /* TODO: Figure out additional arguments */
- g_logv ("gcrypt", G_LOG_LEVEL_MESSAGE, msg, va);
-}
-
-static int
-no_mem_handler (gpointer unused, size_t sz, unsigned int unknown)
-{
- /* TODO: Figure out additional arguments */
- g_error ("couldn't allocate %lu bytes of memory",
- (unsigned long int)sz);
- return 0;
-}
-
-static void
-fatal_handler (gpointer unused, int unknown, const gchar *msg)
-{
- /* TODO: Figure out additional arguments */
- g_log ("gcrypt", G_LOG_LEVEL_ERROR, msg);
-}
-
-void
-gkr_crypto_setup (void)
-{
- if (gcrypt_initialized)
- return;
-
- gcry_check_version (LIBGCRYPT_VERSION);
- gcry_set_log_handler (log_handler, NULL);
- gcry_set_outofcore_handler (no_mem_handler, NULL);
- gcry_set_fatalerror_handler (fatal_handler, NULL);
- gcry_set_allocation_handler ((gcry_handler_alloc_t)g_malloc,
- (gcry_handler_alloc_t)gkr_secure_alloc,
- gkr_secure_check,
- (gcry_handler_realloc_t)gkr_secure_realloc,
- gkr_secure_free);
-
- gcrypt_initialized = TRUE;
-}
-
-static const char HEXC[] = "0123456789abcdef";
-
-gboolean
-gkr_crypto_hex_encode (const guchar *data, gsize n_data,
- gchar *encoded, gsize *n_encoded)
-{
- guchar j;
-
- g_return_val_if_fail (*n_encoded >= n_data * 2 + 1, FALSE);
-
- while(n_data > 0) {
- j = *(data) >> 4 & 0xf;
- *(encoded++) = HEXC[j];
-
- j = *(data++) & 0xf;
- *(encoded++) = HEXC[j];
-
- n_data--;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_crypto_hex_decode (const gchar *data, gsize n_data,
- guchar *decoded, gsize *n_decoded)
-{
- gushort j;
- gint state = 0;
- const gchar* pos;
-
- g_assert (data);
- g_assert (decoded);
- g_assert (n_decoded);
-
- g_return_val_if_fail (*n_decoded >= n_data / 2, FALSE);
- *n_decoded = 0;
-
- while (n_data > 0)
- {
- if (!isspace (*data)) {
-
- /* Find the position */
- pos = strchr (HEXC, tolower (*data));
- if (pos == 0)
- break;
-
- j = pos - HEXC;
- if(!state) {
- *decoded = (j & 0xf) << 4;
- state = 1;
- } else {
- *decoded |= (j & 0xf);
- (*n_decoded)++;
- decoded++;
- state = 0;
- }
- }
-
- ++data;
- --n_data;
- }
-
- g_return_val_if_fail (state == 0, FALSE);
-
- return TRUE;
-}
-
-/* -----------------------------------------------------------------------------
- * PASSWORD TO KEY/IV
- */
-
-gboolean
-gkr_crypto_generate_symkey_simple (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations, guchar **key,
- guchar **iv)
-{
- gcry_md_hd_t mdh;
- gcry_error_t gcry;
- guchar *digest;
- guchar *digested;
- guint n_digest;
- gint pass, i;
- gint needed_iv, needed_key;
- guchar *at_iv, *at_key;
-
- g_assert (cipher_algo);
- g_assert (hash_algo);
-
- g_return_val_if_fail (iterations >= 1, FALSE);
-
- /*
- * If cipher algo needs more bytes than hash algo has available
- * then the entire hashing process is done again (with the previous
- * hash bytes as extra input), and so on until satisfied.
- */
-
- needed_key = gcry_cipher_get_algo_keylen (cipher_algo);
- needed_iv = gcry_cipher_get_algo_blklen (cipher_algo);
-
- gcry = gcry_md_open (&mdh, hash_algo, 0);
- if (gcry) {
- g_warning ("couldn't create '%s' hash context: %s",
- gcry_md_algo_name (hash_algo), gcry_strerror (gcry));
- return FALSE;
- }
-
- n_digest = gcry_md_get_algo_dlen (hash_algo);
- g_return_val_if_fail (n_digest > 0, FALSE);
-
- digest = gkr_secure_alloc (n_digest);
- g_return_val_if_fail (digest, FALSE);
- if (key) {
- *key = gkr_secure_alloc (needed_key);
- g_return_val_if_fail (*key, FALSE);
- }
- if (iv)
- *iv = g_new0 (guchar, needed_iv);
-
- at_key = key ? *key : NULL;
- at_iv = iv ? *iv : NULL;
-
- for (pass = 0; TRUE; ++pass) {
- gcry_md_reset (mdh);
-
- /* Hash in the previous buffer on later passes */
- if (pass > 0)
- gcry_md_write (mdh, digest, n_digest);
-
- if (password)
- gcry_md_write (mdh, password, strlen (password));
- if (salt && n_salt)
- gcry_md_write (mdh, salt, n_salt);
- gcry_md_final (mdh);
- digested = gcry_md_read (mdh, 0);
- g_return_val_if_fail (digested, FALSE);
- memcpy (digest, digested, n_digest);
-
- for (i = 1; i < iterations; ++i) {
- gcry_md_reset (mdh);
- gcry_md_write (mdh, digest, n_digest);
- gcry_md_final (mdh);
- digested = gcry_md_read (mdh, 0);
- g_return_val_if_fail (digested, FALSE);
- memcpy (digest, digested, n_digest);
- }
-
- /* Copy as much as possible into the destinations */
- i = 0;
- while (needed_key && i < n_digest) {
- if (at_key)
- *(at_key++) = digest[i];
- needed_key--;
- i++;
- }
- while (needed_iv && i < n_digest) {
- if (at_iv)
- *(at_iv++) = digest[i];
- needed_iv--;
- i++;
- }
-
- if (needed_key == 0 && needed_iv == 0)
- break;
- }
-
- gkr_secure_free (digest);
- gcry_md_close (mdh);
-
- return TRUE;
-}
-
-gboolean
-gkr_crypto_generate_symkey_pbe (int cipher_algo, int hash_algo, const gchar *password,
- const guchar *salt, gsize n_salt, int iterations,
- guchar **key, guchar **iv)
-{
- gcry_md_hd_t mdh;
- gcry_error_t gcry;
- guchar *digest;
- guchar *digested;
- guint i, n_digest;
- gint needed_iv, needed_key;
-
- g_assert (cipher_algo);
- g_assert (hash_algo);
-
- g_return_val_if_fail (iterations >= 1, FALSE);
-
- /*
- * We only do one pass here.
- *
- * The key ends up as the first needed_key bytes of the hash buffer.
- * The iv ends up as the last needed_iv bytes of the hash buffer.
- *
- * The IV may overlap the key (which is stupid) if the wrong pair of
- * hash/cipher algorithms are chosen.
- */
-
- n_digest = gcry_md_get_algo_dlen (hash_algo);
- g_return_val_if_fail (n_digest > 0, FALSE);
-
- needed_key = gcry_cipher_get_algo_keylen (cipher_algo);
- needed_iv = gcry_cipher_get_algo_blklen (cipher_algo);
- if (needed_iv + needed_key > 16 || needed_iv + needed_key > n_digest) {
- g_warning ("using PBE symkey generation with %s using an algorithm that needs "
- "too many bytes of key and/or IV: %s",
- gcry_cipher_algo_name (hash_algo),
- gcry_cipher_algo_name (cipher_algo));
- return FALSE;
- }
-
- gcry = gcry_md_open (&mdh, hash_algo, 0);
- if (gcry) {
- g_warning ("couldn't create '%s' hash context: %s",
- gcry_md_algo_name (hash_algo), gcry_strerror (gcry));
- return FALSE;
- }
-
- digest = gkr_secure_alloc (n_digest);
- g_return_val_if_fail (digest, FALSE);
- if (key) {
- *key = gkr_secure_alloc (needed_key);
- g_return_val_if_fail (*key, FALSE);
- }
- if (iv)
- *iv = g_new0 (guchar, needed_iv);
-
- if (password)
- gcry_md_write (mdh, password, strlen (password));
- if (salt && n_salt)
- gcry_md_write (mdh, salt, n_salt);
- gcry_md_final (mdh);
- digested = gcry_md_read (mdh, 0);
- g_return_val_if_fail (digested, FALSE);
- memcpy (digest, digested, n_digest);
-
- for (i = 1; i < iterations; ++i)
- gcry_md_hash_buffer (hash_algo, digest, digest, n_digest);
-
- /* The first x bytes are the key */
- if (key) {
- g_assert (needed_key <= n_digest);
- memcpy (*key, digest, needed_key);
- }
-
- /* The last 16 - x bytes are the iv */
- if (iv) {
- g_assert (needed_iv <= n_digest && n_digest >= 16);
- memcpy (*iv, digest + (16 - needed_iv), needed_iv);
- }
-
- gkr_secure_free (digest);
- gcry_md_close (mdh);
-
- return TRUE;
-}
-
-static gboolean
-generate_pkcs12 (int hash_algo, int type, const gchar *utf8_password,
- const guchar *salt, gsize n_salt, int iterations,
- guchar *output, gsize n_output)
-{
- gcry_mpi_t num_b1, num_ij;
- guchar *hash, *buf_i, *buf_b;
- gcry_md_hd_t mdh;
- const gchar *p2;
- guchar *p;
- gsize n_hash, i;
- gunichar unich;
- gcry_error_t gcry;
-
- num_b1 = num_ij = NULL;
-
- n_hash = gcry_md_get_algo_dlen (hash_algo);
- g_return_val_if_fail (n_hash > 0, FALSE);
-
- gcry = gcry_md_open (&mdh, hash_algo, 0);
- if (gcry) {
- g_warning ("couldn't create '%s' hash context: %s",
- gcry_md_algo_name (hash_algo), gcry_strerror (gcry));
- return FALSE;
- }
-
- /* Reqisition me a buffer */
- hash = gkr_secure_alloc (n_hash);
- buf_i = gkr_secure_alloc (128);
- buf_b = gkr_secure_alloc (64);
- g_return_val_if_fail (hash && buf_i && buf_b, FALSE);
-
- /* Bring in the salt */
- p = buf_i;
- if (salt) {
- for (i = 0; i < 64; ++i)
- *(p++) = salt[i % n_salt];
- } else {
- memset (p, 0, 64);
- p += 64;
- }
-
- /* Bring in the password, as 16bits per character BMP string, ie: UCS2 */
- if (utf8_password) {
- p2 = utf8_password;
- for (i = 0; i < 64; i += 2) {
- unich = *p2 ? g_utf8_get_char (p2) : 0;
- *(p++) = (unich & 0xFF00) >> 8;
- *(p++) = (unich & 0xFF);
- if (*p2) /* Loop back to beginning if more bytes are needed */
- p2 = g_utf8_next_char (p2);
- else
- p2 = utf8_password;
- }
- } else {
- memset (p, 0, 64);
- p += 64;
- }
-
- /* Hash and bash */
- for (;;) {
- gcry_md_reset (mdh);
-
- /* Put in the PKCS#12 type of key */
- for (i = 0; i < 64; ++i)
- gcry_md_putc (mdh, type);
-
- /* Bring in the password */
- gcry_md_write (mdh, buf_i, utf8_password ? 128 : 64);
-
- /* First iteration done */
- memcpy (hash, gcry_md_read (mdh, hash_algo), n_hash);
-
- /* All the other iterations */
- for (i = 1; i < iterations; i++)
- gcry_md_hash_buffer (hash_algo, hash, hash, n_hash);
-
- /* Take out as much as we need */
- for (i = 0; i < n_hash && n_output; ++i) {
- *(output++) = hash[i];
- --n_output;
- }
-
- /* Is that enough generated keying material? */
- if (!n_output)
- break;
-
- /* Need more bytes, do some voodoo */
- for (i = 0; i < 64; ++i)
- buf_b[i] = hash[i % n_hash];
- gcry = gcry_mpi_scan (&num_b1, GCRYMPI_FMT_USG, buf_b, 64, NULL);
- g_return_val_if_fail (gcry == 0, FALSE);
- gcry_mpi_add_ui (num_b1, num_b1, 1);
- for (i = 0; i < 128; i += 64) {
- gcry = gcry_mpi_scan (&num_ij, GCRYMPI_FMT_USG, buf_i + i, 64, NULL);
- g_return_val_if_fail (gcry == 0, FALSE);
- gcry_mpi_add (num_ij, num_ij, num_b1);
- gcry_mpi_clear_highbit (num_ij, 64 * 8);
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, buf_i + i, 64, NULL, num_ij);
- g_return_val_if_fail (gcry == 0, FALSE);
- gcry_mpi_release (num_ij);
- }
- }
-
- gkr_secure_free (buf_i);
- gkr_secure_free (buf_b);
- gkr_secure_free (hash);
- gcry_mpi_release (num_b1);
- gcry_md_close (mdh);
-
- return TRUE;
-}
-
-gboolean
-gkr_crypto_generate_symkey_pkcs12 (int cipher_algo, int hash_algo, const gchar *password,
- const guchar *salt, gsize n_salt,
- int iterations, guchar **key, guchar **iv)
-{
- gsize n_block, n_key;
- gboolean ret = TRUE;
-
- g_return_val_if_fail (cipher_algo, FALSE);
- g_return_val_if_fail (hash_algo, FALSE);
- g_return_val_if_fail (iterations > 0, FALSE);
-
- n_key = gcry_cipher_get_algo_keylen (cipher_algo);
- n_block = gcry_cipher_get_algo_blklen (cipher_algo);
-
- if (password && !g_utf8_validate (password, -1, NULL)) {
- g_warning ("invalid non-UTF8 password");
- g_return_val_if_reached (FALSE);
- }
-
- if (key)
- *key = NULL;
- if (iv)
- *iv = NULL;
-
- /* Generate us an key */
- if (key) {
- *key = gkr_secure_alloc (n_key);
- g_return_val_if_fail (*key != NULL, FALSE);
- ret = generate_pkcs12 (hash_algo, 1, password, salt, n_salt,
- iterations, *key, n_key);
- }
-
- /* Generate us an iv */
- if (ret && iv) {
- if (n_block > 1) {
- *iv = g_malloc (n_block);
- ret = generate_pkcs12 (hash_algo, 2, password, salt, n_salt,
- iterations, *iv, n_block);
- } else {
- *iv = NULL;
- }
- }
-
- /* Cleanup in case of failure */
- if (!ret) {
- g_free (iv ? *iv : NULL);
- g_free (key ? *key : NULL);
- }
-
- return ret;
-}
-
-static gboolean
-generate_pbkdf2 (int hash_algo, const gchar *password, gsize n_password,
- const guchar *salt, gsize n_salt, guint iterations,
- guchar *output, gsize n_output)
-{
- gcry_md_hd_t mdh;
- guint u, l, r, i, k;
- gcry_error_t gcry;
- guchar *U, *T, *buf;
- gsize n_buf, n_hash;
-
- g_return_val_if_fail (hash_algo > 0, FALSE);
- g_return_val_if_fail (iterations > 0, FALSE);
- g_return_val_if_fail (n_output > 0, FALSE);
- g_return_val_if_fail (n_output < G_MAXUINT32, FALSE);
-
- n_hash = gcry_md_get_algo_dlen (hash_algo);
- g_return_val_if_fail (n_hash > 0, FALSE);
-
- gcry = gcry_md_open (&mdh, hash_algo, GCRY_MD_FLAG_HMAC);
- if (gcry != 0) {
- g_warning ("couldn't create '%s' hash context: %s",
- gcry_md_algo_name (hash_algo), gcry_strerror (gcry));
- return FALSE;
- }
-
- /* Get us a temporary buffers */
- T = gkr_secure_alloc (n_hash);
- U = gkr_secure_alloc (n_hash);
- n_buf = n_salt + 4;
- buf = gkr_secure_alloc (n_buf);
- g_return_val_if_fail (buf && T && U, FALSE);
-
- /* n_hash blocks in output, rounding up */
- l = ((n_output - 1) / n_hash) + 1;
-
- /* number of bytes in last, rounded up, n_hash block */
- r = n_output - (l - 1) * n_hash;
-
- memcpy (buf, salt, n_salt);
- for (i = 1; i <= l; i++) {
- memset (T, 0, n_hash);
- for (u = 1; u <= iterations; u++) {
- gcry_md_reset (mdh);
-
- gcry = gcry_md_setkey (mdh, password, n_password);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- /* For first iteration on each block add 4 extra bytes */
- if (u == 1) {
- buf[n_salt + 0] = (i & 0xff000000) >> 24;
- buf[n_salt + 1] = (i & 0x00ff0000) >> 16;
- buf[n_salt + 2] = (i & 0x0000ff00) >> 8;
- buf[n_salt + 3] = (i & 0x000000ff) >> 0;
-
- gcry_md_write (mdh, buf, n_buf);
-
- /* Other iterations, any block */
- } else {
- gcry_md_write (mdh, U, n_hash);
- }
-
- memcpy (U, gcry_md_read (mdh, hash_algo), n_hash);
-
- for (k = 0; k < n_hash; k++)
- T[k] ^= U[k];
- }
-
- memcpy (output + (i - 1) * n_hash, T, i == l ? r : n_hash);
- }
-
- gkr_secure_free (T);
- gkr_secure_free (U);
- gkr_secure_free (buf);
- gcry_md_close (mdh);
- return TRUE;
-}
-
-gboolean
-gkr_crypto_generate_symkey_pbkdf2 (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations,
- guchar **key, guchar **iv)
-{
- gsize n_key, n_block, n_password;
- gboolean ret = TRUE;
-
- g_return_val_if_fail (hash_algo, FALSE);
- g_return_val_if_fail (cipher_algo, FALSE);
- g_return_val_if_fail (iterations > 0, FALSE);
-
- n_key = gcry_cipher_get_algo_keylen (cipher_algo);
- n_block = gcry_cipher_get_algo_blklen (cipher_algo);
-
- if (key)
- *key = NULL;
- if (iv)
- *iv = NULL;
-
- n_password = password ? strlen (password) : 0;
-
- /* Generate us an key */
- if (key) {
- *key = gkr_secure_alloc (n_key);
- g_return_val_if_fail (*key != NULL, FALSE);
- ret = generate_pbkdf2 (hash_algo, password, n_password, salt, n_salt,
- iterations, *key, n_key);
- }
-
- /* Generate us an iv */
- if (ret && iv) {
- if (n_block > 1) {
- *iv = g_malloc (n_block);
- gcry_create_nonce (*iv, n_block);
- } else {
- *iv = NULL;
- }
- }
-
- /* Cleanup in case of failure */
- if (!ret) {
- g_free (iv ? *iv : NULL);
- g_free (key ? *key : NULL);
- }
-
- return ret;
-}
-
-/* -----------------------------------------------------------------------------
- * MPI HELPERS
- */
-
-static gcry_sexp_t
-sexp_get_childv (gcry_sexp_t sexp, va_list va)
-{
- gcry_sexp_t at = NULL;
- gcry_sexp_t child;
- const char *name;
-
- for(;;) {
- name = va_arg (va, const char*);
- if (!name)
- break;
-
- child = gcry_sexp_find_token (at ? at : sexp, name, 0);
- gcry_sexp_release (at);
- at = child;
- if (at == NULL)
- break;
- }
-
- va_end (va);
-
- return at;
-}
-
-gcry_sexp_t
-gkr_crypto_sexp_get_child (gcry_sexp_t sexp, ...)
-{
- gcry_sexp_t child;
- va_list va;
-
- va_start (va, sexp);
- child = sexp_get_childv (sexp, va);
- va_end (va);
-
- return child;
-}
-
-gboolean
-gkr_crypto_sexp_extract_mpi (gcry_sexp_t sexp, gcry_mpi_t *mpi, ...)
-{
- gcry_sexp_t at = NULL;
- va_list va;
-
- g_assert (sexp);
- g_assert (mpi);
-
- va_start (va, mpi);
- at = sexp_get_childv (sexp, va);
- va_end (va);
-
- *mpi = NULL;
- if (at)
- *mpi = gcry_sexp_nth_mpi (at ? at : sexp, 1, GCRYMPI_FMT_USG);
- if (at)
- gcry_sexp_release (at);
-
- return (*mpi) ? TRUE : FALSE;
-}
-
-static gboolean
-print_mpi_aligned (gcry_mpi_t mpi, guchar *block, gsize n_block)
-{
- gcry_error_t gcry;
- gsize offset, len;
-
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, NULL, 0, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- if (n_block < len)
- return FALSE;
-
- offset = n_block - len;
- memset (block, 0, offset);
-
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, block + offset, len, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
- g_return_val_if_fail (len == n_block - offset, FALSE);
-
- return TRUE;
-}
-
-guchar*
-gkr_crypto_sexp_extract_mpi_padded (gcry_sexp_t sexp, guint bits, gsize *n_data,
- GkrCryptoPadding padfunc, ...)
-{
- gcry_sexp_t at = NULL;
- gcry_mpi_t mpi;
- va_list va;
- guchar *padded, *data;
- gsize n_padded;
-
- g_assert (sexp);
- g_assert (n_data);
- g_assert (padfunc);
- g_assert (bits);
-
- va_start (va, padfunc);
- at = sexp_get_childv (sexp, va);
- va_end (va);
-
- if (!at)
- return NULL;
-
- /* Parse out the MPI */
- mpi = gcry_sexp_nth_mpi (at ? at : sexp, 1, GCRYMPI_FMT_USG);
- gcry_sexp_release (at);
-
- if (!mpi)
- return NULL;
-
- /* Do we need to unpad the data? */
- n_padded = (bits + 7) / 8;
- data = NULL;
-
- /* Extract it aligned into this buffer */
- padded = g_malloc0 (n_padded);
- if (print_mpi_aligned (mpi, padded, n_padded))
- data = (padfunc) (bits, padded, n_padded, n_data);
- g_free (padded);
-
- gcry_mpi_release (mpi);
- return data;
-}
-
-gboolean
-gkr_crypto_sexp_extract_mpi_aligned (gcry_sexp_t sexp, guchar* block, gsize n_block, ...)
-{
- gcry_sexp_t at = NULL;
- gboolean ret;
- gcry_mpi_t mpi;
- va_list va;
-
- g_assert (sexp);
- g_assert (block);
- g_assert (n_block);
-
- va_start (va, n_block);
- at = sexp_get_childv (sexp, va);
- va_end (va);
-
- if (!at)
- return FALSE;
-
- /* Parse out the MPI */
- mpi = gcry_sexp_nth_mpi (at ? at : sexp, 1, GCRYMPI_FMT_USG);
- gcry_sexp_release (at);
-
- if (!mpi)
- return FALSE;
-
- ret = print_mpi_aligned (mpi, block, n_block);
- gcry_mpi_release (mpi);
- return ret;
-}
-
-void
-gkr_crypto_sexp_dump (gcry_sexp_t sexp)
-{
- gsize len;
- gchar *buf;
-
- len = gcry_sexp_sprint (sexp, GCRYSEXP_FMT_ADVANCED, NULL, 0);
- buf = g_malloc (len);
- gcry_sexp_sprint (sexp, GCRYSEXP_FMT_ADVANCED, buf, len);
- g_printerr (buf);
- g_free (buf);
-}
-
-#define PUBLIC_KEY "public-key"
-#define PUBLIC_KEY_L 10
-#define PRIVATE_KEY "private-key"
-#define PRIVATE_KEY_L 11
-
-gboolean
-gkr_crypto_skey_parse (gcry_sexp_t s_key, int *algorithm, gboolean *is_priv,
- gcry_sexp_t *numbers)
-{
- gboolean ret = FALSE;
- gcry_sexp_t child = NULL;
- gchar *str = NULL;
- const gchar *data;
- gsize n_data;
- gboolean priv;
- int algo;
-
- data = gcry_sexp_nth_data (s_key, 0, &n_data);
- if (!data)
- goto done;
-
- if (n_data == PUBLIC_KEY_L && strncmp (data, PUBLIC_KEY, PUBLIC_KEY_L) == 0)
- priv = FALSE;
- else if (n_data == PRIVATE_KEY_L && strncmp (data, PRIVATE_KEY, PRIVATE_KEY_L) == 0)
- priv = TRUE;
- else
- goto done;
-
- child = gcry_sexp_nth (s_key, 1);
- if (!child)
- goto done;
-
- data = gcry_sexp_nth_data (child, 0, &n_data);
- if (!data)
- goto done;
-
- str = g_alloca (n_data + 1);
- memcpy (str, data, n_data);
- str[n_data] = 0;
-
- algo = gcry_pk_map_name (str);
- if (!algo)
- goto done;
-
- /* Yay all done */
- if (algorithm)
- *algorithm = algo;
- if (numbers) {
- *numbers = child;
- child = NULL;
- }
- if (is_priv)
- *is_priv = priv;
-
- ret = TRUE;
-
-done:
- gcry_sexp_release (child);
- return ret;
-}
-
-gkrid
-gkr_crypto_skey_make_id (gcry_sexp_t s_key)
-{
- guchar hash[20];
-
- if (!gcry_pk_get_keygrip (s_key, hash))
- g_return_val_if_reached (NULL);
-
- return gkr_id_new (hash, sizeof (hash));
-}
-
-static gcry_sexp_t
-rsa_numbers_to_public (gcry_sexp_t rsa)
-{
- gcry_sexp_t pubkey = NULL;
- gcry_mpi_t n, e;
- gcry_error_t gcry;
-
- n = e = NULL;
-
- gkr_crypto_sexp_dump (rsa);
-
- if (!gkr_crypto_sexp_extract_mpi (rsa, &n, "n", NULL) ||
- !gkr_crypto_sexp_extract_mpi (rsa, &e, "e", NULL))
- goto done;
-
- gcry = gcry_sexp_build (&pubkey, NULL, "(public-key (rsa (n %m) (e %m)))",
- n, e);
- if (gcry)
- goto done;
- g_assert (pubkey);
-
-done:
- gcry_mpi_release (n);
- gcry_mpi_release (e);
-
- /* This should have worked */
- g_return_val_if_fail (pubkey != NULL, NULL);
- return pubkey;
-}
-
-static gcry_sexp_t
-dsa_numbers_to_public (gcry_sexp_t dsa)
-{
- gcry_mpi_t p, q, g, y;
- gcry_sexp_t pubkey = NULL;
- gcry_error_t gcry;
-
- p = q = g = y = NULL;
-
- if (!gkr_crypto_sexp_extract_mpi (dsa, &p, "p", NULL) ||
- !gkr_crypto_sexp_extract_mpi (dsa, &q, "q", NULL) ||
- !gkr_crypto_sexp_extract_mpi (dsa, &g, "g", NULL) ||
- !gkr_crypto_sexp_extract_mpi (dsa, &y, "y", NULL))
- goto done;
-
- gcry = gcry_sexp_build (&pubkey, NULL, "(public-key (dsa (p %m) (q %m) (g %m) (y %m)))",
- p, q, g, y);
- if (gcry)
- goto done;
- g_assert (pubkey);
-
-done:
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
-
- /* This should have worked */
- g_return_val_if_fail (pubkey != NULL, NULL);
- return pubkey;
-}
-
-gboolean
-gkr_crypto_skey_private_to_public (gcry_sexp_t privkey, gcry_sexp_t *pubkey)
-{
- gcry_sexp_t numbers;
- int algorithm;
-
- if (!gkr_crypto_skey_parse (privkey, &algorithm, NULL, &numbers))
- g_return_val_if_reached (FALSE);
-
- switch (algorithm) {
- case GCRY_PK_RSA:
- *pubkey = rsa_numbers_to_public (numbers);
- break;
- case GCRY_PK_DSA:
- *pubkey = dsa_numbers_to_public (numbers);
- break;
- default:
- g_return_val_if_reached (FALSE);
- }
-
- gcry_sexp_release (numbers);
- return *pubkey ? TRUE : FALSE;
-}
-
-/* -------------------------------------------------------------------
- * RSA PADDING
- */
-
-guchar*
-gkr_crypto_rsa_pad_raw (guint n_modulus, const guchar* raw,
- gsize n_raw, gsize *n_padded)
-{
- gint total, n_pad;
- guchar *padded;
-
- /*
- * 0x00 0x00 0x00 ... 0x?? 0x?? 0x?? ...
- * padding data
- */
-
- total = n_modulus / 8;
- n_pad = total - n_raw;
- if (n_pad < 0) /* minumum padding */
- return NULL;
-
- padded = g_new0 (guchar, total);
- memset (padded, 0x00, n_pad);
- memcpy (padded + n_pad, raw, n_raw);
-
- *n_padded = total;
- return padded;
-}
-
-guchar*
-gkr_crypto_rsa_pad_one (guint n_modulus, const guchar* raw,
- gsize n_raw, gsize *n_padded)
-{
- gint total, n_pad;
- guchar *padded;
-
- /*
- * 0x00 0x01 0xFF 0xFF ... 0x00 0x?? 0x?? 0x?? ...
- * type padding data
- */
-
- total = n_modulus / 8;
- n_pad = total - 3 - n_raw;
- if (n_pad < 8) /* minumum padding */
- return NULL;
-
- padded = g_new0 (guchar, total);
- padded[1] = 1; /* Block type */
- memset (padded + 2, 0xff, n_pad);
- memcpy (padded + 3 + n_pad, raw, n_raw);
-
- *n_padded = total;
- return padded;
-}
-
-static void
-fill_random_nonzero (guchar *data, gsize n_data)
-{
- guchar *rnd;
- guint n_zero, i, j;
-
- gcry_randomize (data, n_data, GCRY_STRONG_RANDOM);
-
- /* Find any zeros in random data */
- n_zero = 0;
- for (i = 0; i < n_data; ++i) {
- if (data[i] == 0x00)
- ++n_zero;
- }
-
- while (n_zero > 0) {
- rnd = gcry_random_bytes (n_zero, GCRY_STRONG_RANDOM);
- n_zero = 0;
- for (i = 0, j = 0; i < n_data; ++i) {
- if (data[i] != 0x00)
- continue;
-
- /* Use some of the replacement data */
- data[i] = rnd[j];
- ++j;
-
- /* It's zero again :( */
- if (data[i] == 0x00)
- n_zero++;
- }
-
- gcry_free (rnd);
- }
-}
-
-guchar*
-gkr_crypto_rsa_pad_two (guint n_modulus, const guchar* raw,
- gsize n_raw, gsize *n_padded)
-{
- gint total, n_pad;
- guchar *padded;
-
- /*
- * 0x00 0x01 0x?? 0x?? ... 0x00 0x?? 0x?? 0x?? ...
- * type padding data
- */
-
- total = n_modulus / 8;
- n_pad = total - 3 - n_raw;
- if (n_pad < 8) /* minumum padding */
- return NULL;
-
- padded = g_new0 (guchar, total);
- padded[1] = 2; /* Block type */
- fill_random_nonzero (padded + 2, n_pad);
- memcpy (padded + 3 + n_pad, raw, n_raw);
-
- *n_padded = total;
- return padded;
-}
-
-static guchar*
-unpad_rsa_pkcs1 (guchar bt, guint n_modulus, const guchar* padded,
- gsize n_padded, gsize *n_raw)
-{
- const guchar *at;
- guchar *raw;
-
- /* The absolute minimum size including padding */
- g_return_val_if_fail (n_modulus / 8 >= 3 + 8, NULL);
-
- if (n_padded != n_modulus / 8)
- return NULL;
-
- /* Check the header */
- if (padded[0] != 0x00 || padded[1] != bt)
- return NULL;
-
- /* The first zero byte after the header */
- at = memchr (padded + 2, 0x00, n_padded - 2);
- if (!at)
- return NULL;
-
- ++at;
- *n_raw = n_padded - (at - padded);
- raw = g_new0 (guchar, *n_raw);
- memcpy (raw, at, *n_raw);
- return raw;
-}
-
-guchar*
-gkr_crypto_rsa_unpad_pkcs1 (guint bits, const guchar *padded,
- gsize n_padded, gsize *n_raw)
-{
- /* Further checks are done later */
- g_return_val_if_fail (n_padded > 2, NULL);
- return unpad_rsa_pkcs1 (padded[1], bits, padded, n_padded, n_raw);
-}
-
-guchar*
-gkr_crypto_rsa_unpad_one (guint bits, const guchar *padded,
- gsize n_padded, gsize *n_raw)
-{
- return unpad_rsa_pkcs1 (0x01, bits, padded, n_padded, n_raw);
-}
-
-guchar*
-gkr_crypto_rsa_unpad_two (guint bits, const guchar *padded,
- gsize n_padded, gsize *n_raw)
-{
- return unpad_rsa_pkcs1 (0x02, bits, padded, n_padded, n_raw);
-}
diff --git a/common/gkr-crypto.h b/common/gkr-crypto.h
deleted file mode 100644
index 4a5b78bc..00000000
--- a/common/gkr-crypto.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-crypto.h - common crypto functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRCRYPTO_H_
-#define GKRCRYPTO_H_
-
-#include <glib.h>
-#include <gcrypt.h>
-
-#include "gkr-id.h"
-
-typedef guchar* (*GkrCryptoPadding) (guint n_modulus, const guchar* raw,
- gsize n_raw, gsize *n_padded);
-
-
-void gkr_crypto_setup (void);
-
-gboolean gkr_crypto_hex_encode (const guchar *data, gsize n_data,
- gchar *encoded, gsize *n_encoded);
-
-gboolean gkr_crypto_hex_decode (const gchar *data, gsize n_data,
- guchar *decoded, gsize *n_decoded);
-
-gboolean gkr_crypto_generate_symkey_simple (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations,
- guchar **key, guchar **iv);
-
-gboolean gkr_crypto_generate_symkey_pkcs12 (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations,
- guchar **key, guchar **iv);
-
-gboolean gkr_crypto_generate_symkey_pbe (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations,
- guchar **key, guchar **iv);
-
-gboolean gkr_crypto_generate_symkey_pbkdf2 (int cipher_algo, int hash_algo,
- const gchar *password, const guchar *salt,
- gsize n_salt, int iterations,
- guchar **key, guchar **iv);
-
-gcry_sexp_t gkr_crypto_sexp_get_child (gcry_sexp_t sexp, ...)
- G_GNUC_NULL_TERMINATED;
-
-gboolean gkr_crypto_sexp_extract_mpi (gcry_sexp_t sexp, gcry_mpi_t *mpi, ...)
- G_GNUC_NULL_TERMINATED;
-
-guchar* gkr_crypto_sexp_extract_mpi_padded (gcry_sexp_t sexp, guint bits, gsize *n_data,
- GkrCryptoPadding padfunc, ...)
- G_GNUC_NULL_TERMINATED;
-
-gboolean gkr_crypto_sexp_extract_mpi_aligned (gcry_sexp_t sexp, guchar* block, gsize n_block, ...)
- G_GNUC_NULL_TERMINATED;
-
-void gkr_crypto_sexp_dump (gcry_sexp_t sexp);
-
-gboolean gkr_crypto_skey_parse (gcry_sexp_t s_key, int *algorithm,
- gboolean *is_priv, gcry_sexp_t *numbers);
-
-gkrid gkr_crypto_skey_make_id (gcry_sexp_t s_key);
-
-gboolean gkr_crypto_skey_private_to_public (gcry_sexp_t privkey, gcry_sexp_t *pubkey);
-
-guchar* gkr_crypto_rsa_pad_raw (guint bits, const guchar* raw,
- gsize n_raw, gsize *n_padded);
-
-guchar* gkr_crypto_rsa_pad_one (guint bits, const guchar* raw,
- gsize n_raw, gsize *n_padded);
-
-guchar* gkr_crypto_rsa_pad_two (guint bits, const guchar* raw,
- gsize n_raw, gsize *n_padded);
-
-guchar* gkr_crypto_rsa_unpad_pkcs1 (guint bits, const guchar *padded,
- gsize n_padded, gsize *n_raw);
-
-guchar* gkr_crypto_rsa_unpad_one (guint bits, const guchar *padded,
- gsize n_padded, gsize *n_raw);
-
-guchar* gkr_crypto_rsa_unpad_two (guint bits, const guchar* padded,
- gsize n_padded, gsize *n_raw);
-
-#endif /*GKRCRYPTO_H_*/
diff --git a/common/gkr-daemon-util.c b/common/gkr-daemon-util.c
deleted file mode 100644
index 8bfc162f..00000000
--- a/common/gkr-daemon-util.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-daemon-util.c - Helper utilities for the daemon
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-cleanup.h"
-
-#include <glib.h>
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <unistd.h>
-
-static gchar* master_directory = NULL;
-static GArray* published_environ = NULL;
-
-/* Forward declaration, see gnu libc code lower down in this file */
-static char* do_mkdtemp (char *template);
-
-static void
-uninit_master_directory (gpointer data)
-{
- g_assert (master_directory);
- rmdir (master_directory);
- g_free (master_directory);
- master_directory = NULL;
-}
-
-static void
-init_master_directory (void)
-{
- gboolean have_path = FALSE;
-
- /*
- * When run under control of unit tests, we let the parent process
- * pass in the socket path that we're going to create our main socket on.
- */
-
-#ifdef WITH_TESTS
- const gchar* env = g_getenv ("GNOME_KEYRING_TEST_PATH");
- if (env && *env) {
- master_directory = g_strdup (env);
- if (g_mkdir_with_parents (master_directory, S_IRUSR | S_IWUSR | S_IXUSR) < 0)
- g_warning ("couldn't create socket directory: %s", g_strerror (errno));
- have_path = TRUE;
- }
-#endif /* WITH_TESTS */
-
- /* Create private directory for agent socket */
- if (!have_path) {
- master_directory = g_build_filename (g_get_tmp_dir (), "keyring-XXXXXX", NULL);
- if (do_mkdtemp (master_directory) == NULL)
- g_warning ("couldn't create socket directory: %s", g_strerror (errno));
- }
-
- gkr_cleanup_register (uninit_master_directory, NULL);
-}
-
-const gchar*
-gkr_daemon_util_get_master_directory (void)
-{
- if (!master_directory)
- init_master_directory ();
-
- return master_directory;
-}
-
-static void
-uninit_environment (gpointer data)
-{
- guint i;
-
- if (published_environ) {
- for (i = 0; i < published_environ->len; ++i)
- g_free (g_array_index (published_environ, gchar*, i));
- g_array_free (published_environ, TRUE);
- }
-
- published_environ = NULL;
-}
-
-static void
-init_environment ()
-{
- if (published_environ)
- return;
- published_environ = g_array_new (TRUE, TRUE, sizeof (gchar*));
- gkr_cleanup_register (uninit_environment, NULL);
-}
-
-void
-gkr_daemon_util_push_environment (const gchar *name, const gchar *value)
-{
- gchar *env;
-
- init_environment ();
-
- env = g_strdup_printf ("%s=%s", name, value);
- g_array_append_val (published_environ, env);
-}
-
-const gchar**
-gkr_daemon_util_get_environment (void)
-{
- init_environment ();
- return (const gchar**)published_environ->data;
-}
-
-/* Copyright (C) 1999, 2001-2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C 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.
-
- The GNU C 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 the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* Extracted from misc/mkdtemp.c and sysdeps/posix/tempname.c. */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <errno.h>
-#ifndef __set_errno
-# define __set_errno(Val) errno = (Val)
-#endif
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <stdio.h>
-#ifndef TMP_MAX
-# define TMP_MAX 238328
-#endif
-
-#if HAVE_STDINT_H_WITH_UINTMAX || _LIBC
-# include <stdint.h>
-#endif
-
-#if HAVE_INTTYPES_H_WITH_UINTMAX || _LIBC
-# include <inttypes.h>
-#endif
-
-#if HAVE_UNISTD_H || _LIBC
-# include <unistd.h>
-#endif
-
-#if HAVE_GETTIMEOFDAY || _LIBC
-# if HAVE_SYS_TIME_H || _LIBC
-# include <sys/time.h>
-# endif
-#else
-# if HAVE_TIME_H || _LIBC
-# include <time.h>
-# endif
-#endif
-
-#include <sys/stat.h>
-#if STAT_MACROS_BROKEN
-# undef S_ISDIR
-#endif
-#if !defined S_ISDIR && defined S_IFDIR
-# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
-#endif
-#if !S_IRUSR && S_IREAD
-# define S_IRUSR S_IREAD
-#endif
-#if !S_IRUSR
-# define S_IRUSR 00400
-#endif
-#if !S_IWUSR && S_IWRITE
-# define S_IWUSR S_IWRITE
-#endif
-#if !S_IWUSR
-# define S_IWUSR 00200
-#endif
-#if !S_IXUSR && S_IEXEC
-# define S_IXUSR S_IEXEC
-#endif
-#if !S_IXUSR
-# define S_IXUSR 00100
-#endif
-
-#if !_LIBC
-# define __getpid getpid
-# define __gettimeofday gettimeofday
-# define __mkdir mkdir
-#endif
-
-/* Use the widest available unsigned type if uint64_t is not
- available. The algorithm below extracts a number less than 62**6
- (approximately 2**35.725) from uint64_t, so ancient hosts where
- uintmax_t is only 32 bits lose about 3.725 bits of randomness,
- which is better than not having mkstemp at all. */
-#if !defined UINT64_MAX && !defined uint64_t
-# define uint64_t uintmax_t
-#endif
-
-/* These are the characters used in temporary filenames. */
-static const char letters[] =
-"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-
-/* Generate a temporary file name based on TMPL. TMPL must match the
- rules for mk[s]temp (i.e. end in "XXXXXX"). The name constructed
- does not exist at the time of the call to __gen_tempname. TMPL is
- overwritten with the result.
-
- KIND is:
- __GT_DIR: create a directory, which will be mode 0700.
-
- We use a clever algorithm to get hard-to-predict names. */
-static int
-gen_tempname (tmpl)
- char *tmpl;
-{
- int len;
- char *XXXXXX;
- static uint64_t value;
- uint64_t random_time_bits;
- int count, fd = -1;
- int save_errno = errno;
-
- len = strlen (tmpl);
- if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- /* This is where the Xs start. */
- XXXXXX = &tmpl[len - 6];
-
- /* Get some more or less random data. */
-#ifdef RANDOM_BITS
- RANDOM_BITS (random_time_bits);
-#else
-# if HAVE_GETTIMEOFDAY || _LIBC
- {
- struct timeval tv;
- __gettimeofday (&tv, NULL);
- random_time_bits = ((uint64_t) tv.tv_usec << 16) ^ tv.tv_sec;
- }
-# else
- random_time_bits = time (NULL);
-# endif
-#endif
- value += random_time_bits ^ __getpid ();
-
- for (count = 0; count < TMP_MAX; value += 7777, ++count)
- {
- uint64_t v = value;
-
- /* Fill in the random bits. */
- XXXXXX[0] = letters[v % 62];
- v /= 62;
- XXXXXX[1] = letters[v % 62];
- v /= 62;
- XXXXXX[2] = letters[v % 62];
- v /= 62;
- XXXXXX[3] = letters[v % 62];
- v /= 62;
- XXXXXX[4] = letters[v % 62];
- v /= 62;
- XXXXXX[5] = letters[v % 62];
-
- fd = __mkdir (tmpl, S_IRUSR | S_IWUSR | S_IXUSR);
-
- if (fd >= 0)
- {
- __set_errno (save_errno);
- return fd;
- }
- else if (errno != EEXIST)
- return -1;
- }
-
- /* We got out of the loop because we ran out of combinations to try. */
- __set_errno (EEXIST);
- return -1;
-}
-
-/* Generate a unique temporary directory from TEMPLATE.
- The last six characters of TEMPLATE must be "XXXXXX";
- they are replaced with a string that makes the filename unique.
- The directory is created, mode 700, and its name is returned.
- (This function comes from OpenBSD.) */
-static char *
-do_mkdtemp (template)
- char *template;
-{
- if (gen_tempname (template))
- return NULL;
- else
- return template;
-}
diff --git a/common/gkr-daemon-util.h b/common/gkr-daemon-util.h
deleted file mode 100644
index c2aa8710..00000000
--- a/common/gkr-daemon-util.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-daemon-util.h - Helper utilities for the daemon
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRMASTERDIRECTORY_H_
-#define GKRMASTERDIRECTORY_H_
-
-#include <glib.h>
-
-const gchar* gkr_daemon_util_get_master_directory (void);
-
-void gkr_daemon_util_push_environment (const gchar *name, const gchar *value);
-
-const gchar** gkr_daemon_util_get_environment (void);
-
-#endif /*GKRMASTERDIRECTORY_H_*/
diff --git a/common/gkr-dbus.c b/common/gkr-dbus.c
deleted file mode 100644
index 6e0e1078..00000000
--- a/common/gkr-dbus.c
+++ /dev/null
@@ -1,425 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* gkr-dbus.c GLib main loop integration
- *
- * Copyright (C) 2002, 2003 CodeFactory AB
- * Copyright (C) 2005 Red Hat, Inc.
- *
- * Licensed under the Academic Free License version 2.1
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-
-#include "config.h"
-
-#ifdef WITH_DBUS
-
-#include "gkr-dbus.h"
-
-#include "gkr-cleanup.h"
-
-#include <dbus/dbus.h>
-
-/*
- * dbus_watch_get_unix_fd() is introduced in dbus 1.1.1, deprecating
- * dbus_watch_get_fd(). We still need to use the old function for official
- * GNOME 2.20, anyway. See Bug #465936.
- */
-#define VER_LESS_THAN(MAJOR, MINOR, MICRO, J, N, C) \
- (MAJOR < J || (MAJOR == J && (MINOR < N || (MINOR == N && MICRO < C))))
-#if VER_LESS_THAN(GKR_DBUS_MAJOR_VERSION, GKR_DBUS_MINOR_VERSION, GKR_DBUS_MICRO_VERSION, 1, 1, 1)
-# define dbus_watch_get_unix_fd dbus_watch_get_fd
-#endif
-
-/* ------------------------------------------------------------------------
- * DBUS GLIB MAIN LOOP INTEGRATION
- *
- * Copied from dbus-gmain.c due to API instabilities in dbus-glib bindings. :(
- */
-
-typedef struct {
- GSource source; /* the parent GSource */
- DBusConnection *connection; /* the connection to dispatch */
-} DBusGMessageQueue;
-
-static gboolean
-message_queue_prepare (GSource *source, gint *timeout)
-{
- DBusConnection *connection = ((DBusGMessageQueue *)source)->connection;
- *timeout = -1;
- return (dbus_connection_get_dispatch_status (connection) == DBUS_DISPATCH_DATA_REMAINS);
-}
-
-static gboolean
-message_queue_check (GSource *source)
-{
- return FALSE;
-}
-
-static gboolean
-message_queue_dispatch (GSource *source, GSourceFunc callback, gpointer user_data)
-{
- DBusConnection *connection = ((DBusGMessageQueue *)source)->connection;
- dbus_connection_ref (connection);
-
- /* Only dispatch once - we don't want to starve other GSource */
- dbus_connection_dispatch (connection);
- dbus_connection_unref (connection);
- return TRUE;
-}
-
-static const GSourceFuncs message_queue_funcs = {
- message_queue_prepare,
- message_queue_check,
- message_queue_dispatch,
- NULL
-};
-
-typedef struct {
- GMainContext *context; /* the main context */
- GSList *ios; /* all IOHandler */
- GSList *timeouts; /* all TimeoutHandler */
- DBusConnection *connection; /* NULL if this is really for a server not a connection */
- GSource *message_queue_source; /* DBusGMessageQueue */
-} ConnectionSetup;
-
-static ConnectionSetup *the_setup = NULL;
-
-typedef struct {
- ConnectionSetup *cs;
- GSource *source;
- DBusWatch *watch;
-} IOHandler;
-
-typedef struct {
- ConnectionSetup *cs;
- GSource *source;
- DBusTimeout *timeout;
-} TimeoutHandler;
-
-static ConnectionSetup*
-connection_setup_new (GMainContext *context, DBusConnection *connection)
-{
- ConnectionSetup *cs = g_new0 (ConnectionSetup, 1);
- g_assert (context != NULL);
-
- cs->context = context;
- g_main_context_ref (cs->context);
-
- if (connection) {
- cs->connection = connection;
- cs->message_queue_source = g_source_new ((GSourceFuncs *) &message_queue_funcs,
- sizeof (DBusGMessageQueue));
- ((DBusGMessageQueue*)cs->message_queue_source)->connection = connection;
- g_source_attach (cs->message_queue_source, cs->context);
- }
-
- return cs;
-}
-
-static void
-io_handler_source_finalized (gpointer data)
-{
- IOHandler *handler = data;
- if (handler->watch)
- dbus_watch_set_data (handler->watch, NULL, NULL);
- g_free (handler);
-}
-
-static void
-io_handler_destroy_source (void *data)
-{
- IOHandler *handler = data;
- if (handler->source) {
- GSource *source = handler->source;
- handler->source = NULL;
- handler->cs->ios = g_slist_remove (handler->cs->ios, handler);
- g_source_destroy (source);
- g_source_unref (source);
- }
-}
-
-static void
-io_handler_watch_freed (void *data)
-{
- IOHandler *handler = data;
- handler->watch = NULL;
- io_handler_destroy_source (handler);
-}
-
-static gboolean
-io_handler_dispatch (GIOChannel *source, GIOCondition condition, gpointer data)
-{
- IOHandler *handler = data;
- guint dbus_condition = 0;
- DBusConnection *connection = handler->cs->connection;
-
- if (connection)
- dbus_connection_ref (connection);
-
- if (condition & G_IO_IN)
- dbus_condition |= DBUS_WATCH_READABLE;
- if (condition & G_IO_OUT)
- dbus_condition |= DBUS_WATCH_WRITABLE;
- if (condition & G_IO_ERR)
- dbus_condition |= DBUS_WATCH_ERROR;
- if (condition & G_IO_HUP)
- dbus_condition |= DBUS_WATCH_HANGUP;
-
- /* Note that we don't touch the handler after this, because
- * dbus may have disabled the watch and thus killed the
- * handler.
- */
- dbus_watch_handle (handler->watch, dbus_condition);
- handler = NULL;
-
- if (connection)
- dbus_connection_unref (connection);
-
- return TRUE;
-}
-
-static void
-connection_setup_add_watch (ConnectionSetup *cs, DBusWatch *watch)
-{
- guint flags;
- GIOCondition condition;
- GIOChannel *channel;
- IOHandler *handler;
-
- if (!dbus_watch_get_enabled (watch))
- return;
-
- g_assert (dbus_watch_get_data (watch) == NULL);
-
- flags = dbus_watch_get_flags (watch);
-
- condition = G_IO_ERR | G_IO_HUP;
- if (flags & DBUS_WATCH_READABLE)
- condition |= G_IO_IN;
- if (flags & DBUS_WATCH_WRITABLE)
- condition |= G_IO_OUT;
-
- handler = g_new0 (IOHandler, 1);
- handler->cs = cs;
- handler->watch = watch;
-
- channel = g_io_channel_unix_new (dbus_watch_get_unix_fd (watch));
-
- handler->source = g_io_create_watch (channel, condition);
- g_source_set_callback (handler->source, (GSourceFunc) io_handler_dispatch, handler,
- io_handler_source_finalized);
- g_source_attach (handler->source, cs->context);
-
- cs->ios = g_slist_prepend (cs->ios, handler);
-
- dbus_watch_set_data (watch, handler, io_handler_watch_freed);
- g_io_channel_unref (channel);
-}
-
-static void
-connection_setup_remove_watch (ConnectionSetup *cs, DBusWatch *watch)
-{
- IOHandler *handler = dbus_watch_get_data (watch);
- if (handler != NULL)
- io_handler_destroy_source (handler);
-}
-
-static void
-timeout_handler_source_finalized (gpointer data)
-{
- TimeoutHandler *handler = data;
- if (handler->timeout)
- dbus_timeout_set_data (handler->timeout, NULL, NULL);
- g_free (handler);
-}
-
-static void
-timeout_handler_destroy_source (void *data)
-{
- TimeoutHandler *handler = data;
- if (handler->source) {
- GSource *source = handler->source;
- handler->source = NULL;
- handler->cs->timeouts = g_slist_remove (handler->cs->timeouts, handler);
- g_source_destroy (source);
- g_source_unref (source);
- }
-}
-
-static void
-timeout_handler_timeout_freed (void *data)
-{
- TimeoutHandler *handler = data;
- handler->timeout = NULL;
- timeout_handler_destroy_source (handler);
-}
-
-static gboolean
-timeout_handler_dispatch (gpointer data)
-{
- TimeoutHandler *handler = data;
- dbus_timeout_handle (handler->timeout);
- return TRUE;
-}
-
-static void
-connection_setup_add_timeout (ConnectionSetup *cs,
- DBusTimeout *timeout)
-{
- TimeoutHandler *handler;
- if (!dbus_timeout_get_enabled (timeout))
- return;
- g_assert (dbus_timeout_get_data (timeout) == NULL);
-
- handler = g_new0 (TimeoutHandler, 1);
- handler->cs = cs;
- handler->timeout = timeout;
-
- handler->source = g_timeout_source_new (dbus_timeout_get_interval (timeout));
- g_source_set_callback (handler->source, timeout_handler_dispatch, handler,
- timeout_handler_source_finalized);
- g_source_attach (handler->source, handler->cs->context);
- cs->timeouts = g_slist_prepend (cs->timeouts, handler);
- dbus_timeout_set_data (timeout, handler, timeout_handler_timeout_freed);
-}
-
-static void
-connection_setup_remove_timeout (ConnectionSetup *cs, DBusTimeout *timeout)
-{
- TimeoutHandler *handler = dbus_timeout_get_data (timeout);
- if (handler != NULL)
- timeout_handler_destroy_source (handler);
-}
-
-static void
-connection_setup_free (ConnectionSetup *cs)
-{
- while (cs->ios)
- io_handler_destroy_source (cs->ios->data);
-
- while (cs->timeouts)
- timeout_handler_destroy_source (cs->timeouts->data);
-
- if (cs->message_queue_source) {
- GSource *source = cs->message_queue_source;
- cs->message_queue_source = NULL;
-
- g_source_destroy (source);
- g_source_unref (source);
- }
-
- g_main_context_unref (cs->context);
- g_free (cs);
-}
-
-static dbus_bool_t
-add_watch (DBusWatch *watch, gpointer data)
-{
- ConnectionSetup *cs = data;
- connection_setup_add_watch (cs, watch);
- return TRUE;
-}
-
-static void
-remove_watch (DBusWatch *watch, gpointer data)
-{
- ConnectionSetup *cs = data;
- connection_setup_remove_watch (cs, watch);
-}
-
-static void
-watch_toggled (DBusWatch *watch, void *data)
-{
- if (dbus_watch_get_enabled (watch))
- add_watch (watch, data);
- else
- remove_watch (watch, data);
-}
-
-static dbus_bool_t
-add_timeout (DBusTimeout *timeout, void *data)
-{
- ConnectionSetup *cs = data;
- if (!dbus_timeout_get_enabled (timeout))
- return TRUE;
- connection_setup_add_timeout (cs, timeout);
- return TRUE;
-}
-
-static void
-remove_timeout (DBusTimeout *timeout, void *data)
-{
- ConnectionSetup *cs = data;
- connection_setup_remove_timeout (cs, timeout);
-}
-
-static void
-timeout_toggled (DBusTimeout *timeout, void *data)
-{
- if (dbus_timeout_get_enabled (timeout))
- add_timeout (timeout, data);
- else
- remove_timeout (timeout, data);
-}
-
-static void
-wakeup_main (void *data)
-{
- ConnectionSetup *cs = data;
- g_main_context_wakeup (cs->context);
-}
-
-void
-gkr_dbus_connect_with_mainloop (DBusConnection *connection, GMainContext *context)
-{
- ConnectionSetup *cs;
-
- if (context == NULL)
- context = g_main_context_default ();
- cs = connection_setup_new (context, connection);
- the_setup = cs;
-
- if (!dbus_connection_set_watch_functions (connection, add_watch,
- remove_watch, watch_toggled,
- cs, NULL))
- goto nomem;
-
- if (!dbus_connection_set_timeout_functions (connection, add_timeout,
- remove_timeout, timeout_toggled,
- cs, NULL))
- goto nomem;
-
- dbus_connection_set_wakeup_main_function (connection, wakeup_main, cs, NULL);
-
- return;
-
-nomem:
- g_error ("Not enough memory to set up DBusConnection for use with GLib");
-}
-
-void
-gkr_dbus_disconnect_from_mainloop (DBusConnection *connection, GMainContext *context)
-{
- ConnectionSetup *cs = the_setup;
- the_setup = NULL;
-
- if (cs)
- connection_setup_free (cs);
-}
-
-#endif /* WITH_DBUS */
-
diff --git a/common/gkr-dbus.h b/common/gkr-dbus.h
deleted file mode 100644
index 219d2ce1..00000000
--- a/common/gkr-dbus.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- mode: C; c-file-style: "gnu" -*- */
-/* gkr-dbus.h GLib main loop integration
- *
- * Copyright (C) 2002, 2003 CodeFactory AB
- * Copyright (C) 2005 Red Hat, Inc.
- *
- * Licensed under the Academic Free License version 2.1
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#ifndef GKRDBUS_H_
-#define GKRDBUS_H_
-
-#ifdef WITH_DBUS
-
-#include <glib.h>
-#include <dbus/dbus.h>
-
-void gkr_dbus_connect_with_mainloop (DBusConnection *connection, GMainContext *context);
-
-void gkr_dbus_disconnect_from_mainloop (DBusConnection *connection, GMainContext *context);
-
-#endif /* WITH_DBUS */
-
-#endif /*GKRDBUS_H_*/
diff --git a/common/gkr-id.c b/common/gkr-id.c
deleted file mode 100644
index 63d1b46d..00000000
--- a/common/gkr-id.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-id.c - Unique binary identifiers
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-id.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-
-/*
- * Memory is laid out like
- *
- * - 32-bit uint length, including itself
- * - length bytes
- * -
- */
-
-#define DEBUG_HEADER 1
-
-#ifdef DEBUG_HEADER
-#define HEADER_V 0xABABABAB
-#endif
-
-GType
-gkr_id_get_boxed_type (void)
-{
- static GType type = 0;
-
- if (!type) {
- type = g_boxed_type_register_static ("gkrid",
- (GBoxedCopyFunc)gkr_id_dup,
- gkr_id_free);
- }
-
- return type;
-}
-
-gkrid
-gkr_id_new (const guchar *data, gsize n_data)
-{
- guint *id;
- guint len;
-
- g_assert (data != NULL);
- g_assert (n_data > 0);
- g_assert (n_data < GKR_ID_MAX_LENGTH);
-
- len = sizeof (guint) + n_data;
-
-#ifdef DEBUG_HEADER
- len += sizeof (guint);
-#endif
-
- id = g_slice_alloc (len);
-
-#ifdef DEBUG_HEADER
- len -= sizeof (guint);
- id[0] = HEADER_V;
- ++id;
-#endif
-
- id[0] = len;
- memcpy (id + 1, data, n_data);
- return id;
-}
-
-gkrid
-gkr_id_new_digest (const guchar *data, gsize n_data)
-{
- guint *id;
- guint len;
-
- g_assert (data != NULL);
- g_assert (n_data > 0);
-
- len = sizeof (guint) + 20;
-
-#ifdef DEBUG_HEADER
- len += sizeof (guint);
-#endif
-
- id = g_slice_alloc (len);
-
-#ifdef DEBUG_HEADER
- len -= sizeof (guint);
- id[0] = HEADER_V;
- ++id;
-#endif
-
- id[0] = len;
- gcry_md_hash_buffer (GCRY_MD_SHA1, id + 1, data, n_data);
-
- return id;
-}
-
-gkrid
-gkr_id_new_digestv (const guchar *data, gsize n_data, ...)
-{
- gcry_md_hd_t mdh;
- gcry_error_t gcry;
- const guchar *digest;
- gkrid id;
- va_list va;
-
- g_assert (data);
- g_assert (n_data > 0);
-
- gcry = gcry_md_open (&mdh, GCRY_MD_SHA1, 0);
- g_return_val_if_fail (gcry == 0, NULL);
-
- gcry_md_write (mdh, data, n_data);
-
- va_start (va, n_data);
-
- for (;;) {
- data = va_arg (va, const guchar*);
- if (!data)
- break;
- n_data = va_arg (va, gsize);
-
- g_assert (n_data > 0);
- gcry_md_write (mdh, data, n_data);
- }
-
- va_end (va);
-
- digest = gcry_md_read (mdh, 0);
- g_return_val_if_fail (digest != NULL, NULL);
-
- id = gkr_id_new (digest, 20);
-
- gcry_md_close (mdh);
- return id;
-}
-
-guint
-gkr_id_hash (gkrconstid v)
-{
- const guint *id = (guint*)v;
- const guchar *p;
- guint hash, i;
-
- hash = 0;
- for (p = (guchar*)id, i = *id; i; i--, p++)
- hash = hash * 33 + *p;
-
- return hash;
-}
-
-gboolean
-gkr_id_equals (gkrconstid v1, gkrconstid v2)
-{
- const guint *u1 = (guint*)v1;
- const guint *u2 = (guint*)v2;
- if (!u1 || !u2)
- return FALSE;
- g_assert (*u1 > 0 && *u2 > 0);
- g_assert (*u1 < GKR_ID_MAX_LENGTH && *u2 < GKR_ID_MAX_LENGTH);
- return (*u1 == *u2 && memcmp (u1, u2, *u1) == 0);
-}
-
-gkrid
-gkr_id_dup (gkrconstid v)
-{
- const guint *id = (guint*)v;
- guint *nid;
- guint len;
-
- if (!id)
- return NULL;
-
- g_assert (*id > 0);
- g_assert (*id < GKR_ID_MAX_LENGTH);
- len = id[0];
-
-#ifdef DEBUG_HEADER
- len += sizeof (guint);
-#endif
-
- nid = g_slice_alloc (len);
-
-#ifdef DEBUG_HEADER
- nid[0] = HEADER_V;
- len -= sizeof (guint);
- nid++;
-#endif
-
- memcpy (nid, id, len);
- return nid;
-}
-
-gconstpointer
-gkr_id_get_raw (gkrconstid v, gsize *len)
-{
- const guint *id = (guint*)v;
- if (!id)
- return NULL;
- g_assert (*id > 0);
- g_assert (*id < GKR_ID_MAX_LENGTH);
- if (len)
- *len = *id - sizeof (guint);
- return (id + 1);
-}
-
-void
-gkr_id_free (gkrid v)
-{
- guint *id = (guint*)v;
- guint len;
-
- if (!id)
- return;
-
- g_assert (id[0] > 0);
- g_assert (id[0] < GKR_ID_MAX_LENGTH);
- len = id[0];
-
-#ifdef DEBUG_HEADER
- --id;
- g_assert (id[0] == HEADER_V);
- len += sizeof (guint);
-#endif
-
- g_slice_free1 (len, id);
-}
diff --git a/common/gkr-id.h b/common/gkr-id.h
deleted file mode 100644
index 093f2e2a..00000000
--- a/common/gkr-id.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-id.h - Unique binary identifiers
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRID_H_
-#define GKRID_H_
-
-#include <glib.h>
-#include <glib-object.h>
-
-#define GKR_ID_MAX_LENGTH 1024 * 64
-
-typedef gpointer gkrid;
-typedef gconstpointer gkrconstid;
-
-#define GKR_ID_BOXED_TYPE (gkr_id_get_boxed_type ())
-
-GType gkr_id_get_boxed_type (void);
-
-gkrid gkr_id_new (const guchar *data, gsize len);
-
-gkrid gkr_id_new_digest (const guchar *data, gsize len);
-
-gkrid gkr_id_new_digestv (const guchar *data, gsize len, ...)
- G_GNUC_NULL_TERMINATED;
-
-guint gkr_id_hash (gkrconstid v);
-
-gboolean gkr_id_equals (gkrconstid u1, gkrconstid u2);
-
-gkrid gkr_id_dup (gkrconstid id);
-
-gconstpointer gkr_id_get_raw (gkrconstid id, gsize *len);
-
-void gkr_id_free (gpointer v);
-
-#endif /*GKRID_H_*/
diff --git a/common/gkr-location-watch.c b/common/gkr-location-watch.c
deleted file mode 100644
index bd487d56..00000000
--- a/common/gkr-location-watch.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-location-watch.c - Watch for changes in all base locations
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-location-watch.h"
-
-#include <glib.h>
-#include <glib/gstdio.h>
-
-#include <sys/stat.h>
-#include <errno.h>
-#include <unistd.h>
-
-enum {
- LOCATION_ADDED,
- LOCATION_REMOVED,
- LOCATION_CHANGED,
- LAST_SIGNAL
-};
-
-typedef struct {
- GQuark parent;
- GkrLocationWatch *watch;
- GHashTable *checks;
-} UpdateDescendants;
-
-typedef struct _GkrLocationWatchPrivate GkrLocationWatchPrivate;
-struct _GkrLocationWatchPrivate {
- /* Specification */
- GPatternSpec *include;
- GPatternSpec *exclude;
- gchar *subdir;
- GQuark only_volume;
-
- /* Matched Locations */
- GHashTable *locations;
-};
-
-#define GKR_LOCATION_WATCH_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_LOCATION_WATCH, GkrLocationWatchPrivate))
-
-G_DEFINE_TYPE (GkrLocationWatch, gkr_location_watch, G_TYPE_OBJECT);
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-copy_key_value (gpointer key, gpointer value, gpointer data)
-{
- GHashTable *dest = (GHashTable*)data;
- g_hash_table_replace (dest, key, value);
-}
-
-static void
-remove_locations (gpointer key, gpointer value, gpointer data)
-{
- GkrLocationWatch *watch = GKR_LOCATION_WATCH (data);
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
-
- g_hash_table_remove (pv->locations, key);
- g_signal_emit (watch, signals[LOCATION_REMOVED], 0, GPOINTER_TO_UINT(key));
-}
-
-static gboolean
-update_location (GkrLocationWatch *watch, gboolean force_all, GQuark location)
-{
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
- struct stat sb;
- gchar *path;
-
- /* TODO: Allocating and freeing this all the time is braindead */
- path = gkr_location_to_path (location);
- if (!path)
- return FALSE;
-
- if (stat (path, &sb) < 0) {
- if (errno != ENOENT && errno != ENOTDIR && errno != EPERM)
- g_warning ("couldn't stat file: %s: %s", path, g_strerror (errno));
- g_free (path);
- return FALSE;
- }
-
- g_free (path);
-
-
- /* See if it has actually changed */
- if (gkr_location_manager_note_mtime (watch->manager, location, sb.st_mtime) ||
- force_all) {
- g_assert (g_hash_table_lookup (pv->locations, GUINT_TO_POINTER (location)));
- g_signal_emit (watch, signals[LOCATION_CHANGED], 0, location);
- }
-
- return TRUE;
-}
-
-static void
-update_each_descendant (gpointer key, gpointer unused, gpointer data)
-{
- UpdateDescendants *ctx = (UpdateDescendants*)data;
- GQuark location = GPOINTER_TO_UINT (key);
-
- if (!gkr_location_is_descendant (ctx->parent, location))
- return;
-
- if (update_location (ctx->watch, FALSE, location))
- g_hash_table_remove (ctx->checks, GUINT_TO_POINTER (location));
-}
-
-static void
-update_volume (GkrLocationWatch *watch, GQuark volume, gboolean force_all,
- GHashTable *checks)
-{
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
- UpdateDescendants uctx;
- struct stat sb;
- GQuark dirloc;
- GError *err = NULL;
- const char *filename;
- gpointer key;
- gchar *path;
- gchar *file;
- GDir *dir;
- GQuark loc;
- int ret, lasterr;
-
- g_assert (volume);
- g_assert (checks);
- g_assert (GKR_IS_LOCATION_WATCH (watch));
-
- dirloc = pv->subdir ? gkr_location_from_child (volume, pv->subdir) : volume;
- path = gkr_location_to_path (dirloc);
-
- /* Can't resolve the location? Skip. */
- if (!path)
- return;
-
- if (stat (path, &sb) < 0) {
- if (errno != ENOENT && errno != ENOTDIR && errno != EPERM)
- g_message ("couldn't stat directory: %s: %s", path, g_strerror (errno));
- g_free (path);
- return;
- }
-
- /* See if it was updated since last seen or not */
- if (!gkr_location_manager_note_mtime (watch->manager, dirloc, sb.st_mtime) &&
- !force_all) {
-
- uctx.parent = dirloc;
- uctx.watch = watch;
- uctx.checks = checks;
-
- /* Still need to check for individual file updates */
- g_hash_table_foreach (pv->locations, update_each_descendant, &uctx);
-
- g_free (path);
- return;
- }
-
- /* Actually list the directory */
- dir = g_dir_open (path, 0, &err);
- if (dir == NULL) {
- if (errno != ENOENT && errno != ENOTDIR && errno != EPERM)
- g_message ("couldn't list keyrings at: %s: %s", path,
- err && err->message ? err->message : "");
- g_error_free (err);
- g_free (path);
- return;
- }
-
- while ((filename = g_dir_read_name (dir)) != NULL) {
- if (filename[0] == '.')
- continue;
- if (pv->include && !g_pattern_match_string (pv->include, filename))
- continue;
- if (pv->exclude && g_pattern_match_string (pv->exclude, filename))
- continue;
-
- loc = gkr_location_from_child (dirloc, filename);
- g_assert (loc);
-
- /* If we hadn't yet seen this, then add it */
- key = GUINT_TO_POINTER (loc);
- if (!g_hash_table_remove (checks, key)) {
-
- /* Get the last modified time for this one */
- file = gkr_location_to_path (loc);
- g_assert (file);
- ret = g_stat (file, &sb);
- lasterr = errno;
- g_free (file);
-
- /* Couldn't access the file */
- if (ret < 0) {
- g_message ("couldn't stat file: %s: %s", path, g_strerror (lasterr));
- continue;
- }
-
- /* We don't do directories */
- if (sb.st_mode & S_IFDIR)
- continue;
-
- g_hash_table_replace (pv->locations, key, key);
- gkr_location_manager_note_mtime (watch->manager, loc, sb.st_mtime);
- g_signal_emit (watch, signals[LOCATION_ADDED], 0, loc);
-
- /* Otherwise we already had it, see if it needs updating */
- } else {
- update_location (watch, force_all, loc);
- }
- }
-
- g_dir_close (dir);
- g_free (path);
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_location_watch_init (GkrLocationWatch *obj)
-{
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (obj);
- pv->locations = g_hash_table_new (g_direct_hash, g_direct_equal);
-}
-
-static void
-gkr_location_watch_dispose (GObject *obj)
-{
- GkrLocationWatch *watch = GKR_LOCATION_WATCH (obj);
-
- if (watch->manager)
- g_object_unref (watch->manager);
- watch->manager = NULL;
-
- G_OBJECT_CLASS (gkr_location_watch_parent_class)->dispose (obj);
-}
-
-static void
-gkr_location_watch_finalize (GObject *obj)
-{
- GkrLocationWatch *watch = GKR_LOCATION_WATCH (obj);
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
-
- if (pv->include)
- g_pattern_spec_free (pv->include);
- if (pv->exclude)
- g_pattern_spec_free (pv->exclude);
- g_free (pv->subdir);
-
- g_hash_table_destroy (pv->locations);
-
- G_OBJECT_CLASS (gkr_location_watch_parent_class)->finalize (obj);
-}
-
-static void
-gkr_location_watch_class_init (GkrLocationWatchClass *klass)
-{
- GObjectClass *gobject_class;
- gobject_class = (GObjectClass*) klass;
-
- gkr_location_watch_parent_class = g_type_class_peek_parent (klass);
- gobject_class->dispose = gkr_location_watch_dispose;
- gobject_class->finalize = gkr_location_watch_finalize;
-
- g_type_class_add_private (gobject_class, sizeof (GkrLocationWatchPrivate));
-
- signals[LOCATION_ADDED] = g_signal_new ("location-added", GKR_TYPE_LOCATION_WATCH,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrLocationWatchClass, location_added),
- NULL, NULL, g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1, G_TYPE_UINT);
-
- signals[LOCATION_CHANGED] = g_signal_new ("location-changed", GKR_TYPE_LOCATION_WATCH,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrLocationWatchClass, location_changed),
- NULL, NULL, g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1, G_TYPE_UINT);
-
- signals[LOCATION_REMOVED] = g_signal_new ("location-removed", GKR_TYPE_LOCATION_WATCH,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrLocationWatchClass, location_removed),
- NULL, NULL, g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1, G_TYPE_UINT);
-}
-
-GkrLocationWatch*
-gkr_location_watch_new (GkrLocationManager *locmgr, GQuark only_volume,
- const gchar *subdir, const gchar *include, const gchar *exclude)
-{
- GkrLocationWatch *watch = g_object_new (GKR_TYPE_LOCATION_WATCH, NULL);
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_val_if_fail (GKR_IS_LOCATION_MANAGER (locmgr), NULL);
-
- /* TODO: Use properties */
- pv->include = include ? g_pattern_spec_new (include) : NULL;
- pv->exclude = exclude ? g_pattern_spec_new (exclude) : NULL;
- pv->subdir = g_strdup (subdir);
- pv->only_volume = only_volume;
-
- watch->manager = locmgr;
- g_object_ref (locmgr);
-
- return watch;
-}
-
-void
-gkr_location_watch_refresh (GkrLocationWatch *watch, gboolean force_all)
-{
- GkrLocationWatchPrivate *pv = GKR_LOCATION_WATCH_GET_PRIVATE (watch);
- GHashTable *checks;
- GSList *l, *volumes;
- GQuark volume;
-
- g_return_if_fail (GKR_IS_LOCATION_WATCH (watch));
-
- /* Copy into our check set */
- checks = g_hash_table_new (g_direct_hash, g_direct_equal);
- g_hash_table_foreach (pv->locations, copy_key_value, checks);
-
- /* If only one volume, then just try and access it directly */
- if (pv->only_volume) {
- if (gkr_location_manager_has_volume (watch->manager, pv->only_volume))
- update_volume (watch, pv->only_volume, force_all, checks);
-
- /* Go through each base location and update */
- } else {
- volumes = gkr_location_manager_get_volumes (watch->manager);
- for (l = volumes; l; l = g_slist_next (l)) {
- volume = GPOINTER_TO_UINT (l->data);
- update_volume (watch, volume, force_all, checks);
- }
- }
-
- /* Find any keyrings whose paths we didn't see */
- g_hash_table_foreach (checks, remove_locations, watch);
- g_hash_table_destroy (checks);
-}
diff --git a/common/gkr-location-watch.h b/common/gkr-location-watch.h
deleted file mode 100644
index dd87d32b..00000000
--- a/common/gkr-location-watch.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-location-watch.h - Watch for changes in all base locations
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_LOCATION_WATCH_H__
-#define __GKR_LOCATION_WATCH_H__
-
-#include <glib-object.h>
-
-#include "gkr-location.h"
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_LOCATION_WATCH (gkr_location_watch_get_type ())
-#define GKR_LOCATION_WATCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_LOCATION_WATCH, GkrLocationWatch))
-#define GKR_LOCATION_WATCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_LOCATION_WATCH, GObject))
-#define GKR_IS_LOCATION_WATCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_LOCATION_WATCH))
-#define GKR_IS_LOCATION_WATCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_LOCATION_WATCH))
-#define GKR_LOCATION_WATCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_LOCATION_WATCH, GkrLocationWatchClass))
-
-typedef struct _GkrLocationWatch GkrLocationWatch;
-typedef struct _GkrLocationWatchClass GkrLocationWatchClass;
-
-struct _GkrLocationWatch {
- GObject parent;
- GkrLocationManager *manager;
-};
-
-struct _GkrLocationWatchClass {
- GObjectClass parent_class;
-
- void (*location_added) (GkrLocationManager *locmgr, GQuark location);
- void (*location_changed) (GkrLocationManager *locmgr, GQuark location);
- void (*location_removed) (GkrLocationManager *locmgr, GQuark location);
-};
-
-GType gkr_location_watch_get_type (void) G_GNUC_CONST;
-
-GkrLocationWatch* gkr_location_watch_new (GkrLocationManager *locmgr,
- GQuark only_volume,
- const gchar *subdir,
- const gchar *include_pattern,
- const gchar *exclude_pattern);
-
-void gkr_location_watch_refresh (GkrLocationWatch *watch,
- gboolean force_all);
-
-G_END_DECLS
-
-#endif /* __GKR_LOCATION_WATCH_H__ */
-
diff --git a/common/gkr-location.c b/common/gkr-location.c
deleted file mode 100644
index 90340f31..00000000
--- a/common/gkr-location.c
+++ /dev/null
@@ -1,1105 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-location.c - A filesystem location with some resiliency
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-location.h"
-
-#include "gkr-cleanup.h"
-#include "gkr-dbus.h"
-
-#ifdef WITH_HAL
-#include <libhal.h>
-#include <libhal-storage.h>
-#endif
-
-#include <glib.h>
-#include <glib/gi18n-lib.h>
-
-#include <string.h>
-
-#define LOC_DELIMITER ":"
-#define LOC_DELIMITER_C ':'
-
-typedef struct _GkrLocationVolume {
- GQuark volume_loc;
- gchar *name;
- gchar *prefix;
- gchar *friendly;
- gboolean hidden;
-#ifdef WITH_HAL
- gboolean hal_volume;
-#endif
-} GkrLocationVolume;
-
-enum {
- VOLUME_ADDED,
- VOLUME_REMOVED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (GkrLocationManager, gkr_location_manager, G_TYPE_OBJECT);
-
-struct _GkrLocationManagerPrivate;
-typedef struct _GkrLocationManagerPrivate GkrLocationManagerPrivate;
-
-struct _GkrLocationManagerPrivate {
-#ifdef WITH_HAL
- LibHalContext *hal_ctx;
- guint hal_retry;
- DBusConnection *dbus_connection;
-#endif
- GHashTable *volumes_by_name;
- GHashTable *volumes_by_loc;
- GHashTable *volumes_by_prefix;
-
- /* Some special locations, that we don't advertize, but support */
- GkrLocationVolume file_volume;
- GkrLocationVolume home_volume;
-
- /* Last modified time of locations */
- GHashTable *last_modified;
-};
-
-#define GKR_LOCATION_MANAGER_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_LOCATION_MANAGER, GkrLocationManagerPrivate))
-
-static GkrLocationManager *location_manager_singleton = NULL;
-
-#ifdef WITH_HAL
-/* Forward declaration */
-static void location_manager_hal_init (GkrLocationManager *locmgr);
-#endif
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-cleanup_location_manager (void *unused)
-{
- g_assert (location_manager_singleton);
- g_object_unref (location_manager_singleton);
- location_manager_singleton = NULL;
-}
-
-#if 0
-static gboolean
-purge_last_modified (gpointer key, gpointer unused, gpointer user_data)
-{
- GQuark loc = GPOINTER_TO_UINT (key);
- GQuark volume = GPOINTER_TO_UINT (user_data);
- return gkr_location_is_descendant (volume, loc);
-}
-#endif
-
-static void
-list_locations (const gchar *name, GkrLocationVolume *locvol, GSList **l)
-{
- if (!locvol->hidden)
- *l = g_slist_append (*l, GUINT_TO_POINTER (locvol->volume_loc));
-}
-
-static void
-free_mtime (time_t *mtime)
-{
- if (mtime)
- g_slice_free (time_t, mtime);
-}
-
-static void
-free_location_volume (GkrLocationVolume *locvol)
-{
- if (locvol) {
- /* Hidden volumes are freed elsewhere */
- if (locvol->hidden)
- return;
- g_free (locvol->name);
- g_free (locvol->prefix);
- g_slice_free (GkrLocationVolume, locvol);
- }
-}
-
-static GQuark
-make_volume_location (const gchar *name)
-{
- gchar *sloc;
- GQuark loc;
-
- sloc = g_strdup_printf ("%s:", name);
- loc = gkr_location_from_string (sloc);
- g_free (sloc);
-
- return loc;
-}
-
-static void
-make_hidden_volume (GkrLocationManager *locmgr, GkrLocationVolume *locvol,
- const gchar *name, const gchar *prefix, const gchar *friendly)
-{
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- GQuark volume_loc = make_volume_location (name);
-
- locvol->name = (gchar*)name;
- locvol->volume_loc = volume_loc;
- locvol->prefix = (gchar*)prefix;
- locvol->hidden = TRUE;
- locvol->friendly = friendly ? g_strdup (friendly) : NULL;
-
- g_hash_table_replace (pv->volumes_by_name, locvol->name, locvol);
- g_hash_table_replace (pv->volumes_by_prefix, locvol->prefix, locvol);
- g_hash_table_replace (pv->volumes_by_loc, GUINT_TO_POINTER (volume_loc), locvol);
-
-}
-
-#ifdef WITH_HAL
-
-static gboolean
-handle_retrieve_error (const char *what, const char *udi, DBusError *error)
-{
- if (!dbus_error_is_set (error))
- return FALSE;
- g_warning ("Error retrieving %s on '%s': Error: '%s' Message: '%s'",
- what, udi, error->name, error->message);
- dbus_error_free (error);
- return TRUE;
-}
-
-static gchar*
-udi_to_location_name (LibHalContext *hal_ctx, const char *udi)
-{
- const char *x;
- char *name, *c;
-
- x = strrchr (udi, '/');
- if (x)
- udi = x + 1;
-
- name = g_strdup (udi);
-
- /*
- * Replace all the ':' with '_' as a colon is a special
- * character in our full location paths.
- */
-
- for (c = name; *c; ++c) {
- if (*c == ':')
- *c = '_';
- }
-
- return name;
-}
-
-static void
-hal_device_added (LibHalContext *hal_ctx, const char *udi)
-{
- DBusError error;
-
- dbus_error_init (&error);
-
- /* Make sure it's a drive volume */
- if (!libhal_device_query_capability (hal_ctx, udi, "volume", NULL))
- return;
-
- if (!libhal_device_add_property_watch (hal_ctx, udi, &error)) {
- g_warning ("Error adding watch on %s: Error: '%s' Message: '%s'",
- udi, error.name, error.message);
- dbus_error_free (&error);
- }
-}
-
-static void
-hal_device_removed (LibHalContext *hal_ctx, const char *udi)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (libhal_ctx_get_user_data (hal_ctx));
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- DBusError error;
- char *name = NULL;
-
- dbus_error_init (&error);
-
- if (!libhal_device_remove_property_watch (hal_ctx, udi, &error)) {
- g_warning ("Error removing watch on %s: Error: '%s' Message: '%s'",
- udi, error.name, error.message);
- dbus_error_free (&error);
- }
-
- name = udi_to_location_name (hal_ctx, udi);
- g_return_if_fail (name && name[0]);
-
- if (g_hash_table_lookup (pv->volumes_by_name, name)) {
- g_message ("removing removable location: %s", name);
- gkr_location_manager_unregister (locmgr, name);
- }
-
- g_free (name);
-
-}
-
-static void
-hal_device_property (LibHalContext *hal_ctx, const char *udi, const char *key,
- dbus_bool_t is_removed, dbus_bool_t is_added)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (libhal_ctx_get_user_data (hal_ctx));
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- char *drive_udi = NULL;
- char *mount = NULL;
- char *name = NULL;
- char *friendly = NULL;
- char *product = NULL;
- DBusError error;
- gboolean removable, is_mounted;
- GkrLocationVolume *locvol;
-
- if (g_ascii_strcasecmp (key, "volume.is_mounted") != 0)
- return;
-
- dbus_error_init(&error);
-
- /* Make sure it's a drive volume */
- if (!libhal_device_query_capability (hal_ctx, udi, "volume", NULL))
- goto done;
-
- is_mounted = libhal_device_get_property_bool (hal_ctx, udi, "volume.is_mounted", &error);
- if (handle_retrieve_error ("volume.is_mounted", udi, &error))
- goto done;
-
- name = udi_to_location_name (hal_ctx, udi);
- g_return_if_fail (name && name[0]);
-
- /* A mount was added? */
- if (is_mounted && !g_hash_table_lookup (pv->volumes_by_name, name)) {
-
- drive_udi = libhal_device_get_property_string (hal_ctx, udi, "block.storage_device", &error);
- if (!drive_udi) {
- handle_retrieve_error ("block.storage_device", udi, &error);
- goto done;
- }
-
- removable = libhal_device_get_property_bool (hal_ctx, drive_udi, "storage.removable", &error);
- if (!removable)
- goto done;
-
- /* Get the mount point */
- mount = libhal_device_get_property_string (hal_ctx, udi, "volume.mount_point", &error);
- if (!mount) {
- handle_retrieve_error ("volume.mount_point", udi, &error);
- goto done;
- }
-
- if (!mount[0])
- goto done;
-
- product = libhal_device_get_property_string (hal_ctx, udi, "info.product", &error);
- if (product && product)
- friendly = g_strdup_printf (_("Removable Disk: %s"), product);
- else
- friendly = g_strdup (_("Removable Disk"));
-
- g_message ("adding removable location: %s at %s", name, mount);
- gkr_location_manager_register (locmgr, name, mount, friendly);
-
- locvol = g_hash_table_lookup (pv->volumes_by_name, name);
- if (locvol)
- locvol->hal_volume = TRUE;
-
- /* A mount was removed? */
- } else if (!is_mounted && g_hash_table_lookup (pv->volumes_by_name, name)) {
-
- g_message ("removing removable location: %s", name);
- gkr_location_manager_unregister (locmgr, name);
-
- }
-
-done:
- if (drive_udi)
- libhal_free_string (drive_udi);
- if (mount)
- libhal_free_string (mount);
- if (product)
- libhal_free_string (product);
- g_free (friendly);
- g_free (name);
-
-}
-
-static void
-populate_all_volumes (GkrLocationManager *locmgr)
-{
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- char **volumes;
- int num_volumes, i;
- DBusError error;
-
- dbus_error_init (&error);
- volumes = libhal_find_device_by_capability (pv->hal_ctx, "volume", &num_volumes, &error);
-
- if (volumes) {
- for (i = 0; volumes && i < num_volumes; i++) {
- hal_device_added (pv->hal_ctx, volumes[i]);
- hal_device_property (pv->hal_ctx, volumes[i], "volume.is_mounted", FALSE, TRUE);
- }
- libhal_free_string_array (volumes);
- }
-}
-
-static gboolean
-location_manager_try_hal_connection (gpointer data)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (data);
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- pv->hal_retry = 0;
-
- location_manager_hal_init (locmgr);
-
- return FALSE;
-}
-
-static void
-location_manager_schedule_hal_retry (GkrLocationManager *locmgr) {
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- g_message ("Scheduling hal init retry");
-
- if (pv->hal_retry == 0)
- pv->hal_retry = g_timeout_add_seconds (30, location_manager_try_hal_connection,
- locmgr);
-}
-
-static void
-location_manager_hal_uninit (GkrLocationManager *locmgr)
-{
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- DBusError error;
-
- if (pv->hal_ctx) {
- dbus_error_init (&error);
- if (pv->dbus_connection != NULL && !libhal_ctx_shutdown (pv->hal_ctx, &error)) {
- g_warning ("failed to shutdown HAL context: %s\n", error.message);
- dbus_error_free (&error);
- }
-
- if (!libhal_ctx_free (pv->hal_ctx))
- g_warning ("failed to free HAL context");
- pv->hal_ctx = NULL;
- }
-
- if (pv->dbus_connection != NULL) {
- gkr_dbus_disconnect_from_mainloop (pv->dbus_connection, NULL);
- dbus_connection_unref (pv->dbus_connection);
- pv->dbus_connection = NULL;
- }
-}
-
-static void
-gather_hal_volume_names (gpointer key, gpointer value, gpointer user_data)
-{
- GList **list = (GList**)user_data;
- GkrLocationVolume *locvol = (GkrLocationVolume*)value;
- if (locvol->hal_volume)
- *list = g_list_prepend (*list, key);
-}
-
-static DBusHandlerResult
-location_manager_dbus_filter_function (DBusConnection *connection, DBusMessage *message, void *user_data)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (user_data);
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- GList *l, *names = NULL;
-
- if (dbus_message_is_signal (message, DBUS_INTERFACE_LOCAL, "Disconnected") &&
- strcmp (dbus_message_get_path (message), DBUS_PATH_LOCAL) == 0) {
-
- /* Reconnect to HAL when we can */
- location_manager_hal_uninit (locmgr);
- location_manager_schedule_hal_retry (locmgr);
-
- /* Remove all our HAL based volumes */
- g_hash_table_foreach (pv->volumes_by_name, gather_hal_volume_names, &names);
- for (l = names; l; l = g_list_next (l))
- gkr_location_manager_unregister (locmgr, (const gchar*)l->data);
- g_list_free (names);
-
- return DBUS_HANDLER_RESULT_HANDLED;
- }
-
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-}
-
-static void
-location_manager_hal_init (GkrLocationManager *locmgr)
-{
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- DBusError error;
-
- pv->hal_ctx = libhal_ctx_new ();
- if (!pv->hal_ctx) {
- g_warning ("failed to create a HAL context");
- goto failed;
- }
-
- /*
- * Although we can be started before the session bus, we should be
- * able to connect to the system bus without any trouble at all.
- */
-
- dbus_error_init (&error);
- pv->dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
- if (dbus_error_is_set (&error)) {
- g_warning ("error connecting to D-BUS system bus: %s", error.message);
- dbus_error_free (&error);
- goto failed;
- }
-
- gkr_dbus_connect_with_mainloop (pv->dbus_connection, NULL);
- dbus_connection_set_exit_on_disconnect (pv->dbus_connection, FALSE);
-
- dbus_connection_add_filter (pv->dbus_connection, location_manager_dbus_filter_function, locmgr, NULL);
-
- libhal_ctx_set_dbus_connection (pv->hal_ctx, pv->dbus_connection);
-
- libhal_ctx_set_device_added (pv->hal_ctx, hal_device_added);
- libhal_ctx_set_device_removed (pv->hal_ctx, hal_device_removed);
- libhal_ctx_set_device_property_modified (pv->hal_ctx, hal_device_property);
-
- if (!libhal_ctx_init (pv->hal_ctx, &error)) {
- g_warning ("failed to initialize a HAL context: %s\n", error.message);
- dbus_error_free (&error);
- goto failed;
- }
-
- libhal_ctx_set_user_data (pv->hal_ctx, locmgr);
-
- populate_all_volumes (locmgr);
-
- return;
-
-failed:
- location_manager_hal_uninit (locmgr);
- location_manager_schedule_hal_retry (locmgr);
-}
-
-#endif /* WITH_HAL */
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_location_manager_init (GkrLocationManager *locmgr)
-{
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- const gchar *home;
-#ifdef WITH_TESTS
- const gchar *env;
-#endif
- gchar *local = NULL;
-
- pv->volumes_by_name = g_hash_table_new_full (g_str_hash, g_str_equal,
- NULL, (GDestroyNotify)free_location_volume);
- pv->volumes_by_prefix = g_hash_table_new (g_str_hash, g_str_equal);
- pv->volumes_by_loc = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- pv->last_modified = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, (GDestroyNotify)free_mtime);
-
- home = g_get_home_dir ();
- g_return_if_fail (home && home[0]);
-
- /* Hidden location relative to file system and home directory */
- make_hidden_volume (locmgr, &pv->file_volume, GKR_LOCATION_NAME_FILE, "/", NULL);
- make_hidden_volume (locmgr, &pv->home_volume, GKR_LOCATION_NAME_HOME, home, _("Home"));
-
-
- /* We always register the .gnome2 local directory */
-#ifdef WITH_TESTS
- env = g_getenv ("GNOME_KEYRING_TEST_PATH");
- if (env && *env)
- local = g_strdup (env);
-#endif
- if (!local)
- local = g_build_filename (home, ".gnome2", NULL);
-
- gkr_location_manager_register (locmgr, GKR_LOCATION_NAME_LOCAL, local, _("Home"));
- g_free (local);
-
-#ifdef WITH_HAL
- location_manager_hal_init (locmgr);
-#endif
-}
-
-static void
-gkr_location_manager_dispose (GObject *obj)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (obj);
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
-#ifdef WITH_HAL
- location_manager_hal_uninit (locmgr);
- if (pv->hal_retry != 0)
- g_source_remove (pv->hal_retry);
- pv->hal_retry = 0;
-#endif
-
- g_hash_table_remove_all (pv->volumes_by_loc);
- g_hash_table_remove_all (pv->volumes_by_prefix);
- g_hash_table_remove_all (pv->volumes_by_name);
-
- g_hash_table_remove_all (pv->last_modified);
-
- G_OBJECT_CLASS (gkr_location_manager_parent_class)->dispose (obj);
-}
-
-static void
-gkr_location_manager_finalize (GObject *obj)
-{
- GkrLocationManager *locmgr = GKR_LOCATION_MANAGER (obj);
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- g_hash_table_destroy (pv->volumes_by_loc);
- pv->volumes_by_loc = NULL;
- g_hash_table_destroy (pv->volumes_by_prefix);
- pv->volumes_by_prefix = NULL;
- g_hash_table_destroy (pv->volumes_by_name);
- pv->volumes_by_name = NULL;
-
- g_hash_table_destroy (pv->last_modified);
- pv->last_modified = NULL;
-
- G_OBJECT_CLASS (gkr_location_manager_parent_class)->finalize (obj);
-}
-
-static void
-gkr_location_manager_class_init (GkrLocationManagerClass *klass)
-{
- GObjectClass *gobject_class = (GObjectClass*)klass;
-
- gkr_location_manager_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->dispose = gkr_location_manager_dispose;
- gobject_class->finalize = gkr_location_manager_finalize;
-
- signals[VOLUME_ADDED] = g_signal_new ("volume-added", GKR_TYPE_LOCATION_MANAGER,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrLocationManagerClass, volume_added),
- NULL, NULL, g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1, G_TYPE_UINT);
-
- signals[VOLUME_REMOVED] = g_signal_new ("volume-removed", GKR_TYPE_LOCATION_MANAGER,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrLocationManagerClass, volume_removed),
- NULL, NULL, g_cclosure_marshal_VOID__UINT,
- G_TYPE_NONE, 1, G_TYPE_UINT);
-
- g_type_class_add_private (klass, sizeof (GkrLocationManagerPrivate));
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrLocationManager*
-gkr_location_manager_get (void)
-{
- if (!location_manager_singleton) {
- location_manager_singleton = g_object_new (GKR_TYPE_LOCATION_MANAGER, NULL);
- gkr_cleanup_register (cleanup_location_manager, NULL);
- }
-
- return location_manager_singleton;
-}
-
-void
-gkr_location_manager_register (GkrLocationManager *locmgr, const gchar *name,
- const gchar *prefix, const gchar *friendly)
-{
- GkrLocationManagerPrivate *pv;
- GkrLocationVolume *locvol;
- GQuark volume_loc;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_if_fail (GKR_IS_LOCATION_MANAGER (locmgr));
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- g_return_if_fail (name && name[0]);
- g_return_if_fail (prefix && prefix[0]);
-
- locvol = g_hash_table_lookup (pv->volumes_by_prefix, prefix);
- if (locvol) {
- g_warning ("location device '%s' already registered at: %s",
- locvol->name, locvol->prefix);
- return;
- }
-
- locvol = g_hash_table_lookup (pv->volumes_by_prefix, name);
- if (locvol) {
- g_warning ("location device '%s' already registered at: %s",
- name, locvol->prefix);
- return;
- }
-
- volume_loc = make_volume_location (name);
-
- locvol = g_slice_new (GkrLocationVolume);
- locvol->name = g_strdup (name);
- locvol->prefix = g_strdup (prefix);
- locvol->friendly = g_strdup (friendly);
- locvol->volume_loc = volume_loc;
- locvol->hidden = FALSE;
-#ifdef WITH_HAL
- locvol->hal_volume = FALSE;
-#endif
-
- /* TODO: What about trailing slashes? */
-
- g_hash_table_replace (pv->volumes_by_name, locvol->name, locvol);
- g_hash_table_replace (pv->volumes_by_prefix, locvol->prefix, locvol);
- g_hash_table_replace (pv->volumes_by_loc, GUINT_TO_POINTER (volume_loc), locvol);
-
- g_signal_emit (locmgr, signals[VOLUME_ADDED], 0, volume_loc);
-}
-
-void
-gkr_location_manager_unregister (GkrLocationManager *locmgr, const gchar *name)
-{
- GkrLocationManagerPrivate *pv;
- GkrLocationVolume *locvol;
- GQuark volume_loc;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_if_fail (GKR_IS_LOCATION_MANAGER (locmgr));
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- g_return_if_fail (name && name[0]);
-
- locvol = g_hash_table_lookup (pv->volumes_by_name, name);
- if (!locvol) {
- g_warning ("location device not registered: %s", name);
- return;
- }
-
- volume_loc = locvol->volume_loc;
- g_hash_table_remove (pv->volumes_by_loc, GUINT_TO_POINTER (volume_loc));
- g_hash_table_remove (pv->volumes_by_prefix, locvol->prefix);
- g_hash_table_remove (pv->volumes_by_name, name);
-
- g_signal_emit (locmgr, signals[VOLUME_REMOVED], 0, volume_loc);
-}
-
-gboolean
-gkr_location_manager_has_volume (GkrLocationManager *locmgr, GQuark volume)
-{
- GkrLocationManagerPrivate *pv;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_val_if_fail (GKR_IS_LOCATION_MANAGER (locmgr), FALSE);
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- return g_hash_table_lookup (pv->volumes_by_loc, GUINT_TO_POINTER (volume)) ? TRUE : FALSE;
-}
-
-GSList*
-gkr_location_manager_get_volumes (GkrLocationManager *locmgr)
-{
- GkrLocationManagerPrivate *pv;
- GSList *ret = NULL;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_val_if_fail (GKR_IS_LOCATION_MANAGER (locmgr), NULL);
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- g_hash_table_foreach (pv->volumes_by_name, (GHFunc)list_locations, &ret);
- return ret;
-}
-
-const gchar*
-gkr_location_manager_get_volume_display (GkrLocationManager *locmgr, GQuark volume_loc)
-{
- GkrLocationManagerPrivate *pv;
- GkrLocationVolume *locvol;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
-
- g_return_val_if_fail (GKR_IS_LOCATION_MANAGER (locmgr), NULL);
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
-
- locvol = g_hash_table_lookup (pv->volumes_by_loc, GUINT_TO_POINTER (volume_loc));
- if (!locvol) {
- g_warning ("'%s' is not a valid volume location", g_quark_to_string (volume_loc));
- return NULL;
- }
-
- return locvol->friendly;
-}
-
-gboolean
-gkr_location_manager_note_mtime (GkrLocationManager *locmgr, GQuark location, time_t mtime)
-{
- GkrLocationManagerPrivate *pv;
- gboolean ret;
- gpointer key;
- time_t *last;
-
- if (!locmgr)
- locmgr = gkr_location_manager_get ();
- if (mtime <= 0)
- mtime = time (NULL);
-
- g_return_val_if_fail (GKR_IS_LOCATION_MANAGER (locmgr), FALSE);
- pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- g_return_val_if_fail (mtime > 0, FALSE);
-
- key = GUINT_TO_POINTER (location);
- last = g_hash_table_lookup (pv->last_modified, key);
-
- ret = (!last || *last < mtime);
-
- if (!last) {
- last = g_slice_new0 (time_t);
- g_hash_table_replace (pv->last_modified, key, last);
- }
-
- if (*last != mtime)
- *last = mtime;
-
- return ret;
-}
-
-/* -----------------------------------------------------------------------------
- * GLOBAL FUNCTIONS
- */
-
-typedef struct _FindClosestName {
- const gchar *search;
- const gchar *matched;
- const gchar *name;
-} FindClosestName;
-
-static void
-find_closest_name (gpointer unused, GkrLocationVolume *locvol, FindClosestName *ctx)
-{
- guint len;
-
- g_assert (locvol);
-
- len = strlen (locvol->prefix);
- if (strncmp (ctx->search, locvol->prefix, len) == 0) {
- if (!ctx->matched || strlen (ctx->matched) < len) {
- ctx->matched = locvol->prefix;
- ctx->name = locvol->name;
- }
- }
-}
-
-GQuark
-gkr_location_from_string (const gchar *str)
-{
- g_return_val_if_fail (str && str[0], 0);
-
- /* TODO: Some sort of validation? */
-
- return g_quark_from_string (str);
-}
-
-GQuark
-gkr_location_from_path (const gchar *path)
-{
- GkrLocationManager *locmgr = gkr_location_manager_get ();
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- FindClosestName ctx = { path, NULL, NULL };
- GQuark res;
- gchar *loc;
- const gchar *c;
-
- g_return_val_if_fail (path && path[0], 0);
- g_return_val_if_fail (g_path_is_absolute (path), 0);
-
- /* We don't allow a colon in our paths */
- for (c = path; *c; ++c) {
- if (*c == ':') {
- g_warning ("path has a colon in it. It cannot be used as a location: %s", path);
- g_return_val_if_reached (0);
- }
- }
-
- g_hash_table_foreach (pv->volumes_by_name, (GHFunc)find_closest_name, &ctx);
-
- /* Manually use filesystem if nothing matched */
- if (!ctx.name) {
- ctx.name = pv->file_volume.name;
- ctx.matched = "";
- }
-
- /* Take off the prefix */
- path += strlen (ctx.matched);
-
- loc = g_strconcat (ctx.name, LOC_DELIMITER, path, NULL);
- res = g_quark_from_string (loc);
- g_free (loc);
- return res;
-}
-
-GQuark
-gkr_location_from_child (GQuark parent, const gchar *child)
-{
- const gchar *c;
- gchar *path, *p;
- GQuark loc;
-
- g_return_val_if_fail (parent, 0);
-
- /* We don't allow a colon in our paths */
- for (c = child; *c; ++c) {
- if (*c == ':') {
- g_warning ("path has a colon in it. It cannot be used as a location: %s", child);
- g_return_val_if_reached (0);
- }
- }
-
- path = g_build_path (G_DIR_SEPARATOR_S, g_quark_to_string (parent), child, NULL);
-
- /* Strip out trailing slashes */
- p = path + strlen (path);
- while (p > path + 1) {
- *(p--) = 0;
- if (!G_IS_DIR_SEPARATOR (*p))
- break;
- }
-
- /* Strip out any trailing slashes */
- loc = g_quark_from_string (path);
- g_free (path);
- return loc;
-}
-
-static GkrLocationVolume*
-location_to_volume (GQuark loc, const gchar **remainder)
-{
- GkrLocationManager *locmgr = gkr_location_manager_get ();
- GkrLocationManagerPrivate *pv = GKR_LOCATION_MANAGER_GET_PRIVATE (locmgr);
- GkrLocationVolume *locvol;
- const gchar *bdelim, *sloc;
- gchar *name;
-
- g_return_val_if_fail (loc, NULL);
-
- sloc = g_quark_to_string (loc);
- g_return_val_if_fail (sloc, NULL);
-
- bdelim = strchr (sloc, LOC_DELIMITER_C);
- if (!bdelim) {
- g_warning ("The '%s' location is invalid", sloc);
- return NULL;
- }
-
- name = g_strndup (sloc, bdelim - sloc);
-
- locvol = g_hash_table_lookup (pv->volumes_by_name, name);
- if (!locvol) {
- g_free (name);
- return NULL;
- }
-
- g_free (name);
- if (remainder)
- *remainder = bdelim + 1;
- return locvol;
-}
-
-GQuark
-gkr_location_to_parent (GQuark parent)
-{
- const gchar *del, *sloc, *part;
- GQuark ret;
- gchar *str;
-
- g_return_val_if_fail (parent, 0);
-
- sloc = g_quark_to_string (parent);
- g_return_val_if_fail (sloc, 0);
-
- del = strchr (sloc, LOC_DELIMITER_C);
- if (!del) {
- g_warning ("The '%s' location is invalid", sloc);
- return 0;
- }
-
- part = strrchr (del + 1, G_DIR_SEPARATOR);
- str = g_strndup (sloc, (part ? part : del) - sloc);
- ret = g_quark_from_string (str);
- g_free (str);
-
- return ret;
-}
-
-gchar*
-gkr_location_to_path (GQuark loc)
-{
- GkrLocationVolume *locvol;
- const gchar *edelim, *path;
- gsize l;
- gchar *res;
-
- g_return_val_if_fail (loc, NULL);
-
- locvol = location_to_volume (loc, &path);
- if (!locvol)
- return NULL;
-
- edelim = strrchr (path, LOC_DELIMITER_C);
- if (edelim == NULL)
- edelim = path + strlen (path);
-
- /* Assemble carefully */
- l = strlen (locvol->prefix);
- res = g_malloc0 (l + (edelim - path) + 2);
- memcpy (res, locvol->prefix, l);
- memcpy (res + l, path, (edelim - path));
- return res;
-}
-
-const gchar*
-gkr_location_to_string (GQuark loc)
-{
- if (!loc)
- return NULL;
- return g_quark_to_string (loc);
-}
-
-gchar*
-gkr_location_to_display (GQuark loc)
-{
- gchar *filename;
- gchar *display;
-
- if (!loc)
- return g_strdup ("");
-
- filename = gkr_location_to_path (loc);
- if (!filename)
- return g_strdup ("");
-
- display = g_filename_display_basename (filename);
- g_free (filename);
- if (!display)
- return g_strdup ("");
-
- return display;
-}
-
-gboolean
-gkr_location_is_descendant (GQuark parent, GQuark descendant)
-{
- const gchar *sparent = g_quark_to_string (parent);
- const gchar *sdescendant = g_quark_to_string (descendant);
- if (!sparent || !sdescendant)
- return FALSE;
- return memcmp (sparent, sdescendant, strlen (sparent)) == 0;
-}
-
-GQuark
-gkr_location_get_volume (GQuark loc)
-{
- GkrLocationVolume *locvol;
-
- g_return_val_if_fail (loc, 0);
-
- locvol = location_to_volume (loc, NULL);
- if (!locvol)
- return 0;
-
- return locvol->volume_loc;
-}
-
-gboolean
-gkr_location_test_file (GQuark loc, GFileTest test)
-{
- gboolean ret;
- gchar *path;
-
- g_return_val_if_fail (loc != 0, FALSE);
-
- path = gkr_location_to_path (loc);
- if (!path)
- return FALSE;
-
- ret = g_file_test (path, test);
- g_free (path);
-
- return ret;
-}
-
-gboolean
-gkr_location_read_file (GQuark loc, guchar **data, gsize *len, GError **err)
-{
- gboolean ret;
- gchar *path;
-
- g_return_val_if_fail (loc != 0, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
- g_return_val_if_fail (!err || !*err, FALSE);
-
- path = gkr_location_to_path (loc);
- if (!path) {
- g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NODEV, "%s",
- _("The disk or drive this file is located on is not present"));
- return FALSE;
- }
-
- ret = g_file_get_contents (path, (gchar**)data, len, err);
- g_free (path);
-
- return ret;
-}
-
-gboolean
-gkr_location_write_file (GQuark loc, const guchar *data, gssize len, GError **err)
-{
- gboolean ret;
- gchar *path;
-
- g_return_val_if_fail (loc != 0, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
- g_return_val_if_fail (!err || !*err, FALSE);
-
- path = gkr_location_to_path (loc);
- if (!path) {
- g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NODEV, "%s",
- _("The disk or drive this file is located on is not present"));
- return FALSE;
- }
-
- ret = g_file_set_contents (path, (const gchar*)data, len, err);
- g_free (path);
-
- return ret;
-}
diff --git a/common/gkr-location.h b/common/gkr-location.h
deleted file mode 100644
index 40e6cd6f..00000000
--- a/common/gkr-location.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-location.c - A filesystem location with some resiliency
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRLOCATION_H_
-#define GKRLOCATION_H_
-
-#include <glib.h>
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-/* -----------------------------------------------------------------------------
- * GENERAL LOCATION FUNCTIONS
- */
-
-#define GKR_LOCATION_NAME_LOCAL "LOCAL"
-#define GKR_LOCATION_VOLUME_LOCAL_S "LOCAL:"
-#define GKR_LOCATION_VOLUME_LOCAL (gkr_location_from_string (GKR_LOCATION_VOLUME_LOCAL_S))
-
-#define GKR_LOCATION_NAME_HOME "HOME"
-#define GKR_LOCATION_VOLUME_HOME_S "HOME:"
-#define GKR_LOCATION_VOLUME_HOME (gkr_location_from_string (GKR_LOCATION_VOLUME_HOME_S))
-
-#define GKR_LOCATION_NAME_FILE "FILE"
-#define GKR_LOCATION_VOLUME_FILE_S "FILE:"
-#define GKR_LOCATION_VOLUME_FILE (gkr_location_from_string (GKR_LOCATION_VOLUME_FILE_S))
-
-GQuark gkr_location_from_path (const gchar *path);
-
-GQuark gkr_location_from_string (const gchar *str);
-
-GQuark gkr_location_from_child (GQuark parent, const gchar *child);
-
-GQuark gkr_location_to_parent (GQuark parent);
-
-const gchar* gkr_location_to_string (GQuark loc);
-
-gchar* gkr_location_to_path (GQuark loc);
-
-gboolean gkr_location_is_descendant (GQuark parent, GQuark descendant);
-
-GQuark gkr_location_get_volume (GQuark loc);
-
-gchar* gkr_location_to_display (GQuark loc);
-
-/* -----------------------------------------------------------------------------
- * UTILITIES
- */
-
-gboolean gkr_location_test_file (GQuark loc, GFileTest test);
-
-gboolean gkr_location_read_file (GQuark loc, guchar **data, gsize *len, GError **err);
-
-gboolean gkr_location_write_file (GQuark loc, const guchar *data, gssize len, GError **err);
-
-/* -------------------------------------------------------------------------- */
-
-#define GKR_TYPE_LOCATION_MANAGER (gkr_location_manager_get_type ())
-#define GKR_LOCATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_LOCATION_MANAGER, GkrLocationManager))
-#define GKR_LOCATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_LOCATION_MANAGER, GObject))
-#define GKR_IS_LOCATION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_LOCATION_MANAGER))
-#define GKR_IS_LOCATION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_LOCATION_MANAGER))
-#define GKR_LOCATION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_LOCATION_MANAGER, GkrLocationManagerClass))
-
-typedef struct _GkrLocationManager GkrLocationManager;
-typedef struct _GkrLocationManagerClass GkrLocationManagerClass;
-
-struct _GkrLocationManager {
- GObject parent;
-};
-
-struct _GkrLocationManagerClass {
- GObjectClass parent_class;
-
- void (*volume_added) (GkrLocationManager *locmgr, GQuark volume);
-
- void (*volume_removed) (GkrLocationManager *locmgr, GQuark volume);
-};
-
-GType gkr_location_manager_get_type (void) G_GNUC_CONST;
-
-GkrLocationManager* gkr_location_manager_get (void);
-
-void gkr_location_manager_register (GkrLocationManager *locmgr,
- const gchar *name,
- const gchar *prefix,
- const gchar *friendly);
-
-void gkr_location_manager_unregister (GkrLocationManager *locmgr,
- const gchar *name);
-
-gboolean gkr_location_manager_has_volume (GkrLocationManager *locmgr,
- GQuark volume);
-
-GSList* gkr_location_manager_get_volumes (GkrLocationManager *locmgr);
-
-const gchar* gkr_location_manager_get_volume_display (GkrLocationManager *locmgr,
- GQuark volume);
-
-gboolean gkr_location_manager_note_mtime (GkrLocationManager *locmgr,
- GQuark location,
- time_t mtime);
-
-G_END_DECLS
-
-#endif /*GKRLOCATION_H_*/
diff --git a/common/gkr-secure-memory.c b/common/gkr-secure-memory.c
deleted file mode 100644
index b330a573..00000000
--- a/common/gkr-secure-memory.c
+++ /dev/null
@@ -1,800 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-secure-memory.h - library for allocating memory that is non-pageable
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-/*
- * IMPORTANT: This is pure vanila standard C, no glib. We need this
- * because certain consumers of this protocol need to be built
- * without linking in any special libraries. ie: the PKCS#11 module.
- */
-
-#include "config.h"
-
-#include "gkr-secure-memory.h"
-
-#include <sys/types.h>
-#include <sys/mman.h>
-#include <stddef.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <assert.h>
-
-/*
- * Use this to force all memory through malloc
- * for use with valgrind and the like
- */
-#define FORCE_MALLOC_MEMORY 0
-#define FORCE_FALLBACK_MEMORY 0
-
-#define DEBUG_SECURE_MEMORY 0
-
-#if DEBUG_SECURE_MEMORY
-#define DEBUG_ALLOC(msg, n) fprintf(stderr, "%s %lu bytes\n", msg, n);
-#else
-#define DEBUG_ALLOC(msg, n)
-#endif
-
-#define DEFAULT_BLOCK_SIZE 16384
-
-/* Use our own assert to guarantee no glib allocations */
-#ifndef ASSERT
-#ifdef G_DISABLE_ASSERT
-#define ASSERT(x)
-#else
-#define ASSERT(x) assert(x)
-#endif
-#endif
-
-#define DO_LOCK() \
- gkr_memory_lock ();
-
-#define DO_UNLOCK() \
- gkr_memory_unlock ();
-
-#define MEM_ALIGN (sizeof(void*) > sizeof(long) ? sizeof(void*) : sizeof(long))
-
-/* -----------------------------------------------------------------------------
- * BLOCK SUBALLOCATION
- */
-
-/* suba - sub-allocate memory from larger chunk of memory
- * Copyright (c) 2003 Michael B. Allen <mba2000 ioplex.com>
- *
- * The MIT License
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-typedef size_t ref_t; /* suba offset from start of memory to object */
-
-#define SUBA_MAGIC "\xFF\x15\x15\x15SUBA"
-#define CELL_MAGIC 0x7777CE11
-#define ALIGN(s) ((((s) / MEM_ALIGN) + (((s) % MEM_ALIGN) ? 1 : 0)) * MEM_ALIGN)
-#define POFF (ALIGN(sizeof(size_t)) + ALIGN(sizeof(unsigned int)))
-#define C2P(c) ((char *)(c) + POFF)
-#define P2C(p) ((struct cell *)((char *)(p) - POFF))
-#define ISADJ(c1,c2) ((struct cell *)(C2P(c1) + (c1)->size) == (struct cell *)(c2))
-#define SREF(s,p) (ref_t)((char *)(p) - (char *)(s))
-#define SADR(s,r) (void *)((char *)(s) + (r))
-#define RECLAIM_DEPTH_MAX 2
-
-struct allocator {
- unsigned char magic[8]; /* suba header identifier */
- ref_t tail; /* offset to first cell in free list */
- size_t mincell; /* min cell size must be at least sizeof cell */
- size_t size; /* total size of memory area */
- size_t alloc_total; /* total bytes utilized from this allocator */
- size_t free_total; /* total bytes released from this allocator */
- size_t size_total; /* total bytes requested from this allocator */
- ref_t userref;
-};
-
-struct cell {
- size_t size;
- unsigned int magic;
- ref_t next; /* reference to next cell in free list */
-};
-
-static void*
-suba_addr (const struct allocator *suba, const ref_t ref)
-{
- if (suba && ref > 0 && ref <= suba->size) {
- return (char *)suba + ref;
- }
- return NULL;
-}
-
-static ref_t
-suba_ref (const struct allocator *suba, const void *ptr)
-{
- if (suba && ptr) {
- ref_t ref = (char *)ptr - (char *)suba;
- if (ref > 0 && ref <= suba->size) {
- return ref;
- }
- }
- return 0;
-}
-
-static struct allocator *
-suba_init (void *mem, size_t size, size_t mincell)
-{
- struct allocator *suba = mem;
- size_t hdrsiz;
- struct cell *c;
-
- hdrsiz = ALIGN(sizeof *suba);
-
- ASSERT (mem != NULL);
- ASSERT (size > (hdrsiz + POFF));
-
- memset(suba, 0, hdrsiz);
- memcpy(suba->magic, SUBA_MAGIC, 8);
- suba->tail = hdrsiz;
- suba->mincell = mincell < ALIGN (sizeof (*c)) ? ALIGN (sizeof (*c)) : ALIGN (mincell);
- suba->size = size;
-
- c = suba_addr(suba, hdrsiz);
- c->size = size - (hdrsiz + POFF);
- c->next = suba->tail;
-
- return suba;
-}
-
-static void *
-suba_alloc(struct allocator *suba, size_t size)
-{
- struct cell *c1, *c2, *c3;
- size_t s = size;
-
- size = size < suba->mincell ? suba->mincell : ALIGN(size);
-
- c2 = SADR(suba, suba->tail);
- for ( ;; ) {
- c1 = c2;
- if ((c2 = suba_addr(suba, c1->next)) == NULL) {
- errno = EFAULT;
- return NULL;
- }
- if (c2->size >= size) {
- break; /* found a cell large enough */
- }
- if (c1->next == suba->tail) {
- return NULL;
- }
- }
-
- if ((c2->size - size) > suba->mincell) {
- /* split new cell */
- c3 = (struct cell *)(C2P(c2) + size);
- c3->size = c2->size - (size + POFF);
- if (c1 == c2) {
- c1 = c3;
- } else {
- c3->next = c2->next;
- }
- c1->next = SREF(suba, c3);
- c2->size = size;
- if (c2 == SADR(suba, suba->tail)) {
- suba->tail = SREF(suba, c3);
- }
- } else if (c1->next == suba->tail) {
- /* never use the last cell! */
- } else {
- /* use the entire cell */
- c1->next = c2->next;
- }
-
- suba->alloc_total += POFF + c2->size;
- suba->size_total += s;
-
- c2->magic = CELL_MAGIC;
- DEBUG_ALLOC ("gkr-secure-memory: allocated ", (unsigned long)size);
-
- /* TODO: Fix suba, so always allocates zero */
- memset (C2P(c2), 0, size);
-
- return C2P(c2);
-}
-
-static void
-suba_free(void *suba0, void *ptr)
-{
- struct allocator *suba = suba0;
- struct cell *c1, *c2, *c3;
- volatile char *vp;
- size_t len;
- ref_t ref;
- int j1, j2;
-
- if (!ptr)
- return;
-
- c1 = SADR(suba, suba->tail);
-
- /* Find out what cell we're talking about */
- c2 = P2C(ptr);
- if ((ref = suba_ref(suba, c2)) == 0) {
- ASSERT(0 && "invalid memory pointer passed to gkr-secure-memory");
- return;
- }
- if (c2->magic != CELL_MAGIC) {
- ASSERT(0 && "invalid memory pointer passed to gkr-secure-memory");
- return;
- }
-
- /* Clear out memory */
- vp = (volatile char*)ptr;
- len = c2->size;
- while (len) {
- *vp = 0xaa;
- vp++;
- len--;
- }
-
- suba->free_total += POFF + c2->size;
- suba->alloc_total -= (POFF + c2->size);
-
- c2->magic = 0;
- DEBUG_ALLOC ("gkr-secure-memory: freed ", (unsigned long)c2->size);
-
- /* splice the cell back into the list */
- if (c2 > c1) { /* append to end of list */
- if (ISADJ(c1,c2)) { /* join with last cell */
- c1->size += POFF + c2->size;
- return;
- }
- c2->next = c1->next;
- suba->tail = c1->next = ref;
- return;
- }
-
- while (c1->next < ref) { /* find insertion point */
- c1 = SADR(suba, c1->next);
- }
- c3 = SADR(suba, c1->next);
-
- j1 = ISADJ(c1,c2); /* c1 and c2 need to be joined */
- j2 = ISADJ(c2,c3); /* c2 and c3 need to be joined */
-
- if (j1) {
- if (j2) { /* splice all three cells together */
- if (SREF(suba, c3) == suba->tail) {
- suba->tail = SREF(suba, c1);
- }
- c1->next = c3->next;
- c1->size += POFF + c3->size;
- }
- c1->size += POFF + c2->size;
- } else {
- if (j2) {
- if (SREF(suba, c3) == suba->tail) {
- suba->tail = ref;
- }
- c2->next = c3->next == SREF(suba, c3) ? ref : c3->next;
- c2->size += POFF + c3->size;
- } else {
- c2->next = c1->next;
- }
- c1->next = ref;
- }
-}
-
-static void *
-suba_realloc(struct allocator *suba, void *ptr, size_t size)
-{
- struct cell *c;
- void *p;
-
- if (ptr == NULL)
- return suba_alloc(suba, size);
- if (size == 0) {
- suba_free(suba, ptr);
- return NULL;
- }
- c = P2C(ptr);
- if (c->size < size || (c->size - ALIGN(size)) > suba->mincell) {
- p = suba_alloc(suba, size);
- } else {
- return ptr;
- }
- if (p) {
- memcpy(p, ptr, c->size);
- suba_free(suba, ptr);
- }
-
- return p;
-}
-
-static int
-suba_print_cell(struct allocator *suba, const char *msg, struct cell *c)
-{
- ref_t ref = suba_ref(suba, c);
- if (ref >= ALIGN(sizeof *suba) && (ref + POFF + c->size) <= 10000000) {
- fprintf(stderr, "%s: %8u-%-8u %8u %-8u\n", msg,
- (unsigned int)ref, (unsigned int)(ref + POFF + c->size),
- (unsigned int)c->size, (unsigned int)c->next);
- } else {
- fprintf(stderr, "%s: %8u-err %8u %-8u\n", msg,
- (unsigned int)ref, (unsigned int)c->size,
- (unsigned int)c->next);
- return 0;
- }
- return 1;
-}
-
-static int
-suba_print_free_list(struct allocator *suba)
-{
- struct cell *c;
- char buf[10];
- int count = 0;
- int ret = 1;
-
- c = suba_addr(suba, suba->tail);
- while (c->next < suba->tail) {
- c = suba_addr(suba, c->next);
- sprintf(buf, "%d", count++);
- if (!suba_print_cell(suba, buf, c)) {
- ret = 0;
- }
- }
- c = suba_addr(suba, c->next);
- sprintf(buf, "%d", count++);
- if (!suba_print_cell(suba, buf, c)) {
- ret = 0;
- }
-
- return ret;
-}
-
-static size_t
-suba_allocation_size (struct allocator *suba, void *ptr)
-{
- struct cell *c = P2C(ptr);
- if (c->magic != CELL_MAGIC) {
- ASSERT(0 && "invalid memory pointer passed to gkr-secure-memory");
- return 0;
- }
- return c->size;
-}
-
-/* -----------------------------------------------------------------------------
- * PAGE SOURCE -- Where blocks of locked memory pages come from.
- */
-
-static int lock_warning = 1;
-
-static void*
-get_locked_pages (unsigned long *sz)
-{
- void *pages;
- unsigned long pgsize;
-
- ASSERT (sz);
- ASSERT (*sz);
-
- /* Make sure sz is a multiple of the page size */
- pgsize = getpagesize ();
- *sz = (*sz + pgsize -1) & ~(pgsize - 1);
-
-#if FORCE_MALLOC_MEMORY
- pages = malloc (*sz);
- memset (pages, 0, *sz);
- lock_warning = 1;
- return pages;
-
-#elif defined(HAVE_MLOCK)
- pages = mmap (0, *sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
- if (pages == MAP_FAILED) {
- if (lock_warning)
- fprintf (stderr, "couldn't map %lu bytes of private memory: %s\n",
- *sz, strerror (errno));
- lock_warning = 0;
- return NULL;
- }
-
- if (mlock (pages, *sz) < 0) {
- if (lock_warning && errno != EPERM) {
- fprintf (stderr, "couldn't lock %lu bytes of private memory: %s\n",
- *sz, strerror (errno));
- lock_warning = 0;
- }
- munmap (pages, *sz);
- return NULL;
- }
-
- DEBUG_ALLOC ("gkr-secure-memory: new block ", *sz);
-
- lock_warning = 1;
- return pages;
-
-#else
- if (lock_warning)
- fprintf (stderr, "your system does not support private memory");
- lock_warning = 0;
- return NULL;
-#endif
-
-}
-
-static void
-rel_locked_pages (void *pages, unsigned long sz)
-{
- ASSERT (pages);
- ASSERT (sz % getpagesize () == 0);
-
-#if FORCE_MALLOC_MEMORY
- free (pages);
-
-#elif defined(HAVE_MLOCK)
- if (munlock (pages, sz) < 0)
- fprintf (stderr, "couldn't unlock private memory: %s\n", strerror (errno));
-
- if (munmap (pages, sz) < 0)
- fprintf (stderr, "couldn't unmap private anonymous memory: %s\n", strerror (errno));
-
- DEBUG_ALLOC ("gkr-secure-memory: freed block ", sz);
-
-#else
- ASSERT (FALSE);
-#endif
-}
-
-/* -----------------------------------------------------------------------------
- * MANAGE DIFFERENT BLOCKS
- */
-
-typedef struct _MemBlock {
- unsigned long size;
- struct allocator *suba;
- struct _MemBlock *next;
-} MemBlock;
-
-static MemBlock *most_recent_block = NULL;
-
-static MemBlock*
-block_create (unsigned long size)
-{
- MemBlock *bl;
- void *blmem;
-
-#if FORCE_FALLBACK_MEMORY
- /* We can force all all memory to be malloced */
- return NULL;
-#endif
-
- size += sizeof (MemBlock);
-
- /* The size above is a minimum, we're free to go bigger */
- if (size < DEFAULT_BLOCK_SIZE)
- size = DEFAULT_BLOCK_SIZE;
-
- blmem = get_locked_pages (&size);
- if (!blmem)
- return NULL;
-
- bl = (MemBlock*)blmem;
- bl->size = size;
- bl->suba = suba_init (((unsigned char*)blmem) + sizeof (MemBlock),
- size - sizeof (MemBlock), 32);
- ASSERT (bl->suba);
-
- bl->next = most_recent_block;
- most_recent_block = bl;
-
- return bl;
-}
-
-static void
-block_destroy (MemBlock *bl)
-{
- MemBlock *b;
-
- ASSERT (bl && bl->suba);
- ASSERT (bl->size > 0);
- ASSERT (bl->suba->alloc_total == 0);
-
- /* Is the most recent block, simple */
- if (bl == most_recent_block) {
- most_recent_block = bl->next;
-
- /* Take it out of our list */
- } else {
- for (b = most_recent_block; b; b = b->next) {
- if (b->next == bl) {
- b->next = bl->next;
- break;
- }
- }
- ASSERT (b != NULL && "couldn't find memory block in list");
- }
-
- /* Memory is all in one block, nothing fancy to free */
- rel_locked_pages(bl, bl->size);
-}
-
-static int
-block_belongs (MemBlock *bl, const void *p)
-{
- ASSERT (bl);
- ASSERT (bl->size > 0);
-
- /* This does not check for invalid memory */
- return ((char*)p) >= ((char*)bl) &&
- ((char*)p) < (((char*)bl) + bl->size);
-}
-
-void*
-gkr_secure_alloc (unsigned long sz)
-{
- return gkr_secure_alloc_full (sz, GKR_SECURE_USE_FALLBACK);
-}
-
-void*
-gkr_secure_alloc_full (unsigned long sz, int flags)
-{
- MemBlock *bl;
- void *p = NULL;
-
- if (sz > 0xFFFFFFFF / 2) {
- fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n", sz);
- return NULL;
- }
-
- DO_LOCK ();
-
- for (bl = most_recent_block; bl; bl = bl->next) {
- p = suba_alloc (bl->suba, sz);
- if (p)
- break;
- }
-
- /* None of the current blocks have space, allocate new */
- if (!p) {
- bl = block_create (sz);
- if (bl) {
- p = suba_alloc (bl->suba, sz);
- ASSERT (p);
- }
- }
-
- DO_UNLOCK ();
-
- if (!p && (flags & GKR_SECURE_USE_FALLBACK)) {
- p = gkr_memory_fallback (NULL, sz);
- if (p) /* Our returned memory is always zeroed */
- memset (p, 0, sz);
- }
-
- if (!p)
- errno = ENOMEM;
-
- return p;
-}
-
-void*
-gkr_secure_realloc (void *p, unsigned long sz)
-{
- return gkr_secure_realloc_full (p, sz, GKR_SECURE_USE_FALLBACK);
-}
-
-void*
-gkr_secure_realloc_full (void *p, unsigned long sz, int flags)
-{
- MemBlock *bl = NULL;
- unsigned long oldsz = 0;
- int donew = 0;
- void *n = NULL;
-
- if (sz > 0xFFFFFFFF / 2) {
- fprintf (stderr, "tried to allocate an insane amount of memory: %lu\n", sz);
- ASSERT (0 && "tried to allocate an insane amount of memory");
- return NULL;
- }
-
- if (p == NULL)
- return gkr_secure_alloc_full (sz, flags);
- if (!sz) {
- gkr_secure_free_full (p, flags);
- return NULL;
- }
-
- DO_LOCK ();
-
- /* Find out where it belongs to */
- for (bl = most_recent_block; bl; bl = bl->next) {
- if (block_belongs (bl, p)) {
- oldsz = suba_allocation_size (bl->suba, p);
- n = suba_realloc (bl->suba, p, sz);
- break;
- }
- }
-
- /* If it didn't work we may need to allocate a new block */
- if (bl && !n)
- donew = 1;
-
- if (bl && bl->suba->alloc_total == 0)
- block_destroy (bl);
-
- DO_UNLOCK ();
-
- if (!bl) {
- if ((flags & GKR_SECURE_USE_FALLBACK)) {
- /*
- * In this case we can't zero the returned memory,
- * because we don't know what the block size was.
- */
- return gkr_memory_fallback (p, sz);
- } else {
- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", (unsigned long)p);
- ASSERT (0 && "memory does does not belong to gnome-keyring");
- return NULL;
- }
- }
-
- if (donew) {
- n = gkr_secure_alloc_full (sz, flags);
- if (n) {
- memcpy (n, p, oldsz);
- gkr_secure_free_full (p, flags);
- }
- }
-
- if (!n)
- errno = ENOMEM;
-
- return n;
-}
-
-void
-gkr_secure_free (void *p)
-{
- gkr_secure_free_full (p, GKR_SECURE_USE_FALLBACK);
-}
-
-void
-gkr_secure_free_full (void *p, int flags)
-{
- MemBlock *bl = NULL;
-
- DO_LOCK ();
-
- /* Find out where it belongs to */
- for (bl = most_recent_block; bl; bl = bl->next) {
- if (block_belongs (bl, p)) {
- suba_free (bl->suba, p);
- break;
- }
- }
-
- if (bl && bl->suba->alloc_total == 0)
- block_destroy (bl);
-
- DO_UNLOCK ();
-
- if (!bl) {
- if ((flags & GKR_SECURE_USE_FALLBACK)) {
- gkr_memory_fallback (p, 0);
- } else {
- fprintf (stderr, "memory does not belong to gnome-keyring: 0x%08lx\n", (unsigned long)p);
- ASSERT (0 && "memory does does not belong to gnome-keyring");
- }
- }
-}
-
-int
-gkr_secure_check (const void *p)
-{
- MemBlock *bl = NULL;
-
- DO_LOCK ();
-
- /* Find out where it belongs to */
- for (bl = most_recent_block; bl; bl = bl->next) {
- if (block_belongs (bl, p))
- break;
- }
-
- DO_UNLOCK ();
-
- return bl == NULL ? 0 : 1;
-}
-
-void
-gkr_secure_dump_blocks (void)
-{
- MemBlock *bl = NULL;
-
- DO_LOCK ();
-
- /* Find out where it belongs to */
- for (bl = most_recent_block; bl; bl = bl->next) {
- fprintf (stderr, "----------------------------------------------------\n");
- fprintf (stderr, " BLOCK at: 0x%08lx len: %lu\n", (unsigned long)bl, bl->size);
- fprintf (stderr, "\n");
- suba_print_free_list (bl->suba);
- }
-
- DO_UNLOCK ();
-}
-
-char*
-gkr_secure_strdup (const char *str)
-{
- unsigned long len;
- char *res;
-
- if (!str)
- return NULL;
-
- len = strlen (str) + 1;
- res = (char*)gkr_secure_alloc (len);
- strcpy (res, str);
- return res;
-}
-
-void
-gkr_secure_strfree (char *str)
-{
- volatile char *vp;
- size_t len;
-
- if (!str)
- return;
-
- /*
- * If we're using unpageable 'secure' memory, then the free call
- * should zero out the memory, but because on certain platforms
- * we may be using normal memory, zero it out here just in case.
- */
-
- vp = (volatile char*)str;
- len = strlen (str);
- while (len) {
- *vp = 0xAA;
- vp++;
- len--;
- }
-
- gkr_secure_free_full (str, GKR_SECURE_USE_FALLBACK);
-}
diff --git a/common/gkr-secure-memory.h b/common/gkr-secure-memory.h
deleted file mode 100644
index 485b251b..00000000
--- a/common/gkr-secure-memory.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-secure-memory.h - library for allocating memory that is non-pageable
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKR_SECURE_MEMORY_H
-#define GKR_SECURE_MEMORY_H
-
-/* -------------------------------------------------------------------
- * Low Level Secure Memory
- *
- * IMPORTANT: This is pure vanila standard C, no glib. We need this
- * because certain consumers of this protocol need to be built
- * without linking in any special libraries. ie: the PKCS#11 module.
- *
- * Thread locking
- *
- * In order to use these functions in a module the following functions
- * must be defined somewhere, and provide appropriate locking for
- * secure memory between threads:
- */
-
-extern void gkr_memory_lock (void);
-
-extern void gkr_memory_unlock (void);
-
-/*
- * Allocation Fallbacks
- *
- * If we cannot allocate secure memory, then this function
- * (defined elsewhere) will be called which has a chance to
- * allocate other memory abort or do whatever.
- *
- * Same call semantics as realloc with regard to NULL and zeros
- */
-extern void* gkr_memory_fallback (void *p, unsigned long sz);
-
-
-/*
- * Main functionality
- *
- * Allocations return NULL on failure.
- */
-
-#define GKR_SECURE_USE_FALLBACK 0x0001
-
-void* gkr_secure_alloc (unsigned long sz);
-
-void* gkr_secure_alloc_full (unsigned long, int flags);
-
-void* gkr_secure_realloc (void *p, unsigned long sz);
-
-void* gkr_secure_realloc_full (void *p, unsigned long sz, int fallback);
-
-void gkr_secure_free (void* p);
-
-void gkr_secure_free_full (void* p, int fallback);
-
-int gkr_secure_check (const void* p);
-
-void gkr_secure_dump_blocks (void);
-
-char* gkr_secure_strdup (const char *str);
-
-void gkr_secure_strfree (char *str);
-
-#endif /* GKR_SECURE_MEMORY_H */
diff --git a/common/gkr-unix-credentials.c b/common/gkr-unix-credentials.c
deleted file mode 100644
index 3d0b4c7d..00000000
--- a/common/gkr-unix-credentials.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-unix-credentials.c - write and read unix credentials on socket
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-unix-credentials.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-
-#if defined(HAVE_GETPEERUCRED)
-#include <ucred.h>
-#endif
-
-int
-gkr_unix_credentials_read (int sock, pid_t *pid, uid_t *uid)
-{
- struct msghdr msg;
- struct iovec iov;
- char buf;
- int ret;
-
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
- /* Prefer CMSGCRED over LOCAL_CREDS because the former provides the
- * remote PID. */
-#if defined(HAVE_CMSGCRED)
- struct cmsgcred *cred;
- const size_t cmsglen = CMSG_LEN (sizeof (struct cmsgcred));
- const size_t cmsgspace = CMSG_SPACE (sizeof (struct cmsgcred));
-#else /* defined(LOCAL_CREDS) */
- struct sockcred *cred;
- const size_t cmsglen = CMSG_LEN (sizeof (struct sockcred));
- const size_t cmsgspace = CMSG_SPACE (sizeof (struct sockcred));
-#endif
- union {
- struct cmsghdr hdr;
- char cred[cmsgspace];
- } cmsg;
-#endif
-
- *pid = 0;
- *uid = 0;
-
- /* If LOCAL_CREDS are used in this platform, they have already been
- * initialized by init_connection prior to sending of the credentials
- * byte we receive below. */
-
- iov.iov_base = &buf;
- iov.iov_len = 1;
-
- memset (&msg, 0, sizeof (msg));
- msg.msg_iov = &iov;
- msg.msg_iovlen = 1;
-
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
- memset (&cmsg, 0, sizeof (cmsg));
- msg.msg_control = (caddr_t) &cmsg;
- msg.msg_controllen = cmsgspace;
-#endif
-
- again:
- ret = recvmsg (sock, &msg, 0);
-
- if (ret < 0) {
- if (errno == EINTR)
- goto again;
- return -1;
- }
-
- if (buf != '\0') {
- fprintf (stderr, "credentials byte was not nul\n");
- return -1;
- }
-
-#if defined(HAVE_CMSGCRED) || defined(LOCAL_CREDS)
- if (cmsg.hdr.cmsg_len < cmsglen || cmsg.hdr.cmsg_type != SCM_CREDS) {
- fprintf (stderr, "message from recvmsg() was not SCM_CREDS\n");
- return -1;
- }
-#endif
-
- {
-#ifdef SO_PEERCRED
- struct ucred cr;
- socklen_t cr_len = sizeof (cr);
-
- if (getsockopt (sock, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 &&
- cr_len == sizeof (cr)) {
- *pid = cr.pid;
- *uid = cr.uid;
- } else {
- fprintf (stderr, "failed to getsockopt() credentials, returned len %d/%d\n",
- cr_len, (int) sizeof (cr));
- return -1;
- }
-#elif defined(HAVE_CMSGCRED)
- cred = (struct cmsgcred *) CMSG_DATA (&cmsg.hdr);
- *pid = cred->cmcred_pid;
- *uid = cred->cmcred_euid;
-#elif defined(LOCAL_CREDS)
- cred = (struct sockcred *) CMSG_DATA (&cmsg.hdr);
- *pid = 0;
- *uid = cred->sc_euid;
- set_local_creds(sock, 0);
-#elif defined(HAVE_GETPEEREID) /* OpenBSD */
- uid_t euid;
- gid_t egid;
- *pid = 0;
-
- if (getpeereid (sock, &euid, &egid) == 0) {
- *uid = euid;
- } else {
- fprintf (stderr, "getpeereid() failed: %s\n", strerror (errno));
- return -1;
- }
-#elif defined(HAVE_GETPEERUCRED)
- ucred_t *uc = NULL;
-
- if (getpeerucred (sock, &uc) == 0) {
- *pid = ucred_getpid (uc);
- *uid = ucred_geteuid (uc);
- ucred_free (uc);
- } else {
- fprintf (stderr, "getpeerucred() failed: %s\n", strerror (errno));
- return -1;
- }
-#else /* !SO_PEERCRED && !HAVE_CMSGCRED */
- fprintf (stderr, "socket credentials not supported on this OS\n");
- return -1;
-#endif
- }
-
- return 0;
-}
-
-int
-gkr_unix_credentials_write (int socket)
-{
- char buf;
- int bytes_written;
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
- union {
- struct cmsghdr hdr;
- char cred[CMSG_SPACE (sizeof (struct cmsgcred))];
- } cmsg;
- struct iovec iov;
- struct msghdr msg;
-#endif
-
- buf = 0;
-
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
- iov.iov_base = &buf;
- iov.iov_len = 1;
-
- memset (&msg, 0, sizeof (msg));
- msg.msg_iov = &iov;
- msg.msg_iovlen = 1;
-
- msg.msg_control = (caddr_t) &cmsg;
- msg.msg_controllen = CMSG_SPACE (sizeof (struct cmsgcred));
- memset (&cmsg, 0, sizeof (cmsg));
- cmsg.hdr.cmsg_len = CMSG_LEN (sizeof (struct cmsgcred));
- cmsg.hdr.cmsg_level = SOL_SOCKET;
- cmsg.hdr.cmsg_type = SCM_CREDS;
-#endif
-
-again:
-
-#if defined(HAVE_CMSGCRED) && (!defined(LOCAL_CREDS) || defined(__FreeBSD__))
- bytes_written = sendmsg (socket, &msg, 0);
-#else
- bytes_written = write (socket, &buf, 1);
-#endif
-
- if (bytes_written < 0 && errno == EINTR)
- goto again;
-
- if (bytes_written <= 0)
- return -1;
-
- return 0;
-}
diff --git a/common/gkr-unix-credentials.h b/common/gkr-unix-credentials.h
deleted file mode 100644
index 0f7f1981..00000000
--- a/common/gkr-unix-credentials.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-unix-credentials.h - write and read unix credentials on socket
-
- Copyright (C) 2008 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRUNIXCREDENTIALS_H_
-#define GKRUNIXCREDENTIALS_H_
-
-#include <unistd.h>
-
-int gkr_unix_credentials_read (int sock, pid_t *pid, uid_t *uid);
-
-int gkr_unix_credentials_write (int sock);
-
-#endif /*GKRUNIXCREDENTIALS_H_*/
diff --git a/common/gkr-unix-signal.c b/common/gkr-unix-signal.c
deleted file mode 100644
index f1eb239f..00000000
--- a/common/gkr-unix-signal.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-unix-signal.c - integrate unix signals into the main loop
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-unix-signal.h"
-#include "gkr-wakeup.h"
-
-#include <glib.h>
-
-#include <sys/types.h>
-#include <errno.h>
-#include <signal.h>
-#include <unistd.h>
-
-#define MAX_SIGNAL 64
-static gboolean handled_signals[MAX_SIGNAL] = { FALSE, };
-static gboolean received_signals[MAX_SIGNAL] = { FALSE, };
-
-static RETSIGTYPE
-signal_handler (int sig)
-{
- if (sig >= 0 && sig < MAX_SIGNAL) {
- received_signals[sig] = TRUE;
- gkr_wakeup_now ();
- }
-}
-
-typedef struct _SignalWatch {
- GSource source;
- guint signal;
-} SignalWatch;
-
-static gboolean
-signal_events_prepare (GSource *source, gint *timeout)
-{
- SignalWatch *sw = (SignalWatch*)source;
- *timeout = -1;
- gkr_wakeup_drain ();
- g_assert (sw->signal < MAX_SIGNAL);
- return received_signals[sw->signal];
-}
-
-static gboolean
-signal_events_check (GSource *source)
-{
- SignalWatch *sw = (SignalWatch*)source;
- gkr_wakeup_drain ();
- g_assert (sw->signal < MAX_SIGNAL);
- return received_signals[sw->signal];
-}
-
-static gboolean
-signal_events_dispatch (GSource *source, GSourceFunc callback, gpointer user_data)
-{
- SignalWatch *sw = (SignalWatch*)source;
- GkrUnixSignalHandler func = (GkrUnixSignalHandler)callback;
-
- gkr_wakeup_drain ();
-
- g_assert (sw->signal < MAX_SIGNAL);
- g_assert (received_signals[sw->signal]);
-
- /* We've now delivered this signal */
- received_signals[sw->signal] = FALSE;
-
- return (func) (sw->signal, user_data);
-}
-
-static void
-signal_events_finalize (GSource *source)
-{
- SignalWatch *sw = (SignalWatch*)source;
-
- gkr_wakeup_unregister ();
-
- g_assert (sw->signal < MAX_SIGNAL);
- if (sw->signal > 0)
- signal (sw->signal, SIG_DFL);
-
- handled_signals[sw->signal] = FALSE;
-}
-
-static GSourceFuncs signal_events_functions = {
- signal_events_prepare,
- signal_events_check,
- signal_events_dispatch,
- signal_events_finalize
-};
-
-guint
-gkr_unix_signal_connect (GMainContext *ctx, guint sig,
- GkrUnixSignalHandler func, gpointer user_data)
-{
- SignalWatch *sw;
- GSource *src;
- guint id;
-
- g_assert (sig < MAX_SIGNAL);
- g_assert (func);
-
- if (handled_signals[sig]) {
- g_critical ("registering a second handler for the same unix signal, only one will be called");
- return 0;
- }
-
- src = g_source_new (&signal_events_functions, sizeof (SignalWatch));
- sw = (SignalWatch*)src;
- sw->signal = sig;
-
- gkr_wakeup_register (ctx);
-
- g_source_set_callback (src, (GSourceFunc)func, user_data, NULL);
- id = g_source_attach (src, ctx);
- g_source_unref (src);
-
- handled_signals[sig] = TRUE;
-
- /* The zero signal is an internal thread wakeup signal */
- if (sig > 0) {
- if (signal (sig, signal_handler) == SIG_ERR) {
- g_warning ("couldn't register signal handler for: %d: %s",
- sig, g_strerror (errno));
- }
- }
-
- return id;
-}
diff --git a/common/gkr-unix-signal.h b/common/gkr-unix-signal.h
deleted file mode 100644
index 7e0a82fd..00000000
--- a/common/gkr-unix-signal.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-unix-signal.h - integrate unix signals into the main loop
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRUNIXSIGNAL_H_
-#define GKRUNIXSIGNAL_H_
-
-#include <glib.h>
-
-typedef gboolean (*GkrUnixSignalHandler) (guint sig, gpointer user_data);
-
-guint gkr_unix_signal_connect (GMainContext *ctx, guint sig,
- GkrUnixSignalHandler handler, gpointer user_data);
-
-#endif /* GKRUNIXSIGNAL_H_ */
diff --git a/common/gkr-wakeup.c b/common/gkr-wakeup.c
deleted file mode 100644
index 718f5661..00000000
--- a/common/gkr-wakeup.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-wakeup.c - wakeup GSource for arbitrary events
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-wakeup.h"
-
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <glib.h>
-
-static int wakeup_fds[2] = { -1, -1 };
-static guint wakeup_n = 0;
-static GPollFD poll_fd;
-static GMainContext *main_ctx;
-
-void
-gkr_wakeup_register (GMainContext *ctx)
-{
- if (wakeup_n++ == 0) {
- if (pipe (wakeup_fds))
- g_critical ("can't create wakeup pipe: %s", g_strerror (errno));
-
- /* Non blocking to prevent deadlock */
- fcntl (wakeup_fds[0], F_SETFL, fcntl (wakeup_fds[0], F_GETFL) | O_NONBLOCK);
- fcntl (wakeup_fds[1], F_SETFL, fcntl (wakeup_fds[1], F_GETFL) | O_NONBLOCK);
-
- /* Register poll fd with main context */
- poll_fd.fd = wakeup_fds[0];
- poll_fd.events = G_IO_IN;
- poll_fd.revents = 0;
-
- g_main_context_add_poll (ctx, &poll_fd, G_PRIORITY_HIGH_IDLE);
- main_ctx = ctx;
- }
-
- g_assert (wakeup_fds[0] >= 0);
-}
-
-void
-gkr_wakeup_unregister (void)
-{
- if (--wakeup_n > 0)
- return;
-
- g_assert (wakeup_fds[0] >= 0);
- close (wakeup_fds[0]);
- wakeup_fds[0] = -1;
-
- g_assert (wakeup_fds[1] >= 0);
- close (wakeup_fds[1]);
- wakeup_fds[1] = -1;
-
- g_assert (main_ctx);
- g_main_context_remove_poll (main_ctx, &poll_fd);
- main_ctx = NULL;
-}
-
-void
-gkr_wakeup_now (void)
-{
- #define SIG_MSG "couldn't write signal byte to pipe\n"
- guchar x = 0xAA;
-
- if (wakeup_fds[1] < 0)
- return;
-
- /* Could be called from a signal handler, so try to not use library functions */
- if (write (wakeup_fds[1], &x, 1) != 1)
- write (2, SIG_MSG, strlen (SIG_MSG) - 1);
-}
-
-void
-gkr_wakeup_drain (void)
-{
- guchar x;
-
- if (wakeup_fds[0] < 0)
- return;
-
- while (read (wakeup_fds[0], &x, 1) > 0);
-}
diff --git a/common/gkr-wakeup.h b/common/gkr-wakeup.h
deleted file mode 100644
index 22812972..00000000
--- a/common/gkr-wakeup.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-wakeup.h - wakeup GSource for arbitrary events
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRWAKEUP_H_
-#define GKRWAKEUP_H_
-
-#include <glib.h>
-
-void gkr_wakeup_register (GMainContext *ctx);
-
-void gkr_wakeup_unregister (void);
-
-void gkr_wakeup_now (void);
-
-void gkr_wakeup_drain (void);
-
-#endif /*GKRWAKEUP_H_*/
diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
deleted file mode 100644
index 8ffa3b51..00000000
--- a/common/tests/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-UNIT_AUTO = \
- unit-test-secmem.c \
- unit-test-unique.c \
- unit-test-crypto.c \
- unit-test-async.c \
- unit-test-cleanup.c \
- unit-test-location.c \
- unit-test-location-watch.c \
- unit-test-signal.c
-
-UNIT_PROMPT =
-
-UNIT_LIBS = \
- $(top_builddir)/common/libgkr-common.la
-
-include $(top_srcdir)/tests/test.make
diff --git a/common/tests/unit-test-async.c b/common/tests/unit-test-async.c
deleted file mode 100644
index 6dc8fe9f..00000000
--- a/common/tests/unit-test-async.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-async.c: Test low level worker and asynchronous thread capabilities
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <glib.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-async.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static gboolean
-cancel_worker (gpointer data)
-{
- if (gkr_async_worker_is_valid ((GkrAsyncWorker*)data))
- gkr_async_worker_cancel ((GkrAsyncWorker*)data);
- /* Don't call again */
- return FALSE;
-}
-
-/* -----------------------------------------------------------------------------
- * SIMPLE WORKER TEST
- */
-
-#define SIMPLE_N 5
-
-typedef struct _SimpleParams {
- CuTest *cu;
- guint value;
-} SimpleParams;
-
-static gpointer
-simple_thread (gpointer data)
-{
- SimpleParams *params = (SimpleParams*)data;
- int i;
-
- for (i = 0; i < SIMPLE_N; ++i) {
- ++params->value;
- gkr_async_usleep (G_USEC_PER_SEC / 5);
- g_printerr("+");
- }
-
- g_printerr("!\n");
- return &params->value;
-}
-
-static void
-simple_done (GkrAsyncWorker* worker, gpointer result, gpointer user_data)
-{
- SimpleParams *params = (SimpleParams*)user_data;
- CuAssert (params->cu, "result didn't get passed through", result == &params->value);
- test_mainloop_quit ();
-}
-
-void unit_test_worker_simple (CuTest* cu)
-{
- GkrAsyncWorker *worker;
- SimpleParams params;
-
- memset (&params, 0, sizeof (params));
- params.cu = cu;
-
- worker = gkr_async_worker_start (simple_thread, simple_done, &params);
- CuAssertPtrNotNull (cu, worker);
-
- /* Run the main loop */
- test_mainloop_run (20000);
-
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssertIntEquals (cu, SIMPLE_N, params.value);
-}
-
-/* -----------------------------------------------------------------------------
- * CANCEL WORKER TEST
- */
-
-typedef struct _CancelParams {
- CuTest *cu;
- guint value;
-} CancelParams;
-
-static gpointer
-cancel_thread (gpointer data)
-{
- CancelParams *params = (CancelParams*)data;
-
- while (!gkr_async_is_stopping ()) {
- ++params->value;
- g_printerr("+");
- gkr_async_usleep (G_USEC_PER_SEC);
- }
-
- g_printerr("!\n");
- return data;
-}
-
-static void
-cancel_done (GkrAsyncWorker* worker, gpointer result, gpointer user_data)
-{
- CancelParams *params = (CancelParams*)user_data;
- CuAssert (params->cu, "result didn't get passed through", result == user_data);
- CuAssert (params->cu, "completing worker is not valid", gkr_async_worker_is_valid (worker));
- test_mainloop_quit ();
-}
-
-void unit_test_worker_cancel (CuTest* cu)
-{
- GkrAsyncWorker *worker;
- CancelParams params;
-
- memset (&params, 0, sizeof (params));
- params.cu = cu;
-
- worker = gkr_async_worker_start (cancel_thread, cancel_done, &params);
- CuAssertPtrNotNull (cu, worker);
- CuAssert (cu, "worker just started is not valid", gkr_async_worker_is_valid (worker));
-
- /* A less than two seconds later, cancel it */
- g_timeout_add (1600, cancel_worker, worker);
-
- /* Run the main loop */
- test_mainloop_run (20000);
-
- /* Two seconds should have elapsed in other thread */
- CuAssertIntEquals (cu, 2, params.value);
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssert (cu, "worker is still valid after done", !gkr_async_worker_is_valid (worker));
-}
-
-/* -----------------------------------------------------------------------------
- * FIVE WORKER TEST
- */
-
-typedef struct _FiveParams {
- CuTest *cu;
- guint number;
- guint value;
-} FiveParams;
-
-static gpointer
-five_thread (gpointer data)
-{
- FiveParams *params = (FiveParams*)data;
-
- while (gkr_async_yield ()) {
- ++params->value;
- g_printerr("%d", params->number);
- gkr_async_sleep (1);
- }
-
- g_printerr("!\n");
- return data;
-}
-
-void unit_test_worker_five (CuTest* cu)
-{
- GkrAsyncWorker *worker;
- FiveParams params[5];
- int i;
-
- memset (&params, 0, sizeof (params));
-
- for (i = 0; i < 5; ++i)
- {
- params[i].cu = cu;
- params[i].number = i;
-
- /* Make the last one cancel the main loop */
- worker = gkr_async_worker_start (five_thread, NULL, &params[i]);
- CuAssertPtrNotNull (cu, worker);
- CuAssert (cu, "worker just started is not valid", gkr_async_worker_is_valid (worker));
-
- /* Stop each in a little less than i seconds */
- g_timeout_add ((1000 * i) - 200, cancel_worker, worker);
- }
-
- CuAssertIntEquals (cu, 5, gkr_async_workers_get_n ());
-
- /* Run the main loop */
- test_mainloop_run (1900);
-
- CuAssert (cu, "last worker should still be valid 2 seconds later", gkr_async_worker_is_valid (worker));
- gkr_async_worker_stop (worker);
-
- CuAssert (cu, "all workers have somehow quit", gkr_async_workers_get_n () > 0);
- gkr_async_workers_stop_all ();
-
- CuAssertIntEquals (cu, 0, gkr_async_workers_get_n ());
- CuAssert (cu, "last worker is still valid after exit", !gkr_async_worker_is_valid (worker));
-}
-
diff --git a/common/tests/unit-test-cleanup.c b/common/tests/unit-test-cleanup.c
deleted file mode 100644
index e692a1cf..00000000
--- a/common/tests/unit-test-cleanup.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-cleanup.c: Test low level cleanup functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-cleanup.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-#define DATA "some string"
-
-typedef struct _CleanupParam {
- CuTest *cu;
- gpointer value;
-} CleanupParam;
-
-static void
-cleanup_callback (gpointer user_data)
-{
- CleanupParam *param = (CleanupParam*)user_data;
- CuAssert (param->cu, "invalid user_data passed to callback",
- param->value && strcmp(param->value, DATA) == 0);
- param->value = NULL;
-}
-
-void unit_test_cleanup (CuTest* cu)
-{
- CleanupParam param;
-
- param.cu = cu;
- param.value = DATA;
-
- gkr_cleanup_register (cleanup_callback, &param);
-
- gkr_cleanup_perform ();
-
- CuAssert (cu, "cleanup handler not called", param.value == NULL);
-}
-
-/* -----------------------------------------------------------------------------
- * Cleanup handlers are called in the opposite order as installed
- */
-
-static gint order_value = 0;
-
-typedef struct _OrderParam {
- CuTest *cu;
- gint reference;
-} OrderParam;
-
-static void
-order_callback (gpointer user_data)
-{
- OrderParam *param = (OrderParam*)user_data;
- CuAssert (param->cu, "cleanup handler called out of order", order_value == param->reference);
- param->reference = -1;
- --order_value;
-}
-
-void unit_test_order (CuTest* cu)
-{
- OrderParam param[8];
- int i;
-
- for (i = 0; i < 8; ++i) {
- param[i].cu = cu;
- param[i].reference = i;
- gkr_cleanup_register (order_callback, &param[i]);
- }
-
- order_value = i - 1;
-
- gkr_cleanup_perform ();
-
- for (i = 0; i < 8; ++i)
- CuAssert (cu, "cleanup handler not called", param[i].reference == -1);
-
- CuAssert (cu, "not all cleanup handlers called", order_value == -1);
-}
-
-/* -----------------------------------------------------------------------------
- * A cleanup handler might cause another to be registered.
- */
-
-static gboolean cleaned_up = FALSE;
-
-static void
-second_callback (gpointer user_data)
-{
- cleaned_up = TRUE;
-}
-
-static void
-reregister_callback (gpointer user_data)
-{
- gkr_cleanup_register (second_callback, NULL);
-}
-
-void unit_test_reregister (CuTest* cu)
-{
- cleaned_up = FALSE;
-
- gkr_cleanup_register (reregister_callback, NULL);
-
- gkr_cleanup_perform ();
-
- CuAssert (cu, "second cleanup handler not called", cleaned_up == TRUE);
-}
-
-/* -----------------------------------------------------------------------------
- * Cleanup handlers can be removed
- */
-
-static gboolean test_cleaned_up = FALSE;
-
-static void
-remove_callback (gpointer user_data)
-{
- test_cleaned_up = TRUE;
-}
-
-void unit_test_remove (CuTest* cu)
-{
- gkr_cleanup_register (remove_callback, NULL);
- gkr_cleanup_register (remove_callback, DATA);
- gkr_cleanup_unregister (remove_callback, DATA);
- gkr_cleanup_unregister (remove_callback, NULL);
- gkr_cleanup_perform ();
-
- CuAssert (cu, "removed callback was called", test_cleaned_up == FALSE);
-}
diff --git a/common/tests/unit-test-crypto.c b/common/tests/unit-test-crypto.c
deleted file mode 100644
index bdec5481..00000000
--- a/common/tests/unit-test-crypto.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-crypto.c: Test crypto stuff
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-crypto.h"
-
-#include <gcrypt.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-void unit_setup_crypto (void)
-{
- gkr_crypto_setup ();
-}
-
-const static struct {
- const gchar *password;
- int cipher_algo;
- int hash_algo;
- int iterations;
- const gchar *salt;
-
- const gchar *result_simple;
- const gchar *result_pkcs12;
- const gchar *result_pbkdf2;
- const gchar *result_pbe;
-} all_generation_tests[] = {
-
- { /* 24 byte output */
- "booo", GCRY_CIPHER_3DES, GCRY_MD_MD5, 1,
- "\x70\x4C\xFF\xD6\x2F\xBA\x03\xE9",
- "\x84\x12\xBB\x34\x94\x8C\x40\xAD\x97\x57\x96\x74\x5B\x6A\xFB\xF8\xD6\x61\x33\x51\xEA\x8C\xCF\xD8",
- NULL,
- NULL,
- NULL
- },
-
- { /* 5 byte output */
- "booo", GCRY_CIPHER_RFC2268_40, GCRY_MD_SHA1, 2048,
- "\x8A\x58\xC2\xE8\x7C\x1D\x80\x11",
- NULL,
- "\xD6\xA6\xF0\x76\x66",
- NULL,
- NULL
- },
-
- { /* Null Password, 5 byte output */
- NULL, GCRY_CIPHER_RFC2268_40, GCRY_MD_SHA1, 2000,
- "\x04\xE0\x1C\x3E\xF8\xF2\xE9\xFD",
- NULL,
- "\x98\x7F\x20\x97\x1E",
- NULL,
- NULL
- },
-
- { /* 24 byte output */
- "booo", GCRY_CIPHER_3DES, GCRY_MD_SHA1, 2048,
- "\xBD\xEE\x0B\xC6\xCF\x43\xAC\x25",
- NULL,
- "\x3F\x38\x1B\x0E\x87\xEB\x19\xBE\xD1\x39\xDC\x5B\xC2\xD2\xB3\x3C\x35\xA8\xB8\xF9\xEE\x66\x48\x94",
- "\x20\x25\x90\xD8\xD6\x98\x3E\x71\x10\x17\x1F\x51\x49\x87\x27\xCA\x97\x27\xD1\xC9\x72\xF8\x11\xBB",
- NULL
- },
-
- { /* Empty password, 24 byte output */
- "", GCRY_CIPHER_3DES, GCRY_MD_SHA1, 2048,
- "\xF7\xCF\xD9\xCF\x1F\xF3\xAD\xF6",
- NULL,
- NULL,
- "\x53\xE3\x35\x9E\x5D\xC1\x85\x1A\x71\x3A\x67\x4E\x80\x56\x13\xD6\x4E\x3E\x89\x43\xB7\x1D\x5F\x7F",
- NULL
- },
-
- { /* Empty password, 24 byte output */
- "", GCRY_CIPHER_3DES, GCRY_MD_SHA1, 2048,
- "\xD9\xB3\x2E\xC7\xBA\x1A\x8E\x15",
- NULL,
- "\x39\x70\x75\x7C\xF5\xE2\x13\x0B\x5D\xC2\x9D\x96\x8B\x71\xC7\xFC\x5B\x97\x1F\x79\x9F\x06\xFC\xA2",
- NULL,
- NULL
- },
-
- { /* 8 byte output */
- "booo", GCRY_CIPHER_DES, GCRY_MD_MD5, 2048,
- "\x93\x4C\x3D\x29\xA2\x42\xB0\xF5",
- NULL,
- NULL,
- NULL,
- "\x8C\x67\x19\x7F\xB9\x23\xE2\x8D"
- }
-};
-
-#define N_GENERATION_TESTS (sizeof (all_generation_tests) / sizeof (all_generation_tests[0]))
-
-void unit_test_generate_key_simple (CuTest* cu)
-{
- int i;
- gboolean ret;
- guchar *key;
-
- for (i = 0; i < N_GENERATION_TESTS; ++i) {
-
- if (!all_generation_tests[i].result_simple)
- continue;
-
- ret = gkr_crypto_generate_symkey_simple (all_generation_tests[i].cipher_algo,
- all_generation_tests[i].hash_algo,
- all_generation_tests[i].password,
- (guchar*)all_generation_tests[i].salt, 8,
- all_generation_tests[i].iterations,
- &key, NULL);
- CuAssert (cu, "failed to generate simple key", ret == TRUE);
-
- CuAssert (cu, "invalid simple key generated",
- memcmp (key, all_generation_tests[i].result_simple,
- gcry_cipher_get_algo_keylen (all_generation_tests[i].cipher_algo)) == 0);
- }
-}
-
-void unit_test_generate_key_pkcs12 (CuTest* cu)
-{
- int i;
- gboolean ret;
- guchar *key;
-
- for (i = 0; i < N_GENERATION_TESTS; ++i) {
-
- if (!all_generation_tests[i].result_pkcs12)
- continue;
-
- ret = gkr_crypto_generate_symkey_pkcs12 (all_generation_tests[i].cipher_algo,
- all_generation_tests[i].hash_algo,
- all_generation_tests[i].password,
- (guchar*)all_generation_tests[i].salt, 8,
- all_generation_tests[i].iterations,
- &key, NULL);
- CuAssert (cu, "failed to generate pkcs12 key", ret == TRUE);
-
- CuAssert (cu, "invalid pkcs12 key generated",
- memcmp (key, all_generation_tests[i].result_pkcs12,
- gcry_cipher_get_algo_keylen (all_generation_tests[i].cipher_algo)) == 0);
- }
-}
-
-void unit_test_generate_key_pbkdf2 (CuTest* cu)
-{
- int i;
- gboolean ret;
- guchar *key;
-
- for (i = 0; i < N_GENERATION_TESTS; ++i) {
-
- if (!all_generation_tests[i].result_pbkdf2)
- continue;
-
- ret = gkr_crypto_generate_symkey_pbkdf2 (all_generation_tests[i].cipher_algo,
- all_generation_tests[i].hash_algo,
- all_generation_tests[i].password,
- (guchar*)all_generation_tests[i].salt, 8,
- all_generation_tests[i].iterations,
- &key, NULL);
- CuAssert (cu, "failed to generate pbkdf2 key", ret == TRUE);
-
- CuAssert (cu, "invalid pbkdf2 key generated",
- memcmp (key, all_generation_tests[i].result_pbkdf2,
- gcry_cipher_get_algo_keylen (all_generation_tests[i].cipher_algo)) == 0);
- }
-}
-
-void unit_test_generate_key_pbe (CuTest* cu)
-{
- int i;
- gboolean ret;
- guchar *key;
-
- for (i = 0; i < N_GENERATION_TESTS; ++i) {
-
- if (!all_generation_tests[i].result_pbe)
- continue;
-
- ret = gkr_crypto_generate_symkey_pbe (all_generation_tests[i].cipher_algo,
- all_generation_tests[i].hash_algo,
- all_generation_tests[i].password,
- (guchar*)all_generation_tests[i].salt, 8,
- all_generation_tests[i].iterations,
- &key, NULL);
- CuAssert (cu, "failed to generate pbe key", ret == TRUE);
-
- CuAssert (cu, "invalid pbe key generated",
- memcmp (key, all_generation_tests[i].result_pbe,
- gcry_cipher_get_algo_keylen (all_generation_tests[i].cipher_algo)) == 0);
- }
-}
-
-#define TEST_KEY \
-"(private-key (rsa " \
-"(n #00B78758D55EBFFAB61D07D0DC49B5309A6F1DA2AE51C275DFC2370959BB81AC0C39093B1C618E396161A0DECEB8768D0FFB14F197B96C3DA14190EE0F20D51315#)" \
-"(e #010001#)" \
-"(d #108BCAC5FDD35812981E6EC5957D98E2AB76E4064C47B861D27C2CC322C50792313C852B4164A035B42D261F1A09F9FFE8F477F9F78FF2EABBDA6BA875C671D7#)" \
-"(p #00C357F11B19A18C66573D25D1E466D9AB8BCDDCDFE0B2E80BD46712C4BEC18EB7#)" \
-"(q #00F0843B90A60EF7034CA4BE80414ED9497CABCC685143B388013FF989CBB0E093#)" \
-"(u #12F2555F52EB56329A991CF0404B51C68AC921AD370A797860F550415FF987BD#)" \
-"))"
-
-gcry_sexp_t thekey = NULL;
-
-void unit_test_parse_key (CuTest *cu)
-{
- gcry_sexp_t sexp = NULL;
- gcry_error_t gcry;
- gcry_mpi_t mpi = NULL;
- gboolean ret;
- gboolean is_priv = FALSE;
- int algorithm = 0;
-
- gcry = gcry_sexp_new (&sexp, TEST_KEY, strlen (TEST_KEY), 1);
- g_return_if_fail (gcry == 0);
-
- /* Get the private key out */
- thekey = gkr_crypto_sexp_get_child (sexp, "private-key", NULL);
- CuAssert (cu, "couldn't extract private key", sexp != NULL);
-
- ret = gkr_crypto_skey_parse (thekey, &algorithm, &is_priv, &sexp);
- CuAssert (cu, "couldn't parse rsa key", ret);
- CuAssert (cu, "parsed bad algorithm", algorithm == GCRY_PK_RSA);
- CuAssert (cu, "not a private-key", is_priv == TRUE);
- CuAssert (cu, "didn't get numbers", sexp != NULL);
-
- ret = gkr_crypto_sexp_extract_mpi (sexp, &mpi, "p", NULL);
- CuAssert (cu, "couldn't extract mpi from key", ret);
- CuAssert (cu, "no mpi returned from extract", mpi != NULL);
-}
-
-void unit_test_make_keyid (CuTest *cu)
-{
- guchar hash[20];
- gkrid id;
- const guchar *p;
- gsize n;
-
- p = gcry_pk_get_keygrip (thekey, hash);
- g_return_if_fail (p == hash);
-
- id = gkr_crypto_skey_make_id (thekey);
- CuAssert (cu, "null returned as key id", id != NULL);
-
- p = gkr_id_get_raw (id, &n);
- CuAssert (cu, "key id is of wrong length", n == sizeof (hash));
- CuAssert (cu, "key grip doesn't match key id", memcmp (hash, p, n) == 0);
-}
-
-void unit_test_key_to_public (CuTest *cu)
-{
- gcry_sexp_t pubkey = NULL;
- gboolean ret;
- gkrid u1, u2;
-
- ret = gkr_crypto_skey_private_to_public (thekey, &pubkey);
- CuAssert (cu, "couldn't make public key", ret);
- CuAssert (cu, "returned null public key", pubkey != NULL);
-
- u1 = gkr_crypto_skey_make_id (thekey);
- u2 = gkr_crypto_skey_make_id (pubkey);
- CuAssert (cu, "public and private keys are not equivalent",
- gkr_id_equals (u1, u2));
-}
-
diff --git a/common/tests/unit-test-location-watch.c b/common/tests/unit-test-location-watch.c
deleted file mode 100644
index 6256df0e..00000000
--- a/common/tests/unit-test-location-watch.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-location.c: Test location functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-location-watch.h"
-
-#include <glib/gstdio.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-#define DATA "test-data"
-#define SUBDIR "test-subdir"
-#define WILDCARD "*.woo?"
-
-static GkrLocationWatch *the_watch = NULL;
-static gchar *test_dir = NULL;
-static gchar *test_file = NULL;
-
-static guint n_locations_added = 0;
-static GQuark last_location_added = 0;
-
-static guint n_locations_changed = 0;
-static GQuark last_location_changed = 0;
-
-static guint n_locations_removed = 0;
-static GQuark last_location_removed = 0;
-
-static void
-location_added (GkrLocationWatch *watch, GQuark loc, CuTest *cu)
-{
- CuAssert (cu, "should be a non-null quark", loc != 0);
- CuAssert (cu, "should be a valid quark", g_quark_to_string (loc) != NULL);
-
- ++n_locations_added;
- last_location_added = loc;
-}
-
-static void
-location_changed (GkrLocationWatch *watch, GQuark loc, CuTest *cu)
-{
- CuAssert (cu, "should be a non-null quark", loc != 0);
- CuAssert (cu, "should be a valid quark", g_quark_to_string (loc) != NULL);
-
- ++n_locations_changed;
- last_location_changed = loc;
-}
-
-static void
-location_removed (GkrLocationWatch *watch, GQuark loc, CuTest *cu)
-{
- CuAssert (cu, "should be a non-null quark", loc != 0);
- CuAssert (cu, "should be a valid quark", g_quark_to_string (loc) != NULL);
-
- ++n_locations_removed;
- last_location_removed = loc;
-}
-
-void unit_test_location_watch (CuTest *cu)
-{
- GQuark loc;
-
- /* Mtime must change so wait between tests */
- sleep (1);
-
- the_watch = gkr_location_watch_new (NULL, 0, SUBDIR, WILDCARD, NULL);
- g_signal_connect (the_watch, "location-added", G_CALLBACK (location_added), cu);
- g_signal_connect (the_watch, "location-removed", G_CALLBACK (location_removed), cu);
- g_signal_connect (the_watch, "location-changed", G_CALLBACK (location_changed), cu);
-
- /* Make a test directory */
- loc = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, SUBDIR);
- test_dir = gkr_location_to_path (loc);
-
- test_file = g_build_filename (test_dir, "my-file.woof", NULL);
- g_unlink (test_file);
-
- /* A watch for an empty directory, should have no responses */
- gkr_location_watch_refresh (the_watch, FALSE);
-
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 0, n_locations_changed);
- CuAssertIntEquals(cu, 0, n_locations_removed);
-
- g_mkdir_with_parents (test_dir, 0700);
-
- /* Should still have no responses even though it exists */
- gkr_location_watch_refresh (the_watch, FALSE);
-
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 0, n_locations_changed);
- CuAssertIntEquals(cu, 0, n_locations_removed);
-}
-
-void unit_test_location_file (CuTest *cu)
-{
- gboolean ret;
- GQuark loc;
-
- /* Mtime must change so wait between tests */
- sleep (1);
-
- /* Make sure things are clean */
- g_unlink (test_file);
- gkr_location_watch_refresh (the_watch, FALSE);
-
- n_locations_added = n_locations_changed = n_locations_removed = 0;
- last_location_added = last_location_changed = last_location_removed = 0;
-
- ret = g_file_set_contents (test_file, DATA, strlen (DATA), NULL);
- CuAssertIntEquals (cu, ret, TRUE);
-
- /* Now make sure that file is located */
- gkr_location_watch_refresh (the_watch, FALSE);
-
- CuAssertIntEquals (cu, 1, n_locations_added);
- CuAssertIntEquals (cu, 0, n_locations_changed);
- CuAssertIntEquals (cu, 0, n_locations_removed);
-
- /* The added one should match our file */
- loc = gkr_location_from_path (test_file);
- CuAssert (cu, "returned zero location", loc != 0);
- CuAssert (cu, "wrong location was signalled", loc == last_location_added);
-
-
-
- n_locations_added = n_locations_changed = n_locations_removed = 0;
- last_location_added = last_location_changed = last_location_removed = 0;
-
- sleep (1);
-
- /* Shouldn't find the file again */
- gkr_location_watch_refresh (the_watch, FALSE);
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 0, n_locations_changed);
- CuAssertIntEquals(cu, 0, n_locations_removed);
-
- /* But we should find the file if forced to */
- gkr_location_watch_refresh (the_watch, TRUE);
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 1, n_locations_changed);
- CuAssertIntEquals(cu, 0, n_locations_removed);
- CuAssert (cu, "wrong location was signalled", loc == last_location_changed);
-
-
-
- n_locations_added = n_locations_changed = n_locations_removed = 0;
- last_location_added = last_location_changed = last_location_removed = 0;
-
- ret = g_file_set_contents (test_file, DATA, strlen (DATA), NULL);
- CuAssertIntEquals (cu, ret, TRUE);
-
- /* File was updated */
- gkr_location_watch_refresh (the_watch, FALSE);
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 1, n_locations_changed);
- CuAssertIntEquals(cu, 0, n_locations_removed);
- CuAssert (cu, "wrong location was signalled", loc == last_location_changed);
-
-
-
- n_locations_added = n_locations_changed = n_locations_removed = 0;
- last_location_added = last_location_changed = last_location_removed = 0;
-
- g_unlink (test_file);
-
- /* Now file should be removed */
- gkr_location_watch_refresh (the_watch, FALSE);
-
- CuAssertIntEquals(cu, 0, n_locations_added);
- CuAssertIntEquals(cu, 0, n_locations_changed);
- CuAssertIntEquals(cu, 1, n_locations_removed);
- CuAssert (cu, "wrong location was signalled", loc == last_location_removed);
-}
-
-void unit_test_location_nomatch (CuTest *cu)
-{
- gchar *file = g_build_filename (test_dir, "my-file.toot", NULL);
- gboolean ret;
-
- /* Mtime must change so wait between tests */
- sleep (1);
-
- ret = g_file_set_contents (file, DATA, strlen (DATA), NULL);
- CuAssertIntEquals (cu, ret, TRUE);
-
- n_locations_added = n_locations_changed = n_locations_removed = 0;
- last_location_added = last_location_changed = last_location_removed = 0;
-
- /* Now make sure that file is not located */
- gkr_location_watch_refresh (the_watch, FALSE);
-
- CuAssertIntEquals (cu, 0, n_locations_added);
- CuAssertIntEquals (cu, 0, n_locations_changed);
- CuAssertIntEquals (cu, 0, n_locations_removed);
-
- g_unlink (file);
-}
diff --git a/common/tests/unit-test-location.c b/common/tests/unit-test-location.c
deleted file mode 100644
index d6ee3395..00000000
--- a/common/tests/unit-test-location.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-location.c: Test location functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-location.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-#define MEDIA_DEVICE "/media/DummyMount"
-#define MEDIA_DEVICE2 "/media/DummyMount2"
-#define MEDIA_SERIAL "MEDIA-0239482093"
-
-
-void unit_test_location_simple (CuTest* cu)
-{
- gchar *path = g_build_filename (g_get_home_dir (), "blah", NULL);
- gchar *path2;
- GQuark loc, child;
-
- loc = gkr_location_from_path (path);
- CuAssert (cu, "should return a non-zero loc quark", loc != 0);
-
- g_print ("quark: %s\n", g_quark_to_string (loc));
-
- path2 = gkr_location_to_path (loc);
- CuAssert (cu, "should return non-null path", path2 != NULL);
- CuAssert (cu, "should return the same path", strcmp (path2, path) == 0);
-
- child = gkr_location_from_child (loc, "3");
- CuAssert (cu, "should return a non-zero loc quark", loc != 0);
-
- child = gkr_location_from_child (child, "2");
- CuAssert (cu, "should return a non-zero loc quark", loc != 0);
-
- g_print ("child quark: %s\n", g_quark_to_string (child));
-
- path2 = gkr_location_to_path (child);
- CuAssert (cu, "should return non-null path", path2 != NULL);
-}
-
-void unit_test_location_trailing (CuTest* cu)
-{
- GQuark one, two, ref;
-
- one = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, "/blah/");
- CuAssert (cu, "should return a non-zero quark", one != 0);
-
- two = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, "blah//");
- CuAssert (cu, "should return a non-zero quark", two != 0);
-
- ref = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, "blah");
- CuAssert (cu, "should return a non-zero quark", ref != 0);
-
- /* Should all be identical */
- CuAssert (cu, "stripping of leading and trailing slashes did not work", ref == one);
- CuAssert (cu, "stripping of leading and trailing slashes did not work", ref == two);
-}
-
-void unit_test_location_parent (CuTest* cu)
-{
- GQuark child, ref, parent;
-
- ref = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, "first");
- CuAssert (cu, "should return a non-zero quark", ref != 0);
-
- child = gkr_location_from_child (ref, "second");
- CuAssert (cu, "should return a non-zero quark", child != 0);
-
- parent = gkr_location_to_parent (child);
- CuAssert (cu, "should return a non-zero quark", parent != 0);
- CuAssert (cu, "parent location does not equal original", parent == ref);
-
- /* Should return the volume */
- parent = gkr_location_to_parent (parent);
- CuAssert (cu, "should return a non-zero quark", parent != 0);
- CuAssert (cu, "parent of parent location does not equal volume", parent == GKR_LOCATION_VOLUME_LOCAL);
-}
-
-void unit_test_location_media (CuTest* cu)
-{
- gchar *path = g_build_filename (MEDIA_DEVICE, "testo", NULL);
- gchar *path2;
- GQuark loc;
-
- /* Device is inserted */
- gkr_location_manager_register (gkr_location_manager_get (),
- MEDIA_SERIAL, MEDIA_DEVICE, "Test Media");
-
- loc = gkr_location_from_path (path);
- CuAssert (cu, "should return a non-zero loc quark", loc != 0);
-
- path2 = gkr_location_to_path (loc);
- CuAssert (cu, "should return non-null path", path2 != NULL);
- CuAssert (cu, "should return the same path", strcmp (path2, path) == 0);
-
- /* Device is removed */
- gkr_location_manager_unregister (gkr_location_manager_get (), MEDIA_SERIAL);
-
- /* Device is inserted at another path */
- gkr_location_manager_register (gkr_location_manager_get (),
- MEDIA_SERIAL, MEDIA_DEVICE2, "Test Media");
-
- path2 = gkr_location_to_path (loc);
- CuAssert (cu, "should return non-null path", path2 != NULL);
- CuAssert (cu, "should return a path at new prefix", strncmp (path2, MEDIA_DEVICE2, strlen (MEDIA_DEVICE2)) == 0);
-
-}
-
diff --git a/common/tests/unit-test-secmem.c b/common/tests/unit-test-secmem.c
deleted file mode 100644
index 7bffe821..00000000
--- a/common/tests/unit-test-secmem.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-secmem.c: Test low level secure memory allocation functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-secure-memory.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-#define IS_ZERO ~0
-
-static gsize
-find_non_zero (gpointer mem, gsize len)
-{
- guchar *b, *e;
- gsize sz = 0;
- for (b = (guchar*)mem, e = ((guchar*)mem) + len; b != e; ++b, ++sz) {
- if (*b != 0x00)
- return sz;
- }
-
- return IS_ZERO;
-}
-
-void unit_test_secmem_alloc_free (CuTest* cu)
-{
- gpointer p;
- gboolean ret;
-
- p = gkr_secure_alloc_full (512, 0);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 512));
-
- memset (p, 0x67, 512);
-
- ret = gkr_secure_check (p);
- CuAssertIntEquals (cu, ret, TRUE);
-
- gkr_secure_free_full (p, 0);
-}
-
-void unit_test_secmem_realloc_across (CuTest *cu)
-{
- gpointer p, p2;
-
- /* Tiny allocation */
- p = gkr_secure_realloc_full (NULL, 1088, 0);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 1088));
-
- /* Reallocate to a large one, will have to have changed blocks */
- p2 = gkr_secure_realloc_full (p, 16200, 0);
- CuAssertPtrNotNull (cu, p2);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p2, 16200));
-}
-
-void unit_test_secmem_alloc_two (CuTest* cu)
-{
- gpointer p, p2;
- gboolean ret;
-
- p2 = gkr_secure_alloc_full (4, 0);
- CuAssertPtrNotNull (cu, p2);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p2, 4));
-
- memset (p2, 0x67, 4);
-
- p = gkr_secure_alloc_full (16200, 0);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 16200));
-
- memset (p, 0x67, 16200);
-
- ret = gkr_secure_check (p);
- CuAssertIntEquals (cu, ret, TRUE);
-
- gkr_secure_free_full (p2, 0);
- gkr_secure_free_full (p, 0);
-}
-
-void unit_test_secmem_realloc (CuTest* cu)
-{
- gchar *str = "a test string to see if realloc works properly";
- gpointer p, p2;
- int r;
- gsize len;
-
- len = strlen (str) + 1;
-
- p = gkr_secure_realloc_full (NULL, len, 0);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, len));
-
- strcpy ((gchar*)p, str);
-
- p2 = gkr_secure_realloc_full (p, 512, 0);
- CuAssertPtrNotNull (cu, p2);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (((gchar*)p2) + len, 512 - len));
-
- r = strcmp (p2, str);
- CuAssert (cu, "strings not equal after realloc", r == 0);
-
- p = gkr_secure_realloc_full (p2, 0, 0);
- CuAssert (cu, "should have freed memory", p == NULL);
-}
-
diff --git a/common/tests/unit-test-signal.c b/common/tests/unit-test-signal.c
deleted file mode 100644
index 9b31150c..00000000
--- a/common/tests/unit-test-signal.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-signal.c: Test unix signal handling
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include <glib.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-unix-signal.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static guint last_signal = 0;
-static const gchar *test_arg = "data";
-
-typedef struct _SignalParam {
- CuTest *cu;
- const gchar *argument;
-} SignalParam;
-
-static gboolean
-handle_signal (guint sig, gpointer data)
-{
- SignalParam *param = (SignalParam*)data;
- CuAssert(param->cu, "user data not passed properly", param->argument == test_arg);
- last_signal = sig;
- test_mainloop_quit ();
- return TRUE;
-}
-
-void unit_test_unix_signal (CuTest* cu)
-{
- SignalParam param;
- GMainContext *ctx;
-
- param.cu = cu;
- param.argument = test_arg;
-
- ctx = g_main_loop_get_context (test_mainloop_get ());
- gkr_unix_signal_connect (ctx, SIGHUP, handle_signal, &param);
- gkr_unix_signal_connect (ctx, SIGINT, handle_signal, &param);
-
- raise (SIGHUP);
- test_mainloop_run (2000);
- CuAssert (cu, "signal not handled", last_signal == SIGHUP);
-
- raise (SIGINT);
- test_mainloop_run (2000);
- CuAssert (cu, "signal not handled", last_signal == SIGINT);
-
- gkr_unix_signal_connect (ctx, SIGTERM, handle_signal, &param);
- raise (SIGTERM);
- test_mainloop_run (2000);
- CuAssert (cu, "signal not handled", last_signal == SIGTERM);
-}
-
-void unit_test_unix_sig_remove (CuTest* cu)
-{
- SignalParam param;
- guint id;
-
- param.cu = cu;
- param.argument = test_arg;
-
- id = gkr_unix_signal_connect (g_main_loop_get_context (test_mainloop_get ()),
- SIGCONT, handle_signal, &param);
- raise (SIGCONT);
- test_mainloop_run (2000);
- CuAssert (cu, "signal not handled", last_signal == SIGCONT);
-
- /* Remove the handler */
- last_signal = 0;
- g_source_remove (id);
-
- /* Should be ignored */
- raise (SIGCONT);
- test_mainloop_run (2000);
- CuAssert (cu, "signal handler not removed properly", last_signal == 0);
-}
diff --git a/common/tests/unit-test-unique.c b/common/tests/unit-test-unique.c
deleted file mode 100644
index cb6b6dac..00000000
--- a/common/tests/unit-test-unique.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-signal.c: Test unix signal handling
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include <glib.h>
-
-#include "run-auto-test.h"
-
-#include "common/gkr-id.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-void unit_test_id_basics (CuTest* cu)
-{
- gchar test[] = "my big test";
- gkrid id, id2;
- const guchar *data;
- gsize n_data;
-
- id = gkr_id_new ((guchar*)test, strlen (test));
- CuAssert (cu, "didn't create id", id != NULL);
-
- data = gkr_id_get_raw (id, &n_data);
- CuAssert (cu, "raw returned null", data != NULL);
- CuAssert (cu, "length has changed", n_data == strlen (test));
- CuAssert (cu, "id data is wrong", memcmp (data, test, n_data) == 0);
-
- id2 = gkr_id_new ((guchar*)test, strlen(test));
- CuAssert (cu, "didn't create id", id != NULL);
- CuAssert (cu, "two identically created ids are different",
- gkr_id_equals (id, id2));
-
- id2 = gkr_id_dup (id);
- CuAssert (cu, "didn't dup id", id != NULL);
- CuAssert (cu, "two duped created ids are different",
- gkr_id_equals (id, id2));
-
- gkr_id_free (id);
-}
-
-void unit_test_id_digest (CuTest* cu)
-{
- guchar test[40];
- gkrid id, id2;
-
- memset (test, 'h', 40);
-
- id = gkr_id_new_digest (test, 40);
- CuAssert (cu, "didn't create id", id != NULL);
-
- id2 = gkr_id_new_digest (test, 40);
- CuAssert (cu, "didn't create id", id != NULL);
- CuAssert (cu, "two identically digested ids are different",
- gkr_id_equals (id, id2));
-
- id2 = gkr_id_new_digestv (test, 20, test + 20, 20, NULL);
- CuAssert (cu, "didn't create id", id != NULL);
- CuAssert (cu, "block digested id is different",
- gkr_id_equals (id, id2));
-}
diff --git a/configure.in b/configure.in
deleted file mode 100644
index d7751510..00000000
--- a/configure.in
+++ /dev/null
@@ -1,489 +0,0 @@
-AC_INIT(library/gnome-keyring.h)
-
-AM_INIT_AUTOMAKE(gnome-keyring, 2.22.3)
-AM_CONFIG_HEADER(config.h)
-
-AM_SANITY_CHECK
-AM_MAINTAINER_MODE
-
-AC_GNU_SOURCE
-AC_C_CONST
-AC_ISC_POSIX
-AC_PROG_CC
-AC_PROG_CPP
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-AM_DISABLE_STATIC
-AM_PROG_LIBTOOL
-IT_PROG_INTLTOOL([0.35.0])
-AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-LIB_GNOME_KEYRING_LT_VERSION=1:1:1
-AC_SUBST(LIB_GNOME_KEYRING_LT_VERSION)
-
-AC_TYPE_PID_T
-AC_TYPE_SIGNAL
-AC_TYPE_SIZE_T
-AC_TYPE_UID_T
-
-GTK_DOC_CHECK
-DISTCHECK_CONFIGURE_FLAGS="--enable-gtk-doc"
-AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
-
-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.8.0)
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
-
-PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.8.0)
-AC_SUBST(GTHREAD_CFLAGS)
-AC_SUBST(GTHREAD_LIBS)
-
-PKG_CHECK_MODULES(GOBJECT, glib-2.0 >= 2.8.0 gobject-2.0 >= 2.8.0)
-AC_SUBST(GOBJECT_CFLAGS)
-AC_SUBST(GOBJECT_LIBS)
-
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0)
-AC_SUBST(GTK_CFLAGS)
-AC_SUBST(GTK_LIBS)
-
-AM_GCONF_SOURCE_2
-PKG_CHECK_MODULES(GCONF, gconf-2.0)
-DAEMON_CFLAGS="$DAEMON_CFLAGS $GCONF_CFLAGS"
-DAEMON_LIBS="$DAEMON_LIBS $GCONF_LIBS"
-
-GETTEXT_PACKAGE=gnome-keyring
-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [The gettext domain name])
-AC_SUBST(GETTEXT_PACKAGE)
-
-AM_GLIB_GNU_GETTEXT
-
-AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
-
-# --------------------------------------------------------------------
-# Debug mode
-
-AC_ARG_ENABLE(debug,
- AC_HELP_STRING([--enable-debug],
- [Compile binaries in debug mode]))
-
-if test "$enable_debug" = "yes"; then
- CFLAGS="$CFLAGS -g -O0 -Wall"
- AC_DEFINE_UNQUOTED(_DEBUG, 1, [In debug mode])
- echo "enabling debug compile mode"
- debug_status="yes"
-else
- dnl AC_DEFINE_UNQUOTED(G_DISABLE_ASSERT, 1, [Disable glib assertions])
- echo "disabling debug compile mode"
- debug_status="no"
-fi
-
-# --------------------------------------------------------------------
-# Tests and Unit Tests
-
-AC_ARG_ENABLE(tests,
- AC_HELP_STRING([--enable-tests],
- [Build test tools and unit tests]))
-
-if test "$enable_tests" = "yes"; then
- echo "building tests and unit tests"
- AC_DEFINE_UNQUOTED(WITH_TESTS, 1, [Build with unit test support])
- tests_status="yes"
-else
- echo "not building tests and unit tests"
- tests_status="no"
-fi
-
-AM_CONDITIONAL(WITH_TESTS, test "$enable_tests" == "yes")
-
-# --------------------------------------------------------------------
-# Check for socklen_t
-#
-
-AC_MSG_CHECKING(whether socklen_t is defined)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-],[
-socklen_t foo;
-foo = 1;
-],have_socklen_t=yes,have_socklen_t=no)
-AC_MSG_RESULT($have_socklen_t)
-
-if test "x$have_socklen_t" = "xyes"; then
- AC_DEFINE(HAVE_SOCKLEN_T,1,[Have socklen_t type])
-fi
-
-# --------------------------------------------------------------------
-# Check for various credentials.
-#
-
-AC_MSG_CHECKING(for struct cmsgcred)
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/socket.h>
-],[
-struct cmsgcred cred;
-
-cred.cmcred_pid = 0;
-],have_struct_cmsgcred=yes,have_struct_cmsgcred=no)
-AC_MSG_RESULT($have_struct_cmsgcred)
-
-if test x$have_struct_cmsgcred = xyes; then
- AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
-fi
-
-# --------------------------------------------------------------------
-# Check for getpeerucred
-#
-
-AC_CHECK_FUNCS(getpeerucred, AC_DEFINE(HAVE_GETPEERUCRED,1,[Have getpeerucred]))
-
-# --------------------------------------------------------------------
-# Check for getpeereid
-#
-
-AC_CHECK_FUNCS(getpeereid, AC_DEFINE(HAVE_GETPEEREID, 1, [Have getpeereid function]))
-
-# --------------------------------------------------------------------
-# Check for flock
-#
-
-AC_CHECK_FUNCS(flock, AC_DEFINE(HAVE_FLOCK,1,[Have flock]))
-
-# --------------------------------------------------------------------
-# Check for timegm
-#
-
-AC_CHECK_FUNCS(timegm, AC_DEFINE(HAVE_TIMEGM,1,[Have timegm]))
-
-dnl mkdtemp replacement from gettext
-AC_REPLACE_FUNCS(mkdtemp)
-AC_STAT_MACROS_BROKEN
- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [uintmax_t i = (uintmax_t) -1;],
- jm_ac_cv_header_inttypes_h=yes,
- jm_ac_cv_header_inttypes_h=no)])
- if test $jm_ac_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
-[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <stdint.h>],
- [uintmax_t i = (uintmax_t) -1;],
- jm_ac_cv_header_stdint_h=yes,
- jm_ac_cv_header_stdint_h=no)])
- if test $jm_ac_cv_header_stdint_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
-[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-AC_CHECK_HEADERS(fcntl.h sys/time.h time.h unistd.h)
-AC_CHECK_FUNCS(gettimeofday fsync)
-
-# --------------------------------------------------------------------
-# Memory locking
-#
-
-AC_CHECK_FUNCS(mlock)
-
-# --------------------------------------------------------------------
-# socket()
-#
-
-AC_CHECK_LIB(socket, socket)
-
-have_socket=no
-AC_CHECK_FUNCS(socket, have_socket=yes)
-if test $have_socket = no; then
- # socket is not in the default libraries. See if it's in some other.
- for lib in bsd socket inet; do
- AC_CHECK_LIB($lib, socket, [
- DAEMON_LIBS="$DAEMON_LIBS -l$lib"
- have_socket=yes
- AC_DEFINE(HAVE_SOCKET)
- break])
- done
-fi
-
-# --------------------------------------------------------------------
-# DBus Checks
-#
-
-DBUS_REQUIRED=1.0
-
-PKG_CHECK_MODULES([DBUS], [dbus-1 >= $DBUS_REQUIRED], [enable_dbus=yes], [enable_dbus=no])
-
-dbus_status=no
-if test "$enable_dbus" = "yes"; then
- AC_DEFINE_UNQUOTED(WITH_DBUS, 1, [Include DBus dependant code])
-
- DBUS_VERSION=`$PKG_CONFIG --modversion dbus-1`
- DBUS_MAJOR_VERSION=`echo $DBUS_VERSION | cut -d. -f1`
- DBUS_MINOR_VERSION=`echo $DBUS_VERSION | cut -d. -f2`
- DBUS_MICRO_VERSION=`echo $DBUS_VERSION | cut -d. -f3`
- DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MAJOR_VERSION=$DBUS_MAJOR_VERSION"
- DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MINOR_VERSION=$DBUS_MINOR_VERSION"
- DBUS_CFLAGS="$DBUS_CFLAGS -DGKR_DBUS_MICRO_VERSION=$DBUS_MICRO_VERSION"
-
- DAEMON_CFLAGS="$DAEMON_CFLAGS $DBUS_CFLAGS"
- DAEMON_LIBS="$DAEMON_LIBS $DBUS_LIBS"
-
- LIBRARY_CFLAGS="$LIBRARY_CFLAGS $DBUS_CFLAGS"
- LIBRARY_LIBS="$LIBRARY_LIBS $DBUS_LIBS"
-
- AC_ARG_WITH(dbus-services,
- [AC_HELP_STRING([--with-dbus-services=<dir>],
- [where D-BUS session services directory is])])
- if ! test -z "$with_dbus_services" ; then
- DBUS_SERVICES_DIR="$with_dbus_services"
- else
- DBUS_SERVICES_DIR="$datadir/dbus-1/services"
- fi
- AC_SUBST(DBUS_SERVICES_DIR)
- dbus_status=$DBUS_VERSION
-fi
-AM_CONDITIONAL(WITH_DBUS, test "$enable_dbus" == "yes")
-
-# --------------------------------------------------------------------
-# HAL Checks
-
-HAL_REQUIRED=0.5.7
-
-AC_ARG_ENABLE(hal,
- AC_HELP_STRING([--disable-hal],
- [Use HAL for keys on removable drives]))
-
-hal_status=no
-if test "$enable_hal" != "no"; then
-
- PKG_CHECK_MODULES(HAL, [hal >= $HAL_REQUIRED hal-storage >= $HAL_REQUIRED],
- [have_hal=yes], [have_hal=no])
- if test "$enable_hal" = "yes" -a "$have_hal" = "no"; then
- AC_MSG_ERROR([could not find hal and hal-storage version >= $HAL_REQUIRED])
- fi
-
- if test "$have_hal" = "yes"; then
- DAEMON_CFLAGS="$DAEMON_CFLAGS $HAL_CFLAGS"
- DAEMON_LIBS="$DAEMON_LIBS $HAL_LIBS"
- AC_DEFINE_UNQUOTED(WITH_HAL, 1, [Include HAL dependent code])
- hal_status=yes
- fi
-fi
-
-AM_CONDITIONAL(WITH_HAL, test "$have_hal" = "yes")
-
-# --------------------------------------------------------------------
-# PAM Checks
-
-AC_ARG_ENABLE(pam,
- AC_HELP_STRING([--disable-pam],
- [Build GNOME keyring PAM helper]))
-
-pam_status="no"
-if test "$enable_pam" != "no"; then
- AC_CHECK_HEADER(security/pam_modules.h, have_pam=yes, have_pam=no)
- if test "$enable_pam" = "yes" -a "$have_pam" = "no"; then
- AC_MSG_ERROR(The PAM headers are missing)
- elif test "$have_pam" = "yes"; then
- old_LIBS=$LIBS
- AC_CHECK_LIB(pam, pam_start, have_pam=yes, have_pam=no)
- if test "$enable_pam" = "yes" -a "$have_pam" = "no"; then
- AC_MSG_ERROR(The PAM library is missing)
- fi
- LIBS=$old_LIBS
- fi
-fi
-
-AC_ARG_WITH([pam-dir],
- [AC_HELP_STRING([--with-pam-dir=DIR],
- [directory to install pam modules in])],
- [], [with_pam_dir="${prefix}/lib/security"])
-PAM_DEST_DIR="$with_pam_dir"
-AC_SUBST(PAM_DEST_DIR)
-
-AM_CONDITIONAL(WITH_PAM, test "$have_pam" = "yes")
-
-if test "$have_pam" = "yes"; then
- pam_status="yes ($with_pam_dir)"
-fi
-
-# --------------------------------------------------------------------
-# SSH Agent support
-#
-
-AC_ARG_ENABLE([ssh-agent],
- AC_HELP_STRING([--disable-ssh-agent],
- [Don't include SSH agent in gnome-keyring]))
-
-if test "$enable_ssh_agent" != "no"; then
- AC_DEFINE(WITH_SSH, 1, [Whether to build SSH agent or not])
- ssh_status="yes"
-else
- ssh_status="no"
-fi
-
-AM_CONDITIONAL(WITH_SSH, test "$enable_ssh_agent" != "no")
-
-# --------------------------------------------------------------------
-# Trusted Root Certificates Directory
-#
-
-AC_ARG_WITH([root-certs],
- [AC_HELP_STRING([--with-root-certs=DIR],
- [directory with trusted root certificates])])
-
-root_status="none"
-if test -n "$with_root_certs"; then
- AC_DEFINE_UNQUOTED(ROOT_CERTIFICATES, "$with_root_certs", [Directory for trusted root certificates])
- root_status="$with_root_certs"
-fi
-
-
-# --------------------------------------------------------------------
-# Check for /dev/random
-#
-
-AC_CHECK_FILE(/dev/random, AC_DEFINE(HAVE_DEVRANDOM,1,[Have /dev/random]))
-
-
-# --------------------------------------------------------------------
-# libgcrypt
-#
-
-GCRYPT_VERSION=1.2.2
-GCRYPT_LIBVER=1
-
-AM_PATH_LIBGCRYPT($GCRYPT_LIBVER:$GCRYPT_VERSION,,
- AC_MSG_ERROR([[
-***
-*** libgcrypt was not found. You may want to get it from
-*** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
-***
-]]))
-libgcrypt=yes
-AC_DEFINE_UNQUOTED(LIBGCRYPT_VERSION, "$GCRYPT_VERSION", [Version of GCRYPT we expect])
-
-DAEMON_CFLAGS="$DAEMON_CFLAGS $LIBGCRYPT_CFLAGS"
-DAEMON_LIBS="$DAEMON_LIBS $LIBGCRYPT_LIBS"
-
-# -------------------------------------------------------------------
-# libtasn1
-#
-
-GKR_LIBTASN1_VERSION=0.3.4
-
-AM_PATH_LIBTASN1($GKR_LIBTASN1_VERSION,,
- AC_MSG_ERROR([[
-***
-*** LibtASN1 ${GKR_LIBTASN1_VERSION} was not found.
-]]))
-libtasn=yes
-AC_DEFINE_UNQUOTED(GKR_LIBGCRYPT_VERSION, "$GKR_LIBTASN1_VERSION", [Version of libtasn1 we expect])
-
-DAEMON_CFLAGS="$DAEMON_CFLAGS $LIBTASN1_CFLAGS"
-DAEMON_LIBS="$DAEMON_LIBS $LIBTASN1_LIBS"
-
-dnl ==========================================================================
-
-dnl Turn on the additional warnings last, so -Werror doesn't affect other tests.
-
-AC_ARG_ENABLE(more-warnings,
-[ --enable-more-warnings Maximum compiler warnings],
-set_more_warnings="$enableval",[
-if test -f $srcdir/CVSVERSION; then
- is_cvs_version=true
- set_more_warnings=yes
-else
- set_more_warnings=no
-fi
-])
-AC_MSG_CHECKING(for more warnings, including -Werror)
-if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
- AC_MSG_RESULT(yes)
- CFLAGS="\
- -Wall \
- -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
- -Wnested-externs -Wpointer-arith \
- -Wcast-align -Wsign-compare \
- -Werror \
- $CFLAGS"
-
- for option in -Wno-strict-aliasing -Wno-sign-compare; do
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $option"
- AC_MSG_CHECKING([whether gcc understands $option])
- AC_TRY_COMPILE([], [],
- has_option=yes,
- has_option=no,)
- if test $has_option = no; then
- CFLAGS="$SAVE_CFLAGS"
- fi
- AC_MSG_RESULT($has_option)
- unset has_option
- unset SAVE_CFLAGS
- done
- unset option
-else
- AC_MSG_RESULT(no)
-fi
-
-AC_SUBST(DAEMON_CFLAGS)
-AC_SUBST(DAEMON_LIBS)
-
-AC_SUBST(LIBRARY_CFLAGS)
-AC_SUBST(LIBRARY_LIBS)
-
-AC_OUTPUT([
-Makefile
-common/Makefile
-common/tests/Makefile
-daemon/Makefile
-data/Makefile
-keyrings/Makefile
-keyrings/tests/Makefile
-library/Makefile
-library/tests/Makefile
-pam/Makefile
-pam/tests/Makefile
-pk/Makefile
-pk/tests/Makefile
-pkcs11/Makefile
-pkix/Makefile
-pkix/tests/Makefile
-po/Makefile.in
-reference/Makefile
-ssh/Makefile
-tests/Makefile
-ui/Makefile
-library/gnome-keyring-1.pc
-library/gnome-keyring-1-uninstalled.pc
-])
-
-# ------------------------------------------------------------------------------
-# Summary
-#
-
-echo
-echo "OPTIONAL DEPENDENCIES"
-echo " PAM: $pam_status"
-echo " DBus: $dbus_status"
-echo " HAL: $hal_status"
-echo
-echo "CONFIGURATION"
-echo " SSH Agent: $ssh_status"
-echo " Root Certificates: $root_status"
-echo
-echo "BUILD"
-echo " Debug Build: $debug_status"
-echo " Unit Tests: $tests_status"
-echo
-
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
deleted file mode 100644
index 607aae92..00000000
--- a/daemon/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-bin_PROGRAMS= \
- gnome-keyring-daemon
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GTHREAD_CFLAGS) \
- $(GLIB_CFLAGS)
-
-gnome_keyring_daemon_SOURCES = \
- gkr-daemon.c \
- gkr-daemon.h \
- gkr-daemon-dbus.c \
- gkr-daemon-io.c \
- gkr-daemon-ops.c
-
-gnome_keyring_daemon_LDADD = \
- $(top_builddir)/ssh/libgkr-ssh.la \
- $(top_builddir)/pkcs11/libgkr-pkcs11.la \
- $(top_builddir)/pk/libgkr-pk.la \
- $(top_builddir)/keyrings/libgkr-keyrings.la \
- $(top_builddir)/ui/libgkr-ui.la \
- $(top_builddir)/library/libgnome-keyring-common.la \
- $(top_builddir)/common/libgkr-common.la \
- $(DAEMON_LIBS) \
- $(GOBJECT_LIBS) \
- $(GTHREAD_LIBS) \
- $(DAEMON_LIBS) \
- $(GOBJECT_LIBS) \
- $(GLIB_LIBS)
-
-EXTRA_DIST = org.gnome.keyring.service.in
-CLEANFILES = org.gnome.keyring.service
-
-if WITH_DBUS
-servicedir = $(DBUS_SERVICES_DIR)
-service_in_files = org.gnome.keyring.service.in
-service_DATA = $(service_in_files:.service.in=.service)
-
-$(service_DATA): $(service_in_files) Makefile
- @sed -e "s|\@BINDIR\@|$(bindir)|" $< > $@
-endif
-
diff --git a/daemon/gkr-daemon-dbus.c b/daemon/gkr-daemon-dbus.c
deleted file mode 100644
index 63ff1574..00000000
--- a/daemon/gkr-daemon-dbus.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-daemon-dbus.c - daemon usage of dbus
-
- Copyright (C) 2007, Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#ifdef WITH_DBUS
-
-#include "gkr-daemon.h"
-
-#include "common/gkr-cleanup.h"
-#include "common/gkr-dbus.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-
-#include <dbus/dbus.h>
-
-static DBusConnection *dbus_conn = NULL;
-static const char* socket_path = NULL;
-
-static DBusHandlerResult
-message_handler_cb (DBusConnection *conn, DBusMessage *message, void *user_data)
-{
- DBusMessageIter args;
- DBusMessage *reply;
-
- if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_METHOD_CALL ||
- !dbus_message_is_method_call (message, GNOME_KEYRING_DAEMON_INTERFACE, "GetSocketPath") ||
- !g_str_equal (dbus_message_get_signature (message), "")) {
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- }
-
- g_return_val_if_fail (socket_path, DBUS_HANDLER_RESULT_NOT_YET_HANDLED);
-
- /* Setup the result */
- reply = dbus_message_new_method_return (message);
- dbus_message_iter_init_append (reply, &args);
- if (!dbus_message_iter_append_basic (&args, DBUS_TYPE_STRING, &socket_path))
- g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
-
- /* Send the reply */
- if (!dbus_connection_send (dbus_conn, reply, NULL))
- g_return_val_if_reached (DBUS_HANDLER_RESULT_NEED_MEMORY);
- dbus_connection_flush (dbus_conn);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-}
-
-static DBusObjectPathVTable object_vtable = {
- NULL,
- message_handler_cb,
- NULL,
-};
-
-
-static void
-daemon_dbus_cleanup (gpointer unused)
-{
- if (dbus_conn) {
- dbus_connection_unregister_object_path (dbus_conn, GNOME_KEYRING_DAEMON_PATH);
- gkr_dbus_disconnect_from_mainloop (dbus_conn, NULL);
- dbus_connection_unref (dbus_conn);
- dbus_conn = NULL;
- }
-}
-
-void
-gkr_daemon_dbus_setup (GMainLoop *loop)
-{
- dbus_uint32_t res = 0;
- DBusError derr = { 0 };
-
-#ifdef WITH_TESTS
- /* If running as a test, don't do DBUS stuff */
- const gchar *env = g_getenv ("GNOME_KEYRING_TEST_PATH");
- if (env && *env)
- return;
-#endif
-
- socket_path = gkr_daemon_io_get_socket_path ();
- dbus_error_init (&derr);
-
- /* Get the dbus bus and hook up */
- dbus_conn = dbus_bus_get (DBUS_BUS_SESSION, &derr);
- if (!dbus_conn) {
- g_warning ("couldn't connect to dbus session bus: %s", derr.message);
- dbus_error_free (&derr);
- return;
- }
-
- gkr_cleanup_register (daemon_dbus_cleanup, NULL);
-
- gkr_dbus_connect_with_mainloop (dbus_conn, NULL);
-
- /* Make sure dbus doesn't kill our app */
- dbus_connection_set_exit_on_disconnect (dbus_conn, FALSE);
-
- /* Try and grab our name */
- res = dbus_bus_request_name (dbus_conn, GNOME_KEYRING_DAEMON_SERVICE,
- DBUS_NAME_FLAG_DO_NOT_QUEUE, &derr);
- if (dbus_error_is_set (&derr)) {
- g_warning ("couldn't request name on session bus: %s", derr.message);
- dbus_error_free (&derr);
- }
-
- switch (res) {
- /* We acquired the service name */
- case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
- break;
- /* We already acquired the service name. Odd */
- case DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER:
- g_return_if_reached ();
- break;
- /* Another daemon is running */
- case DBUS_REQUEST_NAME_REPLY_IN_QUEUE:
- case DBUS_REQUEST_NAME_REPLY_EXISTS:
- g_message ("another gnome-keyring-daemon is running");
- return;
- default:
- g_return_if_reached ();
- break;
- };
-
- /* Now register the object */
- if (!dbus_connection_register_object_path (dbus_conn, GNOME_KEYRING_DAEMON_PATH,
- &object_vtable, NULL)) {
- g_warning ("couldn't register dbus object path");
- return;
- }
-}
-
-
-#endif /* WITH_DBUS */
diff --git a/daemon/gkr-daemon-io.c b/daemon/gkr-daemon-io.c
deleted file mode 100644
index 07162082..00000000
--- a/daemon/gkr-daemon-io.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-daemon-io.c - handles i/o from the clients
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#include "config.h"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include "gkr-daemon.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-buffer.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-secure-memory.h"
-#include "common/gkr-unix-credentials.h"
-
-#include "keyrings/gkr-keyrings.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-#include "library/gnome-keyring-proto.h"
-
-#include "ui/gkr-ask-daemon.h"
-
-#ifndef HAVE_SOCKLEN_T
-#define socklen_t int
-#endif
-
-typedef enum {
- GNOME_CLIENT_STATE_CREDENTIALS,
- GNOME_CLIENT_STATE_READ_DISPLAYNAME,
- GNOME_CLIENT_STATE_READ_PACKET,
- GNOME_CLIENT_STATE_COLLECT_INFO,
- GNOME_CLIENT_STATE_REQUEST_ACCESS,
- GNOME_CLIENT_STATE_EXECUTE_OP,
- GNOME_CLIENT_STATE_WRITE_REPLY
-} GnomeKeyringClientStates;
-
-typedef struct {
- GkrAsyncWorker *worker;
- int sock;
-
- GnomeKeyringApplicationRef *app_ref;
-
- GkrBuffer input_buffer;
- GkrBuffer output_buffer;
-} GnomeKeyringClient;
-
-static char socket_path[1024] = { 0, };
-
-#if 0
-#define debug_print(x) g_print x
-#else
-#define debug_print(x)
-#endif
-
-static gboolean
-set_local_creds (int fd, gboolean on)
-{
- gboolean retval = TRUE;
-
-#if defined(LOCAL_CREDS) && !defined(HAVE_CMSGCRED)
- int val = on ? 1 : 0;
- if (setsockopt (fd, 0, LOCAL_CREDS, &val, sizeof (val)) < 0)
- {
- g_warning ("Unable to set LOCAL_CREDS socket option on fd %d\n", fd);
- retval = FALSE;
- }
-#endif
-
- return retval;
-}
-
-static GnomeKeyringApplicationRef*
-application_ref_new_from_pid (pid_t pid)
-{
- GnomeKeyringApplicationRef *app_ref;
-
- app_ref = g_new0 (GnomeKeyringApplicationRef, 1);
-
-#if defined(__linux__) || defined(__FreeBSD__)
- g_assert (pid > 0);
- {
- char *buffer;
- int len;
- char *path = NULL;
-
-#if defined(__linux__)
- path = g_strdup_printf ("/proc/%d/exe", (gint)pid);
-#elif defined(__FreeBSD__)
- path = g_strdup_printf ("/proc/%d/file", (gint)pid);
-#endif
- buffer = g_file_read_link (path, NULL);
- g_free (path);
-
- len = (buffer != NULL) ? strlen (buffer) : 0;
- if (len > 0) {
- app_ref->pathname = g_malloc (len + 1);
- memcpy (app_ref->pathname, buffer, len);
- app_ref->pathname[len] = 0;
- }
- g_free (buffer);
- }
-#endif
-
- return app_ref;
-}
-
-static gboolean
-yield_and_read_all (int fd, guchar *buf, int len)
-{
- int all = len;
- int res;
-
- while (len > 0) {
-
- /* Is this worker stopping? */
- if (gkr_async_is_stopping ())
- return FALSE;
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- res = read (fd, buf, len);
-
- gkr_async_end_concurrent ();
-
- if (res <= 0) {
- if (errno == EAGAIN && errno == EINTR)
- continue;
-
- g_warning ("couldn't read %u bytes from client: %s", all,
- res < 0 ? g_strerror (errno) : "");
- return FALSE;
- } else {
- len -= res;
- buf += res;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-yield_and_write_all (int fd, const guchar *buf, int len)
-{
- int all = len;
- int res;
-
- while (len > 0) {
-
- /* Is this worker stopping? */
- if (gkr_async_is_stopping ())
- return FALSE;
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- res = write (fd, buf, len);
-
- gkr_async_end_concurrent ();
-
- if (res <= 0) {
- if (errno == EAGAIN && errno == EINTR)
- continue;
-
- g_warning ("couldn't write %u bytes to client: %s", all,
- res < 0 ? g_strerror (errno) : "");
- return FALSE;
- } else {
- len -= res;
- buf += res;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-read_packet_with_size (GnomeKeyringClient *client)
-{
- int fd;
- guint32 packet_size;
-
- fd = client->sock;
-
- gkr_buffer_resize (&client->input_buffer, 4);
- if (!yield_and_read_all (fd, client->input_buffer.buf, 4))
- return FALSE;
-
- if (!gkr_proto_decode_packet_size (&client->input_buffer, &packet_size) ||
- packet_size < 4) {
- g_warning ("invalid packet size from client");
- return FALSE;
- }
-
- gkr_buffer_resize (&client->input_buffer, packet_size + 4);
- if (!yield_and_read_all (fd, client->input_buffer.buf + 4, packet_size - 4))
- return FALSE;
-
- return TRUE;
-}
-
-static gboolean
-yield_and_read_credentials (int sock, pid_t *pid, uid_t *uid)
-{
- gboolean ret;
-
- gkr_async_begin_concurrent ();
-
- ret = gkr_unix_credentials_read (sock, pid, uid) >= 0;
-
- gkr_async_end_concurrent ();
-
- return ret;
-}
-
-static void
-close_fd (gpointer data)
-{
- int *fd = (int*)data;
- g_assert (fd);
-
- /* If we're waiting anywhere this makes the thread stop */
- shutdown (*fd, SHUT_RDWR);
-}
-
-static gpointer
-client_worker_main (gpointer user_data)
-{
- GnomeKeyringClient *client = (GnomeKeyringClient*)user_data;
- GnomeKeyringOpCode op;
- GkrKeyringRequest req;
- pid_t pid;
- uid_t uid;
- char *str;
-
- /* This helps any reads wakeup when this worker is stopping */
- gkr_async_register_cancel (close_fd, &client->sock);
-
- /* 1. First we read and verify the client's user credentials */
- debug_print (("GNOME_CLIENT_STATE_CREDENTIALS %p\n", client));
- if (!yield_and_read_credentials (client->sock, &pid, &uid))
- return NULL;
- if (getuid() != uid) {
- g_warning ("uid mismatch: %u, should be %u\n", (guint)uid, (guint)getuid());
- return NULL;
- }
- client->app_ref = application_ref_new_from_pid (pid);
-
-
- /* 2. Read the connecting application display name */
- debug_print (("GNOME_CLIENT_STATE_READ_DISPLAYNAME %p\n", client));
- if (!read_packet_with_size (client))
- return NULL;
- debug_print (("read packet\n"));
- if (!gkr_proto_get_utf8_string (&client->input_buffer, 4, NULL, &str))
- return NULL;
- if (!str)
- return NULL;
- debug_print (("got name: %s\n", str));
- client->app_ref->display_name = str;
-
-
- /* 3. Now read the actual packet of the operation */
- debug_print (("GNOME_CLIENT_STATE_READ_PACKET %p\n", client));
- if (!read_packet_with_size (client))
- return NULL;
- debug_print (("read packet, size: %d\n", client->input_buffer.len));
-
-
- /* 4. Next decode the operation, and execute the operation */
- debug_print (("GNOME_CLIENT_STATE_EXECUTE_OP %p\n", client));
- if (!gkr_proto_decode_packet_operation (&client->input_buffer, &op))
- return NULL;
- if (op < 0 || op >= GNOME_KEYRING_NUM_OPS)
- return NULL;
- g_assert (keyring_ops[op]);
-
- /* Make sure keyrings in memory are up to date before doing anything */
- gkr_keyrings_update ();
-
- gkr_buffer_init_full (&client->output_buffer, 128, (GkrBufferAllocator)g_realloc);
-
- /* Add empty size */
- gkr_buffer_add_uint32 (&client->output_buffer, 0);
-
- memset (&req, 0, sizeof (req));
- req.app_ref = client->app_ref;
-
- if (!(keyring_ops[op])(&client->input_buffer, &client->output_buffer, &req))
- return NULL;
-
- if (!gkr_buffer_set_uint32 (&client->output_buffer, 0,
- client->output_buffer.len))
- return NULL;
-
-
- /* 5. Write the reply back out */
- debug_print (("GNOME_CLIENT_STATE_WRITE_REPLY %p\n", client));
- debug_print (("writing %d bytes\n", client->output_buffer.len));
- if (!yield_and_write_all (client->sock, client->output_buffer.buf,
- client->output_buffer.len))
- return NULL;
-
- /* All done */
- return NULL;
-}
-
-static void
-client_worker_done (GkrAsyncWorker *worker, gpointer result, gpointer user_data)
-{
- GnomeKeyringClient *client = (GnomeKeyringClient*)user_data;
-
- gkr_buffer_uninit (&client->input_buffer);
- gkr_buffer_uninit (&client->output_buffer);
-
- if (client->app_ref != NULL) {
- gnome_keyring_application_ref_free (client->app_ref);
- }
-
- shutdown (client->sock, SHUT_RDWR);
- close (client->sock);
- g_free (client);
-}
-
-static void
-client_new (int fd)
-{
- GnomeKeyringClient *client;
-
- debug_print (("client_new(fd:%d) -> %p\n", fd, client));
-
- client = g_new0 (GnomeKeyringClient, 1);
- client->sock = fd;
-
- /*
- * We really have no idea what operation the client will send,
- * so we err on the side of caution and use secure memory in case
- * passwords or secrets are involved.
- */
- gkr_buffer_init_full (&client->input_buffer, 128, gkr_secure_realloc);
-
- client->worker = gkr_async_worker_start (client_worker_main,
- client_worker_done, client);
- g_assert (client->worker);
-
- /*
- * The worker thread is tracked in a global list, and is guaranteed to
- * be cleaned up, either when it exits, or when the application closes.
- */
-}
-
-static gboolean
-accept_client (GIOChannel *channel, GIOCondition cond,
- gpointer callback_data)
-{
- int fd;
- int new_fd;
- struct sockaddr_un addr;
- socklen_t addrlen;
-
- fd = g_io_channel_unix_get_fd (channel);
-
- addrlen = sizeof (addr);
- new_fd = accept(fd, (struct sockaddr *) &addr, &addrlen);
-
- if (new_fd >= 0)
- client_new (new_fd);
- return TRUE;
-}
-
-static void
-cleanup_socket_dir (gpointer data)
-{
- if(*socket_path)
- unlink (socket_path);
-}
-
-const gchar*
-gkr_daemon_io_get_socket_path (void)
-{
- return socket_path[0] ? socket_path : NULL;
-}
-
-gboolean
-gkr_daemon_io_create_master_socket (void)
-{
- const gchar *tmp_dir;
- int sock;
- struct sockaddr_un addr;
- GIOChannel *channel;
-
- tmp_dir = gkr_daemon_util_get_master_directory ();
- g_return_val_if_fail (tmp_dir, FALSE);
-
- snprintf (socket_path, sizeof (socket_path), "%s/socket", tmp_dir);
-
-#ifdef WITH_TESTS
- if (g_getenv ("GNOME_KEYRING_TEST_PATH"))
- unlink (socket_path);
-#endif
-
- gkr_cleanup_register (cleanup_socket_dir, NULL);
-
- sock = socket(AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- perror("socket");
- return FALSE;
- }
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, socket_path, sizeof (addr.sun_path));
- if (bind (sock, (struct sockaddr *) & addr, sizeof (addr)) < 0) {
- perror ("bind");
- return FALSE;
- }
-
- if (listen (sock, 128) < 0) {
- perror ("listen");
- return FALSE;
- }
-
- if (!set_local_creds (sock, TRUE)) {
- close (sock);
- return FALSE;
- }
-
- channel = g_io_channel_unix_new (sock);
- g_io_add_watch (channel, G_IO_IN | G_IO_HUP, accept_client, NULL);
- g_io_channel_unref (channel);
-
- gkr_daemon_util_push_environment ("GNOME_KEYRING_SOCKET", socket_path);
- return TRUE;
-}
diff --git a/daemon/gkr-daemon-ops.c b/daemon/gkr-daemon-ops.c
deleted file mode 100644
index 9d38fdb3..00000000
--- a/daemon/gkr-daemon-ops.c
+++ /dev/null
@@ -1,1806 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-daemon.c - main keyring daemon code.
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#include "config.h"
-
-#include "gkr-daemon.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include "keyrings/gkr-keyring.h"
-#include "keyrings/gkr-keyring-item.h"
-#include "keyrings/gkr-keyrings.h"
-#include "keyrings/gkr-keyring-login.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-#include "library/gnome-keyring-proto.h"
-
-#include "ui/gkr-ask-request.h"
-#include "ui/gkr-ask-daemon.h"
-
-#include <unistd.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <signal.h>
-#include <locale.h>
-#include <sys/types.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <gcrypt.h>
-
-/* for requesting list access to items */
-#define GNOME_KEYRING_ACCESS_LIST 0
-
-static gboolean
-app_ref_match (GnomeKeyringApplicationRef *app1,
- GnomeKeyringApplicationRef *app2)
-{
- if ((app1->display_name != NULL && app2->display_name != NULL) &&
- strcmp (app1->display_name, app2->display_name) != 0) {
- return FALSE;
- }
- if ((app1->display_name == NULL && app2->display_name != NULL) ||
- (app1->display_name != NULL && app2->display_name == NULL)) {
- return FALSE;
- }
-
- if ((app1->pathname != NULL && app2->pathname != NULL) &&
- strcmp (app1->pathname, app2->pathname) != 0) {
- return FALSE;
- }
- if ((app1->pathname == NULL && app2->pathname != NULL) ||
- (app1->pathname != NULL && app2->pathname == NULL)) {
- return FALSE;
- }
- return TRUE;
-}
-
-static GnomeKeyringAccessControl *
-acl_find_app (GList *acl, GnomeKeyringApplicationRef *app)
-{
- GnomeKeyringAccessControl *ac;
-
- for (; acl != NULL; acl = acl->next) {
- ac = acl->data;
-
- if (app_ref_match (app, ac->application)) {
- return ac;
- }
- }
-
- return NULL;
-}
-
-static gboolean
-acl_check_access (GkrKeyringItem* item, GnomeKeyringApplicationRef *app,
- GnomeKeyringAccessType access_type, gboolean secret)
-{
- GnomeKeyringAccessControl *ac;
- GList *l;
-
- /* Any app can list non application-secret items */
- if (access_type == GNOME_KEYRING_ACCESS_LIST) {
- if((item->type & GNOME_KEYRING_ITEM_APPLICATION_SECRET) == 0)
- return TRUE;
- }
-
- /* Any app is allowed to read non-secrets of non application-secret items */
- if (access_type == GNOME_KEYRING_ACCESS_READ && !secret) {
- if ((item->type & GNOME_KEYRING_ITEM_APPLICATION_SECRET) == 0)
- return TRUE;
- }
-
- /* Otherwise look through ACLs */
- for (l = item->acl; l != NULL; l = l->next) {
- ac = l->data;
- if (app_ref_match (app, ac->application) &&
- (ac->types_allowed & access_type) == access_type) {
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-static void
-add_item_acl (GkrKeyringItem *item,
- GnomeKeyringApplicationRef *app_ref,
- GnomeKeyringAccessType types_allowed)
-{
- GnomeKeyringAccessControl *ac;
-
- ac = acl_find_app (item->acl, app_ref);
- if (ac != NULL) {
- ac->types_allowed |= types_allowed;
- } else {
- ac = gnome_keyring_access_control_new (app_ref,
- types_allowed);
- item->acl = g_list_prepend (item->acl, ac);
- }
-}
-
-static guint
-check_acl_ask_request (GkrAskRequest* ask, GnomeKeyringApplicationRef *app)
-{
- GkrKeyringItem *item;
- gboolean secret;
- GnomeKeyringAccessType access_type;
-
- /* Pull out information from the ask request */
- item = GKR_KEYRING_ITEM (gkr_ask_request_get_object (ask));
- g_assert (GKR_IS_KEYRING_ITEM (item));
- secret = g_object_get_data (G_OBJECT (ask), "access-secret") ? TRUE : FALSE;
- access_type = (GnomeKeyringAccessType)GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (ask), "access-type"));
-
- /* Don't deal with straglers */
- if (!item->keyring) {
- ask->response = GKR_ASK_RESPONSE_FAILURE;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* Don't deal with locked keyrings */
- if (item->locked) {
- ask->response = GKR_ASK_RESPONSE_DENY;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* See if this application already has access to this item */
- if (acl_check_access (item, app, access_type, secret)) {
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* We don't prompt for application secrets at all */
- if (item->type & GNOME_KEYRING_ITEM_APPLICATION_SECRET) {
- ask->response = GKR_ASK_RESPONSE_DENY;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* Did prompting already occur? */
- if (ask->response) {
-
- /* Mark it down if the user gave eternal access */
- if (ask->response == GKR_ASK_RESPONSE_ALLOW_FOREVER) {
- add_item_acl (item, app,
- GNOME_KEYRING_ACCESS_READ |
- GNOME_KEYRING_ACCESS_WRITE |
- GNOME_KEYRING_ACCESS_REMOVE);
- gkr_keyring_save_to_disk (item->keyring);
- }
- }
-
- /* Continue with prompting */
- return GKR_ASK_DONT_CARE;
-}
-
-static gboolean
-request_item_access (GkrKeyringRequest *req, GkrKeyringItem *item,
- GnomeKeyringAccessType access_type, gboolean secret)
-{
- GnomeKeyringApplicationRef *app = req->app_ref;
- const gchar *keyring_name = NULL;
- GkrAskRequest *ask;
- gboolean is_default, ret;
- gchar *secondary;
-
- /* Simpler messages for the default keyring */
- is_default = !item->keyring || (item->keyring == gkr_keyrings_get_default ());
-
- /* An item with no keyring can happen in certain cases, let's not crash */
- if (!is_default)
- keyring_name = item->keyring->keyring_name;
-
- if (app->display_name && app->pathname) {
- if (is_default) {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' (%s) wants to access the password for '<object prop='name'/>' in the default keyring."),
- app->display_name, app->pathname);
- } else {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' (%s) wants to access the password for '<object prop='name'/>' in %s."),
- app->display_name, app->pathname, keyring_name);
- }
- } else if (app->display_name) {
- if (is_default) {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' wants to access the password for '<object prop='name'/>' in the default keyring."),
- app->display_name);
- } else {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' wants to access the password for '<object prop='name'/>' in %s."),
- app->display_name, keyring_name);
- }
- } else if (app->pathname) {
- if (is_default) {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' wants to access the password for '<object prop='name'/>' in the default keyring."),
- app->pathname);
- } else {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("The application '%s' wants to access the password for '<object prop='name'/>' in %s."),
- app->pathname, keyring_name);
- }
- } else {
- if (is_default) {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_strdup (_("An unknown application wants to access the password for '<object prop='name'/>' in the default keyring."));
- } else {
- /* TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags) */
- secondary = g_markup_printf_escaped (_("An unknown application wants to access the password for '<object prop='name'/>' in %s."),
- keyring_name);
- }
- }
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Allow access"), _("Allow application access to keyring?"),
- GKR_ASK_REQUEST_ACCESS_SOMETHING);
-
- gkr_ask_request_set_secondary (ask, secondary);
- g_free (secondary);
-
- /* Save data away for our handlers to use */
- gkr_ask_request_set_object (ask, G_OBJECT (item));
- g_object_set_data (G_OBJECT (ask), "access-secret", GUINT_TO_POINTER (secret));
- g_object_set_data (G_OBJECT (ask), "access-type", GUINT_TO_POINTER (access_type));
-
- g_signal_connect_data (ask, "check-request", G_CALLBACK (check_acl_ask_request),
- gnome_keyring_application_ref_copy (app),
- (GClosureNotify)gnome_keyring_application_ref_free, 0);
-
- gkr_ask_daemon_process (ask);
-
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- g_object_unref (ask);
-
- return ret;
-}
-
-static gboolean
-check_keyring_ask_request (GkrAskRequest* ask)
-{
- GkrKeyring *keyring;
- const gchar *password;
- gchar *display;
-
- keyring = GKR_KEYRING (gkr_ask_request_get_object (ask));
- g_assert (GKR_IS_KEYRING (keyring));
-
- if (!keyring->locked) {
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* If they typed a password, try it out */
- if (ask->response >= GKR_ASK_RESPONSE_ALLOW) {
-
- g_assert (ask->typed_password);
- if (!gkr_keyring_unlock (keyring, ask->typed_password)) {
- /* Bad password, try again */
- ask->response = GKR_ASK_RESPONSE_NONE;
- return GKR_ASK_CONTINUE_REQUEST;
- }
-
- /* Did they ask us to remember the password? */
- if (ask->checked) {
- display = g_strdup_printf (_("Unlock password for %s keyring"),
- keyring->keyring_name);
- gkr_keyring_login_attach_secret (GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD,
- display, ask->typed_password,
- "keyring", gkr_location_to_string (keyring->location), NULL);
- g_free (display);
- }
- }
-
- /*
- * We can automatically unlock keyrings that have their password
- * stored in the 'login' keyring.
- */
- password = gkr_keyring_login_lookup_secret (GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD,
- "keyring", gkr_location_to_string (keyring->location), NULL);
- if (password) {
- if (gkr_keyring_unlock (keyring, password)) {
-
- /* A good password, unlocked, all done */
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
-
- } else {
-
- /* A bad internal password */
- gkr_keyring_login_remove_secret (GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD,
- "keyring", gkr_location_to_string (keyring->location), NULL);
- }
- }
-
- /* If the keyring is unlocked then no need to continue */
- if (!keyring->locked) {
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
- }
-
- return GKR_ASK_DONT_CARE;
-}
-
-static gboolean
-request_keyring_access (GkrKeyringRequest *req, GkrKeyring *keyring)
-{
- GnomeKeyringApplicationRef *app = req->app_ref;
- GkrAskRequest *ask;
- const gchar *keyring_name;
- gboolean is_default, ret;
- gchar *message, *primary;
- GkrKeyring *login;
-
- keyring_name = keyring->keyring_name;
- g_assert (keyring_name);
-
- /* Simpler messages for the default keyring */
- is_default = (keyring == gkr_keyrings_get_default ());
-
- if (app->display_name && app->pathname) {
- if (is_default) {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants access to "
- "the default keyring, but it is locked"),
- app->display_name, app->pathname);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants access to "
- "the keyring '%s', but it is locked"),
- app->display_name, app->pathname, keyring_name);
- }
- } else if (app->display_name) {
- if (is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants access to the "
- "default keyring, but it is locked"),
- app->display_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' wants access to the "
- "keyring '%s', but it is locked"),
- app->display_name, keyring_name);
- }
- } else if (app->pathname) {
- if (is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants access to the "
- "default keyring, but it is locked"),
- app->pathname);
- }
- else {
- message = g_markup_printf_escaped (_("The application '%s' wants access to the "
- "keyring '%s', but it is locked"),
- app->pathname, keyring_name);
- }
- } else {
- if (is_default) {
- message = g_markup_printf_escaped (_("An unknown application wants access to the "
- "default keyring, but it is locked"));
- }
- else {
- message = g_markup_printf_escaped (_("An unknown application wants access to the "
- "keyring '%s', but it is locked"),
- keyring_name);
- }
- }
-
- if (is_default) {
- primary = g_strdup (_("Enter password for default keyring to unlock"));
- } else {
- primary = g_markup_printf_escaped (_("Enter password for keyring '%s' to unlock"), keyring_name);
- }
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Unlock Keyring"), primary,
- GKR_ASK_REQUEST_PROMPT_PASSWORD);
-
- gkr_ask_request_set_secondary (ask, message);
- gkr_ask_request_set_object (ask, G_OBJECT (keyring));
-
- /*
- * If it's not the login keyring, and we have a login keyring, we can offer
- * to unlock automatically next time.
- */
- login = gkr_keyrings_get_login ();
- if (login != keyring && gkr_keyring_login_is_usable ())
- gkr_ask_request_set_check_option (ask, _("Automatically unlock this keyring when I log in."));
-
- /* Intercept item access requests to see if we still need to prompt */
- g_signal_connect (ask, "check-request", G_CALLBACK (check_keyring_ask_request), NULL);
-
- g_free (primary);
- g_free (message);
-
- gkr_ask_daemon_process (ask);
-
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- g_object_unref (ask);
-
- return ret;
-}
-
-static gboolean
-request_new_keyring_password (GkrKeyringRequest *req, const char *keyring_name,
- gchar **password, GQuark *volume)
-{
- GnomeKeyringApplicationRef *app = req->app_ref;
- GkrAskRequest* ask;
- gboolean is_default, ret;
- gchar* message;
-
- g_assert (password);
-
- /* If we already have a password then don't prompt */
- if (*password)
- return TRUE;
-
- /* Simpler messages for the default keyring */
- is_default = !keyring_name || (strcmp (keyring_name, "default") == 0);
-
- if (app->display_name && app->pathname) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants to create a new keyring called '%s'. "
- "You have to choose the password you want to use for it."),
- app->display_name, app->pathname, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants to create a new default keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name, app->pathname);
- }
- } else if (app->display_name) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants to create a new keyring called '%s'. "
- "You have to choose the password you want to use for it."),
- app->display_name, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' wants to create a new default keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name);
- }
- } else if (app->pathname) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants to create a new keyring called '%s'. "
- "You have to choose the password you want to use for it."),
- app->pathname, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' wants to create a new default keyring. "
- "You have to choose the password you want to use for it."),
- app->pathname);
- }
- } else {
- if (!is_default) {
- message = g_markup_printf_escaped (_("An unknown application wants to create a new keyring called '%s'. "
- "You have to choose the password you want to use for it."),
- keyring_name);
- } else {
- message = g_markup_printf_escaped (_("An unknown application wants to create a new default keyring. "
- "You have to choose the password you want to use for it."));
- }
- }
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("New Keyring Password"),
- _("Choose password for new keyring"),
- GKR_ASK_REQUEST_NEW_PASSWORD);
-
- gkr_ask_request_set_secondary (ask, message);
- g_free (message);
-
- gkr_ask_request_set_location_selector (ask, TRUE);
-
- gkr_ask_daemon_process (ask);
-
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- if (ret) {
- g_free (*password);
- *password = gkr_secure_strdup (ask->typed_password);
- *volume = ask->location_selected;
- }
-
- g_object_unref (ask);
-
- return ret;
-}
-
-static gboolean
-request_change_keyring_password (GkrKeyringRequest *req, GkrKeyring* keyring,
- gchar **original, gchar **password)
-{
- GnomeKeyringApplicationRef *app = req->app_ref;
- GkrAskRequest *ask;
- const gchar *keyring_name;
- gboolean is_default, ret;
- gchar *message, *primary;
- guint flags;
-
- g_assert (original && password);
-
- /* Already have passwords no need to prompt */
- if (*original && *password)
- return TRUE;
-
- keyring_name = keyring->keyring_name;
- g_assert (keyring_name);
-
- /* Simpler messages for the default keyring */
- is_default = (keyring == gkr_keyrings_get_default ());
-
- if (app->display_name && app->pathname) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants to change the password for the '%s' keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name, app->pathname, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants to change the password for the default keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name, app->pathname);
- }
- } else if (app->display_name) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants to change the password for the '%s' keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' wants to change the password for the default keyring. "
- "You have to choose the password you want to use for it."),
- app->display_name);
- }
- } else if (app->pathname) {
- if (!is_default) {
- message = g_markup_printf_escaped (_("The application '%s' wants to change the password for the '%s' keyring. "
- "You have to choose the password you want to use for it."),
- app->pathname, keyring_name);
- } else {
- message = g_markup_printf_escaped (_("The application '%s' wants to change the password for the default keyring. "
- "You have to choose the password you want to use for it."),
- app->pathname);
- }
- } else {
- if (!is_default) {
- message = g_markup_printf_escaped (_("An unknown application wants to change the password for the '%s' keyring. "
- "You have to choose the password you want to use for it."),
- keyring_name);
- } else {
- message = g_markup_printf_escaped (_("An unknown application wants to change the password for the default keyring. "
- "You have to choose the password you want to use for it."));
- }
- }
-
- flags = GKR_ASK_REQUEST_NEW_PASSWORD;
- if (!*original)
- flags |= GKR_ASK_REQUEST_ORIGINAL_PASSWORD;
-
- if (is_default) {
- primary = g_markup_printf_escaped (_("Choose a new password for the '%s' keyring. "), keyring_name);
- } else {
- primary = g_markup_printf_escaped (_("Choose a new password for the default keyring. "));
- }
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Change Keyring Password"), primary, flags);
- gkr_ask_request_set_secondary (ask, message);
- gkr_ask_request_set_object (ask, G_OBJECT (keyring));
-
- g_free (primary);
- g_free (message);
-
- gkr_ask_daemon_process (ask);
-
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- if (ret) {
- g_free (*password);
- *password = gkr_secure_strdup (ask->typed_password);
-
- g_free (*original);
- *original = gkr_secure_strdup (ask->original_password);
- }
-
- g_object_unref (ask);
-
- return ret;
-}
-
-static gboolean
-check_keyring_default_request (GkrAskRequest* ask)
-{
- GkrKeyring *keyring;
-
- /* If another default keyring has been created in the meantime, ignore */
- if (gkr_keyrings_get_default ()) {
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* If a password was typed use it */
- if (ask->response >= GKR_ASK_RESPONSE_ALLOW) {
- g_assert (ask->typed_password);
-
- /* Create the new keyring */
- keyring = gkr_keyring_create (GKR_LOCATION_VOLUME_LOCAL, "default",
- ask->typed_password);
- if (keyring == NULL) {
- g_warning ("couldn't create default keyring");
- ask->response = GKR_ASK_RESPONSE_FAILURE;
- } else {
- /* Add to our main list */
- gkr_keyrings_add (keyring);
-
- /* Set our newly created keyring as the default */
- gkr_keyrings_set_default (keyring);
- }
- }
-
- return GKR_ASK_DONT_CARE;
-}
-
-static GkrKeyring*
-create_default_keyring (GkrKeyringRequest *req)
-{
- GnomeKeyringApplicationRef *app = req->app_ref;
- GkrAskRequest* ask;
- gchar* message;
- GkrKeyring *keyring;
-
- keyring = gkr_keyrings_get_default ();
- if (keyring)
- return keyring;
-
- /* Build an appropriate message */
- if (app->display_name && app->pathname) {
- message = g_markup_printf_escaped (_("The application '%s' (%s) wants to store a password, but there is no default keyring. "
- "To create one, you need to choose the password you wish to use for it."),
- app->display_name, app->pathname);
- } else if (app->display_name) {
- message = g_markup_printf_escaped (_("The application '%s' wants to store a password, but there is no default keyring. "
- "To create one, you need to choose the password you wish to use for it."),
- app->display_name);
- } else if (app->pathname) {
- message = g_markup_printf_escaped (_("The application '%s' wants to store a password, but there is no default keyring. "
- "To create one, you need to choose the password you wish to use for it."),
- app->pathname);
- } else {
- message = g_markup_printf_escaped (_("An unknown application wants to store a password, but there is no default keyring. "
- "To create one, you need to choose the password you wish to use for it."));
- }
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Create Default Keyring"), _("Choose password for default keyring"),
- GKR_ASK_REQUEST_NEW_PASSWORD);
-
- gkr_ask_request_set_secondary (ask, message);
-
- /* Intercept request, and actually create the keyring after prompt */
- g_signal_connect (ask, "check-request", G_CALLBACK (check_keyring_default_request), NULL);
-
- gkr_ask_daemon_process (ask);
-
- if (ask->response >= GKR_ASK_RESPONSE_ALLOW)
- keyring = gkr_keyrings_get_default ();
-
- g_object_unref (ask);
-
- return keyring;
-}
-
-static GnomeKeyringResult
-lookup_and_request_item_access (GkrKeyringRequest *req, gchar *keyring_name,
- int item_id, GnomeKeyringAccessType access_type,
- gboolean access_secret, GkrKeyringItem **ret_item)
-{
- GkrKeyring *keyring;
- GkrKeyringItem *item;
-
- g_assert (ret_item);
- *ret_item = NULL;
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL)
- return GNOME_KEYRING_RESULT_NO_SUCH_KEYRING;
-
- g_object_ref (keyring);
-
- item = gkr_keyring_get_item (keyring, item_id);
- if (item != NULL) {
-
- g_object_ref (item);
-
- if (request_keyring_access (req, keyring) &&
- request_item_access (req, item, access_type, access_secret))
- *ret_item = item;
-
- g_object_unref (item);
- }
-
- g_object_unref (keyring);
-
- return *ret_item == NULL ? GNOME_KEYRING_RESULT_DENIED : GNOME_KEYRING_RESULT_OK;
-}
-
-static GnomeKeyringResult
-change_keyring_password (GkrKeyring *keyring, const char *password)
-{
- if (keyring->locked) {
- return GNOME_KEYRING_RESULT_DENIED;
- } else {
- keyring->password = gkr_secure_strdup (password);
- gkr_keyring_save_to_disk (keyring);
- return GNOME_KEYRING_RESULT_OK;
- }
-}
-
-static gboolean
-op_lock_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GnomeKeyringOpCode opcode;
- GkrKeyring *keyring;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &keyring_name))
- return FALSE;
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- } else {
- gkr_keyring_lock (keyring);
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- }
-
- g_free (keyring_name);
-
- return TRUE;
-}
-
-static gboolean
-lock_each_keyring (GkrKeyring* keyring, gpointer unused)
-{
- gkr_keyring_lock (keyring);
- return TRUE;
-}
-
-static gboolean
-op_lock_all (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- gkr_keyrings_foreach (lock_each_keyring, NULL);
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- return TRUE;
-}
-
-static gboolean
-op_set_default_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GnomeKeyringOpCode opcode;
- GkrKeyring *keyring;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &keyring_name))
- return FALSE;
-
- if (keyring_name == NULL) {
- gkr_keyrings_set_default (NULL);
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- } else {
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- } else {
- gkr_keyrings_set_default (keyring);
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- }
- }
-
- g_free (keyring_name);
-
- return TRUE;
-}
-
-static gboolean
-op_get_default_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- GkrKeyring* keyring;
- char *name;
-
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- name = NULL;
-
- keyring = gkr_keyrings_get_default ();
- if (keyring)
- name = keyring->keyring_name;
-
- if (!gkr_proto_add_utf8_string (result, name))
- return FALSE;
-
- return TRUE;
-}
-
-static gboolean
-add_name_to_result (GkrKeyring* keyring, gpointer result)
-{
- return gkr_proto_add_utf8_string ((GkrBuffer*)result,
- keyring->keyring_name);
-}
-
-static gboolean
-op_list_keyrings (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- gkr_buffer_add_uint32 (result, gkr_keyrings_get_count ());
- if (!gkr_keyrings_foreach (add_name_to_result, result))
- return FALSE;
-
- return TRUE;
-}
-
-
-static gboolean
-op_set_keyring_info (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- gboolean lock_on_idle;
- guint32 lock_timeout;
- GkrKeyring *keyring;
-
- if (!gkr_proto_decode_set_keyring_info (packet,
- &keyring_name,
- &lock_on_idle,
- &lock_timeout)) {
- return FALSE;
- }
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- } else {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- keyring->lock_on_idle = lock_on_idle;
- keyring->lock_timeout = lock_timeout;
- }
-
- g_free (keyring_name);
-
- return TRUE;
-}
-
-static gboolean
-op_get_keyring_info (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyring *keyring;
- GnomeKeyringOpCode opcode;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &keyring_name))
- return FALSE;
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- } else {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- gkr_buffer_add_uint32 (result, keyring->lock_on_idle);
- gkr_buffer_add_uint32 (result, keyring->lock_timeout);
- gkr_proto_add_time (result, keyring->mtime);
- gkr_proto_add_time (result, keyring->ctime);
- gkr_buffer_add_uint32 (result, keyring->locked);
- }
-
- g_free (keyring_name);
-
- return TRUE;
-}
-
-static gboolean
-op_create_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- GQuark volume = GKR_LOCATION_VOLUME_LOCAL;
- char *keyring_name, *password;
- GkrKeyring *keyring;
- GnomeKeyringOpCode opcode;
-
- if (!gkr_proto_decode_op_string_secret (packet,
- &opcode,
- &keyring_name,
- &password)) {
- return FALSE;
- }
- g_assert (opcode == GNOME_KEYRING_OP_CREATE_KEYRING);
-
- if (keyring_name == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- goto out;
- }
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring != NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_ALREADY_EXISTS);
- goto out;
- }
-
- /* Let user pick password if necessary*/
- if (!request_new_keyring_password (req, keyring_name, &password, &volume)) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- goto out;
- }
-
- keyring = gkr_keyring_create (volume, keyring_name, password);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- goto out;
- }
-
- /* Add to our main list */
- gkr_keyrings_add (keyring);
-
- /* Let go of the initial reference to this object */
- g_object_unref (keyring);
- g_assert (GKR_IS_KEYRING (keyring));
-
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- out:
- g_free (keyring_name);
- gkr_secure_strfree (password);
-
- return TRUE;
-}
-
-static gboolean
-op_unlock_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name, *password;
- GkrKeyring *keyring;
- GnomeKeyringOpCode opcode;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_op_string_secret (packet,
- &opcode,
- &keyring_name,
- &password)) {
- return FALSE;
- }
- g_assert (opcode == GNOME_KEYRING_OP_UNLOCK_KEYRING);
-
- keyring = gkr_keyrings_find (keyring_name);
- if (!keyring) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- goto out;
-
- }
-
- /* User types password */
- if (password == NULL) {
- if (request_keyring_access (req, keyring))
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- else
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
-
- /* Password specified */
- } else {
- if (gkr_keyring_unlock (keyring, password))
- res = GNOME_KEYRING_RESULT_OK;
- else
- res = GNOME_KEYRING_RESULT_DENIED;
- gkr_buffer_add_uint32 (result, res);
- }
-
- out:
- g_free (keyring_name);
- gkr_secure_strfree (password);
-
- return TRUE;
-}
-
-
-static gboolean
-op_delete_keyring (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyring *keyring = NULL;
- GnomeKeyringOpCode opcode;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &keyring_name))
- return FALSE;
-
- g_assert (opcode == GNOME_KEYRING_OP_DELETE_KEYRING);
-
- if (keyring_name == NULL) {
- res = GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- } else {
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- res = GNOME_KEYRING_RESULT_NO_SUCH_KEYRING;
- } else {
- if (!gkr_keyring_remove_from_disk (keyring))
- res = GNOME_KEYRING_RESULT_DENIED;
- else
- res = GNOME_KEYRING_RESULT_OK;
- }
- }
-
- gkr_buffer_add_uint32 (result, res);
- g_free (keyring_name);
-
- if (res == GNOME_KEYRING_RESULT_OK)
- gkr_keyrings_remove (keyring);
-
- return TRUE;
-}
-
-static gboolean
-op_change_keyring_password (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name, *original, *password;
- GkrKeyring *keyring;
- GnomeKeyringOpCode opcode;
-
- if (!gkr_proto_decode_op_string_secret_secret (packet,
- &opcode,
- &keyring_name,
- &original,
- &password)) {
- return FALSE;
- }
- g_assert (opcode == GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD);
-
- if (keyring_name == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- goto out;
- }
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- goto out;
- }
-
- /* Prompt for any missing passwords */
- if (!request_change_keyring_password (req, keyring, &original, &password)) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- goto out;
- }
-
- gkr_keyring_lock (keyring);
-
- if (!gkr_keyring_unlock (keyring, original)) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- goto out;
- }
-
- gkr_buffer_add_uint32 (result, change_keyring_password (keyring, password));
-
- out:
- g_free (keyring_name);
- gkr_secure_strfree (original);
- gkr_secure_strfree (password);
-
- return TRUE;
-}
-
-static gboolean
-op_list_items (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- GkrKeyring *keyring;
- char *keyring_name;
- GnomeKeyringOpCode opcode;
- GkrKeyringItem *item;
- GList *l, *items;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &keyring_name))
- return FALSE;
-
- keyring = gkr_keyrings_find (keyring_name);
- if (keyring == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- gkr_buffer_add_uint32 (result, 0);
-
- } else if (!request_keyring_access (req, keyring)) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- gkr_buffer_add_uint32 (result, 0);
-
- } else {
-
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- items = NULL;
- for (l = keyring->items; l != NULL; l = l->next) {
- if (acl_check_access (l->data, req->app_ref, GNOME_KEYRING_ACCESS_LIST, FALSE))
- items = g_list_prepend (items, l->data);
- }
- items = g_list_reverse (items);
-
- /* Send the results */
- gkr_buffer_add_uint32 (result, g_list_length (items));
- for (l = items; l != NULL; l = l->next) {
- item = l->data;
- gkr_buffer_add_uint32 (result, item->id);
- }
-
- g_list_free (items);
- }
-
- g_free (keyring_name);
-
- return TRUE;
-}
-
-static gboolean
-op_create_item (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name, *display_name, *secret;
- GnomeKeyringAttributeList *attributes, *hashed;
- GkrKeyringItem *item;
- GkrKeyring *keyring;
- guint32 type;
- GnomeKeyringResult res;
- guint32 id;
- gboolean update_if_exists;
-
- keyring_name = display_name = secret = NULL;
- item = NULL;
- attributes = hashed = NULL;
-
- res = GNOME_KEYRING_RESULT_OK;
- id = 0;
-
- if (!gkr_proto_decode_create_item (packet,
- &keyring_name,
- &display_name,
- &attributes,
- &secret,
- (GnomeKeyringItemType*)&type,
- &update_if_exists)) {
- return FALSE;
- }
-
- if ((type & GNOME_KEYRING_ITEM_TYPE_MASK) >= GNOME_KEYRING_ITEM_LAST_TYPE ||
- display_name == NULL || secret == NULL) {
- res = GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- goto out;
- }
-
- keyring = gkr_keyrings_find (keyring_name);
-
- /* Prompt user to create a new keyring if none exists */
- if (keyring == NULL && keyring_name == NULL) {
- keyring = create_default_keyring (req);
- if (keyring == NULL) {
- res = GNOME_KEYRING_RESULT_DENIED;
- goto out;
- }
- }
-
- /* Make sure we have access to the keyring */
- if (keyring != NULL) {
- if (!request_keyring_access (req, keyring)) {
- res = GNOME_KEYRING_RESULT_DENIED;
- goto out;
- }
-
- /* No such keyring found */
- } else {
- res = GNOME_KEYRING_RESULT_NO_SUCH_KEYRING;
- goto out;
- }
-
- if (update_if_exists) {
- item = gkr_keyring_find_item (keyring, type, keyring->locked ? hashed : attributes);
- if (item) {
- /* Make sure we have access to the previous item */
- if (!request_item_access (req, item, GNOME_KEYRING_ACCESS_WRITE, TRUE))
- item = NULL;
- }
- }
-
- if (!item) {
- item = gkr_keyring_item_create (keyring, type);
- gkr_keyring_add_item (keyring, item);
- }
-
- /* Copy in item type flags */
- item->type |= (type & ~GNOME_KEYRING_ITEM_TYPE_MASK);
-
- g_free (item->display_name);
- item->display_name = g_strdup (display_name);
- gkr_secure_strfree (item->secret);
- item->secret = gkr_secure_strdup (secret);
- gnome_keyring_attribute_list_free (item->attributes);
- item->attributes = gnome_keyring_attribute_list_copy (attributes);
-
- add_item_acl (item, req->app_ref,
- GNOME_KEYRING_ACCESS_READ |
- GNOME_KEYRING_ACCESS_WRITE |
- GNOME_KEYRING_ACCESS_REMOVE);
-
- id = item->id;
- gkr_keyring_save_to_disk (keyring);
-
- out:
- g_free (keyring_name);
- g_free (display_name);
- gkr_secure_strfree (secret);
- gnome_keyring_attribute_list_free (hashed);
- gnome_keyring_attribute_list_free (attributes);
-
- gkr_buffer_add_uint32 (result, res);
- gkr_buffer_add_uint32 (result, id);
- return TRUE;
-}
-
-static gboolean
-op_delete_item (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- GnomeKeyringOpCode opcode;
- guint32 item_id;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_op_string_int (packet,
- &opcode,
- &keyring_name,
- &item_id)) {
- return FALSE;
- }
-
- /* Request access based on what parts were desired */
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_REMOVE,
- TRUE,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (item->keyring) {
- gkr_keyring_remove_item (item->keyring, item);
- gkr_keyring_save_to_disk (item->keyring);
- }
- }
-
- g_free (keyring_name);
- return TRUE;
-}
-
-static gboolean
-op_get_item_info (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name, *secret;
- GkrKeyringItem *item;
- GnomeKeyringOpCode opcode;
- guint32 item_id, flags;
- gboolean ret = TRUE;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_get_item_info (packet, &opcode, &keyring_name,
- &item_id, &flags)) {
- return FALSE;
- }
-
- /* Request access based on what parts were desired */
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_READ,
- (flags & GNOME_KEYRING_ITEM_INFO_SECRET) == GNOME_KEYRING_ITEM_INFO_SECRET,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_add_uint32 (result, item->type);
- if (!gkr_proto_add_utf8_string (result, item->display_name))
- ret = FALSE;
-
- /* Only return the secret if it was requested */
- secret = NULL;
- if ((flags & GNOME_KEYRING_ITEM_INFO_SECRET) == GNOME_KEYRING_ITEM_INFO_SECRET)
- secret = item->secret;
-
- /* Always put the secret string or NULL in the results for compatibility */
- if (!gkr_proto_add_utf8_secret (result, secret))
- ret = FALSE;
-
- gkr_proto_add_time (result, item->mtime);
- gkr_proto_add_time (result, item->ctime);
- }
-
- g_free (keyring_name);
- return ret;
-}
-
-static gboolean
-op_get_item_attributes (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- GnomeKeyringOpCode opcode;
- guint32 item_id;
- gboolean ret = TRUE;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_op_string_int (packet,
- &opcode,
- &keyring_name,
- &item_id)) {
- return FALSE;
- }
-
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_READ,
- FALSE,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_proto_add_attribute_list (result, item->attributes))
- ret = FALSE;
- }
-
- g_free (keyring_name);
- return ret;
-}
-
-static gboolean
-op_get_item_acl (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- GnomeKeyringOpCode opcode;
- guint32 item_id;
- gboolean ret = TRUE;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_op_string_int (packet,
- &opcode,
- &keyring_name,
- &item_id)) {
- return FALSE;
- }
-
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_READ,
- FALSE,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_proto_add_acl (result, item->acl))
- ret = FALSE;
- }
-
- g_free (keyring_name);
- return ret;
-}
-
-static gboolean
-op_set_item_acl (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- guint32 item_id;
- GList *acl;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_set_acl (packet,
- &keyring_name,
- &item_id,
- &acl)) {
- return FALSE;
- }
-
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_WRITE,
- TRUE,
- &item);
-
- if (res == GNOME_KEYRING_RESULT_OK) {
- gnome_keyring_acl_free (item->acl);
- item->acl = gnome_keyring_acl_copy (acl);
-
- if (item->keyring)
- gkr_keyring_save_to_disk (item->keyring);
- }
-
- gkr_buffer_add_uint32 (result, res);
-
- gnome_keyring_acl_free (acl);
- g_free (keyring_name);
- return TRUE;
-}
-
-static gboolean
-op_set_item_info (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- guint32 item_id, type;
- char *item_name, *secret;
- GnomeKeyringResult res;
-
- if (!gkr_proto_decode_set_item_info (packet,
- &keyring_name,
- &item_id,
- (GnomeKeyringItemType*)&type,
- &item_name,
- &secret)) {
- return FALSE;
- }
-
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_WRITE,
- TRUE,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- if ((type & GNOME_KEYRING_ITEM_TYPE_MASK) != GNOME_KEYRING_ITEM_NO_TYPE) {
- item->type = type;
- }
- if (item_name != NULL) {
- g_free (item->display_name);
- item->display_name = g_strdup (item_name);
- }
- if (secret != NULL) {
- gkr_secure_strfree (item->secret);
- item->secret = gkr_secure_strdup (secret);
- }
-
- if (item->keyring)
- gkr_keyring_save_to_disk (item->keyring);
- }
-
- g_free (keyring_name);
- g_free (item_name);
- gkr_secure_strfree (secret);
- return TRUE;
-}
-
-static gboolean
-op_set_daemon_display (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *display;
- GnomeKeyringOpCode opcode;
-
- if (!gkr_proto_decode_op_string (packet, &opcode, &display))
- return FALSE;
-
- if (display == NULL) {
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
- } else {
- g_setenv ("DISPLAY", display, FALSE);
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
- }
-
- g_free (display);
- return TRUE;
-}
-
-static gboolean
-op_set_item_attributes (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req)
-{
- char *keyring_name;
- GkrKeyringItem *item;
- guint32 item_id;
- GnomeKeyringResult res;
- GnomeKeyringAttributeList *attributes;
-
- if (!gkr_proto_decode_set_attributes (packet,
- &keyring_name,
- &item_id,
- &attributes)) {
- return FALSE;
- }
-
- res = lookup_and_request_item_access (req,
- keyring_name,
- item_id,
- GNOME_KEYRING_ACCESS_WRITE,
- TRUE,
- &item);
-
- gkr_buffer_add_uint32 (result, res);
- if (res == GNOME_KEYRING_RESULT_OK) {
- gnome_keyring_attribute_list_free (item->attributes);
- item->attributes = gnome_keyring_attribute_list_copy (attributes);
-
- if (item->keyring)
- gkr_keyring_save_to_disk (item->keyring);
- }
-
- g_free (keyring_name);
- gnome_keyring_attribute_list_free (attributes);
- return TRUE;
-}
-
-static int
-unmatched_attributes (GnomeKeyringAttributeList *attributes,
- GnomeKeyringAttributeList *matching)
-{
- int i, j;
- GnomeKeyringAttribute *matching_attribute;
- GnomeKeyringAttribute *attribute;
- gboolean found;
- int unmatching;
-
- unmatching = 0;
- for (i = 0; i < attributes->len; i++) {
- found = FALSE;
- attribute = &g_array_index (attributes,
- GnomeKeyringAttribute,
- i);
- for (j = 0; j < matching->len; j++) {
- matching_attribute = &g_array_index (matching,
- GnomeKeyringAttribute,
- j);
- if (strcmp (attribute->name, matching_attribute->name) == 0 &&
- attribute->type == matching_attribute->type) {
- found = TRUE;
- break;
- }
- }
- if (!found) {
- unmatching++;
- }
- }
-
- return unmatching;;
-}
-
-static gint
-sort_found (gconstpointer a, gconstpointer b, gpointer user_data)
-{
- GnomeKeyringAttributeList *matching;
- int a_unmatched, b_unmatched;
- GkrKeyringItem *item;
-
- matching = user_data;
-
- item = GKR_KEYRING_ITEM (a);
- g_assert (GKR_IS_KEYRING_ITEM (item));
- a_unmatched = unmatched_attributes (item->attributes, matching);
-
- item = GKR_KEYRING_ITEM (b);
- g_assert (GKR_IS_KEYRING_ITEM (item));
- b_unmatched = unmatched_attributes (item->attributes, matching);
-
- if (a_unmatched < b_unmatched)
- return -1;
- else if (a_unmatched == b_unmatched)
- return 0;
- else
- return 1;
-}
-
-typedef struct _FindContext {
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttributeList *hashed;
- GnomeKeyringItemType type;
- GkrKeyringRequest *req;
- guint nfound;
- GList *items;
-} FindContext;
-
-static gboolean
-find_in_each_keyring (GkrKeyring* keyring, gpointer data)
-{
- FindContext* ctx = (FindContext*)data;
- GkrKeyringItem *item;
- GList *ilist;
-
- for (ilist = keyring->items; ilist != NULL; ilist = ilist->next) {
- item = ilist->data;
- if (!gkr_keyring_item_match (item, ctx->type, keyring->locked ? ctx->hashed : ctx->attributes, FALSE))
- continue;
-
- ++ctx->nfound;
-
- if (keyring->locked) {
- if (!request_keyring_access (ctx->req, keyring))
- return TRUE;
- }
-
- if (request_item_access (ctx->req, item, GNOME_KEYRING_ACCESS_READ, TRUE)) {
- g_object_ref (item);
- ctx->items = g_list_prepend (ctx->items, item);
- }
- }
-
- return TRUE;
-}
-
-static void
-unref_object (gpointer obj, gpointer data)
-{
- g_object_unref (obj);
-}
-
-static gboolean
-op_find (GkrBuffer *packet, GkrBuffer *result, GkrKeyringRequest *req)
-{
- FindContext ctx;
- GList *l;
- gboolean return_val;
-
- memset (&ctx, 0, sizeof (ctx));
-
- if (!gkr_proto_decode_find (packet,
- &ctx.type,
- &ctx.attributes)) {
- return FALSE;
- }
-
- /* Need at least one attribute to match on */
- if (ctx.attributes->len > 0) {
- ctx.hashed = gkr_keyring_item_attributes_hash (ctx.attributes);
- ctx.nfound = 0;
- ctx.req = req;
- ctx.items = NULL;
- gkr_keyrings_foreach (find_in_each_keyring, &ctx);
- }
-
- /* No items given access to */
- if (ctx.nfound > 0 && ctx.items == NULL)
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_DENIED);
-
- /* Zero items matched */
- else if (ctx.nfound == 0)
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_NO_MATCH);
-
- /* More than one item found and given access to */
- else
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- ctx.items = g_list_sort_with_data (ctx.items, sort_found, ctx.attributes);
-
- /* The attributes might have changed since we matched them, rematch */
- return_val = TRUE;
- for (l = ctx.items; l; l = g_list_next (l)) {
- GkrKeyringItem *item = GKR_KEYRING_ITEM (l->data);
-
- if (!item->locked && gkr_keyring_item_match (item, ctx.type, ctx.attributes, FALSE)) {
-
- /* Add it to the output */
- if (!gkr_proto_add_utf8_string (result, item->keyring->keyring_name)) {
- return_val = FALSE;
- break;
- }
-
- gkr_buffer_add_uint32 (result, item->id);
-
- if (!gkr_proto_add_utf8_secret (result, item->secret) ||
- !gkr_proto_add_attribute_list (result, item->attributes)) {
- return_val = FALSE;
- break;
- }
- }
- }
-
- g_list_foreach (ctx.items, unref_object, NULL);
- g_list_free (ctx.items);
-
- gnome_keyring_attribute_list_free (ctx.attributes);
- gnome_keyring_attribute_list_free (ctx.hashed);
-
- return return_val;
-}
-
-static gboolean
-op_prepare_daemon_environment (GkrBuffer *packet, GkrBuffer *result, GkrKeyringRequest *req)
-{
- const gchar **daemonenv;
- gchar **environment, **e;
- gchar *x;
-
- if (!gkr_proto_decode_prepare_environment (packet, &environment))
- return FALSE;
-
- /* Accept environment from outside */
- for (e = environment; *e; ++e) {
- x = strchr (*e, '=');
- if (x) {
- *(x++) = 0;
-
- /* We're only interested in these guys */
- if (g_str_equal (*e, "DISPLAY"))
- g_setenv ("DISPLAY", x, FALSE);
- else if (g_str_equal (*e, "DBUS_SESSION_BUS_ADDRESS"))
- g_setenv ("DBUS_SESSION_BUS_ADDRESS", x, FALSE);
- else if (g_str_equal (*e, "XAUTHORITY"))
- g_setenv ("XAUTHORITY", x, FALSE);
- else if (g_str_equal (*e, "XDG_SESSION_COOKIE"))
- g_setenv ("XDG_SESSION_COOKIE", x, FALSE);
- }
- }
-
- g_strfreev (environment);
-
- gkr_buffer_add_uint32 (result, GNOME_KEYRING_RESULT_OK);
-
- daemonenv = gkr_daemon_util_get_environment ();
- g_return_val_if_fail (daemonenv, FALSE);
-
- gkr_buffer_add_stringv (result, daemonenv);
- return TRUE;
-}
-
-GkrDaemonOperation keyring_ops[] = {
- op_lock_all, /* LOCK_ALL */
- op_set_default_keyring, /* SET_DEFAULT_KEYRING */
- op_get_default_keyring, /* GET_DEFAULT_KEYRING */
- op_list_keyrings, /* LIST_KEYRINGS */
- op_create_keyring, /* CREATE_KEYRING */
- op_lock_keyring, /* LOCK_KEYRING */
- op_unlock_keyring, /* UNLOCK_KEYRING */
- op_delete_keyring, /* DELETE_KEYRING */
- op_get_keyring_info, /* GET_KEYRING_INFO */
- op_set_keyring_info, /* SET_KEYRING_INFO */
- op_list_items, /* LIST_ITEMS */
- op_find, /* FIND */
- op_create_item, /* CREATE_ITEM */
- op_delete_item, /* DELETE_ITEM */
- op_get_item_info, /* GET_ITEM_INFO */
- op_set_item_info, /* SET_ITEM_INFO */
- op_get_item_attributes, /* GET_ITEM_ATTRIBUTES */
- op_set_item_attributes, /* SET_ITEM_ATTRIBUTES */
- op_get_item_acl, /* GET_ITEM_ACL */
- op_set_item_acl, /* SET_ITEM_ACL */
- op_change_keyring_password, /* CHANGE_KEYRING_PASSWORD */
- op_set_daemon_display, /* SET_DAEMON_DISPLAY */
- op_get_item_info, /* GET_ITEM_INFO_PARTIAL */
- op_prepare_daemon_environment, /* PREPARE_DAEMON_ENVIRONMENT */
-};
diff --git a/daemon/gkr-daemon.c b/daemon/gkr-daemon.c
deleted file mode 100644
index 5b87e583..00000000
--- a/daemon/gkr-daemon.c
+++ /dev/null
@@ -1,603 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-daemon.c - main keyring daemon code.
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#include "config.h"
-
-#include "gkr-daemon.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-secure-memory.h"
-#include "common/gkr-unix-signal.h"
-
-#include "keyrings/gkr-keyring-login.h"
-
-#include "library/gnome-keyring.h"
-
-#include "pkcs11/gkr-pkcs11-daemon.h"
-
-#ifdef WITH_SSH
-#include "ssh/gkr-ssh-daemon.h"
-#endif
-
-#include "ui/gkr-ask-daemon.h"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <locale.h>
-#include <syslog.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <gconf/gconf.h>
-#include <gconf/gconf-client.h>
-
-#include <gcrypt.h>
-
-/* preset file descriptors */
-#define STDIN 0
-#define STDOUT 1
-#define STDERR 2
-
-static GMainLoop *loop = NULL;
-
-#ifndef HAVE_SOCKLEN_T
-#define socklen_t int
-#endif
-
-/* -----------------------------------------------------------------------------
- * COMMAND LINE
- */
-
-/* All the components to run on startup if not set in gconf */
-#ifdef WITH_SSH
-#define DEFAULT_COMPONENTS "ssh,keyring,pkcs11"
-#else
-#define DEFAULT_COMPONENTS "keyring,pkcs11"
-#endif
-
-static gboolean run_foreground = FALSE;
-static gboolean run_daemonized = FALSE;
-static gboolean unlock_with_login = FALSE;
-static gchar* run_components = NULL;
-
-static GOptionEntry option_entries[] = {
- { "foreground", 'f', 0, G_OPTION_ARG_NONE, &run_foreground,
- "Run in the foreground", NULL },
- { "daemonize", 'd', 0, G_OPTION_ARG_NONE, &run_daemonized,
- "Run as a daemon", NULL },
- { "login", 'l', 0, G_OPTION_ARG_NONE, &unlock_with_login,
- "Use login password from stdin", NULL },
- { "components", 'c', 0, G_OPTION_ARG_STRING, &run_components,
- "The components to run", DEFAULT_COMPONENTS },
- { NULL }
-};
-
-static void
-parse_arguments (int *argc, char** argv[])
-{
- GError *err = NULL;
- GOptionContext *context;
-
- context = g_option_context_new ("- The Gnome Keyring Daemon");
- g_option_context_add_main_entries (context, option_entries, GETTEXT_PACKAGE);
-
- if (!g_option_context_parse (context, argc, argv, &err)) {
- g_printerr ("gnome-keyring-daemon: %s", err && err->message ? err->message : "");
- g_clear_error (&err);
- }
-
- /* Take ownership of the string */
- if (run_components) {
- run_components = g_strdup (run_components);
- gkr_cleanup_register (g_free, run_components);
- }
-
- g_option_context_free (context);
-}
-
-static gboolean
-check_conf_component (const gchar* component, gboolean *enabled)
-{
- GConfClient *client;
- GConfValue *value;
- GError *err = NULL;
- gchar *key;
-
- *enabled = FALSE;
-
- client = gconf_client_get_default ();
- g_return_val_if_fail (client, FALSE);
-
- key = g_strdup_printf ("/apps/gnome-keyring/daemon-components/%s", component);
- value = gconf_client_get (client, key, &err);
- g_free (key);
- g_object_unref (client);
-
- if (err) {
- g_printerr ("gnome-keyring-daemon: couldn't lookup %s component setting: %s",
- component, err->message ? err->message : "");
- g_clear_error (&err);
- return FALSE;
- }
-
- /* Value is unset */
- if (!value)
- return FALSE;
-
- /* Should be a list of type string */
- if (value->type != GCONF_VALUE_BOOL) {
- g_printerr ("gnome-keyring-daemon: bad gconf value type for daemon-components");
- g_clear_error (&err);
- gconf_value_free (value);
- return FALSE;
- }
-
- *enabled = gconf_value_get_bool (value);
- gconf_value_free (value);
- return TRUE;
-}
-
-static gboolean
-check_run_component (const char* component)
-{
- const gchar *run = run_components;
- gboolean enabled;
-
- if (run == NULL) {
-
- /* Use gconf to determine whether the component should be enabled */
- if (check_conf_component (component, &enabled))
- return enabled;
-
- /* No gconf, error or unset, use built in defaults */
- run = DEFAULT_COMPONENTS;
- }
-
- /*
- * Note that this assumes that no components are substrings of
- * one another. Which makes things quick, and simple.
- */
- return strstr (run, component) ? TRUE : FALSE;
-}
-
-/* -----------------------------------------------------------------------------
- * MEMORY
- */
-
-static gboolean do_warning = TRUE;
-#define WARNING "couldn't allocate secure memory to keep passwords " \
- "and or keys from being written to the disk"
-
-#define ABORTMSG "The GNOME_KEYRING_PARANOID environment variable was set. " \
- "Exiting..."
-
-
-/*
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
- /* The daemon uses cooperative threading, and doesn't need locking */
-}
-
-void
-gkr_memory_unlock (void)
-{
- /* The daemon uses cooperative threading, and doesn't need locking */
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- const gchar *env;
-
- /* We were asked to free memory */
- if (!sz) {
- g_free (p);
- return NULL;
- }
-
- /* We were asked to allocate */
- if (!p) {
- if (do_warning) {
- g_message (WARNING);
- do_warning = FALSE;
- }
-
- env = g_getenv ("GNOME_KEYRING_PARANOID");
- if (env && *env)
- g_error (ABORTMSG);
-
- return g_malloc0 (sz);
- }
-
- /*
- * Reallocation is a bit of a gray area, as we can be asked
- * by external libraries (like libgcrypt) to reallocate a
- * non-secure block into secure memory. We cannot satisfy
- * this request (as we don't know the size of the original
- * block) so we just try our best here.
- */
-
- return g_realloc (p, sz);
-}
-
-/* -----------------------------------------------------------------------------
- * LOGS
- */
-
-static void
-log_handler (const gchar *log_domain, GLogLevelFlags log_level,
- const gchar *message, gpointer user_data)
-{
- int level;
-
- /* Note that crit and err are the other way around in syslog */
-
- switch (G_LOG_LEVEL_MASK & log_level) {
- case G_LOG_LEVEL_ERROR:
- level = LOG_CRIT;
- break;
- case G_LOG_LEVEL_CRITICAL:
- level = LOG_ERR;
- break;
- case G_LOG_LEVEL_WARNING:
- level = LOG_WARNING;
- break;
- case G_LOG_LEVEL_MESSAGE:
- level = LOG_NOTICE;
- break;
- case G_LOG_LEVEL_INFO:
- level = LOG_INFO;
- break;
- case G_LOG_LEVEL_DEBUG:
- level = LOG_DEBUG;
- break;
- default:
- level = LOG_ERR;
- break;
- }
-
- /* Log to syslog first */
- if (log_domain)
- syslog (level, "%s: %s", log_domain, message);
- else
- syslog (level, "%s", message);
-
- /* And then to default handler for aborting and stuff like that */
- g_log_default_handler (log_domain, log_level, message, user_data);
-}
-
-static void
-prepare_logging ()
-{
- GLogLevelFlags flags = G_LOG_FLAG_FATAL | G_LOG_LEVEL_ERROR |
- G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING |
- G_LOG_LEVEL_MESSAGE | G_LOG_LEVEL_INFO;
-
- openlog ("gnome-keyring-daemon", LOG_PID, LOG_AUTH);
-
- g_log_set_handler (NULL, flags, log_handler, NULL);
- g_log_set_handler ("Glib", flags, log_handler, NULL);
- g_log_set_handler ("Gtk", flags, log_handler, NULL);
- g_log_set_handler ("Gnome", flags, log_handler, NULL);
- g_log_set_default_handler (log_handler, NULL);
-}
-
-static gboolean
-signal_handler (guint sig, gpointer unused)
-{
- g_main_loop_quit (loop);
- return TRUE;
-}
-
-static int
-sane_dup2 (int fd1, int fd2)
-{
- int ret;
-
- retry:
- ret = dup2 (fd1, fd2);
- if (ret < 0 && errno == EINTR)
- goto retry;
-
- return ret;
-}
-
-static gchar*
-read_login_password (int fd)
-{
- /* We only accept a max of 8K as the login password */
- #define MAX_LENGTH 8192
- #define MAX_BLOCK 256
-
- gchar *buf = gkr_secure_alloc (MAX_BLOCK);
- gchar *ret = NULL;
- int r, len = 0;
-
- for (;;) {
- r = read (fd, buf, sizeof (buf));
- if (r < 0) {
- if (errno == EAGAIN)
- continue;
- gkr_secure_free (ret);
- gkr_secure_free (buf);
- return NULL;
-
- } else {
- char *n = gkr_secure_realloc (ret, len + r + 1);
- memset(n + len, 0, r + 1);
- ret = n;
- len = len + r;
-
- strncat (ret, buf, r);
- }
-
- if (r == 0 || len > MAX_LENGTH)
- break;
- }
-
- gkr_secure_free (buf);
- return ret;
-}
-
-static void
-close_stdinout (void)
-{
- int fd;
-
- fd = open ("/dev/null", O_RDONLY);
- sane_dup2 (fd, 0);
- close (fd);
-
- fd = open ("/dev/null", O_WRONLY);
- sane_dup2 (fd, 1);
- close (fd);
-
- fd = open ("/dev/null", O_WRONLY);
- sane_dup2 (fd, 2);
- close (fd);
-}
-
-static void
-cleanup_and_exit (int code)
-{
- gkr_cleanup_perform ();
- _exit (code);
-}
-
-static gboolean
-lifetime_slave_pipe_io (GIOChannel *channel,
- GIOCondition cond,
- gpointer callback_data)
-{
- cleanup_and_exit (2);
- return FALSE;
-}
-
-static void
-print_environment (pid_t pid)
-{
- const gchar **env;
- for (env = gkr_daemon_util_get_environment (); *env; ++env)
- printf ("%s\n", *env);
- printf ("GNOME_KEYRING_PID=%d\n", (gint)pid);
-}
-
-int
-main (int argc, char *argv[])
-{
- const char *env;
- int fd;
- pid_t pid;
- GIOChannel *channel;
- GMainContext *ctx;
- gchar *login_password;
- unsigned seed;
-
- g_type_init ();
- g_thread_init (NULL);
-
- parse_arguments (&argc, &argv);
-
-#ifdef HAVE_LOCALE_H
- /* internationalisation */
- setlocale (LC_ALL, "");
-#endif
-
-#ifdef HAVE_GETTEXT
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
- textdomain (GETTEXT_PACKAGE);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif
-
- gkr_crypto_setup ();
-
- gcry_create_nonce (&seed, sizeof (seed));
- srand (seed);
-
- /* Initialize the appropriate components */
- if (check_run_component ("keyring")) {
- if (!gkr_daemon_io_create_master_socket ())
- cleanup_and_exit (1);
- }
-
-#ifdef WITH_SSH
- if (check_run_component ("ssh")) {
- if (!gkr_daemon_ssh_io_initialize ())
- cleanup_and_exit (1);
- }
-#endif
-
- if (check_run_component ("pkcs11")) {
- if (!gkr_pkcs11_daemon_setup ())
- cleanup_and_exit (1);
- }
-
- /*
- * When --login is specified then the login password is passed
- * in on stdin. All data (including newlines) are part of the
- * password.
- */
- login_password = unlock_with_login ? read_login_password (STDIN) : NULL;
-
- /*
- * The whole forking and daemonizing dance starts here.
- */
- if (!run_foreground) {
- pid = fork ();
-
- /* An intermediate child */
- if (pid == 0) {
- if (run_daemonized) {
- pid = fork ();
-
- /* Still in the intermedate child */
- if (pid != 0) {
- gkr_secure_free (login_password);
-
- /* This process exits, so that the
- * final child will inherit init as parent
- * to avoid zombies
- */
- if (pid == -1) {
- exit (1);
- } else {
- /* This is where we know the pid of the daemon.
- * The initial process will waitpid until we exit,
- * so there is no race */
- print_environment (pid);
- exit (0);
- }
- }
- }
-
- /* final child continues here */
-
- /* The initial process */
- } else {
- gkr_secure_free (login_password);
-
- if (run_daemonized) {
- int status;
-
- /* Initial process, waits for intermediate child */
- if (pid == -1)
- exit (1);
-
- waitpid (pid, &status, 0);
- if (WEXITSTATUS (status) != 0)
- exit (WEXITSTATUS (status));
-
- } else {
- print_environment (pid);
- }
-
- exit (0);
- }
-
- /* The final child ... */
- close_stdinout ();
-
- } else {
- print_environment (getpid ());
- }
-
- /* Daemon process continues here */
-
- /* Send all warning or error messages to syslog */
- prepare_logging();
-
- loop = g_main_loop_new (NULL, FALSE);
- ctx = g_main_loop_get_context (loop);
-
- signal (SIGPIPE, SIG_IGN);
- gkr_unix_signal_connect (ctx, SIGINT, signal_handler, NULL);
- gkr_unix_signal_connect (ctx, SIGHUP, signal_handler, NULL);
- gkr_unix_signal_connect (ctx, SIGTERM, signal_handler, NULL);
-
- env = getenv ("GNOME_KEYRING_LIFETIME_FD");
- if (env && env[0]) {
- fd = atoi (env);
- if (fd != 0) {
- channel = g_io_channel_unix_new (fd);
- g_io_add_watch (channel,
- G_IO_IN | G_IO_HUP,
- lifetime_slave_pipe_io, NULL);
- g_io_channel_unref (channel);
- }
-
- }
-
- gkr_async_workers_init (loop);
-
-#ifdef WITH_DBUS
- /*
- * We may be launched before the DBUS session, (ie: via PAM)
- * and DBus tries to launch itself somehow, so double check
- * that it has really started.
- */
- env = getenv ("DBUS_SESSION_BUS_ADDRESS");
- if (env && env[0])
- gkr_daemon_dbus_setup (loop);
-#endif
-
- /*
- * Unlock the login keyring if we were given a password on STDIN.
- * If it does not exist. We create it.
- */
- if (unlock_with_login && login_password) {
- if (!gkr_keyring_login_unlock (login_password))
- g_warning ("Failed to unlock login on startup");
- gkr_secure_free (login_password);
- }
-
- g_main_loop_run (loop);
-
- /* Make sure no other threads are running */
- gkr_async_workers_stop_all ();
-
- /* This wraps everything up in order */
- gkr_cleanup_perform ();
-
- /* Final shutdown of anything workers running about */
- gkr_async_workers_uninit ();
-
- return 0;
-}
diff --git a/daemon/gkr-daemon.h b/daemon/gkr-daemon.h
deleted file mode 100644
index 21a74a72..00000000
--- a/daemon/gkr-daemon.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-daemon.h - common includes for the keyring daemon code
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#ifndef GNOME_KEYRING_DAEMON_H
-#define GNOME_KEYRING_DAEMON_H
-
-#include <time.h>
-#include <sys/types.h>
-#include <glib.h>
-
-#include "common/gkr-buffer.h"
-
-#include "keyrings/gkr-keyring.h"
-#include "keyrings/gkr-keyring-item.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-
-
-typedef struct {
- GnomeKeyringApplicationRef *app_ref;
-} GkrKeyringRequest;
-
-typedef gboolean (*GkrDaemonOperation) (GkrBuffer *packet, GkrBuffer *result,
- GkrKeyringRequest *req);
-
-extern GkrDaemonOperation keyring_ops[];
-
-gboolean gkr_daemon_io_create_master_socket (void);
-const gchar* gkr_daemon_io_get_socket_path (void);
-
-/* Dbus Initialization/Cleanup */
-#ifdef WITH_DBUS
-void gkr_daemon_dbus_setup (GMainLoop *loop);
-#endif
-
-#endif /* GNOME_KEYRING_DAEMON_H */
diff --git a/daemon/org.gnome.keyring.service.in b/daemon/org.gnome.keyring.service.in
deleted file mode 100644
index 13a32be8..00000000
--- a/daemon/org.gnome.keyring.service.in
+++ /dev/null
@@ -1,3 +0,0 @@
-[D-BUS Service]
-Name=org.gnome.keyring
-Exec=@BINDIR@/gnome-keyring-daemon --foreground --components=keyring
diff --git a/data/Makefile.am b/data/Makefile.am
deleted file mode 100644
index 5784759e..00000000
--- a/data/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-
-@INTLTOOL_SCHEMAS_RULE@
-
-schemasdir = $(GCONF_SCHEMA_FILE_DIR)
-schemas_in_files = gnome-keyring.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
-
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
- @GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) gconftool-2 \
- --makefile-install-rule $(schemas_DATA) || \
- (echo ;\
- echo "*****************************************************"; \
- echo "Installation of schemas failed, install them manually"; \
- echo "*****************************************************";)
- @true
-else
-install-data-local:
-endif
-
-EXTRA_DIST = $(schemas_in_files)
-
-CLEANFILES = $(schemas_DATA)
-
diff --git a/data/gnome-keyring.schemas.in b/data/gnome-keyring.schemas.in
deleted file mode 100644
index 18ee14a9..00000000
--- a/data/gnome-keyring.schemas.in
+++ /dev/null
@@ -1,32 +0,0 @@
-<gconfschemafile>
- <schemalist>
- <schema>
- <key>/schemas/apps/gnome-keyring/daemon-components/ssh</key>
- <applyto>/apps/gnome-keyring/daemon-components/ssh</applyto>
- <owner>gnome-keyring</owner>
- <type>bool</type>
- <default>TRUE</default>
- <locale name="C">
- <short>Whether the gnome-keyring SSH agent is enabled.</short>
- <long>This option enables the SSH agent in the gnome-keyring
- daemon. It only takes effect as gnome-keyring-daemon starts,
- (ie: when the user logs in). This setting may be overridden
- when certain command line arguments are passed to the daemon.</long>
- </locale>
- </schema>
- <schema>
- <key>/schemas/apps/gnome-keyring/daemon-components/pkcs11</key>
- <applyto>/apps/gnome-keyring/daemon-components/pkcs11</applyto>
- <owner>gnome-keyring</owner>
- <type>bool</type>
- <default>TRUE</default>
- <locale name="C">
- <short>Whether the gnome-keyring PKCS#11 component is enabled.</short>
- <long>This option enables the PKCS#11 component in the gnome-keyring
- daemon. It only takes effect as gnome-keyring-daemon starts,
- (ie: when the user logs in). This setting may be overridden
- when certain command line arguments are passed to the daemon.</long>
- </locale>
- </schema>
- </schemalist>
-</gconfschemafile>
diff --git a/keyring-intro.txt b/keyring-intro.txt
deleted file mode 100644
index 5c1859e5..00000000
--- a/keyring-intro.txt
+++ /dev/null
@@ -1,154 +0,0 @@
-GNOME Keyring is a system to store passwords and other sensitive data in a
-standardized way across all GNOME applications.
-
-A keyring stores a collection of encrypted passwords and encrypted information
-about those passwords. A user can have multiple keyrings, each for a different
-use, but there is a default one, called 'login'. There is also a special "session"
-keyring which is not stored on disk and goes away when you log out.
-
-When a user logs into GNOME, the keyrings are locked and a master keyring
-password has to be provided in order to unlock each of them. A keyring can be
-configured to be locked automatically after a period of inactivity (This isn't
-actually implemented yet but is coming soon)
-
-The data inside a keyring is stored in "items". An item can be of these types:
-
- GNOME_KEYRING_ITEM_GENERIC_SECRET
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD
- GNOME_KEYRING_ITEM_NOTE
-
-Notice that we might extend the set of types as necessary.
-
-Each item has a name, such as "university proxy password" or "example.org SSH
-private key password", a secret, and an unlimited list of attributes. Each
-attribute consists of a name-value pair that is intended to serve as a hint for
-the applications (e.g., "user=fer", or "server=example.org"). This enables
-applications to find the relevant item in the keyring. All strings are UTF-8.
-Attributes can be integers or strings.
-
-
-Storing a password in a keyring
--------------------------------
-
-The example code below demonstrates how to add the new password (and associated
-data) into the selected keyring:
-
-
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
-
- attributes = gnome_keyring_attribute_list_new ();
-
- attribute.name = g_strdup ("user");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup ("gnomer");
- g_array_append_val (attributes, attribute);
-
- attribute.name = g_strdup ("server");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup ("master.gnome.org");
- g_array_append_val (attributes, attribute);
-
- attribute.name = g_strdup ("protocol");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup ("ssh");
- g_array_append_val (attributes, attribute);
-
- gnome_keyring_item_create (NULL, /* Use default keyring */
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD, /* type */
- "master.gnome.org SSH password", /* name */
- attributes, /* attribute list */
- "mypassword", /* password */
- TRUE, /* Update if already exists */
- create_item_cb, NULL, NULL);
- gnome_keyring_attribute_list_free (attributes);
-
-
-In most cases, applications must use standard attributes. There is a convenience
-function in gnome-keyring to aid in setting these attributes:
-
- gnome_keyring_set_network_password (NULL /* default keyring */,
- "gnomer" /* user */
- NULL, /* domain */
- "master.gnome.org", /* server */
- NULL, /* object */
- "ssh", /* protocol */
- NULL, /* authtype */
- 0, /* port, default */
- "mypassword", /* password */
- set_network_cb, NULL, NULL);
-
-
-Retrieving a password in a keyring
-----------------------------------
-
-Typically, applications will search for a password that matches certain
-criteria. This is done by providing a list of specific attributes to the
-
- gnome_keyring_find_items
-
-function. In the common case that an application is searching for a network
-password, however, there is a convenience function that can be used instead:
-
-
- gnome_keyring_find_network_password_sync ("gnomer", /* user */
- NULL, /* domain */
- "master.gnome.org", /* server */
- NULL, /* object */
- "ssh", /* protocol */
- NULL, /* authtype */
- 0, /* port */
- &list);
-
-
-In this example, list is a GList containing GnomeKeyringNetworkPasswordData
-entries.
-
-The search is performed by the GNOME Keyring daemon, which looks through the
-passwords on every keyring. The daemon gathers a list of all of the items
-(passwords) that match the specified criteria. The returned list can contain
-several matches, for instance {server=foo, user=bar} and {server=foo}. The
-daemon always orders these such that the ones that match the least of the
-query are returned first.
-
-This is so that you can for instance have two passwords on the same
-machine, but say on different ports, and one is the default port (not
-set). Then just querying for the server will give you the one without
-the additional port.
-
-For each item, it then asks the user whether to allow the application that
-requested the item to receive it. Only the items allowed by the user are
-given to the application.
-
-Note that multiple ways of approving key usage are provided to the user, such
-as "Deny", "Allow this time", "Allow always".
-
-Using multiple keyrings
------------------------
-
-Applications should provide the user an opportunity to select the keyring in
-which to store the password. The default keyring can be obtained by calling
-
- gnome_keyring_get_default_keyring
-
-while a list of all available keyrings can be obtained by calling the
-
- gnome_keyring_list_keyring_names
-
-function. Passing NULL for keyring parameter in any gnome-keyring function
-will use the default one.
-
-Some notes about gnome-keyring API
-----------------------------------
-
-Most GNOME Keyring functions are asynchronous. Because of this, callback
-functions should be provided that will be executed when the required operation
-has finished. For those that prefer synchronous operation, there are
-synchronous variants of common gnome-keyring functions:
-
- gnome_keyring_find_items_sync
- gnome_keyring_find_itemsv_sync
- gnome_keyring_item_create_sync
- gnome_keyring_find_network_password_sync
- gnome_keyring_set_network_password_sync
-
diff --git a/keyrings/Makefile.am b/keyrings/Makefile.am
deleted file mode 100644
index 95a01055..00000000
--- a/keyrings/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-noinst_LTLIBRARIES=libgkr-keyrings.la
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libgkr_keyrings_la_SOURCES = \
- gkr-keyring.c gkr-keyring.h \
- gkr-keyring-binary.c gkr-keyring-textual.c \
- gkr-keyring-item.c gkr-keyring-item.h \
- gkr-keyrings.c gkr-keyrings.h \
- gkr-keyring-login.c gkr-keyring-login.h
-
-libgkr_keyrings_la_LIBADD = \
- $(GLIB_LIBS) \
- $(GOBJECT_LIBS)
-
-EXTRA_DIST = \
- file-format.txt
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
- \ No newline at end of file
diff --git a/keyrings/file-format.txt b/keyrings/file-format.txt
deleted file mode 100644
index e3c36a2b..00000000
--- a/keyrings/file-format.txt
+++ /dev/null
@@ -1,69 +0,0 @@
-guint32: 32bit, msbf
-time_t: 2 * guint32
-strings: uint32 + bytes, no padding, NULL is encoded as 0xffffffff
-reserved, must be zero
-
-string hash: 16 bytes md5
-guint32 hash: 0xdeadbeef ^ x ^ (x>>16 | x&0xffff << 16)
-
-
-Header:
-
-"GnomeKeyring\n\r\0\n"
-2 byte version, 1 byte cryto, 1 byte hash
-
-keyring data:
-
-string: keyring name
-time_t ctime
-time_t mtime
-guint32 flags (flag 0 == lock_on_idle)
-guint32 lock_timeout
-guint32 hash_iterations
-byte[8] salt
-guint32 reserved[4]
-
-hashed items:
-
-guint32 num_items
-
-num_items *
-
- guint32 id
- guint32 type
- guint32 num_attributes
-
- num_attributes *
- string name
- guint32 type
- guint32 int_hash, or string str_hash
-
-guin32 num_encrypted bytes
- encrypted data:
- bytes[16] encryted hash, (for decrypt ok verify)
-
- num_items *
- string display_name
- string secret
- time_t ctime
- time_t mtime
-
- string reserved_str
- guint[4] reserved_int2
-
- guint32 num_attributes
- num_attributes *
- string name
- guint32 type
- guint32 or string val
-
- guint acl_len
- acl_len *
- guint32 types_allowed
- string display_name
- string pathname
- string reserved_str
- guint32 reserved_uint
-
- zero padding to make even multiple of 16
-
diff --git a/keyrings/gkr-keyring-binary.c b/keyrings/gkr-keyring-binary.c
deleted file mode 100644
index 5af271ff..00000000
--- a/keyrings/gkr-keyring-binary.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring-binary.c - The binary encrypted format of a keyring
-
- Copyright (C) 2003 Red Hat, Inc
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyring.h"
-#include "gkr-keyring-item.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring-private.h"
-#include "library/gnome-keyring-proto.h"
-
-#include <glib.h>
-
-#include <gcrypt.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* -----------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-#define LOCK_ON_IDLE_FLAG (1<<0)
-
-typedef struct {
- /* unencrypted: */
- guint32 id;
- guint32 type;
- GnomeKeyringAttributeList *hashed_attributes;
-
- /* encrypted: */
- char *display_name;
- char *secret;
- time_t ctime;
- time_t mtime;
- GnomeKeyringAttributeList *attributes;
- GList *acl;
-} ItemInfo;
-
-#define KEYRING_FILE_HEADER "GnomeKeyring\n\r\0\n"
-#define KEYRING_FILE_HEADER_LEN 16
-
-/* -----------------------------------------------------------------------------
- * BINARY ENCRYPTED FILE FORMAT
- */
-
-static void
-init_salt (guchar salt[8])
-{
- gboolean got_random;
- int i, fd;
-
- got_random = FALSE;
-#ifdef HAVE_DEVRANDOM
- fd = open ("/dev/random", O_RDONLY);
- if (fd != -1) {
- struct stat st;
- /* Make sure it's a character device */
- if ((fstat (fd, &st) == 0) && S_ISCHR (st.st_mode)) {
- if (read (fd, salt, 8) == 8) {
- got_random = TRUE;
- }
- }
- close (fd);
- }
-#endif
-
- if (!got_random) {
- for (i=0; i < 8; i++) {
- salt[i] = (int) (256.0*rand()/(RAND_MAX+1.0));
- }
- }
-
-}
-
-static gboolean
-encrypt_buffer (GkrBuffer *buffer,
- const char *password,
- guchar salt[8],
- int iterations)
-{
- gcry_cipher_hd_t cih;
- gcry_error_t gerr;
- guchar *key, *iv;
- size_t pos;
-
- g_assert (buffer->len % 16 == 0);
- g_assert (16 == gcry_cipher_get_algo_blklen (GCRY_CIPHER_AES128));
- g_assert (16 == gcry_cipher_get_algo_keylen (GCRY_CIPHER_AES128));
-
- if (!gkr_crypto_generate_symkey_simple (GCRY_CIPHER_AES128, GCRY_MD_SHA256,
- password, salt, 8, iterations, &key, &iv))
- return FALSE;
-
- gerr = gcry_cipher_open (&cih, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0);
- if (gerr) {
- g_warning ("couldn't create aes cipher context: %s",
- gcry_strerror (gerr));
- gkr_secure_free (key);
- g_free (iv);
- return FALSE;
- }
-
- /* 16 = 128 bits */
- gerr = gcry_cipher_setkey (cih, key, 16);
- g_return_val_if_fail (!gerr, FALSE);
- gkr_secure_free (key);
-
- /* 16 = 128 bits */
- gerr = gcry_cipher_setiv (cih, iv, 16);
- g_return_val_if_fail (!gerr, FALSE);
- g_free (iv);
-
- for (pos = 0; pos < buffer->len; pos += 16) {
- /* In place encryption */
- gerr = gcry_cipher_encrypt (cih, buffer->buf + pos, 16, NULL, 0);
- g_return_val_if_fail (!gerr, FALSE);
- }
-
- gcry_cipher_close (cih);
-
- return TRUE;
-}
-
-static gboolean
-decrypt_buffer (GkrBuffer *buffer,
- const char *password,
- guchar salt[8],
- int iterations)
-{
- gcry_cipher_hd_t cih;
- gcry_error_t gerr;
- guchar *key, *iv;
- size_t pos;
-
- g_assert (buffer->len % 16 == 0);
- g_assert (16 == gcry_cipher_get_algo_blklen (GCRY_CIPHER_AES128));
- g_assert (16 == gcry_cipher_get_algo_keylen (GCRY_CIPHER_AES128));
-
- if (!gkr_crypto_generate_symkey_simple (GCRY_CIPHER_AES128, GCRY_MD_SHA256,
- password, salt, 8, iterations, &key, &iv))
- return FALSE;
-
- gerr = gcry_cipher_open (&cih, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0);
- if (gerr) {
- g_warning ("couldn't create aes cipher context: %s",
- gcry_strerror (gerr));
- gkr_secure_free (key);
- g_free (iv);
- return FALSE;
- }
-
- /* 16 = 128 bits */
- gerr = gcry_cipher_setkey (cih, key, 16);
- g_return_val_if_fail (!gerr, FALSE);
- gkr_secure_free (key);
-
- /* 16 = 128 bits */
- gerr = gcry_cipher_setiv (cih, iv, 16);
- g_return_val_if_fail (!gerr, FALSE);
- g_free (iv);
-
- for (pos = 0; pos < buffer->len; pos += 16) {
- /* In place encryption */
- gerr = gcry_cipher_decrypt (cih, buffer->buf + pos, 16, NULL, 0);
- g_return_val_if_fail (!gerr, FALSE);
- }
-
- gcry_cipher_close (cih);
-
- return TRUE;
-}
-
-static gboolean
-verify_decrypted_buffer (GkrBuffer *buffer)
-{
- guchar digest[16];
-
- /* In case the world changes on us... */
- g_return_val_if_fail (gcry_md_get_algo_dlen (GCRY_MD_MD5) == sizeof (digest), 0);
-
- gcry_md_hash_buffer (GCRY_MD_MD5, (void*)digest,
- (guchar*)buffer->buf + 16, buffer->len - 16);
-
- return memcmp (buffer->buf, digest, 16) == 0;
-}
-
-static gboolean
-generate_acl_data (GkrBuffer *buffer, GList *acl)
-{
- GList *l;
- GnomeKeyringAccessControl *ac;
-
- gkr_buffer_add_uint32 (buffer, g_list_length (acl));
-
- for (l = acl; l != NULL; l = l->next) {
- ac = l->data;
-
- gkr_buffer_add_uint32 (buffer, ac->types_allowed);
- if (!gkr_proto_add_utf8_string (buffer, ac->application->display_name)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, ac->application->pathname)) {
- return FALSE;
- }
- /* Reserved: */
- if (!gkr_proto_add_utf8_string (buffer, NULL)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, 0);
- }
-
- return TRUE;
-}
-
-static gboolean
-generate_encrypted_data (GkrBuffer *buffer, GkrKeyring *keyring)
-{
- GList *l;
- int i;
- GkrKeyringItem *item;
-
- /* Make sure we're using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- for (l = keyring->items; l != NULL; l = l->next) {
- item = l->data;
- if (!gkr_proto_add_utf8_string (buffer, item->display_name)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, item->secret)) {
- return FALSE;
- }
- gkr_proto_add_time (buffer, item->ctime);
- gkr_proto_add_time (buffer, item->mtime);
-
- /* reserved: */
- if (!gkr_proto_add_utf8_string (buffer, NULL)) {
- return FALSE;
- }
- for (i = 0; i < 4; i++) {
- gkr_buffer_add_uint32 (buffer, 0);
- }
-
- if (!gkr_proto_add_attribute_list (buffer, item->attributes)) {
- return FALSE;
- }
- if (!generate_acl_data (buffer, item->acl)) {
- return FALSE;
- }
- }
- return TRUE;
-}
-
-gboolean
-gkr_keyring_binary_generate (GkrKeyring *keyring, GkrBuffer *buffer)
-{
- guint flags;
- GList *l;
- GkrKeyringItem *item;
- GnomeKeyringAttributeList *hashed;
- GkrBuffer to_encrypt;
- guchar digest[16];
- int i;
-
- /* In case the world changes on us... */
- g_return_val_if_fail (gcry_md_get_algo_dlen (GCRY_MD_MD5) == sizeof (digest), FALSE);
-
- g_assert (!keyring->locked);
-
- /* Prepare the keyring for encryption */
- if (!keyring->salt_valid) {
- keyring->hash_iterations = 1000 + (int) (1000.0 * rand() / (RAND_MAX + 1.0));
- init_salt (keyring->salt);
- keyring->salt_valid = TRUE;
- }
-
- gkr_buffer_append (buffer, (guchar*)KEYRING_FILE_HEADER, KEYRING_FILE_HEADER_LEN);
- gkr_buffer_add_byte (buffer, 0); /* Major version */
- gkr_buffer_add_byte (buffer, 0); /* Minor version */
- gkr_buffer_add_byte (buffer, 0); /* crypto (0 == AEL) */
- gkr_buffer_add_byte (buffer, 0); /* hash (0 == MD5) */
-
- if (!gkr_proto_add_utf8_string (buffer, keyring->keyring_name)) {
- return FALSE;
- }
-
- gkr_proto_add_time (buffer, keyring->mtime);
- gkr_proto_add_time (buffer, keyring->ctime);
-
- flags = 0;
- if (keyring->lock_on_idle) {
- flags |= 1;
- }
- gkr_buffer_add_uint32 (buffer, flags);
- gkr_buffer_add_uint32 (buffer, keyring->lock_timeout);
- gkr_buffer_add_uint32 (buffer, keyring->hash_iterations);
- gkr_buffer_append (buffer, (guchar*)keyring->salt, 8);
-
- /* Reserved: */
- for (i = 0; i < 4; i++) {
- gkr_buffer_add_uint32 (buffer, 0);
- }
-
- /* Hashed items: */
- gkr_buffer_add_uint32 (buffer, g_list_length (keyring->items));
-
- for (l = keyring->items; l != NULL; l = l->next) {
- item = l->data;
- gkr_buffer_add_uint32 (buffer, item->id);
- gkr_buffer_add_uint32 (buffer, item->type);
-
- hashed = gkr_keyring_item_attributes_hash (item->attributes);
-
- if (!gkr_proto_add_attribute_list (buffer, hashed)) {
- gnome_keyring_attribute_list_free (hashed);
- return FALSE;
- }
- gnome_keyring_attribute_list_free (hashed);
- }
-
- /* Encrypted data. Use non-pageable memory */
- gkr_buffer_init_full (&to_encrypt, 4096, gkr_secure_realloc);
-
- gkr_buffer_append (&to_encrypt, (guchar*)digest, 16); /* Space for hash */
-
- if (!generate_encrypted_data (&to_encrypt, keyring)) {
- gkr_buffer_uninit (&to_encrypt);
- return FALSE;
- }
-
- /* Pad with zeros to multiple of 16 bytes */
- while (to_encrypt.len % 16 != 0) {
- gkr_buffer_add_byte (&to_encrypt, 0);
- }
-
- gcry_md_hash_buffer (GCRY_MD_MD5, (void*)digest,
- (guchar*)to_encrypt.buf + 16, to_encrypt.len - 16);
- memcpy (to_encrypt.buf, digest, 16);
-
- /* This is either set by gnome_keyring_create, or when reading from disk */
- g_assert (keyring->hash_iterations);
-
- if (!encrypt_buffer (&to_encrypt, keyring->password, keyring->salt, keyring->hash_iterations)) {
- gkr_buffer_uninit (&to_encrypt);
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, to_encrypt.len);
- gkr_buffer_append (buffer, to_encrypt.buf, to_encrypt.len);
- gkr_buffer_uninit (&to_encrypt);
-
- return TRUE;
-}
-
-static gboolean
-decode_acl (GkrBuffer *buffer, gsize offset, gsize *offset_out, GList **out)
-{
- GList *acl;
- guint32 num_acs;
- guint32 x, y;
- int i;
- char *name, *path, *reserved;
- GnomeKeyringApplicationRef *app;
-
- acl = NULL;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &num_acs)) {
- return FALSE;
- }
- for (i = 0; i < num_acs; i++) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &x)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &name)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &path)) {
- g_free (name);
- goto bail;
- }
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &reserved) ||
- reserved != NULL) {
- g_free (name);
- g_free (path);
- g_free (reserved);
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &y)) {
- g_free (name);
- g_free (path);
- g_free (reserved);
- goto bail;
- }
-
- app = g_new0 (GnomeKeyringApplicationRef, 1);
- app->display_name = name;
- app->pathname = path;
-
- acl = g_list_prepend (acl,
- gnome_keyring_access_control_new (app, x));
- }
-
- *offset_out = offset;
- *out = g_list_reverse (acl);
- return TRUE;
-
- bail:
- gnome_keyring_acl_free (acl);
- return FALSE;
-}
-
-static void
-remove_unavailable_item (gpointer key, gpointer dummy, GkrKeyring *keyring)
-{
- /* Called to remove items from a keyring that no longer exist */
-
- GkrKeyringItem *item;
- guint id = GPOINTER_TO_UINT (key);
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- item = gkr_keyring_get_item (keyring, id);
- if (item)
- gkr_keyring_remove_item (keyring, item);
-}
-
-gint
-gkr_keyring_binary_parse (GkrKeyring *keyring, GkrBuffer *buffer)
-{
- gsize offset;
- guchar major, minor, crypto, hash;
- guint32 flags;
- guint32 lock_timeout;
- time_t mtime, ctime;
- char *display_name;
- int i, j;
- guint32 tmp;
- guint32 num_items;
- guint32 crypto_size;
- guint32 hash_iterations;
- guchar salt[8];
- ItemInfo *items;
- GkrBuffer to_decrypt = GKR_BUFFER_EMPTY;
- gboolean locked;
- GList *l;
- GHashTable *checks = NULL;
- GkrKeyringItem *item;
- char *reserved;
-
- display_name = NULL;
- items = 0;
-
- /* We're decrypting this, so use secure memory */
- gkr_buffer_set_allocator (&to_decrypt, gkr_secure_realloc);
-
- if (buffer->len < KEYRING_FILE_HEADER_LEN) {
- return 0;
- }
- if (memcmp (buffer->buf, KEYRING_FILE_HEADER, KEYRING_FILE_HEADER_LEN) != 0) {
- return 0;
- }
- offset = KEYRING_FILE_HEADER_LEN;
-
- major = buffer->buf[offset++];
- minor = buffer->buf[offset++];
- crypto = buffer->buf[offset++];
- hash = buffer->buf[offset++];
-
- if (major != 0 || minor != 0 ||
- crypto != 0 || hash != 0) {
- return -1;
- }
-
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &display_name)) {
- goto bail;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset, &ctime)) {
- goto bail;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset, &mtime)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &flags)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &lock_timeout)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &hash_iterations)) {
- goto bail;
- }
- if (!gkr_proto_get_bytes (buffer, offset, &offset, salt, 8)) {
- goto bail;
- }
-
- for (i = 0; i < 4; i++) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &tmp)) {
- goto bail;
- }
- /* reserved bytes must be zero */
- if (tmp != 0) {
- goto bail;
- }
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &num_items)) {
- goto bail;
- }
-
- items = g_new0 (ItemInfo, num_items);
-
- for (i = 0; i < num_items; i++) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &items[i].id)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &items[i].type)) {
- goto bail;
- }
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset,
- &items[i].hashed_attributes)) {
- goto bail;
- }
- }
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &crypto_size)) {
- goto bail;
- }
- /* Make sure the rest of the file is the crypted part only */
- if (crypto_size % 16 != 0 ||
- buffer->len - offset != crypto_size) {
- goto bail;
- }
-
- /* Copy the data into to_decrypt into non-pageable memory */
- gkr_buffer_init_static (&to_decrypt, buffer->buf + offset, crypto_size);
-
- locked = TRUE;
- if (keyring->password != NULL) {
-
- if (!decrypt_buffer (&to_decrypt, keyring->password, salt, hash_iterations)) {
- goto bail;
- }
- if (!verify_decrypted_buffer (&to_decrypt)) {
- gkr_secure_strfree (keyring->password);
- keyring->password = NULL;
- } else {
- locked = FALSE;
- offset += 16; /* Skip hash */
- for (i = 0; i < num_items; i++) {
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset,
- &items[i].display_name)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset,
- &items[i].secret)) {
- goto bail;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset,
- &items[i].ctime)) {
- goto bail;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset,
- &items[i].mtime)) {
- goto bail;
- }
- reserved = NULL;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset,
- &reserved) ||
- reserved != NULL) {
- g_free (reserved);
- goto bail;
- }
- for (j = 0; j < 4; j++) {
- guint32 tmp;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &tmp)) {
- goto bail;
- }
- /* reserved bytes must be zero */
- if (tmp != 0) {
- goto bail;
- }
- }
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset,
- &items[i].attributes)) {
- goto bail;
- }
-
- if (!decode_acl (buffer, offset, &offset, &items[i].acl)) {
- goto bail;
- }
- }
- }
- }
-
- /* Correctly read all data, possibly including the decrypted data.
- * Now update the keyring and items: */
-
- keyring->locked = locked;
- g_free (keyring->keyring_name);
- keyring->keyring_name = display_name;
- keyring->mtime = mtime;
- keyring->ctime = ctime;
- keyring->lock_on_idle = !!(flags & LOCK_ON_IDLE_FLAG);
- keyring->lock_timeout = lock_timeout;
- keyring->hash_iterations = hash_iterations;
- memcpy (keyring->salt, salt, 8);
- keyring->salt_valid = TRUE;
-
- /* Build a Hash table where we can track ids we haven't yet seen */
- checks = g_hash_table_new (g_direct_hash, g_direct_equal);
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- g_hash_table_insert (checks, GUINT_TO_POINTER (item->id), GINT_TO_POINTER (TRUE));
- }
-
- for (i = 0; i < num_items; i++) {
-
- /* We've seen this id */
- g_hash_table_remove (checks, GUINT_TO_POINTER (items[i].id));
-
- item = gkr_keyring_get_item (keyring, items[i].id);
- if (item == NULL) {
- item = gkr_keyring_item_new (keyring, items[i].id, items[i].type);
- gkr_keyring_add_item (keyring, item);
- }
-
- item->locked = locked;
- item->type = items[i].type;
-
- g_free (item->display_name);
- item->display_name = NULL;
- gkr_secure_strfree (item->secret);
- item->secret = NULL;
- if (item->acl) {
- gnome_keyring_acl_free (item->acl);
- item->acl = NULL;
- }
- gnome_keyring_attribute_list_free (item->attributes);
- item->attributes = NULL;
-
- if (locked) {
- item->attributes = items[i].hashed_attributes;
- item->mtime = 0;
- item->ctime = 0;
- } else {
- item->attributes = items[i].attributes;
- gnome_keyring_attribute_list_free (items[i].hashed_attributes);
- item->display_name = items[i].display_name;
- item->secret = items[i].secret;
- item->acl = items[i].acl;
- item->mtime = items[i].mtime;
- item->ctime = items[i].ctime;
- }
- }
-
- g_hash_table_foreach (checks, (GHFunc)remove_unavailable_item, keyring);
- g_hash_table_destroy (checks);
-
- return 1;
- bail:
- gkr_buffer_uninit (&to_decrypt);
- if (checks)
- g_hash_table_destroy (checks);
- g_free (display_name);
-
- if (items != NULL) {
- for (i = 0; i < num_items; i++) {
- g_free (items[i].display_name);
- gkr_secure_strfree (items[i].secret);
- gnome_keyring_attribute_list_free (items[i].hashed_attributes);
- gnome_keyring_attribute_list_free (items[i].attributes);
- gnome_keyring_acl_free (items[i].acl);
- }
- g_free (items);
- }
-
- return -1;
-}
diff --git a/keyrings/gkr-keyring-item.c b/keyrings/gkr-keyring-item.c
deleted file mode 100644
index 7dfda7bd..00000000
--- a/keyrings/gkr-keyring-item.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring-item.c - represents an item in a keyring
-
- Copyright (C) 2007 Stefan walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyring-item.h"
-#include "gkr-keyring.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include <gcrypt.h>
-
-#include <glib.h>
-
-#include <string.h>
-
-enum {
- PROP_0,
- PROP_NAME
-};
-
-G_DEFINE_TYPE (GkrKeyringItem, gkr_keyring_item, G_TYPE_OBJECT);
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static guint32
-hash_int (guint32 x)
-{
- /* Just random 32bit hash. Security here is not very important */
- return 0x18273645 ^ x ^ (x << 16 | x >> 16);
-}
-
-static char*
-md5_digest_to_ascii (unsigned char digest[16])
-{
- static char hex_digits[] = "0123456789abcdef";
- char *res;
- int i;
-
- res = g_malloc (33);
-
- for (i = 0; i < 16; i++) {
- res[2*i] = hex_digits[digest[i] >> 4];
- res[2*i+1] = hex_digits[digest[i] & 0xf];
- }
-
- res[32] = 0;
- return res;
-}
-
-static char *
-hash_string (const char *str)
-{
- guchar digest[16];
-
- if (str == NULL)
- return NULL;
-
- /* In case the world changes on us... */
- g_return_val_if_fail (gcry_md_get_algo_dlen (GCRY_MD_MD5) == sizeof (digest), NULL);
-
- gcry_md_hash_buffer (GCRY_MD_MD5, (void*)digest, str, strlen (str));
- return md5_digest_to_ascii (digest);
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_keyring_item_init (GkrKeyringItem *item)
-{
-
-}
-
-static void
-gkr_keyring_item_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrKeyringItem *item = GKR_KEYRING_ITEM (obj);
-
- switch (prop_id) {
- case PROP_NAME:
- g_value_set_string (value, item->display_name ? item->display_name : "");
- break;
- }
-}
-
-static void
-gkr_keyring_item_dispose (GObject *obj)
-{
- GkrKeyringItem *item = GKR_KEYRING_ITEM (obj);
-
- if (item->keyring) {
- gkr_keyring_remove_item (item->keyring, item);
- g_object_remove_weak_pointer (G_OBJECT (item->keyring),
- (gpointer*)&(item->keyring));
- item->keyring = NULL;
- }
-
- G_OBJECT_CLASS (gkr_keyring_item_parent_class)->dispose (obj);
-}
-
-static void
-gkr_keyring_item_finalize (GObject *obj)
-{
- GkrKeyringItem *item = GKR_KEYRING_ITEM (obj);
-
- gnome_keyring_attribute_list_free (item->attributes);
- if (item->acl != NULL)
- gnome_keyring_acl_free (item->acl);
- g_free (item->display_name);
- gkr_secure_strfree (item->secret);
-
- G_OBJECT_CLASS (gkr_keyring_item_parent_class)->finalize (obj);
-}
-
-static void
-gkr_keyring_item_class_init (GkrKeyringItemClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gkr_keyring_item_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->get_property = gkr_keyring_item_get_property;
- gobject_class->dispose = gkr_keyring_item_dispose;
- gobject_class->finalize = gkr_keyring_item_finalize;
-
- g_object_class_install_property (gobject_class, PROP_NAME,
- g_param_spec_string ("name", "Name", "Item Name",
- NULL, G_PARAM_READABLE));
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrKeyringItem*
-gkr_keyring_item_new (GkrKeyring* keyring, guint id, GnomeKeyringItemType type)
-{
- GkrKeyringItem *item = g_object_new (GKR_TYPE_KEYRING_ITEM, NULL);
-
- /* TODO: These should move into properties */
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- item->keyring = keyring;
- item->id = id;
- item->type = type;
-
- /* Make sure we get disconnected when keyring goes away */
- g_object_add_weak_pointer (G_OBJECT (item->keyring), (gpointer*)&(item->keyring));
-
- return item;
-}
-
-GkrKeyringItem*
-gkr_keyring_item_create (GkrKeyring* keyring, GnomeKeyringItemType type)
-{
- GkrKeyringItem *item;
- guint id;
-
- g_assert (!keyring->locked);
-
- id = gkr_keyring_get_new_id (keyring);
- g_return_val_if_fail (id != 0, NULL);
-
- item = gkr_keyring_item_new (keyring, id, type);
- item->locked = keyring->locked;
- item->ctime = item->mtime = time (NULL);
- item->type = type;
-
- return item;
-}
-
-gboolean
-gkr_keyring_item_match (GkrKeyringItem *item, GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes, gboolean match_all)
-{
- int i, j;
- GnomeKeyringAttribute *item_attribute;
- GnomeKeyringAttribute *attribute;
- gboolean found;
- int attributes_matching;
-
- if ((item->type & GNOME_KEYRING_ITEM_TYPE_MASK) != (type & GNOME_KEYRING_ITEM_TYPE_MASK))
- return FALSE;
-
- attributes_matching = 0;
- for (i = 0; i < attributes->len; i++) {
- found = FALSE;
- attribute = &g_array_index (attributes,
- GnomeKeyringAttribute,
- i);
- for (j = 0; j < item->attributes->len; j++) {
- item_attribute = &g_array_index (item->attributes,
- GnomeKeyringAttribute,
- j);
- if (strcmp (attribute->name, item_attribute->name) == 0) {
- found = TRUE;
- attributes_matching++;
- if (attribute->type != item_attribute->type) {
- return FALSE;
- }
- switch (attribute->type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- if (attribute->value.string != item_attribute->value.string) {
- if (attribute->value.string == NULL || item_attribute->value.string == NULL)
- return FALSE;
- if (strcmp (attribute->value.string, item_attribute->value.string) != 0)
- return FALSE;
- }
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- if (attribute->value.integer != item_attribute->value.integer) {
- return FALSE;
- }
- break;
- default:
- g_assert_not_reached ();
- }
- }
- }
- if (!found) {
- return FALSE;
- }
- }
- if (match_all) {
- return attributes_matching == attributes->len;
- }
-
- return TRUE;
-}
-
-GnomeKeyringAttributeList *
-gkr_keyring_item_attributes_hash (GnomeKeyringAttributeList *attributes)
-{
- GnomeKeyringAttributeList *hashed;
- GnomeKeyringAttribute *orig_attribute;
- GnomeKeyringAttribute attribute;
- int i;
-
- hashed = g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
- for (i = 0; i < attributes->len; i++) {
- orig_attribute = &gnome_keyring_attribute_list_index (attributes, i);
- attribute.name = g_strdup (orig_attribute->name);
- attribute.type = orig_attribute->type;
- switch (attribute.type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- attribute.value.string = hash_string (orig_attribute->value.string);
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- attribute.value.integer = hash_int (orig_attribute->value.integer);
- break;
- default:
- g_assert_not_reached ();
- }
- g_array_append_val (hashed, attribute);
- }
-
- return hashed;
-}
diff --git a/keyrings/gkr-keyring-item.h b/keyrings/gkr-keyring-item.h
deleted file mode 100644
index 371016b4..00000000
--- a/keyrings/gkr-keyring-item.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring-item.h - represents an item in a keyring
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_KEYRING_ITEM_H__
-#define __GKR_KEYRING_ITEM_H__
-
-/*
- * TODO: The internals of a GkrKeyringItem should probably be further
- * abstracted away and accessed via accessor methods and properties.
- */
-
-#include <glib-object.h>
-#include "library/gnome-keyring.h"
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_KEYRING_ITEM (gkr_keyring_item_get_type())
-#define GKR_KEYRING_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_KEYRING_ITEM, GkrKeyringItem))
-#define GKR_KEYRING_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_KEYRING_ITEM, GObject))
-#define GKR_IS_KEYRING_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_KEYRING_ITEM))
-#define GKR_IS_KEYRING_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_KEYRING_ITEM))
-#define GKR_KEYRING_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_KEYRING_ITEM, GkrKeyringItemClass))
-
-struct _GkrKeyring;
-typedef struct _GkrKeyring GkrKeyring;
-typedef struct _GkrKeyringItem GkrKeyringItem;
-typedef struct _GkrKeyringItemClass GkrKeyringItemClass;
-
-struct _GkrKeyringItem {
- GObject parent;
-
- /*
- * Can be null if the keyring goes away, and this object
- * was referenced
- */
- GkrKeyring *keyring;
-
- guint32 id;
- GnomeKeyringItemType type;
-
- gboolean locked;
-
- /* These are hashed if locked, normal if unlocked, encrypted on file: */
- GArray *attributes;
-
- /* Below is encrypted in file, invalid in memory if locked: */
- char *display_name;
- char *secret;
- GList *acl;
- time_t ctime;
- time_t mtime;
-};
-
-struct _GkrKeyringItemClass {
- GObjectClass parent_class;
-};
-
-GType gkr_keyring_item_get_type (void) G_GNUC_CONST;
-
-GkrKeyringItem* gkr_keyring_item_new (GkrKeyring* keyring, guint id,
- GnomeKeyringItemType type);
-
-GkrKeyringItem* gkr_keyring_item_create (GkrKeyring* keyring,
- GnomeKeyringItemType type);
-
-gboolean gkr_keyring_item_match (GkrKeyringItem *item,
- GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes,
- gboolean match_all);
-
-
-GnomeKeyringAttributeList* gkr_keyring_item_attributes_hash (GnomeKeyringAttributeList *attributes);
-
-G_END_DECLS
-
-#endif /* __GKR_KEYRING_ITEM_H__ */
-
diff --git a/keyrings/gkr-keyring-login.c b/keyrings/gkr-keyring-login.c
deleted file mode 100644
index 5153c063..00000000
--- a/keyrings/gkr-keyring-login.c
+++ /dev/null
@@ -1,308 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyrings-login.c - get secrets to automatically unlock keyrings or keys
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyring-login.h"
-
-#include "gkr-keyring.h"
-#include "gkr-keyring-item.h"
-#include "gkr-keyrings.h"
-
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring.h"
-
-#include "ui/gkr-ask-daemon.h"
-#include "ui/gkr-ask-request.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <stdarg.h>
-#include <unistd.h>
-
-gboolean
-gkr_keyring_login_is_unlocked (void)
-{
- GkrKeyring *login = gkr_keyrings_get_login ();
- return (login && !login->locked);
-}
-
-gboolean
-gkr_keyring_login_is_usable (void)
-{
- /*
- * We only flag this as usable by our internals if the keyring will
- * be encrypted when on disk.
- */
- GkrKeyring *login = gkr_keyrings_get_login ();
- return (login && !login->locked && !gkr_keyring_is_insecure (login));
-}
-
-static gboolean
-check_ask_request (GkrAskRequest* ask)
-{
- GkrKeyring *keyring;
-
- keyring = GKR_KEYRING (gkr_ask_request_get_object (ask));
- g_assert (GKR_IS_KEYRING (keyring));
-
- if (!keyring->locked) {
- ask->response = GKR_ASK_RESPONSE_ALLOW;
- return GKR_ASK_STOP_REQUEST;
- }
-
- /* If they typed a password, try it out */
- if (ask->response >= GKR_ASK_RESPONSE_ALLOW) {
-
- g_assert (ask->typed_password);
- if (!gkr_keyring_unlock (keyring, ask->typed_password)) {
- /* Bad password, try again */
- ask->response = GKR_ASK_RESPONSE_NONE;
- return GKR_ASK_CONTINUE_REQUEST;
- }
- }
-
- return GKR_ASK_DONT_CARE;
-}
-
-static gboolean
-request_login_access (GkrKeyring* keyring)
-{
- GkrAskRequest *ask;
- gboolean ret;
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Unlock Login Keyring"), _("Enter login password to unlock keyring"),
- GKR_ASK_REQUEST_PROMPT_PASSWORD);
- gkr_ask_request_set_secondary (ask, _("Your login keyring was not automatically unlocked when you logged into this computer."));
- gkr_ask_request_set_object (ask, G_OBJECT (keyring));
-
- /* Intercept item access requests to see if we still need to prompt */
- g_signal_connect (ask, "check-request", G_CALLBACK (check_ask_request), NULL);
-
- /* And do the prompt */
- gkr_ask_daemon_process (ask);
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- g_object_unref (ask);
-
- return ret;
-}
-
-static gboolean
-request_login_new (gchar **password)
-{
- GkrAskRequest* ask;
- gboolean ret;
-
- g_assert (password);
- g_assert (!*password);
-
- /* And put together the ask request */
- ask = gkr_ask_request_new (_("Create Login Keyring"), _("Enter your login password"),
- GKR_ASK_REQUEST_NEW_PASSWORD);
- gkr_ask_request_set_secondary (ask, _("Your login keyring was not automatically created when you logged "
- "into this computer. It will now be created."));
-
- /* And do the prompt */
- gkr_ask_daemon_process (ask);
- ret = ask->response >= GKR_ASK_RESPONSE_ALLOW;
- if (ret)
- *password = gkr_secure_strdup (ask->typed_password);
- g_object_unref (ask);
- return ret;
-}
-
-gboolean
-gkr_keyring_login_unlock (const gchar *password)
-{
- GkrKeyring *login = gkr_keyrings_get_login ();
- gchar *new_password = NULL;
-
- /* Make sure its loaded */
- if (!login) {
- gkr_keyrings_update ();
- login = gkr_keyrings_get_login ();
- }
-
- if (login && !login->locked)
- return TRUE;
-
- /* Try to unlock the keyring that exists */
- if (login) {
- if (!password)
- return request_login_access (login);
-
- if (!gkr_keyring_unlock (login, password)) {
- g_message ("Couldn't unlock login keyring with provided password");
- return FALSE;
- }
-
- return TRUE;
- }
-
- /* No such keyring exists, and we don't have a password. */
- if (!password) {
- if (!request_login_new (&new_password))
- return FALSE;
- g_return_val_if_fail (new_password, FALSE);
- password = new_password;
- }
-
- /* No such keyring exists, so create one */
- login = gkr_keyring_create (GKR_LOCATION_VOLUME_LOCAL, "login", password);
- gkr_secure_strfree (new_password);
-
- if (!login) {
- g_warning ("Failed to create login keyring");
- return FALSE;
- }
-
- g_assert (!login->locked);
-
- gkr_keyrings_add (login);
- g_return_val_if_fail (gkr_keyrings_get_login () == login, FALSE);
-
- g_object_unref (login);
- return TRUE;
-}
-
-void
-gkr_keyring_login_lock (void)
-{
- GkrKeyring *login = gkr_keyrings_get_login ();
- if (login)
- gkr_keyring_lock (login);
-}
-
-static GnomeKeyringAttributeList*
-string_attribute_list_va (va_list args)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
-
- attributes = g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
-
- while ((attribute.name = va_arg (args, char *)) != NULL) {
- attribute.name = g_strdup (attribute.name);
- attribute.value.string = g_strdup (va_arg (args, char *));
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- g_array_append_val (attributes, attribute);
- }
-
- return attributes;
-}
-
-void
-gkr_keyring_login_attach_secret (GnomeKeyringItemType type, const gchar *display_name,
- const gchar *secret, ...)
-{
- GkrKeyring *login;
- GnomeKeyringAttributeList *attrs;
- GkrKeyringItem *item;
- va_list args;
-
- login = gkr_keyrings_get_login ();
- if (!login || login->locked)
- return;
-
- va_start (args, secret);
- attrs = string_attribute_list_va (args);
- va_end (args);
-
- item = gkr_keyring_find_item (login, type, attrs);
-
- if (!item) {
- item = gkr_keyring_item_create (login, type);
- gkr_keyring_add_item (login, item);
- }
-
- g_free (item->display_name);
- item->display_name = g_strdup (display_name);
-
- gkr_secure_strfree (item->secret);
- item->secret = gkr_secure_strdup (secret);
-
- gnome_keyring_attribute_list_free (item->attributes);
- item->attributes = attrs;
-
- gkr_keyring_save_to_disk (login);
-}
-
-const gchar*
-gkr_keyring_login_lookup_secret (GnomeKeyringItemType type, ...)
-{
- GkrKeyring *login;
- GkrKeyringItem *item;
- GnomeKeyringAttributeList *attrs;
- va_list args;
-
- login = gkr_keyrings_get_login ();
- if (!login || login->locked)
- return NULL;
-
- if (!login->location)
- return NULL;
-
- va_start (args, type);
- attrs = string_attribute_list_va (args);
- va_end (args);
-
- item = gkr_keyring_find_item (login, type, attrs);
- gnome_keyring_attribute_list_free (attrs);
-
- if (item)
- return item->secret;
-
- return NULL;
-}
-
-void
-gkr_keyring_login_remove_secret (GnomeKeyringItemType type, ...)
-{
- GkrKeyring *login;
- GkrKeyringItem *item;
- GnomeKeyringAttributeList *attrs;
- va_list args;
-
- login = gkr_keyrings_get_login ();
- if (!login || login->locked)
- return;
-
- if (!login->location)
- return;
-
- va_start (args, type);
- attrs = string_attribute_list_va (args);
- va_end (args);
-
- item = gkr_keyring_find_item (login, type, attrs);
- gnome_keyring_attribute_list_free (attrs);
-
- if (item) {
- gkr_keyring_remove_item (login, item);
- gkr_keyring_save_to_disk (login);
- }
-}
diff --git a/keyrings/gkr-keyring-login.h b/keyrings/gkr-keyring-login.h
deleted file mode 100644
index 135d9385..00000000
--- a/keyrings/gkr-keyring-login.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyrings-login.h - get secrets to automatically unlock keyrings or keys
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRKEYRINGSAUTOUNLOCK_H_
-#define GKRKEYRINGSAUTOUNLOCK_H_
-
-#include "library/gnome-keyring.h"
-
-gboolean gkr_keyring_login_is_unlocked (void);
-
-gboolean gkr_keyring_login_is_usable (void);
-
-gboolean gkr_keyring_login_unlock (const gchar *secret);
-
-void gkr_keyring_login_lock (void);
-
-void gkr_keyring_login_attach_secret (GnomeKeyringItemType type,
- const gchar *display_name,
- const gchar *secret,
- ...);
-
-const gchar* gkr_keyring_login_lookup_secret (GnomeKeyringItemType type,
- ...);
-
-void gkr_keyring_login_remove_secret (GnomeKeyringItemType type,
- ...);
-
-#endif /*GKRKEYRINGSAUTOUNLOCK_H_*/
diff --git a/keyrings/gkr-keyring-textual.c b/keyrings/gkr-keyring-textual.c
deleted file mode 100644
index c681b67f..00000000
--- a/keyrings/gkr-keyring-textual.c
+++ /dev/null
@@ -1,452 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring-textual.c - Textual non-encrypted format for the keyring
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyring.h"
-#include "gkr-keyring-item.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-
-#include <glib.h>
-
-#include <sys/types.h>
-#include <stdlib.h>
-#include <string.h>
-
-static void
-key_file_set_uint64 (GKeyFile *file, const gchar *group,
- const gchar *key, guint64 value)
-{
- gchar buffer[64];
- g_snprintf (buffer, sizeof (buffer), "%llu",
- (long long unsigned int)value);
- g_key_file_set_value (file, group, key, buffer);
-}
-
-static gboolean
-key_file_get_uint64 (GKeyFile *file, const gchar *group,
- const gchar *key, guint64 *value)
-{
- gchar *str, *end;
-
- str = g_key_file_get_value (file, group, key, NULL);
- if (!str)
- return FALSE;
-
- *value = g_ascii_strtoull (str, &end, 10);
- if (end[0]) {
- g_free (str);
- return FALSE;
- }
-
- g_free (str);
- return TRUE;
-}
-
-static void
-generate_attributes (GKeyFile *file, GkrKeyringItem *item)
-{
- GnomeKeyringAttribute *attr;
- gchar *groupname;
- gint i;
-
- g_return_if_fail (item->attributes);
-
- for (i = 0; i < item->attributes->len; ++i) {
-
- /* Build a group name */
- groupname = g_strdup_printf ("%d:attribute%d", item->id, i);
-
- attr = &gnome_keyring_attribute_list_index (item->attributes, i);
-
- g_key_file_set_string (file, groupname, "name", attr->name);
-
- switch (attr->type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- g_key_file_set_string (file, groupname, "type", "string");
- if (attr->value.string)
- g_key_file_set_string (file, groupname, "value", attr->value.string);
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- g_key_file_set_string (file, groupname, "type", "uint32");
- key_file_set_uint64 (file, groupname, "value", attr->value.integer);
- break;
- default:
- g_return_if_reached ();
- break;
- };
-
- g_free (groupname);
- }
-}
-
-static void
-parse_attributes (GKeyFile *file, GkrKeyringItem *item, const gchar **groups)
-{
- const gchar **g;
- gchar *prefix;
- gchar *name, *type;
- gchar *strval;
- guint64 intval;
-
- /* Now do the attributes */
-
- prefix = g_strdup_printf ("%u:attribute", item->id);
-
- gnome_keyring_attribute_list_free (item->attributes);
- item->attributes = gnome_keyring_attribute_list_new ();
-
- for (g = groups; *g; ++g) {
- if (!g_str_has_prefix (*g, prefix))
- continue;
-
- name = g_key_file_get_string (file, *g, "name", NULL);
- type = g_key_file_get_string (file, *g, "type", NULL);
-
- if (name && type && g_key_file_has_key (file, *g, "value", NULL)) {
- if (g_str_equal (type, "uint32")) {
- if (key_file_get_uint64 (file, *g, "value", &intval))
- gnome_keyring_attribute_list_append_uint32 (item->attributes,
- name, intval);
- } else {
- strval = g_key_file_get_string (file, *g, "value", NULL);
- gnome_keyring_attribute_list_append_string (item->attributes,
- name, strval);
- g_free (strval);
- }
- }
-
- g_free (name);
- g_free (type);
- }
-
- g_free (prefix);
-}
-
-static void
-generate_acl (GKeyFile *file, GkrKeyringItem *item)
-{
- GnomeKeyringAccessControl *ac;
- gchar *groupname;
- GList *l;
- gint i;
-
- for (l = item->acl, i = 0; l != NULL; l = l->next, ++i) {
- ac = l->data;
-
- /* Build a group name */
- groupname = g_strdup_printf ("%d:acl%d", item->id, i);
-
- if (ac->application->display_name)
- g_key_file_set_string (file, groupname, "display-name",
- ac->application->display_name);
- if (ac->application->pathname)
- g_key_file_set_string (file, groupname, "path",
- ac->application->pathname);
-
- g_key_file_set_boolean (file, groupname, "read-access",
- ac->types_allowed & GNOME_KEYRING_ACCESS_READ);
- g_key_file_set_boolean (file, groupname, "write-access",
- ac->types_allowed & GNOME_KEYRING_ACCESS_WRITE);
- g_key_file_set_boolean (file, groupname, "remove-access",
- ac->types_allowed & GNOME_KEYRING_ACCESS_REMOVE);
-
- g_free (groupname);
- }
-}
-
-static void
-parse_acl (GKeyFile *file, GkrKeyringItem *item, const gchar **groups)
-{
- GnomeKeyringAccessType access_type;
- GnomeKeyringApplicationRef *app;
- const gchar **g;
- gchar *prefix;
- gchar *path, *display;
- GError *err = NULL;
-
- /* Now do the attributes */
-
- prefix = g_strdup_printf ("%u:acl", item->id);
-
- gnome_keyring_acl_free (item->acl);
- item->acl = NULL;
-
- for (g = groups; *g; ++g) {
- if (!g_str_has_prefix (*g, prefix))
- continue;
- path = g_key_file_get_string (file, *g, "path", NULL);
- if (!path)
- continue;
-
- display = g_key_file_get_string (file, *g, "display-name", NULL);
-
- access_type = 0;
-
- if (g_key_file_get_boolean (file, *g, "read-access", &err) && !err)
- access_type |= GNOME_KEYRING_ACCESS_READ;
- g_clear_error (&err);
-
- if (g_key_file_get_boolean (file, *g, "write-access", &err) && !err)
- access_type |= GNOME_KEYRING_ACCESS_WRITE;
- g_clear_error (&err);
-
- if (g_key_file_get_boolean (file, *g, "remove-access", &err) && !err)
- access_type |= GNOME_KEYRING_ACCESS_REMOVE;
- g_clear_error (&err);
-
- app = g_new0 (GnomeKeyringApplicationRef, 1);
- app->display_name = display;
- app->pathname = path;
-
- item->acl = g_list_prepend (item->acl, gnome_keyring_access_control_new (app, access_type));
- }
-
- g_free (prefix);
-}
-
-static void
-generate_item (GKeyFile *file, GkrKeyringItem *item)
-{
- gchar *groupname;
-
- groupname = g_strdup_printf ("%u", item->id);
-
- g_key_file_set_integer (file, groupname, "item-type", item->type);
-
- if (item->display_name)
- g_key_file_set_string (file, groupname, "display-name", item->display_name);
-
- if (item->secret)
- g_key_file_set_value (file, groupname, "secret", item->secret);
-
- key_file_set_uint64 (file, groupname, "mtime", item->mtime);
- key_file_set_uint64 (file, groupname, "ctime", item->ctime);
-
- g_free (groupname);
-
- generate_attributes (file, item);
- generate_acl (file, item);
-}
-
-static void
-parse_item (GKeyFile *file, GkrKeyringItem *item, const gchar **groups)
-{
- gchar *groupname, *val;
- GError *err = NULL;
- guint64 num;
-
- /* First the main item data */
-
- groupname = g_strdup_printf ("%u", item->id);
-
- /* Never encrypted */
- item->locked = FALSE;
-
- item->type = g_key_file_get_integer (file, groupname, "item-type", &err);
- if (err) {
- g_clear_error (&err);
- item->type = 0;
- }
-
- g_free (item->display_name);
- item->display_name = g_key_file_get_string (file, groupname, "display-name", NULL);
-
- /* Even though this is from disk, use secure memory just to be consistent */
- gkr_secure_free (item->secret);
- val = g_key_file_get_string (file, groupname, "secret", NULL);
- item->secret = gkr_secure_strdup (val);
- g_free (val);
-
- item->mtime = 0;
- if (key_file_get_uint64 (file, groupname, "mtime", &num))
- item->mtime = num;
- item->ctime = 0;
- if (key_file_get_uint64 (file, groupname, "ctime", &num))
- item->ctime = num;
-
- g_free (groupname);
-
- /* Now the other stuff */
- parse_attributes (file, item, groups);
- parse_acl (file, item, groups);
-}
-
-gboolean
-gkr_keyring_textual_generate (GkrKeyring *keyring, GkrBuffer *buffer)
-{
- GkrKeyringItem *item;
- GKeyFile *file;
- gchar *data;
- GError *err = NULL;
- GList *l;
- gsize n_data;
-
- g_return_val_if_fail (!keyring->locked, FALSE);
-
- file = g_key_file_new ();
-
- if (keyring->keyring_name)
- g_key_file_set_string (file, "keyring", "display-name", keyring->keyring_name);
-
- key_file_set_uint64 (file, "keyring", "ctime", keyring->ctime);
- key_file_set_uint64 (file, "keyring", "mtime", keyring->mtime);
-
- g_key_file_set_boolean (file, "keyring", "lock-on-idle", keyring->lock_on_idle);
- g_key_file_set_integer (file, "keyring", "lock-timeout", keyring->lock_timeout);
-
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- generate_item (file, item);
- }
-
- data = g_key_file_to_data (file, &n_data, &err);
- g_key_file_free (file);
-
- if (!data) {
- g_warning ("couldn't generate textual keyring file: %s", err->message);
- return FALSE;
- }
-
- gkr_buffer_uninit (buffer);
- gkr_buffer_init_allocated (buffer, (guchar*)data, n_data, NULL);
- return TRUE;
-}
-
-static void
-remove_unavailable_item (gpointer key, gpointer dummy, GkrKeyring *keyring)
-{
- /* Called to remove items from a keyring that no longer exist */
-
- GkrKeyringItem *item;
- guint id = GPOINTER_TO_UINT (key);
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- item = gkr_keyring_get_item (keyring, id);
- if (item)
- gkr_keyring_remove_item (keyring, item);
-}
-
-gint
-gkr_keyring_textual_parse (GkrKeyring *keyring, GkrBuffer *buffer)
-{
- GkrKeyringItem *item;
- GError *err = NULL;
- GKeyFile *file = NULL;
- gchar **groups = NULL;
- gint ret = -1;
- gchar *start = NULL;
- GHashTable *checks = NULL;
- guint64 num;
- gint integer;
- GList *l;
- gchar **g;
- gchar *end;
- guint32 id;
-
- file = g_key_file_new ();
-
- if (!g_key_file_load_from_data (file, (const gchar*)buffer->buf,
- buffer->len, G_KEY_FILE_NONE, &err)) {
- if (g_error_matches (err, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_PARSE))
- ret = 0;
- goto done;
- }
-
- start = g_key_file_get_start_group (file);
- if (!start || !g_str_equal (start, "keyring")) {
- g_message ("invalid keyring file: wrong header group");
- goto done;
- }
-
- g_free (keyring->keyring_name);
- keyring->keyring_name = g_key_file_get_string (file, "keyring", "display-name", NULL);
-
- keyring->ctime = 0;
- if (key_file_get_uint64 (file, "keyring", "ctime", &num))
- keyring->ctime = num;
- keyring->mtime = 0;
- if (key_file_get_uint64 (file, "keyring", "mtime", &num))
- keyring->mtime = num;
-
- keyring->lock_on_idle = FALSE;
- if (g_key_file_get_boolean (file, "keyring", "lock-on-idle", &err) && !err)
- keyring->lock_on_idle = TRUE;
- g_clear_error (&err);
-
- integer = g_key_file_get_integer (file, "keyring", "lock-timeout", &err);
- if (!err)
- keyring->lock_timeout = integer;
- g_clear_error (&err);
-
- /* No encryption context for use when reencrypting */
- keyring->salt_valid = FALSE;
- memset (keyring->salt, 0, sizeof (keyring->salt));
- keyring->hash_iterations = 0;
-
- /* Build a Hash table where we can track ids we haven't yet seen */
- checks = g_hash_table_new (g_direct_hash, g_direct_equal);
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- g_hash_table_insert (checks, GUINT_TO_POINTER (item->id), "DUMMY");
- }
-
- groups = g_key_file_get_groups (file, NULL);
- for (g = groups; *g; ++g) {
- id = strtoul (*g, &end, 10);
-
- /* Wasn't a complete number */
- if (end[0])
- continue;
-
- /* We've seen this id */
- g_hash_table_remove (checks, GUINT_TO_POINTER (id));
-
- item = gkr_keyring_get_item (keyring, id);
- if (item == NULL) {
- item = gkr_keyring_item_new (keyring, id, 0);
- gkr_keyring_add_item (keyring, item);
- }
-
- parse_item (file, item, (const gchar**)groups);
- }
-
- g_hash_table_foreach (checks, (GHFunc)remove_unavailable_item, keyring);
- ret = 1;
-
-done:
- if (checks)
- g_hash_table_destroy (checks);
- if (file)
- g_key_file_free (file);
- g_strfreev (groups);
- g_free (start);
- g_clear_error (&err);
-
- return ret;
-}
diff --git a/keyrings/gkr-keyring.c b/keyrings/gkr-keyring.c
deleted file mode 100644
index b3be7726..00000000
--- a/keyrings/gkr-keyring.c
+++ /dev/null
@@ -1,551 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring.c - represents a keyring in memory, and functionality save/load
-
- Copyright (C) 2003 Red Hat, Inc
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyring.h"
-#include "gkr-keyrings.h"
-#include "gkr-keyring-item.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring-private.h"
-#include "library/gnome-keyring-proto.h"
-
-#include <glib.h>
-
-#include <gcrypt.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* -----------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- ITEM_ADDED,
- ITEM_REMOVED,
- LAST_SIGNAL
-};
-
-enum {
- PROP_0,
- PROP_NAME,
- PROP_LOCATION
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (GkrKeyring, gkr_keyring, G_TYPE_OBJECT);
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static int
-write_all (int fd, const guchar *buf, size_t len)
-{
- size_t bytes;
- int res;
-
- bytes = 0;
- while (bytes < len) {
- res = write (fd, buf + bytes, len - bytes);
- if (res < 0) {
- if (errno != EINTR && errno != EAGAIN) {
- perror ("write_all write failure:");
- return -1;
- }
- } else {
- bytes += res;
- }
- }
- return 0;
-}
-
-static GQuark
-get_default_location_for_name (GQuark volume, const char *keyring_name)
-{
- gchar *path = NULL;
- gchar *base, *filename;
- int version;
- GQuark loc;
-
- g_assert (volume);
- g_assert (keyring_name && keyring_name[0]);
-
- base = g_filename_from_utf8 (keyring_name, -1, NULL, NULL, NULL);
- if (base == NULL)
- base = g_strdup ("keyring");
-
- version = 0;
- do {
- g_free (path);
-
- if (version == 0)
- filename = g_strdup_printf ("%s/keyrings/%s.keyring",
- g_quark_to_string (volume), base);
- else
- filename = g_strdup_printf ("%s/keyrings/%s%d.keyring",
- g_quark_to_string (volume), base, version);
-
- loc = gkr_location_from_string (filename);
- g_free (filename);
-
- path = gkr_location_to_path (loc);
- g_return_val_if_fail (path, 0);
-
- version++;
- } while (g_file_test (path, G_FILE_TEST_EXISTS));
-
- g_free (base);
-
- loc = gkr_location_from_path (path);
- g_free (path);
- return loc;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_keyring_init (GkrKeyring *keyring)
-{
- keyring->ctime = keyring->mtime = time (NULL);
-
- /* Default values: */
- keyring->lock_on_idle = FALSE;
- keyring->lock_timeout = 0;
-}
-
-static void
-gkr_keyring_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrKeyring *keyring = GKR_KEYRING (obj);
-
- switch (prop_id) {
- case PROP_NAME:
- g_value_set_string (value, keyring->keyring_name);
- break;
- case PROP_LOCATION:
- g_value_set_uint (value, keyring->location);
- break;
- }
-}
-
-static void
-gkr_keyring_dispose (GObject *obj)
-{
- GkrKeyring *keyring = GKR_KEYRING (obj);
- GkrKeyringItem *item;
- GList *l;
-
- /* Remove all references to items */
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- g_object_unref (item);
- }
-
- g_list_free (keyring->items);
- keyring->items = NULL;
-
- gkr_secure_strfree (keyring->password);
- keyring->password = NULL;
-
- G_OBJECT_CLASS (gkr_keyring_parent_class)->dispose (obj);
-}
-
-static void
-gkr_keyring_finalize (GObject *obj)
-{
- GkrKeyring *keyring = GKR_KEYRING (obj);
-
- g_free (keyring->keyring_name);
- g_assert (keyring->password == NULL);
-
- G_OBJECT_CLASS (gkr_keyring_parent_class)->finalize (obj);
-}
-
-static void
-gkr_keyring_class_init (GkrKeyringClass *klass)
-{
- GObjectClass *gobject_class = (GObjectClass*)klass;
-
- gkr_keyring_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->get_property = gkr_keyring_get_property;
- gobject_class->dispose = gkr_keyring_dispose;
- gobject_class->finalize = gkr_keyring_finalize;
-
- g_object_class_install_property (gobject_class, PROP_NAME,
- g_param_spec_string ("name", "Name", "Keyring Name",
- NULL, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_LOCATION,
- g_param_spec_uint ("location", "Location", "File Location",
- 0, G_MAXUINT, 0, G_PARAM_READABLE));
-
- signals[ITEM_ADDED] = g_signal_new ("item-added", GKR_TYPE_KEYRING,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrKeyringClass, item_added),
- NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, GKR_TYPE_KEYRING_ITEM);
-
- signals[ITEM_REMOVED] = g_signal_new ("item-removed", GKR_TYPE_KEYRING,
- G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GkrKeyringClass, item_removed),
- NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
- G_TYPE_NONE, 1, GKR_TYPE_KEYRING_ITEM);
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrKeyring*
-gkr_keyring_new (const char *name, GQuark location)
-{
- GkrKeyring *keyring;
-
- /* TODO: This should be done using properties */
-
- keyring = g_object_new (GKR_TYPE_KEYRING, NULL);
-
- keyring->keyring_name = g_strdup (name);
- keyring->location = location;
-
- return keyring;
-}
-
-GkrKeyring*
-gkr_keyring_create (GQuark volume, const gchar *keyring_name, const gchar *password)
-{
- GkrKeyring *keyring;
-
- if (!volume)
- volume = GKR_LOCATION_VOLUME_LOCAL;
-
- keyring = gkr_keyring_new (keyring_name, 0);
- if (keyring != NULL) {
- keyring->location = get_default_location_for_name (volume, keyring_name);
- keyring->locked = FALSE;
- keyring->password = gkr_secure_strdup (password);
- keyring->salt_valid = FALSE;
- gkr_keyring_save_to_disk (keyring);
- }
- return keyring;
-}
-
-guint
-gkr_keyring_get_new_id (GkrKeyring *keyring)
-{
- GkrKeyringItem *item;
- GList *l;
- guint max;
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- max = 0;
- for (l = keyring->items; l ; l = g_list_next (l)) {
- item = l->data;
- if (item->id >= max)
- max = item->id;
- }
- /* Naive unique id lookup, but avoid rollaround at lest: */
-
- if (max == 0xffffffff)
- return 0;
-
- return max + 1;
-}
-
-GkrKeyringItem*
-gkr_keyring_get_item (GkrKeyring *keyring, guint id)
-{
- GkrKeyringItem *item;
- GList *l;
-
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- if (item->id == id)
- return item;
- }
-
- return NULL;
-}
-
-GkrKeyringItem*
-gkr_keyring_find_item (GkrKeyring *keyring, GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attrs)
-{
- GkrKeyringItem *item;
- GList *l;
-
- for (l = keyring->items; l; l = g_list_next (l)) {
- item = GKR_KEYRING_ITEM (l->data);
- if (gkr_keyring_item_match (item, type, attrs, TRUE))
- return item;
- }
-
- return NULL;
-}
-
-void
-gkr_keyring_add_item (GkrKeyring* keyring, GkrKeyringItem* item)
-{
- g_assert (GKR_IS_KEYRING (keyring));
- g_assert (GKR_IS_KEYRING_ITEM (item));
-
- /* Must not be added twice */
- g_assert (g_list_find (keyring->items, item) == NULL);
-
- keyring->items = g_list_append (keyring->items, item);
- g_object_ref (item);
-
- g_signal_emit (keyring, signals[ITEM_ADDED], 0, item);
-
-}
-
-void
-gkr_keyring_remove_item (GkrKeyring* keyring, GkrKeyringItem* item)
-{
- g_assert (GKR_IS_KEYRING (keyring));
- g_assert (GKR_IS_KEYRING_ITEM (item));
-
- if (g_list_find (keyring->items, item)) {
- keyring->items = g_list_remove (keyring->items, item);
-
- /* Must not be added twice */
- g_assert (g_list_find (keyring->items, item) == NULL);
-
- /* Keep the reference until after the signal */
- g_signal_emit (keyring, signals[ITEM_REMOVED], 0, item);
-
- g_object_unref (item);
- }
-}
-
-gboolean
-gkr_keyring_update_from_disk (GkrKeyring *keyring)
-{
- GkrBuffer buffer;
- GError *err = NULL;
- guchar *contents = NULL;
- gsize len;
- gint result;
-
- if (!keyring->location)
- return TRUE;
-
- if (!gkr_location_read_file (keyring->location, &contents, &len, &err)) {
- g_warning ("couldn't read keyring: %s", err && err->message ? err->message : "");
- g_clear_error (&err);
- return FALSE;
- }
-
- gkr_buffer_init_static (&buffer, contents, len);
-
- result = gkr_keyring_binary_parse (keyring, &buffer);
- if (result == 0)
- result = gkr_keyring_textual_parse (keyring, &buffer);
-
- gkr_buffer_uninit (&buffer);
- g_free (contents);
-
- if (result > 0)
- return TRUE;
-
- if (result == 0)
- g_warning ("keyring has unknown format");
- else if (result < 0)
- g_warning ("error parsing keyring");
-
- return FALSE;
-}
-
-gboolean
-gkr_keyring_remove_from_disk (GkrKeyring *keyring)
-{
- gchar *file;
- int res;
-
- /* Cannot remove session or memory based keyring */
- if (!keyring->location)
- return FALSE;
-
- file = gkr_location_to_path (keyring->location);
- if (!file)
- return FALSE;
-
- res = unlink (file);
- g_free (file);
-
- return (res == 0);
-}
-
-gboolean
-gkr_keyring_save_to_disk (GkrKeyring *keyring)
-{
- struct stat statbuf;
- GkrBuffer out;
- int fd;
- char *dirname;
- char *template;
- gboolean result;
- gboolean ret = TRUE;
- gchar *file = NULL;
-
- /* Can't save locked keyrings */
- if (keyring->locked)
- return FALSE;
-
- /* Not file backed */
- if (!keyring->location)
- return TRUE;
-
- file = gkr_location_to_path (keyring->location);
- if (!file)
- return FALSE;
-
- gkr_buffer_init_full (&out, 4096, (GkrBufferAllocator)g_realloc);
-
- /* Generate it */
- if (!keyring->password || !keyring->password[0])
- result = gkr_keyring_textual_generate (keyring, &out);
- else
- result = gkr_keyring_binary_generate (keyring, &out);
-
- /* And write it to disk */
- if (result) {
- dirname = g_path_get_dirname (file);
- if (g_mkdir_with_parents (dirname, S_IRWXU) < 0)
- g_warning ("unable to create keyring dir");
- template = g_build_filename (dirname, ".keyringXXXXXX", NULL);
-
- fd = g_mkstemp (template);
- if (fd != -1) {
- fchmod (fd, S_IRUSR | S_IWUSR);
- if (write_all (fd, out.buf, out.len) == 0) {
-#ifdef HAVE_FSYNC
- fsync (fd);
-#endif
- close (fd);
- if (rename (template, file) == 0) {
- if (stat (file, &statbuf) == 0)
- gkr_location_manager_note_mtime (NULL,
- keyring->location, statbuf.st_mtime);
- } else {
- unlink (template);
- }
- } else {
- close (fd);
- }
- } else {
- g_warning ("Can't open keyring save file %s", template);
- perror ("mkstemp error: ");
- ret = FALSE;
- }
- g_free (template);
- g_free (dirname);
- } else {
- g_warning ("Internal error: Unable to generate data for keyring %s\n", keyring->keyring_name);
- ret = FALSE;
- }
-
- gkr_buffer_uninit (&out);
- g_free (file);
- return ret;
-}
-
-gboolean
-gkr_keyring_lock (GkrKeyring *keyring)
-{
- if (keyring->locked)
- return TRUE;
-
- /* Never lock the session keyring */
- if (!keyring->location)
- return TRUE;
-
- g_assert (keyring->password != NULL);
-
- gkr_secure_strfree (keyring->password);
- keyring->password = NULL;
- if (!gkr_keyring_update_from_disk (keyring)) {
- /* Failed to re-read, remove the keyring */
- g_warning ("Couldn't re-read keyring %s\n", keyring->keyring_name);
- gkr_keyrings_remove (keyring);
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_keyring_unlock (GkrKeyring *keyring, const gchar *password)
-{
- if (!keyring->locked)
- return TRUE;
-
- g_assert (keyring->password == NULL);
-
- keyring->password = gkr_secure_strdup (password);
- if (!gkr_keyring_update_from_disk (keyring)) {
- gkr_secure_strfree (keyring->password);
- keyring->password = NULL;
- }
- if (keyring->locked) {
- g_assert (keyring->password == NULL);
- return FALSE;
- } else {
- g_assert (keyring->password != NULL);
- return TRUE;
- }
-}
-
-gboolean
-gkr_keyring_is_insecure (GkrKeyring *keyring)
-{
- /* It's locked, must have encryption */
- if (keyring->locked)
- return FALSE;
-
- /* Only in memory == secure */
- if (!keyring->location)
- return FALSE;
-
- /* No or empty password == insecure */
- if (!keyring->password || !keyring->password[0])
- return TRUE;
-
- return FALSE;
-}
diff --git a/keyrings/gkr-keyring.h b/keyrings/gkr-keyring.h
deleted file mode 100644
index 3ebbd28d..00000000
--- a/keyrings/gkr-keyring.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyring.h - represents a keyring in memory, and functionality save/load
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_KEYRING_H__
-#define __GKR_KEYRING_H__
-
-/*
- * TODO: The internals of a GkrKeyring should probably be further
- * abstracted away and accessed via accessor methods and properties.
- */
-
-#include <glib-object.h>
-
-#include "gkr-keyring-item.h"
-
-#include "common/gkr-buffer.h"
-
-#include "library/gnome-keyring.h"
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_KEYRING (gkr_keyring_get_type())
-#define GKR_KEYRING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_KEYRING, GkrKeyring))
-#define GKR_KEYRING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_KEYRING, GObject))
-#define GKR_IS_KEYRING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_KEYRING))
-#define GKR_IS_KEYRING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_KEYRING))
-#define GKR_KEYRING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_KEYRING, GkrKeyringClass))
-
-typedef struct _GkrKeyringClass GkrKeyringClass;
-
-struct _GkrKeyring {
- GObject parent;
-
- /* NULL if memory only */
- GQuark location;
-
- /* If known: */
- char *password;
- gboolean locked;
- gboolean asking_password;
-
- /* Whether the salt and hash_iterations members are populated */
- gboolean salt_valid;
-
- /* On disk data: */
- guchar salt[8];
- guint32 hash_iterations;
-
- char *keyring_name;
- GList *items;
-
- time_t ctime;
- time_t mtime;
-
- gboolean lock_on_idle;
- guint lock_timeout;
-};
-
-struct _GkrKeyringClass {
- GObjectClass parent_class;
-
- void (*item_added) (GkrKeyring* keyring, GkrKeyringItem* item);
-
- void (*item_removed) (GkrKeyring* keyring, GkrKeyringItem* item);
-};
-
-GType gkr_keyring_get_type (void) G_GNUC_CONST;
-
-GkrKeyring* gkr_keyring_new (const gchar* name, GQuark location);
-
-GkrKeyring* gkr_keyring_create (GQuark volume, const gchar* name, const gchar* password);
-
-guint gkr_keyring_get_new_id (GkrKeyring *keyring);
-
-GkrKeyringItem* gkr_keyring_get_item (GkrKeyring *keyring, guint id);
-
-GkrKeyringItem* gkr_keyring_find_item (GkrKeyring *keyring, GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attrs);
-
-void gkr_keyring_add_item (GkrKeyring* keyring, GkrKeyringItem* item);
-
-void gkr_keyring_remove_item (GkrKeyring* keyring, GkrKeyringItem* item);
-
-gboolean gkr_keyring_update_from_disk (GkrKeyring *keyring);
-
-gboolean gkr_keyring_remove_from_disk (GkrKeyring *keyring);
-
-gboolean gkr_keyring_save_to_disk (GkrKeyring *keyring);
-
-gboolean gkr_keyring_lock (GkrKeyring *keyring);
-
-gboolean gkr_keyring_unlock (GkrKeyring *keyring, const gchar *password);
-
-void gkr_keyrings_set_item (GkrKeyring *keyring, GnomeKeyringItemType type,
- const gchar *display_name, const gchar *secret,
- GnomeKeyringAttributeList *attrs);
-
-gboolean gkr_keyring_is_insecure (GkrKeyring *keyring);
-
-/* -----------------------------------------------------------------------------
- * FILE FORMATS
- *
- * gint return value:
- * -1 : error
- * 0 : unrecognized
- * 1 : successful
- */
-
-gboolean gkr_keyring_textual_generate (GkrKeyring *keyring, GkrBuffer *buffer);
-
-gboolean gkr_keyring_binary_generate (GkrKeyring *keyring, GkrBuffer *buffer);
-
-gint gkr_keyring_textual_parse (GkrKeyring *keyring, GkrBuffer *buffer);
-
-gint gkr_keyring_binary_parse (GkrKeyring *keyring, GkrBuffer *buffer);
-
-G_END_DECLS
-
-#endif /* __GKR_KEYRING_H__ */
-
diff --git a/keyrings/gkr-keyrings.c b/keyrings/gkr-keyrings.c
deleted file mode 100644
index c4c36909..00000000
--- a/keyrings/gkr-keyrings.c
+++ /dev/null
@@ -1,361 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyrings.c - the global list of keyrings
-
- Copyright (C) 2003 Red Hat, Inc
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-keyrings.h"
-
-#include "common/gkr-cleanup.h"
-#include "common/gkr-location.h"
-#include "common/gkr-location-watch.h"
-
-#include "library/gnome-keyring-proto.h"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/stat.h>
-#include <glib.h>
-#include <strings.h>
-
-#define LOC_DEFAULT_FILE (gkr_location_from_string ("LOCAL:/keyrings/default"))
-
-static gboolean keyrings_inited = FALSE;
-
-static GList *keyrings = NULL;
-
-static GkrKeyring *session_keyring = NULL;
-static gchar *default_keyring = NULL;
-
-static GkrLocationWatch *location_watch = NULL;
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static int
-write_all (int fd, const char *buf, size_t len)
-{
- size_t bytes;
- int res;
-
- bytes = 0;
- while (bytes < len) {
- res = write (fd, buf + bytes, len - bytes);
- if (res < 0) {
- if (errno != EINTR &&
- errno != EAGAIN) {
- perror ("write_all write failure:");
- return -1;
- }
- } else {
- bytes += res;
- }
- }
- return 0;
-}
-
-static void
-update_default (void)
-{
- gchar *contents;
-
- if (gkr_location_read_file (LOC_DEFAULT_FILE, (guchar**)&contents, NULL, NULL)) {
- g_strstrip (contents);
- if (!contents[0]) {
- g_free (contents);
- contents = NULL;
- }
- g_free (default_keyring);
- default_keyring = contents;
- }
-}
-
-static void
-load_keyring (GkrLocationWatch *watch, GQuark loc, gpointer unused)
-{
- GkrKeyring *keyring;
- gboolean updated = FALSE;
- GList *l;
-
- /* Still need to check for file updates */
- for (l = keyrings; l != NULL; l = l->next) {
- keyring = GKR_KEYRING (l->data);
- if (keyring->location && keyring->location == loc) {
- gkr_keyring_update_from_disk (keyring);
- updated = TRUE;
- }
- }
-
- if (updated)
- return;
-
- /* Make a new blank keyring and add it */
- keyring = gkr_keyring_new ("", loc);
- gkr_keyrings_add (keyring);
- g_object_unref (keyring);
-
- /* Try and update/load it */
- if (!gkr_keyring_update_from_disk (keyring) ||
- !keyring->keyring_name || !keyring->keyring_name[0])
- gkr_keyrings_remove (keyring);
-}
-
-static void
-remove_keyring (GkrLocationWatch *watch, GQuark loc, gpointer unused)
-{
- GkrKeyring *keyring;
- GList *l;
-
- g_return_if_fail (loc);
-
- /* Find the keyring that dissappeared, and remove it from our list */
- for (l = keyrings; l; l = g_list_next (l)) {
- keyring = GKR_KEYRING (l->data);
- if (keyring->location && keyring->location == loc)
- gkr_keyrings_remove (keyring);
- }
-}
-
-static void
-keyrings_cleanup (gpointer unused)
-{
- GkrKeyring *keyring;
-
- g_assert (keyrings_inited);
-
- g_assert (location_watch);
- g_object_unref (location_watch);
- location_watch = NULL;
-
- while (keyrings) {
- keyring = GKR_KEYRING (keyrings->data);
- if (keyring == session_keyring)
- session_keyring = NULL;
- keyrings = g_list_remove (keyrings, keyring);
- g_object_unref (keyring);
- }
-
- g_free (default_keyring);
- default_keyring = NULL;
-
- g_assert (session_keyring == NULL);
- keyrings_inited = FALSE;
-}
-
-static void
-keyrings_init (void)
-{
- GQuark loc;
- gchar *path;
-
- if (keyrings_inited)
- return;
- keyrings_inited = TRUE;
-
- /* Make the local keyrings directory */
- loc = gkr_location_from_string ("LOCAL:/keyrings");
- g_assert (loc);
- path = gkr_location_to_path (loc);
- if (g_mkdir_with_parents (path, S_IRWXU) < 0)
- g_warning ("unable to create keyring dir");
- g_free (path);
-
- /* Create the session keyring */
- g_assert (!session_keyring);
- session_keyring = gkr_keyring_new ("session", 0);
- gkr_keyrings_add (session_keyring);
-
- g_assert (!location_watch);
- location_watch = gkr_location_watch_new (NULL, 0, "keyrings", "*.keyring", NULL);
- g_signal_connect (location_watch, "location-added", G_CALLBACK (load_keyring), NULL);
- g_signal_connect (location_watch, "location-changed", G_CALLBACK (load_keyring), NULL);
- g_signal_connect (location_watch, "location-removed", G_CALLBACK (remove_keyring), NULL);
-
- gkr_cleanup_register (keyrings_cleanup, NULL);
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrKeyring*
-gkr_keyrings_get_default (void)
-{
- GkrKeyring *keyring = NULL;
-
- keyrings_init ();
- if (!default_keyring)
- update_default ();
-
- if (default_keyring != NULL)
- keyring = gkr_keyrings_find (default_keyring);
-
- /*
- * We prefer to make the 'login' keyring the default
- * keyring when nothing else is setup.
- */
- if (keyring == NULL)
- keyring = gkr_keyrings_get_login ();
-
- /*
- * Otherwise fall back to the 'default' keyring setup
- * if PAM integration is borked, and the user had to
- * create a new keyring.
- */
- if (keyring == NULL)
- keyring = gkr_keyrings_find ("default");
-
- return keyring;
-}
-
-void
-gkr_keyrings_set_default (GkrKeyring *keyring)
-{
- char *path;
- const gchar *data;
- int fd;
-
- keyrings_init ();
-
- path = gkr_location_to_path (LOC_DEFAULT_FILE);
- fd = open (path, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR);
- if (fd != -1) {
- data = (keyring && keyring->keyring_name) ? keyring->keyring_name : "";
- write_all (fd, data, strlen (data));
-#ifdef HAVE_FSYNC
- fsync (fd);
-#endif
- close (fd);
- }
-
- g_free (path);
-
- g_free (default_keyring);
- default_keyring = keyring ? g_strdup (keyring->keyring_name) : NULL;
-}
-
-GkrKeyring*
-gkr_keyrings_get_login (void)
-{
- return gkr_keyrings_find ("login");
-}
-
-void
-gkr_keyrings_update (void)
-{
- keyrings_init ();
- gkr_location_watch_refresh (location_watch, FALSE);
- update_default ();
-}
-
-
-void
-gkr_keyrings_add (GkrKeyring *keyring)
-{
- keyrings_init ();
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- /* Can't add the same keyring twice */
- g_assert (g_list_find (keyrings, keyring) == NULL);
-
- keyrings = g_list_prepend (keyrings, keyring);
- g_object_ref (keyring);
-}
-
-void
-gkr_keyrings_remove (GkrKeyring *keyring)
-{
- keyrings_init ();
-
- g_assert (GKR_IS_KEYRING (keyring));
-
- if (g_list_find (keyrings, keyring)) {
-
- if (default_keyring &&
- strcmp (keyring->keyring_name, default_keyring) == 0)
- gkr_keyrings_set_default (NULL);
-
- keyrings = g_list_remove (keyrings, keyring);
-
- g_object_unref (keyring);
- }
-}
-
-GkrKeyring*
-gkr_keyrings_get_session (void)
-{
- keyrings_init ();
- g_assert (session_keyring);
- return session_keyring;
-}
-
-GkrKeyring*
-gkr_keyrings_find (const gchar *name)
-{
- GkrKeyring *keyring;
- GList *l;
-
- keyrings_init ();
-
- if (name == NULL)
- return gkr_keyrings_get_default ();
-
- for (l = keyrings; l != NULL; l = l->next) {
- keyring = GKR_KEYRING (l->data);
- if (strcmp (keyring->keyring_name, name) == 0) {
- return keyring;
- }
- }
-
- return NULL;
-}
-
-gboolean
-gkr_keyrings_foreach (GkrKeyringEnumFunc func, gpointer data)
-{
- GList *l;
-
- keyrings_init ();
-
- for (l = keyrings; l != NULL; l = l->next) {
- if (!(func) (GKR_KEYRING (l->data), data))
- return FALSE;
- }
-
- return TRUE;
-}
-
-guint
-gkr_keyrings_get_count (void)
-{
- keyrings_init ();
- return g_list_length (keyrings);
-}
diff --git a/keyrings/gkr-keyrings.h b/keyrings/gkr-keyrings.h
deleted file mode 100644
index 657b5854..00000000
--- a/keyrings/gkr-keyrings.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-keyrings.h - the global list of keyrings
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_KEYRINGS_H__
-#define __GKR_KEYRINGS_H__
-
-#include "gkr-keyring.h"
-
-void gkr_keyrings_update (void);
-
-GkrKeyring* gkr_keyrings_get_default (void);
-
-void gkr_keyrings_set_default (GkrKeyring *keyring);
-
-GkrKeyring* gkr_keyrings_get_login (void);
-
-void gkr_keyrings_add (GkrKeyring *keyring);
-
-void gkr_keyrings_remove (GkrKeyring *keyring);
-
-GkrKeyring* gkr_keyrings_find (const gchar *name);
-
-GkrKeyring* gkr_keyrings_get_session (void);
-
-guint gkr_keyrings_get_count (void);
-
-typedef gboolean (*GkrKeyringEnumFunc) (GkrKeyring* keyring, gpointer data);
-gboolean gkr_keyrings_foreach (GkrKeyringEnumFunc func, gpointer data);
-
-#endif /* __GKR_KEYRINGS_H__ */
-
diff --git a/keyrings/tests/Makefile.am b/keyrings/tests/Makefile.am
deleted file mode 100644
index 55b10e68..00000000
--- a/keyrings/tests/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-
-UNIT_AUTO = \
- unit-test-keyring-login.c \
- unit-test-keyring-file.c
-
-UNIT_PROMPT = \
- unit-test-login-prompt.c
-
-UNIT_LIBS = \
- $(top_builddir)/keyrings/libgkr-keyrings.la \
- $(top_builddir)/library/libgnome-keyring-common.la \
- $(top_builddir)/ui/libgkr-ui.la \
- $(top_builddir)/common/libgkr-common.la
-
-EXTRA_DIST = test-data
-
-include $(top_srcdir)/tests/test.make
diff --git a/keyrings/tests/test-data/encrypted.keyring b/keyrings/tests/test-data/encrypted.keyring
deleted file mode 100644
index 742aecc3..00000000
--- a/keyrings/tests/test-data/encrypted.keyring
+++ /dev/null
Binary files differ
diff --git a/keyrings/tests/test-data/plain.keyring b/keyrings/tests/test-data/plain.keyring
deleted file mode 100644
index c048aa10..00000000
--- a/keyrings/tests/test-data/plain.keyring
+++ /dev/null
@@ -1,55 +0,0 @@
-
-[keyring]
-display-name=unit-test-keyring
-ctime=1198027852
-mtime=1198027852
-lock-on-idle=false
-lock-timeout=0
-
-[2]
-item-type=0
-display-name=Another display name
-secret=item-secret
-mtime=1198027852
-ctime=1198027852
-
-[2:acl0]
-display-name=run-auto-test
-path=/data/projects/gnome-keyring/library/tests/.libs/run-auto-test
-read-access=true
-write-access=true
-remove-access=true
-
-[3]
-item-type=0
-display-name=Barnyard
-secret=item-secret
-mtime=1198027852
-ctime=1198027852
-
-[3:attribute0]
-name=dog
-type=string
-value=woof
-
-[3:attribute1]
-name=bird
-type=string
-value=cheep
-
-[3:attribute2]
-name=iguana
-type=string
-value=
-
-[3:attribute3]
-name=num
-type=uint32
-value=3
-
-[3:acl0]
-display-name=run-auto-test
-path=/data/projects/gnome-keyring/library/tests/.libs/run-auto-test
-read-access=true
-write-access=true
-remove-access=true
diff --git a/keyrings/tests/unit-test-keyring-file.c b/keyrings/tests/unit-test-keyring-file.c
deleted file mode 100644
index bccb8342..00000000
--- a/keyrings/tests/unit-test-keyring-file.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings-file.c: Test Keyring file formats
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include "keyrings/gkr-keyring.h"
-
-#include "library/gnome-keyring-private.h"
-
-#include <glib.h>
-#include <string.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-static void
-validate_keyring_contents (GkrKeyring *keyring, CuTest *cu)
-{
- GnomeKeyringAccessControl *ac;
- GkrKeyringItem* item;
- GArray *attrs;
-
- /* The keyring itself */
- CuAssert (cu, "Missing keyring name", keyring->keyring_name != NULL);
- CuAssert (cu, "Invalid keyring name", g_str_equal (keyring->keyring_name, "unit-test-keyring"));
- CuAssert (cu, "Bad lock settings", !keyring->lock_on_idle && keyring->lock_timeout == 0);
- CuAssert (cu, "Bad Creation Time", keyring->ctime == 1198027852);
- CuAssert (cu, "Bad Modification Time", keyring->mtime == 1198027852);
- CuAssert (cu, "Wrong number of items", g_list_length (keyring->items) == 2);
-
- /* Item #2 */
- item = gkr_keyring_get_item (keyring, 2);
- CuAssert (cu, "Couldn't find item", item != NULL);
- CuAssert (cu, "Invalid item type", item->type == GNOME_KEYRING_ITEM_GENERIC_SECRET);
- CuAssert (cu, "Missing secret", item->secret != NULL);
- CuAssert (cu, "Wrong secret", g_str_equal (item->secret, "item-secret"));
- CuAssert (cu, "Bad Creation Time", item->ctime == 1198027852);
-
- /* Item #2 ACL */
- CuAssert (cu, "Bad ACLs", g_list_length (item->acl) == 1);
- ac = (GnomeKeyringAccessControl*)item->acl->data;
- CuAssert (cu, "Invalid ACL", ac && ac->application);
- CuAssert (cu, "Invalid ACL Path", ac->application->pathname &&
- g_str_equal (ac->application->pathname, "/data/projects/gnome-keyring/library/tests/.libs/run-auto-test"));
- CuAssert (cu, "Invalid ACL Display Name", ac->application->display_name &&
- g_str_equal (ac->application->display_name, "run-auto-test"));
- CuAssert (cu, "Invalid ACL Access Type",
- ac->types_allowed == (GNOME_KEYRING_ACCESS_READ | GNOME_KEYRING_ACCESS_WRITE | GNOME_KEYRING_ACCESS_REMOVE));
-
- /* Item #3 */
- attrs = gnome_keyring_attribute_list_new ();
- gnome_keyring_attribute_list_append_string (attrs, "dog", "woof");
- gnome_keyring_attribute_list_append_string (attrs, "bird", "cheep");
- gnome_keyring_attribute_list_append_string (attrs, "iguana", "");
- gnome_keyring_attribute_list_append_uint32 (attrs, "num", 3);
- item = gkr_keyring_find_item (keyring, GNOME_KEYRING_ITEM_GENERIC_SECRET, attrs);
- gnome_keyring_attribute_list_free (attrs);
- CuAssert (cu, "Couldn't find item #3", item != NULL);
- CuAssert (cu, "Invalid item found", item->id == 3);
- CuAssert (cu, "Invalid item type", item->type == GNOME_KEYRING_ITEM_GENERIC_SECRET);
- CuAssert (cu, "Missing secret", item->secret != NULL);
- CuAssert (cu, "Wrong secret", g_str_equal (item->secret, "item-secret"));
-}
-
-void unit_test_keyring_parse_encrypted (CuTest *cu)
-{
- GkrKeyring *encrypted, *plain;
- GkrBuffer buffer, output;
- gchar *data;
- gsize n_data;
- gint ret;
- gboolean success;
-
- encrypted = gkr_keyring_new ("encrypted", 0);
- encrypted->password = "my-keyring-password";
- plain = gkr_keyring_new ("plain", 0);
-
- if (!g_file_get_contents ("test-data/encrypted.keyring", &data, &n_data, NULL))
- g_assert (FALSE && "couldn't read in encrypted.keyring");
-
- /* Parse it */
- gkr_buffer_init_allocated (&buffer, (guchar*)data, n_data, NULL);
- data = g_memdup (data, n_data); /* Make a copy for double parse */
- ret = gkr_keyring_binary_parse (encrypted, &buffer);
- gkr_buffer_uninit (&buffer);
- CuAssert (cu, "couldn't parse encrypted keyring", ret == 1);
- CuAssert (cu, "didn't unlock encrypted keyring", !encrypted->locked);
-
- validate_keyring_contents (encrypted, cu);
-
- /* Double parse shouldn't change it */
- gkr_buffer_init_allocated (&buffer, (guchar*)data, n_data, NULL);
- ret = gkr_keyring_binary_parse (encrypted, &buffer);
- gkr_buffer_uninit (&buffer);
- CuAssert (cu, "couldn't parse encrypted keyring", ret == 1);
- CuAssert (cu, "didn't unlock encrypted keyring", !encrypted->locked);
-
- validate_keyring_contents (encrypted, cu);
-
- /* Output same data in the cleartext format */
- gkr_buffer_init (&output, 128);
- success = gkr_keyring_textual_generate (encrypted, &output);
- CuAssert (cu, "couldn't generate textual data", success);
-
- /* Make sure it parses */
- ret = gkr_keyring_textual_parse (plain, &output);
- CuAssert (cu, "couldn't parse generated textual data", ret == 1);
- CuAssert (cu, "keyring should not be locked", !plain->locked);
-
- validate_keyring_contents (plain, cu);
-}
-
-void unit_test_keyring_parse_plain (CuTest *cu)
-{
- GkrKeyring *keyring;
- GkrBuffer buffer;
- gchar *data;
- gsize n_data;
- gint ret;
-
- keyring = gkr_keyring_new ("plain", 0);
-
- if (!g_file_get_contents ("test-data/plain.keyring", &data, &n_data, NULL))
- g_assert (FALSE && "couldn't read in plain.keyring");
-
- /* Parse it */
- gkr_buffer_init_static (&buffer, (guchar*)data, n_data);
- ret = gkr_keyring_textual_parse (keyring, &buffer);
- CuAssert (cu, "couldn't parse generated textual data", ret == 1);
- CuAssert (cu, "keyring should not be locked", !keyring->locked);
-
- validate_keyring_contents (keyring, cu);
-
- /* Double parse shouldn't change it */
- gkr_buffer_init_static (&buffer, (guchar*)data, n_data);
- ret = gkr_keyring_textual_parse (keyring, &buffer);
- CuAssert (cu, "couldn't parse generated textual data", ret == 1);
- CuAssert (cu, "keyring should not be locked", !keyring->locked);
-
- validate_keyring_contents (keyring, cu);
-}
diff --git a/keyrings/tests/unit-test-keyring-login.c b/keyrings/tests/unit-test-keyring-login.c
deleted file mode 100644
index 3cbeff73..00000000
--- a/keyrings/tests/unit-test-keyring-login.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings-login.c: Test Login Keyring
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-location.h"
-
-#include "keyrings/gkr-keyrings.h"
-#include "keyrings/gkr-keyring-login.h"
-
-#include "ui/gkr-ask-daemon.h"
-
-#include <glib.h>
-#include <memory.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-void unit_setup_keyrings_login (void)
-{
- gkr_keyrings_update();
-
- /* Remove the current login keyring */
- GkrKeyring *login = gkr_keyrings_get_login ();
- if (login) {
- g_printerr ("removing old login keyring: %s\n",
- gkr_location_to_path (login->location));
- gkr_keyring_remove_from_disk (login);
- gkr_keyrings_remove (login);
- }
-}
-
-static void
-verify_no_ask (GkrAskRequest *req, gpointer data)
-{
- CuTest *cu = (CuTest*)data;
- CuAssert (cu, "should not have prompted", FALSE);
-}
-
-void unit_test_keyrings_login (CuTest* cu)
-{
- GkrKeyring *login;
- gboolean ret;
-
- gkr_ask_daemon_set_hook (verify_no_ask, cu);
-
- /* Unlock and create a new login keyring */
- ret = gkr_keyring_login_unlock ("blah");
- CuAssert (cu, "gkr_keyring_login_unlock() return FALSE", ret);
- CuAssert (cu, "login not marked unlocked", gkr_keyring_login_is_unlocked ());
-
- /* Make sure it worked */
- login = gkr_keyrings_get_login ();
- CuAssert (cu, "invalid keyring created by gkr_keyring_login_unlock()", login != NULL);
-
- /* Now lock it */
- gkr_keyring_login_lock ();
- CuAssert (cu, "didn't lock right keyring", login->locked);
- CuAssert (cu, "login not marked locked", !gkr_keyring_login_is_unlocked ());
-
- /* And unlock it again */
- ret = gkr_keyring_login_unlock ("blah");
- CuAssert (cu, "gkr_keyring_login_unlock() returned FALSE", ret);
-
- /* Make sure it didn't create a new keyring */
- CuAssert (cu, "gkr_keyring_login_unlock() created a second keyring",
- login == gkr_keyrings_get_login());
-}
-
-void unit_test_keyrings_login_secrets (CuTest* cu)
-{
- const gchar *password;
-
- /* Save a password away */
- gkr_keyring_login_attach_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Display Name", "secret",
- "attr-string", "string",
- NULL);
-
- /* Look it up */
- password = gkr_keyring_login_lookup_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "attr-string", "string",
- NULL);
- CuAssert (cu, "no secret found in login keyring", password != NULL);
- CuAssert (cu, "wrong secret found in login keyring", strcmp (password, "secret") == 0);
-
- /* Change it to a different password */
- gkr_keyring_login_attach_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Display Name", "other",
- "attr-string", "string",
- NULL);
-
- /* Look it up */
- password = gkr_keyring_login_lookup_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "attr-string", "string",
- NULL);
- CuAssert (cu, "no secret found in login keyring", password != NULL);
- CuAssert (cu, "wrong secret found in login keyring", strcmp (password, "other") == 0);
-
- /* Remove it */
- gkr_keyring_login_remove_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "attr-string", "string",
- NULL);
-
- /* Look it up */
- password = gkr_keyring_login_lookup_secret (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "attr-string", "string",
- NULL);
- CuAssert (cu, "secret wasn't deleted properly", password == NULL);
-}
diff --git a/keyrings/tests/unit-test-login-prompt.c b/keyrings/tests/unit-test-login-prompt.c
deleted file mode 100644
index 0be12f48..00000000
--- a/keyrings/tests/unit-test-login-prompt.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings-login.c: Test Login Keyring
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-prompt-test.h"
-
-#include "keyrings/gkr-keyrings.h"
-#include "keyrings/gkr-keyring-login.h"
-
-#include "ui/gkr-ask-daemon.h"
-
-#include <glib.h>
-#include <memory.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-static void
-TELL(const char* what)
- { printf("INTERACTION: %s\n", what); }
-
-void unit_setup_keyrings_login (void)
-{
- /* Remove the current login keyring */
- GkrKeyring *login = gkr_keyrings_get_login ();
- if (login)
- gkr_keyrings_remove (login);
-}
-
-static gboolean had_prompt = FALSE;
-
-static void
-verify_ask (GkrAskRequest *req, gpointer data)
-{
- CuTest *cu = (CuTest*)data;
-
- CuAssert (cu, "should only have one prompt", !had_prompt);
- had_prompt = TRUE;
-}
-
-void unit_test_keyrings_login (CuTest* cu)
-{
- gboolean ret;
-
- gkr_ask_daemon_set_hook (verify_ask, cu);
-
- CuAssert (cu, "login not marked locked", !gkr_keyring_login_is_unlocked ());
-
- /* cancel the prompt */
- TELL("Press 'DENY'");
- had_prompt = FALSE;
- ret = gkr_keyring_login_unlock (NULL);
- CuAssert (cu, "no prompt appeared", had_prompt);
- CuAssert (cu, "gkr_keyring_login_unlock() return TRUE", !ret);
- CuAssert (cu, "login not marked locked", !gkr_keyring_login_is_unlocked ());
-
- /* Now create a keyring */
- TELL("Type 'blah' and press 'OK'");
- had_prompt = FALSE;
- ret = gkr_keyring_login_unlock (NULL);
- CuAssert (cu, "no prompt appeared", had_prompt);
- CuAssert (cu, "gkr_keyring_login_unlock() return FALSE", ret);
- CuAssert (cu, "login not marked unlocked", gkr_keyring_login_is_unlocked ());
-
- /* Now lock it */
- gkr_keyring_login_lock ();
- CuAssert (cu, "didn't lock right keyring", !gkr_keyring_login_is_unlocked ());
-
- /* cancel the prompt */
- TELL("Press 'DENY'");
- had_prompt = FALSE;
- ret = gkr_keyring_login_unlock (NULL);
- CuAssert (cu, "no prompt appeared", had_prompt);
- CuAssert (cu, "gkr_keyring_login_unlock() return TRUE", !ret);
- CuAssert (cu, "login not marked locked", !gkr_keyring_login_is_unlocked ());
-
- /* Now create a keyring */
- TELL("Type 'blah' and press 'OK'");
- had_prompt = FALSE;
- ret = gkr_keyring_login_unlock (NULL);
- CuAssert (cu, "no prompt appeared", had_prompt);
- CuAssert (cu, "gkr_keyring_login_unlock() return FALSE", ret);
- CuAssert (cu, "login not marked unlocked", gkr_keyring_login_is_unlocked ());
-}
diff --git a/library/Makefile.am b/library/Makefile.am
deleted file mode 100644
index cfe47d7e..00000000
--- a/library/Makefile.am
+++ /dev/null
@@ -1,61 +0,0 @@
-libgnomekeyringincludedir = $(includedir)/gnome-keyring-1/
-
-lib_LTLIBRARIES=libgnome-keyring.la
-
-noinst_LTLIBRARIES=libgnome-keyring-common.la
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(LIBRARY_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libgnome_keyring_common_la_SOURCES = \
- gnome-keyring-opcodes.h \
- gnome-keyring-private.h \
- gnome-keyring-proto.c \
- gnome-keyring-proto.h \
- gnome-keyring-utils.c
-
-libgnome_keyring_common_la_LIBADD = \
- $(LIBRARY_LIBS) \
- $(GLIB_LIBS)
-
-libgnome_keyring_la_SOURCES = \
- gnome-keyring.c \
- gnome-keyring.h \
- gnome-keyring-memory.h \
- gnome-keyring-memory.c \
- gnome-keyring-result.h
-
-libgnomekeyringinclude_HEADERS = \
- gnome-keyring.h \
- gnome-keyring-memory.h \
- gnome-keyring-result.h
-
-libgnome_keyring_la_LIBADD = \
- libgnome-keyring-common.la \
- $(top_builddir)/common/libgkr-module-common.la \
- $(GLIB_LIBS)
-
-libgnome_keyring_la_LDFLAGS = \
- -version-info $(LIB_GNOME_KEYRING_LT_VERSION) \
- -no-undefined -export-symbols-regex 'gnome_keyring_|GNOME_KEYRING_'
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gnome-keyring-1.pc
-
-EXTRA_DIST = \
- gnome-keyring-1-uninstalled.pc.in
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
diff --git a/library/gnome-keyring-1-uninstalled.pc.in b/library/gnome-keyring-1-uninstalled.pc.in
deleted file mode 100644
index 8e7707cd..00000000
--- a/library/gnome-keyring-1-uninstalled.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: gnome-keyring
-Description: The GNOME keyring libraries
-Version: @VERSION@
-Requires: glib-2.0
-Libs: ${pc_top_builddir}/${pcfiledir}/libgnome-keyring.la
-Cflags: -I${pc_top_builddir}/${pcfiledir}
diff --git a/library/gnome-keyring-1.pc.in b/library/gnome-keyring-1.pc.in
deleted file mode 100644
index cc053bec..00000000
--- a/library/gnome-keyring-1.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: gnome-keyring
-Description: The GNOME keyring libraries
-Version: @VERSION@
-Requires: glib-2.0
-Libs: -L${libdir} -lgnome-keyring
-Cflags: -I${includedir}/gnome-keyring-1
diff --git a/library/gnome-keyring-memory.c b/library/gnome-keyring-memory.c
deleted file mode 100644
index 7bda49e8..00000000
--- a/library/gnome-keyring-memory.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-memory.c - library for allocating memory that is non-pageable
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gnome-keyring-memory.h"
-#include "gnome-keyring-private.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include <glib.h>
-
-#include <string.h>
-
-static GStaticMutex memory_mutex = G_STATIC_MUTEX_INIT;
-
-#define WARNING "couldn't allocate secure memory to keep passwords " \
- "and or keys from being written to the disk"
-
-#define ABORTMSG "The GNOME_KEYRING_PARANOID environment variable was set. " \
- "Exiting..."
-
-
-/*
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
- g_static_mutex_lock (&memory_mutex);
-}
-
-void
-gkr_memory_unlock (void)
-{
- g_static_mutex_unlock (&memory_mutex);
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- const gchar *env;
-
- /* We were asked to free memory */
- if (!sz) {
- g_free (p);
- return NULL;
- }
-
- /* We were asked to allocate */
- if (!p) {
- env = g_getenv ("GNOME_KEYRING_PARANOID");
- if (env && *env) {
- g_message (WARNING);
- g_error (ABORTMSG);
- }
-
- return g_malloc0 (sz);
- }
-
- /*
- * Reallocation is a bit of a gray area, as we can be asked
- * by external libraries (like libgcrypt) to reallocate a
- * non-secure block into secure memory. We cannot satisfy
- * this request (as we don't know the size of the original
- * block) so we just try our best here.
- */
-
- return g_realloc (p, sz);
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC FUNCTIONS
- */
-
-/**
- * gnome_keyring_memory_alloc:
- * @sz: The new desired size of the memory block.
- *
- * Allocate a block of gnome-keyring non-pageable memory.
- *
- * If non-pageable memory cannot be allocated then normal memory will be
- * returned.
- *
- * Return value: The new memory block which should be freed with
- * gnome_keyring_memory_free()
- **/
-gpointer
-gnome_keyring_memory_alloc (gulong sz)
-{
- gpointer p;
-
- /* Try to allocate secure memory */
- p = gkr_secure_alloc_full (sz, GKR_SECURE_USE_FALLBACK);
-
- /* Our fallback will always allocate */
- g_assert (p);
-
- return p;
-}
-
-/**
- * gnome_keyring_memory_try_alloc:
- * @sz: The new desired size of the memory block.
- *
- * Allocate a block of gnome-keyring non-pageable memory.
- *
- * If non-pageable memory cannot be allocated, then NULL is returned.
- *
- * Return value: The new block, or NULL if memory cannot be allocated.
- * The memory block should be freed with gnome_keyring_memory_free()
- */
-gpointer
-gnome_keyring_memory_try_alloc (gulong sz)
-{
- return gkr_secure_alloc_full (sz, 0);
-}
-
-/**
- * gnome_keyring_memory_realloc:
- * @p: The pointer to reallocate or NULL to allocate a new block.
- * @sz: The new desired size of the memory block, or 0 to free the memory.
- *
- * Reallocate a block of gnome-keyring non-pageable memory.
- *
- * Glib memory is also reallocated correctly. If called with a null pointer,
- * then a new block of memory is allocated. If called with a zero size,
- * then the block of memory is freed.
- *
- * If non-pageable memory cannot be allocated then normal memory will be
- * returned.
- *
- * Return value: The new block, or NULL if the block was freed.
- * The memory block should be freed with gnome_keyring_memory_free()
- */
-gpointer
-gnome_keyring_memory_realloc (gpointer p, gulong sz)
-{
- gpointer n;
-
- if (!p) {
- return gnome_keyring_memory_alloc (sz);
- } else if (!sz) {
- gnome_keyring_memory_free (p);
- return NULL;
- } else if (!gkr_secure_check (p)) {
- return g_realloc (p, sz);
- }
-
- /* First try and ask secure memory to reallocate */
- n = gkr_secure_realloc_full (p, sz, GKR_SECURE_USE_FALLBACK);
-
- g_assert (n);
-
- return n;
-}
-
-/**
- * gnome_keyring_memory_try_realloc:
- * @p: The pointer to reallocate or NULL to allocate a new block.
- * @sz: The new desired size of the memory block.
- *
- * Reallocate a block of gnome-keyring non-pageable memory.
- *
- * Glib memory is also reallocated correctly when passed to this function.
- * If called with a null pointer, then a new block of memory is allocated.
- * If called with a zero size, then the block of memory is freed.
- *
- * If memory cannot be allocated, NULL is returned and the original block
- * of memory remains intact.
- *
- * Return value: The new block, or NULL if memory cannot be allocated.
- * The memory block should be freed with gnome_keyring_memory_free()
- */
-gpointer
-gnome_keyring_memory_try_realloc (gpointer p, gulong sz)
-{
- gpointer n;
-
- if (!p) {
- return gnome_keyring_memory_try_alloc (sz);
- } else if (!sz) {
- gnome_keyring_memory_free (p);
- return NULL;
- } else if (!gkr_secure_check (p)) {
- return g_try_realloc (p, sz);
- }
-
- /* First try and ask secure memory to reallocate */
- n = gkr_secure_realloc_full (p, sz, 0);
-
- g_assert (n);
-
- return n;
-}
-
-/**
- * gnome_keyring_memory_free:
- * @p: The pointer to the beginning of the block of memory to free.
- *
- * Free a block of gnome-keyring non-pageable memory.
- *
- * Glib memory is also freed correctly when passed to this function. If called
- * with a null pointer then no action is taken.
- */
-void
-gnome_keyring_memory_free (gpointer p)
-{
- if (!p)
- return;
- gkr_secure_free_full (p, GKR_SECURE_USE_FALLBACK);
-}
-
-
-/**
- * gnome_keyring_memory_is_secure:
- * @p: The pointer to check
- *
- * Check if a pointer is in non-pageable memory allocated by gnome-keyring.
- *
- * Return value: Whether the memory is non-pageable or not
- */
-gboolean
-gnome_keyring_memory_is_secure (gpointer p)
-{
- return gkr_secure_check (p) ? TRUE : FALSE;
-}
-
-/**
- * gnome_keyring_memory_strdup:
- * @str: The null terminated string to copy
- *
- * Copy a string into non-pageable memory. If the input string is %NULL, then
- * %NULL will be returned.
- *
- * Return value: The copied string, should be freed with gnome_keyring_memory_free()
- */
-gchar*
-gnome_keyring_memory_strdup (const gchar* str)
-{
- return gkr_secure_strdup (str);
-}
diff --git a/library/gnome-keyring-memory.h b/library/gnome-keyring-memory.h
deleted file mode 100644
index babf9587..00000000
--- a/library/gnome-keyring-memory.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-memory.h - library for allocating memory that is non-pageable
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GNOME_KEYRING_MEMORY_H
-#define GNOME_KEYRING_MEMORY_H
-
-#include <glib.h>
-
-/**
- * gnome-keyring-memory:Short_Description:
- *
- * Gnome Keyring uses memory that is locked in physical RAM for secrets and
- * passwords.
- */
-
-/**
- * gnome_keyring_memory_new:
- * @type: The C type of the objects to allocate
- * @n_objects: The number of objects to allocate.
- *
- * Allocate objects in non-pageable gnome-keyring memory.
- *
- * Return value: The new block of memory.
- **/
-#define gnome_keyring_memory_new(type, n_objects) \
- ((type*)(gnome_keyring_memory_alloc (sizeof (type) * (n_objects))))
-
-gpointer gnome_keyring_memory_alloc (gulong sz);
-
-gpointer gnome_keyring_memory_try_alloc (gulong sz);
-
-gpointer gnome_keyring_memory_realloc (gpointer p, gulong sz);
-
-gpointer gnome_keyring_memory_try_realloc (gpointer p, gulong sz);
-
-void gnome_keyring_memory_free (gpointer p);
-
-gboolean gnome_keyring_memory_is_secure (gpointer p);
-
-gchar* gnome_keyring_memory_strdup (const gchar* str);
-
-#endif /* GNOME_KEYRING_MEMORY_H */
diff --git a/library/gnome-keyring-opcodes.h b/library/gnome-keyring-opcodes.h
deleted file mode 100644
index 2cbff9b0..00000000
--- a/library/gnome-keyring-opcodes.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-proto.h - helper code for the keyring daemon protocol
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-#ifndef GNOME_KEYRING_OPCODES_H
-#define GNOME_KEYRING_OPCODES_H
-
-typedef enum {
- GNOME_KEYRING_OP_LOCK_ALL,
- GNOME_KEYRING_OP_SET_DEFAULT_KEYRING,
- GNOME_KEYRING_OP_GET_DEFAULT_KEYRING,
- GNOME_KEYRING_OP_LIST_KEYRINGS,
- GNOME_KEYRING_OP_CREATE_KEYRING,
- GNOME_KEYRING_OP_LOCK_KEYRING,
- GNOME_KEYRING_OP_UNLOCK_KEYRING,
- GNOME_KEYRING_OP_DELETE_KEYRING,
- GNOME_KEYRING_OP_GET_KEYRING_INFO,
- GNOME_KEYRING_OP_SET_KEYRING_INFO,
- GNOME_KEYRING_OP_LIST_ITEMS,
- GNOME_KEYRING_OP_FIND,
- GNOME_KEYRING_OP_CREATE_ITEM,
- GNOME_KEYRING_OP_DELETE_ITEM,
- GNOME_KEYRING_OP_GET_ITEM_INFO,
- GNOME_KEYRING_OP_SET_ITEM_INFO,
- GNOME_KEYRING_OP_GET_ITEM_ATTRIBUTES,
- GNOME_KEYRING_OP_SET_ITEM_ATTRIBUTES,
- GNOME_KEYRING_OP_GET_ITEM_ACL,
- GNOME_KEYRING_OP_SET_ITEM_ACL,
- GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD,
- GNOME_KEYRING_OP_SET_DAEMON_DISPLAY,
- GNOME_KEYRING_OP_GET_ITEM_INFO_FULL,
- GNOME_KEYRING_OP_PREPARE_ENVIRONMENT,
-
- /* Add new ops here */
-
- GNOME_KEYRING_NUM_OPS
-} GnomeKeyringOpCode;
-
-#endif /* GNOME_KEYRING_OPCODES_H */
diff --git a/library/gnome-keyring-private.h b/library/gnome-keyring-private.h
deleted file mode 100644
index 5ee36bda..00000000
--- a/library/gnome-keyring-private.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-private.h - private header for keyring
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#ifndef GNOME_KEYRING_PRIVATE_H
-#define GNOME_KEYRING_PRIVATE_H
-
-#include "gnome-keyring.h"
-
-struct GnomeKeyringApplicationRef {
- char *display_name;
- char *pathname;
-};
-
-struct GnomeKeyringAccessControl {
- GnomeKeyringApplicationRef *application; /* null for all */
- GnomeKeyringAccessType types_allowed;
-};
-
-struct GnomeKeyringInfo {
- gboolean lock_on_idle;
- guint32 lock_timeout;
- time_t mtime;
- time_t ctime;
- gboolean is_locked;
-};
-
-struct GnomeKeyringItemInfo {
- GnomeKeyringItemType type;
- char *display_name;
- char *secret;
- time_t mtime;
- time_t ctime;
-};
-
-#ifdef WITH_DBUS
-#define GNOME_KEYRING_DAEMON_SERVICE "org.gnome.keyring"
-#define GNOME_KEYRING_DAEMON_PATH "/org/gnome/keyring/daemon"
-#define GNOME_KEYRING_DAEMON_INTERFACE "org.gnome.keyring.Daemon"
-#endif
-
-void _gnome_keyring_memory_dump (void);
-extern gboolean gnome_keyring_memory_warning;
-
-#endif /* GNOME_KEYRING_PRIVATE_H */
-
diff --git a/library/gnome-keyring-proto.c b/library/gnome-keyring-proto.c
deleted file mode 100644
index 70c3d5ef..00000000
--- a/library/gnome-keyring-proto.c
+++ /dev/null
@@ -1,1528 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-proto.c - helper code for the keyring daemon protocol
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-#include "config.h"
-
-#include <string.h>
-#include <stdarg.h>
-
-#include "gnome-keyring-proto.h"
-#include "gnome-keyring-private.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-secure-memory.h"
-
-void
-gkr_proto_go_secure (GkrBuffer *buffer)
-{
- gkr_buffer_set_allocator (buffer, gkr_secure_realloc);
-}
-
-void
-gkr_proto_add_time (GkrBuffer *buffer, time_t time)
-{
- guint64 val;
-
- val = time;
- gkr_buffer_add_uint32 (buffer, ((val >> 32) & 0xffffffff));
- gkr_buffer_add_uint32 (buffer, (val & 0xffffffff));
-}
-
-gboolean
-gkr_proto_get_time (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- time_t *time)
-{
- guint32 a, b;
- guint64 val;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &a)) {
- return FALSE;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &b)) {
- return FALSE;
- }
-
- val = ((guint64)a) << 32 | b;
-
- *next_offset = offset;
- *time = (time_t) val;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_add_utf8_secret (GkrBuffer *buffer, const char *str)
-{
- /* Make sure this buffer is using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- return gkr_proto_add_utf8_string (buffer, str);
-}
-
-gboolean
-gkr_proto_add_utf8_string (GkrBuffer *buffer, const char *str)
-{
- gsize len;
-
- if (str != NULL) {
- len = strlen (str);
-
- if (!g_utf8_validate (str, len, NULL)) {
- return FALSE;
- }
- } else {
- len = 0;
- }
-
- return gkr_buffer_add_string (buffer, str);
-}
-
-gboolean
-gkr_proto_get_bytes (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- guchar *out, gsize n_bytes)
-{
- if (buffer->len < n_bytes ||
- offset > buffer->len - n_bytes) {
- return FALSE;
- }
-
- memcpy (out, buffer->buf + offset, n_bytes);
- *next_offset = offset + n_bytes;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_get_utf8_string (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- char **str_ret)
-{
- return gkr_proto_get_utf8_full (buffer, offset, next_offset,
- str_ret, (GkrBufferAllocator)g_realloc);
-}
-
-gboolean
-gkr_proto_get_utf8_secret (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- char **str_ret)
-{
- return gkr_proto_get_utf8_full (buffer, offset, next_offset,
- str_ret, gkr_secure_realloc);
-}
-
-gboolean
-gkr_proto_get_utf8_full (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- char **str_ret, GkrBufferAllocator allocator)
-{
- gsize len;
- char *str;
-
- if (!gkr_buffer_get_string (buffer, offset, &offset, &str, allocator))
- return FALSE;
- len = str ? strlen (str) : 0;
-
- if (str != NULL) {
- if (!g_utf8_validate (str, len, NULL)) {
- (allocator) (str, 0); /* frees memory */
- return FALSE;
- }
- }
-
- if (next_offset != NULL) {
- *next_offset = offset;
- }
- if (str_ret != NULL) {
- *str_ret = str;
- } else {
- (allocator) (str, 0); /* frees memory */
- }
- return TRUE;
-}
-
-static gboolean
-gkr_proto_start_operation (GkrBuffer *buffer, GnomeKeyringOpCode op,
- gsize *op_start)
-{
- gsize appname_pos;
- const char *name;
-
- appname_pos = buffer->len;
- gkr_buffer_add_uint32 (buffer, 0);
-
- name = g_get_application_name ();
- if (name != NULL && !g_utf8_validate (name, -1, NULL)) {
- g_warning ("g_application_name not utf8 encoded");
- name = NULL;
- } else if (name == NULL) {
- g_warning ("g_set_application_name not set.");
- }
- if (name == NULL) {
- /* General name if none set */
- name = "Application";
- }
- if (!gkr_proto_add_utf8_string (buffer, name)) {
- return FALSE;
- }
-
- /* backpatch application name size */
- if (!gkr_buffer_set_uint32 (buffer, appname_pos, buffer->len)) {
- return FALSE;
- }
-
-
- /* Make space for packet size */
- *op_start = buffer->len;
- gkr_buffer_add_uint32 (buffer, 0);
- gkr_buffer_add_uint32 (buffer, op);
-
- return TRUE;
-}
-
-static gboolean
-gkr_proto_end_operation (GkrBuffer *buffer, gsize op_start)
-{
- if (!gkr_buffer_set_uint32 (buffer, op_start, buffer->len - op_start)) {
- return FALSE;
- }
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_packet_size (GkrBuffer *buffer, guint32 *size)
-{
- return gkr_buffer_get_uint32 (buffer, 0, NULL, size);
-}
-
-gboolean
-gkr_proto_decode_packet_operation (GkrBuffer *buffer, GnomeKeyringOpCode *op)
-{
- guint32 op_nr;
- gboolean res;
-
- res = gkr_buffer_get_uint32 (buffer, 4, NULL, &op_nr);
- *op = op_nr;
- return res;
-}
-
-gboolean
-gkr_proto_encode_op_only (GkrBuffer *buffer, GnomeKeyringOpCode op)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, op, &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_op_string (GkrBuffer *buffer, GnomeKeyringOpCode op,
- const char *str)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, op, &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, str)) {
- return FALSE;
- }
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_op_string_int (GkrBuffer *buffer, GnomeKeyringOpCode op,
- const char *str, guint32 val)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, op, &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, str)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, val);
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_op_string_int_int (GkrBuffer *buffer, GnomeKeyringOpCode op,
- const char *str, guint32 integer1,
- guint32 integer2)
-{
- gsize op_start;
- if (!gkr_proto_start_operation (buffer, op, &op_start))
- return FALSE;
- if (!gkr_proto_add_utf8_string (buffer, str))
- return FALSE;
- gkr_buffer_add_uint32 (buffer, integer1);
- gkr_buffer_add_uint32 (buffer, integer2);
- if (!gkr_proto_end_operation (buffer, op_start))
- return FALSE;
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_op_string_secret (GkrBuffer *buffer, GnomeKeyringOpCode op,
- const char *str1, const char *str2)
-{
- gsize op_start;
-
- /* Make sure we're using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- if (!gkr_proto_start_operation (buffer, op, &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, str1)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, str2)) {
- return FALSE;
- }
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_op_string_secret_secret (GkrBuffer *buffer, GnomeKeyringOpCode op,
- const char *str1, const char *str2,
- const char *str3)
-{
- gsize op_start;
-
- /* Make sure we're using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- if (!gkr_proto_start_operation (buffer, op, &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, str1)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, str2)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, str3)) {
- return FALSE;
- }
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_find (GkrBuffer *buffer, GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes)
-{
- gsize op_start;
-
- gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_FIND, &op_start);
-
- gkr_buffer_add_uint32 (buffer, type);
-
- if (!gkr_proto_add_attribute_list (buffer, attributes)) {
- goto bail;
- }
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- goto bail;
- }
-
- return TRUE;
-
- bail:
- gkr_buffer_resize (buffer, op_start);
- return FALSE;
-}
-
-gboolean
-gkr_proto_encode_create_item (GkrBuffer *buffer, const char *keyring,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret, GnomeKeyringItemType type,
- gboolean update_if_exists)
-{
- gsize op_start;
-
- /* Make sure this buffer is using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_CREATE_ITEM,
- &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, keyring)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, display_name)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, secret)) {
- return FALSE;
- }
- if (!gkr_proto_add_attribute_list (buffer, attributes)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, type);
- gkr_buffer_add_uint32 (buffer, update_if_exists);
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_create_item (GkrBuffer *buffer, char **keyring, char **display_name,
- GnomeKeyringAttributeList **attributes, char **secret,
- GnomeKeyringItemType *type, gboolean *update_if_exists)
-{
- gsize offset;
- GnomeKeyringOpCode op;
- guint val;
-
- if (keyring != NULL) {
- *keyring = NULL;
- }
- if (display_name != NULL) {
- *display_name = NULL;
- }
- if (secret != NULL) {
- *secret = NULL;
- }
- if (attributes != NULL) {
- *attributes = NULL;
- }
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_CREATE_ITEM) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, display_name)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, secret)) {
- goto bail;
- }
-
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset, attributes)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &val)) {
- goto bail;
- }
- if (type != NULL) {
- *type = val;
- }
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &val)) {
- goto bail;
- }
- if (update_if_exists != NULL) {
- *update_if_exists = val;
- }
-
- return TRUE;
-
- bail:
- if (attributes != NULL) {
- gnome_keyring_attribute_list_free (*attributes);
- }
- if (keyring != NULL) {
- g_free (*keyring);
- }
- if (display_name != NULL) {
- g_free (*display_name);
- }
- if (secret != NULL) {
- gkr_secure_strfree (*secret);
- }
- return FALSE;
-
-}
-
-
-gboolean
-gkr_proto_encode_set_attributes (GkrBuffer *buffer, const char *keyring,
- guint32 id, GnomeKeyringAttributeList *attributes)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_SET_ITEM_ATTRIBUTES,
- &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, keyring)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, id);
-
- if (!gkr_proto_add_attribute_list (buffer, attributes)) {
- return FALSE;
- }
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_set_acl (GkrBuffer *buffer, const char *keyring,
- guint32 id, GList *acl)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_SET_ITEM_ACL,
- &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, keyring)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, id);
-
- if (!gkr_proto_add_acl (buffer, acl)) {
- return FALSE;
- }
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-
-gboolean
-gkr_proto_encode_set_item_info (GkrBuffer *buffer, const char *keyring,
- guint32 id, GnomeKeyringItemInfo *info)
-{
- gsize op_start;
-
- /* Make sure this buffer is using non-pageable memory */
- gkr_proto_go_secure (buffer);
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_SET_ITEM_INFO,
- &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, keyring)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, id);
-
- gkr_buffer_add_uint32 (buffer, info->type);
- if (!gkr_proto_add_utf8_string (buffer, info->display_name)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_secret (buffer, info->secret)) {
- return FALSE;
- }
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_set_keyring_info (GkrBuffer *buffer, const char *keyring,
- GnomeKeyringInfo *info)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_SET_KEYRING_INFO,
- &op_start)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, keyring)) {
- return FALSE;
- }
-
- gkr_buffer_add_uint32 (buffer, info->lock_on_idle);
- gkr_buffer_add_uint32 (buffer, info->lock_timeout);
-
- if (!gkr_proto_end_operation (buffer, op_start)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_encode_prepare_environment (GkrBuffer *buffer, const gchar **environment)
-{
- gsize op_start;
-
- if (!gkr_proto_start_operation (buffer, GNOME_KEYRING_OP_PREPARE_ENVIRONMENT,
- &op_start))
- return FALSE;
-
- if (!gkr_buffer_add_stringv (buffer, environment))
- return FALSE;
-
- if (!gkr_proto_end_operation (buffer, op_start))
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_attribute_list (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- GnomeKeyringAttributeList **attributes_out)
-{
- guint32 list_size;
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
- char *name;
- guint32 type;
- char *str;
- guint32 val;
- int i;
-
- attributes = NULL;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &list_size)) {
- goto bail;
- }
-
- attributes = gnome_keyring_attribute_list_new ();
- for (i = 0; i < list_size; i++) {
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &name)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &type)) {
- g_free (name);
- goto bail;
- }
- switch (type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &str)) {
- g_free (name);
- goto bail;
- }
- attribute.name = name;
- attribute.type = type;
- attribute.value.string = str;
- g_array_append_val (attributes, attribute);
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- if (!gkr_buffer_get_uint32 (buffer, offset,
- &offset, &val)) {
- g_free (name);
- goto bail;
- }
- attribute.name = name;
- attribute.type = type;
- attribute.value.integer = val;
- g_array_append_val (attributes, attribute);
- break;
- default:
- g_free (name);
- goto bail;
- }
- }
-
- if (attributes_out != NULL) {
- *attributes_out = attributes;
- } else {
- gnome_keyring_attribute_list_free (attributes);
- }
- *next_offset = offset;
- return TRUE;
-
- bail:
- gnome_keyring_attribute_list_free (attributes);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_acl (GkrBuffer *buffer, gsize offset, gsize *next_offset,
- GList **acl_out)
-{
- guint32 list_size;
- GList *acl;
- GnomeKeyringAccessControl *ac;
- GnomeKeyringApplicationRef *ref;
- char *display_name;
- char *pathname;
- guint32 types_allowed;
- int i;
-
- acl = NULL;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &list_size)) {
- goto bail;
- }
-
- for (i = 0; i < list_size; i++) {
- ac = g_new0 (GnomeKeyringAccessControl, 1);
- ref = g_new0 (GnomeKeyringApplicationRef, 1);
- if (!gkr_proto_get_utf8_string (buffer,
- offset, &offset,
- &display_name)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_string (buffer,
- offset, &offset,
- &pathname)) {
- g_free (display_name);
- goto bail;
- }
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &types_allowed)) {
- g_free (display_name);
- g_free (pathname);
- goto bail;
- }
- ref->display_name = display_name;
- ref->pathname = pathname;
- ac->application = ref;
- ac->types_allowed = types_allowed;
- acl = g_list_append (acl, ac);
- }
-
- if (acl_out != NULL) {
- *acl_out = acl;
- } else {
- g_list_free (acl);
- }
- *next_offset = offset;
- return TRUE;
-
- bail:
- g_list_free (acl);
- return FALSE;
-}
-
-
-gboolean
-gkr_proto_add_attribute_list (GkrBuffer *buffer, GnomeKeyringAttributeList *attributes)
-{
- int i;
- GnomeKeyringAttribute *array;
-
- /* Null attributes = empty attribute array */
- if (!attributes) {
- gkr_buffer_add_uint32 (buffer, 0);
- return TRUE;
- }
-
- array = (GnomeKeyringAttribute *)attributes->data;
-
- i = 0;
- gkr_buffer_add_uint32 (buffer, attributes->len);
-
- for (i = 0; i < attributes->len; i++) {
- if (!gkr_proto_add_utf8_string (buffer, array[i].name)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, array[i].type);
- switch (array[i].type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- if (!gkr_proto_add_utf8_string (buffer, array[i].value.string)) {
- return FALSE;
- }
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- gkr_buffer_add_uint32 (buffer, array[i].value.integer);
- break;
- default:
- g_assert_not_reached ();
- }
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_add_acl (GkrBuffer *buffer, GList *acl)
-{
- int length;
- GnomeKeyringAccessControl *ac;
- GList *tmp;
-
- length = g_list_length (acl);
-
- gkr_buffer_add_uint32 (buffer, length);
-
- for (tmp = acl; tmp != NULL; tmp = tmp->next) {
- ac = (GnomeKeyringAccessControl *)tmp->data;
- if (!gkr_proto_add_utf8_string (buffer, ac->application->display_name)) {
- return FALSE;
- }
- if (!gkr_proto_add_utf8_string (buffer, ac->application->pathname)) {
- return FALSE;
- }
- gkr_buffer_add_uint32 (buffer, ac->types_allowed);
- }
-
- return TRUE;
-}
-
-
-
-gboolean
-gkr_proto_decode_result_reply (GkrBuffer *buffer, GnomeKeyringResult *result)
-{
- gsize offset;
- guint32 res;
-
- offset = 4;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *result = res;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_result_string_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- char **str)
-{
- gsize offset;
- guint32 res;
-
- offset = 4;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *result = res;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, str)) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_result_string_list_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GList **list)
-{
- gsize offset;
- guint32 res;
- guint32 list_size, i;
- GList *names;
- char *str;
-
- offset = 4;
- names = NULL;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &list_size)) {
- goto bail;
- }
-
- for (i = 0; i < list_size; i++) {
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &str)) {
- goto bail;
- }
- names = g_list_prepend (names, str);
- }
-
- *result = res;
- *list = g_list_reverse (names);
-
- return TRUE;
-
- bail:
- g_list_foreach (names, (GFunc) g_free, NULL);
- g_list_free (names);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_find_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GList **list_out)
-{
- GList *list;
- gsize offset;
- guint32 res;
- GnomeKeyringFound *found;
-
- offset = 4;
-
- *list_out = NULL;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *result = res;
-
- if (res != GNOME_KEYRING_RESULT_OK) {
- return TRUE;
- }
-
- list = NULL;
- while (offset < buffer->len) {
- found = g_new0 (GnomeKeyringFound, 1);
- list = g_list_prepend (list, found);
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset,
- &found->keyring)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &found->item_id)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset,
- &found->secret)) {
- goto bail;
- }
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset,
- &found->attributes)) {
- goto bail;
- }
- }
-
- *list_out = g_list_reverse (list);
- return TRUE;
-
- bail:
- g_list_foreach (list, (GFunc)gnome_keyring_found_free, NULL);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_find (GkrBuffer *buffer, GnomeKeyringItemType *type,
- GnomeKeyringAttributeList **attributes)
-{
- gsize offset;
- GnomeKeyringOpCode op;
- guint32 t;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_FIND) {
- return FALSE;
- }
-
- offset = 8;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &t)) {
- return FALSE;
- }
- *type = t;
- return gkr_proto_decode_attribute_list (buffer, offset, &offset, attributes);
-}
-
-gboolean
-gkr_proto_decode_op_string (GkrBuffer *buffer, GnomeKeyringOpCode *op_out,
- char **str1)
-{
- gsize offset;
-
- if (str1 != NULL) {
- *str1 = NULL;
- }
- if (!gkr_proto_decode_packet_operation (buffer, op_out)) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, str1)) {
- goto bail;
- }
-
- return TRUE;
- bail:
- if (str1 != NULL) {
- g_free (*str1);
- *str1 = NULL;
- }
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_op_string_int (GkrBuffer *buffer, GnomeKeyringOpCode *op_out,
- char **str1, guint32 *val)
-{
- gsize offset;
-
- if (str1 != NULL) {
- *str1 = NULL;
- }
- if (!gkr_proto_decode_packet_operation (buffer, op_out)) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, str1)) {
- goto bail;
- }
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, val)) {
- goto bail;
- }
-
- return TRUE;
- bail:
- if (str1 != NULL) {
- g_free (*str1);
- *str1 = NULL;
- }
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_get_item_info (GkrBuffer *buffer, GnomeKeyringOpCode *op_out,
- char **keyring, guint32 *item_id, guint32 *flags)
-{
- gsize offset = 8;
- *keyring = NULL;
- if (!gkr_proto_decode_packet_operation (buffer, op_out))
- return FALSE;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring))
- goto bail;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, item_id))
- goto bail;
- if (*op_out == GNOME_KEYRING_OP_GET_ITEM_INFO_FULL) {
- /* Pull in lookup flags/parts, find out which ones */
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, flags))
- goto bail;
- } else {
- /* All parts of the item by default */
- *flags = GNOME_KEYRING_ITEM_INFO_ALL;
- }
-
- return TRUE;
- bail:
- g_free (*keyring);
- *keyring = NULL;
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_op_string_secret (GkrBuffer *buffer, GnomeKeyringOpCode *op_out,
- char **str1, char **str2)
-{
- gsize offset;
-
- if (str1 != NULL) {
- *str1 = NULL;
- }
- if (str2 != NULL) {
- *str2 = NULL;
- }
- if (!gkr_proto_decode_packet_operation (buffer, op_out)) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, str1)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, str2)) {
- goto bail;
- }
-
- return TRUE;
- bail:
- if (str1 != NULL) {
- g_free (*str1);
- *str1 = NULL;
- }
- if (str2 != NULL) {
- g_free (*str2);
- *str2 = NULL;
- }
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_op_string_secret_secret (GkrBuffer *buffer, GnomeKeyringOpCode *op_out,
- char **str1, char **str2, char **str3)
-{
- gsize offset;
-
- if (str1 != NULL) {
- *str1 = NULL;
- }
- if (str2 != NULL) {
- *str2 = NULL;
- }
- if (str3 != NULL) {
- *str3 = NULL;
- }
- if (!gkr_proto_decode_packet_operation (buffer, op_out)) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, str1)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, str2)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, str3)) {
- goto bail;
- }
-
- return TRUE;
- bail:
- if (str1 != NULL) {
- g_free (*str1);
- *str1 = NULL;
- }
- if (str2 != NULL) {
- g_free (*str2);
- *str2 = NULL;
- }
- if (str3 != NULL) {
- g_free (*str3);
- *str3 = NULL;
- }
- return FALSE;
-}
-
-
-gboolean
-gkr_proto_decode_get_attributes_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GnomeKeyringAttributeList **attributes)
-{
- gsize offset;
- guint32 res;
-
- offset = 4;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *attributes = NULL;
- *result = res;
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset, attributes)) {
- return FALSE;
- }
-
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_get_acl_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GList **acl)
-{
- gsize offset;
- guint32 res;
-
- offset = 4;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *acl = NULL;
- *result = res;
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_proto_decode_acl (buffer, offset, &offset, acl)) {
- return FALSE;
- }
-
- }
-
- return TRUE;
-}
-
-
-gboolean
-gkr_proto_decode_get_item_info_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GnomeKeyringItemInfo **info_out)
-{
- gsize offset;
- guint32 res, type;
- GnomeKeyringItemInfo *info;
- time_t mtime, ctime;
- char *name;
- char *secret;
-
- info = NULL;
-
- offset = 4;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &type)) {
- return FALSE;
- }
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, &name)) {
- return FALSE;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, &secret)) {
- g_free (name);
- return FALSE;
- }
-
- if (!gkr_proto_get_time (buffer, offset, &offset, &mtime)) {
- g_free (name);
- gkr_secure_strfree (secret);
- return FALSE;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset, &ctime)) {
- g_free (name);
- gkr_secure_strfree (secret);
- return FALSE;
- }
-
- info = g_new (GnomeKeyringItemInfo, 1);
- info->type = type;
- info->display_name = name;
- info->secret = secret;
- info->mtime = mtime;
- info->ctime = ctime;
- }
-
- *result = res;
- *info_out = info;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_get_keyring_info_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GnomeKeyringInfo **info_out)
-{
- gsize offset;
- guint32 res;
- GnomeKeyringInfo *info;
- guint32 lock_on_idle, lock_timeout, is_locked;
- time_t mtime, ctime;
-
- info = NULL;
-
- offset = 4;
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &lock_on_idle)) {
- return FALSE;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &lock_timeout)) {
- return FALSE;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset, &mtime)) {
- return FALSE;
- }
- if (!gkr_proto_get_time (buffer, offset, &offset, &ctime)) {
- return FALSE;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset,
- &is_locked)) {
- return FALSE;
- }
- info = g_new (GnomeKeyringInfo, 1);
- info->lock_on_idle = lock_on_idle;
- info->lock_timeout = lock_timeout;
- info->mtime = mtime;
- info->ctime = ctime;
- info->is_locked = is_locked;
- }
-
- *result = res;
- *info_out = info;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_set_item_info (GkrBuffer *buffer, char **keyring, guint32 *item_id,
- GnomeKeyringItemType *type, char **display_name,
- char **secret)
-{
- gsize offset;
- GnomeKeyringOpCode op;
- guint32 typeint;
-
- *keyring = NULL;
- *display_name = NULL;
- *secret = NULL;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_SET_ITEM_INFO) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, item_id)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &typeint)) {
- goto bail;
- }
- *type = typeint;
-
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, display_name)) {
- goto bail;
- }
- if (!gkr_proto_get_utf8_secret (buffer, offset, &offset, secret)) {
- goto bail;
- }
-
- return TRUE;
-
- bail:
- g_free (*keyring);
- g_free (*display_name);
- gkr_secure_strfree (*secret);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_set_keyring_info (GkrBuffer *buffer, char **keyring,
- gboolean *lock_on_idle, guint32 *lock_timeout)
-
-{
- gsize offset;
- GnomeKeyringOpCode op;
- guint32 lock_int;
-
- *keyring = NULL;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_SET_KEYRING_INFO) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &lock_int)) {
- goto bail;
- }
- *lock_on_idle = lock_int;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, lock_timeout)) {
- goto bail;
- }
-
- return TRUE;
-
- bail:
- g_free (*keyring);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_set_attributes (GkrBuffer *buffer, char **keyring,
- guint32 *item_id, GnomeKeyringAttributeList **attributes)
-{
- gsize offset;
- GnomeKeyringOpCode op;
-
- *keyring = NULL;
- *attributes = NULL;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_SET_ITEM_ATTRIBUTES) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, item_id)) {
- goto bail;
- }
-
- if (!gkr_proto_decode_attribute_list (buffer, offset, &offset, attributes)) {
- goto bail;
- }
-
- return TRUE;
-
- bail:
- g_free (*keyring);
- return FALSE;
-}
-
-
-gboolean
-gkr_proto_decode_set_acl (GkrBuffer *buffer, char **keyring, guint32 *item_id,
- GList **acl)
-{
- gsize offset;
- GnomeKeyringOpCode op;
-
- *keyring = NULL;
- *acl = NULL;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op)) {
- return FALSE;
- }
- if (op != GNOME_KEYRING_OP_SET_ITEM_ACL) {
- return FALSE;
- }
- offset = 8;
- if (!gkr_proto_get_utf8_string (buffer, offset, &offset, keyring)) {
- goto bail;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, item_id)) {
- goto bail;
- }
-
- if (!gkr_proto_decode_acl (buffer, offset, &offset, acl)) {
- goto bail;
- }
-
- return TRUE;
-
- bail:
- g_free (*keyring);
- return FALSE;
-}
-
-gboolean
-gkr_proto_decode_prepare_environment (GkrBuffer *buffer, gchar ***environment)
-{
- GnomeKeyringOpCode op;
- gsize offset;
-
- if (!gkr_proto_decode_packet_operation (buffer, &op))
- return FALSE;
- if (op != GNOME_KEYRING_OP_PREPARE_ENVIRONMENT)
- return FALSE;
-
- offset = 8;
-
- if (!gkr_buffer_get_stringv (buffer, offset, &offset, environment,
- (GkrBufferAllocator)g_realloc))
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_prepare_environment_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- char ***environment)
-{
- gsize offset;
- guint32 res;
-
- offset = 4;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res))
- return FALSE;
- *result = res;
-
- if (res == GNOME_KEYRING_RESULT_OK) {
- if (!gkr_buffer_get_stringv (buffer, offset, &offset, environment, NULL))
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_result_int_list_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- GList **list)
-{
- gsize offset;
- guint32 res, len, i, id;
-
- *list = NULL;
-
- offset = 4;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- *result = res;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &len)) {
- return FALSE;
- }
-
- for (i = 0; i < len; i++) {
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &id)) {
- g_list_free (*list);
- *list = NULL;
- return FALSE;
- }
- *list = g_list_prepend (*list, GUINT_TO_POINTER (id));
-
- }
- *list = g_list_reverse (*list);
- return TRUE;
-}
-
-gboolean
-gkr_proto_decode_result_integer_reply (GkrBuffer *buffer, GnomeKeyringResult *result,
- guint32 *integer)
-{
- gsize offset;
- guint32 res, val;
-
- offset = 4;
-
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &res)) {
- return FALSE;
- }
- if (!gkr_buffer_get_uint32 (buffer, offset, &offset, &val)) {
- return FALSE;
- }
-
- *result = res;
- if (integer != NULL) {
- *integer = val;
- }
-
- return TRUE;
-}
-
diff --git a/library/gnome-keyring-proto.h b/library/gnome-keyring-proto.h
deleted file mode 100644
index 0302402e..00000000
--- a/library/gnome-keyring-proto.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-proto.h - helper code for the keyring daemon protocol
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-#ifndef GNOME_KEYRING_PROTO_H
-#define GNOME_KEYRING_PROTO_H
-
-#include <stdarg.h>
-
-#include "gnome-keyring.h"
-#include "gnome-keyring-opcodes.h"
-
-#include "common/gkr-buffer.h"
-
-/* request:
- uint32 package size
- uint32 operation
- ... op data
-
- reply:
- uint32 reply size
- uint32 result
-*/
-
-void gkr_proto_go_secure (GkrBuffer *buffer);
-
-/* Core buffer ops */
-gboolean gkr_proto_get_bytes (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- guchar *out,
- gsize n_bytes);
-void gkr_proto_add_time (GkrBuffer *buffer,
- time_t val);
-gboolean gkr_proto_get_time (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- time_t *time);
-gboolean gkr_proto_add_utf8_string (GkrBuffer *buffer,
- const char *str);
-gboolean gkr_proto_add_utf8_secret (GkrBuffer *buffer,
- const char *str);
-gboolean gkr_proto_get_utf8_full (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- char **str_ret,
- GkrBufferAllocator allocator);
-gboolean gkr_proto_get_utf8_string (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- char **str_ret);
-gboolean gkr_proto_get_utf8_secret (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- char **str_ret);
-gboolean gkr_proto_add_attribute_list (GkrBuffer *buffer,
- GnomeKeyringAttributeList *attributes);
-gboolean gkr_proto_add_acl (GkrBuffer *buffer,
- GList *acl);
-
-
-/* marshallers */
-gboolean gkr_proto_encode_op_only (GkrBuffer *buffer,
- GnomeKeyringOpCode op);
-gboolean gkr_proto_encode_op_string (GkrBuffer *buffer,
- GnomeKeyringOpCode op,
- const char *str);
-gboolean gkr_proto_encode_op_string_int (GkrBuffer *buffer,
- GnomeKeyringOpCode op,
- const char *str,
- guint32 integer);
-gboolean gkr_proto_encode_op_string_int_int (GkrBuffer *buffer,
- GnomeKeyringOpCode op,
- const char *str,
- guint32 integer1,
- guint32 integer2);
-gboolean gkr_proto_encode_op_string_secret (GkrBuffer *buffer,
- GnomeKeyringOpCode op,
- const char *str1,
- const char *str2);
-gboolean gkr_proto_encode_op_string_secret_secret (GkrBuffer *buffer,
- GnomeKeyringOpCode op,
- const char *str1,
- const char *str2,
- const char *str3);
-gboolean gkr_proto_encode_find (GkrBuffer *buffer,
- GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes);
-gboolean gkr_proto_encode_create_item (GkrBuffer *buffer,
- const char *keyring,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret,
- GnomeKeyringItemType type,
- gboolean update_if_exists);
-gboolean gkr_proto_encode_set_attributes (GkrBuffer *buffer,
- const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList *attributes);
-gboolean gkr_proto_encode_set_acl (GkrBuffer *buffer,
- const char *keyring,
- guint32 id,
- GList *acl);
-gboolean gkr_proto_encode_set_item_info (GkrBuffer *buffer,
- const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo *info);
-gboolean gkr_proto_encode_set_keyring_info (GkrBuffer *buffer,
- const char *keyring,
- GnomeKeyringInfo *info);
-gboolean gkr_proto_encode_prepare_environment (GkrBuffer *buffer,
- const gchar **environment);
-
-
-/* demarshallers */
-gboolean gkr_proto_decode_packet_operation (GkrBuffer *buffer,
- GnomeKeyringOpCode *op);
-gboolean gkr_proto_decode_packet_size (GkrBuffer *buffer,
- guint32 *size);
-gboolean gkr_proto_decode_attribute_list (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- GnomeKeyringAttributeList **attributes_out);
-gboolean gkr_proto_decode_acl (GkrBuffer *buffer,
- gsize offset,
- gsize *next_offset,
- GList **attributes_out);
-gboolean gkr_proto_decode_result_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result);
-gboolean gkr_proto_decode_result_string_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- char **str);
-gboolean gkr_proto_decode_result_string_list_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GList **list);
-gboolean gkr_proto_decode_op_string (GkrBuffer *buffer,
- GnomeKeyringOpCode *op_out,
- char **str_out);
-gboolean gkr_proto_decode_op_string_secret (GkrBuffer *buffer,
- GnomeKeyringOpCode *op_out,
- char **str1_out,
- char **str2_out);
-gboolean gkr_proto_decode_op_string_secret_secret (GkrBuffer *buffer,
- GnomeKeyringOpCode *op_out,
- char **str1_out,
- char **str2_out,
- char **str3_out);
-gboolean gkr_proto_decode_op_string_int (GkrBuffer *buffer,
- GnomeKeyringOpCode *op_out,
- char **str1,
- guint32 *val);
-gboolean gkr_proto_decode_get_item_info (GkrBuffer *buffer,
- GnomeKeyringOpCode *op_out,
- char **keyring,
- guint32 *item_id,
- guint32 *flags);
-gboolean gkr_proto_decode_find (GkrBuffer *buffer,
- GnomeKeyringItemType *type,
- GnomeKeyringAttributeList **attributes);
-gboolean gkr_proto_decode_find_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GList **list_out);
-gboolean gkr_proto_decode_get_attributes_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GnomeKeyringAttributeList **attributes);
-gboolean gkr_proto_decode_get_acl_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GList **acl);
-gboolean gkr_proto_decode_get_item_info_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GnomeKeyringItemInfo **info);
-gboolean gkr_proto_decode_get_keyring_info_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GnomeKeyringInfo **info);
-gboolean gkr_proto_decode_result_int_list_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- GList **list);
-gboolean gkr_proto_decode_result_integer_reply (GkrBuffer *buffer,
- GnomeKeyringResult *result,
- guint32 *integer);
-gboolean gkr_proto_decode_create_item (GkrBuffer *packet,
- char **keyring,
- char **display_name,
- GnomeKeyringAttributeList **attributes,
- char **secret,
- GnomeKeyringItemType *type_out,
- gboolean *update_if_exists);
-gboolean gkr_proto_decode_set_item_info (GkrBuffer *buffer,
- char **keyring,
- guint32 *item_id,
- GnomeKeyringItemType *type,
- char **display_name,
- char **secret);
-gboolean gkr_proto_decode_set_keyring_info (GkrBuffer *buffer,
- char **keyring,
- gboolean *lock_on_idle,
- guint32 *lock_timeout);
-gboolean gkr_proto_decode_set_attributes (GkrBuffer *buffer,
- char **keyring,
- guint32 *item_id,
- GnomeKeyringAttributeList **attributes);
-gboolean gkr_proto_decode_set_acl (GkrBuffer *buffer,
- char **keyring,
- guint32 *item_id,
- GList **acl);
-gboolean gkr_proto_decode_prepare_environment (GkrBuffer *buffer,
- char ***environment);
-gboolean gkr_proto_decode_prepare_environment_reply (GkrBuffer *buffer,
- GnomeKeyringResult *res,
- char ***environment);
-
-#endif /* GNOME_KEYRING_PROTO_H */
diff --git a/library/gnome-keyring-result.h b/library/gnome-keyring-result.h
deleted file mode 100644
index f3d8faad..00000000
--- a/library/gnome-keyring-result.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-result.h - Result codes from Gnome Keyring
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GNOME_KEYRING_RESULT_H
-#define GNOME_KEYRING_RESULT_H
-
-typedef enum {
- GNOME_KEYRING_RESULT_OK,
- GNOME_KEYRING_RESULT_DENIED,
- GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON,
- GNOME_KEYRING_RESULT_ALREADY_UNLOCKED,
- GNOME_KEYRING_RESULT_NO_SUCH_KEYRING,
- GNOME_KEYRING_RESULT_BAD_ARGUMENTS,
- GNOME_KEYRING_RESULT_IO_ERROR,
- GNOME_KEYRING_RESULT_CANCELLED,
- GNOME_KEYRING_RESULT_KEYRING_ALREADY_EXISTS,
- GNOME_KEYRING_RESULT_NO_MATCH
-} GnomeKeyringResult;
-
-#define GNOME_KEYRING_RESULT_ALREADY_EXISTS \
- GNOME_KEYRING_RESULT_KEYRING_ALREADY_EXISTS
-
-#endif /* GNOME_KEYRING_RESULT_H */
diff --git a/library/gnome-keyring-utils.c b/library/gnome-keyring-utils.c
deleted file mode 100644
index b448cc75..00000000
--- a/library/gnome-keyring-utils.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring-proto.c - shared utility functions
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-#include "config.h"
-
-#include <string.h>
-#include <glib.h>
-#include <glib/gi18n-lib.h>
-
-#include "gnome-keyring.h"
-#include "gnome-keyring-private.h"
-#include "gnome-keyring-memory.h"
-
-#include "common/gkr-secure-memory.h"
-
-/* Functions used by both the library and the daemon */
-
-/**
- * gnome_keyring_free_password:
- * @password: the password to be freed
- *
- * Clears the memory used by password by filling with '\0' and frees the memory
- * after doing this. You should use this function instead of g_free() for
- * secret information.
- */
-void
-gnome_keyring_free_password (gchar *password)
-{
- gkr_secure_strfree (password);
-}
-
-/**
- * gnome_keyring_string_list_free:
- * @strings: A %GList of string pointers.
- *
- * Free a list of string pointers.
- */
-void
-gnome_keyring_string_list_free (GList *strings)
-{
- g_list_foreach (strings, (GFunc) g_free, NULL);
- g_list_free (strings);
-}
-
-/**
- * gnome_keyring_result_to_message:
- * @res: A #GnomeKeyringResult
- *
- * The #GNOME_KEYRING_RESULT_OK and #GNOME_KEYRING_RESULT_CANCELLED
- * codes will return an empty string.
- *
- * Note that there are some results for which the application will need to
- * take appropriate action rather than just display an error message to
- * the user.
- *
- * Return value: a string suitable for display to the user for a given
- * #GnomeKeyringResult, or an empty string if the message wouldn't make
- * sense to a user.
- **/
-const gchar*
-gnome_keyring_result_to_message (GnomeKeyringResult res)
-{
- switch (res) {
-
- /* If the caller asks for messages for these, they get what they deserve */
- case GNOME_KEYRING_RESULT_OK:
- case GNOME_KEYRING_RESULT_CANCELLED:
- return "";
-
- /* Valid displayable error messages */
- case GNOME_KEYRING_RESULT_DENIED:
- return _("Access Denied");
- case GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON:
- return _("The gnome-keyring-daemon application is not running.");
- case GNOME_KEYRING_RESULT_IO_ERROR:
- return _("Error communicating with gnome-keyring-daemon");
- case GNOME_KEYRING_RESULT_ALREADY_EXISTS:
- return _("A keyring with that name already exists");
- case GNOME_KEYRING_RESULT_BAD_ARGUMENTS:
- return _("Programmer error: The application sent invalid data.");
- case GNOME_KEYRING_RESULT_NO_MATCH:
- return _("No matching results");
- case GNOME_KEYRING_RESULT_NO_SUCH_KEYRING:
- return _("A keyring with that name does not exist.");
-
- /*
- * This would be a dumb message to display to the user, we never return
- * this from the daemon, only here for compatibility
- */
- case GNOME_KEYRING_RESULT_ALREADY_UNLOCKED:
- return _("The keyring has already been unlocked.");
-
- default:
- g_return_val_if_reached (NULL);
- };
-}
-
-
-/**
- * gnome_keyring_found_free():
- * @found: a #GnomeKeyringFound
- *
- * Free the memory used by a #GnomeKeyringFound item.
- *
- * You usually want to use gnome_keyring_found_list_free() on the list of
- * results.
- */
-void
-gnome_keyring_found_free (GnomeKeyringFound *found)
-{
- g_free (found->keyring);
- gnome_keyring_free_password (found->secret);
- gnome_keyring_attribute_list_free (found->attributes);
- g_free (found);
-}
-
-/**
- * gnome_keyring_found_list_free:
- * @found_list: a #GList of #GnomeKeyringFound
- *
- * Free the memory used by the #GnomeKeyringFound items in @found_list.
- */
-void
-gnome_keyring_found_list_free (GList *found_list)
-{
- g_list_foreach (found_list, (GFunc) gnome_keyring_found_free, NULL);
- g_list_free (found_list);
-}
-
-/**
- * gnome_keyring_attribute_list_append_string:
- * @attributes: A #GnomeKeyringAttributeList
- * @name: The name of the new attribute
- * @value: The value to store in @attributes
- *
- * Store a key-value-pair with a string value in @attributes.
- */
-void
-gnome_keyring_attribute_list_append_string (GnomeKeyringAttributeList *attributes,
- const char *name, const char *value)
-{
- GnomeKeyringAttribute attribute;
-
- attribute.name = g_strdup (name);
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (value);
-
- g_array_append_val (attributes, attribute);
-}
-
-/**
- * gnome_keyring_attribute_list_append_uint32:
- * @attributes: A #GnomeKeyringAttributeList
- * @name: The name of the new attribute
- * @value: The value to store in @attributes
- *
- * Store a key-value-pair with an unsigned 32bit number value in @attributes.
- */
-void
-gnome_keyring_attribute_list_append_uint32 (GnomeKeyringAttributeList *attributes,
- const char *name, guint32 value)
-{
- GnomeKeyringAttribute attribute;
-
- attribute.name = g_strdup (name);
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32;
- attribute.value.integer = value;
- g_array_append_val (attributes, attribute);
-}
-
-/**
- * gnome_keyring_attribute_list_free:
- * @attributes: A #GnomeKeyringAttributeList
- *
- * Free the memory used by @attributes.
- *
- * If a %NULL pointer is passed, it is ignored.
- **/
-void
-gnome_keyring_attribute_list_free (GnomeKeyringAttributeList *attributes)
-{
- GnomeKeyringAttribute *array;
- int i;
-
- if (attributes == NULL) {
- return;
- }
-
- array = (GnomeKeyringAttribute *)attributes->data;
- for (i = 0; i < attributes->len; i++) {
- g_free (array[i].name);
- if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- g_free (array[i].value.string);
- }
- }
-
- g_array_free (attributes, TRUE);
-}
-
-/**
- * gnome_keyring_attribute_list_copy:
- * @attributes: A #GnomeKeyringAttributeList to copy.
- *
- * Copy a list of item attributes.
- *
- * Return value: The new #GnomeKeyringAttributeList
- **/
-GnomeKeyringAttributeList *
-gnome_keyring_attribute_list_copy (GnomeKeyringAttributeList *attributes)
-{
- GnomeKeyringAttribute *array;
- GnomeKeyringAttributeList *copy;
- int i;
-
- if (attributes == NULL) {
- return NULL;
- }
-
- copy = g_array_sized_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute), attributes->len);
-
- copy->len = attributes->len;
- memcpy (copy->data, attributes->data, sizeof (GnomeKeyringAttribute) * attributes->len);
-
- array = (GnomeKeyringAttribute *)copy->data;
- for (i = 0; i < copy->len; i++) {
- array[i].name = g_strdup (array[i].name);
- if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- array[i].value.string = g_strdup (array[i].value.string);
- }
- }
- return copy;
-}
-
-/**
- * gnome_keyring_info_free:
- * @keyring_info: The keyring info to free.
- *
- * Free a #GnomeKeyringInfo object. If a %NULL pointer is passed
- * nothing occurs.
- */
-void
-gnome_keyring_info_free (GnomeKeyringInfo *keyring_info)
-{
- g_free (keyring_info);
-}
-
-/**
- * gnome_keyring_info_copy:
- * @keyring_info: The keyring info to copy.
- *
- * Copy a #GnomeKeyringInfo object.
- *
- * Return value: The newly allocated #GnomeKeyringInfo. This must be freed with
- * gnome_keyring_info_free()
- */
-GnomeKeyringInfo *
-gnome_keyring_info_copy (GnomeKeyringInfo *keyring_info)
-{
- GnomeKeyringInfo *copy;
-
- copy = g_new (GnomeKeyringInfo, 1);
- memcpy (copy, keyring_info, sizeof (GnomeKeyringInfo));
-
- return copy;
-}
-
-/**
- * gnome_keyring_item_info_free:
- * @item_info: The keyring item info pointer.
- *
- * Free the #GnomeKeyringItemInfo object.
- *
- * A %NULL pointer may be passed, in which case it will be ignored.
- **/
-void
-gnome_keyring_item_info_free (GnomeKeyringItemInfo *item_info)
-{
- if (item_info != NULL) {
- g_free (item_info->display_name);
- gnome_keyring_free_password (item_info->secret);
- g_free (item_info);
- }
-}
-
-/**
- * gnome_keyring_item_info_new:
- *
- * Create a new #GnomeKeyringItemInfo object.
- * Free the #GnomeKeyringItemInfo object.
- *
- * Return value: A keyring item info pointer.
- **/
-GnomeKeyringItemInfo *
-gnome_keyring_item_info_new (void)
-{
- GnomeKeyringItemInfo *info;
-
- info = g_new0 (GnomeKeyringItemInfo, 1);
-
- info->type = GNOME_KEYRING_ITEM_NO_TYPE;
-
- return info;
-}
-
-/**
- * gnome_keyring_item_info_copy:
- * @item_info: A keyring item info pointer.
- *
- * Copy a #GnomeKeyringItemInfo object.
- *
- * Return value: A keyring item info pointer.
- **/
-GnomeKeyringItemInfo *
-gnome_keyring_item_info_copy (GnomeKeyringItemInfo *item_info)
-{
- GnomeKeyringItemInfo *copy;
-
- copy = g_new (GnomeKeyringItemInfo, 1);
- memcpy (copy, item_info, sizeof (GnomeKeyringItemInfo));
-
- copy->display_name = g_strdup (copy->display_name);
- copy->secret = gkr_secure_strdup (copy->secret);
-
- return copy;
-}
-
-/**
- * gnome_keyring_application_ref_new:
- *
- * Create a new application reference.
- *
- * Return value: A new #GnomeKeyringApplicationRef pointer.
- **/
-GnomeKeyringApplicationRef *
-gnome_keyring_application_ref_new (void)
-{
- GnomeKeyringApplicationRef *app_ref;
-
- app_ref = g_new0 (GnomeKeyringApplicationRef, 1);
-
- return app_ref;
-}
-
-/**
- * gnome_keyring_application_ref_free:
- * @app: A #GnomeKeyringApplicationRef pointer
- *
- * Free an application reference.
- **/
-void
-gnome_keyring_application_ref_free (GnomeKeyringApplicationRef *app)
-{
- if (app) {
- g_free (app->display_name);
- g_free (app->pathname);
- g_free (app);
- }
-}
-
-/**
- * gnome_keyring_application_ref_copy:
- * @app: A #GnomeKeyringApplicationRef pointer
- *
- * Copy an application reference.
- *
- * Return value: A new #GnomeKeyringApplicationRef pointer.
- **/
-GnomeKeyringApplicationRef *
-gnome_keyring_application_ref_copy (const GnomeKeyringApplicationRef *app)
-{
- GnomeKeyringApplicationRef *copy;
-
- copy = g_new (GnomeKeyringApplicationRef, 1);
- copy->display_name = g_strdup (app->display_name);
- copy->pathname = g_strdup (app->pathname);
-
- return copy;
-}
-
-/**
- * gnome_keyring_access_control_new:
- * @application: A #GnomeKeyringApplicationRef pointer
- * @types_allowed: Access types allowed.
- *
- * Create a new access control for an item. Combine the various access
- * rights allowed.
- *
- * Return value: The new #GnomeKeyringAccessControl pointer. Use
- * gnome_keyring_access_control_free() to free the memory.
- **/
-GnomeKeyringAccessControl *
-gnome_keyring_access_control_new (const GnomeKeyringApplicationRef *application,
- GnomeKeyringAccessType types_allowed)
-{
- GnomeKeyringAccessControl *ac;
- ac = g_new (GnomeKeyringAccessControl, 1);
-
- ac->application = gnome_keyring_application_ref_copy (application);
- ac->types_allowed = types_allowed;
-
- return ac;
-}
-
-/**
- * gnome_keyring_access_control_free:
- * @ac: A #GnomeKeyringAccessControl pointer
- *
- * Free an access control for an item.
- **/
-void
-gnome_keyring_access_control_free (GnomeKeyringAccessControl *ac)
-{
- gnome_keyring_application_ref_free (ac->application);
- g_free (ac);
-}
-
-/**
- * gnome_keyring_access_control_copy:
- * @ac: A #GnomeKeyringAcessControl pointer
- *
- * Copy an access control for an item.
- *
- * Return value: The new #GnomeKeyringAccessControl pointer. Use
- * gnome_keyring_access_control_free() to free the memory.
- **/
-GnomeKeyringAccessControl *
-gnome_keyring_access_control_copy (GnomeKeyringAccessControl *ac)
-{
- GnomeKeyringAccessControl *ret;
-
- ret = gnome_keyring_access_control_new (gnome_keyring_application_ref_copy (ac->application), ac->types_allowed);
-
- return ret;
-}
-
-/**
- * gnome_keyring_acl_copy:
- * @list: A list of #GnomeKeyringAccessControl pointers.
- *
- * Copy an access control list.
- *
- * Return value: A new list of #GnomeKeyringAccessControl items. Use
- * gnome_keyring_acl_free() to free the memory.
- */
-GList *
-gnome_keyring_acl_copy (GList *list)
-{
- GList *ret, *l;
-
- ret = g_list_copy (list);
- for (l = ret; l != NULL; l = l->next) {
- l->data = gnome_keyring_access_control_copy (l->data);
- }
-
- return ret;
-}
-
-/**
- * gnome_keyring_acl_free:
- * @acl: A list of #GnomeKeyringAccessControl pointers.
- *
- * Free an access control list.
- */
-void
-gnome_keyring_acl_free (GList *acl)
-{
- g_list_foreach (acl, (GFunc)gnome_keyring_access_control_free, NULL);
- g_list_free (acl);
-}
-
diff --git a/library/gnome-keyring.c b/library/gnome-keyring.c
deleted file mode 100644
index 8e363fa9..00000000
--- a/library/gnome-keyring.c
+++ /dev/null
@@ -1,4440 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring.c - library for talking to the keyring daemon.
-
- Copyright (C) 2003 Red Hat, Inc
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gnome-keyring.h"
-#include "gnome-keyring-memory.h"
-#include "gnome-keyring-private.h"
-#include "gnome-keyring-proto.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-unix-credentials.h"
-
-#include <time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/uio.h>
-#include <sys/un.h>
-#include <stdarg.h>
-
-#ifdef WITH_DBUS
-#include <dbus/dbus.h>
-#endif
-
-typedef enum {
- CALLBACK_DONE,
- CALLBACK_GET_STRING,
- CALLBACK_GET_INT,
- CALLBACK_GET_LIST,
- CALLBACK_GET_KEYRING_INFO,
- CALLBACK_GET_ITEM_INFO,
- CALLBACK_GET_ATTRIBUTES,
- CALLBACK_GET_ACL
-} KeyringCallbackType;
-
-typedef enum {
- STATE_FAILED,
- STATE_WRITING_CREDS,
- STATE_WRITING_PACKET,
- STATE_READING_REPLY
-} KeyringState;
-
-typedef struct GnomeKeyringOperation GnomeKeyringOperation;
-
-#define NORMAL_ALLOCATOR ((GkrBufferAllocator)g_realloc)
-#define SECURE_ALLOCATOR ((GkrBufferAllocator)gnome_keyring_memory_realloc)
-
-typedef gboolean (*KeyringHandleReply) (GnomeKeyringOperation *op);
-
-struct GnomeKeyringOperation {
- int socket;
-
- KeyringState state;
- GnomeKeyringResult result;
-
- guint io_watch;
- guint idle_watch;
-
- GkrBuffer send_buffer;
- gsize send_pos;
-
- GkrBuffer receive_buffer;
- gsize receive_pos;
-
- KeyringCallbackType user_callback_type;
- gpointer user_callback;
- gpointer user_data;
- GDestroyNotify destroy_user_data;
-
- KeyringHandleReply reply_handler;
- gpointer reply_data;
- GDestroyNotify destroy_reply_data;
-};
-
-#ifdef WITH_DBUS
-
-static gchar*
-find_daemon_via_dbus ()
-{
- DBusConnection *dconn;
- DBusMessage *reply;
- DBusMessage *msg;
- DBusMessageIter args;
- DBusError derr;
- char* socket = NULL;
-
- dbus_error_init (&derr);
- dconn = dbus_bus_get (DBUS_BUS_SESSION, &derr);
- if (!dconn) {
- g_warning ("couldn't connect to dbus session bus: %s", derr.message);
- return NULL;
- }
-
- msg = dbus_message_new_method_call (GNOME_KEYRING_DAEMON_SERVICE,
- GNOME_KEYRING_DAEMON_PATH,
- GNOME_KEYRING_DAEMON_INTERFACE,
- "GetSocketPath");
- if (!msg) {
- g_warning ("couldn't create dbus message");
- dbus_connection_unref (dconn);
- return NULL;
- }
-
- /* Send message and get a handle for a reply */
- reply = dbus_connection_send_with_reply_and_block (dconn, msg, 1000, &derr);
- dbus_message_unref (msg);
- if (!reply) {
- g_warning ("couldn't communicate with gnome keyring daemon via dbus: %s", derr.message);
- dbus_connection_unref (dconn);
- return NULL;
- }
-
- /* Read the return value */
- if (!dbus_message_iter_init(reply, &args) ||
- dbus_message_iter_get_arg_type(&args) != DBUS_TYPE_STRING) {
- g_warning ("gnome-keyring-daemon sent back an invalid reply");
- } else {
- dbus_message_iter_get_basic(&args, &socket);
- socket = g_strdup (socket);
- }
-
- dbus_message_unref (reply);
- dbus_connection_unref (dconn);
-
- return socket;
-}
-
-#endif
-
-static int
-connect_to_daemon_at (const gchar *path)
-{
- struct sockaddr_un addr;
- int sock;
-
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, path, sizeof (addr.sun_path));
-
- sock = socket (AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- return -1;
- }
-
- /* close on exec */
- if (fcntl (sock, F_SETFD, 1) == -1) {
- close (sock);
- return -1;
- }
-
- if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0) {
- close (sock);
- return -1;
- }
-
- return sock;
-}
-
-static int
-connect_to_daemon (gboolean non_blocking)
-{
- const gchar *epath = NULL;
- int sock = -1;
- int val;
-
- /* Try using the environment variable */
- epath = g_getenv ("GNOME_KEYRING_SOCKET");
- if (epath && epath[0]) {
- sock = connect_to_daemon_at (epath);
- if (sock < 0) {
- g_warning ("couldn't connect to daemon at $GNOME_KEYRING_SOCKET: %s: %s",
- epath, g_strerror (errno));
- }
- }
-
-#ifdef WITH_DBUS
- /* Try using DBus to find daemon */
- if (sock < 0) {
- gchar *dpath = find_daemon_via_dbus ();
- if (dpath) {
- sock = connect_to_daemon_at (dpath);
- g_free (dpath);
- if (sock < 0) {
- g_warning ("couldn't connect to daemon at DBus discovered socket: %s: %s",
- dpath, g_strerror (errno));
- }
- }
- }
-#endif
-
- if (sock < 0)
- return -1;
-
- /* Setup non blocking */
- if (non_blocking) {
- val = fcntl (sock, F_GETFL, 0);
- if (val < 0) {
- close (sock);
- return -1;
- }
-
- if (fcntl (sock, F_SETFL, val | O_NONBLOCK) < 0) {
- close (sock);
- return -1;
- }
- }
-
- return sock;
-}
-
-static void
-operation_free (GnomeKeyringOperation *op)
-{
- if (op->idle_watch != 0) {
- g_source_remove (op->idle_watch);
- op->idle_watch = 0;
- }
- if (op->io_watch != 0) {
- g_source_remove (op->io_watch);
- op->io_watch = 0;
- }
- if (op->destroy_user_data != NULL && op->user_data != NULL)
- (*op->destroy_user_data) (op->user_data);
- if (op->destroy_reply_data != NULL && op->reply_data != NULL)
- (*op->destroy_reply_data) (op->reply_data);
- gkr_buffer_uninit (&op->send_buffer);
- gkr_buffer_uninit (&op->receive_buffer);
-
- shutdown (op->socket, SHUT_RDWR);
- close (op->socket);
- g_free (op);
-}
-
-static gboolean
-op_failed (gpointer data)
-{
- GnomeKeyringOperation *op;
-
- op = data;
- op->idle_watch = 0;
-
- switch (op->user_callback_type) {
- case CALLBACK_DONE:
- ((GnomeKeyringOperationDoneCallback)op->user_callback) (op->result, op->user_data);
- break;
- case CALLBACK_GET_STRING:
- ((GnomeKeyringOperationGetStringCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- case CALLBACK_GET_INT:
- ((GnomeKeyringOperationGetIntCallback)op->user_callback) (op->result, 0, op->user_data);
- break;
- case CALLBACK_GET_LIST:
- ((GnomeKeyringOperationGetListCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- case CALLBACK_GET_KEYRING_INFO:
- ((GnomeKeyringOperationGetKeyringInfoCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- case CALLBACK_GET_ITEM_INFO:
- ((GnomeKeyringOperationGetItemInfoCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- case CALLBACK_GET_ATTRIBUTES:
- ((GnomeKeyringOperationGetAttributesCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- case CALLBACK_GET_ACL:
- ((GnomeKeyringOperationGetListCallback)op->user_callback) (op->result, NULL, op->user_data);
- break;
- }
-
- operation_free (op);
-
- /* Don't run idle handler again */
- return FALSE;
-}
-
-
-static void
-schedule_op_failed (GnomeKeyringOperation *op,
- GnomeKeyringResult result)
-{
- if (op->io_watch != 0) {
- g_source_remove (op->io_watch);
- op->io_watch = 0;
- }
- op->state = STATE_FAILED;
- op->result = result;
-
- if (op->idle_watch == 0)
- op->idle_watch = g_idle_add (op_failed, op);
-}
-
-static int
-read_all (int fd, guchar *buf, size_t len)
-{
- size_t bytes;
- ssize_t res;
-
- bytes = 0;
- while (bytes < len) {
- res = read (fd, buf + bytes, len - bytes);
- if (res <= 0) {
- if (res == 0)
- res = -1;
- else if (errno == EAGAIN)
- continue;
- else
- g_warning ("couldn't read %u bytes from gnome-keyring socket: %s",
- (unsigned int)len, g_strerror (errno));
- return res;
- }
- bytes += res;
- }
- return 0;
-}
-
-
-static int
-write_all (int fd, const guchar *buf, size_t len)
-{
- size_t bytes;
- ssize_t res;
-
- bytes = 0;
- while (bytes < len) {
- res = write (fd, buf + bytes, len - bytes);
- if (res < 0) {
- if (errno != EINTR &&
- errno != EAGAIN) {
- perror ("write_all write failure:");
- return -1;
- }
- } else {
- bytes += res;
- }
- }
- return 0;
-}
-
-static GnomeKeyringResult
-write_credentials_byte_sync (int socket)
-{
- if (gkr_unix_credentials_write (socket) < 0)
- return GNOME_KEYRING_RESULT_IO_ERROR;
- return GNOME_KEYRING_RESULT_OK;
-}
-
-static void
-write_credentials_byte (GnomeKeyringOperation *op)
-{
- if (gkr_unix_credentials_write (op->socket) < 0) {
- if (errno == EAGAIN)
- return;
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- return;
- }
-
- op->state = STATE_WRITING_PACKET;
-}
-
-static gboolean
-operation_io (GIOChannel *io_channel,
- GIOCondition cond,
- gpointer callback_data)
-{
- GIOChannel *channel;
- GnomeKeyringOperation *op;
- int res;
- guint32 packet_size;
-
- op = callback_data;
-
- if (cond & G_IO_HUP && !(cond & G_IO_IN)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- }
-
- if (op->state == STATE_WRITING_CREDS && (cond & G_IO_OUT)) {
- write_credentials_byte (op);
- }
- if (op->state == STATE_WRITING_PACKET && (cond & G_IO_OUT)) {
- res = write (op->socket,
- op->send_buffer.buf + op->send_pos,
- op->send_buffer.len - op->send_pos);
- if (res <= 0) {
- if (errno != EAGAIN &&
- errno != EINTR) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- }
- } else {
- op->send_pos += res;
-
- if (op->send_pos == op->send_buffer.len) {
- op->state = STATE_READING_REPLY;
- gkr_buffer_reset (&op->receive_buffer);
- op->receive_pos = 0;
-
- g_source_remove (op->io_watch);
- channel = g_io_channel_unix_new (op->socket);
- op->io_watch = g_io_add_watch (channel,
- G_IO_IN | G_IO_HUP,
- operation_io, op);
- g_io_channel_unref (channel);
- }
- }
- }
-
- if (op->state == STATE_READING_REPLY && (cond & G_IO_IN)) {
- if (op->receive_pos < 4) {
- gkr_buffer_resize (&op->receive_buffer, 4);
- res = read (op->socket,
- op->receive_buffer.buf + op->receive_pos,
- 4 - op->receive_pos);
- if (res <= 0) {
- if (errno != EAGAIN &&
- errno != EINTR) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- }
- } else {
- op->receive_pos += res;
- }
- }
-
- if (op->receive_pos >= 4) {
- if (!gkr_proto_decode_packet_size (&op->receive_buffer, &packet_size) ||
- packet_size < 4) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- }
-
- g_assert (op->receive_pos <= packet_size);
- gkr_buffer_resize (&op->receive_buffer, packet_size);
-
- res = read (op->socket, op->receive_buffer.buf + op->receive_pos,
- packet_size - op->receive_pos);
- if (res <= 0) {
- if (errno != EAGAIN &&
- errno != EINTR) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_IO_ERROR);
- }
- } else {
- op->receive_pos += res;
-
- if (op->receive_pos == packet_size) {
- op->result = GNOME_KEYRING_RESULT_OK;
-
- /* Only cleanup if the handler says we're done */
- if ((*op->reply_handler) (op)) {
- g_source_remove (op->io_watch);
- op->io_watch = 0;
- operation_free (op);
- }
- }
- }
- }
- }
-
-
- return TRUE;
-}
-
-
-static GnomeKeyringOperation*
-create_operation (gboolean receive_secure, gpointer callback,
- KeyringCallbackType callback_type, gpointer user_data,
- GDestroyNotify destroy_user_data)
-{
- GnomeKeyringOperation *op;
-
- op = g_new0 (GnomeKeyringOperation, 1);
-
- /* Start in failed mode */
- op->state = STATE_FAILED;
- op->result = GNOME_KEYRING_RESULT_OK;
-
- op->user_callback_type = callback_type;
- op->user_callback = callback;
- op->user_data = user_data;
- op->destroy_user_data = destroy_user_data;
- op->socket = -1;
-
- gkr_buffer_init_full (&op->send_buffer, 128, NORMAL_ALLOCATOR);
- gkr_buffer_init_full (&op->receive_buffer, 128,
- receive_secure ? SECURE_ALLOCATOR : NORMAL_ALLOCATOR);
-
- return op;
-}
-
-static void
-start_operation (GnomeKeyringOperation *op)
-{
- GIOChannel *channel;
-
- /* Start in failed mode */
- op->state = STATE_FAILED;
- op->result = GNOME_KEYRING_RESULT_OK;
-
- if (op->io_watch != 0) {
- g_source_remove (op->io_watch);
- op->io_watch = 0;
- }
- if (op->socket >= 0) {
- shutdown (op->socket, SHUT_RDWR);
- close (op->socket);
- }
-
- op->socket = connect_to_daemon (TRUE);
- if (op->socket < 0) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON);
- } else {
- op->state = STATE_WRITING_CREDS;
-
- gkr_buffer_reset (&op->receive_buffer);
- op->send_pos = 0;
-
- channel = g_io_channel_unix_new (op->socket);
- op->io_watch = g_io_add_watch (channel,
- G_IO_OUT | G_IO_HUP,
- operation_io, op);
- g_io_channel_unref (channel);
- }
-}
-
-static GnomeKeyringResult
-run_sync_operation (GkrBuffer *buffer,
- GkrBuffer *receive_buffer)
-{
- GnomeKeyringResult res;
- int socket;
- guint32 packet_size;
-
- g_assert (buffer != NULL);
- g_assert (receive_buffer != NULL);
-
- socket = connect_to_daemon (FALSE);
- if (socket < 0) {
- return GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON;
- }
- res = write_credentials_byte_sync (socket);
- if (res != GNOME_KEYRING_RESULT_OK) {
- close (socket);
- return res;
- }
-
- if (write_all (socket,
- buffer->buf, buffer->len) < 0) {
- close (socket);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
-
- gkr_buffer_resize (receive_buffer, 4);
- if (read_all (socket, receive_buffer->buf, 4) < 0) {
- close (socket);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
-
- if (!gkr_proto_decode_packet_size (receive_buffer, &packet_size) ||
- packet_size < 4) {
- close (socket);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_resize (receive_buffer, packet_size);
- if (read_all (socket, receive_buffer->buf + 4, packet_size - 4) < 0) {
- close (socket);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- close (socket);
-
- return GNOME_KEYRING_RESULT_OK;
-}
-
-/**
- * gnome_keyring_is_available:
- *
- * Check whether you can communicate with a gnome-keyring-daemon.
- *
- * Return value: %FALSE if you can't communicate with the daemon (so you
- * can't load and save passwords).
- **/
-gboolean
-gnome_keyring_is_available (void)
-{
- int socket;
-
- socket = connect_to_daemon (FALSE);
- if (socket < 0) {
- return FALSE;
- }
- close (socket);
- return TRUE;
-}
-
-/**
- * gnome_keyring_cancel_request:
- * @request: The request returned from the asynchronous call function.
- *
- * Cancel an asynchronous request.
- *
- * If a callback was registered when making the asynchronous request, that callback
- * function will be called with a result of %GNOME_KEYRING_RESULT_CANCELLED
- **/
-void
-gnome_keyring_cancel_request (gpointer request)
-{
- GnomeKeyringOperation *op;
-
- op = request;
-
- schedule_op_failed (op, GNOME_KEYRING_RESULT_CANCELLED);
-}
-
-static gboolean
-standard_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationDoneCallback callback;
-
- g_assert (op->user_callback_type == CALLBACK_DONE);
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_result_reply (&op->receive_buffer, &result)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, op->user_data);
- } else {
- (*callback) (result, op->user_data);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-static gboolean
-string_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetStringCallback callback;
- char *string;
-
- g_assert (op->user_callback_type == CALLBACK_GET_STRING);
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_result_string_reply (&op->receive_buffer, &result, &string)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, string, op->user_data);
- g_free (string);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-static gboolean
-int_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetIntCallback callback;
- guint32 integer;
-
- g_assert (op->user_callback_type == CALLBACK_GET_INT);
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_result_integer_reply (&op->receive_buffer, &result, &integer)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, 0, op->user_data);
- } else {
- (*callback) (result, integer, op->user_data);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_set_default_keyring:
- * @keyring: The keyring to make default
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Change the default keyring.
- *
- * For a synchronous version of this function see gnome_keyring_set_default_keyring_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_set_default_keyring (const gchar *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
- if (!gkr_proto_encode_op_string (&op->send_buffer, GNOME_KEYRING_OP_SET_DEFAULT_KEYRING,
- keyring)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_set_default_keyring_sync:
- * @keyring: The keyring to make default
- *
- * Change the default keyring.
- *
- * For an asynchronous version of this function see gnome_keyring_set_default_keyring().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_set_default_keyring_sync (const char *keyring)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_SET_DEFAULT_KEYRING,
- keyring)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_get_default_keyring:
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get the default keyring name, which will be passed to the @callback. If no
- * default keyring exists, then %NULL will be passed to the @callback. The
- * string will be freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_get_default_keyring_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_get_default_keyring (GnomeKeyringOperationGetStringCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_STRING, data, destroy_data);
- if (!gkr_proto_encode_op_only (&op->send_buffer, GNOME_KEYRING_OP_GET_DEFAULT_KEYRING)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = string_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_get_default_keyring_sync:
- * @keyring: Location for the default keyring name to be returned.
- *
- * Get the default keyring name.
- *
- * The string returned in @keyring must be freed with g_free().
- *
- * For an asynchronous version of this function see gnome_keyring_get_default_keyring().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_get_default_keyring_sync (char **keyring)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *keyring = NULL;
-
- if (!gkr_proto_encode_op_only (&send, GNOME_KEYRING_OP_GET_DEFAULT_KEYRING)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_string_reply (&receive, &res, keyring)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-static gboolean
-list_keyring_names_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetListCallback callback;
- GList *names;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_result_string_list_reply (&op->receive_buffer, &result, &names)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, names, op->user_data);
- gnome_keyring_string_list_free (names);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_list_keyring_names:
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get a list of keyring names.
- *
- * A %GList of null terminated strings will be passed to
- * the @callback. If no keyrings exist then an empty list will be passed to the
- * @callback. The list is freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_list_keyrings_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_list_keyring_names (GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_LIST, data, destroy_data);
- if (!gkr_proto_encode_op_only (&op->send_buffer,
- GNOME_KEYRING_OP_LIST_KEYRINGS)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = list_keyring_names_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_list_keyring_names_sync:
- * @keyrings: Location for a %GList of keyring names to be returned.
- *
- * Get a list of keyring names.
- *
- * The list returned in in @keyrings must be freed using
- * gnome_keyring_string_list_free().
- *
- * For an asynchronous version of this function see gnome_keyring_list_keyring_names().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_list_keyring_names_sync (GList **keyrings)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *keyrings = NULL;
-
- if (!gkr_proto_encode_op_only (&send, GNOME_KEYRING_OP_LIST_KEYRINGS)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_string_list_reply (&receive, &res, keyrings)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_lock_all:
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Lock all the keyrings, so that their contents may not be accessed without
- * first unlocking them with a password.
- *
- * For a synchronous version of this function see gnome_keyring_lock_all_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_lock_all (GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
- if (!gkr_proto_encode_op_only (&op->send_buffer, GNOME_KEYRING_OP_LOCK_ALL)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_lock_all_sync:
- *
- * Lock all the keyrings, so that their contents may not eb accessed without
- * first unlocking them with a password.
- *
- * For an asynchronous version of this function see gnome_keyring_lock_all().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_lock_all_sync (void)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_only (&send, GNOME_KEYRING_OP_LOCK_ALL)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_create:
- * @keyring_name: The new keyring name. Must not be %NULL.
- * @password: The password for the new keyring. If %NULL user will be prompted.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Create a new keyring with the specified name. In most cases %NULL will be
- * passed as the @password, which will prompt the user to enter a password
- * of their choice.
- *
- * For a synchronous version of this function see gnome_keyring_create_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_create (const char *keyring_name,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!gkr_proto_encode_op_string_secret (&op->send_buffer, GNOME_KEYRING_OP_CREATE_KEYRING,
- keyring_name, password)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_create_sync:
- * @keyring_name: The new keyring name. Must not be %NULL
- * @password: The password for the new keyring. If %NULL user will be prompted.
- *
- * Create a new keyring with the specified name. In most cases %NULL will be
- * passed in as the @password, which will prompt the user to enter a password
- * of their choice.
-
- * For an asynchronous version of this function see gnome_keyring_create().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_create_sync (const char *keyring_name,
- const char *password)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, SECURE_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string_secret (&send, GNOME_KEYRING_OP_CREATE_KEYRING,
- keyring_name, password)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_unlock:
- * @keyring: The name of the keyring to unlock, or %NULL for the default keyring.
- * @password: The password to unlock the keyring with, or %NULL to prompt the user.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Unlock a @keyring, so that its contents may be accessed. In most cases %NULL
- * will be passed as the @password, which will prompt the user to enter the
- * correct password.
- *
- * Most keyring operations involving items require that you first unlock the
- * keyring. One exception is gnome_keyring_find_items() and related functions.
- *
- * For a synchronous version of this function see gnome_keyring_unlock_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_unlock (const char *keyring,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!gkr_proto_encode_op_string_secret (&op->send_buffer, GNOME_KEYRING_OP_UNLOCK_KEYRING,
- keyring, password)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_unlock_sync:
- * @keyring_name: The name of the keyring to unlock, or %NULL for the default keyring.
- * @password: The password to unlock the keyring with, or %NULL to prompt the user.
- *
- * Unlock a @keyring, so that its contents may be accessed. In most cases %NULL
- * will be passed in as the @password, which will prompt the user to enter the
- * correct password.
- *
- * Most keyring opretaions involving items require that yo ufirst unlock the
- * keyring. One exception is gnome_keyring_find_items_sync() and related functions.
- *
- * For an asynchronous version of this function see gnome_keyring_unlock().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_unlock_sync (const char *keyring,
- const char *password)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- /* Use secure non-pageable buffer */
- gkr_buffer_init_full (&send, 128, SECURE_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string_secret (&send, GNOME_KEYRING_OP_UNLOCK_KEYRING,
- keyring, password)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_lock:
- * @keyring: The name of the keyring to lock, or %NULL for the default keyring.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Lock a @keyring, so that its contents may not be accessed without first
- * supplying a password.
- *
- * Most keyring operations involving items require that you first unlock the
- * keyring. One exception is gnome_keyring_find_items() and related functions.
- *
- * For a synchronous version of this function see gnome_keyring_lock_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_lock (const char *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_op_string (&op->send_buffer, GNOME_KEYRING_OP_LOCK_KEYRING,
- keyring)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_unlock_sync:
- * @keyring: The name of the keyring to lock, or %NULL for the default keyring.
- *
- * Lock a @keyring, so that its contents may not be accessed without first
- * supplying a password.
- *
- * Most keyring opretaions involving items require that you first unlock the
- * keyring. One exception is gnome_keyring_find_items_sync() and related functions.
- *
- * For an asynchronous version of this function see gnome_keyring_lock().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_lock_sync (const char *keyring)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_LOCK_KEYRING,
- keyring)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_delete:
- * @keyring: The name of the keyring to delete. Cannot be %NULL.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Delete @keyring. Once a keyring is deleted there is no mechanism for
- * recovery of its contents.
- *
- * For a synchronous version of this function see gnome_keyring_delete_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_delete (const char *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_op_string (&op->send_buffer, GNOME_KEYRING_OP_DELETE_KEYRING,
- keyring)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_delete_sync:
- * @keyring: The name of the keyring to delete. Cannot be %NULL
- *
- * Delete @keyring. Once a keyring is deleted there is no mechanism for
- * recovery of its contents.
- *
- * For an asynchronous version of this function see gnome_keyring_delete().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_delete_sync (const char *keyring)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_DELETE_KEYRING,
- keyring)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_change_password:
- * @keyring: The name of the keyring to change the password for. Cannot be %NULL.
- * @original: The old keyring password, or %NULL to prompt the user for it.
- * @password: The new keyring password, or %NULL to prompt the user for it.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Change the password for a @keyring. In most cases you would specify %NULL for
- * both the @original and @password arguments and allow the user to type the
- * correct passwords.
- *
- * For a synchronous version of this function see gnome_keyring_change_password_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_change_password (const char *keyring,
- const char *original,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!gkr_proto_encode_op_string_secret_secret (&op->send_buffer,
- GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD,
- keyring, original, password)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
-
- return op;
-}
-
-
-/**
- * gnome_keyring_change_password_sync:
- * @keyring: The name of the keyring to change the password for. Cannot be %NULL
- * @original: The old keyring password, or %NULL to prompt the user for it.
- * @password: The new keyring password, or %NULL to prompt the user for it.
- *
- * Change the password for @keyring. In most cases you would specify %NULL for
- * both the @original and @password arguments and allow the user to type the
- * correct passwords.
- *
- * For an asynchronous version of this function see gnome_keyring_change_password().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_change_password_sync (const char *keyring_name,
- const char *original, const char *password)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, SECURE_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string_secret_secret (&send,
- GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD,
- keyring_name, original, password)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-static gboolean
-get_keyring_info_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetKeyringInfoCallback callback;
- GnomeKeyringInfo *info;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_get_keyring_info_reply (&op->receive_buffer, &result, &info)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, info, op->user_data);
- gnome_keyring_info_free (info);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_get_info:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get information about the @keyring. The resulting #GnomeKeyringInfo structure
- * will be passed to @callback. The structure is freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_get_info_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_get_info (const char *keyring,
- GnomeKeyringOperationGetKeyringInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_KEYRING_INFO, data, destroy_data);
-
- if (!gkr_proto_encode_op_string (&op->send_buffer, GNOME_KEYRING_OP_GET_KEYRING_INFO,
- keyring)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = get_keyring_info_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_get_info_sync:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @info: Location for the information about the keyring to be returned.
- *
- * Get information about @keyring.
- *
- * The #GnomeKeyringInfo structure returned in @info must be freed with
- * gnome_keyring_info_free().
- *
- * For an asynchronous version of this function see gnome_keyring_get_info().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_get_info_sync (const char *keyring,
- GnomeKeyringInfo **info)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *info = NULL;
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_GET_KEYRING_INFO,
- keyring)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_get_keyring_info_reply (&receive, &res, info)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_set_info:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @info: A structure containing flags and info for the keyring.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Set flags and info for the @keyring. The only fields in @info that are used
- * are %lock_on_idle and %lock_timeout.
- *
- * For a synchronous version of this function see gnome_keyring_set_info_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_set_info (const char *keyring,
- GnomeKeyringInfo *info,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_set_keyring_info (&op->send_buffer, keyring, info)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_set_info_sync:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @info: A structure containing flags and info for the keyring.
- *
- * Set flags and info for @keyring. The only fields in @info that are used
- * are %lock_on_idle and %lock_timeout.
- *
- * For an asynchronous version of this function see gnome_keyring_set_info().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_set_info_sync (const char *keyring,
- GnomeKeyringInfo *info)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_set_keyring_info (&send, keyring, info)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-static gboolean
-list_item_ids_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetListCallback callback;
- GList *items;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_result_int_list_reply (&op->receive_buffer, &result, &items)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, items, op->user_data);
- g_list_free (items);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_list_item_ids:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get a list of all the ids for items in @keyring. These are passed in a %GList
- * to the @callback. Use GPOINTER_TO_UINT() on the list to access the integer ids.
- * The list is freed after @callback returns.
- *
- * All items that are not flagged as %GNOME_KEYRING_ITEM_APPLICATION_SECRET are
- * included in the list. This includes items that the calling application may not
- * (yet) have access to.
- *
- * For a synchronous version of this function see gnome_keyring_list_item_ids_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_list_item_ids (const char *keyring,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_LIST, data, destroy_data);
-
- if (!gkr_proto_encode_op_string (&op->send_buffer, GNOME_KEYRING_OP_LIST_ITEMS,
- keyring)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = list_item_ids_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_list_item_ids_sync:
- * @keyring: The name of the keyring, or %NULL for the default keyring.
- * @ids: The location to store a %GList of item ids (ie: unsigned integers).
- *
- * Get a list of all the ids for items in @keyring.
- *
- * Use GPOINTER_TO_UINT() on the list to access the integer ids. The list
- * should be freed with g_list_free().
- *
- * For an asynchronous version of this function see gnome_keyring_list_item_ids().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_list_item_ids_sync (const char *keyring,
- GList **ids)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *ids = NULL;
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_LIST_ITEMS,
- keyring)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_int_list_reply (&receive, &res, ids)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_daemon_set_display_sync:
- * @display: Deprecated
- *
- * Deprecated. Use gnome_keyring_daemon_prepare_environment_sync()
- **/
-GnomeKeyringResult
-gnome_keyring_daemon_set_display_sync (const char *display)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string (&send, GNOME_KEYRING_OP_SET_DAEMON_DISPLAY,
- display)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_reply (&receive, &res)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_daemon_prepare_environment_sync:
- *
- * Used by session managers or applications that manage the gnome-keyring-daemon
- * process. Prepares the environment of both the daemon and the application
- * for successful communication.
- *
- * This includes telling the daemon the DBUS addresses, X display and related
- * information to use for communication and display. This information is only
- * used by the daemon if it does not already have it. For example the X display
- * of the daemon cannot be changed using this call.
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_daemon_prepare_environment_sync (void)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
- gchar **envp, **e, *name;
- gchar **parts;
- gboolean ret;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- /* Get all the environment names */
- envp = g_listenv ();
- g_return_val_if_fail (envp, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
-
- /* Transform them into NAME=VALUE pairs */
- for (e = envp; *e; ++e) {
- name = *e;
- *e = g_strdup_printf ("%s=%s", name, g_getenv (name));
- g_free (name);
- }
-
- ret = gkr_proto_encode_prepare_environment (&send, (const gchar**)envp);
- g_strfreev (envp);
-
- if (!ret) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_prepare_environment_reply (&receive, &res, &envp)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- if (res == GNOME_KEYRING_RESULT_OK) {
- g_return_val_if_fail (envp, GNOME_KEYRING_RESULT_IO_ERROR);
- for (e = envp; *e; ++e) {
- parts = g_strsplit (*e, "=", 2);
- if (parts && parts[0] && parts[1])
- g_setenv (parts[0], parts[1], TRUE);
- g_strfreev (parts);
- }
- }
-
- g_strfreev (envp);
-
- return res;
-}
-
-/**
- * gnome_keyring_info_set_lock_on_idle:
- * @keyring_info: The keyring info.
- * @value: Whether to lock or not.
- *
- * Set whether or not to lock a keyring after a certain amount of idle time.
- *
- * See also gnome_keyring_info_set_lock_timeout().
- */
-void
-gnome_keyring_info_set_lock_on_idle (GnomeKeyringInfo *keyring_info,
- gboolean value)
-{
- keyring_info->lock_on_idle = value;
-}
-
-/**
- * gnome_keyring_info_get_lock_on_idle:
- * @keyring_info: The keyring info.
- *
- * Get whether or not to lock a keyring after a certain amount of idle time.
- *
- * See also gnome_keyring_info_get_lock_timeout().
- *
- * Return value: Whether to lock or not.
- */
-gboolean
-gnome_keyring_info_get_lock_on_idle (GnomeKeyringInfo *keyring_info)
-{
- return keyring_info->lock_on_idle;
-}
-
-/**
- * gnome_keyring_info_set_lock_timeout:
- * @keyring_info: The keyring info.
- * @value: The lock timeout in seconds.
- *
- * Set the idle timeout, in seconds, after which to lock the keyring.
- *
- * See also gnome_keyring_info_set_lock_on_idle().
- */
-void
-gnome_keyring_info_set_lock_timeout (GnomeKeyringInfo *keyring_info,
- guint32 value)
-{
- keyring_info->lock_timeout = value;
-}
-
-/**
- * gnome_keyring_info_get_lock_timeout:
- * @keyring_info: The keyring info.
- *
- * Get the idle timeout, in seconds, after which to lock the keyring.
- *
- * See also gnome_keyring_info_get_lock_on_idle().
- *
- * Return value: The idle timeout, in seconds.
- */
-guint32
-gnome_keyring_info_get_lock_timeout (GnomeKeyringInfo *keyring_info)
-{
- return keyring_info->lock_timeout;
-}
-
-/**
- * gnome_keyring_info_get_mtime:
- * @keyring_info: The keyring info.
- *
- * Get the time at which the keyring was last modified.
- *
- * Return value: The last modified time.
- */
-time_t
-gnome_keyring_info_get_mtime (GnomeKeyringInfo *keyring_info)
-{
- return keyring_info->mtime;
-}
-
-/**
- * gnome_keyring_info_get_ctime:
- * @keyring_info: The keyring info.
- *
- * Get the time at which the keyring was created.
- *
- * Return value: The created time.
- */
-time_t
-gnome_keyring_info_get_ctime (GnomeKeyringInfo *keyring_info)
-{
- return keyring_info->ctime;
-}
-
-/**
- * gnome_keyring_info_get_is_locked:
- * @keyring_info: The keyring info.
- *
- * Get whether the keyring is locked or not.
- *
- * Return value: Whether the keyring is locked or not.
- */
-gboolean
-gnome_keyring_info_get_is_locked (GnomeKeyringInfo *keyring_info)
-{
- return keyring_info->is_locked;
-}
-
-static gboolean
-find_items_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetListCallback callback;
- GList *found_items;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_find_reply (&op->receive_buffer, &result, &found_items)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, found_items, op->user_data);
- gnome_keyring_found_list_free (found_items);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_find_items:
- * @type: The type of items to find.
- * @attributes: A list of attributes to search for. This cannot be an empty list.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Searches through all keyrings for items that match the @attributes. The matches
- * are for exact equality.
- *
- * A %GList of GnomeKeyringFound structures are passed to the @callback. The
- * list and structures are freed after the callback returns.
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * For a synchronous version of this function see gnome_keyring_find_items_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_find_items (GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- /* Use a secure receive buffer */
- op = create_operation (TRUE, callback, CALLBACK_GET_LIST, data, destroy_data);
-
- if (!gkr_proto_encode_find (&op->send_buffer, type, attributes)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = find_items_reply;
- start_operation (op);
- return op;
-}
-
-
-static GnomeKeyringAttributeList *
-make_attribute_list_va (va_list args)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
- char *str;
- guint32 val;
-
- attributes = g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
-
- while ((attribute.name = va_arg (args, char *)) != NULL) {
- attribute.type = va_arg (args, GnomeKeyringAttributeType);
-
- switch (attribute.type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- str = va_arg (args, char *);
- attribute.value.string = str;
- g_array_append_val (attributes, attribute);
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- val = va_arg (args, guint32);
- attribute.value.integer = val;
- g_array_append_val (attributes, attribute);
- break;
- default:
- g_array_free (attributes, TRUE);
- return NULL;
- }
- }
- return attributes;
-}
-
-/**
- * gnome_keyring_find_itemsv:
- * @type: The type of items to find.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Searches through all keyrings for items that match the specified attributes.
- * The matches are for exact equality.
- *
- * The variable argument list should contain a) The attribute name as a null
- * terminated string, followed by b) The attribute type, either
- * %GNOME_KEYRING_ATTRIBUTE_TYPE_STRING or %GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
- * and then the c) attribute value, either a character string, or 32-bit
- * unsigned int. The list should be terminated with a NULL.
- *
- * A %GList of GnomeKeyringFound structures are passed to the @callback. The
- * list and structures are freed after the callback returns.
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * For a synchronous version of this function see gnome_keyring_find_itemsv_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_find_itemsv (GnomeKeyringItemType type,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data,
- ...)
-{
- GnomeKeyringOperation *op;
- GnomeKeyringAttributeList *attributes;
- va_list args;
-
- /* Use a secure receive buffer */
- op = create_operation (TRUE, callback, CALLBACK_GET_LIST, data, destroy_data);
-
- va_start (args, destroy_data);
- attributes = make_attribute_list_va (args);
- va_end (args);
- if (attributes == NULL) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- return op;
- }
-
- if (!gkr_proto_encode_find (&op->send_buffer, type, attributes)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
- g_array_free (attributes, TRUE);
-
- op->reply_handler = find_items_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_find_items_sync:
- * @type: The type of items to find.
- * @attributes: A list of attributes to search for. This cannot be an empty list.
- * @found: The location to return a list of #GnomeKeyringFound pointers.
- *
- * Searches through all keyrings for items that match the @attributes and @type.
- * The matches are for exact equality.
- *
- * A %GList of GnomeKeyringFound structures is returned in @found. The list may
- * have zero items if nothing matched the criteria. The list should be freed
- * using gnome_keyring_found_list_free().
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * For an asynchronous version of this function see gnome_keyring_find_items().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_find_items_sync (GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes,
- GList **found)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *found = NULL;
-
- if (!gkr_proto_encode_find (&send, type, attributes)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- /* Use a secure receive buffer */
- gkr_buffer_init_full (&receive, 128, SECURE_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_find_reply (&receive, &res, found)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_find_itemsv_sync:
- * @type: The type of items to find.
- * @found: The location to return a list of #GnomeKeyringFound pointers.
- *
- * Searches through all keyrings for items that match the @attributes and @type.
- * The matches are for exact equality.
- *
- * The variable argument list should contain a) The attribute name as a null
- * terminated string, followed by b) The attribute type, either
- * %GNOME_KEYRING_ATTRIBUTE_TYPE_STRING or %GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
- * and then the c) attribute value, either a character string, or 32-bit
- * unsigned int. The list should be terminated with a NULL.
- *
- * A %GList of GnomeKeyringFound structures is returned in @found. The list may
- * have zero items if nothing matched the criteria. The list should be freed
- * using gnome_keyring_found_list_free().
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * For an asynchronous version of this function see gnome_keyring_find_items().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_find_itemsv_sync (GnomeKeyringItemType type,
- GList **found,
- ...)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringResult res;
- va_list args;
-
- va_start (args, found);
- attributes = make_attribute_list_va (args);
- va_end (args);
- if (attributes == NULL) {
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- res = gnome_keyring_find_items_sync (type, attributes, found);
- g_array_free (attributes, TRUE);
- return res;
-}
-
-/**
- * gnome_keyring_item_create:
- * @keyring: The name of the keyring in which to create the item, or NULL for the default keyring.
- * @type: The item type.
- * @display_name: The name of the item. This will be displayed to the user where necessary.
- * @attributes: A (possibly empty) list of attributes to store with the item.
- * @secret: The password or secret of the item.
- * @update_if_exists: If true, then another item matching the type, and attributes
- * will be updated instead of creating a new item.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Create a new item in a keyring.
- *
- * The @secret must be a null terminated string. It should be allocated using secure
- * memory whenever possible. See gnome_keyring_memory_strdup()
- *
- * The user may have been prompted to unlock necessary keyrings. If %NULL is
- * specified as the @keyring and no default keyring exists, the user will be
- * prompted to create a new keyring.
- *
- * When @update_if_exists is set to %TRUE, the user may be prompted for access
- * to the previously existing item.
- *
- * Whether a new item is created or not, id of the item will be passed to
- * the @callback.
- *
- * For a synchronous version of this function see gnome_keyring_item_create_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_create (const char *keyring,
- GnomeKeyringItemType type,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret,
- gboolean update_if_exists,
- GnomeKeyringOperationGetIntCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_INT, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!gkr_proto_encode_create_item (&op->send_buffer, keyring, display_name,
- attributes, secret, type, update_if_exists)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = int_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_create_sync():
- * @keyring: The name of the keyring in which to create the item, or NULL for the default keyring.
- * @type: The item type.
- * @display_name: The name of the item. This will be displayed to the user where necessary.
- * @attributes: A (possibly empty) list of attributes to store with the item.
- * @secret: The password or secret of the item.
- * @update_if_exists: If true, then another item matching the type, and attributes
- * will be updated instead of creating a new item.
- * @item_id: return location for the id of the created/updated keyring item.
- *
- * Create a new item in a keyring.
- *
- * The @secret must be a null terminated string. It should be allocated using secure
- * memory whenever possible. See gnome_keyring_memory_strdup()
- *
- * The user may have been prompted to unlock necessary keyrings. If %NULL is
- * specified as the @keyring and no default keyring exists, the user will be
- * prompted to create a new keyring.
- *
- * When @update_if_exists is set to %TRUE, the user may be prompted for access
- * to the previously existing item.
- *
- * For an asynchronous version of this function see gnome_keyring_create().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_create_sync (const char *keyring,
- GnomeKeyringItemType type,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret,
- gboolean update_if_exists,
- guint32 *item_id)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- /* Use a secure buffer */
- gkr_buffer_init_full (&send, 128, SECURE_ALLOCATOR);
-
- *item_id = 0;
-
- if (!gkr_proto_encode_create_item (&send, keyring, display_name, attributes,
- secret, type, update_if_exists)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_result_integer_reply (&receive, &res, item_id)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_delete:
- * @keyring: The name of the keyring from which to delete the item, or NULL for the default keyring.
- * @id: The id of the item
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Delete an item in a keyring.
- *
- * The user may be prompted if the calling application doesn't have necessary
- * access to delete the item.
- *
- * For an asynchronous version of this function see gnome_keyring_delete().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_delete (const char *keyring,
- guint32 id,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int (&op->send_buffer, GNOME_KEYRING_OP_DELETE_ITEM,
- keyring, id)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_delete_sync:
- * @keyring: The name of the keyring from which to delete the item, or NULL for the default keyring.
- * @id: The id of the item
- *
- * Delete an item in a keyring.
- *
- * The user may be prompted if the calling application doesn't have necessary
- * access to delete the item.
- *
- * For an asynchronous version of this function see gnome_keyring_item_delete().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_delete_sync (const char *keyring,
- guint32 id)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_op_string_int (&send, GNOME_KEYRING_OP_DELETE_ITEM,
- keyring, id)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-static gboolean
-get_item_info_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetItemInfoCallback callback;
- GnomeKeyringItemInfo *info;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_get_item_info_reply (&op->receive_buffer, &result, &info)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, info, op->user_data);
- gnome_keyring_item_info_free (info);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_item_get_info:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get information about an item and its secret.
- *
- * The user may be prompted if the calling application doesn't have necessary
- * access to read the item with its secret.
- *
- * A #GnomeKeyringItemInfo structure will be passed to the @callback. This structure
- * will be freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_item_get_info_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_get_info (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetItemInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- /* Use a secure receive buffer */
- op = create_operation (TRUE, callback, CALLBACK_GET_ITEM_INFO, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int (&op->send_buffer, GNOME_KEYRING_OP_GET_ITEM_INFO,
- keyring, id)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = get_item_info_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_get_info_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @info: The location to return a #GnomeKeyringItemInfo pointer.
- *
- * Get information about an item and its secret.
- *
- * The user may be prompted if the calling application doesn't have necessary
- * access to read the item with its secret.
- *
- * A #GnomeKeyringItemInfo structure will be returned in @info. This must be
- * freed using gnome_keyring_item_info_free().
- *
- * For an asynchronous version of this function see gnome_keyring_item_get_info().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_get_info_sync (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo **info)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *info = NULL;
-
- if (!gkr_proto_encode_op_string_int (&send, GNOME_KEYRING_OP_GET_ITEM_INFO,
- keyring, id)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- /* Use a secure buffer */
- gkr_buffer_init_full (&receive, 128, SECURE_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_get_item_info_reply (&receive, &res, info)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_get_info_full:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @flags: The parts of the item to retrieve.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get information about an item, optionally retrieving its secret.
- *
- * If @flags includes %GNOME_KEYRING_ITEM_INFO_SECRET then the user may be
- * prompted if the calling application doesn't have necessary access to read
- * the item with its secret.
- *
- * A #GnomeKeyringItemInfo pointer will be passed to the @callback. Certain fields
- * of this structure may be NULL or zero if they were not specified in @flags. This
- * structure will be freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_item_get_info_full_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_get_info_full (const char *keyring,
- guint32 id,
- guint32 flags,
- GnomeKeyringOperationGetItemInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- /* Use a secure receive buffer */
- op = create_operation (TRUE, callback, CALLBACK_GET_ITEM_INFO, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int_int (&op->send_buffer,
- GNOME_KEYRING_OP_GET_ITEM_INFO_FULL,
- keyring, id, flags)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = get_item_info_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_get_info_full_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @flags: The parts of the item to retrieve.
- * @info: The location to return a #GnomeKeyringItemInfo pointer.
- *
- * Get information about an item, optionally retrieving its secret.
- *
- * If @flags includes %GNOME_KEYRING_ITEM_INFO_SECRET then the user may be
- * prompted if the calling application doesn't have necessary access to read
- * the item with its secret.
- *
- * A #GnomeKeyringItemInfo structure will be returned in @info. Certain fields
- * of this structure may be NULL or zero if they were not specified in @flags.
- * This must be freed using gnome_keyring_item_info_free().
- *
- * For an asynchronous version of this function see gnome_keyring_item_get_info_full().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_get_info_full_sync (const char *keyring,
- guint32 id,
- guint32 flags,
- GnomeKeyringItemInfo **info)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *info = NULL;
-
- if (!gkr_proto_encode_op_string_int_int (&send, GNOME_KEYRING_OP_GET_ITEM_INFO_FULL,
- keyring, id, flags)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- /* Use a secure buffer */
- gkr_buffer_init_full (&receive, 128, SECURE_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_get_item_info_reply (&receive, &res, info)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_set_info:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @info: The item info to save into the item.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Set information on an item, like its display name, secret etc...
- *
- * Only the fields in the @info pointer that are non-null or non-zero will be
- * set on the item.
- *
- * For a synchronous version of this function see gnome_keyring_item_set_info_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_set_info (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo *info,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!gkr_proto_encode_set_item_info (&op->send_buffer, keyring, id, info)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_set_info_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @info: The item info to save into the item.
- *
- * Set information on an item, like its display name, secret etc...
- *
- * Only the fields in the @info pointer that are non-null or non-zero will be
- * set on the item.
- *
- * For an asynchronous version of this function see gnome_keyring_item_set_info().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_set_info_sync (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo *info)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- /* Use a secure memory buffer */
- gkr_buffer_init_full (&send, 128, SECURE_ALLOCATOR);
-
- if (!gkr_proto_encode_set_item_info (&send, keyring, id, info)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-static gboolean
-get_attributes_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetAttributesCallback callback;
- GnomeKeyringAttributeList *attributes;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_get_attributes_reply (&op->receive_buffer, &result, &attributes)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, attributes, op->user_data);
- gnome_keyring_attribute_list_free (attributes);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-static gboolean
-get_acl_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetListCallback callback;
- GList *acl;
-
- callback = op->user_callback;
-
- if (!gkr_proto_decode_get_acl_reply (&op->receive_buffer, &result, &acl)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- (*callback) (result, acl, op->user_data);
- g_list_free (acl);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_item_get_attributes:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get all the attributes for an item.
- *
- * A #GnomeKeyringAttributeList will be passed to the @callback. This list will
- * be freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_item_get_attributes_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_get_attributes (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetAttributesCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_ATTRIBUTES, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int (&op->send_buffer, GNOME_KEYRING_OP_GET_ITEM_ATTRIBUTES,
- keyring, id)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = get_attributes_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_get_attributes_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @attributes: The location to return a pointer to the attribute list.
- *
- * Get all attributes for an item.
- *
- * A #GnomeKeyringAttributeList will be returned in @attributes. This should be
- * freed using gnome_keyring_attribute_list_free().
- *
- * For an asynchronous version of this function see gnome_keyring_item_get_attributes().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_get_attributes_sync (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList **attributes)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *attributes = NULL;
-
- if (!gkr_proto_encode_op_string_int (&send, GNOME_KEYRING_OP_GET_ITEM_ATTRIBUTES,
- keyring, id)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_get_attributes_reply (&receive, &res, attributes)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_set_attributes:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @attributes: The full list of attributes to set on the item.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Set all the attributes for an item. This will replace any previous attributes
- * set on the item.
- *
- * For a synchronous version of this function see gnome_keyring_item_set_attributes_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_set_attributes (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList *attributes,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_set_attributes (&op->send_buffer, keyring, id,
- attributes)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_set_attributes_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @attributes: The full list of attributes to set on the item.
- *
- * Set all the attributes for an item. This will replace any previous attributes
- * set on the item.
- *
- * For an asynchronous version of this function see gnome_keyring_item_set_attributes().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_set_attributes_sync (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList *attributes)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_set_attributes (&send, keyring, id, attributes)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- gkr_buffer_uninit (&receive);
-
- return res;
-
-}
-
-/**
- * gnome_keyring_item_get_acl:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Get the access control list for an item.
- *
- * A %GList of #GnomeKeyringAccessControl pointers will be passed to the @callback.
- * This list and its contents will be freed after @callback returns.
- *
- * For a synchronous version of this function see gnome_keyring_item_get_acl_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_get_acl (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_GET_ACL, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int (&op->send_buffer,
- GNOME_KEYRING_OP_GET_ITEM_ACL,
- keyring, id)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = get_acl_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_get_acl_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @acl: The location to return a pointer to the access control list.
- *
- * Get the access control list for an item.
- *
- * A %GList of #GnomeKeyringAccessControl pointers will be passed to the @callback.
- * This list should be freed using gnome_keyring_access_control_list_free().
- *
- * For an asynchronous version of this function see gnome_keyring_item_get_acl().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_get_acl_sync (const char *keyring,
- guint32 id,
- GList **acl)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- *acl = NULL;
-
- if (!gkr_proto_encode_op_string_int (&send, GNOME_KEYRING_OP_GET_ITEM_ACL,
- keyring, id)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
-
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- if (res != GNOME_KEYRING_RESULT_OK) {
- gkr_buffer_uninit (&receive);
- return res;
- }
-
- if (!gkr_proto_decode_get_acl_reply (&receive, &res, acl)) {
- gkr_buffer_uninit (&receive);
- return GNOME_KEYRING_RESULT_IO_ERROR;
- }
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_set_acl:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @acl: The access control list to set on the item.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- *
- * Set the full access control list on an item. This replaces any previous ACL
- * setup on the item.
- *
- * For a synchronous version of this function see gnome_keyring_item_set_acl_sync().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- **/
-gpointer
-gnome_keyring_item_set_acl (const char *keyring,
- guint32 id,
- GList *acl,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_set_acl (&op->send_buffer, keyring, id, acl)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = standard_reply;
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_item_set_acl_sync:
- * @keyring: The name of the keyring in which the item exists, or NULL for the default keyring.
- * @id: The id of the item
- * @acl: The access control list to set on the item.
- *
- * Set the full access control list on an item. This replaces any previous
- * ACL setup on the item.
- *
- * For an asynchronous version of this function see gnome_keyring_item_set_acl().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_item_set_acl_sync (const char *keyring,
- guint32 id,
- GList *acl)
-{
- GkrBuffer send, receive;
- GnomeKeyringResult res;
-
- gkr_buffer_init_full (&send, 128, NORMAL_ALLOCATOR);
-
- if (!gkr_proto_encode_set_acl (&send, keyring, id, acl)) {
- gkr_buffer_uninit (&send);
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- }
-
- gkr_buffer_init_full (&receive, 128, NORMAL_ALLOCATOR);
- res = run_sync_operation (&send, &receive);
- gkr_buffer_uninit (&send);
- gkr_buffer_uninit (&receive);
-
- return res;
-}
-
-typedef struct _GrantAccessRights {
- GnomeKeyringApplicationRef app_ref;
- GnomeKeyringAccessControl acl;
- gchar *keyring_name;
- guint32 id;
-} GrantAccessRights;
-
-static void
-destroy_grant_access_rights (gpointer data)
-{
- GrantAccessRights *gar = (GrantAccessRights*)data;
- g_free (gar->app_ref.display_name);
- g_free (gar->app_ref.pathname);
- g_free (gar->keyring_name);
- g_free (gar);
-}
-
-static gboolean
-item_grant_access_rights_reply (GnomeKeyringOperation *op)
-{
- GrantAccessRights *gar;
- GnomeKeyringResult result;
- GnomeKeyringOperationDoneCallback callback;
- gboolean ret;
- GList *acl;
-
- callback = op->user_callback;
-
- /* Parse the old access rights */
- if (!gkr_proto_decode_get_acl_reply (&op->receive_buffer, &result, &acl)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, op->user_data);
- return TRUE;
- }
-
- gar = (GrantAccessRights*)op->reply_data;
- g_assert (gar);
-
- /* Send off the new access rights */
- start_operation (op);
-
- /* Append our ACL to the list */
- gkr_buffer_reset (&op->send_buffer);
- acl = g_list_append (acl, &gar->acl);
- ret = gkr_proto_encode_set_acl (&op->send_buffer, gar->keyring_name,
- gar->id, acl);
-
- /* A bit of cleanup */
- acl = g_list_remove (acl, &gar->acl);
- g_list_free (acl);
-
- if (!ret) {
- (*callback) (GNOME_KEYRING_RESULT_BAD_ARGUMENTS, op->user_data);
- return TRUE;
- }
-
- op->reply_handler = standard_reply;
-
- /* Not done yet */
- return FALSE;
-}
-
-/**
- * gnome_keyring_item_grant_access_rights:
- * @keyring: The keyring name, or NULL for the default keyring.
- * @display_name: The display name for the application, as returned by g_get_application_name().
- * @full_path: The full filepath to the application.
- * @id: The id of the item to grant access to.
- * @rights: The type of rights to grant.
- * @callback: Callback which is called when the operation completes
- * @data: Data to be passed to callback
- * @destroy_data: Function to be called when data is no longer needed.
- *
- * Will grant the application access rights to the item, provided
- * callee has write access to said item.
- *
- * This is similar to calling gnome_keyring_item_get_acl() and
- * gnome_keyring_item_set_acl() with appropriate parameters.
- *
- * For a synchronous version of this function see gnome_keyring_item_grant_access_rights().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- * Since: 2.20
- **/
-gpointer
-gnome_keyring_item_grant_access_rights (const gchar *keyring,
- const gchar *display_name,
- const gchar *full_path,
- const guint32 id,
- const GnomeKeyringAccessType rights,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringOperation *op;
- GrantAccessRights *gar;
-
- /* First get current ACL */
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- if (!gkr_proto_encode_op_string_int (&op->send_buffer,
- GNOME_KEYRING_OP_GET_ITEM_ACL,
- keyring, id)) {
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- }
-
- op->reply_handler = item_grant_access_rights_reply;
-
- /* Copy information that the reply callback needs */
- gar = g_new0 (GrantAccessRights, 1);
- gar->app_ref.display_name = g_strdup (display_name);
- gar->app_ref.pathname = g_strdup (full_path);
- gar->acl.application = &gar->app_ref;
- gar->acl.types_allowed = rights;
- gar->keyring_name = g_strdup (keyring);
- gar->id = id;
-
- op->reply_data = gar;
- op->destroy_reply_data = destroy_grant_access_rights;
- start_operation (op);
-
- return op;
-}
-
-/**
- * gnome_keyring_item_grant_access_rights_sync:
- * @keyring: The keyring name, or NULL for the default keyring.
- * @display_name: The display name for the application, as returned by g_get_application_name().
- * @full_path: The full filepath to the application.
- * @id: The id of the item to grant access to.
- * @rights: The type of rights to grant.
- *
- * Will grant the application access rights to the item, provided
- * callee has write access to said item.
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- **/
-GnomeKeyringResult
-gnome_keyring_item_grant_access_rights_sync (const char *keyring,
- const char *display_name,
- const char *full_path,
- const guint32 id,
- const GnomeKeyringAccessType rights)
-{
- GList *acl_list = NULL;
- GnomeKeyringApplicationRef new_app_ref;
- GnomeKeyringAccessControl acl;
- GnomeKeyringResult res;
-
- /* setup application structure */
- new_app_ref.display_name = (char *) display_name;
- new_app_ref.pathname = (char *) full_path;
- acl.application = &new_app_ref;
- acl.types_allowed = rights;
-
- /* get the original acl list */
- res = gnome_keyring_item_get_acl_sync (keyring,
- id,
- &acl_list);
- if (GNOME_KEYRING_RESULT_OK != res)
- goto out;
-
- /* append access rights */
- acl_list = g_list_append (acl_list, (gpointer) &acl);
- res = gnome_keyring_item_set_acl_sync (keyring,
- id,
- acl_list);
-out:
- if (acl_list)
- g_list_free (acl_list);
-
- return res;
-}
-
-/**
- * gnome_keyring_item_info_get_type:
- * @item_info: A keyring item info pointer.
- *
- * Get the item type.
- *
- * Return value: The item type
- **/
-GnomeKeyringItemType
-gnome_keyring_item_info_get_type (GnomeKeyringItemInfo *item_info)
-{
- return item_info->type;
-}
-
-/**
- * gnome_keyring_item_info_set_type:
- * @item_info: A keyring item info pointer.
- * @type: The new item type
- *
- * Set the type on an item info.
- **/
-void
-gnome_keyring_item_info_set_type (GnomeKeyringItemInfo *item_info,
- GnomeKeyringItemType type)
-{
- item_info->type = type;
-}
-
-/**
- * gnome_keyring_item_info_get_secret:
- * @item_info: A keyring item info pointer.
- *
- * Get the item secret.
- *
- * Return value: The newly allocated string containing the item secret.
- **/
-char *
-gnome_keyring_item_info_get_secret (GnomeKeyringItemInfo *item_info)
-{
- /* XXXX For compatibility reasons we can't use secure memory here */
- return g_strdup (item_info->secret);
-}
-
-/**
- * gnome_keyring_item_info_set_secret:
- * @item_info: A keyring item info pointer.
- * @value: The new item secret
- *
- * Set the secret on an item info.
- **/
-void
-gnome_keyring_item_info_set_secret (GnomeKeyringItemInfo *item_info,
- const char *value)
-{
- gnome_keyring_free_password (item_info->secret);
- item_info->secret = gnome_keyring_memory_strdup (value);
-}
-
-/**
- * gnome_keyring_item_info_get_display_name:
- * @item_info: A keyring item info pointer.
- *
- * Get the item display name.
- *
- * Return value: The newly allocated string containing the item display name.
- **/
-char *
-gnome_keyring_item_info_get_display_name (GnomeKeyringItemInfo *item_info)
-{
- return g_strdup (item_info->display_name);
-}
-
-/**
- * gnome_keyring_item_info_set_display_name:
- * @item_info: A keyring item info pointer.
- * @value: The new display name.
- *
- * Set the display name on an item info.
- **/
-void
-gnome_keyring_item_info_set_display_name (GnomeKeyringItemInfo *item_info,
- const char *value)
-{
- g_free (item_info->display_name);
- item_info->display_name = g_strdup (value);
-}
-
-/**
- * gnome_keyring_item_info_get_mtime:
- * @item_info: A keyring item info pointer.
- *
- * Get the item last modified time.
- *
- * Return value: The item last modified time.
- **/
-time_t
-gnome_keyring_item_info_get_mtime (GnomeKeyringItemInfo *item_info)
-{
- return item_info->mtime;
-}
-
-/**
- * gnome_keyring_item_info_get_ctime:
- * @item_info: A keyring item info pointer.
- *
- * Get the item created time.
- *
- * Return value: The item created time.
- **/
-time_t
-gnome_keyring_item_info_get_ctime (GnomeKeyringItemInfo *item_info)
-{
- return item_info->ctime;
-}
-
-/**
- * gnome_keyring_item_ac_get_display_name:
- * @ac: A #GnomeKeyringAccessControl pointer.
- *
- * Get the access control application's display name.
- *
- * Return value: A newly allocated string containing the display name.
- */
-char *
-gnome_keyring_item_ac_get_display_name (GnomeKeyringAccessControl *ac)
-{
- return g_strdup (ac->application->display_name);
-}
-
-/**
- * gnome_keyring_item_ac_set_display_name:
- * @ac: A #GnomeKeyringAcccessControl pointer.
- * @value: The new application display name.
- *
- * Set the access control application's display name.
- **/
-void
-gnome_keyring_item_ac_set_display_name (GnomeKeyringAccessControl *ac,
- const char *value)
-{
- g_free (ac->application->display_name);
- ac->application->display_name = g_strdup (value);
-}
-
-/**
- * gnome_keyring_item_ac_get_path_name:
- * @ac: A #GnomeKeyringAccessControl pointer.
- *
- * Get the access control application's full path name.
- *
- * Return value: A newly allocated string containing the display name.
- **/
-char *
-gnome_keyring_item_ac_get_path_name (GnomeKeyringAccessControl *ac)
-{
- return g_strdup (ac->application->pathname);
-}
-
-/**
- * gnome_keyring_item_ac_set_path_name:
- * @ac: A #GnomeKeyringAccessControl pointer
- * @value: The new application full path.
- *
- * Set the access control application's full path name.
- **/
-void
-gnome_keyring_item_ac_set_path_name (GnomeKeyringAccessControl *ac,
- const char *value)
-{
- g_free (ac->application->pathname);
- ac->application->pathname = g_strdup (value);
-}
-
-/**
- * gnome_keyring_item_ac_get_access_type:
- * @ac: A #GnomeKeyringAccessControl pointer.
- *
- * Get the application access rights for the access control.
- *
- * Return value: The access rights.
- */
-GnomeKeyringAccessType
-gnome_keyring_item_ac_get_access_type (GnomeKeyringAccessControl *ac)
-{
- return ac->types_allowed;
-}
-
-/**
- * gnome_keyring_item_ac_set_access_type:
- * @ac: A #GnomeKeyringAccessControl pointer.
- * @value: The new access rights.
- *
- * Set the application access rights for the access control.
- **/
-void
-gnome_keyring_item_ac_set_access_type (GnomeKeyringAccessControl *ac,
- const GnomeKeyringAccessType value)
-{
- ac->types_allowed = value;
-}
-
-/* ------------------------------------------------------------------------------
- * NETWORK PASSWORD APIS
- */
-
-struct FindNetworkPasswordInfo {
- GnomeKeyringOperationGetListCallback callback;
- gpointer data;
- GDestroyNotify destroy_data;
-};
-
-static void
-free_find_network_password_info (struct FindNetworkPasswordInfo *info)
-{
- if (info->destroy_data != NULL) {
- info->destroy_data (info->data);
- }
- g_free (info);
-}
-
-static GList *
-found_list_to_nework_password_list (GList *found_list)
-{
- GnomeKeyringNetworkPasswordData *data;
- GnomeKeyringFound *found;
- GnomeKeyringAttribute *attributes;
- GList *result, *l;
- int i;
-
- result = NULL;
- for (l = found_list; l != NULL; l = l->next) {
- found = l->data;
-
- data = g_new0 (GnomeKeyringNetworkPasswordData, 1);
-
- result = g_list_prepend (result, data);
-
- data->keyring = g_strdup (found->keyring);
- data->item_id = found->item_id;
- data->password = gnome_keyring_memory_strdup (found->secret);
-
- attributes = (GnomeKeyringAttribute *) found->attributes->data;
- for (i = 0; i < found->attributes->len; i++) {
- if (strcmp (attributes[i].name, "user") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->user = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "domain") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->domain = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "server") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->server = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "object") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->object = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "protocol") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->protocol = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "authtype") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- data->authtype = g_strdup (attributes[i].value.string);
- } else if (strcmp (attributes[i].name, "port") == 0 &&
- attributes[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32) {
- data->port = attributes[i].value.integer;
- }
- }
- }
-
- return g_list_reverse (result);
-}
-
-/**
- * gnome_keyring_network_password_free:
- * @data: A #GnomeKeyringNetworkPasswordData pointer.
- *
- * Free a network password data pointer. If %NULL is passed in,
- * nothing happens.
- */
-void
-gnome_keyring_network_password_free (GnomeKeyringNetworkPasswordData *data)
-{
- if (!data)
- return;
-
- g_free (data->keyring);
- g_free (data->protocol);
- g_free (data->server);
- g_free (data->object);
- g_free (data->authtype);
- g_free (data->user);
- g_free (data->domain);
- gnome_keyring_free_password (data->password);
-
- g_free (data);
-}
-
-/**
- * gnome_keyring_network_password_list_free:
- * @list: A list of #GnomeKeyringNetworkPasswordData pointers.
- *
- * Free a list of network password data.
- */
-void
-gnome_keyring_network_password_list_free (GList *list)
-{
- g_list_foreach (list, (GFunc)gnome_keyring_network_password_free, NULL);
- g_list_free (list);
-}
-
-static void
-find_network_password_callback (GnomeKeyringResult result,
- GList *list,
- gpointer data)
-{
- struct FindNetworkPasswordInfo *info;
- GList *data_list;
-
- info = data;
-
- data_list = NULL;
- if (result == GNOME_KEYRING_RESULT_OK) {
- data_list = found_list_to_nework_password_list (list);
- }
- info->callback (result, data_list, info->data);
- gnome_keyring_network_password_list_free (data_list);
- return;
-}
-
-static GnomeKeyringAttributeList *
-make_attribute_list_for_network_password (const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port)
-{
- GnomeKeyringAttributeList *attributes;
-
- attributes = g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
-
- if (user != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "user", user);
- }
- if (domain != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "domain", domain);
- }
- if (server != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "server", server);
- }
- if (object != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "object", object);
- }
- if (protocol != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "protocol", protocol);
- }
- if (authtype != NULL) {
- gnome_keyring_attribute_list_append_string (attributes, "authtype", authtype);
- }
- if (port != 0) {
- gnome_keyring_attribute_list_append_uint32 (attributes, "port", port);
- }
- return attributes;
-}
-
-/**
- * gnome_keyring_find_network_password:
- * @user: The user name or %NULL for any user.
- * @domain: The domain name %NULL for any domain.
- * @server: The server or %NULL for any server.
- * @object: The remote object or %NULL for any object.
- * @protocol: The network protorol or %NULL for any protocol.
- * @authtype: The authentication type or %NULL for any type.
- * @port: The network port or zero for any port.
- * @callback: Callback which is called when the operation completes
- * @data: Data to be passed to callback
- * @destroy_data: Function to be called when data is no longer needed.
- *
- * Find a previously stored network password. Searches all keyrings.
- *
- * A %GList of #GnomeKeyringNetworkPasswordData structures are passed to the
- * @callback. The list and structures are freed after the callback returns.
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- */
-gpointer
-gnome_keyring_find_network_password (const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- GnomeKeyringOperationGetListCallback callback,
- gpointer user_data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringAttributeList *attributes;
- gpointer request;
- struct FindNetworkPasswordInfo *info;
-
- info = g_new0 (struct FindNetworkPasswordInfo, 1);
- info->callback = callback;
- info->data = user_data;
- info->destroy_data = destroy_data;
-
- attributes = make_attribute_list_for_network_password (user,
- domain,
- server,
- object,
- protocol,
- authtype,
- port);
-
- request = gnome_keyring_find_items (GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- attributes,
- find_network_password_callback,
- info,
- (GDestroyNotify)free_find_network_password_info);
-
- gnome_keyring_attribute_list_free (attributes);
- return request;
-}
-
-/**
- * gnome_keyring_find_network_password_sync:
- * @user: The user name or %NULL.
- * @domain: The domain name %NULL.
- * @server: The server or %NULL.
- * @object: The remote object or %NULL.
- * @protocol: The network protorol or %NULL.
- * @authtype: The authentication type or %NULL.
- * @port: The network port or zero.
- * @results: A location to return a %GList of #GnomeKeyringNetworkPasswordData pointers.
- *
- * Find a previously stored network password. Searches all keyrings.
- *
- * A %GList of #GnomeKeyringNetworkPasswordData structures are returned in the
- * @out_list argument. The list should be freed with gnome_keyring_network_password_list_free()
- *
- * The user may have been prompted to unlock necessary keyrings, and user will
- * have been prompted for access to the items if needed.
- *
- * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_find_network_password_sync (const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- GList **results)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringResult result;
- GList *found;
-
- *results = NULL;
- attributes = make_attribute_list_for_network_password (user,
- domain,
- server,
- object,
- protocol,
- authtype,
- port);
-
- result = gnome_keyring_find_items_sync (GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- attributes,
- &found);
-
- gnome_keyring_attribute_list_free (attributes);
-
- if (result == GNOME_KEYRING_RESULT_OK) {
- *results = found_list_to_nework_password_list (found);
- gnome_keyring_found_list_free (found);
- }
-
- return result;
-}
-
-static char *
-get_network_password_display_name (const char *user,
- const char *server,
- const char *object,
- guint32 port)
-{
- GString *s;
- char *name;
-
- if (server != NULL) {
- s = g_string_new (NULL);
- if (user != NULL) {
- g_string_append_printf (s, "%s@", user);
- }
- g_string_append (s, server);
- if (port != 0) {
- g_string_append_printf (s, ":%d", port);
- }
- if (object != NULL) {
- g_string_append_printf (s, "/%s", object);
- }
- name = g_string_free (s, FALSE);
- } else {
- name = g_strdup ("network password");
- }
- return name;
-}
-
-
-/**
- * gnome_keyring_set_network_password:
- * @keyring: The keyring to store the password in, or %NULL for the default keyring.
- * @user: The user name or %NULL.
- * @domain: The domain name %NULL.
- * @server: The server or %NULL.
- * @object: The remote object or %NULL.
- * @protocol: The network protorol or %NULL.
- * @authtype: The authentication type or %NULL.
- * @port: The network port or zero.
- * @password: The password to store, must not be %NULL.
- * @callback: Callback which is called when the operation completes
- * @data: Data to be passed to callback
- * @destroy_data: Function to be called when data is no longer needed.
- *
- * Store a network password.
- *
- * If an item already exists for with this network info (ie: user, server etc...)
- * then it will be updated.
- *
- * Whether a new item is created or not, id of the item will be passed to
- * the @callback.
- *
- * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- */
-gpointer
-gnome_keyring_set_network_password (const char *keyring,
- const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- const char *password,
- GnomeKeyringOperationGetIntCallback callback,
- gpointer data,
- GDestroyNotify destroy_data)
-{
- GnomeKeyringAttributeList *attributes;
- gpointer req;
- char *name;
-
- name = get_network_password_display_name (user, server, object, port);
-
- attributes = make_attribute_list_for_network_password (user,
- domain,
- server,
- object,
- protocol,
- authtype,
- port);
-
- req = gnome_keyring_item_create (keyring,
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- name,
- attributes,
- password,
- TRUE,
- callback, data, destroy_data);
-
- gnome_keyring_attribute_list_free (attributes);
- g_free (name);
-
- return req;
-}
-
-/**
- * gnome_keyring_set_network_password_sync:
- * @keyring: The keyring to store the password in, or %NULL for the default keyring.
- * @user: The user name or %NULL.
- * @domain: The domain name %NULL.
- * @server: The server or %NULL.
- * @object: The remote object or %NULL.
- * @protocol: The network protorol or %NULL.
- * @authtype: The authentication type or %NULL.
- * @port: The network port or zero.
- * @password: The password to store, must not be %NULL.
- * @item_id: A location to store the resulting item's id.
- *
- * Store a network password.
- *
- * If an item already exists for with this network info (ie: user, server etc...)
- * then it will be updated.
- *
- * The created or updated item id will be returned in @item_id.
- *
- * Network passwords are items with the item type %GNOME_KEYRING_ITEM_NETWORK_PASSWORD
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- */
-GnomeKeyringResult
-gnome_keyring_set_network_password_sync (const char *keyring,
- const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- const char *password,
- guint32 *item_id)
-{
- GnomeKeyringAttributeList *attributes;
- char *name;
- GnomeKeyringResult res;
-
- name = get_network_password_display_name (user, server, object, port);
- attributes = make_attribute_list_for_network_password (user,
- domain,
- server,
- object,
- protocol,
- authtype,
- port);
-
- res = gnome_keyring_item_create_sync (keyring,
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- name,
- attributes,
- password,
- TRUE,
- item_id);
-
- gnome_keyring_attribute_list_free (attributes);
- g_free (name);
-
- return res;
-}
-
-/* ------------------------------------------------------------------------------
- * SIMPLE PASSWORD APIS
- */
-
-static const GnomeKeyringPasswordSchema network_password_schema = {
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- {
- { "user", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "domain", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "object", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "protocol", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "port", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
- { "NULL", 0 },
- }
-};
-
-/* Declared in gnome-keyring.h */
-const GnomeKeyringPasswordSchema *GNOME_KEYRING_NETWORK_PASSWORD = &network_password_schema;
-
-static GnomeKeyringAttributeList*
-schema_attribute_list_va (const GnomeKeyringPasswordSchema *schema, va_list args)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttributeType type;
- GnomeKeyringAttribute attribute;
- gboolean type_found;
- char *str;
- guint32 i, val;
-
- attributes = g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute));
-
- while ((attribute.name = va_arg (args, char *)) != NULL) {
-
- type_found = FALSE;
- for (i = 0; i < G_N_ELEMENTS (schema->attributes); ++i) {
- if (!schema->attributes[i].name)
- break;
- if (strcmp (schema->attributes[i].name, attribute.name) == 0) {
- type_found = TRUE;
- type = schema->attributes[i].type;
- break;
- }
- }
-
- if (!type_found) {
- g_warning ("The password attribute '%s' was not found in the password schema.", attribute.name);
- g_array_free (attributes, TRUE);
- return NULL;
- }
-
- attribute.type = type;
- switch (type) {
- case GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
- str = va_arg (args, char *);
- attribute.value.string = str;
- g_array_append_val (attributes, attribute);
- break;
- case GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
- val = va_arg (args, guint32);
- attribute.value.integer = val;
- g_array_append_val (attributes, attribute);
- break;
- default:
- g_warning ("The password attribute '%s' has an invalid type in the password schema.", attribute.name);
- g_array_free (attributes, TRUE);
- return NULL;
- }
- }
-
- return attributes;
-}
-
-/**
- * gnome_keyring_store_password:
- * @schema: The password schema.
- * @keyring: The keyring to store the password in. Specify %NULL for the default keyring.
- * Use %GNOME_KEYRING_SESSION to store the password in memory only.
- * @display_name: A human readable description of what the password is for.
- * @password: The password to store.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Store a password associated with a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * If a password exists in the keyring that already has all the same arguments,
- * then the password will be updated.
- *
- * Another more complex way to create a keyring item is using gnome_keyring_item_create().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- * Since: 2.22
- */
-gpointer
-gnome_keyring_store_password (const GnomeKeyringPasswordSchema* schema, const gchar *keyring,
- const gchar *display_name, const gchar *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data, GDestroyNotify destroy_data, ...)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringOperation *op;
- va_list args;
-
- va_start (args, destroy_data);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
-
- op = create_operation (FALSE, callback, CALLBACK_DONE, data, destroy_data);
-
- /* Automatically secures buffer */
- if (!attributes || !attributes->len ||
- !gkr_proto_encode_create_item (&op->send_buffer, keyring, display_name,
- attributes, password, schema->item_type, TRUE))
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
-
- op->reply_handler = standard_reply;
- g_array_free (attributes, TRUE);
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_store_password_sync:
- * @schema: The password schema.
- * @keyring: The keyring to store the password in. Specify %NULL for the default keyring.
- * Use %GNOME_KEYRING_SESSION to store the password in memory only.
- * @display_name: A human readable description of what the password is for.
- * @password: The password to store.
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Store a password associated with a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * This function may block for an unspecified period. If your application must
- * remain responsive to the user, then use gnome_keyring_store_password().
- *
- * If a password exists in the keyring that already has all the same arguments,
- * then the password will be updated.
- *
- * Another more complex way to create a keyring item is using
- * gnome_keyring_item_create_sync().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- * Since: 2.22
- */
-GnomeKeyringResult
-gnome_keyring_store_password_sync (const GnomeKeyringPasswordSchema* schema, const gchar *keyring,
- const gchar *display_name, const gchar *password, ...)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringResult res;
- guint32 item_id;
- va_list args;
-
- va_start (args, password);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
-
- if (!attributes || !attributes->len)
- return GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
-
- res = gnome_keyring_item_create_sync (keyring, schema->item_type, display_name,
- attributes, password, TRUE, &item_id);
-
- g_array_free (attributes, TRUE);
- return res;
-}
-
-static gboolean
-find_password_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationGetStringCallback callback;
- GList *found_items;
- const gchar *password;
-
- g_assert (op->user_callback_type == CALLBACK_GET_STRING);
- callback = op->user_callback;
-
- if (!gkr_proto_decode_find_reply (&op->receive_buffer, &result, &found_items)) {
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, NULL, op->user_data);
- } else {
- password = NULL;
- if (found_items)
- password = ((GnomeKeyringFound*)(found_items->data))->secret;
- (*callback) (result, password, op->user_data);
- gnome_keyring_found_list_free (found_items);
- }
-
- /* Operation is done */
- return TRUE;
-}
-
-/**
- * gnome_keyring_find_password:
- * @schema: The password schema.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Find a password that matches a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * The string that is passed to @callback is automatically freed when the
- * function returns.
- *
- * Another more complex way to find items in the keyrings is using
- * gnome_keyring_find_items().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- * Since: 2.22
- */
-gpointer
-gnome_keyring_find_password (const GnomeKeyringPasswordSchema* schema,
- GnomeKeyringOperationGetStringCallback callback,
- gpointer data, GDestroyNotify destroy_data, ...)
-{
- GnomeKeyringOperation *op;
- GnomeKeyringAttributeList *attributes;
- va_list args;
-
- op = create_operation (TRUE, callback, CALLBACK_GET_STRING, data, destroy_data);
-
- va_start (args, destroy_data);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
-
- if (!attributes || !attributes->len ||
- !gkr_proto_encode_find (&op->send_buffer, schema->item_type, attributes))
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
-
- g_array_free (attributes, TRUE);
-
- op->reply_handler = find_password_reply;
- start_operation (op);
- return op;
-
-}
-
-/**
- * gnome_keyring_find_password_sync:
- * @schema: The password schema.
- * @password: An address to store password that was found. The password must
- * be freed with gnome_keyring_free_password().
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Find a password that matches a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * This function may block for an unspecified period. If your application must
- * remain responsive to the user, then use gnome_keyring_find_password().
- *
- * Another more complex way to find items in the keyrings is using
- * gnome_keyring_find_items_sync().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- * Since: 2.22
- */
-GnomeKeyringResult
-gnome_keyring_find_password_sync(const GnomeKeyringPasswordSchema* schema, gchar **password, ...)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringResult res;
- GnomeKeyringFound *f;
- GList* found = NULL;
- va_list args;
-
- va_start (args, password);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
-
- if (!attributes || !attributes->len)
- res = GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
- else
- res = gnome_keyring_find_items_sync (schema->item_type, attributes, &found);
-
- g_array_free (attributes, TRUE);
-
- if (password && res == GNOME_KEYRING_RESULT_OK) {
- *password = NULL;
- if (g_list_length (found) > 0) {
- f = (GnomeKeyringFound*)(found->data);
- *password = f->secret;
- f->secret = NULL;
- }
- }
-
- gnome_keyring_found_list_free (found);
- return res;
-}
-
-typedef struct _DeletePassword {
- GList *found;
- GList *at;
- guint non_session;
- guint deleted;
-} DeletePassword;
-
-static void
-delete_password_destroy (gpointer data)
-{
- DeletePassword *dp = (DeletePassword*)data;
- gnome_keyring_found_list_free (dp->found);
- g_free (dp);
-}
-
-static gboolean
-delete_password_reply (GnomeKeyringOperation *op)
-{
- GnomeKeyringResult result;
- GnomeKeyringOperationDoneCallback callback;
- GnomeKeyringFound *f;
- DeletePassword *dp;
-
- g_assert (op->user_callback_type == CALLBACK_DONE);
- callback = op->user_callback;
-
- dp = op->reply_data;
- g_assert (dp);
-
- /* The result of the find */
- if (!dp->found) {
- if (!gkr_proto_decode_find_reply (&op->receive_buffer, &result, &dp->found))
- result = GNOME_KEYRING_RESULT_IO_ERROR;
-
- /* On the first item */
- dp->at = dp->found;
-
- /* The result of a delete */
- } else {
- if (!gkr_proto_decode_find_reply (&op->receive_buffer, &result, &dp->found))
- result = GNOME_KEYRING_RESULT_IO_ERROR;
-
- ++dp->deleted;
- }
-
- /* Stop on any failure */
- if (result != GNOME_KEYRING_RESULT_OK) {
- (*callback) (result, op->user_data);
- return TRUE; /* Operation is done */
- }
-
- /* Iterate over list and find next item to delete */
- while (dp->at) {
- f = (GnomeKeyringFound*)(dp->at->data);
- dp->at = g_list_next (dp->at);
-
- /* If not an item in the session keyring ... */
- if (!f->keyring || strcmp (f->keyring, GNOME_KEYRING_SESSION) != 0) {
-
- ++dp->non_session;
-
- /* ... then we only delete one of those */
- if (dp->non_session > 1)
- continue;
- }
-
- /* Reset the operation into a delete */
- start_operation (op);
-
- gkr_buffer_reset (&op->send_buffer);
- if (!gkr_proto_encode_op_string_int (&op->send_buffer, GNOME_KEYRING_OP_DELETE_ITEM,
- f->keyring, f->item_id)) {
- /*
- * This would happen if the server somehow sent us an invalid
- * keyring and item_id. Very unlikely, and it seems this is
- * the best error code in this case.
- */
- (*callback) (GNOME_KEYRING_RESULT_IO_ERROR, op->user_data);
- return TRUE;
- }
-
- /*
- * The delete operation is ready for processing, by returning
- * FALSE we indicate that the operation is not complete.
- */
- return FALSE;
- }
-
- /* Nothing more to find */
- g_assert (!dp->at);
-
- /* Operation is done */
- (*callback) (dp->deleted > 0 ? GNOME_KEYRING_RESULT_OK : GNOME_KEYRING_RESULT_NO_MATCH, op->user_data);
- return TRUE;
-}
-
-/**
- * gnome_keyring_delete_password:
- * @schema: The password schema.
- * @callback: A callback which will be called when the request completes or fails.
- * @data: A pointer to arbitrary data that will be passed to the @callback.
- * @destroy_data: A function to free @data when it's no longer needed.
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Delete a password that matches a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * Another more complex way to find items in the keyrings is using
- * gnome_keyring_item_delete().
- *
- * Return value: The asychronous request, which can be passed to gnome_keyring_cancel_request().
- * Since: 2.22
- */
-gpointer
-gnome_keyring_delete_password (const GnomeKeyringPasswordSchema* schema,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data, GDestroyNotify destroy_data, ...)
-{
- GnomeKeyringOperation *op;
- GnomeKeyringAttributeList *attributes;
- va_list args;
-
- op = create_operation (TRUE, callback, CALLBACK_DONE, data, destroy_data);
-
- va_start (args, destroy_data);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
- if (!attributes || !attributes->len ||
- !gkr_proto_encode_find (&op->send_buffer, schema->item_type, attributes))
- schedule_op_failed (op, GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
-
- g_array_free (attributes, TRUE);
-
- op->reply_handler = delete_password_reply;
- op->reply_data = g_new0 (DeletePassword, 1);
- op->destroy_reply_data = delete_password_destroy;
-
- start_operation (op);
- return op;
-}
-
-/**
- * gnome_keyring_delete_password_sync:
- * @schema: The password schema.
- * @...: The variable argument list should contain pairs of a) The attribute name as a null
- * terminated string, followed by b) attribute value, either a character string,
- * or 32-bit unsigned int, as defined in the password @schema. The list of attribtues
- * should be terminated with a %NULL.
- *
- * Delete a password that matches a given set of attributes.
- *
- * Attributes which identify this password must be passed as additional
- * arguments. Attributes passed must be defined in the schema.
- *
- * This function may block for an unspecified period. If your application must
- * remain responsive to the user, then use gnome_keyring_delete_password().
- *
- * Another more complex way to find items in the keyrings is using
- * gnome_keyring_item_delete_sync().
- *
- * Return value: %GNOME_KEYRING_RESULT_OK if the operation was succcessful or
- * an error result otherwise.
- * Since: 2.22
- */
-GnomeKeyringResult
-gnome_keyring_delete_password_sync (const GnomeKeyringPasswordSchema* schema, ...)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringResult res;
- GnomeKeyringFound *f;
- GList *found, *l;
- va_list args;
- guint non_session;
-
- va_start (args, schema);
- attributes = schema_attribute_list_va (schema, args);
- va_end (args);
-
- if (!attributes || !attributes->len)
- res = GNOME_KEYRING_RESULT_BAD_ARGUMENTS;
-
- /* Find the item(s) in question */
- else
- res = gnome_keyring_find_items_sync (schema->item_type, attributes, &found);
-
- g_array_free (attributes, TRUE);
- if (res != GNOME_KEYRING_RESULT_OK)
- return res;
-
- non_session = 0;
- for (l = found; l; l = g_list_next (l)) {
- f = (GnomeKeyringFound*)(l->data);
-
- /* If not an item in the session keyring ... */
- if (!f->keyring || strcmp (f->keyring, GNOME_KEYRING_SESSION) != 0) {
-
- ++non_session;
-
- /* ... then we only delete one of those */
- if (non_session > 1)
- continue;
- }
-
- res = gnome_keyring_item_delete_sync (f->keyring, f->item_id);
- if (res != GNOME_KEYRING_RESULT_OK)
- break;
- }
-
- gnome_keyring_found_list_free (found);
- return res;
-}
diff --git a/library/gnome-keyring.h b/library/gnome-keyring.h
deleted file mode 100644
index 74e77942..00000000
--- a/library/gnome-keyring.h
+++ /dev/null
@@ -1,517 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-keyring.h - library for talking to the keyring daemon.
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#ifndef GNOME_KEYRING_H
-#define GNOME_KEYRING_H
-
-#include <glib.h>
-#include <time.h>
-
-#include "gnome-keyring-result.h"
-
-#define GNOME_KEYRING_SESSION "session"
-#define GNOME_KEYRING_DEFAULT NULL
-
-typedef enum {
-
- /* The item types */
- GNOME_KEYRING_ITEM_GENERIC_SECRET = 0,
- GNOME_KEYRING_ITEM_NETWORK_PASSWORD,
- GNOME_KEYRING_ITEM_NOTE,
- GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD,
- GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD,
-
- /*< private >*/
- GNOME_KEYRING_ITEM_LAST_TYPE,
-
-} GnomeKeyringItemType;
-
-#define GNOME_KEYRING_ITEM_TYPE_MASK 0x0000ffff
-#define GNOME_KEYRING_ITEM_NO_TYPE GNOME_KEYRING_ITEM_TYPE_MASK
-#define GNOME_KEYRING_ITEM_APPLICATION_SECRET 0x01000000
-
-typedef enum {
- GNOME_KEYRING_ACCESS_ASK,
- GNOME_KEYRING_ACCESS_DENY,
- GNOME_KEYRING_ACCESS_ALLOW
-} GnomeKeyringAccessRestriction;
-
-typedef enum {
- GNOME_KEYRING_ATTRIBUTE_TYPE_STRING,
- GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32
-} GnomeKeyringAttributeType;
-
-typedef struct GnomeKeyringAccessControl GnomeKeyringAccessControl;
-typedef struct GnomeKeyringApplicationRef GnomeKeyringApplicationRef;
-typedef GArray GnomeKeyringAttributeList;
-
-typedef enum {
- GNOME_KEYRING_ACCESS_READ = 1<<0,
- GNOME_KEYRING_ACCESS_WRITE = 1<<1,
- GNOME_KEYRING_ACCESS_REMOVE = 1<<2
-} GnomeKeyringAccessType;
-
-typedef enum {
- GNOME_KEYRING_ITEM_INFO_BASICS = 0,
- GNOME_KEYRING_ITEM_INFO_SECRET = 1<<0
-} GnomeKeyringItemInfoFlags;
-
-/* Add flags here as they are added above */
-#define GNOME_KEYRING_ITEM_INFO_ALL (GNOME_KEYRING_ITEM_INFO_BASICS | GNOME_KEYRING_ITEM_INFO_SECRET)
-
-typedef struct GnomeKeyringInfo GnomeKeyringInfo;
-typedef struct GnomeKeyringItemInfo GnomeKeyringItemInfo;
-
-typedef struct {
- char *name;
- GnomeKeyringAttributeType type;
- union {
- char *string;
- guint32 integer;
- } value;
-} GnomeKeyringAttribute;
-
-typedef struct {
- char *keyring;
- guint item_id;
- GnomeKeyringAttributeList *attributes;
- char *secret;
-} GnomeKeyringFound;
-
-void gnome_keyring_string_list_free (GList *strings);
-
-typedef void (*GnomeKeyringOperationDoneCallback) (GnomeKeyringResult result,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetStringCallback) (GnomeKeyringResult result,
- const char *string,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetIntCallback) (GnomeKeyringResult result,
- guint32 val,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetListCallback) (GnomeKeyringResult result,
- GList *list,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetKeyringInfoCallback) (GnomeKeyringResult result,
- GnomeKeyringInfo *info,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetItemInfoCallback) (GnomeKeyringResult result,
- GnomeKeyringItemInfo*info,
- gpointer data);
-typedef void (*GnomeKeyringOperationGetAttributesCallback) (GnomeKeyringResult result,
- GnomeKeyringAttributeList *attributes,
- gpointer data);
-
-#define gnome_keyring_attribute_list_index(a, i) g_array_index ((a), GnomeKeyringAttribute, (i))
-#define gnome_keyring_attribute_list_new() (g_array_new (FALSE, FALSE, sizeof (GnomeKeyringAttribute)))
-void gnome_keyring_attribute_list_append_string (GnomeKeyringAttributeList *attributes,
- const char *name,
- const char *value);
-void gnome_keyring_attribute_list_append_uint32 (GnomeKeyringAttributeList *attributes,
- const char *name,
- guint32 value);
-void gnome_keyring_attribute_list_free (GnomeKeyringAttributeList *attributes);
-GnomeKeyringAttributeList *gnome_keyring_attribute_list_copy (GnomeKeyringAttributeList *attributes);
-
-
-const gchar* gnome_keyring_result_to_message (GnomeKeyringResult res);
-
-gboolean gnome_keyring_is_available (void);
-
-void gnome_keyring_found_free (GnomeKeyringFound *found);
-void gnome_keyring_found_list_free (GList *found_list);
-
-void gnome_keyring_cancel_request (gpointer request);
-
-gpointer gnome_keyring_set_default_keyring (const char *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_set_default_keyring_sync (const char *keyring);
-gpointer gnome_keyring_get_default_keyring (GnomeKeyringOperationGetStringCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_get_default_keyring_sync (char **keyring);
-gpointer gnome_keyring_list_keyring_names (GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_list_keyring_names_sync (GList **keyrings);
-gpointer gnome_keyring_lock_all (GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_lock_all_sync (void);
-
-
-/* NULL password means ask user */
-gpointer gnome_keyring_create (const char *keyring_name,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_create_sync (const char *keyring_name,
- const char *password);
-gpointer gnome_keyring_unlock (const char *keyring,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_unlock_sync (const char *keyring,
- const char *password);
-gpointer gnome_keyring_lock (const char *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_lock_sync (const char *keyring);
-gpointer gnome_keyring_delete (const char *keyring,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_delete_sync (const char *keyring);
-gpointer gnome_keyring_change_password (const char *keyring,
- const char *original,
- const char *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_change_password_sync (const char *keyring,
- const char *original,
- const char *password);
-gpointer gnome_keyring_get_info (const char *keyring,
- GnomeKeyringOperationGetKeyringInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_get_info_sync (const char *keyring,
- GnomeKeyringInfo **info);
-gpointer gnome_keyring_set_info (const char *keyring,
- GnomeKeyringInfo *info,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_set_info_sync (const char *keyring,
- GnomeKeyringInfo *info);
-gpointer gnome_keyring_list_item_ids (const char *keyring,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_list_item_ids_sync (const char *keyring,
- GList **ids);
-
-void gnome_keyring_info_free (GnomeKeyringInfo *keyring_info);
-GnomeKeyringInfo *gnome_keyring_info_copy (GnomeKeyringInfo *keyring_info);
-void gnome_keyring_info_set_lock_on_idle (GnomeKeyringInfo *keyring_info,
- gboolean value);
-gboolean gnome_keyring_info_get_lock_on_idle (GnomeKeyringInfo *keyring_info);
-void gnome_keyring_info_set_lock_timeout (GnomeKeyringInfo *keyring_info,
- guint32 value);
-guint32 gnome_keyring_info_get_lock_timeout (GnomeKeyringInfo *keyring_info);
-time_t gnome_keyring_info_get_mtime (GnomeKeyringInfo *keyring_info);
-time_t gnome_keyring_info_get_ctime (GnomeKeyringInfo *keyring_info);
-gboolean gnome_keyring_info_get_is_locked (GnomeKeyringInfo *keyring_info);
-
-gpointer gnome_keyring_find_items (GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-gpointer gnome_keyring_find_itemsv (GnomeKeyringItemType type,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data,
- ...);
-
-GnomeKeyringResult gnome_keyring_find_items_sync (GnomeKeyringItemType type,
- GnomeKeyringAttributeList *attributes,
- GList **found);
-GnomeKeyringResult gnome_keyring_find_itemsv_sync (GnomeKeyringItemType type,
- GList **found,
- ...);
-
-gpointer gnome_keyring_item_create (const char *keyring,
- GnomeKeyringItemType type,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret,
- gboolean update_if_exists,
- GnomeKeyringOperationGetIntCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_create_sync (const char *keyring,
- GnomeKeyringItemType type,
- const char *display_name,
- GnomeKeyringAttributeList *attributes,
- const char *secret,
- gboolean update_if_exists,
- guint32 *item_id);
-gpointer gnome_keyring_item_delete (const char *keyring,
- guint32 id,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_delete_sync (const char *keyring,
- guint32 id);
-gpointer gnome_keyring_item_get_info (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetItemInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_get_info_sync (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo **info);
-gpointer gnome_keyring_item_get_info_full (const char *keyring,
- guint32 id,
- guint32 flags,
- GnomeKeyringOperationGetItemInfoCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_get_info_full_sync (const char *keyring,
- guint32 id,
- guint32 flags,
- GnomeKeyringItemInfo **info);
-gpointer gnome_keyring_item_set_info (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo *info,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_set_info_sync (const char *keyring,
- guint32 id,
- GnomeKeyringItemInfo *info);
-gpointer gnome_keyring_item_get_attributes (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetAttributesCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_get_attributes_sync (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList **attributes);
-gpointer gnome_keyring_item_set_attributes (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList *attributes,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_set_attributes_sync (const char *keyring,
- guint32 id,
- GnomeKeyringAttributeList *attributes);
-gpointer gnome_keyring_item_get_acl (const char *keyring,
- guint32 id,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_get_acl_sync (const char *keyring,
- guint32 id,
- GList **acl);
-gpointer gnome_keyring_item_set_acl (const char *keyring,
- guint32 id,
- GList *acl,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_item_set_acl_sync (const char *keyring,
- guint32 id,
- GList *acl);
-
-gpointer gnome_keyring_item_grant_access_rights (const gchar *keyring,
- const gchar *display_name,
- const gchar *full_path,
- const guint32 id,
- const GnomeKeyringAccessType rights,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-
-GnomeKeyringResult gnome_keyring_item_grant_access_rights_sync (const char *keyring,
- const char *display_name,
- const char *full_path,
- const guint32 id,
- const GnomeKeyringAccessType rights);
-
-void gnome_keyring_item_info_free (GnomeKeyringItemInfo *item_info);
-GnomeKeyringItemInfo *gnome_keyring_item_info_new (void);
-GnomeKeyringItemInfo *gnome_keyring_item_info_copy (GnomeKeyringItemInfo *item_info);
-GnomeKeyringItemType gnome_keyring_item_info_get_type (GnomeKeyringItemInfo *item_info);
-void gnome_keyring_item_info_set_type (GnomeKeyringItemInfo *item_info,
- GnomeKeyringItemType type);
-char * gnome_keyring_item_info_get_secret (GnomeKeyringItemInfo *item_info);
-void gnome_keyring_item_info_set_secret (GnomeKeyringItemInfo *item_info,
- const char *value);
-char * gnome_keyring_item_info_get_display_name (GnomeKeyringItemInfo *item_info);
-void gnome_keyring_item_info_set_display_name (GnomeKeyringItemInfo *item_info,
- const char *value);
-time_t gnome_keyring_item_info_get_mtime (GnomeKeyringItemInfo *item_info);
-time_t gnome_keyring_item_info_get_ctime (GnomeKeyringItemInfo *item_info);
-
-GnomeKeyringApplicationRef * gnome_keyring_application_ref_new (void);
-GnomeKeyringApplicationRef * gnome_keyring_application_ref_copy (const GnomeKeyringApplicationRef *app);
-void gnome_keyring_application_ref_free (GnomeKeyringApplicationRef *app);
-
-GnomeKeyringAccessControl * gnome_keyring_access_control_new (const GnomeKeyringApplicationRef *application,
- GnomeKeyringAccessType types_allowed);
-GnomeKeyringAccessControl * gnome_keyring_access_control_copy (GnomeKeyringAccessControl *ac);
-
-
-void gnome_keyring_access_control_free (GnomeKeyringAccessControl *ac);
-GList * gnome_keyring_acl_copy (GList *list);
-void gnome_keyring_acl_free (GList *acl);
-
-
-char * gnome_keyring_item_ac_get_display_name (GnomeKeyringAccessControl *ac);
-void gnome_keyring_item_ac_set_display_name (GnomeKeyringAccessControl *ac,
- const char *value);
-
-char * gnome_keyring_item_ac_get_path_name (GnomeKeyringAccessControl *ac);
-void gnome_keyring_item_ac_set_path_name (GnomeKeyringAccessControl *ac,
- const char *value);
-
-
-GnomeKeyringAccessType gnome_keyring_item_ac_get_access_type (GnomeKeyringAccessControl *ac);
-void gnome_keyring_item_ac_set_access_type (GnomeKeyringAccessControl *ac,
- const GnomeKeyringAccessType value);
-
-/* ------------------------------------------------------------------------------
- * A Simpler API
- */
-
-typedef struct {
- GnomeKeyringItemType item_type;
- struct {
- const gchar* name;
- GnomeKeyringAttributeType type;
- } attributes[32];
-
- /* <private> */
- gpointer reserved1;
- gpointer reserved2;
- gpointer reserved3;
-} GnomeKeyringPasswordSchema;
-
-extern const GnomeKeyringPasswordSchema* GNOME_KEYRING_NETWORK_PASSWORD;
-
-gpointer gnome_keyring_store_password (const GnomeKeyringPasswordSchema* schema,
- const gchar *keyring,
- const gchar *display_name,
- const gchar *password,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data,
- ...) G_GNUC_NULL_TERMINATED;
-
-GnomeKeyringResult gnome_keyring_store_password_sync (const GnomeKeyringPasswordSchema* schema,
- const gchar *keyring,
- const gchar *display_name,
- const gchar *password,
- ...) G_GNUC_NULL_TERMINATED;
-
-gpointer gnome_keyring_find_password (const GnomeKeyringPasswordSchema* schema,
- GnomeKeyringOperationGetStringCallback callback,
- gpointer data,
- GDestroyNotify destroy_data,
- ...) G_GNUC_NULL_TERMINATED;
-
-GnomeKeyringResult gnome_keyring_find_password_sync (const GnomeKeyringPasswordSchema* schema,
- gchar **password,
- ...) G_GNUC_NULL_TERMINATED;
-
-gpointer gnome_keyring_delete_password (const GnomeKeyringPasswordSchema* schema,
- GnomeKeyringOperationDoneCallback callback,
- gpointer data,
- GDestroyNotify destroy_data,
- ...) G_GNUC_NULL_TERMINATED;
-
-GnomeKeyringResult gnome_keyring_delete_password_sync (const GnomeKeyringPasswordSchema* schema,
- ...) G_GNUC_NULL_TERMINATED;
-
-void gnome_keyring_free_password (gchar *password);
-
-/* ------------------------------------------------------------------------------
- * Special Helpers for network password items
- */
-
-typedef struct {
- char *keyring;
- guint32 item_id;
-
- char *protocol;
- char *server;
- char *object;
- char *authtype;
- guint32 port;
-
- char *user;
- char *domain;
- char *password;
-} GnomeKeyringNetworkPasswordData;
-
-void gnome_keyring_network_password_free (GnomeKeyringNetworkPasswordData *data);
-void gnome_keyring_network_password_list_free (GList *list);
-
-gpointer gnome_keyring_find_network_password (const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- GnomeKeyringOperationGetListCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_find_network_password_sync (const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- GList **results);
-gpointer gnome_keyring_set_network_password (const char *keyring,
- const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- const char *password,
- GnomeKeyringOperationGetIntCallback callback,
- gpointer data,
- GDestroyNotify destroy_data);
-GnomeKeyringResult gnome_keyring_set_network_password_sync (const char *keyring,
- const char *user,
- const char *domain,
- const char *server,
- const char *object,
- const char *protocol,
- const char *authtype,
- guint32 port,
- const char *password,
- guint32 *item_id);
-
-/* -----------------------------------------------------------------------------
- * USED ONLY BY THE SESSION
- */
-
-/* Deprecated */
-GnomeKeyringResult gnome_keyring_daemon_set_display_sync (const char *display);
-
-GnomeKeyringResult gnome_keyring_daemon_prepare_environment_sync (void);
-
-#endif /* GNOME_KEYRING_H */
diff --git a/library/tests/Makefile.am b/library/tests/Makefile.am
deleted file mode 100644
index 1a7e74ed..00000000
--- a/library/tests/Makefile.am
+++ /dev/null
@@ -1,19 +0,0 @@
-
-UNIT_AUTO = \
- unit-test-memory.c \
- unit-test-keyrings.c \
- unit-test-other.c \
- unit-test-daemon-setup.c
-
-UNIT_PROMPT = \
- unit-test-login-prompt.c \
- unit-test-keyrings-prompt.c \
- unit-test-daemon-setup.c
-
-UNIT_LIBS = \
- $(top_builddir)/library/libgnome-keyring.la
-
-UNIT_FLAGS = \
- -DEXTERNAL_TEST
-
-include $(top_srcdir)/tests/test.make
diff --git a/library/tests/unit-test-daemon-setup.c b/library/tests/unit-test-daemon-setup.c
deleted file mode 100644
index 3e7cf9f3..00000000
--- a/library/tests/unit-test-daemon-setup.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-daemon-setup.c: Start a gnome-keyring-daemon process for testing
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-
-#include "run-auto-test.h"
-
-#include "library/gnome-keyring.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static GPid daemon_pid;
-
-void unit_setup_daemon (void)
-{
- GError *err = NULL;
- gchar *args[3];
- const gchar *outside, *path;
- gboolean start = FALSE;
- gchar *socket;
-
- /* If already setup somewhere else, then don't start daemon here */
- outside = g_getenv ("GNOME_KEYRING_OUTSIDE_TEST");
- if (!outside || !outside[0]) {
- start = TRUE;
- }
-
- path = g_getenv ("GNOME_KEYRING_TEST_PATH");
- g_assert (path && path[0]);
-
- socket = g_strdup_printf ("%s/socket", path);
- g_setenv ("GNOME_KEYRING_SOCKET", socket, TRUE);
-
- if (!start)
- return;
-
- g_printerr ("Starting gnome-keyring-daemon...\n");
-
- args[0] = "../../daemon/gnome-keyring-daemon";
- args[1] = "-f";
- args[2] = NULL;
-
- if (!g_spawn_async (NULL, args, NULL, G_SPAWN_LEAVE_DESCRIPTORS_OPEN | G_SPAWN_DO_NOT_REAP_CHILD,
- NULL, NULL, &daemon_pid, &err)) {
- g_error ("couldn't start gnome-keyring-daemon for testing: %s",
- err && err->message ? err->message : "");
- g_assert_not_reached ();
- }
-
- /* Let it startup properly */
- sleep (2);
-}
-
-void unit_teardown_daemon (void)
-{
- if (daemon_pid)
- kill (daemon_pid, SIGTERM);
- /* We're exiting soon anyway, no need to wait */
-}
diff --git a/library/tests/unit-test-keyrings-prompt.c b/library/tests/unit-test-keyrings-prompt.c
deleted file mode 100644
index 71876bb9..00000000
--- a/library/tests/unit-test-keyrings-prompt.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings-prompt.c: Test basic prompt functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "run-prompt-test.h"
-
-#include "library/gnome-keyring.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static void
-TELL(const char* what)
-{
- printf("INTERACTION: %s\n", what);
-}
-
-
-gchar* default_keyring = NULL;
-
-#define KEYRING_NAME "unit-test-keyring"
-#define DISPLAY_NAME "Item Display Name"
-#define SECRET "item-secret"
-
-void unit_test_stash_default (CuTest* cu)
-{
- GnomeKeyringResult res;
- res = gnome_keyring_get_default_keyring_sync (&default_keyring);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_create_prompt_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- TELL("press 'DENY'");
- res = gnome_keyring_create_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
-
- TELL("type in a new keyring password and click 'OK'");
-
- res = gnome_keyring_create_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_create_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_ALREADY_EXISTS, res);
-
- res = gnome_keyring_set_default_keyring_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-
-void unit_test_change_prompt_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- TELL("press 'DENY' here");
-
- res = gnome_keyring_change_password_sync (KEYRING_NAME, NULL, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
-
- TELL("type in original password then new keyring password and click 'OK'");
-
- res = gnome_keyring_change_password_sync (KEYRING_NAME, NULL, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_acls (CuTest* cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringAccessControl *ac, *acl;
- GnomeKeyringItemInfo *info;
- GList *acls, *l;
- guint id;
- gchar *prog;
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (KEYRING_NAME, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Fry", NULL, "secret", FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Get the ACLs */
- gnome_keyring_item_get_acl_sync (KEYRING_NAME, id, &acls);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Make sure we're in the list, since we created */
- prog = g_get_prgname ();
- acl = NULL;
- for (l = acls; l; l = g_list_next (l)) {
- ac = (GnomeKeyringAccessControl*)l->data;
- if (strstr (gnome_keyring_item_ac_get_path_name (ac), prog)) {
- acl = ac;
- break;
- }
- }
-
- CuAssert(cu, "couldn't find ACL for this process on new item", acl != NULL);
-
- /* Now remove all ACLs from the item */
- l = NULL;
- gnome_keyring_item_set_acl_sync (KEYRING_NAME, id, l);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Shouldn't be prompted here, not accessing secrets */
- TELL("No prompt should show up at this point");
- res = gnome_keyring_item_get_info_full_sync (KEYRING_NAME, id, GNOME_KEYRING_ITEM_INFO_BASICS, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "returned a secret when it shouldn't have", gnome_keyring_item_info_get_secret (info) == NULL);
- sleep(2);
-
- /* Now try to read the item, should be prompted */
- TELL("Press 'Allow Once' to give program access to the data");
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "didn't return a secret when it should have", gnome_keyring_item_info_get_secret (info) != NULL);
-
- /* Now try to read the item again, give forever access */
- TELL("Press 'Always Allow' to give program access to the data");
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Now try to read the item, should be prompted */
- TELL("No prompt should show up at this point");
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- sleep(2);
-}
-
-void unit_test_application_secret (CuTest* cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringItemInfo *info;
- GList *acls;
- guint id;
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (KEYRING_NAME,
- GNOME_KEYRING_ITEM_GENERIC_SECRET | GNOME_KEYRING_ITEM_APPLICATION_SECRET,
- "Fry", NULL, "secret", FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Remove all ACLs from the item */
- acls = NULL;
- gnome_keyring_item_set_acl_sync (KEYRING_NAME, id, acls);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Shouldn't be prompted here, not accessing secrets */
- TELL("No prompt should show up at this point");
- res = gnome_keyring_item_get_info_full_sync (KEYRING_NAME, id, GNOME_KEYRING_ITEM_INFO_BASICS, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
- sleep(2);
-
- /* Now try to read the item, should be prompted */
- TELL("No prompt should show up at this point");
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
- sleep(2);
-}
-
-void unit_test_unlock_prompt (CuTest *cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_lock_all_sync ();
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- TELL("press 'DENY' here");
- res = gnome_keyring_unlock_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
-
- TELL("type in keyring password and click 'OK'");
- res = gnome_keyring_unlock_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_find_locked (CuTest *cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringAttributeList* attrs;
- guint id;
- GList *found;
-
- GTimeVal tv;
- guint32 unique;
-
- /* Make a unique value */
- g_get_current_time (&tv);
- unique = ((guint32)tv.tv_sec) ^ ((guint32)tv.tv_usec);
-
- attrs = gnome_keyring_attribute_list_new ();
- gnome_keyring_attribute_list_append_string (attrs, "dog", "barks");
- gnome_keyring_attribute_list_append_string (attrs, "bird", "tweets");
- gnome_keyring_attribute_list_append_string (attrs, "iguana", "silence");
- gnome_keyring_attribute_list_append_uint32 (attrs, "num", unique);
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Yay!", attrs, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Lock the keyring ... */
- res = gnome_keyring_lock_all_sync ();
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Now, try to access the item */
- TELL("type in keyring password and click 'OK'");
- res = gnome_keyring_find_items_sync (GNOME_KEYRING_ITEM_GENERIC_SECRET, attrs, &found);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- CuAssert(cu, "Wrong number of items found", g_list_length (found) == 1);
-}
-
-void unit_test_get_info_locked (CuTest *cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringItemInfo *info;
- guint id;
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "My test locked", NULL, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Lock the keyring ... */
- res = gnome_keyring_lock_all_sync ();
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Now, try to access the item */
- TELL("type in keyring password and click 'OK'");
- res = gnome_keyring_item_get_info_sync (NULL, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_cleaup (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- if (default_keyring) {
- res = gnome_keyring_set_default_keyring_sync (default_keyring);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- }
-}
diff --git a/library/tests/unit-test-keyrings.c b/library/tests/unit-test-keyrings.c
deleted file mode 100644
index 7d67fad1..00000000
--- a/library/tests/unit-test-keyrings.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings.c: Test basic keyring functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "library/gnome-keyring.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static GList* keyrings = NULL;
-
-#define PASSWORD "my-keyring-password"
-#define KEYRING_NAME "unit-test-keyring"
-#define INVALID_KEYRING_NAME "invalid-keyring-name"
-#define DISPLAY_NAME "Item Display Name"
-#define SECRET "item-secret"
-
-void unit_test_remove_incomplete (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- if (res != GNOME_KEYRING_RESULT_NO_SUCH_KEYRING)
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_create_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- /* No default keyring */
- res = gnome_keyring_set_default_keyring_sync (NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_create_sync (KEYRING_NAME, PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_create_sync (KEYRING_NAME, PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_ALREADY_EXISTS, res);
-}
-
-void unit_test_set_default_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
- gchar* name;
-
- res = gnome_keyring_set_default_keyring_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_set_default_keyring_sync (INVALID_KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING, res);
-
- res = gnome_keyring_get_default_keyring_sync (&name);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssertPtrNotNull(cu, name);
- CuAssertStrEquals(cu, name, KEYRING_NAME);
-}
-
-void unit_test_delete_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
- gchar* name;
-
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING, res);
-
- res = gnome_keyring_get_default_keyring_sync (&name);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "returning deleted keyring as default", name == NULL || strcmp (name, KEYRING_NAME) != 0);
-}
-
-void unit_test_recreate_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- /* Create the test keyring again and set as default */
- res = gnome_keyring_create_sync (KEYRING_NAME, PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- res = gnome_keyring_set_default_keyring_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_create_list_items (CuTest* cu)
-{
- GnomeKeyringResult res;
- guint id, id2, id3;
- GList *ids;
- GnomeKeyringItemInfo *info;
- GnomeKeyringAttributeList* attrs;
-
- /* Try in an invalid keyring */
- res = gnome_keyring_item_create_sync (INVALID_KEYRING_NAME, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- DISPLAY_NAME, NULL, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING, res);
-
- /* Create for real in valid keyring */
- res = gnome_keyring_item_create_sync (KEYRING_NAME, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- DISPLAY_NAME, NULL, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Update the item, shouldn't create new */
- res = gnome_keyring_item_create_sync (KEYRING_NAME, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- DISPLAY_NAME, NULL, SECRET, TRUE, &id3);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "Updated item doesn't have the same id", id == id3);
-
- /* Update in NULL keyring, should use default */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- DISPLAY_NAME, NULL, SECRET, TRUE, &id3);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "Updated item in NULL keyring doesn't have the same id", id == id3);
-
- /* Create new, shouldn't update */
- res = gnome_keyring_item_create_sync (KEYRING_NAME, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Another display name", NULL, SECRET, FALSE, &id2);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "Two items created with the same id", id2 != id);
-
- /* Set some attributes, NULL keyring = default */
- attrs = gnome_keyring_attribute_list_new ();
- gnome_keyring_attribute_list_append_string (attrs, "bender", "rocks");
- res = gnome_keyring_item_set_attributes_sync (NULL, id, attrs);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* List ids that were created */
- res = gnome_keyring_list_item_ids_sync (KEYRING_NAME, &ids);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Check that they're the same ids */
- CuAssert(cu, "Wrong number of ids created", g_list_length (ids) == 2);
- if (g_list_length (ids) == 2) {
- CuAssertIntEquals(cu, id, GPOINTER_TO_UINT (ids->data));
- CuAssertIntEquals(cu, id2, GPOINTER_TO_UINT (ids->next->data));
- }
-
- /* Now make sure both have that same secret */
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- if (res == GNOME_KEYRING_RESULT_OK)
- CuAssert(cu, "Secret has changed", strcmp (gnome_keyring_item_info_get_secret (info), SECRET) == 0);
-
- /* And try it with a NULL (ie: default) keyring */
- res = gnome_keyring_item_get_info_sync (NULL, id2, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- if (res == GNOME_KEYRING_RESULT_OK)
- CuAssert(cu, "Secret has changed", strcmp (gnome_keyring_item_info_get_secret (info), SECRET) == 0);
-
- /* Set the info back, should work */
- res = gnome_keyring_item_set_info_sync (NULL, id2, info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Make sure it's still the same */
- res = gnome_keyring_item_get_info_sync (KEYRING_NAME, id, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- if (res == GNOME_KEYRING_RESULT_OK)
- CuAssert(cu, "Secret has changed", strcmp (gnome_keyring_item_info_get_secret (info), SECRET) == 0);
-
- /* Now delete the item */
- res = gnome_keyring_item_delete_sync (NULL, id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_find_keyrings (CuTest* cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringAttributeList* attrs;
- GnomeKeyringAttribute *attr;
- GnomeKeyringFound* f;
- guint id, i;
- GList *found;
-
- attrs = gnome_keyring_attribute_list_new ();
- gnome_keyring_attribute_list_append_string (attrs, "dog", "woof");
- gnome_keyring_attribute_list_append_string (attrs, "bird", "cheep");
- gnome_keyring_attribute_list_append_string (attrs, "iguana", "");
- gnome_keyring_attribute_list_append_uint32 (attrs, "num", 3);
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Barnyard", attrs, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Now try to find it */
- res = gnome_keyring_find_items_sync (GNOME_KEYRING_ITEM_GENERIC_SECRET, attrs, &found);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "Too many items found", g_list_length (found) == 1);
-
- f = (GnomeKeyringFound*)found->data;
- CuAssert(cu, "Wrong item found", f->item_id == id);
- CuAssert(cu, "Found in wrong keyring", strcmp (f->keyring, KEYRING_NAME) == 0);
- CuAssert(cu, "Wrong secret came back", strcmp (f->secret, SECRET) == 0);
-
- res = gnome_keyring_item_get_attributes_sync (NULL, id, &attrs);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Make sure that dog does in fact woof */
- attr = NULL;
- for(i = 0; i < attrs->len; ++i)
- {
- attr = &gnome_keyring_attribute_list_index (attrs, i);
- if (strcmp (attr->name, "dog") == 0)
- break;
- }
-
- CuAssertPtrNotNull (cu, attr);
- if (attr) {
- CuAssert (cu, "invalid attribute found", strcmp (attr->name, "dog") == 0);
- CuAssert (cu, "invalid attribute type", attr->type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING);
- CuAssert (cu, "invalid attribute value", strcmp (attr->value.string, "woof") == 0);
- }
-}
-
-/*
- * A find that does not match should return 'Not Found':
- * http://bugzilla.gnome.org/show_bug.cgi?id=476682
- */
-void unit_test_find_invalid (CuTest* cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringAttributeList* attrs;
- GList *found;
-
- attrs = gnome_keyring_attribute_list_new ();
- gnome_keyring_attribute_list_append_string (attrs, "fry-unset-attribute", "rocks");
-
- /* Now try to find it */
- res = gnome_keyring_find_items_sync (GNOME_KEYRING_ITEM_GENERIC_SECRET, attrs, &found);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_NO_MATCH, res);
-}
-
-void unit_test_lock_keyrings (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_lock_all_sync ();
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_unlock_sync (KEYRING_NAME, PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* An unlock when already unlocked is fine */
- res = gnome_keyring_unlock_sync (KEYRING_NAME, PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_unlock_sync ("boooyaaah", PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_NO_SUCH_KEYRING, res);
-}
-
-void unit_test_change_password (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_change_password_sync (KEYRING_NAME, PASSWORD, "new password");
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_keyring_info (CuTest* cu)
-{
- GnomeKeyringResult res;
- GnomeKeyringInfo *info;
-
- res = gnome_keyring_get_info_sync (NULL, &info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_set_info_sync (NULL, info);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_list_keyrings (CuTest* cu)
-{
- GnomeKeyringResult res;
- GList *l;
-
- res = gnome_keyring_list_keyring_names_sync (&keyrings);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- printf("\t\tkeyrings:\n");
- for (l = keyrings; l; l = g_list_next (l))
- printf("\t\t %s\n", (gchar*)l->data);
-}
-
-static GnomeKeyringResult grant_access_result = GNOME_KEYRING_RESULT_CANCELLED;
-
-static void done_grant_access (GnomeKeyringResult res, gpointer data)
-{
- grant_access_result = res;
- test_mainloop_quit ();
-}
-
-void unit_test_keyring_grant_access (CuTest *cu)
-{
- GList *acl, *l;
- GnomeKeyringResult res;
- gpointer op;
- gboolean found;
- guint id;
-
- /* Create teh item */
- res = gnome_keyring_item_create_sync (NULL, GNOME_KEYRING_ITEM_GENERIC_SECRET,
- "Barnyard", NULL, SECRET, FALSE, &id);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Grant strange program access (async) */
- grant_access_result = GNOME_KEYRING_RESULT_CANCELLED;
- op = gnome_keyring_item_grant_access_rights (NULL, "Strange Application",
- "/usr/bin/strangeness", id,
- GNOME_KEYRING_ACCESS_READ,
- done_grant_access, NULL, NULL);
- CuAssert(cu, "return null op", op != NULL);
- CuAssert(cu, "callback already called", grant_access_result == GNOME_KEYRING_RESULT_CANCELLED);
-
- test_mainloop_run (2000);
-
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, grant_access_result);
-
- /* Now list the stuff */
- res = gnome_keyring_item_get_acl_sync (NULL, id, &acl);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Make sure it's in the list */
- found = FALSE;
- for (l = acl; l; l = g_list_next (l)) {
- GnomeKeyringAccessControl *ac = (GnomeKeyringAccessControl*)l->data;
- CuAssert(cu, "null access control", ac != NULL);
- CuAssert(cu, "null access control pathname", gnome_keyring_item_ac_get_path_name (ac) != NULL);
-
- if (strcmp (gnome_keyring_item_ac_get_path_name (ac), "/usr/bin/strangeness") == 0)
- found = TRUE;
- }
-
- CuAssert(cu, "couldn't find acces granted", found == TRUE);
-
- gnome_keyring_acl_free (acl);
-}
-
-/* -----------------------------------------------------------------------------
- * SIMPLE PASSWORD API
- */
-
-static GnomeKeyringPasswordSchema our_schema = {
- GNOME_KEYRING_ITEM_GENERIC_SECRET,
- {
- { "dog", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "legs", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
- { NULL, 0 }
- },
-};
-
-static void
-done_store_password (GnomeKeyringResult res, gpointer data)
-{
- *((GnomeKeyringResult*)data) = res;
- test_mainloop_quit ();
-}
-
-void unit_test_store_password (CuTest *cu)
-{
- GnomeKeyringResult res;
- gpointer op;
-
- /* Synchronous, bad arguments */
- res = gnome_keyring_store_password_sync (&our_schema, NULL,
- "Display name", "password",
- NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_BAD_ARGUMENTS, res);
-
- /* Synchronous, save to default keyring */
- res = gnome_keyring_store_password_sync (&our_schema, NULL,
- "Display name", "password",
- "dog", "woof",
- "legs", 4,
- NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Asynchronous, save to session */
- res = GNOME_KEYRING_RESULT_CANCELLED;
- op = gnome_keyring_store_password (&our_schema, GNOME_KEYRING_SESSION,
- "Display name", "password",
- done_store_password, &res, NULL,
- "dog", "woof",
- "legs", 4,
- NULL);
- CuAssert(cu, "async operation is NULL", op != NULL);
- CuAssert(cu, "callback already called", res == GNOME_KEYRING_RESULT_CANCELLED);
-
- test_mainloop_run (2000);
-
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-static GnomeKeyringResult find_password_result;
-
-static void
-done_find_password (GnomeKeyringResult res, const gchar* password, gpointer data)
-{
- find_password_result = res;
-
- if(res == GNOME_KEYRING_RESULT_OK) {
- CuTest *cu = (CuTest*)data;
- CuAssert(cu, "Null password returned", password != NULL);
- CuAssert(cu, "Wrong returned from find", strcmp (password, "password") == 0);
- }
-
- test_mainloop_quit ();
-}
-
-void unit_test_find_password (CuTest *cu)
-{
- GnomeKeyringResult res;
- gchar *password;
- gpointer op;
-
- /* Synchronous, bad arguments */
- res = gnome_keyring_find_password_sync (&our_schema, &password,
- NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_BAD_ARGUMENTS, res);
-
- /* Synchronous, valid*/
- res = gnome_keyring_find_password_sync (&our_schema, &password,
- "dog", "woof",
- "legs", 4,
- NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_OK, res);
- CuAssert(cu, "Null password returned", password != NULL);
- CuAssert(cu, "Wrong returned from find", strcmp (password, "password") == 0);
- gnome_keyring_free_password (password);
-
- /* Asynchronous, less arguments */
- find_password_result = GNOME_KEYRING_RESULT_CANCELLED;
- op = gnome_keyring_find_password (&our_schema,
- done_find_password, cu, NULL,
- "legs", 4,
- NULL);
- CuAssert(cu, "async operation is NULL", op != NULL);
- CuAssert(cu, "callback already called", find_password_result == GNOME_KEYRING_RESULT_CANCELLED);
-
- test_mainloop_run (2000);
-
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, find_password_result);
-}
-
-static void
-done_delete_password (GnomeKeyringResult res, gpointer data)
-{
- *((GnomeKeyringResult*)data) = res;
- test_mainloop_quit ();
-}
-
-void unit_test_delete_password (CuTest *cu)
-{
- GnomeKeyringResult res;
- gpointer op;
-
- /* Synchronous, bad arguments */
- res = gnome_keyring_delete_password_sync (&our_schema, NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_BAD_ARGUMENTS, res);
-
- /* Synchronous, no match */
- res = gnome_keyring_delete_password_sync (&our_schema,
- "dog", "waoof",
- "legs", 5,
- NULL);
- CuAssertIntEquals (cu, GNOME_KEYRING_RESULT_NO_MATCH, res);
-
- /* Asynchronous, less arguments */
- res = GNOME_KEYRING_RESULT_CANCELLED;
- op = gnome_keyring_delete_password (&our_schema,
- done_delete_password, &res, NULL,
- "legs", 4,
- NULL);
- CuAssert(cu, "async operation is NULL", op != NULL);
- CuAssert(cu, "callback already called", res == GNOME_KEYRING_RESULT_CANCELLED);
-
- test_mainloop_run (2000);
-
- /* Should have already been deleted by the second call above */
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_cleaup (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
diff --git a/library/tests/unit-test-login-prompt.c b/library/tests/unit-test-login-prompt.c
deleted file mode 100644
index be1f1f09..00000000
--- a/library/tests/unit-test-login-prompt.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-keyrings-prompt.c: Test basic prompt functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "run-prompt-test.h"
-
-#include "library/gnome-keyring.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static void
-TELL(const char* what)
-{
- printf("INTERACTION: %s\n", what);
-}
-
-
-#define THE_PASSWORD "test"
-#define OTHER_PASSWORD "other"
-#define KEYRING_LOGIN "login"
-#define KEYRING_NAME "auto-unlock-keyring"
-#define DISPLAY_NAME "Item Display Name"
-#define SECRET "item-secret"
-
-void unit_test_create_unlock_login (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- /* Remove the login keyring */
- res = gnome_keyring_delete_sync (KEYRING_LOGIN);
- if (res != GNOME_KEYRING_RESULT_NO_SUCH_KEYRING)
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Now create it with our password */
- res = gnome_keyring_create_sync (KEYRING_LOGIN, THE_PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_auto_keyring (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- /* Remove the auto unlock keyring */
- res = gnome_keyring_delete_sync (KEYRING_NAME);
- if (res != GNOME_KEYRING_RESULT_NO_SUCH_KEYRING)
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_create_sync (KEYRING_NAME, THE_PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_lock_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- /* Prompt the user to unlock, and check the option */
- TELL("type 'test' as the password and check the 'Automatically unlock' option");
- res = gnome_keyring_unlock_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_lock_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- TELL("No prompt should show up at this point");
- res = gnome_keyring_unlock_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
- sleep(2);
-}
-
-void unit_test_auto_keyring_stale (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- /* Remove the auto unlock keyring */
- res = gnome_keyring_change_password_sync (KEYRING_NAME, THE_PASSWORD, OTHER_PASSWORD);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- res = gnome_keyring_lock_sync (KEYRING_NAME);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-
- TELL("Press 'deny' here");
- res = gnome_keyring_unlock_sync (KEYRING_NAME, NULL);
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_DENIED, res);
-}
diff --git a/library/tests/unit-test-memory.c b/library/tests/unit-test-memory.c
deleted file mode 100644
index 252fd7c0..00000000
--- a/library/tests/unit-test-memory.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-memory.c: Test memory allocation functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "library/gnome-keyring-memory.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-#define IS_ZERO ~0
-
-static gsize
-find_non_zero (gpointer mem, gsize len)
-{
- guchar *b, *e;
- gsize sz = 0;
- for (b = (guchar*)mem, e = ((guchar*)mem) + len; b != e; ++b, ++sz) {
- if (*b != 0x00)
- return sz;
- }
-
- return IS_ZERO;
-}
-
-void unit_test_alloc_free (CuTest* cu)
-{
- gpointer p;
- gboolean ret;
-
- p = gnome_keyring_memory_alloc (512);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 512));
-
- memset (p, 0x67, 512);
-
- ret = gnome_keyring_memory_is_secure (p);
- CuAssertIntEquals (cu, ret, TRUE);
-
- gnome_keyring_memory_free (p);
-}
-
-void unit_test_alloc_two (CuTest* cu)
-{
- gpointer p, p2;
- gboolean ret;
-
- p2 = gnome_keyring_memory_alloc (4);
- CuAssertPtrNotNull (cu, p2);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p2, 4));
-
- memset (p2, 0x67, 4);
-
- p = gnome_keyring_memory_alloc (16200);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 16200));
-
- memset (p, 0x67, 16200);
-
- ret = gnome_keyring_memory_is_secure (p);
- CuAssertIntEquals (cu, ret, TRUE);
-
- gnome_keyring_memory_free (p2);
- gnome_keyring_memory_free (p);
-}
-
-void unit_test_realloc (CuTest* cu)
-{
- gchar *str = "a test string to see if realloc works properly";
- gpointer p, p2;
- int r;
- gsize len;
-
- len = strlen (str) + 1;
-
- p = gnome_keyring_memory_realloc (NULL, len);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, len));
-
- strcpy ((gchar*)p, str);
-
- p2 = gnome_keyring_memory_realloc (p, 512);
- CuAssertPtrNotNull (cu, p2);
-
- r = strcmp (p2, str);
- CuAssert (cu, "strings not equal after realloc", r == 0);
-
- p = gnome_keyring_memory_realloc (p2, 0);
- CuAssert (cu, "should have freed memory", p == NULL);
-}
-
-void unit_test_realloc_across (CuTest *cu)
-{
- gpointer p, p2;
-
- /* Tiny allocation */
- p = gnome_keyring_memory_realloc (NULL, 1088);
- CuAssertPtrNotNull (cu, p);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p, 1088));
-
- /* Reallocate to a large one, will have to have changed blocks */
- p2 = gnome_keyring_memory_realloc (p, 16200);
- CuAssertPtrNotNull (cu, p2);
- CuAssertIntEquals (cu, IS_ZERO, find_non_zero (p2, 16200));
-
- gnome_keyring_memory_free (p2);
-}
diff --git a/library/tests/unit-test-other.c b/library/tests/unit-test-other.c
deleted file mode 100644
index e1495e97..00000000
--- a/library/tests/unit-test-other.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-other.c: Test miscellaneous functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "run-auto-test.h"
-
-#include "library/gnome-keyring.h"
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-void unit_test_set_display (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_daemon_set_display_sync (":0.0");
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_setup_environment (CuTest* cu)
-{
- GnomeKeyringResult res;
-
- res = gnome_keyring_daemon_prepare_environment_sync ();
- CuAssertIntEquals(cu, GNOME_KEYRING_RESULT_OK, res);
-}
-
-void unit_test_result_string (CuTest* cu)
-{
- const gchar *msg;
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_OK);
- CuAssert (cu, "should return an empty string", msg && !msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_CANCELLED);
- CuAssert (cu, "should return an empty string", msg && !msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_DENIED);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_NO_SUCH_KEYRING);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_BAD_ARGUMENTS);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_IO_ERROR);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-
- msg = gnome_keyring_result_to_message (GNOME_KEYRING_RESULT_KEYRING_ALREADY_EXISTS);
- CuAssert (cu, "should return a valid message", msg && msg[0]);
-}
diff --git a/pam/Makefile.am b/pam/Makefile.am
deleted file mode 100644
index 560a77f9..00000000
--- a/pam/Makefile.am
+++ /dev/null
@@ -1,32 +0,0 @@
-
-INCLUDES = \
- -I$(top_srcdir) \
- -DGNOME_KEYRING_DAEMON=\""$(bindir)/gnome-keyring-daemon"\"
-
-pamlibdir = $(PAM_DEST_DIR)
-pamlib_LTLIBRARIES = pam_gnome_keyring.la
-
-pam_gnome_keyring_la_SOURCES = \
- gkr-pam.h \
- gkr-pam-client.c \
- gkr-pam-module.c \
- gkr-pam-stubs.c
-
-pam_gnome_keyring_la_LIBADD = \
- $(top_builddir)/common/libgkr-module-common.la \
- -lpam
-
-pam_gnome_keyring_la_LDFLAGS = \
- -module -avoid-version \
- -export-symbols-regex 'pam_sm_'
-
-install-pam: install
- @echo "WARNING: install-pam is no longer used, use the --with-pam-dir configure option instead"
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
diff --git a/pam/gkr-pam-client.c b/pam/gkr-pam-client.c
deleted file mode 100644
index e5ae1d92..00000000
--- a/pam/gkr-pam-client.c
+++ /dev/null
@@ -1,416 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pam-client.h - Simple code for communicating with daemon
-
- Copyright (C) 2007 Stef Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pam.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-unix-credentials.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/un.h>
-#include <sys/uio.h>
-#include <sys/wait.h>
-
-#include <assert.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <unistd.h>
-
-#if defined(HAVE_GETPEERUCRED)
-#include <ucred.h>
-#endif
-
-#if defined(LOCAL_PEERCRED)
-#include <sys/param.h>
-#include <sys/ucred.h>
-#endif
-
-#define PAM_APP_NAME "Auto Login (PAM)"
-#define PAM_APP_NAME_LEN (sizeof (PAM_APP_NAME) - 1)
-
-static int
-check_peer_same_uid (int sock)
-{
- uid_t uid = -1;
-
- /*
- * Certain OS require a message to be sent over the unix socket for the
- * otherside to get the process credentials. Most uncool.
- *
- * The normal gnome-keyring protocol accomodates this and the client
- * sends a message/byte before sending anything else. This only works
- * for the daemon verifying the client.
- *
- * This code here is used by a client to verify the daemon is running
- * as the right user. Since we cannot modify the protocol, this only
- * works on OSs that can do this credentials lookup transparently.
- */
-
-/* Linux */
-#if defined(SO_PEERCRED)
- struct ucred cr;
- socklen_t cr_len = sizeof (cr);
-
- if (getsockopt (sock, SOL_SOCKET, SO_PEERCRED, &cr, &cr_len) == 0 &&
- cr_len == sizeof (cr)) {
- uid = cr.uid;
- } else {
- syslog (GKR_LOG_ERR, "could not get gnome-keyring-daemon socket credentials, "
- "(returned len %d/%d)\n", cr_len, (int) sizeof (cr));
- return -1;
- }
-
-
-/* The BSDs */
-#elif defined(LOCAL_PEERCRED)
- uid_t gid;
- struct xucred xuc;
- socklen_t xuc_len = sizeof (xuc);
-
- if (getsockopt (sock, SOL_SOCKET, LOCAL_PEERCRED, &xuc, &xuc_len) == 0 &&
- xuc_len == sizeof (xuc)) {
- uid = xuc.cr_uid;
- } else {
- syslog (GKR_LOG_ERR, "could not get gnome-keyring-daemon socket credentials, "
- "(returned len %d/%d)\n", xuc_len, (int)sizeof (xuc));
- return -1;
- }
-
-
-/* NOTE: Add more here */
-#else
- syslog (GKR_LOG_WARN, "Cannot verify that the process to which we are passing the login"
- " password is genuinely running as the same user login: not supported on this OS.");
- uid = geteuid ();
-
-
-#endif
-
- if (uid != geteuid ()) {
- syslog (GKR_LOG_ERR, "The gnome keyring socket is not running with the same "
- "credentials as the user login. Disconnecting.");
- return 0;
- }
-
- return 1;
-}
-
-static int
-write_credentials_byte (int sock)
-{
- for (;;) {
- if (gkr_unix_credentials_write (sock) < 0) {
- if (errno == EINTR || errno == EAGAIN)
- continue;
- syslog (GKR_LOG_ERR, "couldn't send credentials to daemon: %s",
- strerror (errno));
- return -1;
- }
-
- break;
- }
-
- return 0;
-}
-
-static int
-connect_to_daemon (const char *path)
-{
- struct sockaddr_un addr;
- struct stat st;
- int sock;
-
- /* First a bunch of checks to make sure nothing funny is going on */
-
- if (lstat (path, &st) < 0) {
- syslog (GKR_LOG_ERR, "Couldn't access gnome keyring socket: %s: %s",
- path, strerror (errno));
- return -1;
- }
-
- if (st.st_uid != geteuid ()) {
- syslog (GKR_LOG_ERR, "The gnome keyring socket is not owned with the same "
- "credentials as the user login: %s", path);
- return -1;
- }
-
- if (S_ISLNK(st.st_mode) || !S_ISSOCK(st.st_mode)) {
- syslog (GKR_LOG_ERR, "The gnome keyring socket is not a valid simple "
- "non-linked socket");
- return -1;
- }
-
- /* Now we connect */
-
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, path, sizeof (addr.sun_path));
-
- sock = socket (AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- syslog (GKR_LOG_ERR, "couldn't create socket: %s", strerror (errno));
- return -1;
- }
-
- /* close on exec */
- fcntl (sock, F_SETFD, 1);
-
- if (connect (sock, (struct sockaddr*) &addr, sizeof (addr)) < 0) {
- syslog (GKR_LOG_ERR, "couldn't connect to daemon at: %s: %s",
- path, strerror (errno));
- close (sock);
- return -1;
- }
-
- /* Verify the server is running as the right user */
-
- if (check_peer_same_uid (sock) <= 0) {
- close (sock);
- return -1;
- }
-
- /* This lets the server verify us */
-
- if (write_credentials_byte (sock) < 0) {
- close (sock);
- return -1;
- }
-
- return sock;
-}
-
-static void
-write_part (int fd, const unsigned char *data, int len, GnomeKeyringResult *res)
-{
- assert (res);
-
- /* Already an error present */
- if (*res != GNOME_KEYRING_RESULT_OK)
- return;
-
- assert (data);
-
- while (len > 0) {
- int r = write (fd, data, len);
- if (r < 0) {
- if (errno == EAGAIN)
- continue;
- syslog (GKR_LOG_ERR, "couldn't send data to gnome-keyring-daemon: %s",
- strerror (errno));
- *res = GNOME_KEYRING_RESULT_IO_ERROR;
- return;
- }
- data += r;
- len -= r;
- }
-}
-
-static int
-read_part (int fd, unsigned char *data, int len)
-{
- int r, all;
-
- all = len;
- while (len > 0) {
- r = read (fd, data, len);
- if (r < 0) {
- if (errno == EAGAIN)
- continue;
- syslog (GKR_LOG_ERR, "couldn't read data from gnome-keyring-daemon: %s",
- strerror (errno));
- return -1;
- }
- if (r == 0) {
- syslog (GKR_LOG_ERR, "couldn't read data from gnome-keyring-daemon: %s",
- "unexpected end of data");
- return -1;
- }
-
- data += r;
- len -= r;
- }
-
- return all;
-}
-
-static GnomeKeyringResult
-keyring_daemon_op (const char *socket, GnomeKeyringOpCode op, int argc,
- const char* argv[])
-{
- GnomeKeyringResult ret = GNOME_KEYRING_RESULT_OK;
- unsigned char buf[4];
- int i, sock = -1;
- uint oplen, l;
-
- assert (socket);
-
- /*
- * We only support operations with zero or more strings
- * and an empty (only result code) return.
- */
-
- assert (op == GNOME_KEYRING_OP_UNLOCK_KEYRING ||
- op == GNOME_KEYRING_OP_CREATE_KEYRING ||
- op == GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD);
-
- sock = connect_to_daemon (socket);
- if (sock < 0) {
- ret = -1;
- goto done;
- }
-
- /* Send the application packet / name */
- gkr_buffer_encode_uint32 (buf, PAM_APP_NAME_LEN + 8);
- write_part (sock, buf, 4, &ret);
- gkr_buffer_encode_uint32 (buf, PAM_APP_NAME_LEN);
- write_part (sock, buf, 4, &ret);
- write_part (sock, (unsigned char*)PAM_APP_NAME, PAM_APP_NAME_LEN, &ret);
-
- /* Calculate the packet length */
- oplen = 8; /* The packet size, and op code */
- for (i = 0; i < argc; ++i)
- oplen += 4 + strlen (argv[i]);
-
- /* Write out the length, and op */
- gkr_buffer_encode_uint32 (buf, oplen);
- write_part (sock, buf, 4, &ret);
- gkr_buffer_encode_uint32 (buf, op);
- write_part (sock, buf, 4, &ret);
-
- /* And now the arguments */
- for (i = 0; i < argc; ++i) {
- if (argv[i] == NULL)
- l = 0x7FFFFFFF;
- else
- l = strlen (argv[i]);
- gkr_buffer_encode_uint32 (buf, l);
- write_part (sock, buf, 4, &ret);
- if (argv[i] != NULL)
- write_part (sock, (unsigned char*)argv[i], l, &ret);
- }
-
- if (ret != GNOME_KEYRING_RESULT_OK)
- goto done;
-
- /* Read the response length */
- if (read_part (sock, buf, 4) != 4) {
- ret = GNOME_KEYRING_RESULT_IO_ERROR;
- goto done;
- }
-
- /* We only support simple responses */
- l = gkr_buffer_decode_uint32 (buf);
- if (l != 8) {
- syslog (GKR_LOG_ERR, "invalid length response from gnome-keyring-daemon: %d", l);
- ret = GNOME_KEYRING_RESULT_IO_ERROR;
- goto done;
- }
-
- if (read_part (sock, buf, 4) != 4) {
- ret = GNOME_KEYRING_RESULT_IO_ERROR;
- goto done;
- }
- ret = gkr_buffer_decode_uint32 (buf);
-
-done:
- if (sock >= 0)
- close (sock);
-
- return ret;
-}
-
-GnomeKeyringResult
-gkr_pam_client_run_operation (struct passwd *pwd, const char *socket,
- GnomeKeyringOpCode op, int argc, const char* argv[])
-{
- struct sigaction ignpipe, oldpipe, defchld, oldchld;
- GnomeKeyringResult res;
- pid_t pid;
- int status;
-
- /* Make dumb signals go away */
- memset (&ignpipe, 0, sizeof (ignpipe));
- memset (&oldpipe, 0, sizeof (oldpipe));
- ignpipe.sa_handler = SIG_IGN;
- sigaction (SIGPIPE, &ignpipe, &oldpipe);
-
- memset (&defchld, 0, sizeof (defchld));
- memset (&oldchld, 0, sizeof (oldchld));
- defchld.sa_handler = SIG_DFL;
- sigaction (SIGCHLD, &defchld, &oldchld);
-
- if (pwd->pw_uid == getuid () && pwd->pw_gid == getgid () &&
- pwd->pw_uid == geteuid () && pwd->pw_gid == getegid ()) {
-
- /* Already running as the right user, simple */
- res = keyring_daemon_op (socket, op, argc, argv);
-
- } else {
-
- /* Otherwise run a child process to do the dirty work */
- switch (pid = fork ()) {
- case -1:
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't fork: %s",
- strerror (errno));
- res = GNOME_KEYRING_RESULT_IO_ERROR;
- break;
-
- case 0:
- /* Setup process credentials */
- if (setgid (pwd->pw_gid) < 0 || setuid (pwd->pw_uid) < 0 ||
- setegid (pwd->pw_gid) < 0 || seteuid (pwd->pw_uid) < 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't switch to user: %s: %s",
- pwd->pw_name, strerror (errno));
- exit (GNOME_KEYRING_RESULT_IO_ERROR);
- }
-
- res = keyring_daemon_op (socket, op, argc, argv);
- exit (res);
- return 0; /* Never reached */
-
- default:
- /* wait for child process */
- if (wait (&status) != pid) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't wait on child process: %s",
- strerror (errno));
- res = GNOME_KEYRING_RESULT_IO_ERROR;
- }
-
- res = WEXITSTATUS (status);
- break;
- };
- }
-
- sigaction (SIGCHLD, &oldchld, NULL);
- sigaction (SIGPIPE, &oldpipe, NULL);
-
- return res;
-}
diff --git a/pam/gkr-pam-module.c b/pam/gkr-pam-module.c
deleted file mode 100644
index b49ed25d..00000000
--- a/pam/gkr-pam-module.c
+++ /dev/null
@@ -1,1003 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pam-module.h - A PAM module for unlocking the keyring
-
- Copyright (C) 2007 Stef Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-/*
- * Inspired by pam_keyring:
- * W. Michael Petullo <mike@flyn.org>
- * Jonathan Nettleton <jon.nettleton@gmail.com>
- */
-
-#include "config.h"
-
-#include "gkr-pam.h"
-
-#include "library/gnome-keyring-result.h"
-#include "library/gnome-keyring-opcodes.h"
-
-#include <security/pam_appl.h>
-#include <security/pam_modules.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <pwd.h>
-#include <signal.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <unistd.h>
-
-enum {
- ARG_AUTO_START = 0x0010
-};
-
-#define LOGIN_KEYRING "login"
-
-#define ENV_SOCKET "GNOME_KEYRING_SOCKET"
-#define ENV_PID "GNOME_KEYRING_PID"
-
-/* read & write ends of a pipe */
-#define READ_END 0
-#define WRITE_END 1
-
-/* pre-set file descriptors */
-#define STDIN 0
-#define STDOUT 1
-#define STDERR 2
-
-/* Linux/BSD compatibility */
-#ifndef PAM_AUTHTOK_RECOVER_ERR
-#define PAM_AUTHTOK_RECOVER_ERR PAM_AUTHTOK_RECOVERY_ERR
-#endif
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-close_safe (int fd)
-{
- if (fd != -1)
- close (fd);
-}
-
-static void
-free_safe (void *data)
-{
- if (data)
- free (data);
-}
-
-static void
-free_password (char *password)
-{
- volatile char *vp;
- size_t len;
-
- if (!password)
- return;
-
- /* Defeats some optimizations */
- len = strlen (password);
- memset (password, 0xAA, len);
- memset (password, 0xBB, len);
-
- /* Defeats others */
- vp = (volatile char*)password;
- while (*vp)
- *(vp++) = 0xAA;
-
- free (password);
-}
-
-static char*
-strbtrim (char* data)
-{
- assert (data);
- while (*data && isspace (*data))
- ++data;
- return (char*)data;
-}
-
-typedef int (*line_cb) (char *line, void *arg);
-
-static int
-foreach_line (char *lines, line_cb cb, void *arg)
-{
- char *line, *ctx;
- int ret;
-
- assert (lines);
-
- /* Call cb for each line in the text block */
- for (line = strtok_r (lines, "\n", &ctx); line != NULL;
- line = strtok_r (NULL, "\n", &ctx)) {
- ret = (cb) (line, arg);
- if (ret != PAM_SUCCESS)
- return ret;
- }
-
- return PAM_SUCCESS;
-}
-
-static char*
-read_string (int fd)
-{
- /* We only accept a max of 8K from the daemon */
- #define MAX_LENGTH 8192
-
- char buf[256];
- char *ret = NULL;
- int r, len = 0;
-
- for (;;) {
- r = read (fd, buf, sizeof (buf));
- if (r < 0) {
- if (errno == EAGAIN)
- continue;
- free_safe (ret);
- return NULL;
-
- } else {
- char *n = realloc (ret, len + r + 1);
- if (!n) {
- free_safe (ret);
- errno = ENOMEM;
- return NULL;
- }
- memset(n + len, 0, r + 1);
- ret = n;
- len = len + r;
-
- strncat (ret, buf, r);
- }
-
- if (r == 0 || len > MAX_LENGTH)
- break;
- }
-
- return ret;
-}
-
-static int
-write_string (int fd, const char* buf)
-{
- size_t bytes = 0;
- int res, len = strlen (buf);
-
- while (bytes < len) {
- res = write (fd, buf + bytes, len - bytes);
- if (res < 0) {
- if (errno != EINTR && errno != EAGAIN)
- return -1;
- } else {
- bytes += res;
- }
- }
-
- return 0;
-}
-
-/* -----------------------------------------------------------------------------
- * DAEMON MANAGEMENT
- */
-
-static int
-setup_pam_env (pam_handle_t *ph, const char *name, const char *val)
-{
- int ret;
- char *var;
-
- assert (name);
- assert (val);
-
- var = malloc (strlen (name) + strlen (val) + 2);
- if (!var) {
- syslog (GKR_LOG_ERR, "gkr-pam: out of memory");
- return PAM_SYSTEM_ERR;
- }
-
- sprintf (var, "%s=%s", name, val);
- ret = pam_putenv (ph, var);
- free (var);
-
- return ret;
-}
-
-static const char*
-get_any_env (pam_handle_t *ph, const char *name)
-{
- const char *env;
-
- assert (name);
-
- /* We only return non-empty variables */
-
- /*
- * Some PAMs decide to strdup the return value, not sure
- * how we can detect this.
- */
- env = pam_getenv (ph, name);
- if (env && env[0])
- return env;
-
- env = getenv (name);
- if (env && env[0])
- return env;
-
- return NULL;
-}
-
-static void
-cleanup_free (pam_handle_t *ph, void *data, int pam_end_status)
-{
- free_safe (data);
-}
-
-static void
-cleanup_free_password (pam_handle_t *ph, void *data, int pam_end_status)
-{
- free_password (data);
-}
-
-static void
-setup_child (int inp[2], int outp[2], int errp[2],
- pam_handle_t *ph, struct passwd *pwd, const char *password)
-{
- char *args[] = { GNOME_KEYRING_DAEMON, "-d", "--login", NULL};
- const char* display;
- int ret;
-
- assert (pwd);
- assert (pwd->pw_dir);
-
- /* If no password, don't pas in --login */
- if (password == NULL)
- args[2] = NULL;
-
- /* Fix up our end of the pipes */
- if (dup2 (inp[READ_END], STDIN) < 0 ||
- dup2 (outp[WRITE_END], STDOUT) < 0 ||
- dup2 (errp[WRITE_END], STDERR) < 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't setup pipes: %s",
- strerror (errno));
- exit (EXIT_FAILURE);
- }
-
- /* Close unnecessary file descriptors */
- close (inp[READ_END]);
- close (inp[WRITE_END]);
- close (outp[READ_END]);
- close (outp[WRITE_END]);
- close (errp[READ_END]);
- close (errp[WRITE_END]);
-
- /* We may be running effective as another user, revert that */
- seteuid (getuid ());
- setegid (getgid ());
-
- /* Setup process credentials */
- if (setgid (pwd->pw_gid) < 0 || setuid (pwd->pw_uid) < 0 ||
- setegid (pwd->pw_gid) < 0 || seteuid (pwd->pw_uid) < 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't setup credentials: %s",
- strerror (errno));
- exit (EXIT_FAILURE);
- }
-
- /* Setup environment variables */
- ret = setup_pam_env (ph, "HOME", pwd->pw_dir);
- if (ret == PAM_SUCCESS && !pam_getenv (ph, "DISPLAY")) {
- display = getenv ("DISPLAY");
- if (display)
- ret = setup_pam_env (ph, "DISPLAY", display);
- }
-
- /* Make sure that worked */
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't setup environment: %s",
- pam_strerror (ph, ret));
- exit (EXIT_FAILURE);
- }
-
- /* Now actually execute the process */
- execve (args[0], args, pam_getenvlist (ph));
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't run gnome-keyring-daemon: %s",
- strerror (errno));
- exit (EXIT_FAILURE);
-}
-
-
-static int
-log_problem (char *line, void *arg)
-{
- int *failed;
-
- /*
- * Called for each stderr output line from the daemon.
- * Send it all to the log.
- */
-
- assert (line);
- assert (arg);
-
- failed = (int*)arg;
- syslog (*failed ? GKR_LOG_ERR : GKR_LOG_WARN, "%s", line);
- return PAM_SUCCESS;
-}
-
-static int
-setup_environment (char *line, void *arg)
-{
- pam_handle_t *ph = (pam_handle_t*)arg;
- char *x;
- int ret;
-
- /*
- * Called for each stdout output line from the daemon
- * presumably environment variables.
- */
-
- assert (line);
- assert (arg);
-
- /* Make sure it is in fact an environment variable */
- if (!strchr (line, '='))
- return PAM_SUCCESS;
-
- line = strbtrim (line);
- ret = pam_putenv (ph, line);
-
- /* If it's the PID line then we're interested in it */
- if (strncmp (line, ENV_PID, strlen (ENV_PID)) == 0) {
- x = line + strlen (ENV_PID);
- if (x[0] == '=')
- pam_set_data (ph, "gkr-pam-pid", strdup (x + 1), cleanup_free);
- }
-
- return ret;
-}
-
-static int
-start_daemon (pam_handle_t *ph, struct passwd *pwd, const char *password)
-{
- struct sigaction defsact, oldsact, ignpipe, oldpipe;
- int inp[2] = { -1, -1 };
- int outp[2] = { -1, -1 };
- int errp[2] = { -1, -1 };
- int ret = PAM_SERVICE_ERR;
- pid_t pid;
- char *output = NULL;
- char *outerr = NULL;
- int failed, status;
-
- assert (pwd);
-
- /*
- * Make sure that SIGCHLD occurs. Otherwise our waitpid below
- * doesn't work properly. We need to wait on the process to
- * get the daemon exit status.
- */
- memset (&defsact, 0, sizeof (defsact));
- memset (&oldsact, 0, sizeof (oldsact));
- defsact.sa_handler = SIG_DFL;
- sigaction (SIGCHLD, &defsact, &oldsact);
-
- /*
- * Make sure we don't exit with a SIGPIPE while doing this, that
- * would be very annoying to a user trying to log in.
- */
- memset (&ignpipe, 0, sizeof (ignpipe));
- memset (&oldpipe, 0, sizeof (oldpipe));
- ignpipe.sa_handler = SIG_IGN;
- sigaction (SIGPIPE, &ignpipe, &oldpipe);
-
- /* Create the necessary pipes */
- if (pipe (inp) < 0 || pipe (outp) < 0 || pipe (errp) < 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't create pipes: %s",
- strerror (errno));
- goto done;
- }
-
- /* Start up daemon child process */
- switch (pid = fork ()) {
- case -1:
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't fork: %s",
- strerror (errno));
- goto done;
-
- /* This is the child */
- case 0:
- setup_child (inp, outp, errp, ph, pwd, password);
- /* Should never be reached */
- break;
-
- /* This is the parent */
- default:
- break;
- };
-
- /* Close our unneeded ends of the pipes */
- close (inp[READ_END]);
- close (outp[WRITE_END]);
- close (errp[WRITE_END]);
- inp[READ_END] = outp[WRITE_END] = errp[WRITE_END] = -1;
-
- if (password) {
- /* Write the login keyring password */
- write_string (inp[WRITE_END], password);
- close (inp[WRITE_END]);
- }
-
- /*
- * Note that we're not using select() or any such. We know how the
- * daemon sends its data.
- */
-
- /* Read any stdout and stderr data */
- output = read_string (outp[READ_END]);
- outerr = read_string (errp[READ_END]);
- if (!output || !outerr) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't read data from gnome-keyring-daemon: %s",
- strerror (errno));
- goto done;
- }
-
- /* Wait for the initial process to exit */
- if (waitpid (pid, &status, 0) < 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't wait on gnome-keyring-daemon process: %s",
- strerror (errno));
- goto done;
- }
-
- failed = !WIFEXITED (status) || WEXITSTATUS (status) != 0;
- if (outerr && outerr[0])
- foreach_line (outerr, log_problem, &failed);
-
- /* Failure from process */
- if (failed) {
- syslog (GKR_LOG_ERR, "gkr-pam: gnome-keyring-daemon didn't start properly properly");
- goto done;
- }
-
- ret = foreach_line (output, setup_environment, ph);
-
-done:
- /* Restore old handler */
- sigaction (SIGCHLD, &oldsact, NULL);
- sigaction (SIGPIPE, &oldpipe, NULL);
-
- close_safe (inp[0]);
- close_safe (inp[1]);
- close_safe (outp[0]);
- close_safe (outp[1]);
- close_safe (errp[0]);
- close_safe (errp[1]);
-
- free_safe (output);
- free_safe (outerr);
-
- return ret;
-}
-
-static int
-start_daemon_if_necessary (pam_handle_t *ph, struct passwd *pwd,
- const char *password, int* started)
-{
- const char *socket;
- int ret;
-
- *started = 0;
-
- /* See if it's already running, and transfer env variables */
- socket = get_any_env (ph, ENV_SOCKET);
- if (socket) {
- ret = setup_pam_env (ph, ENV_SOCKET, socket);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't set environment variables: %s",
- pam_strerror (ph, ret));
- return ret;
- }
-
- /* Daemon is already running */
- return PAM_SUCCESS;
- }
-
- /* Not running, start process */
- ret = start_daemon (ph, pwd, password);
- *started = (ret == PAM_SUCCESS);
- return ret;
-}
-
-static int
-stop_daemon (pam_handle_t *ph, struct passwd *pwd)
-{
- const char *spid = NULL;
- char *apid = NULL;
- pid_t pid;
-
- assert (pwd);
-
- pam_get_data (ph, "gkr-pam-pid", (const void**)&spid);
-
- /*
- * No pid, no worries, maybe we didn't start gnome-keyring-daemon
- * Or this the calling (PAM using) application is hopeless and
- * wants to call different PAM callbacks from different processes.
- *
- * In any case we live and let live.
- */
- if (!spid)
- goto done;
-
- /* Make sure it parses out nicely */
- pid = (pid_t)atoi (spid);
- if (pid <= 0) {
- syslog (GKR_LOG_ERR, "gkr-pam: invalid gnome-keyring-daemon process id: %s", spid);
- goto done;
- }
-
- if (kill (pid, SIGTERM) < 0 && errno != ESRCH) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't kill gnome-keyring-daemon process %d: %s",
- (int)pid, strerror (errno));
- goto done;
- }
-
-done:
- free_safe (apid);
-
- /* Don't bother user when daemon can't be stopped */
- return PAM_SUCCESS;
-}
-
-static int
-create_keyring (pam_handle_t *ph, struct passwd *pwd, const char *password)
-{
- const char *socket;
- GnomeKeyringResult res;
- const char *argv[2];
-
- assert (pwd);
- assert (password);
-
- socket = get_any_env (ph, ENV_SOCKET);
- if (!socket) {
- syslog (GKR_LOG_WARN, "gkr-pam: couldn't create '%s' keyring: %s",
- LOGIN_KEYRING, "gnome-keyring-daemon is not running");
- return PAM_SERVICE_ERR;
- }
-
- argv[0] = LOGIN_KEYRING;
- argv[1] = password;
-
- res = gkr_pam_client_run_operation (pwd, socket, GNOME_KEYRING_OP_CREATE_KEYRING, 2, argv);
- if (res != GNOME_KEYRING_RESULT_OK) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't create '%s' keyring: %d", LOGIN_KEYRING, res);
- return PAM_SERVICE_ERR;
- }
-
-
- syslog (GKR_LOG_NOTICE, "gkr-pam: created '%s' keyring", LOGIN_KEYRING);
- return PAM_SUCCESS;
-}
-
-static int
-unlock_keyring (pam_handle_t *ph, struct passwd *pwd, const char *password)
-{
- const char *socket;
- GnomeKeyringResult res;
- const char *argv[2];
-
- assert (pwd);
- assert (password);
-
- socket = get_any_env (ph, ENV_SOCKET);
- if (!socket) {
- syslog (GKR_LOG_WARN, "gkr-pam: couldn't unlock '%s' keyring: %s",
- LOGIN_KEYRING, "gnome-keyring-daemon is not running");
- return PAM_SERVICE_ERR;
- }
-
- argv[0] = LOGIN_KEYRING;
- argv[1] = password;
-
- res = gkr_pam_client_run_operation (pwd, socket, GNOME_KEYRING_OP_UNLOCK_KEYRING, 2, argv);
-
- /* 'login' keyring doesn't exist, create it */
- if (res == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING) {
- return create_keyring (ph, pwd, password);
-
- /* An error unlocking */
- } else if (res != GNOME_KEYRING_RESULT_OK) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't unlock '%s' keyring: %d", LOGIN_KEYRING, res);
- return PAM_SERVICE_ERR;
- }
-
- syslog (GKR_LOG_INFO, "gkr-pam: unlocked '%s' keyring", LOGIN_KEYRING);
- return PAM_SUCCESS;
-}
-
-static int
-change_keyring_password (pam_handle_t *ph, struct passwd *pwd,
- const char *password, const char *original)
-{
- const char *socket;
- GnomeKeyringResult res;
- const char *argv[3];
-
- assert (pwd);
- assert (password);
- assert (original);
-
- socket = get_any_env (ph, ENV_SOCKET);
- if (!socket) {
- syslog (GKR_LOG_WARN, "gkr-pam: couldn't change password on '%s' keyring: %s",
- LOGIN_KEYRING, "gnome-keyring-daemon is not running");
- return PAM_SERVICE_ERR;
- }
-
- argv[0] = LOGIN_KEYRING;
- argv[1] = original;
- argv[2] = password;
-
- res = gkr_pam_client_run_operation (pwd, socket, GNOME_KEYRING_OP_CHANGE_KEYRING_PASSWORD, 3, argv);
-
- /* 'login' keyring doesn't exist, create it */
- if (res == GNOME_KEYRING_RESULT_NO_SUCH_KEYRING) {
- return create_keyring (ph, pwd, password);
-
- /* An error occured unlocking */
- } else if (res != GNOME_KEYRING_RESULT_OK) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't change password for '%s' keyring: %d", LOGIN_KEYRING, res);
- return PAM_SERVICE_ERR;
- }
-
- syslog (GKR_LOG_NOTICE, "gkr-pam: changed password for '%s' keyring", LOGIN_KEYRING);
- return PAM_SUCCESS;
-}
-
-/* -----------------------------------------------------------------------------
- * PAM STUFF
- */
-
-static int
-prompt_password (pam_handle_t *ph)
-{
- const struct pam_conv *conv;
- struct pam_message msg;
- struct pam_response *resp;
- const struct pam_message *msgs[1];
- const void *item;
- char *password;
- int ret;
-
- /* Get the conversation function */
- ret = pam_get_item (ph, PAM_CONV, &item);
- if (ret != PAM_SUCCESS)
- return ret;
-
- /* Setup a message */
- memset (&msg, 0, sizeof (msg));
- memset (&resp, 0, sizeof (resp));
- msg.msg_style = PAM_PROMPT_ECHO_OFF;
- msg.msg = "Password: ";
- msgs[0] = &msg;
-
- /* Call away */
- conv = (const struct pam_conv*)item;
- ret = (conv->conv) (1, msgs, &resp, conv->appdata_ptr);
- if (ret != PAM_SUCCESS)
- return ret;
-
- password = resp[0].resp;
- free (resp);
-
- if (password == NULL)
- return PAM_CONV_ERR;
-
- /* Store it away for later use */
- ret = pam_set_item (ph, PAM_AUTHTOK, password);
- free_password (password);
-
- if (ret == PAM_SUCCESS)
- ret = pam_get_item (ph, PAM_AUTHTOK, &item);
-
- return ret;
-}
-
-static uint
-parse_args (int argc, const char **argv)
-{
- uint args = 0;
-
- /* Parse the arguments */
- for (; argc-- > 0; ++argv) {
- if (strcmp (argv[0], "auto_start") == 0)
- args |= ARG_AUTO_START;
- else
- syslog (GKR_LOG_WARN, "gkr-pam: invalid option: %s", argv[0]);
- }
-
- return args;
-}
-
-PAM_EXTERN int
-pam_sm_authenticate (pam_handle_t *ph, int unused, int argc, const char **argv)
-{
- struct passwd *pwd;
- const char *user, *password;
- const char *socket;
- int started_daemon;
- uint args;
- int ret;
-
- args = parse_args (argc, argv);
-
- /* Figure out and/or prompt for the user name */
- ret = pam_get_user (ph, &user, NULL);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get the user name: %s",
- pam_strerror (ph, ret));
- return PAM_SERVICE_ERR;
- }
-
- pwd = getpwnam (user);
- if (!pwd) {
- syslog (GKR_LOG_ERR, "gkr-pam: error looking up user information for: %s", user);
- return PAM_SERVICE_ERR;
- }
-
- /* Look up the password */
- ret = pam_get_item (ph, PAM_AUTHTOK, (const void**)&password);
- if (ret != PAM_SUCCESS || password == NULL) {
- if (ret == PAM_SUCCESS)
- syslog (GKR_LOG_WARN, "gkr-pam: no password is available for user");
- else
- syslog (GKR_LOG_WARN, "gkr-pam: no password is available for user: %s",
- pam_strerror (ph, ret));
- return PAM_SUCCESS;
- }
-
- started_daemon = 0;
-
- /* Should we start the daemon? */
- if (args & ARG_AUTO_START) {
- ret = start_daemon_if_necessary (ph, pwd, password, &started_daemon);
- if (ret != PAM_SUCCESS)
- return ret;
- }
-
- socket = get_any_env (ph, ENV_SOCKET);
-
- /* If gnome keyring is running, then unlock now */
- if (socket) {
- /* If we started the daemon, its already unlocked, since we passed the password */
- if (!started_daemon) {
- ret = unlock_keyring (ph, pwd, password);
- if (ret != PAM_SUCCESS)
- return ret;
- }
-
- /* Otherwise start later in open session, store password */
- } else {
- if (pam_set_data (ph, "gkr_system_authtok", strdup (password),
- cleanup_free_password) != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: error storing authtok");
- return PAM_AUTHTOK_RECOVER_ERR;
- }
- }
-
- return PAM_SUCCESS;
-}
-
-PAM_EXTERN int
-pam_sm_open_session (pam_handle_t *ph, int flags, int argc, const char **argv)
-{
- const char *user = NULL, *password = NULL;
- struct passwd *pwd;
- int ret;
- uint args = parse_args (argc, argv);
- int started_daemon;
-
- /* Figure out the user name */
- ret = pam_get_user (ph, &user, NULL);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get the user name: %s",
- pam_strerror (ph, ret));
- return PAM_SERVICE_ERR;
- }
-
- pwd = getpwnam (user);
- if (!pwd) {
- syslog (GKR_LOG_ERR, "gkr-pam: error looking up user information for: %s", user);
- return PAM_SERVICE_ERR;
- }
-
- /* Get the stored authtok here */
- if (pam_get_data (ph, "gkr_system_authtok", (const void**)&password) != PAM_SUCCESS) {
- /*
- * No password, no worries, maybe this (PAM using) application
- * didn't do authentication, or is hopeless and wants to call
- * different PAM callbacks from different processes.
- *
- * No use complaining
- */
- password = NULL;
- }
-
- started_daemon = 0;
-
- /* Should we start the daemon? */
- if (args & ARG_AUTO_START) {
- ret = start_daemon_if_necessary (ph, pwd, password, &started_daemon);
- if (ret != PAM_SUCCESS)
- return ret;
- }
-
- if (!started_daemon && password != NULL) {
- if (unlock_keyring (ph, pwd, password) != PAM_SUCCESS)
- return PAM_SERVICE_ERR;
- }
-
- return PAM_SUCCESS;
-}
-
-PAM_EXTERN int
-pam_sm_close_session (pam_handle_t *ph, int flags, int argc, const char **argv)
-{
- struct passwd *pwd;
- const char *user;
- int ret;
-
- ret = pam_get_user (ph, &user, NULL);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get user from pam: %s",
- pam_strerror (ph, ret));
- return PAM_SERVICE_ERR;
- }
-
- pwd = getpwnam (user);
- if (!pwd) {
- syslog (GKR_LOG_ERR, "gkr-pam: error looking up user information for: %s", user);
- return PAM_SERVICE_ERR;
- }
-
- stop_daemon (ph, pwd);
-
- /* Don't bother user when daemon can't be stopped */
- return PAM_SUCCESS;
-}
-
-PAM_EXTERN int
-pam_sm_setcred (pam_handle_t * ph, int flags, int argc, const char **argv)
-{
- return PAM_SUCCESS;
-}
-
-static int
-pam_chauthtok_preliminary (pam_handle_t *ph, struct passwd *pwd)
-{
- /*
- * If a super-user is changing a user's password then pam_unix.so
- * doesn't prompt for the user's current password, which means we
- * won't have access to that password to change the keyring password.
- *
- * So we could prompt for the current user's password except that
- * most software is broken in this regard, and doesn't use the
- * prompts properly.
- *
- * In addition how would we verify the user's password? We could
- * verify it against the Gnome Keyring, but if it is mismatched
- * from teh UNIX password then that would be super confusing.
- *
- * So we opt, just to send NULL along with the change password
- * request and have the user type in their current GNOME Keyring
- * password at an explanatory prompt.
- */
-
- return PAM_IGNORE;
-}
-
-static int
-pam_chauthtok_update (pam_handle_t *ph, struct passwd *pwd)
-{
- const char *password, *original;
- int ret, started_daemon = 0;
-
- ret = pam_get_item (ph, PAM_OLDAUTHTOK, (const void**)&original);
- if (ret != PAM_SUCCESS || original == NULL) {
- syslog (GKR_LOG_WARN, "gkr-pam: couldn't update the '%s' keyring password: %s",
- LOGIN_KEYRING, "no old password was entered");
- return PAM_IGNORE;
- }
-
- ret = pam_get_item (ph, PAM_AUTHTOK, (const void**)&password);
- if (ret != PAM_SUCCESS)
- password = NULL;
-
- /* No password was entered, prompt for it */
- if (password == NULL) {
- ret = prompt_password (ph);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get the password from user: %s",
- pam_strerror (ph, ret));
- return PAM_AUTH_ERR;
- }
- ret = pam_get_item (ph, PAM_AUTHTOK, (const void**)&password);
- if (ret != PAM_SUCCESS || password == NULL) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get the password from user: %s",
- ret == PAM_SUCCESS ? "password was null" : pam_strerror (ph, ret));
- return PAM_AUTHTOK_RECOVER_ERR;
- }
- }
-
- /*
- * We always start the daemon here, and don't respect the auto_start
- * argument. Because if the password is being changed, then making
- * the 'login' keyring match it is a priority.
- */
- ret = start_daemon_if_necessary (ph, pwd, original, &started_daemon);
- if (ret != PAM_SUCCESS)
- return ret;
-
- ret = change_keyring_password (ph, pwd, password, original);
- if (ret != PAM_SUCCESS)
- return ret;
-
- return PAM_SUCCESS;
-}
-
-PAM_EXTERN int
-pam_sm_chauthtok (pam_handle_t *ph, int flags, int argc, const char **argv)
-{
- const char *user;
- struct passwd *pwd;
- int ret;
-
- /* Figure out and/or prompt for the user name */
- ret = pam_get_user (ph, &user, NULL);
- if (ret != PAM_SUCCESS) {
- syslog (GKR_LOG_ERR, "gkr-pam: couldn't get the user name: %s",
- pam_strerror (ph, ret));
- return PAM_SERVICE_ERR;
- }
-
- pwd = getpwnam (user);
- if (!pwd) {
- syslog (GKR_LOG_ERR, "gkr-pam: error looking up user information for: %s", user);
- return PAM_SERVICE_ERR;
- }
-
- if (flags & PAM_PRELIM_CHECK)
- return pam_chauthtok_preliminary (ph, pwd);
- else if (flags & PAM_UPDATE_AUTHTOK)
- return pam_chauthtok_update (ph, pwd);
- else
- return PAM_IGNORE;
-}
diff --git a/pam/gkr-pam-stubs.c b/pam/gkr-pam-stubs.c
deleted file mode 100644
index 26342b5e..00000000
--- a/pam/gkr-pam-stubs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pam-stubs.c - Stubs to allow linking memory code
-
- Copyright (C) 2007 Stef Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "common/gkr-secure-memory.h"
-
-#include <stdlib.h>
-
-/*
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
- /* No threads in PAM, no locking */
-}
-
-void
-gkr_memory_unlock (void)
-{
- /* No threads in PAM, no locking */
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- /* Handles allocation, reallocation and freeing */
- return realloc (p, sz);
-}
diff --git a/pam/gkr-pam.h b/pam/gkr-pam.h
deleted file mode 100644
index 0a988fe6..00000000
--- a/pam/gkr-pam.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pam.h - Common PAM definitions
-
- Copyright (C) 2007 Stef Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPAM_H_
-#define GKRPAM_H_
-
-#include <pwd.h>
-
-#include "library/gnome-keyring-opcodes.h"
-#include "library/gnome-keyring-result.h"
-
-#ifndef LOG_AUTHPRIV
-#define LOG_AUTHPRIV LOG_AUTH
-#endif
-
-#define GKR_LOG_ERR (LOG_ERR | LOG_AUTHPRIV)
-#define GKR_LOG_WARN (LOG_WARNING | LOG_AUTHPRIV)
-#define GKR_LOG_NOTICE (LOG_NOTICE | LOG_AUTHPRIV)
-#define GKR_LOG_INFO (LOG_INFO | LOG_AUTHPRIV)
-
-GnomeKeyringResult gkr_pam_client_run_operation (struct passwd *pwd, const char *socket,
- GnomeKeyringOpCode op, int argc, const char* argv[]);
-
-#endif /*GKRPAM_H_*/
diff --git a/pam/tests/Makefile.am b/pam/tests/Makefile.am
deleted file mode 100644
index 33ec9b0e..00000000
--- a/pam/tests/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-
-UNIT_AUTO =
-
-UNIT_PROMPT = unit-test-pam-setup.c \
- unit-test-pam.c
-
-UNIT_LIBS = \
- -lpam
-
-UNIT_FLAGS = \
- -DEXTERNAL_TEST
-
-include $(top_srcdir)/tests/test.make
diff --git a/pam/tests/unit-test-pam-setup.c b/pam/tests/unit-test-pam-setup.c
deleted file mode 100644
index e13250ec..00000000
--- a/pam/tests/unit-test-pam-setup.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pam-setup.c: Setup for PAM tests
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <sys/types.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-
-#include "run-prompt-test.h"
-
-#include <security/pam_appl.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-/* Used directly by the other tests */
-pam_handle_t *test_pamh = NULL;
-
-static int
-conv_func (int n, const struct pam_message **msg,
- struct pam_response **resp, void *arg)
-{
- struct pam_response *aresp;
- int i;
-
- g_assert (n > 0 && n < PAM_MAX_NUM_MSG);
- aresp = g_new0(struct pam_response, n);
-
- for (i = 0; i < n; ++i) {
- aresp[i].resp_retcode = 0;
- aresp[i].resp = NULL;
- switch (msg[i]->msg_style) {
- case PAM_PROMPT_ECHO_OFF:
- aresp[i].resp = getpass (msg[i]->msg);
- g_assert (aresp[i].resp != NULL);
- break;
- case PAM_PROMPT_ECHO_ON:
- aresp[i].resp = getpass (msg[i]->msg);
- g_assert (aresp[i].resp != NULL);
- break;
- case PAM_ERROR_MSG:
- fputs(msg[i]->msg, stderr);
- if (strlen(msg[i]->msg) > 0 &&
- msg[i]->msg[strlen(msg[i]->msg) - 1] != '\n')
- fputc('\n', stderr);
- break;
- case PAM_TEXT_INFO:
- fputs(msg[i]->msg, stdout);
- if (strlen(msg[i]->msg) > 0 &&
- msg[i]->msg[strlen(msg[i]->msg) - 1] != '\n')
- fputc('\n', stdout);
- break;
- default:
- return PAM_CONV_ERR;
- }
- }
- *resp = aresp;
- return PAM_SUCCESS;
-}
-
-struct pam_conv conv = { conv_func, NULL };
-
-void unit_setup_pam (void)
-{
- char user[1024];
- int ret;
-
- printf ("Make sure the PAM module is installed by doing:\n"
- "# make install-pam\n"
- "\n"
- "Then make /etc/pam.d/testgkr contains:\n"
- "\n"
- "auth required pam_unix.so nullok_secure\n"
- "auth optional pam_gnome_keyring.so try_first_pass\n"
- "session required pam_unix.so\n"
- "session optional pam_gnome_keyring.so\n"
- "\n");
- sleep (1);
-
- printf ("User: ");
- fgets (user, sizeof (user), stdin);
-
- g_strstrip (user);
-
- ret = pam_start ("testgkr", user[0] ? user : g_get_user_name (), &conv, &test_pamh);
- if (ret != PAM_SUCCESS)
- g_error ("couldn't initialize pam");
-
- g_assert (test_pamh);
-}
-
-void unit_teardown_pam (void)
-{
- g_assert (test_pamh);
- pam_end (test_pamh, PAM_SUCCESS);
-}
diff --git a/pam/tests/unit-test-pam.c b/pam/tests/unit-test-pam.c
deleted file mode 100644
index c597c0d1..00000000
--- a/pam/tests/unit-test-pam.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pam.c: Test PAM module
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "run-prompt-test.h"
-
-#include <security/pam_appl.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-extern pam_handle_t *test_pamh;
-
-void unit_test_pam_open (CuTest* cu)
-{
- char** pam_env;
-
- /* Clear out this environment variable so we force a new daemon */
- putenv("GNOME_KEYRING_SOCKET=");
-
- int ret = pam_authenticate (test_pamh, 0);
- if (ret != PAM_SUCCESS)
- g_printerr ("Bad user/password?\n\n");
- CuAssertIntEquals (cu, PAM_SUCCESS, ret);
-
- pam_env = pam_getenvlist (test_pamh);
- while (*pam_env)
- putenv ((char*)*(pam_env++));
-
- ret = pam_open_session (test_pamh, 0);
- CuAssertIntEquals (cu, PAM_SUCCESS, ret);
-}
-
-void unit_test_pam_env (CuTest* cu)
-{
- const char *socket;
-
-
- socket = g_getenv ("GNOME_KEYRING_SOCKET");
- CuAssert (cu, "socket should have been setup", socket && socket[0]);
- CuAssert (cu, "socket should have been created", g_file_test (socket, G_FILE_TEST_EXISTS));
-
- g_printerr ("GNOME_KEYRING_SOCKET is: %s\n", g_getenv ("GNOME_KEYRING_SOCKET"));
- sleep (3);
-}
-
-void unit_test_pam_close (CuTest* cu)
-{
- int ret = pam_close_session (test_pamh, 0);
- CuAssertIntEquals (cu, PAM_SUCCESS, ret);
-}
diff --git a/pk/Makefile.am b/pk/Makefile.am
deleted file mode 100644
index 889835d7..00000000
--- a/pk/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-noinst_LTLIBRARIES=libgkr-pk.la
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libgkr_pk_la_SOURCES = \
- gkr-pk-cert.c gkr-pk-cert.h \
- gkr-pk-index.c gkr-pk-index.h \
- gkr-pk-netscape-trust.c gkr-pk-netscape-trust.h \
- gkr-pk-object.c gkr-pk-object.h \
- gkr-pk-object-manager.c gkr-pk-object-manager.h \
- gkr-pk-object-storage.c gkr-pk-object-storage.h \
- gkr-pk-places.h \
- gkr-pk-privkey.c gkr-pk-privkey.h \
- gkr-pk-pubkey.c gkr-pk-pubkey.h \
- gkr-pk-util.c gkr-pk-util.h
-
-libgkr_pk_la_LIBADD = \
- $(top_builddir)/ui/libgkr-ui.la \
- $(top_builddir)/pkix/libgkr-pkix.la \
- $(top_builddir)/common/libgkr-common.la \
- $(GOBJECT_LIBS) \
- $(GTHREAD_LIBS) \
- $(GLIB_LIBS)
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
diff --git a/pk/gkr-pk-cert.c b/pk/gkr-pk-cert.c
deleted file mode 100644
index d0a34013..00000000
--- a/pk/gkr-pk-cert.c
+++ /dev/null
@@ -1,799 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-cert.c - An x509 certificate
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-index.h"
-#include "gkr-pk-netscape-trust.h"
-#include "gkr-pk-object.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-object-storage.h"
-#include "gkr-pk-privkey.h"
-#include "gkr-pk-pubkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-location.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-
-#include "pkix/gkr-pkix-asn1.h"
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include <stdio.h>
-#include <string.h>
-
-/* -------------------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- PROP_0,
- PROP_ASN1_TREE
-};
-
-struct _GkrPkCertData {
- ASN1_TYPE asn1;
- guchar *raw;
- gsize n_raw;
-
- GkrPkPubkey *pubkey;
- GkrPkNetscapeTrust *netscape_trust;
-};
-
-G_DEFINE_TYPE (GkrPkCert, gkr_pk_cert, GKR_TYPE_PK_OBJECT);
-
-static GQuark OID_BASIC_CONSTRAINTS;
-static GQuark OID_ENHANCED_USAGE;
-
-static GQuark OID_USAGE_SSH_AUTH;
-static GQuark OID_USAGE_SERVER_AUTH;
-static GQuark OID_USAGE_CLIENT_AUTH;
-static GQuark OID_USAGE_CODE_SIGNING;
-static GQuark OID_USAGE_EMAIL;
-static GQuark OID_USAGE_TIME_STAMPING;
-static GQuark OID_USAGE_IPSEC_ENDPOINT;
-static GQuark OID_USAGE_IPSEC_TUNNEL;
-static GQuark OID_USAGE_IPSEC_USER;
-static GQuark OID_USAGE_IKE_INTERMEDIATE;
-
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-init_quarks (void)
-{
- #define QUARK(name, value) \
- name = g_quark_from_static_string(value)
-
- QUARK (OID_BASIC_CONSTRAINTS, "2.5.29.19");
- QUARK (OID_ENHANCED_USAGE, "2.5.29.37");
-
- QUARK (OID_USAGE_SSH_AUTH, "ssh-authentication");
- QUARK (OID_USAGE_SERVER_AUTH, "1.3.6.1.5.5.7.3.1");
- QUARK (OID_USAGE_CLIENT_AUTH, "1.3.6.1.5.5.7.3.2");
- QUARK (OID_USAGE_CODE_SIGNING, "1.3.6.1.5.5.7.3.3");
- QUARK (OID_USAGE_EMAIL, "1.3.6.1.5.5.7.3.4");
- QUARK (OID_USAGE_TIME_STAMPING, "1.3.6.1.5.5.7.3.8");
- QUARK (OID_USAGE_IPSEC_ENDPOINT, "1.3.6.1.5.5.7.3.5");
- QUARK (OID_USAGE_IPSEC_TUNNEL, "1.3.6.1.5.5.7.3.6");
- QUARK (OID_USAGE_IPSEC_USER, "1.3.6.1.5.5.7.3.7");
- QUARK (OID_USAGE_IKE_INTERMEDIATE, "1.3.6.1.5.5.8.2.2");
-
- #undef QUARK
-}
-
-static CK_RV
-load_certificate (GkrPkCert *cert)
-{
- GkrPkObject *obj;
- GError *err = NULL;
-
- if (cert->data->asn1)
- return CKR_OK;
-
- obj = GKR_PK_OBJECT (cert);
-
- g_return_val_if_fail (obj->storage, CKR_GENERAL_ERROR);
- if (!gkr_pk_object_storage_load_complete (obj->storage, obj, &err)) {
- g_message ("couldn't load certificate at: %s: %s",
- g_quark_to_string (obj->location),
- err && err->message ? err->message : "");
- g_error_free (err);
- return CKR_GENERAL_ERROR;
- }
-
- /* This can happen if the user cancels out of a dialog */
- if (!cert->data->asn1)
- return CKR_FUNCTION_CANCELED;
-
- return CKR_OK;
-}
-
-static GkrPkPubkey*
-get_public_key (GkrPkCert *cert)
-{
- gcry_sexp_t s_key = NULL;
- GkrPkObject *obj;
- GkrPkixResult res;
- guchar *data;
- gsize n_data;
-
- if (cert->data->pubkey)
- return cert->data->pubkey;
-
- if (load_certificate (cert) != CKR_OK)
- return NULL;
-
- obj = GKR_PK_OBJECT (cert);
-
- /* Generate a raw public key from our certificate */
- data = gkr_pkix_asn1_encode (cert->data->asn1, "tbsCertificate.subjectPublicKeyInfo", &n_data, NULL);
- g_return_val_if_fail (data, NULL);
-
- res = gkr_pkix_der_read_public_key_info (data, n_data, &s_key);
- g_free (data);
-
- if (res != GKR_PKIX_SUCCESS) {
- g_warning ("invalid public-key in certificate: %s", g_quark_to_string (obj->location));
- return NULL;
- }
-
- g_return_val_if_fail (s_key, NULL);
- cert->data->pubkey = gkr_pk_pubkey_instance (obj->manager, obj->location, s_key);
-
- return cert->data->pubkey;
-}
-
-static void
-initialize_certificate (GkrPkCert *cert, ASN1_TYPE asn1)
-{
- GkrPkCertData *data = cert->data;
-
- g_free(data->raw);
- data->raw = NULL;
- data->n_raw = 0;
-
- if (data->pubkey)
- g_object_unref (data->pubkey);
- data->pubkey = NULL;
-
- if (data->netscape_trust)
- g_object_unref (data->netscape_trust);
- data->netscape_trust = NULL;
-
- if (data->asn1)
- asn1_delete_structure (&data->asn1);
- data->asn1 = asn1;
-
- if (!asn1)
- return;
-
- /* The raw certificate data */
- data->raw = gkr_pkix_asn1_encode (data->asn1, "", &data->n_raw, NULL);
- g_return_if_fail (data->raw);
-
- /* We always have a companion netscape trust object */
- data->netscape_trust = gkr_pk_netscape_trust_new (GKR_PK_OBJECT (cert)->manager, cert);
-
- /* Try and initialize the public key object */
- get_public_key (cert);
-}
-
-static gboolean
-has_private_key (GkrPkCert *cert)
-{
- gkrconstid id;
-
- id = gkr_pk_cert_get_keyid (cert);
- g_return_val_if_fail (id, FALSE);
-
- return gkr_pk_object_manager_find_by_id (GKR_PK_OBJECT (cert)->manager, GKR_TYPE_PK_PRIVKEY, id) != NULL;
-}
-
-static gboolean
-has_certificate_purposes (GkrPkCert *cert)
-{
- GkrPkObject *obj = GKR_PK_OBJECT (cert);
-
- /* Check if the index has such a value */
- if (gkr_pk_index_has_value (obj, "purposes"))
- return TRUE;
-
- if (gkr_pk_cert_has_extension (cert, OID_ENHANCED_USAGE, NULL))
- return TRUE;
-
- return FALSE;
-}
-
-static CK_RV
-lookup_certificate_purposes (GkrPkCert *cert, GQuark **oids)
-{
- GkrPkObject *obj = GKR_PK_OBJECT (cert);
- GkrPkixResult res;
- guchar *extension;
- gsize n_extension;
- CK_RV ret;
-
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
-
- *oids = NULL;
-
- /* Look in the index if the purposes have been overridden there */
- if (gkr_pk_index_has_value (obj, "purposes")) {
- *oids = gkr_pk_index_get_quarks (obj, "purposes");
-
- /* Otherwise look in the certificate */
- } else {
- extension = gkr_pk_cert_get_extension (cert, OID_ENHANCED_USAGE, &n_extension, NULL);
-
- /* No enhanced usage noted, any are allowed */
- if (!extension)
- return CKR_OK;
-
- res = gkr_pkix_der_read_enhanced_usage (extension, n_extension, oids);
- g_free (extension);
-
- if (res != GKR_PKIX_SUCCESS) {
- g_warning ("invalid enhanced usage in certificate");
- return CKR_GENERAL_ERROR;
- }
- }
-
- return CKR_OK;
-}
-
-
-static gboolean
-check_certificate_purpose (GkrPkCert *cert, GQuark oid)
-{
- GQuark* usages;
- gboolean ret;
-
- if (lookup_certificate_purposes (cert, &usages) != CKR_OK)
- return FALSE;
-
- /* No usages noted, any are allowed */
- if (!usages)
- return TRUE;
-
- ret = gkr_pk_index_quarks_has (usages, oid);
- gkr_pk_index_quarks_free (usages);
-
- return ret;
-}
-
-static CK_RV
-read_certificate_purpose (GkrPkCert *cert, GQuark oid, CK_ATTRIBUTE_PTR attr)
-{
- gboolean value = check_certificate_purpose (cert, oid);
- gkr_pk_attribute_set_boolean (attr, value);
- return CKR_OK;
-}
-
-static CK_RV
-read_certificate_purposes (GkrPkCert *cert, CK_ATTRIBUTE_PTR attr)
-{
- GQuark *quarks, *q;
- GString *result;
- CK_RV ret;
-
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
-
- ret = lookup_certificate_purposes (cert, &quarks);
- if (ret != CKR_OK)
- return ret;
-
- /* Convert into a space delimited string */
- result = g_string_sized_new (128);
- for (q = quarks; q && *q; ++q) {
- g_string_append (result, g_quark_to_string (*q));
- g_string_append_c (result, ' ');
- }
-
- gkr_pk_index_quarks_free (quarks);
-
- attr->ulValueLen = result->len;
- attr->pValue = g_string_free (result, FALSE);
- return CKR_OK;
-}
-
-static gint
-find_certificate_extension (GkrPkCert *cert, GQuark oid)
-{
- GQuark exoid;
- gchar *name;
- guint i;
- int res, len;
-
- g_assert (oid);
- g_assert (GKR_IS_PK_CERT (cert));
- g_assert (cert->data->asn1);
-
- for(i = 1; TRUE; ++i) {
-
- /* Make sure it is present */
- len = 0;
- name = g_strdup_printf ("tbsCertificate.extensions.?%u", i);
- res = asn1_read_value (cert->data->asn1, name, NULL, &len);
- g_free (name);
- if (res == ASN1_ELEMENT_NOT_FOUND)
- break;
-
- /* See if it's the same */
- name = g_strdup_printf ("tbsCertificate.extensions.?%u.extnID", i);
- exoid = gkr_pkix_asn1_read_oid (cert->data->asn1, name);
- g_free (name);
-
- if(exoid == oid)
- return i;
- }
-
- return 0;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_cert_init (GkrPkCert *cert)
-{
- cert->data = G_TYPE_INSTANCE_GET_PRIVATE (cert, GKR_TYPE_PK_CERT, GkrPkCertData);
- memset (cert->data, 0, sizeof (GkrPkCertData));
-}
-
-static void
-gkr_pk_cert_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrPkCert *cert = GKR_PK_CERT (obj);
-
- switch (prop_id) {
- case PROP_ASN1_TREE:
- g_value_set_pointer (value, cert->data->asn1);
- break;
- }
-}
-
-static void
-gkr_pk_cert_set_property (GObject *obj, guint prop_id, const GValue *value,
- GParamSpec *pspec)
-{
- GkrPkCert *cert = GKR_PK_CERT (obj);
-
- switch (prop_id) {
- case PROP_ASN1_TREE:
- initialize_certificate (cert, g_value_get_pointer (value));
- break;
- }
-}
-
-static CK_RV
-gkr_pk_cert_get_attribute (GkrPkObject* obj, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkCert *cert = GKR_PK_CERT (obj);
- const guchar *cdata = NULL;
- gkrconstid keyid;
- CK_ULONG value;
- gchar *index;
- guchar *data;
- gsize n_data;
- time_t time;
- CK_RV ret;
-
- g_assert (!attr->pValue);
-
- switch (attr->type)
- {
- case CKA_GNOME_PURPOSE_RESTRICTED:
- gkr_pk_attribute_set_boolean (attr, has_certificate_purposes (cert));
- return CKR_OK;
-
- case CKA_GNOME_PURPOSE_SSH_AUTH:
- return read_certificate_purpose (cert, OID_USAGE_SSH_AUTH, attr);
-
- case CKA_GNOME_PURPOSE_SERVER_AUTH:
- return read_certificate_purpose (cert, OID_USAGE_SERVER_AUTH, attr);
-
- case CKA_GNOME_PURPOSE_CLIENT_AUTH:
- return read_certificate_purpose (cert, OID_USAGE_CLIENT_AUTH, attr);
-
- case CKA_GNOME_PURPOSE_CODE_SIGNING:
- return read_certificate_purpose (cert, OID_USAGE_CODE_SIGNING, attr);
-
- case CKA_GNOME_PURPOSE_EMAIL_PROTECTION:
- return read_certificate_purpose (cert, OID_USAGE_EMAIL, attr);
-
- case CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM:
- return read_certificate_purpose (cert, OID_USAGE_IPSEC_ENDPOINT, attr);
-
- case CKA_GNOME_PURPOSE_IPSEC_TUNNEL:
- return read_certificate_purpose (cert, OID_USAGE_IPSEC_TUNNEL, attr);
-
- case CKA_GNOME_PURPOSE_IPSEC_USER:
- return read_certificate_purpose (cert, OID_USAGE_IPSEC_USER, attr);
-
- case CKA_GNOME_PURPOSE_TIME_STAMPING:
- return read_certificate_purpose (cert, OID_USAGE_TIME_STAMPING, attr);
-
- /* TODO: Until we can figure out a trust system */
- case CKA_TRUSTED:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- case CKA_CLASS:
- gkr_pk_attribute_set_ulong (attr, CKO_CERTIFICATE);
- return CKR_OK;
-
- case CKA_CERTIFICATE_TYPE:
- gkr_pk_attribute_set_ulong (attr, CKC_X_509);
- return CKR_OK;
-
- case CKA_CERTIFICATE_CATEGORY:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- value = 0; /* unknown */
- data = gkr_pk_cert_get_extension (cert, OID_BASIC_CONSTRAINTS, &n_data, NULL);
- if (data) {
- GkrPkixResult res;
- gboolean is_ca;
-
- res = gkr_pkix_der_read_basic_constraints (data, n_data, &is_ca, NULL);
- g_free (data);
- if (res != GKR_PKIX_SUCCESS)
- return CKR_GENERAL_ERROR;
- if (is_ca)
- value = 2; /* authority */
- }
- gkr_pk_attribute_set_ulong (attr, value);
- return CKR_OK;
-
- case CKA_GNOME_USER_TRUST:
- value = CKT_GNOME_UNKNOWN;
-
- /* Explicity set? */
- index = gkr_pk_index_get_string (obj, "user-trust");
- if (index) {
- if (g_str_equal (index, "trusted"))
- value = CKT_GNOME_TRUSTED;
- else if (g_str_equal (index, "untrusted"))
- value = CKT_GNOME_UNTRUSTED;
- g_free (index);
-
- /* With a private key it's trusted by default */
- } else if (has_private_key (cert)) {
- value = CKT_GNOME_TRUSTED;
- }
- gkr_pk_attribute_set_ulong (attr, value);
- return CKR_OK;
-
- case CKA_ID:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- keyid = gkr_pk_cert_get_keyid (cert);
- if (!keyid)
- return CKR_GENERAL_ERROR;
- data = (CK_VOID_PTR)gkr_id_get_raw (keyid, &n_data);
- gkr_pk_attribute_set_data (attr, data, n_data);
- return CKR_OK;
-
-
- case CKA_SUBJECT:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- cdata = gkr_pkix_asn1_read_element (cert->data->asn1, cert->data->raw, cert->data->n_raw,
- "tbsCertificate.subject", &n_data);
- if (!cdata)
- return CKR_GENERAL_ERROR;
- gkr_pk_attribute_set_data (attr, cdata, n_data);
- return CKR_OK;
-
- case CKA_ISSUER:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- cdata = gkr_pkix_asn1_read_element (cert->data->asn1, cert->data->raw, cert->data->n_raw,
- "tbsCertificate.issuer", &n_data);
- if (!cdata)
- return CKR_GENERAL_ERROR;
- gkr_pk_attribute_set_data (attr, cdata, n_data);
- return CKR_OK;
-
- case CKA_SERIAL_NUMBER:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- data = gkr_pkix_asn1_read_value (cert->data->asn1, "tbsCertificate.serialNumber", &n_data, NULL);
- if (!data)
- return CKR_GENERAL_ERROR;
- gkr_pk_attribute_set_data (attr, data, n_data);
- g_free (data);
- return CKR_OK;
-
- case CKA_VALUE:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- gkr_pk_attribute_set_data (attr, cert->data->raw, cert->data->n_raw);
- return CKR_OK;
-
- case CKA_CHECK_VALUE:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- n_data = gcry_md_get_algo_dlen (GCRY_MD_SHA1);
- g_return_val_if_fail (n_data && n_data > 3, CKR_GENERAL_ERROR);
-
- data = g_new0 (guchar, n_data);
- gcry_md_hash_buffer (GCRY_MD_SHA1, data, cert->data->raw, cert->data->n_raw);
-
- gkr_pk_attribute_set_data (attr, data, 3);
- g_free (data);
- return CKR_OK;
-
- case CKA_START_DATE:
- case CKA_END_DATE:
- if ((ret = load_certificate (cert)) != CKR_OK)
- return ret;
- if (!gkr_pkix_asn1_read_time (cert->data->asn1,
- attr->type == CKA_START_DATE ?
- "tbsCertificate.validity.notBefore" :
- "tbsCertificate.validity.notAfter",
- &time))
- return CKR_GENERAL_ERROR;
- gkr_pk_attribute_set_date (attr, time);
- return CKR_OK;
-
- /* These are only used for strange online certificates which we don't support */
- case CKA_URL:
- case CKA_HASH_OF_SUBJECT_PUBLIC_KEY:
- case CKA_HASH_OF_ISSUER_PUBLIC_KEY:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- case CKA_GNOME_PURPOSE_OIDS:
- return read_certificate_purposes (cert, attr);
-
- default:
- break;
- };
-
- return GKR_PK_OBJECT_CLASS (gkr_pk_cert_parent_class)->get_attribute (obj, attr);
-}
-
-static guchar*
-gkr_pk_cert_serialize (GkrPkObject *obj, const gchar *password, gsize *n_data)
-{
- GkrPkCert *cert = GKR_PK_CERT (obj);
-
- if (load_certificate (cert) != CKR_OK)
- return NULL;
-
- g_return_val_if_fail (cert->data->raw, NULL);
- g_return_val_if_fail (cert->data->n_raw, NULL);
-
- *n_data = cert->data->n_raw;
- return g_memdup (cert->data->raw, cert->data->n_raw);
-}
-
-static void
-gkr_pk_cert_finalize (GObject *obj)
-{
- GkrPkCert *cert = GKR_PK_CERT (obj);
-
- g_free (cert->data->raw);
- cert->data->raw = NULL;
-
- if (cert->data->asn1)
- asn1_delete_structure (&cert->data->asn1);
- cert->data->asn1 = NULL;
-
- G_OBJECT_CLASS (gkr_pk_cert_parent_class)->finalize (obj);
-}
-
-
-static void
-gkr_pk_cert_class_init (GkrPkCertClass *klass)
-{
- GObjectClass *gobject_class;
- GkrPkObjectClass *parent_class;
-
- init_quarks ();
-
- gobject_class = (GObjectClass*)klass;
-
- gkr_pk_cert_parent_class = g_type_class_peek_parent (klass);
-
- parent_class = GKR_PK_OBJECT_CLASS (klass);
- parent_class->get_attribute = gkr_pk_cert_get_attribute;
- parent_class->serialize = gkr_pk_cert_serialize;
-
- gobject_class->get_property = gkr_pk_cert_get_property;
- gobject_class->set_property = gkr_pk_cert_set_property;
- gobject_class->finalize = gkr_pk_cert_finalize;
-
- g_object_class_install_property (gobject_class, PROP_ASN1_TREE,
- g_param_spec_pointer ("asn1-tree", "ASN1 Certificate", "Raw Certificate Object",
- G_PARAM_READWRITE));
-
- g_type_class_add_private (gobject_class, sizeof (GkrPkCertData));
-}
-
-GkrPkCert*
-gkr_pk_cert_new (GkrPkObjectManager *manager, GQuark location, ASN1_TYPE asn1)
-{
- gkrid id = NULL;
- GkrPkCert *cert;
- guchar *raw;
- gsize n_raw;
-
- /* TODO: A more efficient way? */
- if (asn1) {
- raw = gkr_pkix_asn1_encode (asn1, "", &n_raw, NULL);
- g_return_val_if_fail (raw, NULL);
- id = gkr_id_new_digest (raw, n_raw);
- }
-
- cert = g_object_new (GKR_TYPE_PK_CERT, "location", location,
- "digest", id, "manager", manager,
- "asn1-tree", asn1, NULL);
-
- gkr_id_free (id);
- return cert;
-}
-
-CK_RV
-gkr_pk_cert_create (GkrPkObjectManager* manager, GArray* array,
- GkrPkObject **object)
-{
- ASN1_TYPE asn;
- CK_ATTRIBUTE_PTR attr;
- CK_KEY_TYPE type;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (manager), CKR_GENERAL_ERROR);
- g_return_val_if_fail (array, CKR_GENERAL_ERROR);
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- *object = NULL;
-
- if (!gkr_pk_attributes_ulong (array, CKA_CERTIFICATE_TYPE, &type))
- return CKR_TEMPLATE_INCOMPLETE;
-
- if (type != CKC_X_509)
- return CKR_ATTRIBUTE_VALUE_INVALID;
-
- attr = gkr_pk_attributes_find (array, CKA_VALUE);
- if (!attr)
- return CKR_TEMPLATE_INCOMPLETE;
-
- g_return_val_if_fail (attr->pValue, CKR_GENERAL_ERROR);
- g_return_val_if_fail (attr->ulValueLen, CKR_GENERAL_ERROR);
-
- if (gkr_pkix_der_read_certificate (attr->pValue, attr->ulValueLen, &asn) != GKR_PKIX_SUCCESS)
- return CKR_ATTRIBUTE_VALUE_INVALID;
-
- /* All the attributes that we used up */
- gkr_pk_attributes_consume (array, CKA_CERTIFICATE_TYPE, CKA_VALUE, -1);
-
- *object = GKR_PK_OBJECT (gkr_pk_cert_new (manager, 0, asn));
- return CKR_OK;
-}
-
-gboolean
-gkr_pk_cert_has_extension (GkrPkCert *cert, GQuark oid, gboolean *critical)
-{
- gchar *name;
- guchar *val;
- gsize n_val;
- gint i;
-
- g_return_val_if_fail (GKR_IS_PK_CERT (cert), FALSE);
- g_return_val_if_fail (oid, FALSE);
-
- if (load_certificate (cert) != CKR_OK)
- return FALSE;
-
- i = find_certificate_extension (cert, oid);
- if (i <= 0)
- return FALSE;
-
- /* Read the critical status */
- if(critical) {
- name = g_strdup_printf ("tbsCertificate.extensions.?%u.critical", i);
- val = gkr_pkix_asn1_read_value (cert->data->asn1, name, &n_val, NULL);
- g_free (name);
- if (!val || n_val < 1 || val[0] != 'T')
- *critical = FALSE;
- else
- *critical = TRUE;
- g_free (val);
- }
-
- return TRUE;
-}
-
-guchar*
-gkr_pk_cert_get_extension (GkrPkCert *cert, GQuark oid, gsize *n_extension,
- gboolean *critical)
-{
- gchar *name;
- guchar *val;
- gsize n_val;
- gint i;
-
- g_return_val_if_fail (GKR_IS_PK_CERT (cert), NULL);
- g_return_val_if_fail (cert->data->asn1, NULL);
- g_return_val_if_fail (oid, NULL);
- g_return_val_if_fail (n_extension, NULL);
-
- i = find_certificate_extension (cert, oid);
- if (i <= 0)
- return NULL;
-
- /* Read the critical status */
- if(critical) {
- name = g_strdup_printf ("tbsCertificate.extensions.?%u.critical", i);
- val = gkr_pkix_asn1_read_value (cert->data->asn1, name, &n_val, NULL);
- g_free (name);
- if (!val || n_val < 1 || val[0] != 'T')
- *critical = FALSE;
- else
- *critical = TRUE;
- g_free (val);
- }
-
- /* And the extension value */
- name = g_strdup_printf ("tbsCertificate.extensions.?%u.extnValue", i);
- val = gkr_pkix_asn1_read_value (cert->data->asn1, name, n_extension, NULL);
- g_free (name);
-
- return val;
-}
-
-gkrconstid
-gkr_pk_cert_get_keyid (GkrPkCert *cert)
-{
- GkrPkPubkey *pub;
-
- g_return_val_if_fail (GKR_IS_PK_CERT (cert), NULL);
-
- /* Access via public key */
- pub = get_public_key (cert);
- return gkr_pk_pubkey_get_keyid (pub);
-}
-
-const guchar*
-gkr_pk_cert_get_raw (GkrPkCert *cert, gsize *n_raw)
-{
- g_return_val_if_fail (GKR_IS_PK_CERT (cert), NULL);
- *n_raw = cert->data->n_raw;
- return cert->data->raw;
-}
diff --git a/pk/gkr-pk-cert.h b/pk/gkr-pk-cert.h
deleted file mode 100644
index cd8cc694..00000000
--- a/pk/gkr-pk-cert.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-cert.h - An x509 certificate
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_CERT_H__
-#define __GKR_PK_CERT_H__
-
-#include "pk/gkr-pk-object.h"
-
-#include <libtasn1.h>
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_CERT (gkr_pk_cert_get_type())
-#define GKR_PK_CERT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_CERT, GkrPkCert))
-#define GKR_PK_CERT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_PK_CERT, GkrPkObject))
-#define GKR_IS_PK_CERT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_CERT))
-#define GKR_IS_PK_CERT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_PK_CERT))
-#define GKR_PK_CERT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_PK_CERT, GkrPkCertClass))
-
-typedef struct _GkrPkCert GkrPkCert;
-typedef struct _GkrPkCertClass GkrPkCertClass;
-typedef struct _GkrPkCertData GkrPkCertData;
-
-struct _GkrPkCert {
- GkrPkObject parent;
- GkrPkCertData *data;
-};
-
-struct _GkrPkCertClass {
- GkrPkObjectClass parent_class;
-};
-
-GType gkr_pk_cert_get_type (void) G_GNUC_CONST;
-
-GkrPkCert* gkr_pk_cert_new (GkrPkObjectManager *manager,
- GQuark location, ASN1_TYPE asn1);
-
-CK_RV gkr_pk_cert_create (GkrPkObjectManager* manager,
- GArray* array, GkrPkObject **object);
-
-gboolean gkr_pk_cert_has_extension (GkrPkCert *cert, GQuark oid,
- gboolean *critical);
-
-guchar* gkr_pk_cert_get_extension (GkrPkCert *cert, GQuark oid,
- gsize *n_extension, gboolean *critical);
-
-gkrconstid gkr_pk_cert_get_keyid (GkrPkCert *cert);
-
-const guchar* gkr_pk_cert_get_raw (GkrPkCert *cert, gsize *n_raw);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_CERT_H__ */
diff --git a/pk/gkr-pk-index.c b/pk/gkr-pk-index.c
deleted file mode 100644
index 838f4855..00000000
--- a/pk/gkr-pk-index.c
+++ /dev/null
@@ -1,1216 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-index.c - indexes to store values related to pk objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-index.h"
-#include "gkr-pk-places.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-location.h"
-
-#include <sys/file.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#define MAX_LOCK_TRIES 16
-
-#define GKR_TYPE_PK_INDEX (gkr_pk_index_get_type())
-#define GKR_PK_INDEX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_INDEX, GkrPkIndex))
-#define GKR_IS_PK_INDEX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_INDEX))
-
-typedef struct _GkrPkIndex GkrPkIndex;
-typedef struct _GkrPkIndexClass GkrPkIndexClass;
-
-struct _GkrPkIndex {
- GObject parent;
- GHashTable *path_by_location;
- GHashTable *mtime_by_location;
- GHashTable *file_by_location;
- GHashTable *defaults_by_parent;
-};
-
-struct _GkrPkIndexClass {
- GObjectClass parent_class;
-};
-
-static GType gkr_pk_index_get_type (void);
-G_DEFINE_TYPE (GkrPkIndex, gkr_pk_index, G_TYPE_OBJECT);
-
-static GkrPkIndex *index_singleton = NULL;
-static GQuark no_location = 0;
-
-typedef gboolean (*ReadValueFunc) (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gpointer user_data);
-
-typedef gboolean (*WriteValueFunc) (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gpointer user_data);
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-#ifndef HAVE_FLOCK
-#define LOCK_SH 1
-#define LOCK_EX 2
-#define LOCK_NB 4
-#define LOCK_UN 8
-
-static int flock(int fd, int operation)
-{
- struct flock flock;
-
- switch (operation & ~LOCK_NB) {
- case LOCK_SH:
- flock.l_type = F_RDLCK;
- break;
- case LOCK_EX:
- flock.l_type = F_WRLCK;
- break;
- case LOCK_UN:
- flock.l_type = F_UNLCK;
- break;
- default:
- errno = EINVAL;
- return -1;
- }
-
- flock.l_whence = 0;
- flock.l_start = 0;
- flock.l_len = 0;
-
- return fcntl(fd, (operation & LOCK_NB) ? F_SETLK : F_SETLKW, &flock);
-}
-#endif //NOT_HAVE_FLOCK
-
-static void
-free_mtime (gpointer v)
-{
- g_slice_free (time_t, v);
-}
-
-static GQuark*
-quarks_from_strings (const gchar **strv, gsize *n_quarks)
-{
- GArray *arr;
- GQuark quark;
-
- arr = g_array_new (TRUE, TRUE, sizeof (GQuark));
- while (*strv) {
- quark = g_quark_from_string (*strv);
- g_array_append_val (arr, quark);
- ++strv;
- }
-
- if (n_quarks)
- *n_quarks = arr->len;
-
- return (GQuark*)g_array_free (arr, FALSE);
-}
-
-static gchar**
-quarks_to_strings (const GQuark* quarks, gsize *n_strings)
-{
- const gchar *value;
- GArray *arr;
-
- arr = g_array_new (TRUE, TRUE, sizeof (const gchar*));
- while (*quarks) {
- value = g_quark_to_string (*quarks);
- g_array_append_val (arr, value);
- ++quarks;
- }
-
- if (n_strings)
- *n_strings = arr->len;
- return (gchar**)g_array_free (arr, FALSE);
-}
-
-static gboolean
-strings_are_equal (const gchar **one, const gchar **two)
-{
- while (*one && *two) {
- if (!g_str_equal (*one, *two))
- return FALSE;
- ++one;
- ++two;
- }
-
- return *one == *two;
-}
-
-static gpointer
-location_to_key (GQuark loc)
-{
- return GUINT_TO_POINTER (loc ? loc : no_location);
-}
-
-static GQuark
-location_from_key (gpointer key)
-{
- GQuark ret = GPOINTER_TO_UINT (key);
- return ret == no_location ? 0 : ret;
-}
-
-static const gchar*
-index_path_for_location (GkrPkIndex *index, GQuark loc)
-{
- gchar *locpath;
- gchar *path;
-
- if (!loc)
- return NULL;
-
- path = g_hash_table_lookup (index->path_by_location, location_to_key (loc));
- if (!path) {
- locpath = gkr_location_to_path (loc);
- if (!locpath) {
- g_message ("The disk or drive this file is located on is not present: %s",
- g_quark_to_string (loc));
- return NULL;
- }
-
- /* Our index files have a .keystore extension */
- path = g_strconcat (locpath, ".keystore", NULL);
- g_free (locpath);
-
- g_hash_table_replace (index->path_by_location, location_to_key (loc), path);
- }
-
- return path;
-}
-
-static gboolean
-check_index_mtime (GkrPkIndex *index, GQuark loc, time_t mtime)
-{
- gpointer k;
- gboolean ret = FALSE;
- time_t *last;
-
- k = location_to_key (loc);
-
- /* Check on last mtime */
- last = (time_t*)g_hash_table_lookup (index->mtime_by_location, k);
- ret = !last || (*last != mtime);
-
- /* Setup new mtime */
- if (ret) {
- last = g_slice_new (time_t);
- *last = mtime;
- g_hash_table_replace (index->mtime_by_location, k, last);
- }
-
- return ret;
-}
-
-static gchar*
-digest_to_group (gkrconstid digest)
-{
- const guchar *digdata;
- gsize n_group, n_digdata;
- gboolean r;
- gchar *group;
-
- g_return_val_if_fail (digest, NULL);
-
- digdata = gkr_id_get_raw (digest, &n_digdata);
- g_assert (digdata);
- n_group = (n_digdata * 2) + 1;
- group = g_malloc0 (n_group);
-
- r = gkr_crypto_hex_encode (digdata, n_digdata, group, &n_group);
- g_assert (r == TRUE);
-
- return group;
-}
-
-static gboolean
-read_exists_any_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gboolean *value)
-{
- g_assert (value);
- *value = g_key_file_has_group (file, group);
- return TRUE;
-}
-
-static gboolean
-read_exists_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gboolean *value)
-{
- g_assert (value);
- g_assert (field);
- *value = g_key_file_has_key (file, group, field, err);
- return *err == NULL;
-}
-
-static gboolean
-read_boolean_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gboolean *value)
-{
- g_assert (value);
- g_assert (field);
- *value = g_key_file_get_boolean (file, group, field, err);
- return *err == NULL;
-}
-
-static gboolean
-read_int_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gint *value)
-{
- g_assert (value);
- g_assert (field);
- *value = g_key_file_get_integer (file, group, field, err);
- return *err == NULL;
-}
-
-static gboolean
-read_string_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gchar **value)
-{
- g_assert (value);
- g_assert (field);
- *value = g_key_file_get_string (file, group, field, err);
- return *value != NULL;
-}
-
-static gboolean
-read_quarks_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, GQuark **value)
-{
- gchar **vals;
-
- g_assert (value);
- g_assert (field);
-
- vals = g_key_file_get_string_list (file, group, field, NULL, err);
- if (vals != NULL) {
- g_assert (*err == NULL);
- *value = quarks_from_strings ((const gchar**)vals, NULL);
- g_strfreev (vals);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-get_keyfile_value (GKeyFile *key_file, const gchar *group,
- const gchar *field, ReadValueFunc func, gpointer data)
-{
- GError *err = NULL;
-
- g_assert (key_file);
- g_assert (group);
- g_assert (func);
-
- if ((func) (key_file, group, field, &err, data))
- return 1;
-
- if (err != NULL) {
- if (err->code != G_KEY_FILE_ERROR_GROUP_NOT_FOUND &&
- err->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND) {
- g_warning ("couldn't read field '%s' from index: %s",
- field, err->message ? err->message : "");
- g_error_free (err);
- return -1;
- }
-
- g_error_free (err);
- }
-
- return 0;
-}
-
-static gboolean
-write_clear (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gpointer user_data)
-{
- if (!g_key_file_has_group (file, group))
- return FALSE;
- g_key_file_remove_group (file, group, err);
- return TRUE;
-}
-
-static gboolean
-write_delete (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gpointer user_data)
-{
- g_assert (field);
-
- if (g_key_file_has_key (file, group, field, err)) {
- g_key_file_remove_key (file, group, field, err);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-write_boolean_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gboolean *value)
-{
- g_assert (value);
- g_assert (field);
-
- if (g_key_file_get_boolean (file, group, field, err) != *value || err != NULL) {
- g_clear_error (err);
- g_key_file_set_boolean (file, group, field, *value);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-write_int_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, gint *value)
-{
- g_assert (value);
- g_assert (field);
-
- if (g_key_file_get_integer (file, group, field, err) != *value || err != NULL) {
- g_clear_error (err);
- g_key_file_set_integer (file, group, field, *value);
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gboolean
-write_string_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, const gchar **value)
-{
- gboolean ret = FALSE;
- gchar *o;
-
- g_assert (value);
- g_assert (*value);
- g_assert (field);
-
- o = g_key_file_get_value (file, group, field, NULL);
-
- if (!o || !g_str_equal (o, *value)) {
- g_key_file_set_string (file, group, field, *value);
- ret = TRUE;
- }
-
- g_free (o);
- return ret;
-}
-
-static gboolean
-write_quarks_value (GKeyFile *file, const gchar *group, const gchar *field,
- GError **err, GQuark **value)
-{
- GQuark *quarks;
- gsize n_strings;
- gchar **strings, **o;
- gboolean ret = FALSE;
-
- g_assert (value);
- g_assert (*value);
- g_assert (field);
-
- quarks = *value;
- strings = quarks_to_strings (quarks, &n_strings);
- o = g_key_file_get_string_list (file, group, field, NULL, NULL);
-
- if (!o || !strings_are_equal ((const gchar**)strings, (const gchar**)o)) {
- g_key_file_set_string_list (file, group, field, (const gchar**)strings, n_strings);
- ret = TRUE;
- }
-
- g_strfreev (o);
- g_free (strings);
- return ret;
-}
-
-static void
-set_keyfile_value (GKeyFile *key_file, gkrconstid digest,
- const gchar *field, WriteValueFunc func,
- gpointer data, gboolean *updated)
-{
- GError *err = NULL;
- gchar *group;
-
- g_assert (key_file);
- g_assert (digest);
- g_assert (func);
- g_assert (updated);
-
- /* TODO: Cache this somehow? */
- group = digest_to_group (digest);
- g_return_if_fail (group);
-
- *updated = (func) (key_file, group, field, &err, data);
-
- if (err) {
- g_warning ("couldn't write field '%s' to index: %s",
- field, err->message ? err->message : "");
- g_error_free (err);
- }
-
- g_free (group);
-}
-
-static GKeyFile*
-read_key_file (int fd, GError **err)
-{
- GKeyFile *key_file = NULL;
- gchar *contents;
- gboolean res;
- struct stat sb;
-
- g_assert (fd != -1);
-
- if (fstat (fd, &sb) == -1) {
- g_set_error (err, G_FILE_ERROR, g_file_error_from_errno (errno),
- "failed to get index file size: %s", g_strerror (errno));
- return NULL;
- }
-
- /* Empty file, empty key file */
- if (sb.st_size == 0 || sb.st_size > G_MAXSIZE)
- return g_key_file_new ();
-
- contents = (gchar*)mmap (NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
- if (!contents) {
- g_set_error (err, G_FILE_ERROR, g_file_error_from_errno (errno),
- "failed to read (map) index file: %s", g_strerror (errno));
- return NULL;
- }
-
- key_file = g_key_file_new ();
- res = g_key_file_load_from_data (key_file, contents, sb.st_size, G_KEY_FILE_KEEP_COMMENTS, err);
- munmap (contents, sb.st_size);
-
- if (!res) {
- g_key_file_free (key_file);
- key_file = NULL;
- }
-
- return key_file;
-}
-
-static GKeyFile*
-load_index_key_file (GkrPkIndex *index, GQuark loc, int fd, gboolean force)
-{
- GKeyFile *key_file = NULL;
- const gchar *path;
- gboolean closefd = FALSE;
- GError *err = NULL;
-
- /* If we've never seen it then we should try to read it */
- if (loc && !force &&
- !g_hash_table_lookup (index->file_by_location, location_to_key (loc)))
- force = TRUE;
-
- /* Read it when necessary and possible */
- if (force) {
- path = index_path_for_location (index, loc);
- if (path) {
- fd = open (path, O_RDONLY);
- if (fd == -1) {
- if (errno != ENOTDIR && errno != ENOENT) {
- g_message ("couldn't open index file: %s: %s",
- path, g_strerror (errno));
- return NULL;
- }
- }
-
- closefd = TRUE;
- }
-
- /* No file on disk, no index */
- if (fd == -1) {
- g_hash_table_remove (index->file_by_location,
- location_to_key (loc));
-
- /* Read in the open file */
- } else {
- key_file = read_key_file (fd, &err);
- if (closefd)
- close (fd);
-
- if (!key_file) {
- g_message ("couldn't read index file: %s: %s", path ? path : "",
- err && err->message ? err->message : "");
- return NULL;
- }
-
- g_hash_table_replace (index->file_by_location,
- location_to_key (loc), key_file);
- }
- }
-
- key_file = g_hash_table_lookup (index->file_by_location,
- location_to_key (loc));
-
- /* Automatically create an in memory key file for 'no location' */
- if (!key_file && !loc) {
- key_file = g_key_file_new ();
- g_hash_table_replace (index->file_by_location,
- location_to_key (loc), key_file);
- }
-
- /* No index is available for this location */
- if (!key_file)
- return NULL;
-
- return key_file;
-}
-
-static const gchar*
-find_parent_defaults (GQuark parent)
-{
- const GkrPkPlace *place;
- const gchar *defaults = NULL;
- GSList *volumes, *l;
- GQuark loc;
- guint i;
-
- for (i = 0; i < G_N_ELEMENTS (gkr_pk_places); ++i) {
- place = &(gkr_pk_places[i]);
-
- /* With a specific volume */
- if (place->volume) {
- loc = gkr_location_from_string (place->volume);
- loc = gkr_location_from_child (loc, place->directory);
- if (loc == parent)
- defaults = place->defaults;
-
- /* With any volume */
- } else {
- volumes = gkr_location_manager_get_volumes (NULL);
- for (l = volumes; l; l = g_slist_next (l)) {
- loc = gkr_location_from_child (GPOINTER_TO_UINT (l->data),
- place->directory);
- if (loc == parent) {
- defaults = place->defaults;
- break;
- }
- }
- g_slist_free (volumes);
- }
-
- /* Found something? */
- if (defaults)
- return defaults;
- }
-
- return NULL;
-}
-
-static GKeyFile*
-load_parent_key_file (GkrPkIndex *index, GQuark loc)
-{
- GKeyFile *file;
- GQuark parent;
- const gchar *defaults;
-
- if (!loc)
- return NULL;
-
- parent = gkr_location_to_parent (loc);
- if (!parent)
- return NULL;
-
- file = g_hash_table_lookup (index->defaults_by_parent, GUINT_TO_POINTER (parent));
- if (!file) {
- file = g_key_file_new ();
- g_hash_table_insert (index->defaults_by_parent, GUINT_TO_POINTER (parent), file);
-
- /*
- * Look in the places list and load any default index data
- * from there.
- */
- defaults = find_parent_defaults (parent);
- if (defaults) {
- if (!g_key_file_load_from_data (file, defaults, strlen (defaults),
- G_KEY_FILE_NONE, NULL))
- g_warning ("couldn't parse builtin parent defaults");
- }
- }
-
- return file;
-}
-
-static gboolean
-read_pk_index_value (GkrPkIndex *index, GQuark loc, gkrconstid digest,
- const gchar *field, GkrPkObject *object,
- ReadValueFunc func, gpointer data)
-{
- const gchar *path = NULL;
- struct stat sb;
- gboolean force = FALSE;
- GKeyFile *key_file = NULL;
- gchar *group;
- gint ret = 0;
-
- g_return_val_if_fail (digest, FALSE);
-
- if (loc) {
- path = index_path_for_location (index, loc);
- if (!path)
- return FALSE;
-
- /* TODO: Any way to do this less often? */
- force = (stat (path, &sb) < 0 || check_index_mtime (index, loc, sb.st_mtime));
- }
-
- key_file = load_index_key_file (index, loc, -1, force);
-
- /* Try the actual item first */
- if (key_file) {
- group = digest_to_group (digest);
- g_return_val_if_fail (group, FALSE);
-
- ret = get_keyfile_value (key_file, group, field, func, data);
- g_free (group);
-
- /* If not found, look in the default section */
- if (ret == 0)
- ret = get_keyfile_value (key_file, "default", field, func, data);
- }
-
- /* Look in the parent directory defaults */
- if (ret == 0) {
- key_file = load_parent_key_file (index, loc);
- if (key_file)
- ret = get_keyfile_value (key_file, "default", field, func, data);
- }
-
- /*
- * If we saw that the file was changed, then tell the object
- * to flush all of its caches and etc...
- */
- if (force && object)
- gkr_pk_object_flush (object);
-
- return ret == 1;
-}
-
-static gboolean
-update_pk_index_value (GkrPkIndex *index, GQuark loc, gkrconstid digest,
- const gchar *field, GkrPkObject *object,
- WriteValueFunc func, gpointer data)
-{
- const gchar *path = NULL;
- gchar *contents = NULL;
- gboolean ret = FALSE;
- gboolean force = FALSE;
- gboolean updated = FALSE;
- GError *err = NULL;
- GKeyFile *key_file = NULL;
- gsize n_contents;
- struct stat sb;
- int tries = 0;
- int fd = -1;
-
- g_return_val_if_fail (digest, FALSE);
-
- if (loc) {
- path = index_path_for_location (index, loc);
- if (!path)
- return FALSE;
-
- /* File lock retry loop */
- for (;;) {
- if (tries > MAX_LOCK_TRIES) {
- g_message ("couldn't write index '%s' value to file: %s: file is locked",
- field, path);
- goto done;
- }
-
- fd = open (path, O_RDONLY | O_CREAT, S_IRUSR | S_IWUSR);
- if (fd == -1) {
- g_message ("couldn't create index file: %s: %s", path, g_strerror (errno));
- goto done;
- }
-
- if (flock (fd, LOCK_EX | LOCK_NB) < 0) {
- if (errno == EWOULDBLOCK) {
- close (fd);
- fd = -1;
- ++tries;
- gkr_async_usleep (200000);
- continue;
- }
- g_message ("couldn't lock index file: %s: %s", path, g_strerror (errno));
- goto done;
- }
-
- /* Successfully opened file */;
- break;
- }
-
-
- /* See if file needs updating */
- force = (fstat (fd, &sb) < 0 || check_index_mtime (index, loc, sb.st_mtime));
- }
-
- key_file = load_index_key_file (index, loc, -1, force);
- if (!key_file)
- goto done;
-
- set_keyfile_value (key_file, digest, field, func, data, &updated);
- if (updated && loc) {
-
- /* Serialize the key file into memory */
- contents = g_key_file_to_data (key_file, &n_contents, &err);
- if (!contents) {
- g_warning ("couldn't serialize index file: %s",
- err && err->message ? err->message : "");
- g_error_free (err);
- goto done;
- }
-
- g_assert (path);
-
- /* And write that memory to disk atomically */
- if (!g_file_set_contents (path, contents, n_contents, &err)) {
- g_message ("couldn't write index file to disk: %s: %s",
- path, err && err->message ? err->message : "");
- g_error_free (err);
- goto done;
- }
- }
-
- /*
- * If the file was updated then tell the object to flush all of
- * its caches and other optimizations...
- */
- if ((force || updated) && object)
- gkr_pk_object_flush (object);
-
- ret = TRUE;
-
-done:
- if (fd != -1)
- close (fd);
- g_free (contents);
-
- return ret;
-}
-
-static void
-cleanup_index_singleton (void *unused)
-{
- g_assert (index_singleton);
- g_object_unref (index_singleton);
- index_singleton = NULL;
-}
-
-static GkrPkIndex*
-get_index_singleton (void)
-{
- if (!index_singleton) {
- index_singleton = g_object_new (GKR_TYPE_PK_INDEX, NULL);
- gkr_cleanup_register (cleanup_index_singleton, NULL);
- }
-
- return index_singleton;
-}
-
-static gboolean
-remove_descendent_locations (gpointer key, gpointer value, gpointer user_data)
-{
- GQuark loc = location_from_key (key);
- GQuark volume = GPOINTER_TO_UINT (user_data);
- return loc && gkr_location_is_descendant (volume, loc);
-}
-
-static void
-flush_caches (GkrLocationManager *locmgr, GQuark volume, GkrPkIndex *index)
-{
- /*
- * Called when the location manager adds or removes a prefix
- * possibly invalidating our cached paths.
- */
-
- g_hash_table_foreach_remove (index->path_by_location, remove_descendent_locations,
- GUINT_TO_POINTER (volume));
- g_hash_table_foreach_remove (index->file_by_location, remove_descendent_locations,
- GUINT_TO_POINTER (volume));
- g_hash_table_foreach_remove (index->mtime_by_location, remove_descendent_locations,
- GUINT_TO_POINTER (volume));
- g_hash_table_foreach_remove (index->defaults_by_parent, remove_descendent_locations,
- GUINT_TO_POINTER (volume));
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_index_init (GkrPkIndex *index)
-{
- GkrLocationManager *locmgr;
-
- index->path_by_location = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
- index->mtime_by_location = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_mtime);
- index->file_by_location = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
- (GDestroyNotify)g_key_file_free);
- index->defaults_by_parent = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL,
- (GDestroyNotify)g_key_file_free);
-
- locmgr = gkr_location_manager_get ();
- g_signal_connect (locmgr, "volume-removed", G_CALLBACK (flush_caches), index);
-}
-
-static void
-gkr_pk_index_finalize (GObject *obj)
-{
- GkrPkIndex *index = GKR_PK_INDEX (obj);
- GkrLocationManager *locmgr;
-
- locmgr = gkr_location_manager_get ();
- g_signal_handlers_disconnect_by_func (locmgr, flush_caches, index);
-
- g_hash_table_destroy (index->path_by_location);
- g_hash_table_destroy (index->mtime_by_location);
- g_hash_table_destroy (index->file_by_location);
- g_hash_table_destroy (index->defaults_by_parent);
- index->path_by_location = index->mtime_by_location = NULL;
- index->file_by_location = index->defaults_by_parent = NULL;
-
- G_OBJECT_CLASS (gkr_pk_index_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_index_class_init (GkrPkIndexClass *klass)
-{
- GObjectClass *gobject_class;
-
- gkr_pk_index_parent_class = g_type_class_peek_parent (klass);
-
- gobject_class = (GObjectClass*)klass;
- gobject_class->finalize = gkr_pk_index_finalize;
-
- /* A special quark that denotes stored in memory */
- no_location = g_quark_from_static_string ("MEMORY");
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-gboolean
-gkr_pk_index_get_boolean (GkrPkObject *obj, const gchar *field, gboolean defvalue)
-{
- gboolean ret = defvalue;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), ret);
- g_return_val_if_fail (field != NULL, ret);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (ReadValueFunc)read_boolean_value, &ret))
- ret = defvalue;
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_get_boolean_full (GQuark location, gkrconstid digest,
- const gchar *field, gboolean defvalue)
-{
- gboolean ret = defvalue;
-
- g_return_val_if_fail (digest, ret);
- g_return_val_if_fail (field != NULL, ret);
-
- if (!read_pk_index_value (get_index_singleton (), location, digest, field,
- NULL, (ReadValueFunc)read_boolean_value, &ret))
- ret = defvalue;
-
- return ret;
-}
-
-gint
-gkr_pk_index_get_int (GkrPkObject *obj, const gchar *field, gint defvalue)
-{
- gint ret = defvalue;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), ret);
- g_return_val_if_fail (field != NULL, ret);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (ReadValueFunc)read_int_value, &ret))
- ret = defvalue;
-
- return ret;
-}
-
-gchar*
-gkr_pk_index_get_string (GkrPkObject *obj, const gchar *field)
-{
- gchar *ret = NULL;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), NULL);
- g_return_val_if_fail (field != NULL, NULL);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (ReadValueFunc)read_string_value, &ret))
- ret = NULL;
-
- return ret;
-}
-
-gchar*
-gkr_pk_index_get_string_full (GQuark location, gkrconstid digest,
- const gchar *field)
-{
- gchar *ret = NULL;
-
- g_return_val_if_fail (digest, NULL);
- g_return_val_if_fail (field != NULL, NULL);
-
- if (!read_pk_index_value (get_index_singleton (), location, digest, field,
- NULL, (ReadValueFunc)read_string_value, &ret))
- ret = NULL;
-
- return ret;
-}
-
-guchar*
-gkr_pk_index_get_binary (GkrPkObject *obj, const gchar *field, gsize *n_data)
-{
- guchar *data;
- gchar *str;
- gsize n_str;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), NULL);
- g_return_val_if_fail (field != NULL, NULL);
- g_return_val_if_fail (n_data != NULL, NULL);
-
- str = gkr_pk_index_get_string (obj, field);
- if (!str)
- return NULL;
-
- n_str = strlen (str);
- *n_data = (n_str / 2) + 1;
- data = g_malloc0 (*n_data);
- if (!gkr_crypto_hex_decode (str, n_str, data, n_data)) {
- g_message ("invalid binary data in index under field '%s'", field);
- g_free (data);
- data = NULL;
- }
-
- g_free (str);
- return data;
-}
-
-GQuark*
-gkr_pk_index_get_quarks (GkrPkObject *obj, const gchar *field)
-{
- GQuark *ret = NULL;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), NULL);
- g_return_val_if_fail (field != NULL, NULL);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (ReadValueFunc)read_quarks_value, &ret))
- ret = NULL;
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_has_value (GkrPkObject *obj, const gchar *field)
-{
- gboolean ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (ReadValueFunc)read_exists_value, &ret))
- ret = FALSE;
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_have (GkrPkObject *obj)
-{
- gboolean ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
-
- if (!read_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- NULL, obj, (ReadValueFunc)read_exists_any_value, &ret))
- ret = FALSE;
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_have_full (GQuark location, gkrconstid digest)
-{
- gboolean ret;
-
- g_return_val_if_fail (digest, FALSE);
-
- if (!read_pk_index_value (get_index_singleton (), location, digest, NULL,
- NULL, (ReadValueFunc)read_exists_any_value, &ret))
- ret = FALSE;
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_set_boolean (GkrPkObject *obj, const gchar *field, gboolean val)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (WriteValueFunc)write_boolean_value, &val);
-}
-
-gboolean
-gkr_pk_index_set_int (GkrPkObject *obj, const gchar *field, gint val)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (WriteValueFunc)write_int_value, &val);
-}
-
-gboolean
-gkr_pk_index_set_string (GkrPkObject *obj, const gchar *field, const gchar *val)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
- g_return_val_if_fail (val, FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (WriteValueFunc)write_string_value, &val);
-}
-
-gboolean
-gkr_pk_index_set_string_full (GQuark location, gkrconstid digest, const gchar *field,
- const gchar *val)
-{
- g_return_val_if_fail (digest, FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
- g_return_val_if_fail (val, FALSE);
-
- return update_pk_index_value (get_index_singleton (), location, digest, field,
- NULL, (WriteValueFunc)write_string_value, &val);
-}
-
-gboolean
-gkr_pk_index_set_binary (GkrPkObject *obj, const gchar *field,
- const guchar *data, gsize n_data)
-{
- gboolean ret, r;
- gchar *str;
- gsize n_str;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
-
- n_str = (n_data * 2) + 1;
- str = g_malloc0 (n_str);
-
- r = gkr_crypto_hex_encode (data, n_data, str, &n_str);
- g_assert (r == TRUE);
-
- ret = gkr_pk_index_set_string (obj, field, str);
- g_free (str);
-
- return ret;
-}
-
-gboolean
-gkr_pk_index_set_quarks (GkrPkObject *obj, const gchar *field, GQuark *quarks)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (WriteValueFunc)write_quarks_value, &quarks);
-}
-
-gboolean
-gkr_pk_index_delete (GkrPkObject *obj, const gchar *field)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
- g_return_val_if_fail (field != NULL, FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- field, obj, (WriteValueFunc)write_delete, NULL);
-
-}
-
-gboolean
-gkr_pk_index_clear (GkrPkObject *obj)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), FALSE);
-
- return update_pk_index_value (get_index_singleton (), obj->location, obj->digest,
- NULL, obj, (WriteValueFunc)write_clear, NULL);
-
-}
-
-gboolean
-gkr_pk_index_quarks_has (GQuark *quarks, GQuark check)
-{
- while (*quarks) {
- if (*quarks == check)
- return TRUE;
- ++quarks;
- }
-
- return FALSE;
-}
-
-GQuark*
-gkr_pk_index_quarks_dup (GQuark *quarks)
-{
- GQuark *last = quarks;
-
- /* Figure out how many there are */
- while (*last)
- ++last;
-
- /* Include the null termination */
- ++last;
- return g_memdup (quarks, (last - quarks) * sizeof (GQuark));
-}
-
-void
-gkr_pk_index_quarks_free (GQuark *quarks)
-{
- g_free (quarks);
-}
diff --git a/pk/gkr-pk-index.h b/pk/gkr-pk-index.h
deleted file mode 100644
index 6b371501..00000000
--- a/pk/gkr-pk-index.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-index.h - indexes to store values related to pk objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKINDEX_H_
-#define GKRPKINDEX_H_
-
-
-#include <glib.h>
-
-#include "gkr-pk-object.h"
-
-gboolean gkr_pk_index_get_boolean (GkrPkObject *object, const gchar *field,
- gboolean defvalue);
-
-gboolean gkr_pk_index_get_boolean_full (GQuark location, gkrconstid digest,
- const gchar *field, gboolean defvalue);
-
-gint gkr_pk_index_get_int (GkrPkObject *object, const gchar *field,
- gint defvalue);
-
-gchar* gkr_pk_index_get_string (GkrPkObject *object, const gchar *field);
-
-gchar* gkr_pk_index_get_string_full (GQuark location, gkrconstid digest, const gchar *field);
-
-guchar* gkr_pk_index_get_binary (GkrPkObject *object, const gchar *field,
- gsize *n_data);
-
-GQuark* gkr_pk_index_get_quarks (GkrPkObject *object, const gchar *field);
-
-gboolean gkr_pk_index_set_boolean (GkrPkObject *object, const gchar *field,
- gboolean val);
-
-gboolean gkr_pk_index_set_int (GkrPkObject *object, const gchar *field,
- gint val);
-
-gboolean gkr_pk_index_set_string (GkrPkObject *object, const gchar *field,
- const gchar *val);
-
-gboolean gkr_pk_index_set_string_full (GQuark location, gkrconstid digest,
- const gchar *field, const gchar *val);
-
-gboolean gkr_pk_index_set_binary (GkrPkObject *object, const gchar *field,
- const guchar *data, gsize n_data);
-
-gboolean gkr_pk_index_set_quarks (GkrPkObject *object, const gchar *field,
- GQuark *quarks);
-
-gboolean gkr_pk_index_has_value (GkrPkObject *object, const gchar *field);
-
-gboolean gkr_pk_index_delete (GkrPkObject *object, const gchar *field);
-
-gboolean gkr_pk_index_have (GkrPkObject *object);
-
-gboolean gkr_pk_index_have_full (GQuark location, gkrconstid digest);
-
-gboolean gkr_pk_index_clear (GkrPkObject *object);
-
-/* -----------------------------------------------------------------------------
- * LISTS OF QUARKS
- */
-
-gboolean gkr_pk_index_quarks_has (GQuark *quarks, GQuark check);
-
-GQuark* gkr_pk_index_quarks_dup (GQuark *quarks);
-
-void gkr_pk_index_quarks_free (GQuark *quarks);
-
-#endif /*GKRPKINDEX_H_*/
diff --git a/pk/gkr-pk-netscape-trust.c b/pk/gkr-pk-netscape-trust.c
deleted file mode 100644
index be2426ea..00000000
--- a/pk/gkr-pk-netscape-trust.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-netscape-trust.c - Combination of Trust and Usage for a Certificate
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-netscape-trust.h"
-#include "gkr-pk-object.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-location.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11n.h"
-#include "pkcs11/pkcs11g.h"
-
-#include "pkix/gkr-pkix-constants.h"
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <libtasn1.h>
-
-#include <stdio.h>
-#include <string.h>
-
-/* -------------------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- PROP_0,
- PROP_CERT
-};
-
-G_DEFINE_TYPE (GkrPkNetscapeTrust, gkr_pk_netscape_trust, GKR_TYPE_PK_OBJECT);
-
-static GQuark OID_KEY_USAGE;
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-init_quarks (void)
-{
- #define QUARK(name, value) \
- name = g_quark_from_static_string(value)
-
- QUARK (OID_KEY_USAGE, "2.5.29.15");
-
- #undef QUARK
-}
-
-static CK_RV
-certificate_attribute (GkrPkNetscapeTrust *trust, CK_ATTRIBUTE_PTR result)
-{
- g_return_val_if_fail (trust->certificate, CKR_GENERAL_ERROR);
- return gkr_pk_object_get_attribute (GKR_PK_OBJECT (trust->certificate), result);
-}
-
-static CK_RV
-has_key_usage (GkrPkNetscapeTrust *trust, guint check, CK_ULONG *val)
-{
- GkrPkixResult res;
- guchar *extension;
- gsize n_extension;
- guint usage;
-
- g_return_val_if_fail (trust->certificate, CKR_GENERAL_ERROR);
- *val = CKT_NETSCAPE_TRUST_UNKNOWN;
-
- /* Find out the key usage */
- extension = gkr_pk_cert_get_extension (trust->certificate, OID_KEY_USAGE,
- &n_extension, NULL);
- if (!extension)
- return CKR_OK;
-
- res = gkr_pkix_der_read_key_usage (extension, n_extension, &usage);
- g_free (extension);
-
- if (res != GKR_PKIX_SUCCESS) {
- g_warning ("invalid key usage in certificate");
- return CKR_GENERAL_ERROR;
- }
-
- if ((usage & check) == check)
- *val = CKT_NETSCAPE_TRUSTED;
- else
- *val = CKT_NETSCAPE_UNTRUSTED;
-
- return CKR_OK;
-}
-
-static CK_RV
-read_key_usage (GkrPkNetscapeTrust *trust, guint check, CK_ATTRIBUTE_PTR attr)
-{
- CK_ULONG value;
- CK_RV ret = has_key_usage (trust, check, &value);
- if (ret == CKR_OK)
- gkr_pk_attribute_set_ulong (attr, value);
- return ret;
-}
-
-static CK_RV
-has_enhanced_usage (GkrPkNetscapeTrust *trust, CK_ATTRIBUTE_TYPE type, CK_ULONG *val)
-{
- CK_RV ret;
- CK_BBOOL bval;
- CK_ULONG nval;
-
- g_return_val_if_fail (trust->certificate, CKR_GENERAL_ERROR);
-
- /* Check if we have the purpose setup */
- ret = gkr_pk_object_get_bool (GKR_PK_OBJECT (trust->certificate),
- type, &bval);
- if (ret != CKR_OK)
- return ret;
-
- /* Don't have the purpose */
- if (!bval) {
- *val = CKT_NETSCAPE_UNTRUSTED;
- return CKR_OK;
- }
-
- /* Ascertain the trust in this certificate */
- ret = gkr_pk_object_get_ulong (GKR_PK_OBJECT (trust->certificate),
- CKA_GNOME_USER_TRUST, &nval);
- if (ret != CKR_OK)
- return ret;
-
- switch (nval) {
- case CKT_GNOME_UNKNOWN:
- *val = CKT_NETSCAPE_TRUST_UNKNOWN;
- return CKR_OK;
- case CKT_GNOME_UNTRUSTED:
- *val = CKT_NETSCAPE_UNTRUSTED;
- return CKR_OK;
- case CKT_GNOME_TRUSTED:
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- };
-
- /* See if we can delegate the purpase (ie: CA) */
- ret = gkr_pk_object_get_ulong (GKR_PK_OBJECT (trust->certificate),
- CKA_CERTIFICATE_CATEGORY, &nval);
- if (ret != CKR_OK)
- return ret;
-
- /* 2 is a certificate authority in PKCS#11 */
- *val = (nval == 2) ? CKT_NETSCAPE_TRUSTED_DELEGATOR : CKT_NETSCAPE_TRUSTED;
- return CKR_OK;
-}
-
-static CK_RV
-read_enhanced_usage (GkrPkNetscapeTrust *trust, CK_ATTRIBUTE_TYPE type,
- CK_ATTRIBUTE_PTR attr)
-{
- CK_ULONG value;
- CK_RV ret = has_enhanced_usage (trust, type, &value);
- if (ret == CKR_OK)
- gkr_pk_attribute_set_ulong (attr, value);
- return ret;
-}
-
-static CK_RV
-hash_certificate (GkrPkNetscapeTrust *trust, int algo, CK_ATTRIBUTE_PTR result)
-{
- const guchar *raw;
- gsize n_hash, n_raw;
-
- g_return_val_if_fail (trust->certificate, CKR_GENERAL_ERROR);
-
- raw = gkr_pk_cert_get_raw (trust->certificate, &n_raw);
- g_return_val_if_fail (raw, CKR_GENERAL_ERROR);
-
- n_hash = gcry_md_get_algo_dlen (algo);
- g_return_val_if_fail (n_hash > 0, CKR_GENERAL_ERROR);
-
- result->pValue = g_malloc0 (n_hash);
- gcry_md_hash_buffer (algo, result->pValue, raw, n_raw);
- result->ulValueLen = n_hash;
-
- return CKR_OK;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_netscape_trust_init (GkrPkNetscapeTrust *trust)
-{
-
-}
-
-static void
-gkr_pk_netscape_trust_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrPkNetscapeTrust *trust = GKR_PK_NETSCAPE_TRUST (obj);
-
- switch (prop_id) {
- case PROP_CERT:
- g_value_set_object (value, trust->certificate);
- break;
- }
-}
-
-static void
-gkr_pk_netscape_trust_set_property (GObject *obj, guint prop_id, const GValue *value,
- GParamSpec *pspec)
-{
- GkrPkNetscapeTrust *trust = GKR_PK_NETSCAPE_TRUST (obj);
-
- switch (prop_id) {
- case PROP_CERT:
- if (trust->certificate)
- g_object_remove_weak_pointer (G_OBJECT (trust->certificate),
- (gpointer*)&trust->certificate);
- trust->certificate = GKR_PK_CERT (g_value_get_object (value));
- if (trust->certificate)
- g_object_add_weak_pointer (G_OBJECT (trust->certificate),
- (gpointer*)&trust->certificate);
- gkr_pk_object_flush (GKR_PK_OBJECT (obj));
- break;
- }
-}
-
-static CK_RV
-gkr_pk_netscape_trust_get_attribute (GkrPkObject* obj, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkNetscapeTrust *trust = GKR_PK_NETSCAPE_TRUST (obj);
-
- g_assert (!attr->pValue);
- switch (attr->type)
- {
- case CKA_PRIVATE:
- case CKA_TRUST_STEP_UP_APPROVED:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- case CKA_CLASS:
- gkr_pk_attribute_set_ulong (attr, CKO_NETSCAPE_TRUST);
- return CKR_OK;
-
- /* Key restrictions */
- case CKA_TRUST_DIGITAL_SIGNATURE:
- return read_key_usage (trust, PKIX_KEY_USAGE_DIGITAL_SIGNATURE, attr);
-
- case CKA_TRUST_NON_REPUDIATION:
- return read_key_usage (trust, PKIX_KEY_USAGE_NON_REPUDIATION, attr);
-
- case CKA_TRUST_KEY_ENCIPHERMENT:
- return read_key_usage (trust, PKIX_KEY_USAGE_KEY_ENCIPHERMENT, attr);
-
- case CKA_TRUST_DATA_ENCIPHERMENT:
- return read_key_usage (trust, PKIX_KEY_USAGE_DATA_ENCIPHERMENT, attr);
-
- case CKA_TRUST_KEY_AGREEMENT:
- return read_key_usage (trust, PKIX_KEY_USAGE_KEY_AGREEMENT, attr);
-
- case CKA_TRUST_KEY_CERT_SIGN:
- return read_key_usage (trust, PKIX_KEY_USAGE_KEY_CERT_SIGN, attr);
-
- case CKA_TRUST_CRL_SIGN:
- return read_key_usage (trust, PKIX_KEY_USAGE_CRL_SIGN, attr);
-
- /* Various trust flags */
- case CKA_TRUST_SERVER_AUTH:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_SERVER_AUTH, attr);
-
- case CKA_TRUST_CLIENT_AUTH:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_CLIENT_AUTH, attr);
-
- case CKA_TRUST_CODE_SIGNING:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_CODE_SIGNING, attr);
-
- case CKA_TRUST_EMAIL_PROTECTION:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_EMAIL_PROTECTION, attr);
-
- case CKA_TRUST_IPSEC_END_SYSTEM:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM, attr);
-
- case CKA_TRUST_IPSEC_TUNNEL:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_IPSEC_TUNNEL, attr);
-
- case CKA_TRUST_IPSEC_USER:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_IPSEC_USER, attr);
-
- case CKA_TRUST_TIME_STAMPING:
- return read_enhanced_usage (trust, CKA_GNOME_PURPOSE_TIME_STAMPING, attr);
-
- case CKA_ID:
- case CKA_SUBJECT:
- case CKA_SERIAL_NUMBER:
- case CKA_ISSUER:
- return certificate_attribute (trust, attr);
-
- case CKA_CERT_MD5_HASH:
- return hash_certificate (trust, GCRY_MD_MD5, attr);
- case CKA_CERT_SHA1_HASH:
- return hash_certificate (trust, GCRY_MD_SHA1, attr);
-
- default:
- break;
- };
-
- return GKR_PK_OBJECT_CLASS (gkr_pk_netscape_trust_parent_class)->get_attribute (obj, attr);
-}
-
-static void
-gkr_pk_netscape_trust_finalize (GObject *obj)
-{
- GkrPkNetscapeTrust *trust = GKR_PK_NETSCAPE_TRUST (obj);
-
- if (trust->certificate)
- g_object_remove_weak_pointer (G_OBJECT (trust->certificate),
- (gpointer*)&trust->certificate);
- trust->certificate = NULL;
-
- G_OBJECT_CLASS (gkr_pk_netscape_trust_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_netscape_trust_class_init (GkrPkNetscapeTrustClass *klass)
-{
- GObjectClass *gobject_class;
- GkrPkObjectClass *parent_class;
-
- init_quarks ();
-
- gobject_class = (GObjectClass*)klass;
-
- gkr_pk_netscape_trust_parent_class = g_type_class_peek_parent (klass);
-
- parent_class = GKR_PK_OBJECT_CLASS (klass);
- parent_class->get_attribute = gkr_pk_netscape_trust_get_attribute;
-
- gobject_class->get_property = gkr_pk_netscape_trust_get_property;
- gobject_class->set_property = gkr_pk_netscape_trust_set_property;
- gobject_class->finalize = gkr_pk_netscape_trust_finalize;
-
- g_object_class_install_property (gobject_class, PROP_CERT,
- g_param_spec_object ("certificate", "Certificate", "Certificate which Purpose is for",
- GKR_TYPE_PK_CERT, G_PARAM_READWRITE));
-}
-
-GkrPkNetscapeTrust*
-gkr_pk_netscape_trust_new (GkrPkObjectManager *mgr, GkrPkCert *cert)
-{
- GkrPkNetscapeTrust *trust;
- gkrid digest = NULL;
- GkrPkObject *obj;
- const guchar *raw;
- gsize n_raw;
-
- g_return_val_if_fail (GKR_IS_PK_CERT (cert), NULL);
- obj = GKR_PK_OBJECT (cert);
-
- /* Make a new digest based on the certificate */
- if (obj->digest) {
- raw = gkr_id_get_raw (obj->digest, &n_raw);
- g_return_val_if_fail (raw, NULL);
- digest = gkr_id_new_digestv ((guchar*)"trust", 5, raw, n_raw, NULL);
- }
-
- trust = g_object_new (GKR_TYPE_PK_NETSCAPE_TRUST, "manager", mgr,
- "digest", digest, "certificate", cert, NULL);
-
- gkr_id_free (digest);
- return trust;
-}
diff --git a/pk/gkr-pk-netscape-trust.h b/pk/gkr-pk-netscape-trust.h
deleted file mode 100644
index 52c07e61..00000000
--- a/pk/gkr-pk-netscape-trust.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-netscape-trust.h - Combination of Trust and Usage for a Certificate
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_NETSCAPE_TRUST_H__
-#define __GKR_PK_NETSCAPE_TRUST_H__
-
-#include "pk/gkr-pk-object.h"
-
-#include <libtasn1.h>
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_NETSCAPE_TRUST (gkr_pk_netscape_trust_get_type())
-#define GKR_PK_NETSCAPE_TRUST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_NETSCAPE_TRUST, GkrPkNetscapeTrust))
-#define GKR_PK_NETSCAPE_TRUST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_PK_NETSCAPE_TRUST, GkrPkObject))
-#define GKR_IS_PK_NETSCAPE_TRUST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_NETSCAPE_TRUST))
-#define GKR_IS_PK_NETSCAPE_TRUST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_PK_NETSCAPE_TRUST))
-#define GKR_PK_NETSCAPE_TRUST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_PK_NETSCAPE_TRUST, GkrPkNetscapeTrustClass))
-
-typedef struct _GkrPkNetscapeTrust GkrPkNetscapeTrust;
-typedef struct _GkrPkNetscapeTrustClass GkrPkNetscapeTrustClass;
-
-struct _GkrPkNetscapeTrust {
- GkrPkObject parent;
- GkrPkCert *certificate;
-};
-
-struct _GkrPkNetscapeTrustClass {
- GkrPkObjectClass parent_class;
-};
-
-GType gkr_pk_netscape_trust_get_type (void) G_GNUC_CONST;
-
-GkrPkNetscapeTrust* gkr_pk_netscape_trust_new (GkrPkObjectManager* mgr, GkrPkCert *cert);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_NETSCAPE_TRUST_H__ */
diff --git a/pk/gkr-pk-object-manager.c b/pk/gkr-pk-object-manager.c
deleted file mode 100644
index 2fc1dfed..00000000
--- a/pk/gkr-pk-object-manager.c
+++ /dev/null
@@ -1,468 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object-manager.c - Manage all 'token' PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-object-storage.h"
-#include "gkr-pk-privkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-cleanup.h"
-#include "common/gkr-location.h"
-#include "common/gkr-location-watch.h"
-#include "common/gkr-secure-memory.h"
-
-#include "keyrings/gkr-keyring-login.h"
-
-#include "pkcs11/pkcs11.h"
-
-#include "pkix/gkr-pkix-parser.h"
-
-#include "ui/gkr-ask-daemon.h"
-#include "ui/gkr-ask-request.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <stdarg.h>
-
-typedef struct _GkrPkObjectManagerPrivate GkrPkObjectManagerPrivate;
-
-struct _GkrPkObjectManagerPrivate {
- pid_t for_pid;
- gboolean is_token;
-
- GHashTable *object_by_handle;
- GHashTable *object_by_digest;
-};
-
-#define GKR_PK_OBJECT_MANAGER_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_PK_OBJECT_MANAGER, GkrPkObjectManagerPrivate))
-
-G_DEFINE_TYPE(GkrPkObjectManager, gkr_pk_object_manager, G_TYPE_OBJECT);
-
-static GkrPkObjectManager *object_manager_for_token = NULL;
-static GHashTable *object_managers_by_pid = NULL;
-
-/*
- * Constantly increasing counter for the token object handles. Starting at
- * a non-zero offset so that apps will be well behaved.
- */
-static CK_OBJECT_HANDLE next_object_handle = 0x00000010;
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-cleanup_object_manager (void *unused)
-{
- g_assert (object_manager_for_token);
- g_object_unref (object_manager_for_token);
- object_manager_for_token = NULL;
-}
-
-static void
-add_object (GkrPkObjectManager *objmgr, GkrPkObject *object)
-{
- GkrPkObjectManagerPrivate *pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
- gpointer k;
-
- g_assert (GKR_IS_PK_OBJECT (object));
- g_assert (object->digest);
- g_assert (object->manager == NULL);
-
- if (!object->handle) {
- /* Make a new handle */
- object->handle = (++next_object_handle & GKR_PK_OBJECT_HANDLE_MASK);
- if (pv->is_token)
- object->handle |= GKR_PK_OBJECT_IS_PERMANENT;
- }
-
- /* Mapping of objects by PKCS#11 'handle' */
- g_assert (object->handle);
- k = GUINT_TO_POINTER (object->handle);
- g_assert (g_hash_table_lookup (pv->object_by_handle, k) == NULL);
- g_hash_table_replace (pv->object_by_handle, k, object);
-
- /*
- * Mapping of objects by digest key. There may be multiple objects
- * with a given digest key.
- */
- g_assert (object->digest);
- g_hash_table_replace (pv->object_by_digest, object->digest, object);
-
- /* Note objects is being managed */
- objmgr->objects = g_list_prepend (objmgr->objects, object);
- object->manager = objmgr;
-}
-
-static void
-remove_object (GkrPkObjectManager *objmgr, GkrPkObject *object)
-{
- GkrPkObjectManagerPrivate *pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
- gpointer k;
-
- g_assert (GKR_IS_PK_OBJECT (object));
- g_assert (object->manager == objmgr);
-
- /* Mapping of objects by PKCS#11 'handle' */
- k = GUINT_TO_POINTER (object->handle);
- g_assert (g_hash_table_lookup (pv->object_by_handle, k) == object);
- g_hash_table_remove (pv->object_by_handle, k);
-
- /*
- * Mapping of objects by digest key. There may be multiple objects
- * with a given digest, so just remove if it matches this one.
- */
- if (g_hash_table_lookup (pv->object_by_digest, object->digest) == object)
- g_hash_table_remove (pv->object_by_digest, object->digest);
-
- /* Release object management */
- objmgr->objects = g_list_remove (objmgr->objects, object);
- object->manager = NULL;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_object_manager_init (GkrPkObjectManager *objmgr)
-{
- GkrPkObjectManagerPrivate *pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
-
- pv->object_by_handle = g_hash_table_new (g_direct_hash, g_direct_equal);
- pv->object_by_digest = g_hash_table_new (gkr_id_hash, gkr_id_equals);
-}
-
-static void
-gkr_pk_object_manager_dispose (GObject *obj)
-{
- GkrPkObjectManager *objmgr = GKR_PK_OBJECT_MANAGER (obj);
- GkrPkObjectManagerPrivate *pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (obj);
- gpointer k;
- GList *objects, *l;
-
- /* Unregister all objects */
- objects = g_list_copy (objmgr->objects);
- for (l = objects; l; l = g_list_next (l))
- gkr_pk_object_manager_unregister (objmgr, GKR_PK_OBJECT (l->data));
- g_list_free (objects);
-
- g_return_if_fail (objmgr->objects == NULL);
- g_return_if_fail (g_hash_table_size (pv->object_by_handle) == 0);
- g_return_if_fail (g_hash_table_size (pv->object_by_digest) == 0);
-
- if (pv->for_pid) {
- g_assert (object_managers_by_pid);
-
- k = GUINT_TO_POINTER (pv->for_pid);
- pv->for_pid = 0;
-
- /* Remove us from the hash table */
- g_assert (g_hash_table_lookup (object_managers_by_pid, k) == objmgr);
- g_hash_table_remove (object_managers_by_pid, k);
-
- /* Destroy the table if its empty */
- if (g_hash_table_size (object_managers_by_pid) == 0) {
- g_hash_table_destroy (object_managers_by_pid);
- object_managers_by_pid = NULL;
- }
- }
-
- G_OBJECT_CLASS (gkr_pk_object_manager_parent_class)->dispose (obj);
-}
-
-static void
-gkr_pk_object_manager_finalize (GObject *obj)
-{
- GkrPkObjectManager *man = GKR_PK_OBJECT_MANAGER (obj);
- GkrPkObjectManagerPrivate *pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (obj);
-
- g_hash_table_destroy (pv->object_by_handle);
- g_hash_table_destroy (pv->object_by_digest);
- g_assert (!man->objects);
- g_assert (!pv->for_pid);
-
- G_OBJECT_CLASS (gkr_pk_object_manager_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_object_manager_class_init (GkrPkObjectManagerClass *klass)
-{
- GObjectClass *gobject_class;
- gobject_class = (GObjectClass*)klass;
-
- gkr_pk_object_manager_parent_class = g_type_class_peek_parent (klass);
- gobject_class->dispose = gkr_pk_object_manager_dispose;
- gobject_class->finalize = gkr_pk_object_manager_finalize;
-
- g_type_class_add_private (gobject_class, sizeof (GkrPkObjectManagerPrivate));
-}
-
-GkrPkObjectManager*
-gkr_pk_object_manager_new (void)
-{
- return g_object_new (GKR_TYPE_PK_OBJECT_MANAGER, NULL);
-}
-
-GkrPkObjectManager*
-gkr_pk_object_manager_for_token (void)
-{
- if (!object_manager_for_token) {
- object_manager_for_token = g_object_new (GKR_TYPE_PK_OBJECT_MANAGER, NULL);
- GKR_PK_OBJECT_MANAGER_GET_PRIVATE (object_manager_for_token)->is_token = TRUE;
- gkr_cleanup_register (cleanup_object_manager, NULL);
- }
-
- return object_manager_for_token;
-}
-
-GkrPkObjectManager*
-gkr_pk_object_manager_for_client (pid_t pid)
-{
- if (!object_managers_by_pid)
- return NULL;
- return GKR_PK_OBJECT_MANAGER (g_hash_table_lookup (object_managers_by_pid,
- GUINT_TO_POINTER (pid)));
-}
-
-GkrPkObjectManager*
-gkr_pk_object_manager_instance_for_client (pid_t pid)
-{
- GkrPkObjectManager *manager;
-
- manager = gkr_pk_object_manager_for_client (pid);
- if (manager) {
- g_object_ref (manager);
- return manager;
- }
-
- manager = g_object_new (GKR_TYPE_PK_OBJECT_MANAGER, NULL);
- GKR_PK_OBJECT_MANAGER_GET_PRIVATE (manager)->for_pid = pid;
-
- /* The first client? */
- if (!object_managers_by_pid)
- object_managers_by_pid = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- /* Note us in the table */
- g_hash_table_insert (object_managers_by_pid, GUINT_TO_POINTER (pid), manager);
- return manager;
-}
-
-void
-gkr_pk_object_manager_register (GkrPkObjectManager *objmgr, GkrPkObject *object)
-{
- GkrPkObjectManagerPrivate *pv;
-
- g_return_if_fail (GKR_IS_PK_OBJECT_MANAGER (objmgr));
- g_return_if_fail (GKR_IS_PK_OBJECT (object));
- pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
-
- g_return_if_fail (object->manager == NULL);
- g_return_if_fail (object->digest);
-
- add_object (objmgr, object);
-}
-
-void
-gkr_pk_object_manager_unregister (GkrPkObjectManager *objmgr, GkrPkObject *object)
-{
- GkrPkObjectManagerPrivate *pv;
-
- g_return_if_fail (GKR_IS_PK_OBJECT_MANAGER (objmgr));
- g_return_if_fail (GKR_IS_PK_OBJECT (object));
- pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
-
- g_return_if_fail (object->manager == objmgr);
- g_return_if_fail (object->digest);
-
- remove_object (objmgr, object);
-}
-
-GkrPkObject*
-gkr_pk_object_manager_lookup (GkrPkObjectManager *man, CK_OBJECT_HANDLE obj)
-{
- GkrPkObjectManagerPrivate *pv;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (man), NULL);
- g_return_val_if_fail (obj != 0, NULL);
- pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (man);
-
- return (GkrPkObject*)g_hash_table_lookup (pv->object_by_handle,
- GUINT_TO_POINTER (obj));
-}
-
-GList*
-gkr_pk_object_manager_findv (GkrPkObjectManager *objmgr, GType gtype, ...)
-{
- CK_ATTRIBUTE attr;
- GArray *attrs = NULL;
- va_list va;
- CK_ULONG uval, spacer;
- CK_BBOOL bval;
- CK_VOID_PTR value;
- GList *ret = NULL;
-
- va_start (va, gtype);
-
- for (;;) {
- memset (&attr, 0, sizeof (attr));
-
- attr.type = va_arg (va, CK_ATTRIBUTE_TYPE);
- if (!attr.type) {
-
- /*
- * We keep this in a lower scope that our alloca
- * allocations, just in case some compiler gets the
- * bright idea (like GNU C in some cases) that it'll
- * cleanup at variable scope rather than function scope.
- */
-
- ret = gkr_pk_object_manager_find (objmgr, gtype, attrs);
- break;
- }
-
- switch (gkr_pk_attribute_data_type (attr.type)) {
- case GKR_PK_DATA_ULONG:
- uval = va_arg (va, CK_ULONG);
- gkr_pk_attribute_set_ulong (&attr, uval);
- spacer = va_arg (va, CK_ULONG);
- break;
-
- case GKR_PK_DATA_BOOL:
- bval = va_arg (va, int) ? CK_TRUE : CK_FALSE;
- gkr_pk_attribute_set_boolean (&attr, bval);
- spacer = va_arg (va, CK_ULONG);
- break;
-
- case GKR_PK_DATA_BYTES:
- value = va_arg (va, CK_VOID_PTR);
- uval = va_arg (va, CK_ULONG);
- gkr_pk_attribute_set_data (&attr, value, uval);
- break;
-
- default:
- g_warning ("unsupported type of data for attribute type: %d", (int)attr.type);
- return NULL;
- };
-
- if (!attrs)
- attrs = gkr_pk_attributes_new ();
- g_array_append_val (attrs, attr);
- }
-
- va_end (va);
-
- gkr_pk_attributes_free (attrs);
- return ret;
-}
-
-GList*
-gkr_pk_object_manager_find (GkrPkObjectManager *man, GType gtype, GArray *attrs)
-{
- CK_OBJECT_CLASS *ocls = NULL;
- GkrPkObject *object;
- gboolean do_refresh = TRUE;
- GList *l, *objects = NULL;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (man), NULL);
-
- /* Figure out the class of objects we're loading */
- if (attrs)
- ocls = (CK_OBJECT_CLASS*)gkr_pk_attributes_find (attrs, CKA_CLASS);
- if (ocls) {
- switch (*ocls) {
- /* TODO: Add here classes for which we don't want to refresh */
- default:
- break;
- }
- }
-
- if (gtype) {
- switch (gtype) {
- /* TODO: Add here classes for which we don't want to refresh */
- default:
- break;
- }
- }
-
- if (do_refresh)
- gkr_pk_object_storage_refresh (NULL);
-
- /* TODO: We may want to only go through objects of CKA_CLASS */
- for (l = man->objects; l; l = g_list_next (l)) {
- object = GKR_PK_OBJECT (l->data);
- if (gtype && !G_TYPE_CHECK_INSTANCE_TYPE (l->data, gtype))
- continue;
- if (!attrs || gkr_pk_object_match (object, attrs))
- objects = g_list_prepend (objects, object);
- }
-
- return objects;
-}
-
-GkrPkObject*
-gkr_pk_object_manager_find_by_id (GkrPkObjectManager *objmgr, GType gtype,
- gkrconstid id)
-{
- CK_ATTRIBUTE attr;
- GkrPkObject *object;
- gsize len;
- GList *l;
-
- g_return_val_if_fail (id, NULL);
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (objmgr), NULL);
-
- attr.pValue = (CK_VOID_PTR)gkr_id_get_raw (id, &len);
- attr.ulValueLen = len;
- attr.type = CKA_ID;
-
- /* TODO: This needs to be done more efficiently */
- for (l = objmgr->objects; l; l = g_list_next (l)) {
- object = GKR_PK_OBJECT (l->data);
- if (gtype && !G_TYPE_CHECK_INSTANCE_TYPE (l->data, gtype))
- continue;
- if (gkr_pk_object_match_one (object, &attr))
- return object;
- }
-
- return NULL;
-}
-
-GkrPkObject*
-gkr_pk_object_manager_find_by_digest (GkrPkObjectManager *objmgr, gkrconstid digest)
-{
- GkrPkObjectManagerPrivate *pv;
- GkrPkObject *object;
-
- g_return_val_if_fail (digest, NULL);
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (objmgr), NULL);
- pv = GKR_PK_OBJECT_MANAGER_GET_PRIVATE (objmgr);
-
- object = GKR_PK_OBJECT (g_hash_table_lookup (pv->object_by_digest, digest));
- return object;
-}
diff --git a/pk/gkr-pk-object-manager.h b/pk/gkr-pk-object-manager.h
deleted file mode 100644
index c3cdbe00..00000000
--- a/pk/gkr-pk-object-manager.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object-manager.h - Manage all 'token' PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_OBJECT_MANAGER_H__
-#define __GKR_PK_OBJECT_MANAGER_H__
-
-#include <gcrypt.h>
-#include <glib-object.h>
-
-#include "gkr-pk-object.h"
-
-/*
- * GkrPkObjectManager
- *
- * A GkrPkObjectManager tracks a set of GkrPkObject objects. It does not own
- * those objects. Once an object is registered with the manager it gets
- * an identifier.
- *
- * An object will unregister itself from the manager when it is destroyed or
- * it can be done explicitely.
- *
- * A singleton GkrPkObjectManager exists for token objects, those stored in
- * persistent storage. This manager lasts for the lifetime of the daemon.
- *
- * Other GkrPkObjectManager objects can exist per client for session or
- * temporary objects. Multiple requests for a manager for the same client
- * will return the same manager. Once all references dissappear this
- * manager will go away.
- */
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_OBJECT_MANAGER (gkr_pk_object_manager_get_type ())
-#define GKR_PK_OBJECT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_PK_OBJECT_MANAGER, GkrPkObjectManager))
-#define GKR_PK_OBJECT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_PK_OBJECT_MANAGER, GObject))
-#define GKR_IS_PK_OBJECT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_PK_OBJECT_MANAGER))
-#define GKR_IS_PK_OBJECT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_PK_OBJECT_MANAGER))
-#define GKR_PK_OBJECT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_PK_OBJECT_MANAGER, GkrPkObjectManagerClass))
-
-typedef struct _GkrPkObjectManagerClass GkrPkObjectManagerClass;
-
-struct _GkrPkObjectManager {
- GObject parent;
- GList *objects;
-};
-
-struct _GkrPkObjectManagerClass {
- GObjectClass parent_class;
-};
-
-GType gkr_pk_object_manager_get_type (void) G_GNUC_CONST;
-
-GType gkr_pk_object_manager_type_from_string (const gchar *type);
-
-GkrPkObjectManager* gkr_pk_object_manager_new (void);
-
-GkrPkObjectManager* gkr_pk_object_manager_for_token (void);
-
-GkrPkObjectManager* gkr_pk_object_manager_for_client (pid_t pid);
-
-GkrPkObjectManager* gkr_pk_object_manager_instance_for_client (pid_t pid);
-
-void gkr_pk_object_manager_register (GkrPkObjectManager *objmgr,
- GkrPkObject *object);
-
-void gkr_pk_object_manager_unregister (GkrPkObjectManager *objmgr,
- GkrPkObject *object);
-
-GkrPkObject* gkr_pk_object_manager_lookup (GkrPkObjectManager *objmgr,
- CK_OBJECT_HANDLE obj);
-
-GList* gkr_pk_object_manager_find (GkrPkObjectManager *objmgr,
- GType type, GArray *attrs);
-
-GList* gkr_pk_object_manager_findv (GkrPkObjectManager *objmgr,
- GType gtype, ...) G_GNUC_NULL_TERMINATED;
-
-GkrPkObject* gkr_pk_object_manager_find_by_id (GkrPkObjectManager *objmgr,
- GType gtype, gkrconstid id);
-
-GkrPkObject* gkr_pk_object_manager_find_by_digest (GkrPkObjectManager *objmgr,
- gkrconstid digest);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_OBJECT_MANAGER_H__ */
-
diff --git a/pk/gkr-pk-object-storage.c b/pk/gkr-pk-object-storage.c
deleted file mode 100644
index 7c8ef7cf..00000000
--- a/pk/gkr-pk-object-storage.c
+++ /dev/null
@@ -1,837 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object-storage.c - Manage all 'token' PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-index.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-object-storage.h"
-#include "gkr-pk-places.h"
-#include "gkr-pk-privkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-cleanup.h"
-#include "common/gkr-location.h"
-#include "common/gkr-location-watch.h"
-#include "common/gkr-secure-memory.h"
-
-#include "keyrings/gkr-keyring-login.h"
-
-#include "pkcs11/pkcs11.h"
-
-#include "pkix/gkr-pkix-parser.h"
-
-#include "ui/gkr-ask-daemon.h"
-#include "ui/gkr-ask-request.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <stdarg.h>
-
-typedef struct _GkrPkObjectStoragePrivate GkrPkObjectStoragePrivate;
-
-struct _GkrPkObjectStoragePrivate {
- GHashTable *objects;
- GHashTable *objects_by_location;
- GHashTable *specific_load_requests;
- GHashTable *denied_import_requests;
-
- GSList *watches;
-};
-
-#define GKR_PK_OBJECT_STORAGE_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_PK_OBJECT_STORAGE, GkrPkObjectStoragePrivate))
-
-G_DEFINE_TYPE(GkrPkObjectStorage, gkr_pk_object_storage, G_TYPE_OBJECT);
-
-static GkrPkObjectStorage *object_storage_singleton = NULL;
-
-typedef struct {
- GkrPkObjectStorage *storage; /* The object storage to parse into */
- GQuark location; /* The location being parsed */
- GHashTable *checks; /* The set of objects that existed before parse */
- GHashTable *types_by_digest; /* The parse types for every object prompted for or seen */
-} ParseContext;
-
-#define NO_VALUE GUINT_TO_POINTER (TRUE)
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-cleanup_object_storage (void *unused)
-{
- g_assert (object_storage_singleton);
- g_object_unref (object_storage_singleton);
- object_storage_singleton = NULL;
-}
-
-static const gchar*
-prepare_ask_title (GQuark type)
-{
- /*
- * Yes this is unmaintainable and stupid, but is required
- * for translations to work properly.
- */
- if (type == GKR_PKIX_PRIVATE_KEY)
- return _("Unlock private key");
- else if (type == GKR_PKIX_CERTIFICATE)
- return _("Unlock certificate");
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return _("Unlock public key");
- else
- return _("Unlock");
-}
-
-static const gchar*
-prepare_ask_primary (GQuark type)
-{
- /*
- * Yes this is unmaintainable and stupid, but is required
- * for translations to work properly.
- */
- if (type == GKR_PKIX_PRIVATE_KEY)
- return _("Enter password to unlock the private key");
- else if (type == GKR_PKIX_CERTIFICATE)
- return _("Enter password to unlock the certificate");
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return _("Enter password to unlock the public key");
- else
- return _("Enter password to unlock");
-}
-
-static const gchar*
-prepare_ask_check (GQuark type)
-{
- /*
- * Yes this is unmaintainable and stupid, but is required
- * for translations to work properly.
- */
- if (type == GKR_PKIX_PRIVATE_KEY)
- return _("Automatically unlock this private key when I log in.");
- else if (type == GKR_PKIX_CERTIFICATE)
- return _("Automatically unlock this certificate when I log in.");
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return _("Automatically unlock this public key when I log in.");
- else
- return _("Automatically unlock this when I log in");
-}
-
-static gchar*
-prepare_ask_secondary (GQuark type, gboolean indexed, const gchar *label)
-{
- /*
- * Yes this is unmaintainable and stupid, but is required
- * for translations to work properly.
- */
-
- /* When we've already indexed this data */
- if (indexed) {
-
- if (type == GKR_PKIX_PRIVATE_KEY)
- return g_strdup_printf (_("An application wants access to the private key '%s', but it is locked"), label);
- else if (type == GKR_PKIX_CERTIFICATE)
- return g_strdup_printf (_("An application wants access to the certificate '%s', but it is locked"), label);
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return g_strdup_printf (_("An application wants access to the public key '%s', but it is locked"), label);
- else
- return g_strdup_printf (_("An application wants access to '%s', but it is locked"), label);
-
- /* Never before seen this data */
- } else {
-
- if (type == GKR_PKIX_PRIVATE_KEY)
- return g_strdup_printf (_("The system wants to import the private key '%s', but it is locked"), label);
- else if (type == GKR_PKIX_CERTIFICATE)
- return g_strdup_printf (_("The system wants to import the certificate '%s', but it is locked"), label);
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return g_strdup_printf (_("The system wants to import the public key '%s', but it is locked"), label);
- else
- return g_strdup_printf (_("The system wants to import '%s', but it is locked"), label);
- }
-}
-
-static gchar*
-parser_ask_password (GkrPkixParser *parser, GQuark loc, gkrid digest,
- GQuark type, const gchar *label, guint failures,
- ParseContext *ctx)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (ctx->storage);
- GkrAskRequest *ask;
- gchar *custom_label, *ret, *display_name, *stype, *secondary;
- const gchar *password;
- gboolean imported = FALSE;
- gboolean importing = FALSE;
- guint flags;
-
- g_return_val_if_fail (loc == ctx->location, NULL);
-
- /*
- * The password prompting is somewhat convoluted with the end goal of
- * not prompting the user more than necessary.
- *
- * - Check and see if we have a password on record for this.
- * - Don't prompt unless the user is specifically requesting
- * this object *or* we've never seen it before.
- * - Make note of everything we've prompted for so that later
- * we can note having seen it.
- */
-
- /* See if we can find a valid password for this location */
- if (failures == 0) {
- password = gkr_keyring_login_lookup_secret (GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD,
- "pk-object", gkr_location_to_string (loc), NULL);
- if (password != NULL)
- return gkr_secure_strdup (password);
- } else {
- gkr_keyring_login_remove_secret (GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD,
- "pk-object", gkr_location_to_string (loc), NULL);
- }
-
- /*
- * If we've parsed this before, then we can lookup in our index as to what
- * exactly this is we're talking about here.
- */
- stype = gkr_pk_index_get_string_full (loc, digest, "parsed-type");
- if (stype) {
- if (!type && stype[0])
- type = g_quark_from_string (stype);
- g_free (stype);
- }
-
- /* This is how we know if we've imported this object before */
- imported = gkr_pk_index_get_boolean_full (loc, digest, "imported", FALSE);
-
- /*
- * If the user isn't specifically requeting this object, then we don't
- * necessarily prompt for a password.
- */
- if (!g_hash_table_lookup (pv->specific_load_requests, digest)) {
-
- /* If the user specifically denied this earlier, then don't prompt */
- if (g_hash_table_lookup (pv->denied_import_requests, digest))
- return NULL;
-
- /* If this has been imported already, then don't prompt */
- if (imported)
- return NULL;
-
- importing = TRUE;
- }
-
- /* TODO: Load a better label if we have one */
- custom_label = NULL;
-
- if (custom_label != NULL)
- label = custom_label;
-
- /* Build up the prompt */
- if (importing)
- flags = GKR_ASK_REQUEST_PASSWORD | GKR_ASK_REQUEST_OK_CANCEL_BUTTONS;
- else
- flags = GKR_ASK_REQUEST_PASSWORD | GKR_ASK_REQUEST_OK_DENY_BUTTONS;
- ask = gkr_ask_request_new (prepare_ask_title (type), prepare_ask_primary (type), flags);
-
- secondary = prepare_ask_secondary (type, !importing, label);
- gkr_ask_request_set_secondary (ask, secondary);
- g_free (secondary);
-
- gkr_ask_request_set_location (ask, loc);
-
- if (gkr_keyring_login_is_usable ())
- gkr_ask_request_set_check_option (ask, prepare_ask_check (type));
-
- /* Prompt the user */
- gkr_ask_daemon_process (ask);
-
- /* If the user denied ... */
- if (ask->response == GKR_ASK_RESPONSE_DENY) {
-
- /* If we were importing then don't try again */
- if (importing)
- g_hash_table_insert (pv->denied_import_requests,
- gkr_id_dup (digest), NO_VALUE);
-
- ret = NULL;
-
- /* User cancelled or failure */
- } else if (ask->response < GKR_ASK_RESPONSE_ALLOW) {
-
- ret = NULL;
-
- /* Successful response */
- } else {
- ret = gkr_secure_strdup (ask->typed_password);
- if (ask->checked) {
- display_name = g_strdup_printf (_("Unlock password for '%s'"), label);
- gkr_keyring_login_attach_secret (GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD,
- display_name, ret,
- "pk-object", gkr_location_to_string (loc), NULL);
- }
-
- /* Track that we prompted for this */
- g_hash_table_insert (ctx->types_by_digest, gkr_id_dup (digest),
- GUINT_TO_POINTER (type));
- }
-
- g_free (custom_label);
- return ret;
-}
-
-static void
-add_object_to_multihash (GHashTable *table, gpointer key, GkrPkObject *object)
-{
- GArray *objs = (GArray*)g_hash_table_lookup (table, key);
-
- /* Add automatically if first at location */
- if (!objs) {
- objs = g_array_new (FALSE, TRUE, sizeof (GkrPkObject*));
- g_hash_table_replace (table, key, objs);
- }
-
- g_array_append_val (objs, object);
-}
-
-static gboolean
-remove_object_from_multihash (GHashTable *table, gconstpointer key, GkrPkObject *object)
-{
- GArray *objs;
- guint i;
-
- objs = (GArray*)g_hash_table_lookup (table, key);
- if (!objs)
- return FALSE;
-
- for (i = 0; i < objs->len; ++i) {
- if (g_array_index (objs, GkrPkObject*, i) == object)
- break;
- }
-
- /* Not found */
- if (i == objs->len)
- return FALSE;
-
- g_array_remove_index_fast (objs, i);
-
- /* Remove automatically if last one */
- if (objs->len == 0)
- g_hash_table_remove (table, key);
-
- return TRUE;
-}
-
-static void
-add_object (GkrPkObjectStorage *storage, GkrPkObject *object)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- gpointer k;
-
- g_assert (object);
- g_assert (GKR_IS_PK_OBJECT (object));
- g_assert (object->location);
- g_assert (!g_hash_table_lookup (pv->objects, object));
-
- /* Mapping of location to the index key */
- k = GUINT_TO_POINTER (object->location);
- add_object_to_multihash (pv->objects_by_location, k, object);
-
- if (!object->storage)
- object->storage = storage;
-
- /* Take ownership of the object */
- g_object_ref (object);
- g_hash_table_insert (pv->objects, object, NO_VALUE);
-}
-
-static void
-remove_object (GkrPkObjectStorage *storage, GkrPkObject *object)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- gpointer k;
-
- g_assert (object);
- g_assert (GKR_IS_PK_OBJECT (object));
- g_assert (object->location);
- g_assert (g_hash_table_lookup (pv->objects, object));
-
- /* Mapping of location to the object */
- k = GUINT_TO_POINTER (object->location);
- if (!remove_object_from_multihash (pv->objects_by_location, k, object))
- g_assert (FALSE);
-
- if (object->storage == storage)
- object->storage = NULL;
-
- /* Release ownership */
- if (!g_hash_table_remove (pv->objects, object))
- g_assert (FALSE);
-}
-
-static GkrPkObject*
-prepare_object (GkrPkObjectStorage *storage, GQuark location,
- gkrconstid digest, GQuark type)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- GkrPkObjectManager *manager;
- GkrPkObject *object;
- GType gtype;
-
- manager = gkr_pk_object_manager_for_token ();
- object = gkr_pk_object_manager_find_by_digest (manager, digest);
-
- /* The object already exists just reference it */
- if (object) {
- if (!g_hash_table_lookup (pv->objects, object))
- add_object (storage, object);
- return object;
- }
-
- if (type == GKR_PKIX_PRIVATE_KEY)
- gtype = GKR_TYPE_PK_PRIVKEY;
- else if (type == GKR_PKIX_PUBLIC_KEY)
- gtype = GKR_TYPE_PK_PUBKEY;
- else if (type == GKR_PKIX_CERTIFICATE)
- gtype = GKR_TYPE_PK_CERT;
- else
- g_return_val_if_reached (NULL);
-
- object = g_object_new (gtype, "manager", manager, "location", location,
- "digest", digest, NULL);
- add_object (storage, object);
-
- /* Object was reffed */
- g_object_unref (object);
-
- return object;
-}
-
-static gboolean
-parser_parsed_partial (GkrPkixParser *parser, GQuark location, gkrid digest,
- GQuark type, ParseContext *ctx)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (ctx->storage);
- GkrPkObject *object;
- gchar *stype;
-
- /* If we don't know the type then look it up */
- if (!type) {
- stype = gkr_pk_index_get_string_full (location, digest, "parsed-type");
- if (stype && stype[0])
- type = g_quark_from_string (stype);
- g_free (stype);
- }
-
- if (type) {
- object = prepare_object (ctx->storage, location, digest, type);
- g_return_val_if_fail (object != NULL, FALSE);
-
- /* Make note of having seen this object in load requests */
- g_hash_table_remove (pv->specific_load_requests, digest);
-
- /* Make note of having seen this one */
- g_hash_table_remove (ctx->checks, object);
- }
-
- /* Track the type of this digest */
- g_hash_table_insert (ctx->types_by_digest, gkr_id_dup (digest),
- GUINT_TO_POINTER (type));
-
- return TRUE;
-}
-
-static gboolean
-parser_parsed_sexp (GkrPkixParser *parser, GQuark location, gkrid digest,
- GQuark type, gcry_sexp_t sexp, ParseContext *ctx)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (ctx->storage);
- GkrPkObject *object;
-
- g_return_val_if_fail (type != 0, FALSE);
-
- object = prepare_object (ctx->storage, location, digest, type);
- g_return_val_if_fail (object != NULL, FALSE);
-
- /* Make note of having seen this object in load requests */
- g_hash_table_remove (pv->specific_load_requests, digest);
-
- /* Make note of having seen this one */
- g_hash_table_remove (ctx->checks, object);
-
- /* Track the type of this digest */
- g_hash_table_insert (ctx->types_by_digest, gkr_id_dup (digest),
- GUINT_TO_POINTER (type));
-
- /* Setup the sexp, probably a key on this object */
- g_object_set (object, "gcrypt-sexp", sexp, NULL);
-
- /*
- * Now we have the object loaded and everything, and since it's a fully
- * loaded (if encrypted a password has been provided), take the
- * opportunity to 'import' it and make sure we have all necessary data
- * on it.
- */
- if (!gkr_pk_index_get_boolean (object, "imported", FALSE))
- gkr_pk_object_import (object);
-
- return TRUE;
-}
-
-static gboolean
-parser_parsed_asn1 (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, ASN1_TYPE asn1, ParseContext *ctx)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (ctx->storage);
- GkrPkObject *object;
-
- g_return_val_if_fail (type != 0, FALSE);
-
- object = prepare_object (ctx->storage, location, digest, type);
- g_return_val_if_fail (object != NULL, FALSE);
-
- /* Make note of having seen this object in load requests */
- g_hash_table_remove (pv->specific_load_requests, digest);
-
- /* Make note of having seen this one */
- g_hash_table_remove (ctx->checks, object);
-
- /* Track the type for this digest */
- g_hash_table_insert (ctx->types_by_digest, gkr_id_dup (digest),
- GUINT_TO_POINTER (type));
-
- /* Setup the asn1, probably a certificate on this object */
- g_object_set (object, "asn1-tree", asn1, NULL);
-
- /*
- * Now we have the object loaded and everything, and since it's a fully
- * loaded (if encrypted a password has been provided), take the
- * opportunity to 'import' it and make sure we have all necessary data
- * on it.
- */
- if (gkr_pk_index_get_boolean (object, "imported", FALSE))
- gkr_pk_object_import (object);
-
- return TRUE;
-}
-
-static void
-remove_each_object (GkrPkObject *object, gpointer unused, GkrPkObjectStorage *storage)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- if (g_hash_table_lookup (pv->objects, object))
- remove_object (storage, object);
-}
-
-static void
-index_each_digest (gkrid digest, gpointer value, gpointer data)
-{
- GQuark location = GPOINTER_TO_UINT (data);
- GQuark type = GPOINTER_TO_UINT (value);
-
- if (!type)
- return;
-
- /* Stash away the parsed type, in case we need it when prompting for a password */
- gkr_pk_index_set_string_full (location, digest, "parsed-type",
- g_quark_to_string (type));
-}
-
-static gboolean
-load_objects_at_location (GkrPkObjectStorage *storage, GQuark loc, GError **err)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- GkrPkixParser *parser;
- GkrPkixResult ret;
- GkrPkObject *object;
- ParseContext ctx;
- GArray *objs;
- gpointer k;
- guint i;
-
- g_return_val_if_fail (loc != 0, FALSE);
-
- ctx.location = loc;
- ctx.storage = storage;
- ctx.checks = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- g_object_unref, NULL);
- ctx.types_by_digest = g_hash_table_new_full (gkr_id_hash, gkr_id_equals,
- gkr_id_free, NULL);
-
- /* Create a table of what is at the location */
- k = GUINT_TO_POINTER (loc);
- objs = (GArray*)g_hash_table_lookup (pv->objects_by_location, k);
- for (i = 0; objs && i < objs->len; ++i) {
- object = g_array_index (objs, GkrPkObject*, i);
- g_object_ref (object);
- g_hash_table_replace (ctx.checks, object, NO_VALUE);
- }
-
- /* TODO: Try and use a shared parser? */
- parser = gkr_pkix_parser_new ();
- g_signal_connect (parser, "parsed-asn1", G_CALLBACK (parser_parsed_asn1), &ctx);
- g_signal_connect (parser, "parsed-sexp", G_CALLBACK (parser_parsed_sexp), &ctx);
- g_signal_connect (parser, "parsed-partial", G_CALLBACK (parser_parsed_partial), &ctx);
- g_signal_connect (parser, "ask-password", G_CALLBACK (parser_ask_password), &ctx);
-
- ret = gkr_pkix_parser_parse_location (parser, loc, err);
- g_object_unref (parser);
-
- /* Remove any still in checks array */
- g_hash_table_foreach (ctx.checks, (GHFunc)remove_each_object, storage);
- g_hash_table_destroy (ctx.checks);
-
- /*
- * Note any in the index that we prompted for but didn't actually
- * get an object out about.
- */
- g_hash_table_foreach (ctx.types_by_digest, (GHFunc)index_each_digest, k);
- g_hash_table_destroy (ctx.types_by_digest);
-
- return ret;
-}
-
-static void
-location_load (GkrLocationWatch *watch, GQuark loc, GkrPkObjectStorage *storage)
-{
- GError *err = NULL;
-
- if (!load_objects_at_location (storage, loc, &err)) {
- g_message ("couldn't parse data: %s: %s", g_quark_to_string (loc),
- err && err->message ? err->message : "");
- g_error_free (err);
- }
-}
-
-static void
-location_remove (GkrLocationWatch *watch, GQuark loc, GkrPkObjectStorage *storage)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- GArray *objs, *copy;
- gpointer k;
- guint i;
-
- /* Remove everything that is at that location */
- k = GUINT_TO_POINTER (loc);
- objs = (GArray*)g_hash_table_lookup (pv->objects_by_location, k);
- if (!objs)
- return;
-
- /* When removing we cleanup empty arrays */
- g_assert (objs->len);
-
- /* We copy because otherwise the array will change from underneath us */
- copy = g_array_sized_new (FALSE, FALSE, sizeof (GkrPkObject*), objs->len);
- g_array_append_vals (copy, objs->data, objs->len);
- for (i = 0; i < copy->len; ++i)
- remove_object (storage, g_array_index (copy, GkrPkObject*, i));
-
- g_array_free (copy, TRUE);
-}
-
-static void
-free_array (gpointer data)
-{
- if (data)
- g_array_free ((GArray*)data, TRUE);
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_object_storage_init (GkrPkObjectStorage *storage)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- GkrLocationWatch *watch;
- const GkrPkPlace *place;
- GQuark volume;
- guint i;
-
- pv->objects = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, NULL);
- pv->objects_by_location = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, free_array);
- pv->specific_load_requests = g_hash_table_new_full (gkr_id_hash, gkr_id_equals, gkr_id_free, NULL);
- pv->denied_import_requests = g_hash_table_new_full (gkr_id_hash, gkr_id_equals, gkr_id_free, NULL);
-
- for (i = 0; i < G_N_ELEMENTS (gkr_pk_places); ++i) {
- place = &gkr_pk_places[i];
- g_return_if_fail (place->directory);
-
- /* A null means any active volume */
- volume = place->volume ? gkr_location_from_string (place->volume) : 0;
-
- watch = gkr_location_watch_new (NULL, volume, place->directory,
- place->include, place->exclude);
- g_return_if_fail (watch);
-
- g_signal_connect (watch, "location-added", G_CALLBACK (location_load), storage);
- g_signal_connect (watch, "location-changed", G_CALLBACK (location_load), storage);
- g_signal_connect (watch, "location-removed", G_CALLBACK (location_remove), storage);
-
- /* Assumes ownership */
- pv->watches = g_slist_prepend (pv->watches, watch);
- }
-}
-
-static void
-gkr_pk_object_storage_dispose (GObject *obj)
-{
- GkrPkObjectStorage *storage = GKR_PK_OBJECT_STORAGE (obj);
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (obj);
- GkrLocationWatch *watch;
- GSList *l;
-
- g_hash_table_remove_all (pv->objects_by_location);
- g_hash_table_remove_all (pv->specific_load_requests);
- g_hash_table_remove_all (pv->denied_import_requests);
- g_hash_table_remove_all (pv->objects);
-
- for (l = pv->watches; l; l = g_slist_next (l)) {
- watch = GKR_LOCATION_WATCH (l->data);
- g_signal_handlers_disconnect_by_func (watch, location_load, storage);
- g_signal_handlers_disconnect_by_func (watch, location_remove, storage);
- }
-
- G_OBJECT_CLASS (gkr_pk_object_storage_parent_class)->dispose (obj);
-}
-
-static void
-gkr_pk_object_storage_finalize (GObject *obj)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (obj);
- GkrLocationWatch *watch;
- GSList *l;
-
- g_hash_table_destroy (pv->objects);
- g_hash_table_destroy (pv->objects_by_location);
- g_hash_table_destroy (pv->specific_load_requests);
- g_hash_table_destroy (pv->denied_import_requests);
-
- for (l = pv->watches; l; l = g_slist_next (l)) {
- watch = GKR_LOCATION_WATCH (l->data);
- g_object_unref (watch);
- }
- g_slist_free (pv->watches);
- pv->watches = NULL;
-
- G_OBJECT_CLASS (gkr_pk_object_storage_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_object_storage_class_init (GkrPkObjectStorageClass *klass)
-{
- GObjectClass *gobject_class;
- gobject_class = (GObjectClass*)klass;
-
- gkr_pk_object_storage_parent_class = g_type_class_peek_parent (klass);
- gobject_class->dispose = gkr_pk_object_storage_dispose;
- gobject_class->finalize = gkr_pk_object_storage_finalize;
-
- g_type_class_add_private (gobject_class, sizeof (GkrPkObjectStoragePrivate));
-}
-
-GkrPkObjectStorage*
-gkr_pk_object_storage_get (void)
-{
- if (!object_storage_singleton) {
- object_storage_singleton = g_object_new (GKR_TYPE_PK_OBJECT_STORAGE, NULL);
- gkr_cleanup_register (cleanup_object_storage, NULL);
- gkr_pk_object_storage_refresh (object_storage_singleton);
- }
-
- return object_storage_singleton;
-}
-
-void
-gkr_pk_object_storage_refresh (GkrPkObjectStorage *storage)
-{
- GkrPkObjectStoragePrivate *pv;
- GSList *l;
-
- if (!storage)
- storage = gkr_pk_object_storage_get ();
-
- g_return_if_fail (GKR_IS_PK_OBJECT_STORAGE (storage));
- pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
-
- for (l = pv->watches; l; l = g_slist_next (l))
- gkr_location_watch_refresh (GKR_LOCATION_WATCH (l->data), FALSE);
-}
-
-gboolean
-gkr_pk_object_storage_load_complete (GkrPkObjectStorage *storage, GkrPkObject *obj,
- GError **err)
-{
- GkrPkObjectStoragePrivate *pv = GKR_PK_OBJECT_STORAGE_GET_PRIVATE (storage);
- gboolean ret = FALSE;
-
- g_return_val_if_fail (obj, FALSE);
-
- g_object_ref (obj);
-
- /* We need to have this object */
- if (!obj->location) {
- g_set_error (err, GKR_PKIX_PARSE_ERROR, 0, "The object doesn't reside on disk");
- goto done;
- }
-
-
- /* Make note of the specific load request */
- g_hash_table_replace (pv->specific_load_requests, gkr_id_dup (obj->digest), NO_VALUE);
- ret = load_objects_at_location (storage, obj->location, err);
-
- if (!ret)
- goto done;
-
- /* See if it was seen */
- if (g_hash_table_lookup (pv->specific_load_requests, obj->digest)) {
- g_set_error (err, GKR_PKIX_PARSE_ERROR, 0, "the object was not found at: %s",
- g_quark_to_string (obj->location));
- goto done;
- }
-
- ret = TRUE;
-
-done:
- g_hash_table_remove (pv->specific_load_requests, obj->digest);
- g_object_unref (obj);
- return ret;
-}
-
-gboolean
-gkr_pk_object_storage_add (GkrPkObjectStorage *storage, GkrPkObject *obj,
- GError **err)
-{
- /* TODO: Need to implement */
- g_return_val_if_reached (FALSE);
-}
-
-gboolean
-gkr_pk_object_storage_remove (GkrPkObjectStorage *storage, GkrPkObject *obj,
- GError **err)
-{
- /* TODO: Need to implement */
- g_return_val_if_reached (FALSE);
-}
diff --git a/pk/gkr-pk-object-storage.h b/pk/gkr-pk-object-storage.h
deleted file mode 100644
index e8f2b3e2..00000000
--- a/pk/gkr-pk-object-storage.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object-storage.h - Manage all 'token' PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_OBJECT_STORAGE_H__
-#define __GKR_PK_OBJECT_STORAGE_H__
-
-#include <gcrypt.h>
-#include <glib-object.h>
-
-#include "gkr-pk-object.h"
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_OBJECT_STORAGE (gkr_pk_object_storage_get_type ())
-#define GKR_PK_OBJECT_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_PK_OBJECT_STORAGE, GkrPkObjectStorage))
-#define GKR_PK_OBJECT_STORAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_PK_OBJECT_STORAGE, GObject))
-#define GKR_IS_PK_OBJECT_STORAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_PK_OBJECT_STORAGE))
-#define GKR_IS_PK_OBJECT_STORAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_PK_OBJECT_STORAGE))
-#define GKR_PK_OBJECT_STORAGE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_PK_OBJECT_STORAGE, GkrPkObjectStorageClass))
-
-typedef struct _GkrPkObjectStorageClass GkrPkObjectStorageClass;
-
-struct _GkrPkObjectStorage {
- GObject parent;
-};
-
-struct _GkrPkObjectStorageClass {
- GObjectClass parent_class;
-};
-
-GType gkr_pk_object_storage_get_type (void) G_GNUC_CONST;
-
-GkrPkObjectStorage* gkr_pk_object_storage_get (void);
-
-void gkr_pk_object_storage_refresh (GkrPkObjectStorage *storage);
-
-gboolean gkr_pk_object_storage_load_complete (GkrPkObjectStorage *storage,
- GkrPkObject *obj, GError **err);
-
-gboolean gkr_pk_object_storage_add (GkrPkObjectStorage *storage,
- GkrPkObject *obj, GError **err);
-
-gboolean gkr_pk_object_storage_remove (GkrPkObjectStorage *storage,
- GkrPkObject *obj, GError **err);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_OBJECT_STORAGE_H__ */
-
diff --git a/pk/gkr-pk-object.c b/pk/gkr-pk-object.c
deleted file mode 100644
index f7289676..00000000
--- a/pk/gkr-pk-object.c
+++ /dev/null
@@ -1,684 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object.c - A base class for PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-index.h"
-#include "gkr-pk-object.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-privkey.h"
-#include "gkr-pk-pubkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-location.h"
-
-#include <string.h>
-
-/* --------------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- PROP_0,
- PROP_MANAGER,
- PROP_LOCATION,
- PROP_DIGEST,
- PROP_ORIG_LABEL,
- PROP_LABEL
-};
-
-enum {
- LOADED_LABEL = 0x0001,
- LOADED_USAGES = 0x0002,
-};
-
-typedef struct _GkrPkObjectPrivate GkrPkObjectPrivate;
-
-struct _GkrPkObjectPrivate {
- GHashTable *attr_cache;
- gchar *orig_label;
- guint load_state;
-
- gchar *data_path;
- gchar *data_section;
-};
-
-#define GKR_PK_OBJECT_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_PK_OBJECT, GkrPkObjectPrivate))
-
-G_DEFINE_TYPE(GkrPkObject, gkr_pk_object, G_TYPE_OBJECT);
-
-/* --------------------------------------------------------------------------------
- * HELPERS
- */
-
-static CK_RV
-lookup_attribute (GkrPkObject *object, CK_ATTRIBUTE_TYPE type, CK_ATTRIBUTE_PTR *attr)
-{
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE (object);
- GkrPkObjectClass *klass;
- CK_ATTRIBUTE cattr;
- CK_RV ret = 0;
-
- *attr = g_hash_table_lookup (pv->attr_cache, GUINT_TO_POINTER (type));
- if(*attr)
- return CKR_OK;
-
- klass = GKR_PK_OBJECT_GET_CLASS (object);
- memset (&cattr, 0, sizeof (cattr));
- cattr.type = type;
-
- /* Ask derived class for attribute */
- if (!klass->get_attribute)
- g_return_val_if_reached (CKR_ATTRIBUTE_TYPE_INVALID);
- ret = (*klass->get_attribute) (object, &cattr);
-
- if (ret != CKR_OK) {
- /* Shouldn't be returning these */
- g_assert (ret != CKR_BUFFER_TOO_SMALL);
- return ret;
- }
-
- g_assert (cattr.type == type);
- *attr = gkr_pk_attribute_new (cattr.type);
- gkr_pk_attribute_steal (*attr, &cattr);
-
- g_hash_table_replace (pv->attr_cache, GUINT_TO_POINTER (type), *attr);
- return CKR_OK;
-}
-
-/* --------------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_object_init (GkrPkObject *obj)
-{
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE (obj);
- pv->attr_cache = g_hash_table_new_full (g_direct_hash, g_direct_equal,
- NULL, gkr_pk_attribute_free);
-}
-
-static GObject*
-gkr_pk_object_constructor (GType type, guint n_props, GObjectConstructParam *props)
-{
- GkrPkObjectManager *mgr;
- GkrPkObject *xobj;
- GObject *obj;
- guint i;
-
- obj = G_OBJECT_CLASS (gkr_pk_object_parent_class)->constructor (type, n_props, props);
- if (!obj)
- return NULL;
-
- xobj = GKR_PK_OBJECT (obj);
-
- /* Find the object manager and register */
- for (i = 0; i < n_props; ++i) {
- if (props[i].pspec->name && g_str_equal (props[i].pspec->name, "manager")) {
- mgr = g_value_get_object (props[i].value);
- if (mgr) {
- gkr_pk_object_manager_register (mgr, xobj);
- g_return_val_if_fail (xobj->manager == mgr, obj);
- }
- break;
- }
- }
-
- return obj;
-}
-
-static CK_RV
-gkr_pk_object_get_attribute_common (GkrPkObject *obj, CK_ATTRIBUTE_PTR attr)
-{
- CK_OBJECT_CLASS cls;
- gchar *label;
-
- switch (attr->type) {
- case CKA_LABEL:
- label = gkr_pk_object_get_label (obj);
- if (!label && obj->location)
- label = gkr_location_to_display (obj->location);
- if (!label)
- label = g_strdup ("");
- gkr_pk_attribute_set_string (attr, label);
- g_free (label);
- return CKR_OK;
-
- case CKA_TOKEN:
- gkr_pk_attribute_set_boolean (attr,
- (obj->handle & GKR_PK_OBJECT_IS_PERMANENT) == GKR_PK_OBJECT_IS_PERMANENT);
- return CKR_OK;
-
- case CKA_PRIVATE:
- gkr_pk_attribute_set_boolean (attr,
- (gkr_pk_object_get_ulong (obj, CKA_CLASS, &cls) == CKR_OK &&
- gkc_pk_class_is_private (cls)));
- return CKR_OK;
-
- case CKA_MODIFIABLE:
- /* TODO: Does this need to check somewhere? */
- gkr_pk_attribute_set_boolean (attr, CK_TRUE);
- return CKR_OK;
-
- default:
- return CKR_ATTRIBUTE_TYPE_INVALID;
- };
-}
-
-static CK_RV
-gkr_pk_object_set_attribute_common (GkrPkObject *obj, CK_ATTRIBUTE_PTR attr)
-{
- gchar *label;
-
- switch (attr->type) {
- case CKA_LABEL:
- if (!attr->pValue && attr->ulValueLen)
- return CKR_ATTRIBUTE_VALUE_INVALID;
- label = g_strndup (attr->pValue, attr->ulValueLen);
- gkr_pk_object_set_label (obj, label);
- g_free (label);
- return CKR_OK;
-
- case CKA_TOKEN:
- case CKA_PRIVATE:
- case CKA_MODIFIABLE:
- return CKR_ATTRIBUTE_READ_ONLY;
-
- case CKA_CLASS:
- return CKR_ATTRIBUTE_READ_ONLY;
-
- default:
- return CKR_ATTRIBUTE_TYPE_INVALID;
- };
-}
-
-static guchar*
-gkr_pk_object_serialize (GkrPkObject *obj, const gchar *password, gsize *n_data)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (obj), NULL);
- g_return_val_if_fail (n_data, NULL);
-
- *n_data = 0;
- return NULL;
-}
-
-static void
-gkr_pk_object_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrPkObject *xobj = GKR_PK_OBJECT (obj);
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE (xobj);
-
- switch (prop_id) {
- case PROP_MANAGER:
- g_value_set_object (value, xobj->manager);
- break;
- case PROP_LOCATION:
- g_value_set_uint (value, xobj->location);
- break;
- case PROP_DIGEST:
- g_value_set_boxed (value, xobj->digest);
- break;
- case PROP_ORIG_LABEL:
- g_value_set_string (value, pv->orig_label);
- break;
- case PROP_LABEL:
- g_value_take_string (value, gkr_pk_object_get_label (xobj));
- break;
- }
-}
-
-static void
-gkr_pk_object_set_property (GObject *obj, guint prop_id, const GValue *value,
- GParamSpec *pspec)
-{
- GkrPkObject *xobj = GKR_PK_OBJECT (obj);
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE (xobj);
-
- switch (prop_id) {
- case PROP_MANAGER:
- g_assert (!xobj->manager);
- /*
- * We set this up in the constructor after all other props have
- * taken effect. See above.
- */
- break;
- case PROP_LOCATION:
- xobj->location = g_value_get_uint (value);
- break;
- case PROP_DIGEST:
- gkr_id_free (xobj->digest);
- xobj->digest = gkr_id_dup (g_value_get_boxed (value));
- break;
- case PROP_ORIG_LABEL:
- g_free (pv->orig_label);
- pv->orig_label = g_value_dup_string (value);
- break;
- case PROP_LABEL:
- gkr_pk_object_set_label (xobj, g_value_get_string (value));
- break;
- }
-}
-
-static void
-gkr_pk_object_finalize (GObject *obj)
-{
- GkrPkObject *xobj = GKR_PK_OBJECT (obj);
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE (xobj);
- if (pv->attr_cache)
- g_hash_table_destroy (pv->attr_cache);
-
- g_free (pv->orig_label);
- g_free (pv->data_path);
- g_free (pv->data_section);
-
- if (xobj->manager)
- gkr_pk_object_manager_unregister (xobj->manager, xobj);
- g_return_if_fail (xobj->manager == NULL);
-
- G_OBJECT_CLASS (gkr_pk_object_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_object_class_init (GkrPkObjectClass *klass)
-{
- GObjectClass *gobject_class;
- gobject_class = (GObjectClass*) klass;
-
- gkr_pk_object_parent_class = g_type_class_peek_parent (klass);
- gobject_class->constructor = gkr_pk_object_constructor;
- gobject_class->get_property = gkr_pk_object_get_property;
- gobject_class->set_property = gkr_pk_object_set_property;
- gobject_class->finalize = gkr_pk_object_finalize;
-
- klass->get_attribute = gkr_pk_object_get_attribute_common;
- klass->set_attribute = gkr_pk_object_set_attribute_common;
- klass->serialize = gkr_pk_object_serialize;
-
- g_type_class_add_private (gobject_class, sizeof (GkrPkObjectPrivate));
-
- g_object_class_install_property (gobject_class, PROP_MANAGER,
- g_param_spec_object ("manager", "Manager", "Object Manager",
- GKR_TYPE_PK_OBJECT_MANAGER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (gobject_class, PROP_LOCATION,
- g_param_spec_uint ("location", "Location", "Location of Data",
- 0, G_MAXUINT, 0, G_PARAM_READWRITE));
-
- g_object_class_install_property (gobject_class, PROP_DIGEST,
- g_param_spec_boxed ("digest", "Digest", "Digest Identifier for Data",
- GKR_ID_BOXED_TYPE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (gobject_class, PROP_ORIG_LABEL,
- g_param_spec_string ("orig-label", "Original Label", "Original Label",
- NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (gobject_class, PROP_LABEL,
- g_param_spec_string ("label", "Label", "PK Object Label",
- NULL, G_PARAM_READWRITE));
-}
-
-/* --------------------------------------------------------------------------------
- * PUBLIC
- */
-
-CK_RV
-gkr_pk_object_create (GkrPkObjectManager *manager,
- GArray *attrs, GkrPkObject **object)
-{
- CK_ATTRIBUTE_PTR attr;
- CK_OBJECT_CLASS cls;
- CK_RV ret;
- guint i;
-
- if (!gkr_pk_attributes_ulong (attrs, CKA_CLASS, &cls))
- return CKR_TEMPLATE_INCOMPLETE;
- gkr_pk_attributes_consume (attrs, CKA_CLASS, -1);
-
- switch (cls) {
- case CKO_PUBLIC_KEY:
- ret = gkr_pk_pubkey_create (manager, attrs, object);
- break;
- case CKO_PRIVATE_KEY:
- ret = gkr_pk_privkey_create (manager, attrs, object);
- break;
- case CKO_CERTIFICATE:
- ret = gkr_pk_cert_create (manager, attrs, object);
- break;
- default:
- /* TODO: What's a better error code here? */
- return CKR_FUNCTION_NOT_SUPPORTED;
- };
-
- if (ret != CKR_OK)
- return ret;
-
- g_return_val_if_fail (*object != NULL, CKR_GENERAL_ERROR);
-
- /*
- * Check that all the remaining attributes are either already
- * set or are settable
- */
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- if (!gkr_pk_attribute_is_consumed (attr)) {
- ret = gkr_pk_object_set_attribute (*object, attr);
- if (ret != CKR_OK)
- break;
- }
- }
-
- /* Unsuccessful so free the object */
- if (ret != CKR_OK) {
- g_object_unref (*object);
- *object = NULL;
- }
-
- return ret;
-}
-
-void
-gkr_pk_object_flush (GkrPkObject *object)
-{
- GkrPkObjectPrivate *pv = GKR_PK_OBJECT_GET_PRIVATE(object);
- g_return_if_fail (GKR_IS_PK_OBJECT (object));
- g_hash_table_remove_all (pv->attr_cache);
-}
-
-void
-gkr_pk_object_lock (GkrPkObject *object)
-{
- GkrPkObjectClass *klass;
-
- klass = GKR_PK_OBJECT_GET_CLASS (object);
-
- if (klass->lock)
- (*klass->lock) (object);
-}
-
-gboolean
-gkr_pk_object_import (GkrPkObject *object)
-{
- GkrPkObjectClass *klass;
- gboolean ret = TRUE;
-
- klass = GKR_PK_OBJECT_GET_CLASS (object);
-
- if (klass->import)
- ret = (*klass->import) (object);
-
- if (ret)
- gkr_pk_index_set_boolean (object, "imported", TRUE);
-
- return ret;
-}
-
-gboolean
-gkr_pk_object_match_one (GkrPkObject *object, CK_ATTRIBUTE_PTR rattr)
-{
- CK_ATTRIBUTE_PTR attr;
- CK_RV rv;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
- g_return_val_if_fail (rattr->pValue, FALSE);
-
- rv = lookup_attribute (object, rattr->type, &attr);
- if (rv != CKR_OK)
- return FALSE;
-
- g_assert (attr->type == rattr->type);
- if (attr->ulValueLen != rattr->ulValueLen)
- return FALSE;
- if (attr->pValue == rattr->pValue)
- return TRUE;
- if (!attr->pValue || !rattr->pValue)
- return FALSE;
- if (memcmp (attr->pValue, rattr->pValue, rattr->ulValueLen) != 0)
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_pk_object_match (GkrPkObject *object, GArray *attrs)
-{
- CK_ATTRIBUTE_PTR rattr;
- guint i;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
-
- for (i = 0; i < attrs->len; ++i) {
- rattr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- if (!gkr_pk_object_match_one (object, rattr))
- return FALSE;
- }
-
- return TRUE;
-}
-
-CK_OBJECT_HANDLE
-gkr_pk_object_get_handle (GkrPkObject *object)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), 0);
- return object->handle;
-}
-
-CK_RV
-gkr_pk_object_get_attribute (GkrPkObject *object, CK_ATTRIBUTE_PTR attr)
-{
- CK_ATTRIBUTE_PTR cattr;
- CK_RV ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
- g_return_val_if_fail (attr, CKR_GENERAL_ERROR);
-
- ret = lookup_attribute (object, attr->type, &cattr);
- if (ret == CKR_OK)
- gkr_pk_attribute_copy (attr, cattr);
- else
- gkr_pk_attribute_set_invalid (attr);
-
- return ret;
-}
-
-CK_RV
-gkr_pk_object_get_ulong (GkrPkObject *object, CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value)
-{
- CK_ATTRIBUTE_PTR cattr;
- CK_RV ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
-
- ret = lookup_attribute (object, type, &cattr);
- if (ret != CKR_OK)
- return ret;
-
- g_return_val_if_fail (cattr->type == type, CKR_GENERAL_ERROR);
- g_return_val_if_fail (cattr->ulValueLen == sizeof (CK_ULONG), CKR_GENERAL_ERROR);
- g_return_val_if_fail (cattr->pValue, CKR_GENERAL_ERROR);
-
- if (value)
- *value = *((CK_ULONG*)cattr->pValue);
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pk_object_get_bool (GkrPkObject *object, CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value)
-{
- CK_ATTRIBUTE_PTR cattr;
- CK_RV ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
-
- ret = lookup_attribute (object, type, &cattr);
- if (ret != CKR_OK)
- return ret;
-
- g_return_val_if_fail (cattr->type == type, CKR_GENERAL_ERROR);
- g_return_val_if_fail (cattr->ulValueLen == sizeof (CK_BBOOL), CKR_GENERAL_ERROR);
- g_return_val_if_fail (cattr->pValue, CKR_GENERAL_ERROR);
-
- if (value)
- *value = *((CK_BBOOL*)cattr->pValue);
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pk_object_get_attributes (GkrPkObject *object, GArray *attrs)
-{
- CK_RV ret, rv;
- CK_ATTRIBUTE_PTR rattr, attr;
- guint i;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT (object), CKR_GENERAL_ERROR);
-
- ret = CKR_OK;
-
- for (i = 0; i < attrs->len; ++i) {
- rattr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- rv = lookup_attribute (object, rattr->type, &attr);
- if (rv == CKR_OK) {
- gkr_pk_attribute_copy (rattr, attr);
- } else {
- ret = rv;
- gkr_pk_attribute_set_invalid (rattr);
- }
- }
-
- return ret;
-}
-
-CK_RV
-gkr_pk_object_set_attribute (GkrPkObject *object, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkObjectClass *klass;
- CK_ATTRIBUTE_PTR cattr;
- CK_BBOOL bvalue;
- CK_ULONG nvalue;
- gboolean found;
- CK_RV ret = 0;
-
- /* Get the current value for this attribute */
- found = (lookup_attribute (object, attr->type, &cattr) == CKR_OK);
- if (found) {
-
- /* Compare it with the the new one, and ignore if equal */
- if (gkr_pk_attribute_equal (attr, cattr))
- return CKR_OK;
- }
-
- klass = GKR_PK_OBJECT_GET_CLASS (object);
-
- /* A quick early check of the values */
- switch (gkr_pk_attribute_data_type (attr->type))
- {
- case GKR_PK_DATA_BOOL:
- if (!gkr_pk_attribute_get_boolean (attr, &bvalue))
- return CKR_ATTRIBUTE_VALUE_INVALID;
- break;
-
- case GKR_PK_DATA_ULONG:
- if (!gkr_pk_attribute_get_ulong (attr, &nvalue))
- return CKR_ATTRIBUTE_VALUE_INVALID;
- break;
-
- case GKR_PK_DATA_BYTES:
- break;
-
- case GKR_PK_DATA_UNKNOWN:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- default:
- g_assert_not_reached ();
- break;
- };
-
- /* If we didn't call above, then set via main method */
- if (klass->set_attribute)
- ret = (*klass->set_attribute) (object, attr);
- else
- ret = CKR_ATTRIBUTE_TYPE_INVALID;
-
- /*
- * If a method and value was found for reading, but no method
- * was found for writing, then this must be a readonly.
- */
- if (ret == CKR_ATTRIBUTE_TYPE_INVALID && found)
- ret = CKR_ATTRIBUTE_READ_ONLY;
-
- return ret;
-}
-
-CK_RV
-gkr_pk_object_set_ulong (GkrPkObject *object, CK_ATTRIBUTE_TYPE type, CK_ULONG value)
-{
- CK_ATTRIBUTE attr = { type, &value, sizeof (value) };
- return gkr_pk_object_set_attribute (object, &attr);
-}
-
-CK_RV
-gkr_pk_object_set_bool (GkrPkObject *object, CK_ATTRIBUTE_TYPE type, CK_BBOOL value)
-{
- CK_ATTRIBUTE attr = { type, &value, sizeof (value) };
- return gkr_pk_object_set_attribute (object, &attr);
-}
-
-CK_RV
-gkr_pk_object_set_attributes (GkrPkObject *object, GArray *attrs)
-{
- CK_ATTRIBUTE_PTR attr;
- CK_RV ret = CKR_OK;
- guint i;
-
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- ret = gkr_pk_object_set_attribute (object, attr);
- if (ret != CKR_OK)
- break;
- }
-
- return ret;
-}
-
-gchar*
-gkr_pk_object_get_label (GkrPkObject *xobj)
-{
- g_return_val_if_fail (GKR_IS_PK_OBJECT (xobj), NULL);
- return gkr_pk_index_get_string (xobj, "label");
-}
-
-void
-gkr_pk_object_set_label (GkrPkObject *xobj, const gchar *label)
-{
- g_return_if_fail (GKR_IS_PK_OBJECT (xobj));
- if (!label)
- gkr_pk_index_delete (xobj, "label");
- else
- gkr_pk_index_set_string (xobj, "label", label);
-}
diff --git a/pk/gkr-pk-object.h b/pk/gkr-pk-object.h
deleted file mode 100644
index dccc1c8e..00000000
--- a/pk/gkr-pk-object.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-object.h - A base class for PK objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_OBJECT_H__
-#define __GKR_PK_OBJECT_H__
-
-#include <glib-object.h>
-#include <pkcs11/pkcs11.h>
-
-#include "common/gkr-id.h"
-
-G_BEGIN_DECLS
-
-#define GKR_PK_OBJECT_HANDLE_MASK 0x0FFFFFFF
-#define GKR_PK_OBJECT_IS_PERMANENT 0x10000000
-#define GKR_PK_OBJECT_IS_TEMPORARY 0x00000000
-
-#define GKR_TYPE_PK_OBJECT (gkr_pk_object_get_type())
-#define GKR_PK_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_OBJECT, GkrPkObject))
-#define GKR_PK_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_PK_OBJECT, GkrPkObjectClass))
-#define GKR_IS_PK_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_OBJECT))
-#define GKR_IS_PK_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_PK_OBJECT))
-#define GKR_PK_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_PK_OBJECT, GkrPkObjectClass))
-
-typedef struct _GkrPkObject GkrPkObject;
-typedef struct _GkrPkObjectClass GkrPkObjectClass;
-
-typedef struct _GkrPkObjectStorage GkrPkObjectStorage;
-typedef struct _GkrPkObjectManager GkrPkObjectManager;
-
-struct _GkrPkObject {
- GObject parent;
-
- GQuark location;
- gkrid digest;
- CK_OBJECT_HANDLE handle;
-
- GkrPkObjectManager *manager;
- GkrPkObjectStorage *storage;
-};
-
-struct _GkrPkObjectClass {
- GObjectClass parent_class;
-
- /*
- * The attribute getter and setter for PKCS#11 attributes.
- * The base class getters and setters provide access to common
- * attributes, and derived classes override.
- */
- CK_RV (*get_attribute) (GkrPkObject *obj, CK_ATTRIBUTE_PTR attr);
- CK_RV (*set_attribute) (GkrPkObject *obj, CK_ATTRIBUTE_PTR attr);
-
- /*
- * Overridden by derived classes to prepare an object for
- * use by gnome-keyring. This might include extracting public
- * key and storing it in indexes or other stuff like that.
- */
- gboolean (*import) (GkrPkObject *obj);
-
- /*
- * Overridden by derived classes to provide the serialized
- * representation of the object, minus modifiable attributes, and
- * things that go in the index.
- *
- * Objects may choose to use the 'password' to encrypt and/or MAC
- * the data, as long as the representation is later decryptable.
- */
- guchar* (*serialize) (GkrPkObject *obj, const gchar* password, gsize *n_data);
-
- /*
- * Asks the object to lock itself, ie: remove any sensitive data from
- * memory.
- */
- void (*lock) (GkrPkObject *obj);
-};
-
-GType gkr_pk_object_get_type (void) G_GNUC_CONST;
-
-CK_RV gkr_pk_object_create (GkrPkObjectManager *manager,
- GArray *attrs, GkrPkObject **object);
-
-void gkr_pk_object_refresh (GkrPkObject *object);
-
-void gkr_pk_object_flush (GkrPkObject *object);
-
-void gkr_pk_object_lock (GkrPkObject *object);
-
-gboolean gkr_pk_object_import (GkrPkObject *object);
-
-gboolean gkr_pk_object_match (GkrPkObject *object,
- GArray *attrs);
-
-gboolean gkr_pk_object_match_one (GkrPkObject *object,
- CK_ATTRIBUTE_PTR attr);
-
-CK_OBJECT_HANDLE gkr_pk_object_get_handle (GkrPkObject *object);
-
-GkrPkObjectManager* gkr_pk_object_get_manager (GkrPkObject *object);
-
-CK_RV gkr_pk_object_get_attribute (GkrPkObject *object,
- CK_ATTRIBUTE_PTR attr);
-
-CK_RV gkr_pk_object_get_ulong (GkrPkObject *object,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value);
-
-CK_RV gkr_pk_object_get_bool (GkrPkObject *object,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value);
-
-CK_RV gkr_pk_object_get_attributes (GkrPkObject *object,
- GArray *attrs);
-
-CK_RV gkr_pk_object_set_attribute (GkrPkObject *object,
- CK_ATTRIBUTE_PTR attr);
-
-CK_RV gkr_pk_object_set_ulong (GkrPkObject *object,
- CK_ATTRIBUTE_TYPE type,
- CK_ULONG value);
-
-CK_RV gkr_pk_object_set_bool (GkrPkObject *object,
- CK_ATTRIBUTE_TYPE type,
- CK_BBOOL value);
-
-CK_RV gkr_pk_object_set_attributes (GkrPkObject *object,
- GArray *attrs);
-
-gchar* gkr_pk_object_get_label (GkrPkObject *object);
-
-void gkr_pk_object_set_label (GkrPkObject *object,
- const gchar *label);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_OBJECT_H__ */
-
diff --git a/pk/gkr-pk-places.h b/pk/gkr-pk-places.h
deleted file mode 100644
index 250e3bd5..00000000
--- a/pk/gkr-pk-places.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-places.h - The directories to look for keys and certificates
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKPLACES_H_
-#define GKRPKPLACES_H_
-
-#include "config.h"
-
-#include "common/gkr-location.h"
-
-typedef struct _GkrPkPlace {
- const gchar *volume;
- const gchar *directory;
- const gchar *include;
- const gchar *exclude;
- const gchar *defaults;
-} GkrPkPlace;
-
-static const GkrPkPlace gkr_pk_places[] = {
-
- /* The main key and certificate storage */
- { NULL, "keystore", "*", "*.keystore",
- "[default]\n" },
-
-#ifdef WITH_SSH
- /* The SSH directory, mark all keys as ssh-authentication capable */
- { GKR_LOCATION_VOLUME_HOME_S, ".ssh", "id_?sa", NULL,
- "[default]\npurposes=ssh-authentication" },
-#endif
-
-#ifdef ROOT_CERTIFICATES
- /* The root certificates directory, mark as trusted anchors */
- { GKR_LOCATION_VOLUME_FILE_S, ROOT_CERTIFICATES, "*", "*.0",
- "[default]\nuser-trust=trusted" }
-#endif
-};
-
-#endif /*GKRPKPLACES_H_*/
diff --git a/pk/gkr-pk-privkey.c b/pk/gkr-pk-privkey.c
deleted file mode 100644
index 59fbb73b..00000000
--- a/pk/gkr-pk-privkey.c
+++ /dev/null
@@ -1,709 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-privkey.c - An PK private key
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-index.h"
-#include "gkr-pk-object.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-object-storage.h"
-#include "gkr-pk-privkey.h"
-#include "gkr-pk-pubkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-id.h"
-#include "common/gkr-location.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-
-#include "pkix/gkr-pkix-der.h"
-#include "pkix/gkr-pkix-serialize.h"
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <gcrypt.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#define SSH_AUTHENTICATION (g_quark_from_static_string ("ssh-authentication"))
-
-/* -------------------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- PROP_0,
- PROP_GCRYPT_SEXP
-};
-
-struct _GkrPkPrivkeyData {
- int algorithm;
- GkrPkPubkey *pubkey;
- gcry_sexp_t s_key;
- gcry_sexp_t numbers;
-};
-
-G_DEFINE_TYPE (GkrPkPrivkey, gkr_pk_privkey, GKR_TYPE_PK_OBJECT);
-
-/* -------------------------------------------------------------------------------------
- * HELPERS
- */
-
-static gboolean
-load_private_key (GkrPkPrivkey *key)
-{
- GError *err = NULL;
- GkrPkObject *obj;
-
- if (key->priv->s_key)
- return TRUE;
-
- obj = GKR_PK_OBJECT (key);
-
- g_return_val_if_fail (obj->storage, CKR_GENERAL_ERROR);
- if (!gkr_pk_object_storage_load_complete (obj->storage, obj, &err)) {
- g_message ("couldn't load private key for: %s: %s",
- g_quark_to_string (obj->location),
- err && err->message ? err->message : "");
- g_error_free (err);
- return FALSE;
- }
-
- /* This can happen if the user cancels out of a dialog */
- if (!key->priv->s_key)
- return FALSE;
-
- return TRUE;
-}
-
-static GkrPkPubkey*
-get_public_key (GkrPkPrivkey *key, gboolean force)
-{
- gcry_sexp_t s_key = NULL;
- GkrPkObject *obj;
- GkrPkixResult res;
- guchar *data;
- gsize n_data;
-
- if (key->priv->pubkey)
- goto done;
-
- obj = GKR_PK_OBJECT (key);
-
- /* Do we have a public key in the indexes? */
- data = gkr_pk_index_get_binary (obj, "public-key", &n_data);
- if (data) {
- res = gkr_pkix_der_read_public_key (data, n_data, &s_key);
- if (res == GKR_PKIX_SUCCESS) {
- key->priv->pubkey = gkr_pk_pubkey_instance (obj->manager,
- obj->location, s_key);
- goto done;
- }
-
- gkr_pk_index_delete (obj, "public-key");
- g_warning ("invalid public-key in indexes for: %s", g_quark_to_string (obj->location));
- }
-
- /* 'Import' the public key from the private key */
- if (force && !key->priv->s_key) {
- if (!load_private_key (key))
- goto done;
- }
-
- /* Create one from the private key */
- if (key->priv->s_key) {
- if (!gkr_crypto_skey_private_to_public (key->priv->s_key, &s_key))
- g_return_val_if_reached (NULL);
-
- g_assert (s_key);
-
- /* Write it to the indexes */
- data = gkr_pkix_der_write_public_key (s_key, &n_data);
- g_return_val_if_fail (data != NULL, NULL);
-
- /* Write the public key out to the indexes */
- if (!gkr_pk_index_set_binary (obj, "public-key", data, n_data))
- g_warning ("couldn't write public key to index for: %s", g_quark_to_string (obj->location));
-
- key->priv->pubkey = gkr_pk_pubkey_instance (obj->manager, 0, s_key);
- goto done;
- }
-
-done:
- return key->priv->pubkey;
-}
-
-static CK_RV
-create_rsa_private (GArray *attrs, gcry_sexp_t *skey)
-{
- gcry_error_t gcry;
- gcry_mpi_t n = NULL;
- gcry_mpi_t e = NULL;
- gcry_mpi_t d = NULL;
- gcry_mpi_t p = NULL;
- gcry_mpi_t q = NULL;
- gcry_mpi_t u = NULL;
- CK_RV ret;
-
- if (!gkr_pk_attributes_mpi (attrs, CKA_MODULUS, &n) ||
- !gkr_pk_attributes_mpi (attrs, CKA_PUBLIC_EXPONENT, &e) ||
- !gkr_pk_attributes_mpi (attrs, CKA_PRIVATE_EXPONENT, &d) ||
- !gkr_pk_attributes_mpi (attrs, CKA_PRIME_1, &p) ||
- !gkr_pk_attributes_mpi (attrs, CKA_PRIME_2, &q)) {
- ret = CKR_TEMPLATE_INCOMPLETE;
- goto done;
- }
-
- /* Fix up the incoming key so gcrypt likes it */
- if (gcry_mpi_cmp (p, q) > 0)
- gcry_mpi_swap (p, q);
-
- /* Compute U. */
- u = gcry_mpi_snew (gcry_mpi_get_nbits (n));
- gcry_mpi_invm (u, p, q);
-
- gcry = gcry_sexp_build (skey, NULL,
- "(private-key (rsa (n %m) (e %m) (d %m) (p %m) (q %m) (u %m)))",
- n, e, d, p, q, u);
-
- /* TODO: We should be mapping better return codes */
- if (gcry != 0) {
- g_message ("couldn't create RSA key from passed attributes");
- ret = CKR_GENERAL_ERROR;
- goto done;
- }
-
- gkr_pk_attributes_consume (attrs, CKA_MODULUS, CKA_PUBLIC_EXPONENT,
- CKA_PRIVATE_EXPONENT, CKA_PRIME_1, CKA_PRIME_2,
- CKA_EXPONENT_1, CKA_EXPONENT_2, CKA_COEFFICIENT, -1);
- ret = CKR_OK;
-
-done:
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- gcry_mpi_release (d);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (u);
- return ret;
-}
-
-static CK_RV
-create_dsa_private (GArray *attrs, gcry_sexp_t *skey)
-{
- gcry_error_t gcry;
- gcry_mpi_t p = NULL;
- gcry_mpi_t q = NULL;
- gcry_mpi_t g = NULL;
- gcry_mpi_t y = NULL;
- gcry_mpi_t value = NULL;
- CK_RV ret;
-
- if (!gkr_pk_attributes_mpi (attrs, CKA_PRIME, &p) ||
- !gkr_pk_attributes_mpi (attrs, CKA_SUBPRIME, &q) ||
- !gkr_pk_attributes_mpi (attrs, CKA_BASE, &g) ||
- !gkr_pk_attributes_mpi (attrs, CKA_VALUE, &value)) {
- ret = CKR_TEMPLATE_INCOMPLETE;
- goto done;
- }
-
- /* Calculate the public part from the private */
- y = gcry_mpi_snew (gcry_mpi_get_nbits (value));
- g_return_val_if_fail (y, CKR_GENERAL_ERROR);
- gcry_mpi_powm (y, g, value, p);
-
- gcry = gcry_sexp_build (skey, NULL,
- "(private-key (dsa (p %m) (q %m) (g %m) (y %m) (x %m)))",
- p, q, g, y, value);
-
- /* TODO: We should be mapping better return codes */
- if (gcry != 0) {
- g_message ("couldn't create DSA key from passed attributes");
- ret = CKR_GENERAL_ERROR;
- goto done;
- }
-
- gkr_pk_attributes_consume (attrs, CKA_PRIME, CKA_SUBPRIME,
- CKA_BASE, CKA_VALUE, -1);
- ret = CKR_OK;
-
-done:
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
- gcry_mpi_release (value);
- return ret;
-}
-
-
-static void
-initialize_from_key (GkrPkPrivkey *key)
-{
- gcry_sexp_t numbers;
- gboolean is_priv;
- int algorithm;
-
- gcry_sexp_release (key->priv->numbers);
- key->priv->numbers = NULL;
-
- key->priv->algorithm = 0;
-
- if (!key->priv->s_key)
- return;
-
- /* Parse it into handy parts */
- if (!gkr_crypto_skey_parse (key->priv->s_key, &algorithm, &is_priv, &numbers))
- g_return_if_reached ();
-
- g_return_if_fail (is_priv);
- g_assert (numbers);
- g_assert (algorithm);
-
- key->priv->numbers = numbers;
- key->priv->algorithm = algorithm;
-
- /* The the chance to try and make sure the public key exists */
- get_public_key (key, FALSE);
-
- /* Make sure any cache data is current */
- gkr_pk_object_flush (GKR_PK_OBJECT (key));
-}
-
-static CK_RV
-attribute_from_public (GkrPkPrivkey *key, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkPubkey *pub = get_public_key (key, TRUE);
- if (pub == NULL)
- return CKR_GENERAL_ERROR;
- return gkr_pk_object_get_attribute (GKR_PK_OBJECT (pub), attr);
-}
-
-static CK_RV
-attribute_from_certificate (GkrPkPrivkey *key, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkObject *crt, *obj;
- gkrconstid keyid;
-
- keyid = gkr_pk_privkey_get_keyid (key);
- if (!keyid)
- return CKR_GENERAL_ERROR;
-
- obj = GKR_PK_OBJECT (key);
- crt = gkr_pk_object_manager_find_by_id (obj->manager, GKR_TYPE_PK_CERT, keyid);
- if (crt == NULL)
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- return gkr_pk_object_get_attribute (crt, attr);
-}
-
-static CK_RV
-extract_key_mpi (GkrPkPrivkey *key, int algorithm, const char *part, CK_ATTRIBUTE_PTR attr)
-{
- gcry_mpi_t mpi = NULL;
- gboolean ret;
-
- /* Extract it from public key if no key available */
- if (!key->priv->s_key && attribute_from_public (key, attr) == CKR_OK)
- return CKR_OK;
-
- /* Load our key */
- if (!load_private_key (key))
- return CKR_GENERAL_ERROR;
-
- if (key->priv->algorithm != algorithm)
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- g_assert (key->priv->numbers);
- ret = gkr_crypto_sexp_extract_mpi (key->priv->numbers, &mpi, part, NULL);
- g_return_val_if_fail (ret, CKR_GENERAL_ERROR);
- gkr_pk_attribute_set_mpi (attr, mpi);
- gcry_mpi_release (mpi);
- return CKR_OK;
-}
-
-/* -------------------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_privkey_init (GkrPkPrivkey *key)
-{
- key->priv = G_TYPE_INSTANCE_GET_PRIVATE (key, GKR_TYPE_PK_PRIVKEY, GkrPkPrivkeyData);
- memset (key->priv, 0, sizeof (GkrPkPrivkeyData));
-}
-
-static void
-gkr_pk_privkey_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- switch (prop_id) {
- case PROP_GCRYPT_SEXP:
- g_value_set_pointer (value, key->priv->s_key);
- break;
- }
-}
-
-static void
-gkr_pk_privkey_set_property (GObject *obj, guint prop_id, const GValue *value,
- GParamSpec *pspec)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- switch (prop_id) {
- case PROP_GCRYPT_SEXP:
- if (key->priv->s_key)
- gcry_sexp_release (key->priv->s_key);
- key->priv->s_key = (gcry_sexp_t)g_value_get_pointer (value);
- initialize_from_key (key);
- break;
- }
-}
-
-static CK_RV
-gkr_pk_privkey_get_attribute (GkrPkObject* obj, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
- gkrconstid keyid;
- GQuark *quarks;
- guchar *value;
- gsize len;
-
- switch (attr->type)
- {
- case CKA_DECRYPT:
- case CKA_PRIVATE:
- case CKA_SENSITIVE:
- case CKA_SIGN:
- case CKA_SIGN_RECOVER:
- case CKA_WRAP_WITH_TRUSTED:
- gkr_pk_attribute_set_boolean (attr, CK_TRUE);
- return CKR_OK;
-
- case CKA_DERIVE:
- case CKA_EXTRACTABLE:
- case CKA_UNWRAP:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- case CKA_GNOME_PURPOSE_SSH_AUTH:
- quarks = gkr_pk_index_get_quarks (obj, "purposes");
- gkr_pk_attribute_set_boolean (attr, quarks &&
- gkr_pk_index_quarks_has (quarks, SSH_AUTHENTICATION));
- gkr_pk_index_quarks_free (quarks);
- return CKR_OK;
-
- /* TODO: Perhaps we can detect this in some way */
- case CKA_ALWAYS_SENSITIVE:
- case CKA_LOCAL:
- case CKA_NEVER_EXTRACTABLE:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- /* TODO: We may be able to detect this for certain keys */
- case CKA_ALWAYS_AUTHENTICATE:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- case CKA_CLASS:
- gkr_pk_attribute_set_ulong (attr, CKO_PRIVATE_KEY);
- return CKR_OK;
-
- case CKA_KEY_TYPE:
- if (attribute_from_public (key, attr) != CKR_OK)
- gkr_pk_attribute_set_ulong (attr, CK_UNAVAILABLE_INFORMATION);
- return CKR_OK;
-
- /* TODO: Once we can generate keys, this should change */
- case CKA_KEY_GEN_MECHANISM:
- gkr_pk_attribute_set_ulong (attr, CK_UNAVAILABLE_INFORMATION);
- return CKR_OK;
-
- case CKA_ID:
- keyid = gkr_pk_privkey_get_keyid (key);
- if (!keyid)
- return CKR_GENERAL_ERROR;
- value = (CK_VOID_PTR)gkr_id_get_raw (keyid, &len);
- gkr_pk_attribute_set_data (attr, value, len);
- return CKR_OK;
-
- case CKA_SUBJECT:
- return attribute_from_certificate (key, attr);
-
- case CKA_MODULUS:
- return extract_key_mpi (key, GCRY_PK_RSA, "n", attr);
-
- case CKA_PUBLIC_EXPONENT:
- return extract_key_mpi (key, GCRY_PK_RSA, "e", attr);
-
- /* RSA private parts, we never allow */
- case CKA_PRIVATE_EXPONENT:
- case CKA_PRIME_1:
- case CKA_PRIME_2:
- case CKA_EXPONENT_1:
- case CKA_EXPONENT_2:
- case CKA_COEFFICIENT:
- return CKR_ATTRIBUTE_SENSITIVE;
-
- case CKA_PRIME:
- return extract_key_mpi (key, GCRY_PK_DSA, "p", attr);
-
- case CKA_SUBPRIME:
- return extract_key_mpi (key, GCRY_PK_DSA, "q", attr);
-
- case CKA_BASE:
- return extract_key_mpi (key, GCRY_PK_DSA, "g", attr);
-
- /* DSA private parts, we never allow */
- case CKA_VALUE:
- return CKR_ATTRIBUTE_SENSITIVE;
-
- /* TODO: We need to implement this: ARRAY[1] (CKM_RSA_PKCS) */
- case CKA_ALLOWED_MECHANISMS:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- case CKA_UNWRAP_TEMPLATE:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- /* We don't support these */
- case CKA_START_DATE:
- case CKA_END_DATE:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- default:
- break;
- };
-
- return GKR_PK_OBJECT_CLASS (gkr_pk_privkey_parent_class)->get_attribute (obj, attr);
-}
-
-static gboolean
-gkr_pk_privkey_import (GkrPkObject *obj)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
- GkrPkPubkey *pub;
-
- /* This stores all necessary information in the indexes */
- pub = get_public_key (key, TRUE);
-
- return GKR_IS_PK_PUBKEY (pub);
-}
-
-static guchar*
-gkr_pk_privkey_serialize (GkrPkObject *obj, const gchar *password, gsize *n_data)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- if (!load_private_key (key))
- return NULL;
-
- g_return_val_if_fail (key->priv->s_key, NULL);
-
- /* Write it out */
- return gkr_pkix_serialize_private_key_pkcs8 (key->priv->s_key, password, n_data);
-}
-
-static void
-gkr_pk_privkey_lock (GkrPkObject *obj)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- if (!key->priv->s_key)
- return;
-
- gcry_sexp_release (key->priv->s_key);
- key->priv->s_key = NULL;
-
- initialize_from_key (key);
-}
-
-static void
-gkr_pk_privkey_dispose (GObject *obj)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- if (key->priv->pubkey) {
- g_object_unref (key->priv->pubkey);
- key->priv->pubkey = NULL;
- }
-
- G_OBJECT_CLASS (gkr_pk_privkey_parent_class)->dispose (obj);
-}
-
-static void
-gkr_pk_privkey_finalize (GObject *obj)
-{
- GkrPkPrivkey *key = GKR_PK_PRIVKEY (obj);
-
- g_assert (!key->priv->pubkey);
-
- gcry_sexp_release (key->priv->s_key);
- key->priv->s_key = NULL;
-
- gcry_sexp_release (key->priv->numbers);
- key->priv->numbers = NULL;
-
- G_OBJECT_CLASS (gkr_pk_privkey_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_privkey_class_init (GkrPkPrivkeyClass *klass)
-{
- GObjectClass *gobject_class;
- GkrPkObjectClass *parent_class;
-
- gkr_pk_privkey_parent_class = g_type_class_peek_parent (klass);
-
- parent_class = GKR_PK_OBJECT_CLASS (klass);
- parent_class->get_attribute = gkr_pk_privkey_get_attribute;
- parent_class->import = gkr_pk_privkey_import;
- parent_class->serialize = gkr_pk_privkey_serialize;
- parent_class->lock = gkr_pk_privkey_lock;
-
- gobject_class = (GObjectClass*)klass;
- gobject_class->get_property = gkr_pk_privkey_get_property;
- gobject_class->set_property = gkr_pk_privkey_set_property;
- gobject_class->dispose = gkr_pk_privkey_dispose;
- gobject_class->finalize = gkr_pk_privkey_finalize;
-
- g_object_class_install_property (gobject_class, PROP_GCRYPT_SEXP,
- g_param_spec_pointer ("gcrypt-sexp", "Key", "S-Expression key",
- G_PARAM_READWRITE));
-
- g_type_class_add_private (klass, sizeof (GkrPkPrivkeyData));
-}
-
-GkrPkObject*
-gkr_pk_privkey_new (GkrPkObjectManager *mgr, GQuark location, gcry_sexp_t s_key)
-{
- GkrPkObject *key;
- guchar hash[20];
- gkrid digest;
-
- g_return_val_if_fail (s_key != NULL, NULL);
-
- if (!gcry_pk_get_keygrip (s_key, hash))
- g_return_val_if_reached (NULL);
-
- /* We need to create a digest for this key */
- digest = gkr_id_new_digestv ((const guchar*)"private-key", 11, hash, 20, NULL);
-
- key = g_object_new (GKR_TYPE_PK_PRIVKEY, "manager", mgr, "location", location,
- "gcrypt-sexp", s_key, "digest", digest, NULL);
-
- gkr_id_free (digest);
-
- return key;
-}
-
-CK_RV
-gkr_pk_privkey_create (GkrPkObjectManager* manager, GArray* array,
- GkrPkObject **object)
-{
- CK_KEY_TYPE type;
- gcry_sexp_t sexp;
- CK_RV ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (manager), CKR_GENERAL_ERROR);
- g_return_val_if_fail (array, CKR_GENERAL_ERROR);
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- *object = NULL;
-
- if (!gkr_pk_attributes_ulong (array, CKA_KEY_TYPE, &type))
- return CKR_TEMPLATE_INCOMPLETE;
- gkr_pk_attributes_consume (array, CKA_KEY_TYPE, -1);
-
- switch (type) {
- case CKK_RSA:
- ret = create_rsa_private (array, &sexp);
- break;
- case CKK_DSA:
- ret = create_dsa_private (array, &sexp);
- break;
- default:
- return CKR_ATTRIBUTE_VALUE_INVALID;
- };
-
- if (ret != CKR_OK)
- return ret;
-
- g_return_val_if_fail (sexp, CKR_GENERAL_ERROR);
- *object = gkr_pk_privkey_new (manager, 0, sexp);
-
- return CKR_OK;
-}
-
-gkrconstid
-gkr_pk_privkey_get_keyid (GkrPkPrivkey *key)
-{
- GkrPkPubkey *pub;
-
- g_return_val_if_fail (GKR_IS_PK_PRIVKEY (key), NULL);
-
- /* Access via public key */
- pub = get_public_key (key, TRUE);
- if(!pub)
- return NULL;
-
- return gkr_pk_pubkey_get_keyid (pub);
-}
-
-gcry_sexp_t
-gkr_pk_privkey_get_key (GkrPkPrivkey *key)
-{
- g_return_val_if_fail (GKR_IS_PK_PRIVKEY (key), NULL);
- if (!load_private_key (key))
- return NULL;
- return key->priv->s_key;
-}
-
-int
-gkr_pk_privkey_get_algorithm (GkrPkPrivkey *key)
-{
- GkrPkPubkey *pub;
-
- g_return_val_if_fail (GKR_IS_PK_PRIVKEY (key), 0);
-
- /* If we have it access directly */
- if (key->priv->algorithm)
- return key->priv->algorithm;
-
- /* Otherwise access via public key */
- pub = get_public_key (key, TRUE);
- return gkr_pk_pubkey_get_algorithm (GKR_PK_PUBKEY (pub));
-}
-
-GkrPkPubkey*
-gkr_pk_privkey_get_public (GkrPkPrivkey *key)
-{
- g_return_val_if_fail (GKR_IS_PK_PRIVKEY (key), NULL);
- return get_public_key (key, TRUE);
-}
diff --git a/pk/gkr-pk-privkey.h b/pk/gkr-pk-privkey.h
deleted file mode 100644
index f082a2ff..00000000
--- a/pk/gkr-pk-privkey.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-privkey.h - An PK private key
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_PRIVKEY_H__
-#define __GKR_PK_PRIVKEY_H__
-
-#include "gkr-pk-object.h"
-#include "gkr-pk-pubkey.h"
-
-#include "common/gkr-id.h"
-
-#include <gcrypt.h>
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_PRIVKEY (gkr_pk_privkey_get_type())
-#define GKR_PK_PRIVKEY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_PRIVKEY, GkrPkPrivkey))
-#define GKR_PK_PRIVKEY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_PK_PRIVKEY, GkrPkPrivkey))
-#define GKR_IS_PK_PRIVKEY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_PRIVKEY))
-#define GKR_IS_PK_PRIVKEY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_PK_PRIVKEY))
-#define GKR_PK_PRIVKEY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_PK_PRIVKEY, GkrPkPrivKeyClass))
-
-typedef struct _GkrPkPrivkey GkrPkPrivkey;
-typedef struct _GkrPkPrivkeyClass GkrPkPrivkeyClass;
-typedef struct _GkrPkPrivkeyData GkrPkPrivkeyData;
-
-struct _GkrPkPrivkey {
- GkrPkObject parent;
- GkrPkPrivkeyData *priv;
-};
-
-struct _GkrPkPrivkeyClass {
- GkrPkObjectClass parent_class;
-};
-
-GType gkr_pk_privkey_get_type (void) G_GNUC_CONST;
-
-GkrPkObject* gkr_pk_privkey_new (GkrPkObjectManager *mgr,
- GQuark location, gcry_sexp_t skey);
-
-CK_RV gkr_pk_privkey_create (GkrPkObjectManager* manager,
- GArray* array, GkrPkObject **object);
-
-gkrconstid gkr_pk_privkey_get_keyid (GkrPkPrivkey *pkey);
-
-gkrid gkr_pk_privkey_make_keyid (gcry_sexp_t skey);
-
-gcry_sexp_t gkr_pk_privkey_get_key (GkrPkPrivkey *pkey);
-
-int gkr_pk_privkey_get_algorithm (GkrPkPrivkey *key);
-
-GkrPkPubkey* gkr_pk_privkey_get_public (GkrPkPrivkey *key);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_PRIVKEY_H__ */
diff --git a/pk/gkr-pk-pubkey.c b/pk/gkr-pk-pubkey.c
deleted file mode 100644
index 0f2542c0..00000000
--- a/pk/gkr-pk-pubkey.c
+++ /dev/null
@@ -1,597 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-pubkey.c - A PK public key
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-cert.h"
-#include "gkr-pk-index.h"
-#include "gkr-pk-object.h"
-#include "gkr-pk-object-manager.h"
-#include "gkr-pk-object-storage.h"
-#include "gkr-pk-pubkey.h"
-#include "gkr-pk-util.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-id.h"
-#include "common/gkr-location.h"
-
-#include "pkix/gkr-pkix-der.h"
-#include "pkix/gkr-pkix-serialize.h"
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <gcrypt.h>
-
-#include <stdio.h>
-#include <string.h>
-
-/* -------------------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-enum {
- PROP_0,
- PROP_GCRYPT_SEXP
-};
-
-struct _GkrPkPubkeyData {
- int algorithm;
- gkrid keyid;
- gcry_sexp_t s_key;
- gcry_sexp_t numbers;
-};
-
-G_DEFINE_TYPE (GkrPkPubkey, gkr_pk_pubkey, GKR_TYPE_PK_OBJECT);
-
-/* -------------------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-initialize_from_key (GkrPkPubkey *key)
-{
- gcry_sexp_t numbers;
- gboolean is_priv;
- int algorithm;
-
- gcry_sexp_release (key->pub->numbers);
- key->pub->numbers = NULL;
-
- gkr_id_free (key->pub->keyid);
- key->pub->keyid = NULL;
-
- key->pub->algorithm = 0;
-
- if (!key->pub->s_key)
- return;
-
- /* Parse it into handy parts */
- if (!gkr_crypto_skey_parse (key->pub->s_key, &algorithm, &is_priv, &numbers))
- g_return_if_reached ();
-
- g_return_if_fail (!is_priv);
- g_assert (numbers);
- g_assert (algorithm);
-
- key->pub->numbers = numbers;
- key->pub->algorithm = algorithm;
- key->pub->keyid = gkr_crypto_skey_make_id (key->pub->s_key);
-
- /* Make sure any cache data is current */
- gkr_pk_object_flush (GKR_PK_OBJECT (key));
-}
-
-static gboolean
-load_public_key (GkrPkPubkey *key)
-{
- GError *err = NULL;
- GkrPkObject *obj;
-
- if (key->pub->s_key)
- return TRUE;
-
- obj = GKR_PK_OBJECT (key);
-
- if (!gkr_pk_object_storage_load_complete (obj->storage, obj, &err)) {
- g_message ("couldn't load public key for: %s: %s",
- g_quark_to_string (obj->location),
- err && err->message ? err->message : "");
- g_error_free (err);
- return FALSE;
- }
-
- /* This can happen if the user cancels out of a dialog */
- if (!key->pub->s_key)
- return FALSE;
-
- return TRUE;
-}
-
-static CK_RV
-create_rsa_public (GArray *attrs, gcry_sexp_t *skey)
-{
- gcry_error_t gcry;
- gcry_mpi_t n = NULL;
- gcry_mpi_t e = NULL;
- CK_RV ret;
-
- if (!gkr_pk_attributes_mpi (attrs, CKA_MODULUS, &n) ||
- !gkr_pk_attributes_mpi (attrs, CKA_PUBLIC_EXPONENT, &e)) {
- ret = CKR_TEMPLATE_INCOMPLETE;
- goto done;
- }
-
- gcry = gcry_sexp_build (skey, NULL,
- "(public-key (rsa (n %m) (e %m)))", n, e);
-
- /* TODO: We should be mapping better return codes */
- if (gcry != 0) {
- g_message ("couldn't create RSA key from passed attributes");
- ret = CKR_GENERAL_ERROR;
- goto done;
- }
-
- gkr_pk_attributes_consume (attrs, CKA_MODULUS, CKA_PUBLIC_EXPONENT, -1);
- ret = CKR_OK;
-
-done:
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- return ret;
-}
-
-static CK_RV
-create_dsa_public (GArray *attrs, gcry_sexp_t *skey)
-{
- gcry_error_t gcry;
- gcry_mpi_t p = NULL;
- gcry_mpi_t q = NULL;
- gcry_mpi_t g = NULL;
- gcry_mpi_t value = NULL;
- CK_RV ret;
-
- if (!gkr_pk_attributes_mpi (attrs, CKA_PRIME, &p) ||
- !gkr_pk_attributes_mpi (attrs, CKA_SUBPRIME, &q) ||
- !gkr_pk_attributes_mpi (attrs, CKA_BASE, &g) ||
- !gkr_pk_attributes_mpi (attrs, CKA_VALUE, &value)) {
- ret = CKR_TEMPLATE_INCOMPLETE;
- goto done;
- }
-
- gcry = gcry_sexp_build (skey, NULL,
- "(public-key (dsa (p %m) (q %m) (g %m) (y %m)))",
- p, q, g, value);
-
- /* TODO: We should be mapping better return codes */
- if (gcry != 0) {
- g_message ("couldn't create DSA key from passed attributes");
- ret = CKR_GENERAL_ERROR;
- goto done;
- }
-
- gkr_pk_attributes_consume (attrs, CKA_PRIME, CKA_SUBPRIME,
- CKA_BASE, CKA_VALUE, -1);
- ret = CKR_OK;
-
-done:
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (value);
- return ret;
-}
-
-static CK_RV
-attribute_from_related (GkrPkPubkey *key, GType type, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkObject *crt, *obj;
-
- if (!load_public_key (key))
- return CKR_GENERAL_ERROR;
-
- obj = GKR_PK_OBJECT (key);
- crt = gkr_pk_object_manager_find_by_id (obj->manager, type, key->pub->keyid);
-
- if (crt == NULL)
- return CKR_GENERAL_ERROR;
-
- return gkr_pk_object_get_attribute (crt, attr);
-}
-
-static CK_RV
-extract_key_mpi (GkrPkPubkey *key, int algorithm, const char *part, CK_ATTRIBUTE_PTR attr)
-{
- gcry_mpi_t mpi;
- gboolean ret;
-
- if (!load_public_key (key))
- return CKR_GENERAL_ERROR;
-
- if (key->pub->algorithm != algorithm)
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- g_assert (key->pub->numbers);
- ret = gkr_crypto_sexp_extract_mpi (key->pub->numbers, &mpi, part, NULL);
- g_return_val_if_fail (ret, CKR_GENERAL_ERROR);
- gkr_pk_attribute_set_mpi (attr, mpi);
- gcry_mpi_release (mpi);
- return CKR_OK;
-}
-
-static CK_RV
-extract_key_value (GkrPkPubkey *key, CK_ATTRIBUTE_PTR attr)
-{
- guchar *data;
- gsize n_data;
-
- if (!load_public_key (key))
- return CKR_GENERAL_ERROR;
-
- switch (gkr_pk_pubkey_get_algorithm (key)) {
- case GCRY_PK_RSA:
- data = gkr_pkix_der_write_public_key_rsa (key->pub->s_key, &n_data);
- g_return_val_if_fail (data, CKR_GENERAL_ERROR);
-
- gkr_pk_attribute_set_data (attr, data, n_data);
- g_free (data);
- return CKR_OK;
-
- case GCRY_PK_DSA:
- return extract_key_mpi (key, GCRY_PK_DSA, "y", attr);
-
- default:
- return CKR_ATTRIBUTE_TYPE_INVALID;
- };
-}
-
-/* -------------------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pk_pubkey_init (GkrPkPubkey *key)
-{
- key->pub = G_TYPE_INSTANCE_GET_PRIVATE (key, GKR_TYPE_PK_PUBKEY, GkrPkPubkeyData);
- memset (key->pub, 0, sizeof (GkrPkPubkeyData));
-}
-
-static void
-gkr_pk_pubkey_get_property (GObject *obj, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GkrPkPubkey *key = GKR_PK_PUBKEY (obj);
-
- switch (prop_id) {
- case PROP_GCRYPT_SEXP:
- g_value_set_pointer (value, key->pub->s_key);
- break;
- }
-}
-
-static void
-gkr_pk_pubkey_set_property (GObject *obj, guint prop_id, const GValue *value,
- GParamSpec *pspec)
-{
- GkrPkPubkey *key = GKR_PK_PUBKEY (obj);
-
- switch (prop_id) {
- case PROP_GCRYPT_SEXP:
- if (key->pub->s_key)
- gcry_sexp_release (key->pub->s_key);
- key->pub->s_key = (gcry_sexp_t)g_value_get_pointer (value);
- initialize_from_key (key);
- break;
- }
-}
-
-static CK_RV
-gkr_pk_pubkey_get_attribute (GkrPkObject* obj, CK_ATTRIBUTE_PTR attr)
-{
- GkrPkPubkey *key = GKR_PK_PUBKEY (obj);
- gcry_mpi_t mpi;
- CK_RV ret;
-
- switch (attr->type)
- {
- case CKA_ENCRYPT:
- case CKA_EXTRACTABLE:
- case CKA_VERIFY:
- case CKA_VERIFY_RECOVER:
- gkr_pk_attribute_set_boolean (attr, CK_TRUE);
- return CKR_OK;
-
- case CKA_ALWAYS_AUTHENTICATE:
- case CKA_DERIVE:
- case CKA_PRIVATE:
- case CKA_SENSITIVE:
- case CKA_WRAP:
- case CKA_WRAP_WITH_TRUSTED:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- /* TODO: Use our definition of trusted */
- case CKA_TRUSTED:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- /* TODO: Perhaps we can detect this in some way */
- case CKA_LOCAL:
- gkr_pk_attribute_set_boolean (attr, CK_FALSE);
- return CKR_OK;
-
- case CKA_CLASS:
- gkr_pk_attribute_set_ulong (attr, CKO_PUBLIC_KEY);
- return CKR_OK;
-
- case CKA_KEY_TYPE:
- if (!load_public_key (key))
- return CKR_GENERAL_ERROR;
- switch (key->pub->algorithm) {
- case GCRY_PK_RSA:
- gkr_pk_attribute_set_ulong (attr, CKK_RSA);
- break;
- case GCRY_PK_DSA:
- gkr_pk_attribute_set_ulong (attr, CKK_DSA);
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- }
- return CKR_OK;
-
- case CKA_MODULUS_BITS:
- if (!load_public_key (key))
- return CKR_GENERAL_ERROR;
- if (key->pub->algorithm != GCRY_PK_RSA)
- return CKR_ATTRIBUTE_TYPE_INVALID;
- g_assert (key->pub->numbers);
- ret = gkr_crypto_sexp_extract_mpi (key->pub->numbers, &mpi, "n", NULL);
- g_return_val_if_fail (ret, CKR_GENERAL_ERROR);
- gkr_pk_attribute_set_ulong (attr, gcry_mpi_get_nbits (mpi));
- gcry_mpi_release (mpi);
- return CKR_OK;
-
- /* TODO: Once we can generate keys, this should change */
- case CKA_KEY_GEN_MECHANISM:
- return CK_UNAVAILABLE_INFORMATION;
-
- case CKA_ID:
- /* Always a SHA-1 hash output buffer */
- if (!load_public_key (key) || !key->pub->keyid)
- return CKR_GENERAL_ERROR;
- gkr_pk_attribute_set_id (attr, key->pub->keyid);
- return CKR_OK;
-
- case CKA_SUBJECT:
- /* The subject of a related certificate */
- if (attribute_from_related (key, GKR_TYPE_PK_CERT, attr) == CKR_OK)
- return CKR_OK;
-
- /* Empty subject */
- gkr_pk_attribute_clear (attr);
- return CKR_OK;
-
- case CKA_MODULUS:
- return extract_key_mpi (key, GCRY_PK_RSA, "n", attr);
-
- case CKA_PUBLIC_EXPONENT:
- return extract_key_mpi (key, GCRY_PK_RSA, "e", attr);
-
- case CKA_PRIME:
- return extract_key_mpi (key, GCRY_PK_DSA, "p", attr);
-
- case CKA_SUBPRIME:
- return extract_key_mpi (key, GCRY_PK_DSA, "q", attr);
-
- case CKA_BASE:
- return extract_key_mpi (key, GCRY_PK_DSA, "g", attr);
-
- case CKA_VALUE:
- return extract_key_value (key, attr);
-
- /* TODO: We need to implement this: ARRAY[1] (CKM_RSA_PKCS) */
- case CKA_ALLOWED_MECHANISMS:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- case CKA_UNWRAP_TEMPLATE:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- /* We don't support these */
- case CKA_START_DATE:
- case CKA_END_DATE:
- return CKR_ATTRIBUTE_TYPE_INVALID;
-
- default:
- break;
- };
-
- return GKR_PK_OBJECT_CLASS (gkr_pk_pubkey_parent_class)->get_attribute (obj, attr);
-}
-
-static guchar*
-gkr_pk_pubkey_serialize (GkrPkObject *obj, const gchar *password, gsize *n_data)
-{
- GkrPkPubkey *key = GKR_PK_PUBKEY (obj);
-
- if (!load_public_key (key))
- return NULL;
-
- g_return_val_if_fail (key->pub->s_key, NULL);
-
- /* Write it to the indexes */
- return gkr_pkix_serialize_public_key (key->pub->s_key, n_data);
-}
-
-static void
-gkr_pk_pubkey_finalize (GObject *obj)
-{
- GkrPkPubkey *key = GKR_PK_PUBKEY (obj);
-
- gcry_sexp_release (key->pub->s_key);
- key->pub->s_key = NULL;
-
- initialize_from_key (key);
- g_assert (!key->pub->numbers);
- g_assert (!key->pub->keyid);
-
- G_OBJECT_CLASS (gkr_pk_pubkey_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pk_pubkey_class_init (GkrPkPubkeyClass *klass)
-{
- GObjectClass *gobject_class;
- GkrPkObjectClass *parent_class;
-
- gkr_pk_pubkey_parent_class = g_type_class_peek_parent (klass);
-
- parent_class = GKR_PK_OBJECT_CLASS (klass);
- parent_class->get_attribute = gkr_pk_pubkey_get_attribute;
- parent_class->serialize = gkr_pk_pubkey_serialize;
-
- gobject_class = (GObjectClass*)klass;
- gobject_class->get_property = gkr_pk_pubkey_get_property;
- gobject_class->set_property = gkr_pk_pubkey_set_property;
- gobject_class->finalize = gkr_pk_pubkey_finalize;
-
- g_object_class_install_property (gobject_class, PROP_GCRYPT_SEXP,
- g_param_spec_pointer ("gcrypt-sexp", "Key", "S-Expression key",
- G_PARAM_READWRITE));
-
- g_type_class_add_private (klass, sizeof (GkrPkPubkeyData));
-}
-
-GkrPkObject*
-gkr_pk_pubkey_new (GkrPkObjectManager *manager, GQuark location, gcry_sexp_t s_key)
-{
- GkrPkObject *key;
- guchar hash[20];
- gkrid digest;
-
- g_return_val_if_fail (s_key != NULL, NULL);
-
- if (!gcry_pk_get_keygrip (s_key, hash))
- g_return_val_if_reached (NULL);
-
- /* We need to create a digest for this key */
- digest = gkr_id_new_digestv ((const guchar*)"public-key", 10, hash, 20, NULL);
-
- key = g_object_new (GKR_TYPE_PK_PUBKEY, "manager", manager, "location", location,
- "gcrypt-sexp", s_key, "digest", digest, NULL);
-
- gkr_id_free (digest);
- return key;
-}
-
-GkrPkPubkey*
-gkr_pk_pubkey_instance (GkrPkObjectManager *manager, GQuark location, gcry_sexp_t s_key)
-{
- GkrPkObject *pub;
- gkrid keyid;
-
- g_return_val_if_fail (s_key, NULL);
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (manager), NULL);
-
- /* Make sure we have the keyid properly */
- keyid = gkr_crypto_skey_make_id (s_key);
- g_return_val_if_fail (keyid, NULL);
-
- /* Try the lookup */
- pub = gkr_pk_object_manager_find_by_id (manager, GKR_TYPE_PK_PUBKEY, keyid);
- gkr_id_free (keyid);
-
- if (pub != NULL) {
- gcry_sexp_release (s_key);
- g_object_ref (pub);
- return GKR_PK_PUBKEY (pub);
- }
-
- pub = gkr_pk_pubkey_new (manager, location, s_key);
- return GKR_PK_PUBKEY (pub);
-}
-
-CK_RV
-gkr_pk_pubkey_create (GkrPkObjectManager* manager, GArray* array,
- GkrPkObject **object)
-{
- CK_KEY_TYPE type;
- gcry_sexp_t sexp;
- CK_RV ret;
-
- g_return_val_if_fail (GKR_IS_PK_OBJECT_MANAGER (manager), CKR_GENERAL_ERROR);
- g_return_val_if_fail (array, CKR_GENERAL_ERROR);
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- *object = NULL;
-
- if (!gkr_pk_attributes_ulong (array, CKA_KEY_TYPE, &type))
- return CKR_TEMPLATE_INCOMPLETE;
- gkr_pk_attributes_consume (array, CKA_KEY_TYPE, -1);
-
- switch (type) {
- case CKK_RSA:
- ret = create_rsa_public (array, &sexp);
- break;
- case CKK_DSA:
- ret = create_dsa_public (array, &sexp);
- break;
- default:
- return CKR_ATTRIBUTE_VALUE_INVALID;
- };
-
- if (ret != CKR_OK)
- return ret;
-
- g_return_val_if_fail (sexp, CKR_GENERAL_ERROR);
- *object = gkr_pk_pubkey_new (manager, 0, sexp);
-
- return CKR_OK;
-}
-
-gkrconstid
-gkr_pk_pubkey_get_keyid (GkrPkPubkey *key)
-{
- g_return_val_if_fail (GKR_IS_PK_PUBKEY (key), NULL);
- if (!load_public_key (key) || !key->pub->keyid)
- return NULL;
- return key->pub->keyid;
-}
-
-gcry_sexp_t
-gkr_pk_pubkey_get_key (GkrPkPubkey *key)
-{
- g_return_val_if_fail (GKR_IS_PK_PUBKEY (key), NULL);
- if (!load_public_key (key))
- return NULL;
- return key->pub->s_key;
-}
-
-int
-gkr_pk_pubkey_get_algorithm (GkrPkPubkey *key)
-{
- g_return_val_if_fail (GKR_IS_PK_PUBKEY (key), 0);
- if (!load_public_key (key))
- return 0;
- return key->pub->algorithm;
-}
diff --git a/pk/gkr-pk-pubkey.h b/pk/gkr-pk-pubkey.h
deleted file mode 100644
index 57dbc67d..00000000
--- a/pk/gkr-pk-pubkey.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-pubkey.h - An PK public key
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PK_PUBKEY_H__
-#define __GKR_PK_PUBKEY_H__
-
-#include "gkr-pk-object.h"
-
-#include "common/gkr-id.h"
-
-#include <gcrypt.h>
-
-G_BEGIN_DECLS
-
-#define GKR_TYPE_PK_PUBKEY (gkr_pk_pubkey_get_type())
-#define GKR_PK_PUBKEY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GKR_TYPE_PK_PUBKEY, GkrPkPubkey))
-#define GKR_PK_PUBKEY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GKR_TYPE_PK_PUBKEY, GkrPkPubkey))
-#define GKR_IS_PK_PUBKEY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GKR_TYPE_PK_PUBKEY))
-#define GKR_IS_PK_PUBKEY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GKR_TYPE_PK_PUBKEY))
-#define GKR_PK_PUBKEY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GKR_TYPE_PK_PUBKEY, GkrPkPubKeyClass))
-
-typedef struct _GkrPkPubkey GkrPkPubkey;
-typedef struct _GkrPkPubkeyClass GkrPkPubkeyClass;
-typedef struct _GkrPkPubkeyData GkrPkPubkeyData;
-
-struct _GkrPkPubkey {
- GkrPkObject parent;
- GkrPkPubkeyData *pub;
-};
-
-struct _GkrPkPubkeyClass {
- GkrPkObjectClass parent_class;
-};
-
-GType gkr_pk_pubkey_get_type (void) G_GNUC_CONST;
-
-GkrPkObject* gkr_pk_pubkey_new (GkrPkObjectManager *manager,
- GQuark location, gcry_sexp_t s_key);
-
-GkrPkPubkey* gkr_pk_pubkey_instance (GkrPkObjectManager* manager,
- GQuark location, gcry_sexp_t s_key);
-
-CK_RV gkr_pk_pubkey_create (GkrPkObjectManager* manager,
- GArray* array, GkrPkObject **object);
-
-gkrconstid gkr_pk_pubkey_get_keyid (GkrPkPubkey *key);
-
-gcry_sexp_t gkr_pk_pubkey_get_key (GkrPkPubkey *key);
-
-int gkr_pk_pubkey_get_algorithm (GkrPkPubkey *key);
-
-G_END_DECLS
-
-#endif /* __GKR_PK_PUBKEY_H__ */
diff --git a/pk/gkr-pk-util.c b/pk/gkr-pk-util.c
deleted file mode 100644
index 37ba8837..00000000
--- a/pk/gkr-pk-util.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-util.c - miscellaneous utilities for dealing with PKCS#11
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pk-util.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-#include "pkcs11/pkcs11n.h"
-
-#include <glib.h>
-
-#include <stdio.h>
-
-GkrPkDataType
-gkr_pk_attribute_data_type (CK_ATTRIBUTE_TYPE type)
-{
- switch(type)
- {
- /* CK_ULONG attribute types */
- case CKA_CLASS:
- case CKA_CERTIFICATE_TYPE:
- case CKA_CERTIFICATE_CATEGORY:
- case CKA_KEY_TYPE:
- case CKA_MODULUS_BITS:
- case CKA_PRIME_BITS:
- /* case CKA_SUBPRIME_BITS: */
- case CKA_SUB_PRIME_BITS:
- case CKA_VALUE_BITS:
- case CKA_VALUE_LEN:
- case CKA_KEY_GEN_MECHANISM:
- case CKA_HW_FEATURE_TYPE:
- case CKA_PIXEL_X:
- case CKA_PIXEL_Y:
- case CKA_RESOLUTION:
- case CKA_CHAR_ROWS:
- case CKA_CHAR_COLUMNS:
- case CKA_BITS_PER_PIXEL:
- case CKA_MECHANISM_TYPE:
- case CKA_JAVA_MIDP_SECURITY_DOMAIN:
- case CKA_TRUST_DIGITAL_SIGNATURE:
- case CKA_TRUST_NON_REPUDIATION:
- case CKA_TRUST_KEY_ENCIPHERMENT:
- case CKA_TRUST_DATA_ENCIPHERMENT:
- case CKA_TRUST_KEY_AGREEMENT:
- case CKA_TRUST_KEY_CERT_SIGN:
- case CKA_TRUST_CRL_SIGN:
- case CKA_TRUST_SERVER_AUTH:
- case CKA_TRUST_CLIENT_AUTH:
- case CKA_TRUST_CODE_SIGNING:
- case CKA_TRUST_EMAIL_PROTECTION:
- case CKA_TRUST_IPSEC_END_SYSTEM:
- case CKA_TRUST_IPSEC_TUNNEL:
- case CKA_TRUST_IPSEC_USER:
- case CKA_TRUST_TIME_STAMPING:
- case CKA_GNOME_USER_TRUST:
- return GKR_PK_DATA_ULONG;
-
- /* CK_BBOOL attribute types */
- case CKA_TOKEN:
- case CKA_PRIVATE:
- case CKA_MODIFIABLE:
- case CKA_TRUSTED:
- case CKA_SENSITIVE:
- case CKA_DECRYPT:
- case CKA_SIGN:
- case CKA_SIGN_RECOVER:
- case CKA_UNWRAP:
- case CKA_EXTRACTABLE:
- case CKA_NEVER_EXTRACTABLE:
- case CKA_ALWAYS_SENSITIVE:
- case CKA_WRAP_WITH_TRUSTED:
- case CKA_ALWAYS_AUTHENTICATE:
- case CKA_ENCRYPT:
- case CKA_WRAP:
- case CKA_VERIFY:
- case CKA_VERIFY_RECOVER:
- case CKA_DERIVE:
- case CKA_LOCAL:
- case CKA_RESET_ON_INIT:
- case CKA_HAS_RESET:
- case CKA_COLOR:
- case CKA_TRUST_STEP_UP_APPROVED:
- case CKA_GNOME_PURPOSE_RESTRICTED:
- case CKA_GNOME_PURPOSE_SSH_AUTH:
- case CKA_GNOME_PURPOSE_SERVER_AUTH:
- case CKA_GNOME_PURPOSE_CLIENT_AUTH:
- case CKA_GNOME_PURPOSE_CODE_SIGNING:
- case CKA_GNOME_PURPOSE_EMAIL_PROTECTION:
- case CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM:
- case CKA_GNOME_PURPOSE_IPSEC_TUNNEL:
- case CKA_GNOME_PURPOSE_IPSEC_USER:
- case CKA_GNOME_PURPOSE_TIME_STAMPING:
- return GKR_PK_DATA_BOOL;
-
- /* Raw or string data */
- case CKA_LABEL:
- case CKA_APPLICATION:
- case CKA_VALUE:
- case CKA_OBJECT_ID:
- case CKA_CHECK_VALUE:
- case CKA_ISSUER:
- case CKA_SERIAL_NUMBER:
- case CKA_SUBJECT:
- case CKA_ID:
- case CKA_URL:
- case CKA_HASH_OF_SUBJECT_PUBLIC_KEY:
- case CKA_HASH_OF_ISSUER_PUBLIC_KEY:
- case CKA_AC_ISSUER:
- case CKA_OWNER:
- case CKA_ATTR_TYPES:
- case CKA_MODULUS:
- case CKA_PUBLIC_EXPONENT:
- case CKA_PRIVATE_EXPONENT:
- case CKA_PRIME_1:
- case CKA_PRIME_2:
- case CKA_EXPONENT_1:
- case CKA_EXPONENT_2:
- case CKA_COEFFICIENT:
- case CKA_PRIME:
- case CKA_SUBPRIME:
- case CKA_BASE:
- case CKA_ECDSA_PARAMS:
- /* case CKA_EC_PARAMS: */
- case CKA_EC_POINT:
- case CKA_CHAR_SETS:
- case CKA_ENCODING_METHODS:
- case CKA_MIME_TYPES:
- case CKA_REQUIRED_CMS_ATTRIBUTES:
- case CKA_DEFAULT_CMS_ATTRIBUTES:
- case CKA_SUPPORTED_CMS_ATTRIBUTES:
- case CKA_CERT_SHA1_HASH:
- case CKA_CERT_MD5_HASH:
- case CKA_GNOME_PURPOSE_OIDS:
- case CKA_START_DATE:
- case CKA_END_DATE:
- return GKR_PK_DATA_BYTES;
-
- /* Arrays are nasty */
- case CKA_WRAP_TEMPLATE:
- case CKA_ALLOWED_MECHANISMS:
- case CKA_UNWRAP_TEMPLATE:
- default:
- return GKR_PK_DATA_UNKNOWN;
- };
-}
-
-CK_ATTRIBUTE_PTR
-gkr_pk_attribute_new (CK_ATTRIBUTE_TYPE type)
-{
- CK_ATTRIBUTE_PTR attr;
-
- attr = g_slice_new0 (CK_ATTRIBUTE);
- attr->type = type;
-
- return attr;
-}
-
-CK_ATTRIBUTE_PTR
-gkr_pk_attribute_dup (const CK_ATTRIBUTE_PTR attr)
-{
- CK_ATTRIBUTE_PTR nattr = gkr_pk_attribute_new (attr->type);
- gkr_pk_attribute_copy (nattr, attr);
- return nattr;
-}
-
-gboolean
-gkr_pk_attribute_equal (const CK_ATTRIBUTE_PTR one, const CK_ATTRIBUTE_PTR two)
-{
- if (one->type != two->type)
- return FALSE;
-
- if (one->ulValueLen != two->ulValueLen)
- return FALSE;
- if (one->pValue == two->pValue)
- return TRUE;
- if (!one->pValue || !two->pValue)
- return FALSE;
- return memcmp (one->pValue, two->pValue, one->ulValueLen) == 0;
-}
-
-void
-gkr_pk_attribute_steal (CK_ATTRIBUTE_PTR dest, CK_ATTRIBUTE_PTR attr)
-{
- g_assert (dest && attr);
- memcpy (dest, attr, sizeof (CK_ATTRIBUTE));
- memset (attr, 0, sizeof (CK_ATTRIBUTE));
- attr->type = dest->type;
-}
-
-void
-gkr_pk_attribute_copy (CK_ATTRIBUTE_PTR dest, const CK_ATTRIBUTE_PTR attr)
-{
- g_assert (dest && attr);
- gkr_pk_attribute_set_data (dest, attr->pValue, attr->ulValueLen);
- dest->type = attr->type;
-}
-
-void
-gkr_pk_attribute_set_invalid (CK_ATTRIBUTE_PTR attr)
-{
- g_assert (attr);
- gkr_pk_attribute_clear (attr);
- attr->ulValueLen = (CK_ULONG)-1;
-}
-
-void
-gkr_pk_attribute_set_data (CK_ATTRIBUTE_PTR attr, gconstpointer value, gsize n_value)
-{
- g_assert (attr);
-
- gkr_pk_attribute_clear (attr);
-
- attr->ulValueLen = n_value;
- if (n_value > 0) {
- g_assert (value);
- attr->pValue = g_malloc (n_value);
- memcpy (attr->pValue, value, n_value);
- }
-}
-
-void
-gkr_pk_attribute_set_string (CK_ATTRIBUTE_PTR attr, const gchar *str)
-{
- g_assert (attr);
- g_assert (str);
-
- gkr_pk_attribute_set_data (attr, str, strlen (str) + 1);
-}
-
-void
-gkr_pk_attribute_set_boolean (CK_ATTRIBUTE_PTR attr, CK_BBOOL value)
-{
- g_assert (attr);
-
- gkr_pk_attribute_clear (attr);
- attr->pValue = g_new (CK_BBOOL, 1);
- *((CK_BBOOL*)attr->pValue) = value;
- attr->ulValueLen = sizeof (CK_BBOOL);
-}
-
-void
-gkr_pk_attribute_set_date (CK_ATTRIBUTE_PTR attr, time_t time)
-{
- CK_DATE *date;
- struct tm tm;
- gchar buf[16];
-
- /* 'Empty' date as defined in PKCS#11 */
- if (time == (time_t)-1) {
- gkr_pk_attribute_set_data (attr, NULL, 0);
- return;
- }
-
- gkr_pk_attribute_clear (attr);
-
- if (!gmtime_r (&time, &tm))
- g_return_if_reached ();
-
- date = g_new0 (CK_DATE, 1);
-
- g_assert (sizeof (date->year) == 4);
- snprintf ((char*)buf, 5, "%04d", 1900 + tm.tm_year);
- memcpy (date->year, buf, 4);
-
- g_assert (sizeof (date->month) == 2);
- snprintf ((char*)buf, 3, "%02d", tm.tm_mon + 1);
- memcpy (date->month, buf, 2);
-
- g_assert (sizeof (date->day) == 2);
- snprintf ((char*)buf, 3, "%02d", tm.tm_mday);
- memcpy (date->day, buf, 2);
-
- attr->pValue = date;
- attr->ulValueLen = sizeof (CK_DATE);
-}
-
-void
-gkr_pk_attribute_set_id (CK_ATTRIBUTE_PTR attr, gkrconstid id)
-{
- const guchar* data;
- gsize n_data;
-
- g_assert (attr);
-
- data = gkr_id_get_raw (id, &n_data);
- g_return_if_fail (data && n_data);
-
- gkr_pk_attribute_set_data (attr, data, n_data);
-}
-
-void
-gkr_pk_attribute_set_ulong (CK_ATTRIBUTE_PTR attr, CK_ULONG value)
-{
- g_assert (attr);
-
- gkr_pk_attribute_clear (attr);
- attr->pValue = g_new (CK_ULONG, 1);
- *((CK_ULONG*)attr->pValue) = value;
- attr->ulValueLen = sizeof (CK_ULONG);
-}
-
-void
-gkr_pk_attribute_set_mpi (CK_ATTRIBUTE_PTR attr, gcry_mpi_t mpi)
-{
- gsize len;
- gcry_error_t gcry;
-
- g_assert (attr);
- g_assert (mpi);
-
- gkr_pk_attribute_clear (attr);
-
- /* Get the size */
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, NULL, 0, &len, mpi);
- g_return_if_fail (gcry == 0);
-
- if (!len)
- return;
-
- attr->pValue = g_malloc (len);
- attr->ulValueLen = len;
-
- /* Write in directly to attribute */
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, attr->pValue, len, &len, mpi);
- g_return_if_fail (gcry == 0);
-}
-
-gboolean
-gkr_pk_attribute_get_boolean (const CK_ATTRIBUTE_PTR attr, CK_BBOOL *value)
-{
- if (attr->ulValueLen != sizeof (CK_BBOOL))
- return FALSE;
- *value = *((const CK_BBOOL*)attr->pValue);
- return TRUE;
-}
-
-gboolean
-gkr_pk_attribute_get_ulong (const CK_ATTRIBUTE_PTR attr, CK_ULONG *value)
-{
- if (attr->ulValueLen != sizeof (CK_ULONG))
- return FALSE;
- *value = *((const CK_ULONG*)attr->pValue);
- return TRUE;
-}
-
-void
-gkr_pk_attribute_clear (CK_ATTRIBUTE_PTR attr)
-{
- if (attr->pValue) {
- g_assert (attr->ulValueLen > 0);
- g_assert (attr->ulValueLen != (CK_ULONG)-1);
- g_free (attr->pValue);
- attr->pValue = NULL;
- }
- attr->ulValueLen = 0;
-}
-
-void
-gkr_pk_attribute_free (gpointer v)
-{
- if (v) {
- CK_ATTRIBUTE_PTR attr = (CK_ATTRIBUTE_PTR)v;
- gkr_pk_attribute_clear (attr);
- g_slice_free (CK_ATTRIBUTE, attr);
- }
-}
-
-CK_ATTRIBUTE_PTR
-gkr_pk_attributes_find (const GArray* attrs, CK_ATTRIBUTE_TYPE type)
-{
- CK_ATTRIBUTE_PTR attr;
- guint i;
-
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- if (attr->type == type)
- return attr;
- }
-
- return NULL;
-}
-
-gboolean
-gkr_pk_attributes_ulong (const GArray* attrs, CK_ATTRIBUTE_TYPE type, CK_ULONG *value)
-{
- CK_ATTRIBUTE_PTR attr = gkr_pk_attributes_find (attrs, type);
- if (attr && attr->pValue && attr->ulValueLen == sizeof (CK_ULONG)) {
- *value = *((CK_ULONG*)attr->pValue);
- return TRUE;
- }
- return FALSE;
-}
-
-gboolean
-gkr_pk_attributes_boolean (const GArray* attrs, CK_ATTRIBUTE_TYPE type, CK_BBOOL *value)
-{
- CK_ATTRIBUTE_PTR attr = gkr_pk_attributes_find (attrs, type);
- if (attr && attr->pValue && attr->ulValueLen == sizeof (CK_BBOOL)) {
- *value = *((CK_BBOOL*)attr->pValue);
- return TRUE;
- }
- return FALSE;
-}
-
-gboolean
-gkr_pk_attributes_mpi (const GArray* attrs, CK_ATTRIBUTE_TYPE type, gcry_mpi_t *mpi)
-{
- CK_ATTRIBUTE_PTR attr;
- gcry_error_t gcry;
-
- attr = gkr_pk_attributes_find (attrs, type);
- if (attr && attr->pValue && attr->ulValueLen) {
- gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_USG, attr->pValue, attr->ulValueLen, NULL);
- return gcry == 0;
- }
- return FALSE;
-}
-
-void
-gkr_pk_attributes_append (GArray *attrs, CK_ATTRIBUTE_PTR attr)
-{
- g_array_append_vals (attrs, attr, 1);
- memset (attr, 0, sizeof (*attr));
-}
-
-void
-gkr_pk_attributes_free (GArray *attrs)
-{
- CK_ATTRIBUTE_PTR attr;
- guint i;
-
- if (!attrs)
- return;
-
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- gkr_pk_attribute_clear (attr);
- }
-
- g_array_free (attrs, TRUE);
-}
-
-gboolean
-gkr_pk_attribute_is_consumed (CK_ATTRIBUTE_PTR attr)
-{
- return attr->type == (CK_ULONG)-1;
-}
-
-void
-gkr_pk_attribute_consume (CK_ATTRIBUTE_PTR attr)
-{
- attr->type = (CK_ULONG)-1;
-}
-
-void
-gkr_pk_attributes_consume (GArray *attrs, ...)
-{
- CK_ATTRIBUTE_TYPE type;
- CK_ATTRIBUTE_PTR attr;
- GArray *types;
- guint i, j;
- va_list va;
-
- /* Convert the var args into an array */
- types = g_array_new (FALSE, TRUE, sizeof (CK_ATTRIBUTE_TYPE));
- va_start (va, attrs);
- while ((type = va_arg (va, CK_ATTRIBUTE_TYPE)) != (CK_ULONG)-1)
- g_array_append_val (types, type);
- va_end (va);
-
- /* Consume each attribute whose type was in the var args */
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- if (gkr_pk_attribute_is_consumed (attr))
- continue;
- for (j = 0; j < types->len; ++j) {
- if (attr->type == g_array_index (types, CK_ATTRIBUTE_TYPE, j)) {
- gkr_pk_attribute_consume (attr);
- break;
- }
- }
- }
-
- g_array_free (types, TRUE);
-}
-
-gboolean
-gkc_pk_class_is_private (CK_OBJECT_CLASS cls)
-{
- switch (cls) {
- case CKO_PRIVATE_KEY:
- case CKO_SECRET_KEY:
- return TRUE;
- default:
- return FALSE;
- }
-}
diff --git a/pk/gkr-pk-util.h b/pk/gkr-pk-util.h
deleted file mode 100644
index aaa605fe..00000000
--- a/pk/gkr-pk-util.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pk-util.h - miscellaneous utilities for dealing with PKCS#11
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKUTIL_H_
-#define GKRPKUTIL_H_
-
-#include <glib.h>
-#include <gcrypt.h>
-
-#include "common/gkr-id.h"
-
-#include "pkcs11/pkcs11.h"
-
-typedef enum {
- GKR_PK_DATA_UNKNOWN = 0,
- GKR_PK_DATA_BOOL,
- GKR_PK_DATA_ULONG,
- GKR_PK_DATA_BYTES
-} GkrPkDataType;
-
-GkrPkDataType gkr_pk_attribute_data_type (CK_ATTRIBUTE_TYPE type);
-
-CK_ATTRIBUTE_PTR gkr_pk_attribute_new (CK_ATTRIBUTE_TYPE type);
-
-CK_ATTRIBUTE_PTR gkr_pk_attribute_dup (const CK_ATTRIBUTE_PTR attr);
-
-gint gkr_pk_attribute_equal (const CK_ATTRIBUTE_PTR one,
- const CK_ATTRIBUTE_PTR two);
-
-void gkr_pk_attribute_free (gpointer attr);
-
-void gkr_pk_attribute_copy (CK_ATTRIBUTE_PTR dest, const CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attribute_steal (CK_ATTRIBUTE_PTR dest, CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attribute_clear (CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attribute_set_invalid (CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attribute_set_data (CK_ATTRIBUTE_PTR attr, gconstpointer value,
- gsize n_value);
-
-void gkr_pk_attribute_set_string (CK_ATTRIBUTE_PTR attr, const gchar *str);
-
-void gkr_pk_attribute_set_id (CK_ATTRIBUTE_PTR attr, gkrconstid id);
-
-void gkr_pk_attribute_set_boolean (CK_ATTRIBUTE_PTR attr, CK_BBOOL value);
-
-void gkr_pk_attribute_set_date (CK_ATTRIBUTE_PTR attr, time_t time);
-
-void gkr_pk_attribute_set_ulong (CK_ATTRIBUTE_PTR attr, CK_ULONG value);
-
-void gkr_pk_attribute_set_mpi (CK_ATTRIBUTE_PTR attr, gcry_mpi_t mpi);
-
-gboolean gkr_pk_attribute_get_boolean (const CK_ATTRIBUTE_PTR attr, CK_BBOOL *value);
-
-gboolean gkr_pk_attribute_get_ulong (const CK_ATTRIBUTE_PTR attr, CK_ULONG *value);
-
-#define gkr_pk_attributes_new() (g_array_new (0, 1, sizeof (CK_ATTRIBUTE)))
-
-CK_ATTRIBUTE_PTR gkr_pk_attributes_find (const GArray* attrs, CK_ATTRIBUTE_TYPE type);
-
-gboolean gkr_pk_attributes_ulong (const GArray* attrs, CK_ATTRIBUTE_TYPE type,
- CK_ULONG *value);
-
-gboolean gkr_pk_attributes_boolean (const GArray* attrs, CK_ATTRIBUTE_TYPE type,
- CK_BBOOL *value);
-
-gboolean gkr_pk_attributes_mpi (const GArray* attrs, CK_ATTRIBUTE_TYPE type,
- gcry_mpi_t *mpi);
-
-void gkr_pk_attributes_append (GArray *attrs, CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attributes_free (GArray *attrs);
-
-/*
- * 'Consumption' of attributes is used during setting of a set of attributes
- * on an object, those that have been handled somewhere are marked consumed.
- * This is useful for fallback handling. See gkr_pk_object_set_attribute().
- */
-gboolean gkr_pk_attribute_is_consumed (const CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attribute_consume (CK_ATTRIBUTE_PTR attr);
-
-void gkr_pk_attributes_consume (GArray *attrs, ...);
-
-/* Certain object classes are intrinsically private */
-gboolean gkc_pk_class_is_private (CK_OBJECT_CLASS cls);
-
-#endif /*GKRPKUTIL_H_*/
diff --git a/pk/tests/Makefile.am b/pk/tests/Makefile.am
deleted file mode 100644
index 5d2f2dcb..00000000
--- a/pk/tests/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-
-UNIT_AUTO = \
- unit-test-pk-index.c \
- unit-test-pk-cert.c \
- unit-test-pk-key.c \
- unit-test-pk-netscape-trust.c
-
-UNIT_PROMPT =
-
-UNIT_LIBS = \
- $(top_builddir)/pk/libgkr-pk.la \
- $(top_builddir)/keyrings/libgkr-keyrings.la \
- $(top_builddir)/library/libgnome-keyring-common.la \
- $(top_builddir)/common/libgkr-common.la
-
-EXTRA_DIST = \
- check-attribute.c \
- test-data
-
-include $(top_srcdir)/tests/test.make
diff --git a/pk/tests/check-attribute.c b/pk/tests/check-attribute.c
deleted file mode 100644
index b69bb508..00000000
--- a/pk/tests/check-attribute.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef CHECKATTRIBUTE_H_
-#define CHECKATTRIBUTE_H_
-
-#include "pk/gkr-pk-util.h"
-
-static void
-check_attribute (CuTest *cu, GkrPkObject *obj, CK_ATTRIBUTE_TYPE type,
- const char* name, gpointer value, gsize len)
-{
- CK_ATTRIBUTE attr;
- CK_RV ret;
-
- memset (&attr, 0, sizeof (attr));
- attr.type = type;
-
- ret = gkr_pk_object_get_attribute (obj, &attr);
- CuAssert (cu, name, ret == CKR_OK);
- CuAssert (cu, name, attr.type == type);
-
- CuAssert (cu, name, attr.ulValueLen = len);
- if (len >= 0)
- CuAssert (cu, name, memcmp (attr.pValue, value, len) == 0);
-}
-
-#define CHECK_BOOL_ATTRIBUTE(cu, obj, type, value) { \
- CK_BBOOL v = value; \
- check_attribute (cu, GKR_PK_OBJECT (obj), type, #type, &v, sizeof (CK_BBOOL)); \
-}
-
-#define CHECK_ULONG_ATTRIBUTE(cu, obj, type, value) { \
- CK_ULONG v = value; \
- check_attribute (cu, GKR_PK_OBJECT (obj), type, #type, &v, sizeof (CK_ULONG)); \
-}
-
-#define CHECK_BYTE_ATTRIBUTE(cu, obj, type, val, length) \
- check_attribute (cu, GKR_PK_OBJECT (obj), type, #type, val, length)
-
-#define CHECK_DATE_ATTRIBUTE(cu, obj, type, str) { \
- CK_ATTRIBUTE test = { 0, NULL, 0 }; \
- struct tm tm; \
- time_t time; \
- GDate *date = g_date_new (); \
- g_date_set_parse (date, str); \
- g_date_to_struct_tm (date, &tm); \
- time = timegm (&tm); \
- g_date_free (date); \
- gkr_pk_attribute_set_date (&test, time); \
- check_attribute (cu, GKR_PK_OBJECT (obj), type, #type, test.pValue, test.ulValueLen); \
- gkr_pk_attribute_clear (&test); \
-}
-
-#endif /*CHECKATTRIBUTE_H_*/
diff --git a/pk/tests/test-data/certificate-1.crt b/pk/tests/test-data/certificate-1.crt
deleted file mode 100644
index c76498fc..00000000
--- a/pk/tests/test-data/certificate-1.crt
+++ /dev/null
Binary files differ
diff --git a/pk/tests/test-data/certificate-2.crt b/pk/tests/test-data/certificate-2.crt
deleted file mode 100644
index 5658a20c..00000000
--- a/pk/tests/test-data/certificate-2.crt
+++ /dev/null
Binary files differ
diff --git a/pk/tests/test-data/privkey-1.key b/pk/tests/test-data/privkey-1.key
deleted file mode 100644
index c963247b..00000000
--- a/pk/tests/test-data/privkey-1.key
+++ /dev/null
Binary files differ
diff --git a/pk/tests/test-data/privkey-3.key b/pk/tests/test-data/privkey-3.key
deleted file mode 100644
index 61af5251..00000000
--- a/pk/tests/test-data/privkey-3.key
+++ /dev/null
Binary files differ
diff --git a/pk/tests/unit-test-memory-stubs.c b/pk/tests/unit-test-memory-stubs.c
deleted file mode 100644
index dee8cac2..00000000
--- a/pk/tests/unit-test-memory-stubs.c
+++ /dev/null
@@ -1,27 +0,0 @@
-
-#include <glib.h>
-
-#include "common/gkr-secure-memory.h"
-
-/*
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
-
-}
-
-void
-gkr_memory_unlock (void)
-{
-
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- return g_realloc (p, sz);
-}
diff --git a/pk/tests/unit-test-pk-cert.c b/pk/tests/unit-test-pk-cert.c
deleted file mode 100644
index 4a5be0fd..00000000
--- a/pk/tests/unit-test-pk-cert.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pk-cert.c: Test a certificate
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "pk/gkr-pk-cert.h"
-#include "pk/gkr-pk-index.h"
-#include "pk/gkr-pk-object.h"
-#include "pk/gkr-pk-object-manager.h"
-#include "pk/gkr-pk-pubkey.h"
-#include "pk/gkr-pk-privkey.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <memory.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-static GkrPkObjectManager *manager = NULL;
-
-static GkrPkCert *certificate_1 = NULL;
-static GkrPkCert *certificate_2 = NULL;
-static GkrPkObject *privkey_1 = NULL;
-
-void unit_setup_certificate (void)
-{
- /* Our own object manager */
- manager = gkr_pk_object_manager_instance_for_client (1231);
-}
-
-void unit_test_create_certificate (CuTest* cu)
-{
- GkrPkixResult res;
- ASN1_TYPE asn1;
- gcry_sexp_t sexp;
- gchar *data;
- const guchar *raw;
- gsize n_data, n_raw;
-
- if (!g_file_get_contents ("test-data/certificate-1.crt", &data, &n_data, NULL))
- g_error ("couldn't read certificate-1.crt");
- res = gkr_pkix_der_read_certificate ((const guchar*)data, n_data, &asn1);
- g_assert (res == GKR_PKIX_SUCCESS);
-
- certificate_1 = gkr_pk_cert_new (manager, 0, asn1);
- CuAssert (cu, "gkr_pk_cert_new returned bad object", GKR_IS_PK_CERT (certificate_1));
-
- if (!g_file_get_contents ("test-data/privkey-1.key", &data, &n_data, NULL))
- g_error ("couldn't read privkey-1.key");
- res = gkr_pkix_der_read_private_key ((const guchar*)data, n_data, &sexp);
- g_assert (res == GKR_PKIX_SUCCESS);
-
- privkey_1 = gkr_pk_privkey_new (manager, 0, sexp);
- g_assert (GKR_IS_PK_PRIVKEY (privkey_1));
-
- if (!g_file_get_contents ("test-data/certificate-2.crt", &data, &n_data, NULL))
- g_error ("couldn't read certificate-2.crt");
- res = gkr_pkix_der_read_certificate ((const guchar*)data, n_data, &asn1);
- g_assert (res == GKR_PKIX_SUCCESS);
-
- certificate_2 = gkr_pk_cert_new (manager, 0, asn1);
- CuAssert (cu, "gkr_pk_cert_new returned bad object", GKR_IS_PK_CERT (certificate_2));
-
- raw = gkr_pk_cert_get_raw (certificate_2, &n_raw);
- CuAssert (cu, "gkr_pk_cert_get_raw returned null", raw != NULL);
- CuAssert (cu, "bad raw length of certificate", n_raw == n_data);
- CuAssert (cu, "raw certificate does not equal original", memcmp (raw, data, n_raw) == 0);
-}
-
-#include "check-attribute.c"
-
-void unit_test_certificate_static (CuTest *cu)
-{
- CHECK_DATE_ATTRIBUTE (cu, certificate_1, CKA_START_DATE, "2007-12-20");
- CHECK_DATE_ATTRIBUTE (cu, certificate_1, CKA_END_DATE, "2008-01-19");
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_TOKEN, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_MODIFIABLE, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_PRIVATE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_TRUSTED, CK_FALSE);
- CHECK_ULONG_ATTRIBUTE (cu, certificate_1, CKA_CLASS, CKO_CERTIFICATE);
- CHECK_ULONG_ATTRIBUTE (cu, certificate_1, CKA_CERTIFICATE_CATEGORY, 0);
- CHECK_ULONG_ATTRIBUTE (cu, certificate_1, CKA_CERTIFICATE_TYPE, CKC_X_509);
-}
-
-void unit_test_certificate_related (CuTest *cu)
-{
- GkrPkObject *obj;
- gkrconstid keyid;
- gkrconstid pubid;
-
- keyid = gkr_pk_cert_get_keyid (certificate_1);
- CuAssert (cu, "No key id returned from certificate", keyid != NULL);
-
- obj = gkr_pk_object_manager_find_by_id (manager, GKR_TYPE_PK_PUBKEY, keyid);
- CuAssert (cu, "No matching public key object found in manager", GKR_IS_PK_PUBKEY (obj));
-
- pubid = gkr_pk_pubkey_get_keyid (GKR_PK_PUBKEY (obj));
- CuAssert (cu, "No key id returned from public key", pubid != NULL);
-
- CuAssert (cu, "certificate and public key ids do not match", gkr_id_equals (keyid, pubid));
-}
-
-void unit_test_certificate_extension (CuTest *cu)
-{
- guchar *extension;
- gsize n_extension;
- gboolean ret, critical;
- GQuark oid;
-
- /* Enhanced key usage */
- oid = g_quark_from_string ("2.5.29.37");
- ret = gkr_pk_cert_has_extension (certificate_1, oid, &critical);
- CuAssert (cu, "couldn't find extension in certificate", ret == TRUE);
- CuAssert (cu, "non critical extension marked critical", critical == FALSE);
-
- extension = gkr_pk_cert_get_extension (certificate_1, oid, &n_extension, &critical);
- CuAssert (cu, "couldn't get extension in certificate", extension != NULL);
- CuAssert (cu, "non critical extension marked critical", critical == FALSE);
- CuAssert (cu, "extension has bad size", n_extension > 8);
-
- /* Basic constraints, critical */
- oid = g_quark_from_string ("2.5.29.19");
- ret = gkr_pk_cert_has_extension (certificate_2, oid, &critical);
- CuAssert (cu, "couldn't find extension in certificate", ret == TRUE);
- CuAssert (cu, "critical extension not marked critical", critical == TRUE);
-}
-
-void unit_test_certificate_trust (CuTest *cu)
-{
- /* Should be trusted because we have the private key */
- CHECK_ULONG_ATTRIBUTE (cu, certificate_1, CKA_GNOME_USER_TRUST, CKT_GNOME_TRUSTED);
-
- /* Should be unknown trust because it's just on its own */
- CHECK_ULONG_ATTRIBUTE (cu, certificate_2, CKA_GNOME_USER_TRUST, CKT_GNOME_UNKNOWN);
-
- /* Mark as trusted */
- /* TODO: Should do this via attribute once writable */
- gkr_pk_index_set_string (GKR_PK_OBJECT (certificate_2), "user-trust", "trusted");
- CHECK_ULONG_ATTRIBUTE (cu, certificate_2, CKA_GNOME_USER_TRUST, CKT_GNOME_TRUSTED);
-
- /* Should return to previous state */
- /* TODO: Should do this via attribute once writable */
- gkr_pk_index_delete (GKR_PK_OBJECT (certificate_2), "user-trust");
- CHECK_ULONG_ATTRIBUTE (cu, certificate_2, CKA_GNOME_USER_TRUST, CKT_GNOME_UNKNOWN);
-
- /* Mark as untrusted */
- /* TODO: Should do this via attribute once writable */
- gkr_pk_index_set_string (GKR_PK_OBJECT (certificate_1), "user-trust", "untrusted");
- CHECK_ULONG_ATTRIBUTE (cu, certificate_1, CKA_GNOME_USER_TRUST, CKT_GNOME_UNTRUSTED);
-}
-
-void unit_test_certificate_purpose (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- CK_RV ret;
- gchar *result;
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_GNOME_PURPOSE_OIDS;
-
- ret = gkr_pk_object_get_attribute (GKR_PK_OBJECT (certificate_1), &attr);
- CuAssert (cu, "Returned null attribute", attr.pValue != NULL);
- CuAssert (cu, "Returned empty attribute", attr.ulValueLen != 0);
- result = g_strndup (attr.pValue, attr.ulValueLen);
- g_strstrip (result);
- CuAssert (cu, "Returned invalid oid in purpose", g_str_equal (result, "1.3.6.1.5.5.7.3.4"));
-
- /* Only email protection is valid */
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_RESTRICTED, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_EMAIL_PROTECTION, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_SSH_AUTH, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_SERVER_AUTH, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_CLIENT_AUTH, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_CODE_SIGNING, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_IPSEC_TUNNEL, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_IPSEC_USER, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_1, CKA_GNOME_PURPOSE_TIME_STAMPING, CK_FALSE);
-
- /* The second certificate has no purposes, all are valid */
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_RESTRICTED, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_EMAIL_PROTECTION, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_SSH_AUTH, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_SERVER_AUTH, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_CLIENT_AUTH, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_CODE_SIGNING, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_IPSEC_TUNNEL, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_IPSEC_USER, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_TIME_STAMPING, CK_TRUE);
-
-
- /* Add a purpose */
- /* TODO: Should do this via attribute once writable */
- gkr_pk_index_set_string (GKR_PK_OBJECT (certificate_2), "purposes", "some-purpose");
- CHECK_BOOL_ATTRIBUTE (cu, certificate_2, CKA_GNOME_PURPOSE_RESTRICTED, CK_TRUE);
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_GNOME_PURPOSE_OIDS;
-
- ret = gkr_pk_object_get_attribute (GKR_PK_OBJECT (certificate_2), &attr);
- CuAssert (cu, "Returned null attribute", attr.pValue != NULL);
- CuAssert (cu, "Returned empty attribute", attr.ulValueLen != 0);
- result = g_strndup (attr.pValue, attr.ulValueLen);
- g_strstrip (result);
- CuAssert (cu, "Returned invalid oid in purpose", g_str_equal (result, "some-purpose"));
-}
-
-void unit_test_certificate_set_attribute (CuTest *cu)
-{
- GkrPkObject *obj = GKR_PK_OBJECT (certificate_1);
- CK_RV ret;
-
- /* Should succeed if twe change class to itself */
- ret = gkr_pk_object_set_ulong (obj, CKA_CLASS, CKO_CERTIFICATE);
- CuAssert (cu, "Should allow setting readonly attribute to same value", ret == CKR_OK);
-
- /* Shouldn't succeed if twe change class to different */
- ret = gkr_pk_object_set_ulong (obj, CKA_CLASS, CKO_PRIVATE_KEY);
- CuAssert (cu, "Shouldn't allow changing readonly attribute", ret == CKR_ATTRIBUTE_READ_ONLY);
-
- /* Should return readonly when no setter exists on object */
- ret = gkr_pk_object_set_ulong (obj, CKA_CERTIFICATE_TYPE, CKC_WTLS);
- CuAssert (cu, "Shouldn't allow changing readonly attribute", ret == CKR_ATTRIBUTE_READ_ONLY);
-
- /* Should return invalid when no getter or setter exists on object */
- ret = gkr_pk_object_set_ulong (obj, CKA_PIXEL_X, 5);
- CuAssert (cu, "Shouldn't allow changing readonly attribute", ret == CKR_ATTRIBUTE_TYPE_INVALID);
-
- /* Should return value invalid when setting wrong type data */
- ret = gkr_pk_object_set_ulong (obj, CKA_PRIVATE, 5);
- CuAssert (cu, "Shouldn't allow changing readonly attribute", ret == CKR_ATTRIBUTE_VALUE_INVALID);
-}
-
-void unit_test_certificate_create (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- GkrPkObject *object;
- GArray *attrs;
- const guchar *raw;
- gsize n_raw;
- CK_RV ret;
-
- attrs = gkr_pk_attributes_new ();
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_CERTIFICATE);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Try to create as with a set of invalid attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Certificate creation succeeded wrongly", ret == CKR_TEMPLATE_INCOMPLETE);
-
- gkr_pk_attributes_free (attrs);
- attrs = gkr_pk_attributes_new ();
-
- attr.type = CKA_TOKEN;
- gkr_pk_attribute_set_boolean (&attr, CK_FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_LABEL;
- gkr_pk_attribute_set_string (&attr, "A test label");
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_VALUE;
- raw = gkr_pk_cert_get_raw (certificate_1, &n_raw);
- gkr_pk_attribute_set_data (&attr, raw, n_raw);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_CERTIFICATE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_CERTIFICATE_TYPE;
- gkr_pk_attribute_set_ulong (&attr, CKC_X_509);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Now try with a proper set of attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Certificate creation failed", ret == CKR_OK);
- CuAssert (cu, "Returned invalid object", GKR_IS_PK_CERT (object));
-
- gkr_pk_attributes_free (attrs);
-
- /* Free the certificate */
- g_object_unref (object);
-
-}
diff --git a/pk/tests/unit-test-pk-index.c b/pk/tests/unit-test-pk-index.c
deleted file mode 100644
index 962f2ae8..00000000
--- a/pk/tests/unit-test-pk-index.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pk-index.c: Test PK Indexes
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "pk/gkr-pk-index.h"
-#include "pk/gkr-pk-object.h"
-
-#include "common/gkr-id.h"
-#include "common/gkr-location.h"
-
-#include <glib.h>
-#include <memory.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-#define DATA ((guchar*)"aosentuhsao")
-#define DATA_L (strlen ((gchar*)DATA))
-
-#define STR "a test string"
-
-static GkrPkObject *object = NULL;
-
-void unit_setup_index (void)
-{
- /* This is just any arbitrary data */
- gkrid id = gkr_id_new (DATA, DATA_L);
- GQuark location = gkr_location_from_child (GKR_LOCATION_VOLUME_LOCAL, "woof");
-
- object = g_object_new (GKR_TYPE_PK_OBJECT, "location", location, "digest", id, NULL);
- gkr_pk_index_clear (object);
-}
-
-void unit_test_index_binary (CuTest* cu)
-{
- gboolean ret;
- guchar *data;
- gsize n_data;
-
- /* Test binary */
- ret = gkr_pk_index_set_binary (object, "field", DATA, DATA_L);
- CuAssert (cu, "set_binary returned false", ret);
-
- data = gkr_pk_index_get_binary (object, "field", &n_data);
- CuAssert (cu, "get_binary returned no data", data != NULL);
- CuAssert (cu, "get_binary returned bad length data", n_data == DATA_L);
- CuAssert (cu, "get_binary returned wrong data", memcmp (data, DATA, DATA_L) == 0);
-}
-
-void unit_test_index_string (CuTest *cu)
-{
- gchar *str;
- gboolean ret;
-
- /* Test strings */
- ret = gkr_pk_index_set_string (object, "string", STR);
- CuAssert (cu, "set_string returned false", ret);
-
- str = gkr_pk_index_get_string (object, "string");
- CuAssert (cu, "get_string returned no string", str != NULL);
- CuAssert (cu, "get_string returned wrong string", strcmp (str, STR) == 0);
-}
-
-void unit_test_index_int (CuTest *cu)
-{
- gint val;
- gboolean ret;
-
- ret = gkr_pk_index_set_int (object, "intval", 23423523);
- CuAssert (cu, "set_int returned false", ret);
-
- val = gkr_pk_index_get_int (object, "intval", 0);
- CuAssert (cu, "get_int returned wrong value", val == 23423523);
-
- val = gkr_pk_index_get_int (object, "nonexistant", 35);
- CuAssert (cu, "get_int didn't return default", val == 35);
-}
-
-void unit_test_index_boolean (CuTest *cu)
-{
- gboolean val;
- gboolean ret;
-
- ret = gkr_pk_index_set_boolean (object, "boolval", TRUE);
- CuAssert (cu, "set_boolean returned false", ret);
-
- val = gkr_pk_index_get_boolean (object, "boolval", 0);
- CuAssert (cu, "get_boolean returned wrong value", val == TRUE);
-
- val = gkr_pk_index_get_boolean (object, "nonexistant", TRUE);
- CuAssert (cu, "get_boolean didn't return default", val == TRUE);
-}
-
-void unit_test_index_quarks (CuTest *cu)
-{
- GQuark *quarks;
- GQuark *output;
- gboolean ret;
- gint i;
-
- quarks = g_new0 (GQuark, 5);
- for (i = 0; i < 4; ++i)
- quarks[i] = g_quark_from_static_string ("blah");
-
- ret = gkr_pk_index_set_quarks (object, "quarks", quarks);
- CuAssert (cu, "set_quarks returned false", ret);
-
- /* A second time which exercises internals to not write same value twice */
- ret = gkr_pk_index_set_quarks (object, "quarks", quarks);
- CuAssert (cu, "set_quarks returned false", ret);
-
- output = gkr_pk_index_get_quarks (object, "quarks");
- CuAssert (cu, "get_quarks returned null", output != NULL);
-
- for (i = 0; i < 4; ++i)
- CuAssert (cu, "returned quark is different", quarks[i] == output[i]);
-
- output = gkr_pk_index_get_quarks (object, "nonexistant");
- CuAssert (cu, "get_quarks didn't return null", output == NULL);
-}
-
-void unit_test_index_delete (CuTest *cu)
-{
- gboolean ret;
- gboolean val;
-
- ret = gkr_pk_index_delete (object, "boolval");
- CuAssert (cu, "delete returned false", ret);
-
- val = gkr_pk_index_get_boolean (object, "boolval", FALSE);
- CuAssert (cu, "delete didn't work", val == FALSE);
-
- ret = gkr_pk_index_delete (object, "nonexistant");
- CuAssert (cu, "delete returned false", ret);
-}
-
-void unit_test_index_all (CuTest *cu)
-{
- gboolean ret;
-
- ret = gkr_pk_index_have (object);
- CuAssert (cu, "didn't find anything for object", ret);
-
- gkr_pk_index_clear (object);
-
- ret = gkr_pk_index_have (object);
- CuAssert (cu, "clear didn't work", !ret);
-}
diff --git a/pk/tests/unit-test-pk-key.c b/pk/tests/unit-test-pk-key.c
deleted file mode 100644
index d452d67e..00000000
--- a/pk/tests/unit-test-pk-key.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pk-key.c: Test public and private keys
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-crypto.h"
-
-#include "pk/gkr-pk-index.h"
-#include "pk/gkr-pk-object.h"
-#include "pk/gkr-pk-object-manager.h"
-#include "pk/gkr-pk-pubkey.h"
-#include "pk/gkr-pk-privkey.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <memory.h>
-#include <gcrypt.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-static GkrPkObjectManager *manager = NULL;
-
-static GkrPkObject *privkey_1 = NULL;
-static GkrPkObject *privkey_3 = NULL;
-static GkrPkObject *pubkey_1 = NULL;
-
-void unit_setup_keys (void)
-{
- gkr_crypto_setup ();
-
- /* Our own object manager */
- manager = gkr_pk_object_manager_instance_for_client (1232);
-}
-
-void unit_test_create_keys (CuTest* cu)
-{
- GkrPkixResult res;
- gcry_sexp_t sexp;
- gchar *data;
- gsize n_data;
-
- if (!g_file_get_contents ("test-data/privkey-1.key", &data, &n_data, NULL))
- g_error ("couldn't read privkey-1.key");
- res = gkr_pkix_der_read_private_key ((const guchar*)data, n_data, &sexp);
- g_assert (res == GKR_PKIX_SUCCESS);
-
- privkey_1 = gkr_pk_privkey_new (manager, 0, sexp);
- g_assert (GKR_IS_PK_PRIVKEY (privkey_1));
-
- /* Should automatically create a public key */
- pubkey_1 = GKR_PK_OBJECT (gkr_pk_privkey_get_public (GKR_PK_PRIVKEY (privkey_1)));
- if (!pubkey_1)
- g_error ("couldn't get public key");
-
- if (!g_file_get_contents ("test-data/privkey-3.key", &data, &n_data, NULL))
- g_error ("couldn't read privkey-3.key");
- res = gkr_pkix_der_read_private_key ((const guchar*)data, n_data, &sexp);
- g_assert (res == GKR_PKIX_SUCCESS);
-
- privkey_3 = gkr_pk_privkey_new (manager, 0, sexp);
- g_assert (GKR_IS_PK_PRIVKEY (privkey_3));
-}
-
-#include "check-attribute.c"
-
-void unit_test_privkey_static (CuTest *cu)
-{
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_TOKEN, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_PRIVATE, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_DECRYPT, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_SENSITIVE, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_SIGN, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_SIGN_RECOVER, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_WRAP_WITH_TRUSTED, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_DERIVE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_EXTRACTABLE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_UNWRAP, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_GNOME_PURPOSE_SSH_AUTH, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_ALWAYS_SENSITIVE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_LOCAL, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_NEVER_EXTRACTABLE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, privkey_1, CKA_ALWAYS_AUTHENTICATE, CK_FALSE);
-
- CHECK_ULONG_ATTRIBUTE (cu, privkey_1, CKA_CLASS, CKO_PRIVATE_KEY);
- CHECK_ULONG_ATTRIBUTE (cu, privkey_1, CKA_KEY_TYPE, CKK_RSA);
- CHECK_ULONG_ATTRIBUTE (cu, privkey_1, CKA_KEY_GEN_MECHANISM, CK_UNAVAILABLE_INFORMATION);
-}
-
-void unit_test_pubkey_static (CuTest *cu)
-{
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_TOKEN, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_PRIVATE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_ENCRYPT, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_SENSITIVE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_EXTRACTABLE, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_VERIFY, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_VERIFY_RECOVER, CK_TRUE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_ALWAYS_AUTHENTICATE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_DERIVE, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_WRAP, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_WRAP_WITH_TRUSTED, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_TRUSTED, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, pubkey_1, CKA_LOCAL, CK_FALSE);
-
- CHECK_ULONG_ATTRIBUTE (cu, pubkey_1, CKA_CLASS, CKO_PUBLIC_KEY);
- CHECK_ULONG_ATTRIBUTE (cu, pubkey_1, CKA_KEY_TYPE, CKK_RSA);
- CHECK_ULONG_ATTRIBUTE (cu, pubkey_1, CKA_MODULUS_BITS, 2048);
-}
-
-void unit_test_privkey_related (CuTest *cu)
-{
- GkrPkObject *obj;
- gkrconstid keyid;
- gkrconstid pubid;
-
- keyid = gkr_pk_privkey_get_keyid (GKR_PK_PRIVKEY (privkey_1));
- CuAssert (cu, "No key id returned from private key", keyid != NULL);
-
- obj = gkr_pk_object_manager_find_by_id (manager, GKR_TYPE_PK_PUBKEY, keyid);
- CuAssert (cu, "No matching public key object found in manager", GKR_IS_PK_PUBKEY (obj));
-
- pubid = gkr_pk_pubkey_get_keyid (GKR_PK_PUBKEY (obj));
- CuAssert (cu, "No key id returned from public key", pubid != NULL);
-
- CuAssert (cu, "private and public key ids do not match", gkr_id_equals (keyid, pubid));
-}
-
-void unit_test_privkey_rsa_create (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- gcry_sexp_t skey;
- gcry_mpi_t mpi;
- GkrPkObject *object;
- GArray *attrs;
- CK_RV ret;
-
- attrs = gkr_pk_attributes_new ();
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_PRIVATE_KEY);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_KEY_TYPE;
- gkr_pk_attribute_set_ulong (&attr, CKK_RSA);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_MODULUS;
- if (gkr_pk_object_get_attribute (privkey_1, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PUBLIC_EXPONENT;
- if (gkr_pk_object_get_attribute (privkey_1, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- skey = gkr_pk_privkey_get_key (GKR_PK_PRIVKEY (privkey_1));
- CuAssert (cu, "private key has no internal key", skey != NULL);
-
- attr.type = CKA_PRIVATE_EXPONENT;
- if (!gkr_crypto_sexp_extract_mpi (skey, &mpi, "private-key", "d", NULL))
- g_assert (FALSE);
- gkr_pk_attribute_set_mpi (&attr, mpi);
- gcry_mpi_release (mpi);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PRIME_1;
- if (!gkr_crypto_sexp_extract_mpi (skey, &mpi, "private-key", "p", NULL))
- g_assert (FALSE);
- gkr_pk_attribute_set_mpi (&attr, mpi);
- gcry_mpi_release (mpi);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PRIME_2;
- if (!gkr_crypto_sexp_extract_mpi (skey, &mpi, "private-key", "q", NULL))
- g_assert (FALSE);
- gkr_pk_attribute_set_mpi (&attr, mpi);
- gcry_mpi_release (mpi);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Now try with a proper set of attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Private key creation failed", ret == CKR_OK);
- CuAssert (cu, "Returned invalid object", GKR_IS_PK_PRIVKEY (object));
-
- gkr_pk_attributes_free (attrs);
-
- /* Free the private key */
- g_object_unref (object);
-}
-
-void unit_test_pubkey_rsa_create (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- GkrPkObject *object;
- GArray *attrs;
- CK_RV ret;
-
- attrs = gkr_pk_attributes_new ();
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_PUBLIC_KEY);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_KEY_TYPE;
- gkr_pk_attribute_set_ulong (&attr, CKK_RSA);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_MODULUS;
- if (gkr_pk_object_get_attribute (privkey_1, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PUBLIC_EXPONENT;
- if (gkr_pk_object_get_attribute (privkey_1, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Now try with a proper set of attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Public key creation failed", ret == CKR_OK);
- CuAssert (cu, "Returned invalid object", GKR_IS_PK_PUBKEY (object));
-
- gkr_pk_attributes_free (attrs);
-
- /* Free the private key */
- g_object_unref (object);
-}
-
-void unit_test_privkey_dsa_create (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- gcry_sexp_t skey;
- gcry_mpi_t mpi;
- GkrPkObject *object;
- GArray *attrs;
- CK_RV ret;
-
- attrs = gkr_pk_attributes_new ();
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_PRIVATE_KEY);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_KEY_TYPE;
- gkr_pk_attribute_set_ulong (&attr, CKK_DSA);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PRIME;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_SUBPRIME;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_BASE;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- skey = gkr_pk_privkey_get_key (GKR_PK_PRIVKEY (privkey_3));
- CuAssert (cu, "private key has no internal key", skey != NULL);
-
- attr.type = CKA_VALUE;
- if (!gkr_crypto_sexp_extract_mpi (skey, &mpi, "private-key", "x", NULL))
- g_assert (FALSE);
- gkr_pk_attribute_set_mpi (&attr, mpi);
- gcry_mpi_release (mpi);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Now try with a proper set of attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Private key creation failed", ret == CKR_OK);
- CuAssert (cu, "Returned invalid object", GKR_IS_PK_PRIVKEY (object));
-
- gkr_pk_attributes_free (attrs);
-
- /* Free the private key */
- g_object_unref (object);
-}
-
-void unit_test_pubkey_dsa_create (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- GkrPkObject *object;
- GArray *attrs;
- gcry_sexp_t skey;
- gcry_mpi_t mpi;
- CK_RV ret;
-
- attrs = gkr_pk_attributes_new ();
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_CLASS;
- gkr_pk_attribute_set_ulong (&attr, CKO_PUBLIC_KEY);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_KEY_TYPE;
- gkr_pk_attribute_set_ulong (&attr, CKK_DSA);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_PRIME;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_SUBPRIME;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- attr.type = CKA_BASE;
- if (gkr_pk_object_get_attribute (privkey_3, &attr) != CKR_OK)
- g_assert (FALSE);
- gkr_pk_attributes_append (attrs, &attr);
-
- skey = gkr_pk_privkey_get_key (GKR_PK_PRIVKEY (privkey_3));
- CuAssert (cu, "private key has no internal key", skey != NULL);
-
- attr.type = CKA_VALUE;
- if (!gkr_crypto_sexp_extract_mpi (skey, &mpi, "private-key", "y", NULL))
- g_assert (FALSE);
- gkr_pk_attribute_set_mpi (&attr, mpi);
- gcry_mpi_release (mpi);
- gkr_pk_attributes_append (attrs, &attr);
-
- /* Now try with a proper set of attributes */
- ret = gkr_pk_object_create (manager, attrs, &object);
- CuAssert (cu, "Public key creation failed", ret == CKR_OK);
- CuAssert (cu, "Returned invalid object", GKR_IS_PK_PUBKEY (object));
-
- gkr_pk_attributes_free (attrs);
-
- /* Free the private key */
- g_object_unref (object);
-}
diff --git a/pk/tests/unit-test-pk-netscape-trust.c b/pk/tests/unit-test-pk-netscape-trust.c
deleted file mode 100644
index 45f647f1..00000000
--- a/pk/tests/unit-test-pk-netscape-trust.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pk-netscape-trust.c: Test a netscape trust object
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "pk/gkr-pk-cert.h"
-#include "pk/gkr-pk-index.h"
-#include "pk/gkr-pk-object.h"
-#include "pk/gkr-pk-object-manager.h"
-#include "pk/gkr-pk-netscape-trust.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11n.h"
-
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <memory.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-static GkrPkObjectManager *manager = NULL;
-static GkrPkCert *certificate_1 = NULL;
-static GkrPkCert *certificate_2 = NULL;
-static GkrPkObject *trust_1 = NULL;
-static GkrPkObject *trust_2 = NULL;
-
-void unit_setup_trust (void)
-{
- /* Our own object manager */
- manager = gkr_pk_object_manager_instance_for_client (12333);
-}
-
-void unit_test_create_trust (CuTest* cu)
-{
- gkrconstid keyid;
- GkrPkixResult res;
- ASN1_TYPE asn1;
- gchar *data;
- gsize n_data;
-
- if (!g_file_get_contents ("test-data/certificate-1.crt", &data, &n_data, NULL))
- g_error ("couldn't read certificate-1.crt");
- res = gkr_pkix_der_read_certificate ((const guchar*)data, n_data, &asn1);
- g_assert (res == GKR_PKIX_SUCCESS);
- certificate_1 = gkr_pk_cert_new (manager, 0, asn1);
- CuAssert (cu, "gkr_pk_cert_new returned bad object", GKR_IS_PK_CERT (certificate_1));
-
- /* Make sure this is trusted */
- gkr_pk_index_set_string (GKR_PK_OBJECT (certificate_1), "user-trust", "trusted");
- gkr_pk_index_delete (GKR_PK_OBJECT (certificate_1), "purposes");
-
- /* Should have created netscape trust companion object */
- keyid = gkr_pk_cert_get_keyid (certificate_1);
- trust_1 = gkr_pk_object_manager_find_by_id (manager, GKR_TYPE_PK_NETSCAPE_TRUST, keyid);
- CuAssert (cu, "No matching netscape trust object found in manager", GKR_IS_PK_NETSCAPE_TRUST (trust_1));
-
- if (!g_file_get_contents ("test-data/certificate-2.crt", &data, &n_data, NULL))
- g_error ("couldn't read certificate-2.crt");
- res = gkr_pkix_der_read_certificate ((const guchar*)data, n_data, &asn1);
- g_assert (res == GKR_PKIX_SUCCESS);
- certificate_2 = gkr_pk_cert_new (manager, 0, asn1);
- CuAssert (cu, "gkr_pk_cert_new returned bad object", GKR_IS_PK_CERT (certificate_2));
-
- /* Make sure this is not trusted */
- gkr_pk_index_delete (GKR_PK_OBJECT (certificate_2), "user-trust");
- gkr_pk_index_delete (GKR_PK_OBJECT (certificate_2), "purposes");
-
- /* Should have created netscape trust companion object */
- keyid = gkr_pk_cert_get_keyid (certificate_2);
- trust_2 = gkr_pk_object_manager_find_by_id (manager, GKR_TYPE_PK_NETSCAPE_TRUST, keyid);
- CuAssert (cu, "No matching netscape trust object found in manager", GKR_IS_PK_NETSCAPE_TRUST (trust_2));
-}
-
-#include "check-attribute.c"
-
-void unit_test_trust_static (CuTest *cu)
-{
- CHECK_BOOL_ATTRIBUTE (cu, trust_1, CKA_TOKEN, CK_FALSE);
- CHECK_BOOL_ATTRIBUTE (cu, trust_1, CKA_TRUST_STEP_UP_APPROVED, CK_FALSE);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_CLASS, CKO_NETSCAPE_TRUST);
-}
-
-void unit_test_trust_related (CuTest *cu)
-{
- CK_ATTRIBUTE attr;
- gkrconstid keyid;
- const guchar *id;
- gsize n_id;
- CK_RV ret;
-
- keyid = gkr_pk_cert_get_keyid (certificate_1);
- CuAssert (cu, "No key id returned from certificate", keyid != NULL);
-
- id = gkr_id_get_raw (keyid, &n_id);
-
- memset (&attr, 0, sizeof (attr));
- attr.type = CKA_ID;
-
- ret = gkr_pk_object_get_attribute (GKR_PK_OBJECT (trust_1), &attr);
- CuAssert (cu, "Returned null attribute", attr.pValue != NULL);
- CuAssert (cu, "Returned empty attribute", attr.ulValueLen != 0);
- CuAssert (cu, "Trust and certificate ids different lengths", attr.ulValueLen == n_id);
- CuAssert (cu, "Trust and certificate id different", memcmp (attr.pValue, id, n_id) == 0);
-}
-
-void unit_test_trust_key_usage (CuTest *cu)
-{
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_DIGITAL_SIGNATURE, CKT_NETSCAPE_TRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_NON_REPUDIATION, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_KEY_ENCIPHERMENT, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_DATA_ENCIPHERMENT, CKT_NETSCAPE_TRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_KEY_AGREEMENT, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_KEY_CERT_SIGN, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_CRL_SIGN, CKT_NETSCAPE_UNTRUSTED);
-
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_DIGITAL_SIGNATURE, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_NON_REPUDIATION, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_KEY_ENCIPHERMENT, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_DATA_ENCIPHERMENT, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_KEY_AGREEMENT, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_KEY_CERT_SIGN, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_CRL_SIGN, CKT_NETSCAPE_TRUST_UNKNOWN);
-}
-
-void unit_test_trust_purpose (CuTest *cu)
-{
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_SERVER_AUTH, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_CLIENT_AUTH, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_CODE_SIGNING, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_EMAIL_PROTECTION, CKT_NETSCAPE_TRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_IPSEC_END_SYSTEM, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_IPSEC_TUNNEL, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_IPSEC_USER, CKT_NETSCAPE_UNTRUSTED);
- CHECK_ULONG_ATTRIBUTE (cu, trust_1, CKA_TRUST_TIME_STAMPING, CKT_NETSCAPE_UNTRUSTED);
-
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_SERVER_AUTH, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_CLIENT_AUTH, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_CODE_SIGNING, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_EMAIL_PROTECTION, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_IPSEC_END_SYSTEM, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_IPSEC_TUNNEL, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_IPSEC_USER, CKT_NETSCAPE_TRUST_UNKNOWN);
- CHECK_ULONG_ATTRIBUTE (cu, trust_2, CKA_TRUST_TIME_STAMPING, CKT_NETSCAPE_TRUST_UNKNOWN);
-}
-
-void unit_test_trust_hash (CuTest *cu)
-{
- guchar md5[16];
- guchar sha1[20];
- const guchar *raw;
- gsize n_raw;
-
- raw = gkr_pk_cert_get_raw (certificate_1, &n_raw);
- CuAssert (cu, "cannot get raw certificate", raw != NULL);
-
- gcry_md_hash_buffer (GCRY_MD_MD5, md5, raw, n_raw);
- gcry_md_hash_buffer (GCRY_MD_SHA1, sha1, raw, n_raw);
-
- CHECK_BYTE_ATTRIBUTE (cu, trust_1, CKA_CERT_MD5_HASH, md5, 16);
- CHECK_BYTE_ATTRIBUTE (cu, trust_1, CKA_CERT_SHA1_HASH, sha1, 20);
-}
diff --git a/pkcs11/Makefile.am b/pkcs11/Makefile.am
deleted file mode 100644
index 03f43f93..00000000
--- a/pkcs11/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-
-EXTRA_DIST = \
- pkcs11.h \
- pkcs11g.h \
- pkcs11n.h
-
-# ------------------------------------------------------------------------------
-# The pkcs11 module
-
-moduledir = $(libdir)/gnome-keyring/
-
-MODULE_SRCS = \
- gkr-pkcs11-module.c \
- gkr-pkcs11-message.c gkr-pkcs11-message.h \
- gkr-pkcs11-mechanisms.h gkr-pkcs11-calls.h
-
-module_LTLIBRARIES = gnome-keyring-pkcs11.la
-
-gnome_keyring_pkcs11_la_LDFLAGS = \
- -module -avoid-version \
- -no-undefined -export-symbols-regex 'C_GetFunctionList'
-
-gnome_keyring_pkcs11_la_CFLAGS = \
- -I. \
- -I$(top_srcdir)
-
-gnome_keyring_pkcs11_la_SOURCES = $(MODULE_SRCS)
-
-gnome_keyring_pkcs11_la_LIBADD = \
- $(top_builddir)/common/libgkr-module-common.la
-
-# ------------------------------------------------------------------------------
-# The pkcs11 parts in the daemon. Currently these are built into
-# their own binary for testing purposes.
-#
-
-INCLUDES = \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS)
-
-DAEMON_SRCS = \
- gkr-pkcs11-calls.h \
- gkr-pkcs11-daemon.c gkr-pkcs11-daemon.h \
- gkr-pkcs11-daemon-session.c \
- gkr-pkcs11-dsa.c gkr-pkcs11-dsa.h \
- gkr-pkcs11-mechanisms.h \
- gkr-pkcs11-message.c gkr-pkcs11-message.h \
- gkr-pkcs11-rsa.c gkr-pkcs11-rsa.h
-
-noinst_LTLIBRARIES = libgkr-pkcs11.la
-
-libgkr_pkcs11_la_SOURCES = $(DAEMON_SRCS)
-
-libgkr_pkcs11_la_LIBADD = \
- $(GLIB_LIBS) \
- $(GOBJECT_LIBS)
-
diff --git a/pkcs11/gkr-pkcs11-calls.h b/pkcs11/gkr-pkcs11-calls.h
deleted file mode 100644
index 006a39b8..00000000
--- a/pkcs11/gkr-pkcs11-calls.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-calls.h - various ids and signatures for our protocol
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#ifndef GKR_PKCS11_CALLS_H
-#define GKR_PKCS11_CALLS_H
-
-#include "config.h"
-
-/* The calls, must be in sync with array below */
-enum {
- PKCS11_CALL_ERROR = 0,
- PKCS11_CALL_C_OpenSession,
- PKCS11_CALL_C_GetSessionInfo,
- PKCS11_CALL_C_InitPIN,
- PKCS11_CALL_C_SetPIN,
- PKCS11_CALL_C_GetOperationState,
- PKCS11_CALL_C_SetOperationState,
- PKCS11_CALL_C_Login,
- PKCS11_CALL_C_Logout,
- PKCS11_CALL_C_CreateObject,
- PKCS11_CALL_C_CopyObject,
- PKCS11_CALL_C_DestroyObject,
- PKCS11_CALL_C_GetObjectSize,
- PKCS11_CALL_C_GetAttributeValue,
- PKCS11_CALL_C_SetAttributeValue,
- PKCS11_CALL_C_FindObjectsInit,
- PKCS11_CALL_C_FindObjects,
- PKCS11_CALL_C_FindObjectsFinal,
- PKCS11_CALL_C_EncryptInit,
- PKCS11_CALL_C_Encrypt,
- PKCS11_CALL_C_EncryptUpdate,
- PKCS11_CALL_C_EncryptFinal,
- PKCS11_CALL_C_DecryptInit,
- PKCS11_CALL_C_Decrypt,
- PKCS11_CALL_C_DecryptUpdate,
- PKCS11_CALL_C_DecryptFinal,
- PKCS11_CALL_C_DigestInit,
- PKCS11_CALL_C_Digest,
- PKCS11_CALL_C_DigestUpdate,
- PKCS11_CALL_C_DigestKey,
- PKCS11_CALL_C_DigestFinal,
- PKCS11_CALL_C_SignInit,
- PKCS11_CALL_C_Sign,
- PKCS11_CALL_C_SignUpdate,
- PKCS11_CALL_C_SignFinal,
- PKCS11_CALL_C_SignRecoverInit,
- PKCS11_CALL_C_SignRecover,
- PKCS11_CALL_C_VerifyInit,
- PKCS11_CALL_C_Verify,
- PKCS11_CALL_C_VerifyUpdate,
- PKCS11_CALL_C_VerifyFinal,
- PKCS11_CALL_C_VerifyRecoverInit,
- PKCS11_CALL_C_VerifyRecover,
- PKCS11_CALL_C_DigestEncryptUpdate,
- PKCS11_CALL_C_DecryptDigestUpdate,
- PKCS11_CALL_C_SignEncryptUpdate,
- PKCS11_CALL_C_DecryptVerifyUpdate,
- PKCS11_CALL_C_GenerateKey,
- PKCS11_CALL_C_GenerateKeyPair,
- PKCS11_CALL_C_WrapKey,
- PKCS11_CALL_C_UnwrapKey,
- PKCS11_CALL_C_DeriveKey,
- PKCS11_CALL_C_SeedRandom,
- PKCS11_CALL_C_GenerateRandom,
-
- PKCS11_CALL_MAX
-};
-
-typedef struct _GkrPkcs11CallInfo {
- int call_id;
- const char* name;
- const char* request;
- const char* response;
-} GkrPkcs11CallInfo;
-
-const static GkrPkcs11CallInfo gkr_pkcs11_calls[] = {
- { PKCS11_CALL_ERROR, "ERROR", NULL, NULL },
- { PKCS11_CALL_C_OpenSession, "C_OpenSession", "ayuuu", "" },
- { PKCS11_CALL_C_GetSessionInfo, "C_GetSessionInfo", "", "I" },
- { PKCS11_CALL_C_InitPIN, "C_InitPIN", "ay", "" },
- { PKCS11_CALL_C_SetPIN, "C_SetPIN", "ayay", "" },
- { PKCS11_CALL_C_GetOperationState, "C_GetOperationState", "", "ay" },
- { PKCS11_CALL_C_SetOperationState, "C_SetOperationState", "ayuu", "" },
- { PKCS11_CALL_C_Login, "C_Login", "uay", "" },
- { PKCS11_CALL_C_Logout, "C_Logout", "", "" },
- { PKCS11_CALL_C_CreateObject, "C_CreateObject", "aA", "u" },
- { PKCS11_CALL_C_CopyObject, "C_CopyObject", "uaA", "u" },
- { PKCS11_CALL_C_DestroyObject, "C_DestroyObject", "u", "" },
- { PKCS11_CALL_C_GetObjectSize, "C_GetObjectSize", "u", "u" },
- { PKCS11_CALL_C_GetAttributeValue, "C_GetAttributeValue", "uaA", "aAu" },
- { PKCS11_CALL_C_SetAttributeValue, "C_SetAttributeValue", "uaA", "" },
- { PKCS11_CALL_C_FindObjectsInit, "C_FindObjectsInit", "aA", "" },
- { PKCS11_CALL_C_FindObjects, "C_FindObjects", "u", "au" },
- { PKCS11_CALL_C_FindObjectsFinal, "C_FindObjectsFinal", "", "" },
- { PKCS11_CALL_C_EncryptInit, "C_EncryptInit", "Mu", "" },
- { PKCS11_CALL_C_Encrypt, "C_Encrypt", "ay", "ay" },
- { PKCS11_CALL_C_EncryptUpdate, "C_EncryptUpdate", "ay", "ay" },
- { PKCS11_CALL_C_EncryptFinal, "C_EncryptFinal", "", "ay" },
- { PKCS11_CALL_C_DecryptInit, "C_DecryptInit", "Mu", "" },
- { PKCS11_CALL_C_Decrypt, "C_Decrypt", "ay", "ay" },
- { PKCS11_CALL_C_DecryptUpdate, "C_DecryptUpdate", "ay", "ay" },
- { PKCS11_CALL_C_DecryptFinal, "C_DecryptFinal", "", "ay" },
- { PKCS11_CALL_C_DigestInit, "C_DigestInit", "M", "" },
- { PKCS11_CALL_C_Digest, "C_Digest", "ay", "ay" },
- { PKCS11_CALL_C_DigestUpdate, "C_DigestUpdate", "ay", "" },
- { PKCS11_CALL_C_DigestKey, "C_DigestKey", "u", "" },
- { PKCS11_CALL_C_DigestFinal, "C_DigestFinal", "", "ay" },
- { PKCS11_CALL_C_SignInit, "C_SignInit", "Mu", "" },
- { PKCS11_CALL_C_Sign, "C_Sign", "ay", "ay" },
- { PKCS11_CALL_C_SignUpdate, "C_SignUpdate", "ay", "" },
- { PKCS11_CALL_C_SignFinal, "C_SignFinal", "", "ay" },
- { PKCS11_CALL_C_SignRecoverInit, "C_SignRecoverInit", "Mu", "" },
- { PKCS11_CALL_C_SignRecover, "C_SignRecover", "ay", "ay" },
- { PKCS11_CALL_C_VerifyInit, "C_VerifyInit", "Mu", "" },
- { PKCS11_CALL_C_Verify, "C_Verify", "ayay", "" },
- { PKCS11_CALL_C_VerifyUpdate, "C_VerifyUpdate", "ay", "" },
- { PKCS11_CALL_C_VerifyFinal, "C_VerifyFinal", "", "ay" },
- { PKCS11_CALL_C_VerifyRecoverInit, "C_VerifyRecoverInit", "Mu", "" },
- { PKCS11_CALL_C_VerifyRecover, "C_VerifyRecover", "ay", "ay" },
- { PKCS11_CALL_C_DigestEncryptUpdate, "C_DigestEncryptUpdate", "ay", "ay" },
- { PKCS11_CALL_C_DecryptDigestUpdate, "C_DecryptDigestUpdate", "ay", "ay" },
- { PKCS11_CALL_C_SignEncryptUpdate, "C_SignEncryptUpdate", "ay", "ay" },
- { PKCS11_CALL_C_DecryptVerifyUpdate, "C_DecryptVerifyUpdate", "ay", "ay" },
- { PKCS11_CALL_C_GenerateKey, "C_GenerateKey", "MaA", "u" },
- { PKCS11_CALL_C_GenerateKeyPair, "C_GenerateKeyPair", "MaAaA", "uu" },
- { PKCS11_CALL_C_WrapKey, "C_WrapKey", "Muu", "ay" },
- { PKCS11_CALL_C_UnwrapKey, "C_UnwrapKey", "MuayaA", "u" },
- { PKCS11_CALL_C_DeriveKey, "C_DeriveKey", "MuaA", "u" },
- { PKCS11_CALL_C_SeedRandom, "C_SeedRandom", "ay", "" },
- { PKCS11_CALL_C_GenerateRandom, "C_GenerateRandom", "u", "ay" },
-};
-
-#ifdef _DEBUG
-#define GKR_PKCS11_CHECK_CALLS() \
- { int i; for (i = 0; i < PKCS11_CALL_MAX; ++i) assert (gkr_pkcs11_calls[i].call_id == i); }
-#endif
-
-#define GKR_PKCS11_HANDSHAKE \
- ("PRIVATE-GNOME-KEYRING-PKCS11-PROTOCOL-V-1")
-#define GKR_PKCS11_HANDSHAKE_LEN \
- (sizeof (GKR_PKCS11_HANDSHAKE) - 1)
-
-#define GKR_PKCS11_SOCKET_EXT ".pkcs11"
-
-#endif /* GKR_PKCS11_CALLS_H */
diff --git a/pkcs11/gkr-pkcs11-daemon-session.c b/pkcs11/gkr-pkcs11-daemon-session.c
deleted file mode 100644
index 18bc89eb..00000000
--- a/pkcs11/gkr-pkcs11-daemon-session.c
+++ /dev/null
@@ -1,1701 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-daemon-session.c - PKCS#11 session in daemon
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include <glib.h>
-
-#include "gkr-pkcs11-message.h"
-#include "gkr-pkcs11-calls.h"
-#include "gkr-pkcs11-daemon.h"
-#include "gkr-pkcs11-dsa.h"
-#include "gkr-pkcs11-rsa.h"
-#include "pkcs11.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-buffer.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-unix-credentials.h"
-
-#include "keyrings/gkr-keyring-login.h"
-
-#include "pk/gkr-pk-object.h"
-#include "pk/gkr-pk-object-manager.h"
-#include "pk/gkr-pk-object-storage.h"
-#include "pk/gkr-pk-util.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-
-struct _SessionInfo;
-typedef struct _SessionInfo SessionInfo;
-
-enum
-{
- OPERATION_NONE = 0,
- OPERATION_FIND,
- OPERATION_ENCRYPT,
- OPERATION_DECRYPT,
- OPERATION_SIGN,
- OPERATION_VERIFY
-};
-
-typedef void (*OperationCleanup) (SessionInfo* sinfo);
-
-struct _SessionInfo {
- pid_t pid; /* Process ID of client */
- gboolean valid; /* Session is valid */
- gboolean readonly; /* Session is readonly */
-
- guint operation_type;
- GDestroyNotify operation_cleanup;
- gpointer operation_data;
-
- guint deverror; /* The 'device' error code */
-
- GkrPkObjectManager *manager; /* The object manager for this session */
- GHashTable *objects; /* Objects owned by the session */
-};
-
-/*
- * TODO: Would this be the right error to pass back on a message
- * parse failure? Or should we just disconnect?
- */
-#define PROTOCOL_ERROR CKR_DEVICE_ERROR
-
-/* -----------------------------------------------------------------------------
- * SESSION OBJECTS
- */
-
-static void
-session_add_object (SessionInfo *sinfo, GkrPkObject *object)
-{
- g_assert (sinfo);
-
- g_return_if_fail (object->handle != 0);
- g_return_if_fail (object->location == 0);
- g_return_if_fail (object->manager == sinfo->manager);
-
- /* We assume the ownership */
- g_object_ref (object);
- g_hash_table_insert (sinfo->objects, GUINT_TO_POINTER (object->handle), object);
-}
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-begin_operation (SessionInfo *sinfo, guint type, gpointer data, GDestroyNotify cleanup)
-{
- g_assert (sinfo);
- g_assert (type != OPERATION_NONE);
- g_assert (sinfo->operation_type == OPERATION_NONE);
-
- sinfo->operation_type = type;
- sinfo->operation_data = data;
- sinfo->operation_cleanup = cleanup;
-}
-
-static void
-finish_operation (SessionInfo *sinfo)
-{
- if (sinfo->operation_data) {
- if (sinfo->operation_cleanup)
- (sinfo->operation_cleanup) (sinfo->operation_data);
- sinfo->operation_data = NULL;
- }
-
- sinfo->operation_cleanup = NULL;
- sinfo->operation_type = OPERATION_NONE;
-}
-
-/* -----------------------------------------------------------------------------
- * PROTOCOL PARSING
- */
-
-static GArray*
-read_attribute_array (GkrPkcs11Message* msg)
-{
- CK_ATTRIBUTE attr;
- GArray* attrs;
- guint32 num, i;
- guchar validity;
- const guchar *value;
- gsize n_value;
-
- g_assert (msg);
- g_assert (gkr_pkcs11_message_verify_part (msg, "aA"));
-
- /* Get the number of items. We need this value to be correct */
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, &num))
- return NULL; /* parse error */
-
- attrs = gkr_pk_attributes_new ();
-
- /* We need to go ahead and read everything in all cases */
- for (i = 0; i < num; ++i) {
-
- memset (&attr, 0, sizeof (attr));
-
- /* The attribute type */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, (guint32*)(&attr.type));
-
- /* Attribute validity */
- gkr_buffer_get_byte (&msg->buffer, msg->parsed,
- &msg->parsed, &validity);
-
- /* And the data itself */
- if (validity)
- gkr_buffer_get_byte_array (&msg->buffer, msg->parsed, &msg->parsed,
- &value, &n_value);
-
- /* Don't act on this data unless no errors */
- if (gkr_buffer_has_error (&msg->buffer))
- break;
-
- if (validity)
- gkr_pk_attribute_set_data (&attr, value, n_value);
- else
- attr.ulValueLen = (CK_ULONG)-1;
-
- /* Transfer ownership of the attribute to the array */
- g_array_append_val (attrs, attr);
- }
-
- if (gkr_buffer_has_error (&msg->buffer)) {
- gkr_pk_attributes_free (attrs);
- attrs = NULL;
- }
-
- return attrs;
-}
-
-static gboolean
-read_byte_array (GkrPkcs11Message *msg, CK_BYTE_PTR *val, CK_ULONG *vlen)
-{
- const unsigned char* v;
- size_t l;
-
- g_assert (msg && val && vlen);
- g_assert (gkr_pkcs11_message_verify_part (msg, "ay"));
-
- if (!gkr_buffer_get_byte_array (&msg->buffer, msg->parsed,
- &(msg->parsed), &v, &l))
- return FALSE;
-
- *val = (CK_BYTE_PTR)v;
- *vlen = l;
- return TRUE;
-}
-
-static gboolean
-read_mechanism (GkrPkcs11Message* msg, CK_MECHANISM_PTR mech)
-{
- const guchar *value;
- gsize n_value;
- guint32 num;
-
- g_assert (msg);
- g_assert (gkr_pkcs11_message_verify_part (msg, "M"));
-
- /* Get the mechanism type */
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed,
- &num))
- return FALSE; /* parse error */
-
- if (!gkr_buffer_get_byte_array (&msg->buffer, msg->parsed, &msg->parsed,
- &value, &n_value))
- return FALSE; /* parse error */
-
- mech->mechanism = num;
- mech->pParameter = (CK_VOID_PTR)value;
- mech->ulParameterLen = n_value;
- return TRUE;
-}
-
-static CK_RV
-read_object (GkrPkcs11Message *msg, SessionInfo *sinfo, GkrPkObject **res)
-{
- CK_OBJECT_HANDLE obj;
- GkrPkObjectManager *manager;
-
- if (gkr_pkcs11_message_read_uint32 (msg, &obj) != CKR_OK)
- return PROTOCOL_ERROR;
-
- /* Find the object in question */
- if (obj & GKR_PK_OBJECT_IS_PERMANENT)
- manager = gkr_pk_object_manager_for_token ();
- else
- manager = sinfo->manager;
-
- *res = gkr_pk_object_manager_lookup (manager, obj);
- if (!*res)
- return CKR_OBJECT_HANDLE_INVALID;
-
- return CKR_OK;
-}
-
-static void
-write_session_info (GkrPkcs11Message *msg, CK_ULONG slot, CK_ULONG state,
- CK_ULONG flags, CK_ULONG deverror)
-{
- g_assert (msg);
- g_assert (gkr_pkcs11_message_verify_part (msg, "I"));
-
- /* The slot id */
- gkr_buffer_add_uint32 (&msg->buffer, slot);
-
- /* The state */
- gkr_buffer_add_uint32 (&msg->buffer, state);
-
- /* The flags */
- gkr_buffer_add_uint32 (&msg->buffer, flags);
-
- /* The device error code */
- gkr_buffer_add_uint32 (&msg->buffer, deverror);
-}
-
-/* -----------------------------------------------------------------------------
- * SESSION OPERATIONS
- */
-
-static CK_RV
-session_C_OpenSession (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CK_BYTE_PTR sig = NULL;
- CK_ULONG siglen, slotid, flags, pid;
-
- if (!read_byte_array (req, &sig, &siglen))
- return PROTOCOL_ERROR;
- if (gkr_pkcs11_message_read_uint32 (req, &pid) != CKR_OK)
- return PROTOCOL_ERROR;
- if (gkr_pkcs11_message_read_uint32 (req, &slotid) != CKR_OK)
- return PROTOCOL_ERROR;
- if (gkr_pkcs11_message_read_uint32 (req, &flags) != CKR_OK)
- return PROTOCOL_ERROR;
-
- /* Verify that the module signature matches */
- if (siglen != GKR_PKCS11_HANDSHAKE_LEN ||
- memcmp (sig, GKR_PKCS11_HANDSHAKE, siglen) != 0) {
- g_warning ("pkcs11 module is not speaking correct protocol");
- return CKR_DEVICE_ERROR;
- }
-
- /* Mark session as valid and ready for action */
- sinfo->readonly = (flags & CKF_RW_SESSION) ? FALSE : TRUE;
- sinfo->valid = TRUE;
-
- /*
- * TODO: Once we have support for actually pulling out the
- * peer's user/pid, we should use that instead of what the
- * client tells us.
- */
- sinfo->pid = pid;
- sinfo->manager = gkr_pk_object_manager_instance_for_client (pid);
-
- return CKR_OK;
-}
-
-static CK_RV
-session_C_GetSessionInfo (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- uint32_t flags, state;
-
- /* No in arguments */
-
- if (gkr_keyring_login_is_unlocked ())
- state = sinfo->readonly ? CKS_RO_USER_FUNCTIONS : CKS_RW_USER_FUNCTIONS;
- else
- state = sinfo->readonly ? CKS_RO_PUBLIC_SESSION : CKS_RW_PUBLIC_SESSION;
-
- flags = 0;
- if (!sinfo->readonly)
- flags |= CKF_RW_SESSION;
- write_session_info (resp, 0, state, flags, sinfo->deverror);
-
- return CKR_OK;
-}
-
-static CK_RV
-session_C_InitPIN (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't support this stuff. We don't support 'SO' logins. */
- return CKR_USER_NOT_LOGGED_IN;
-}
-
-static CK_RV
-session_C_SetPIN (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /*
- * TODO: We may support this in the future. Since we are a
- * CKF_PROTECTED_AUTHENTICATION_PATH type token, we would
- * not accept a PIN, but instead prompt for it.
- */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_GetOperationState (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* Nope, We don't bend that way */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_SetOperationState (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* Nope. We don't bend that way */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_Login (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CK_BYTE_PTR pin = NULL;
- CK_ULONG user_type, pin_len;
-
- if (gkr_pkcs11_message_read_uint32 (req, &user_type) != CKR_OK)
- return PROTOCOL_ERROR;
- if (!read_byte_array (req, &pin, &pin_len))
- return PROTOCOL_ERROR;
-
- if (user_type != CKU_USER) {
-
- /* Readonly session, SO can't log in */
- if (sinfo->readonly)
- return CKR_SESSION_READ_ONLY_EXISTS;
-
- /* Actually SO can't log in at all ... */
- /* PKCS#11 QUESTION: What should we really be returning here? */
- return CKR_USER_TYPE_INVALID;
- }
-
- /*
- * Implement by unlocking gnome-keyring default keyring, since we
- * a CKF_PROTECTED_AUTHENTICATION_PATH type token, we would
- * not accept a PIN, but instead prompt for it.
- */
- if (!gkr_keyring_login_unlock (NULL))
- return CKR_GENERAL_ERROR;
-
- return CKR_OK;
-}
-
-static CK_RV
-session_C_Logout (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- if (!gkr_keyring_login_is_unlocked ())
- return CKR_USER_NOT_LOGGED_IN;
-
- /*
- * TODO: What do we do here. I don't think we actually want to
- * lock the login keyring.
- */
-
- return CKR_OK;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT OPERATIONS
- */
-
-static CK_RV
-session_C_CreateObject (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObjectManager *manager;
- CK_ATTRIBUTE_PTR attr;
- CK_OBJECT_CLASS cls;
- GkrPkObject *object;
- GArray *attrs = NULL;
- CK_BBOOL token;
- GError *err = NULL;
- gboolean res;
- guint i;
- CK_RV ret;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!(attrs = read_attribute_array (req)))
- return PROTOCOL_ERROR;
-
- if (!gkr_pk_attributes_ulong (attrs, CKA_CLASS, &cls)) {
- ret = CKR_TEMPLATE_INCOMPLETE;
- goto done;
- }
-
- /* Can only create public objects unless logged in */
- if (!gkr_keyring_login_is_unlocked () && gkc_pk_class_is_private (cls)) {
- ret = CKR_USER_NOT_LOGGED_IN;
- goto done;
- }
-
- /* Find out if its a token object or not */
- token = CK_FALSE;
- for (i = 0; i < attrs->len; ++i) {
- attr = &(g_array_index (attrs, CK_ATTRIBUTE, i));
- if (attr->type == CKA_TOKEN) {
- if (attr && attr->pValue && attr->ulValueLen == sizeof (CK_BBOOL))
- token = *((CK_BBOOL*)attr->pValue);
-
- /* Mark that attribute as used */
- gkr_pk_attribute_consume (attr);
- break;
- }
- }
-
- /* A readonly session cannot create token objects */
- if (token && sinfo->readonly) {
- ret = CKR_SESSION_READ_ONLY;
- goto done;
- }
-
- /* Create the object with the right object manager */
- manager = token ? gkr_pk_object_manager_for_token () : sinfo->manager;
- ret = gkr_pk_object_create (manager, attrs, &object);
-
- if (ret != CKR_OK)
- goto done;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- /* Token objects get stored in the main object storage */
- if (token) {
- g_return_val_if_fail (object->storage != NULL, CKR_GENERAL_ERROR);
- res = gkr_pk_object_storage_add (gkr_pk_object_storage_get (), object, &err);
- if (!res) {
- g_warning ("couldn't write created object to disk: %s",
- err && err->message ? err->message : "");
- g_clear_error (&err);
- ret = CKR_GENERAL_ERROR;
- goto done;
- }
-
- /* Session objects are owned by the session */
- } else {
- session_add_object (sinfo, object);
- }
-
- gkr_pkcs11_message_write_uint32 (resp, object->handle);
- ret = CKR_OK;
-
-done:
- g_object_unref (object);
- gkr_pk_attributes_free (attrs);
- return ret;
-}
-
-static CK_RV
-session_C_CopyObject (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /*
- * TODO: We need to implement this, initially perhaps only
- * only for session objects.
- */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DestroyObject (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CK_OBJECT_HANDLE obj;
- GkrPkObjectManager *manager;
- GkrPkObject *object;
- CK_RV ret = CKR_OK;
- gboolean res;
- GError *err = NULL;
- CK_BBOOL priv;
-
- if (gkr_pkcs11_message_read_uint32 (req, &obj) != CKR_OK)
- return PROTOCOL_ERROR;
-
- /* Find the object in question */
- if (obj & GKR_PK_OBJECT_IS_PERMANENT)
- manager = gkr_pk_object_manager_for_token ();
- else
- manager = sinfo->manager;
-
- object = gkr_pk_object_manager_lookup (manager, obj);
- if (!object)
- return CKR_OBJECT_HANDLE_INVALID;
-
- /* We can only destroy public objects unless logged in */
- if (!gkr_keyring_login_is_unlocked ()) {
- ret = gkr_pk_object_get_bool (object, CKA_PRIVATE, &priv);
- g_return_val_if_fail (ret == CKR_OK, CKR_GENERAL_ERROR);
-
- if (priv)
- return CKR_USER_NOT_LOGGED_IN;
- }
-
- /* A token object */
- if (obj & GKR_PK_OBJECT_IS_PERMANENT) {
-
- /* A readonly session cannot destroy token objects */
- if (sinfo->readonly)
- return CKR_SESSION_READ_ONLY;
-
- g_return_val_if_fail (object->storage, CKR_GENERAL_ERROR);
- res = gkr_pk_object_storage_remove (object->storage, object, &err);
- if (!res) {
- g_warning ("couldn't remove object from disk: %s",
- err && err->message ? err->message : "");
- g_clear_error (&err);
- ret = CKR_GENERAL_ERROR;
- }
-
- /* A session object */
- } else {
- /*
- * TODO: This just hides the object, does not destroy.
- * The problem is that we need to locate the actual
- * session where this is owned, which we currently
- * don't track.
- */
- gkr_pk_object_manager_unregister (manager, object);
- ret = CKR_OK;
- }
-
- return ret;
-}
-
-static CK_RV
-session_C_GetObjectSize (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: We need to implement this */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_GetAttributeValue (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *object;
- GArray* attrs;
- CK_RV soft_ret = CKR_OK;
- CK_RV ret = CKR_OK;
-
- ret = read_object (req, sinfo, &object);
- if (ret != CKR_OK)
- return ret;
-
- if (!(attrs = read_attribute_array (req)))
- return PROTOCOL_ERROR;
-
- ret = gkr_pk_object_get_attributes (object, attrs);
-
- /* Certain ones aren't real failures */
- switch (ret) {
- case CKR_ATTRIBUTE_SENSITIVE:
- case CKR_ATTRIBUTE_TYPE_INVALID:
- soft_ret = ret;
- ret = CKR_OK;
- break;
- case CKR_BUFFER_TOO_SMALL:
- g_assert (FALSE && "we shouldn't be returning this anywhere");
- break;
- };
-
- if (ret == CKR_OK) {
- gkr_pkcs11_message_write_attribute_array (resp, (CK_ATTRIBUTE_PTR)attrs->data,
- attrs->len);
- gkr_pkcs11_message_write_uint32 (resp, soft_ret);
- }
-
- /* Attributes have been filled in with allocated values, so deep free */
- gkr_pk_attributes_free (attrs);
-
- return ret;
-}
-
-static CK_RV
-session_C_SetAttributeValue (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *object;
- GArray* attrs;
- CK_RV ret;
-
- ret = read_object (req, sinfo, &object);
- if (ret != CKR_OK)
- return ret;
-
- if (!(attrs = read_attribute_array (req)))
- return PROTOCOL_ERROR;
-
- ret = gkr_pk_object_set_attributes (object, attrs);
- gkr_pk_attributes_free (attrs);
-
- return ret;
-}
-
-static void
-free_object_list (gpointer data)
-{
- GList *l, *objects = data;
- for (l = objects; l; l = g_list_next (l))
- g_object_unref (l->data);
- g_list_free (objects);
-}
-
-static CK_RV
-session_C_FindObjectsInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CK_BBOOL token;
- GList *l, *objects = NULL;
- GArray *attrs;
- gboolean all;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!(attrs = read_attribute_array (req)))
- return PROTOCOL_ERROR;
-
- all = !gkr_pk_attributes_boolean (attrs, CKA_TOKEN, &token);
- objects = NULL;
-
- /* All or only token objects? */
- if(all || token) {
- l = gkr_pk_object_manager_find (gkr_pk_object_manager_for_token (), 0, attrs);
- objects = g_list_concat (objects, l);
- }
-
- /* All or only session objects? */
- if (all || !token) {
- l = gkr_pk_object_manager_find (sinfo->manager, 0, attrs);
- objects = g_list_concat (objects, l);
- }
-
- for (l = objects; l; l = g_list_next (l))
- g_object_ref (GKR_PK_OBJECT (l->data));
- begin_operation (sinfo, OPERATION_FIND, objects, free_object_list);
-
- gkr_pk_attributes_free (attrs);
-
- /* No response */
- return CKR_OK;
-}
-
-static CK_RV
-session_C_FindObjects (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *obj;
- GList* objects;
- CK_ULONG max, n_objects, i;
-
- if (sinfo->operation_type != OPERATION_FIND)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- if (gkr_pkcs11_message_read_uint32 (req, &max) != CKR_OK)
- return PROTOCOL_ERROR;
-
- objects = (GList*)sinfo->operation_data;
-
- /* Write out an array of ulongs */
- g_assert (gkr_pkcs11_message_verify_part (resp, "au"));
-
- /* First the number returned */
- n_objects = MIN (max, g_list_length (objects));
- gkr_buffer_add_uint32 (&resp->buffer, n_objects);
-
- /* Now each of them */
- for (i = 0; i < n_objects; ++i) {
- obj = GKR_PK_OBJECT (objects->data);
- objects = g_list_remove (objects, obj);
-
- g_assert (obj);
- g_assert (obj->handle);
-
- gkr_buffer_add_uint32 (&resp->buffer, obj->handle);
- g_object_unref (obj);
- }
-
- /* In case we get called again, or there are leftovers */
- sinfo->operation_data = objects;
-
- return CKR_OK;
-}
-
-static CK_RV
-session_C_FindObjectsFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- if (sinfo->operation_type != OPERATION_FIND)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- finish_operation (sinfo);
- return CKR_OK;
-}
-
-/* -----------------------------------------------------------------------------
- * ENCRYPTION OPERATIONS
- */
-
-typedef struct _CryptContext {
- CK_MECHANISM_TYPE mechanism;
- GkrPkObject *key;
-} CryptContext;
-
-static CryptContext*
-new_crypt_context (CK_MECHANISM_TYPE mech, GkrPkObject *key)
-{
- CryptContext *ctx;
- g_assert (key);
- ctx = g_new0 (CryptContext, 1);
- ctx->mechanism = mech;
- ctx->key = key;
- g_object_ref (key);
- return ctx;
-}
-
-static void
-free_crypt_context (gpointer data)
-{
- CryptContext *ctx = (CryptContext*)data;
- if (ctx->key)
- g_object_unref (ctx->key);
- g_free (ctx);
-}
-
-static CK_RV
-session_C_EncryptInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *key;
- CK_MECHANISM mech;
- CK_RV ret;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!read_mechanism (req, &mech))
- return PROTOCOL_ERROR;
- ret = read_object (req, sinfo, &key);
- if (ret != CKR_OK)
- return ret;
-
- switch (mech.mechanism) {
- case CKM_RSA_PKCS:
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_encrypt (key, NULL, NULL, 0, NULL, 0);
- break;
- default:
- ret = CKR_MECHANISM_INVALID;
- break;
- };
-
- if (ret == CKR_OK)
- begin_operation (sinfo, OPERATION_ENCRYPT,
- new_crypt_context (mech.mechanism, key),
- free_crypt_context);
-
- return ret;
-}
-
-static CK_RV
-session_C_Encrypt (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CryptContext *ctx;
- CK_BYTE_PTR plain;
- CK_ULONG n_plain;
- gsize n_encrypted;
- guchar *encrypted;
- CK_RV ret;
-
- if (sinfo->operation_type != OPERATION_ENCRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- if (!read_byte_array (req, &plain, &n_plain))
- return PROTOCOL_ERROR;
-
- ctx = (CryptContext*)sinfo->operation_data;
- switch (ctx->mechanism) {
- case CKM_RSA_PKCS:
- ret = gkr_pkcs11_rsa_encrypt (ctx->key, gkr_crypto_rsa_pad_two,
- plain, n_plain,
- &encrypted, &n_encrypted);
- break;
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_encrypt (ctx->key, gkr_crypto_rsa_pad_raw,
- plain, n_plain,
- &encrypted, &n_encrypted);
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- };
-
- if (ret == CKR_OK) {
- g_return_val_if_fail (encrypted, CKR_GENERAL_ERROR);
- ret = gkr_pkcs11_message_write_byte_array (resp, encrypted, n_encrypted);
- g_free (encrypted);
- }
-
- finish_operation (sinfo);
- return ret;
-}
-
-static CK_RV
-session_C_EncryptUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental encryption */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_EncryptFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental encryption */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * DECRYPTION OPERATIONS
- */
-
-static CK_RV
-session_C_DecryptInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *key;
- CK_MECHANISM mech;
- CK_RV ret;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!read_mechanism (req, &mech))
- return PROTOCOL_ERROR;
- ret = read_object (req, sinfo, &key);
- if (ret != CKR_OK)
- return ret;
-
- switch (mech.mechanism) {
- case CKM_RSA_PKCS:
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_decrypt (key, NULL, NULL, 0, NULL, 0);
- break;
- default:
- ret = CKR_MECHANISM_INVALID;
- break;
- };
-
- if (ret == CKR_OK)
- begin_operation (sinfo, OPERATION_DECRYPT,
- new_crypt_context (mech.mechanism, key),
- free_crypt_context);
-
- return ret;
-}
-
-static CK_RV
-session_C_Decrypt (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CryptContext *ctx;
- CK_BYTE_PTR encrypted;
- CK_ULONG n_encrypted;
- gsize n_data;
- guchar *data;
- CK_RV ret;
-
- if (sinfo->operation_type != OPERATION_DECRYPT)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- if (!read_byte_array (req, &encrypted, &n_encrypted))
- return PROTOCOL_ERROR;
-
- ctx = (CryptContext*)sinfo->operation_data;
- switch (ctx->mechanism) {
- case CKM_RSA_PKCS:
- ret = gkr_pkcs11_rsa_decrypt (ctx->key, gkr_crypto_rsa_unpad_two,
- encrypted, n_encrypted,
- &data, &n_data);
- break;
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_decrypt (ctx->key, NULL,
- encrypted, n_encrypted,
- &data, &n_data);
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- };
-
- if (ret == CKR_OK) {
- g_return_val_if_fail (data, CKR_GENERAL_ERROR);
- ret = gkr_pkcs11_message_write_byte_array (resp, data, n_data);
- g_free (data);
- }
-
- finish_operation (sinfo);
- return ret;
-}
-
-static CK_RV
-session_C_DecryptUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental decryption */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DecryptFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental decryption */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * DIGEST OPERATIONS
- */
-
-static CK_RV
-session_C_DigestInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_Digest (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DigestUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DigestKey (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DigestFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * SIGN OPERATIONS
- */
-
-static CK_RV
-session_C_SignInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *key;
- CK_MECHANISM mech;
- CK_RV ret;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!read_mechanism (req, &mech))
- return PROTOCOL_ERROR;
- ret = read_object (req, sinfo, &key);
- if (ret != CKR_OK)
- return ret;
-
- switch (mech.mechanism) {
- case CKM_RSA_PKCS:
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_sign (key, NULL, NULL, 0, NULL, 0);
- break;
- case CKM_DSA:
- ret = gkr_pkcs11_dsa_sign (key, NULL, 0, NULL, 0);
- break;
- default:
- ret = CKR_MECHANISM_INVALID;
- break;
- };
-
- if (ret == CKR_OK)
- begin_operation (sinfo, OPERATION_SIGN,
- new_crypt_context (mech.mechanism, key),
- free_crypt_context);
-
- return ret;
-}
-
-static CK_RV
-session_C_Sign (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CryptContext *ctx;
- CK_BYTE_PTR data;
- CK_ULONG n_data;
- gsize n_signature;
- guchar *signature;
- CK_RV ret;
-
- if (sinfo->operation_type != OPERATION_SIGN)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- if (!read_byte_array (req, &data, &n_data))
- return PROTOCOL_ERROR;
-
- ctx = (CryptContext*)sinfo->operation_data;
- switch (ctx->mechanism) {
- case CKM_RSA_PKCS:
- ret = gkr_pkcs11_rsa_sign (ctx->key, gkr_crypto_rsa_pad_one,
- data, n_data,
- &signature, &n_signature);
- break;
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_sign (ctx->key, gkr_crypto_rsa_pad_raw,
- data, n_data,
- &signature, &n_signature);
- break;
- case CKM_DSA:
- ret = gkr_pkcs11_dsa_sign (ctx->key, data, n_data,
- &signature, &n_signature);
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- };
-
- if (ret == CKR_OK) {
- g_return_val_if_fail (signature, CKR_GENERAL_ERROR);
- ret = gkr_pkcs11_message_write_byte_array (resp, signature, n_signature);
- g_free (signature);
- }
-
- finish_operation (sinfo);
- return ret;
-}
-
-static CK_RV
-session_C_SignUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental signing */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_SignFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental signing */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_SignRecoverInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: Need to implement */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_SignRecover (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: Need to implement */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * VERIFY OPERATIONS
- */
-
-static CK_RV
-session_C_VerifyInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- GkrPkObject *key;
- CK_MECHANISM mech;
- CK_RV ret;
-
- if (sinfo->operation_type)
- return CKR_OPERATION_ACTIVE;
-
- if (!read_mechanism (req, &mech))
- return PROTOCOL_ERROR;
- ret = read_object (req, sinfo, &key);
- if (ret != CKR_OK)
- return ret;
-
- switch (mech.mechanism) {
- case CKM_RSA_PKCS:
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_verify (key, NULL, NULL, 0, NULL, 0);
- break;
- case CKM_DSA:
- ret = gkr_pkcs11_dsa_verify (key, NULL, 0, NULL, 0);
- break;
- default:
- ret = CKR_MECHANISM_INVALID;
- break;
- };
-
- if (ret == CKR_OK)
- begin_operation (sinfo, OPERATION_VERIFY,
- new_crypt_context (mech.mechanism, key),
- free_crypt_context);
-
- return ret;
-}
-
-static CK_RV
-session_C_Verify (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CryptContext *ctx;
- CK_BYTE_PTR signature, data;
- CK_ULONG n_signature, n_data;
- CK_RV ret;
-
- if (sinfo->operation_type != OPERATION_VERIFY)
- return CKR_OPERATION_NOT_INITIALIZED;
-
- if (!read_byte_array (req, &data, &n_data))
- return PROTOCOL_ERROR;
- if (!read_byte_array (req, &signature, &n_signature))
- return PROTOCOL_ERROR;
-
- ctx = (CryptContext*)sinfo->operation_data;
- switch (ctx->mechanism) {
- case CKM_RSA_PKCS:
- ret = gkr_pkcs11_rsa_verify (ctx->key, gkr_crypto_rsa_pad_one,
- data, n_data,
- signature, n_signature);
- break;
- case CKM_RSA_X_509:
- ret = gkr_pkcs11_rsa_verify (ctx->key, gkr_crypto_rsa_pad_raw,
- data, n_data,
- signature, n_signature);
- break;
- case CKM_DSA:
- ret = gkr_pkcs11_dsa_verify (ctx->key, data, n_data,
- signature, n_signature);
- break;
- default:
- g_return_val_if_reached (CKR_GENERAL_ERROR);
- break;
- };
-
- finish_operation (sinfo);
- return ret;
-}
-
-static CK_RV
-session_C_VerifyUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental verifying */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_VerifyFinal (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this incremental verifying */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_VerifyRecoverInit (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this recoverable signing */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_VerifyRecover (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support this recoverable signing */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * COMPOUND OPERATIONS
- */
-
-static CK_RV
-session_C_DigestEncryptUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DecryptDigestUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't do digests */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_SignEncryptUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* Can't do this with an RSA key */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DecryptVerifyUpdate (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* Can't do this with an RSA key */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * KEY OPERATIONS
- */
-
-static CK_RV
-session_C_GenerateKey (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: We need to implement this */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_GenerateKeyPair (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: We need to implement this */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_WrapKey (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: We need to implement this */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_UnwrapKey (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* TODO: We need to implement this */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-session_C_DeriveKey (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* RSA keys don't support derivation */
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-/* -----------------------------------------------------------------------------
- * RANDOM OPERATIONS
- */
-
-static CK_RV
-session_C_SeedRandom (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't have a RNG */
- return CKR_RANDOM_NO_RNG;
-}
-
-static CK_RV
-session_C_GenerateRandom (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- /* We don't have a RNG */
- return CKR_RANDOM_NO_RNG;
-}
-
-/* -----------------------------------------------------------------------------
- * SESSION THREAD
- */
-
-static SessionInfo*
-session_info_new ()
-{
- SessionInfo *sinfo = g_new0 (SessionInfo, 1);
- sinfo->objects = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
- return sinfo;
-}
-
-static void
-session_info_free (SessionInfo *sinfo)
-{
- if (sinfo->manager)
- g_object_unref (sinfo->manager);
- g_hash_table_destroy (sinfo->objects);
- g_free (sinfo);
-}
-
-static gboolean
-session_process (SessionInfo *sinfo, GkrPkcs11Message *req,
- GkrPkcs11Message *resp)
-{
- CK_RV ret = CKR_OK;
-
- /* This should have been checked by the parsing code */
- g_assert (req->call_id > PKCS11_CALL_ERROR);
- g_assert (req->call_id < PKCS11_CALL_MAX);
-
- /* Prepare a response for the function to fill in */
- gkr_pkcs11_message_prep (resp, req->call_id, GKR_PKCS11_RESPONSE);
-
- switch(req->call_id) {
-
- #define CASE_CALL(name) \
- case PKCS11_CALL_##name: \
- ret = session_##name (sinfo, req, resp); \
- break;
- CASE_CALL(C_OpenSession)
- CASE_CALL(C_GetSessionInfo)
- CASE_CALL(C_InitPIN)
- CASE_CALL(C_SetPIN)
- CASE_CALL(C_GetOperationState)
- CASE_CALL(C_SetOperationState)
- CASE_CALL(C_Login)
- CASE_CALL(C_Logout)
- CASE_CALL(C_CreateObject)
- CASE_CALL(C_CopyObject)
- CASE_CALL(C_DestroyObject)
- CASE_CALL(C_GetObjectSize)
- CASE_CALL(C_GetAttributeValue)
- CASE_CALL(C_SetAttributeValue)
- CASE_CALL(C_FindObjectsInit)
- CASE_CALL(C_FindObjects)
- CASE_CALL(C_FindObjectsFinal)
- CASE_CALL(C_EncryptInit)
- CASE_CALL(C_Encrypt)
- CASE_CALL(C_EncryptUpdate)
- CASE_CALL(C_EncryptFinal)
- CASE_CALL(C_DecryptInit)
- CASE_CALL(C_Decrypt)
- CASE_CALL(C_DecryptUpdate)
- CASE_CALL(C_DecryptFinal)
- CASE_CALL(C_DigestInit)
- CASE_CALL(C_Digest)
- CASE_CALL(C_DigestUpdate)
- CASE_CALL(C_DigestKey)
- CASE_CALL(C_DigestFinal)
- CASE_CALL(C_SignInit)
- CASE_CALL(C_Sign)
- CASE_CALL(C_SignUpdate)
- CASE_CALL(C_SignFinal)
- CASE_CALL(C_SignRecoverInit)
- CASE_CALL(C_SignRecover)
- CASE_CALL(C_VerifyInit)
- CASE_CALL(C_Verify)
- CASE_CALL(C_VerifyUpdate)
- CASE_CALL(C_VerifyFinal)
- CASE_CALL(C_VerifyRecoverInit)
- CASE_CALL(C_VerifyRecover)
- CASE_CALL(C_DigestEncryptUpdate)
- CASE_CALL(C_DecryptDigestUpdate)
- CASE_CALL(C_SignEncryptUpdate)
- CASE_CALL(C_DecryptVerifyUpdate)
- CASE_CALL(C_GenerateKey)
- CASE_CALL(C_GenerateKeyPair)
- CASE_CALL(C_WrapKey)
- CASE_CALL(C_UnwrapKey)
- CASE_CALL(C_DeriveKey)
- CASE_CALL(C_SeedRandom)
- CASE_CALL(C_GenerateRandom)
- #undef CASE_CALL
-
- default:
- /* This should have been caught by the parse code */
- g_return_val_if_reached (FALSE);
- break;
- };
-
- /* Parsing errors? */
- if (gkr_pkcs11_message_buffer_error (req)) {
- g_warning ("invalid request from module, probably too short");
- ret = PROTOCOL_ERROR;
- }
-
- /* Out of memory errors? */
- if (gkr_pkcs11_message_buffer_error (resp)) {
- g_warning ("out of memory error putting together message");
- ret = CKR_DEVICE_MEMORY;
- }
-
- /* A filled in response */
- if (ret == CKR_OK) {
-
- /*
- * Since we're dealing with many many functions above generating
- * these messages we want to make sure each of them actually
- * does what it's supposed to.
- */
-
- g_assert (gkr_pkcs11_message_is_verified (resp));
- g_assert (resp->call_type == GKR_PKCS11_RESPONSE);
- g_assert (resp->call_id == req->call_id);
- g_assert (gkr_pkcs11_calls[resp->call_id].response);
- g_assert (strcmp (gkr_pkcs11_calls[resp->call_id].response,
- resp->signature) == 0);
-
- /* Fill in an error respnose */
- } else {
- /*
- * When there's an error any operation automatically done.
- * We make an exception for functions which we don't implement.
- */
- if (ret != CKR_FUNCTION_NOT_SUPPORTED)
- finish_operation (sinfo);
-
- gkr_pkcs11_message_prep (resp, PKCS11_CALL_ERROR, GKR_PKCS11_RESPONSE);
- gkr_buffer_add_uint32 (&resp->buffer, (uint32_t)ret);
-
- /* Out of memory errors? */
- g_assert (!gkr_pkcs11_message_buffer_error (resp));
- }
-
- return TRUE;
-}
-
-static gboolean
-session_read (int sock, guchar* data, size_t len)
-{
- int r;
-
- g_assert (sock >= 0);
- g_assert (data);
- g_assert (len > 0);
-
- while (len > 0) {
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- r = read (sock, data, len);
-
- gkr_async_end_concurrent ();
-
- if (r == 0) {
- /* Connection was closed on client */
- return FALSE;
- } else if (r == -1) {
- if (errno == EBADF || errno == 0) {
- /* Connection was closed by main thread */
- return FALSE;
- } else if (errno != EAGAIN && errno != EINTR) {
- g_warning ("couldn't receive data: %s", strerror (errno));
- return FALSE;
- }
- } else {
- data += r;
- len -= r;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-session_write (int sock, guchar* data, size_t len)
-{
- int r;
-
- g_assert (sock >= 0);
- g_assert (data);
- g_assert (len > 0);
-
- while (len > 0) {
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- r = write (sock, data, len);
-
- gkr_async_end_concurrent ();
-
- if (r == -1) {
- if (errno == EPIPE) {
- /* Connection closed from client */
- return FALSE;
- } else if (errno == EBADF || errno == 0) {
- /* Connection closed from main thread */
- return FALSE;
- } else if (errno != EAGAIN && errno != EINTR) {
- g_warning ("couldn't send data: %s", strerror (errno));
- return FALSE;
- }
- } else {
- data += r;
- len -= r;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-session_read_credentials (int sock, pid_t *pid, uid_t *uid)
-{
- gboolean ret;
-
- gkr_async_begin_concurrent ();
-
- ret = gkr_unix_credentials_read (sock, pid, uid) >= 0;
-
- gkr_async_end_concurrent ();
-
- return ret;
-}
-
-gpointer
-gkr_pkcs11_daemon_session_thread (gpointer user_data)
-{
- SessionInfo *sinfo;
- GkrPkcs11Message *req, *resp;
- guchar buf[4];
- CK_RV ret;
- uint32_t len;
- int sock;
- uid_t uid;
- pid_t pid;
-
- /* The argument to the worker thread is the socket */
- sock = GPOINTER_TO_INT (user_data);
- g_assert (sock >= 0);
-
- /* Make sure the credentials are appropriate */
- if (!session_read_credentials (sock, &pid, &uid))
- return NULL;
- if (getuid() != uid) {
- g_warning ("uid mismatch: %u, should be %u\n", (guint)uid, (guint)getuid());
- return NULL;
- }
-
- /* Setup our buffers */
- /* TODO: Do these need to be secure buffers? */
- req = gkr_pkcs11_message_new ((GkrBufferAllocator)g_realloc);
- resp = gkr_pkcs11_message_new ((GkrBufferAllocator)g_realloc);
- if (!req || !resp)
- g_error ("out of memory");
-
- sinfo = session_info_new ();
-
- /* The main thread loop */
- while (TRUE) {
-
- if (gkr_async_is_stopping ())
- break;
-
- gkr_pkcs11_message_reset (req);
- gkr_pkcs11_message_reset (resp);
-
- /* Read the number of bytes ... */
- if (!session_read (sock, buf, 4))
- break;
- len = gkr_buffer_decode_uint32 (buf);
-
- /* Allocate memory */
- if (len >= 0x0FFFFFFF) {
- g_warning ("invalid message size from module: %u bytes", len);
- break;
- }
-
- gkr_buffer_reserve (&req->buffer, req->buffer.len + len);
-
- /* ... and read/parse in the actual message */
- if (!session_read (sock, req->buffer.buf, len))
- break;
- gkr_buffer_add_empty (&req->buffer, len);
- ret = gkr_pkcs11_message_parse (req, GKR_PKCS11_REQUEST);
- if (ret != CKR_OK)
- break;
-
- if (gkr_async_is_stopping ())
- break;
-
- /* ... send for processing ... */
- if (!session_process (sinfo, req, resp))
- break;
-
- if (gkr_async_is_stopping ())
- break;
-
- /* .. send back response length, and then response data */
- gkr_buffer_encode_uint32 (buf, resp->buffer.len);
- if(!session_write (sock, buf, 4) ||
- !session_write (sock, resp->buffer.buf, resp->buffer.len))
- break;
- }
-
- session_info_free (sinfo);
-
- /* socket is closed elsewhere */
- shutdown (sock, SHUT_RDWR);
-
- return NULL;
-}
-
diff --git a/pkcs11/gkr-pkcs11-daemon.c b/pkcs11/gkr-pkcs11-daemon.c
deleted file mode 100644
index 7eb53fd9..00000000
--- a/pkcs11/gkr-pkcs11-daemon.c
+++ /dev/null
@@ -1,220 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-daemon.c - main connection/thread handling
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#include <glib.h>
-
-#include "gkr-pkcs11-calls.h"
-#include "gkr-pkcs11-message.h"
-#include "gkr-pkcs11-daemon.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-secure-memory.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-
-#ifdef _DEBUG
-#include <assert.h>
-#endif
-
-/* -----------------------------------------------------------------------------
- * LOGGING
- *
- * Common code used in both the module and the daemon, requires this
- * is implemented so that it can log any warnings appropriately.
- */
-
-void
-gkr_pkcs11_warn (const char* msg, ...)
-{
- va_list va;
- va_start (va, msg);
- g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, msg, va);
- va_end (va);
-}
-
-/* -----------------------------------------------------------------------------
- * PKCS#11 DAEMON
- */
-
-/* The socket path on which we're listening */
-static gchar *pkcs11_socket_path = NULL;
-static int pkcs11_socket_fd = -1;
-static GIOChannel *pkcs11_socket_channel = NULL;
-static GHashTable *session_workers = NULL;
-
-static void
-stop_connection (gpointer key, gpointer value, gpointer data)
-{
- GkrAsyncWorker *worker = (GkrAsyncWorker*)key;
- int socket = GPOINTER_TO_INT (value);
-
- g_assert (socket >= 0);
- g_assert (worker);
-
- /* This makes sure the thread isn't blocked listening on the socket */
- shutdown (socket, SHUT_RDWR);
-
- /* completed_connection will be called to actually close the socket */
- gkr_async_worker_stop (worker);
-}
-
-static void
-completed_connection (GkrAsyncWorker* worker, gpointer result, gpointer user_data)
-{
- int socket = GPOINTER_TO_INT (user_data);
- g_assert (socket >= 0);
- close (socket);
-
- /* This will be NULL when we're shutting down */
- if (session_workers)
- g_hash_table_remove (session_workers, worker);
-}
-
-static gboolean
-handle_new_connection (GIOChannel *channel, GIOCondition cond, gpointer callback_data)
-{
- GkrAsyncWorker *worker;
- int fd;
- int new_fd;
- struct sockaddr_un addr;
- socklen_t addrlen;
-
- g_assert (session_workers);
-
- fd = g_io_channel_unix_get_fd (channel);
-
- addrlen = sizeof (addr);
- new_fd = accept (fd, (struct sockaddr *) &addr, &addrlen);
- if (new_fd < 0) {
- g_warning ("cannot accept pkcs11 connection: %s", strerror (errno));
- return TRUE;
- }
-
- /* And create a new thread */
- worker = gkr_async_worker_start (gkr_pkcs11_daemon_session_thread,
- completed_connection, GINT_TO_POINTER (new_fd));
- if (!worker) {
- g_warning ("couldn't create new connection session thread");
- close (new_fd);
- return TRUE;
- }
-
- g_hash_table_insert (session_workers, worker, GINT_TO_POINTER (new_fd));
-
- return TRUE;
-}
-
-static void
-pkcs11_daemon_cleanup (gpointer unused)
-{
- if (pkcs11_socket_channel)
- g_io_channel_unref (pkcs11_socket_channel);
- pkcs11_socket_channel = NULL;
-
- if (pkcs11_socket_fd != -1)
- close (pkcs11_socket_fd);
- pkcs11_socket_fd = -1;
-
- if(pkcs11_socket_path) {
- unlink (pkcs11_socket_path);
- g_free (pkcs11_socket_path);
- pkcs11_socket_path = NULL;
- }
-
- if (session_workers) {
-
- /* Swap out the hash table, so that completed_connection doesn't remove from it */
- GHashTable *workers = session_workers;
- session_workers = NULL;
-
- g_hash_table_foreach (workers, (GHFunc)stop_connection, NULL);
- g_hash_table_destroy (workers);
- }
-}
-
-gboolean
-gkr_pkcs11_daemon_setup (void)
-{
- struct sockaddr_un addr;
- const gchar *tmp_dir;
- int sock;
-
-#ifdef _DEBUG
- GKR_PKCS11_CHECK_CALLS ();
-#endif
-
- /* cannot be called more than once */
- g_assert (!pkcs11_socket_path);
- g_assert (pkcs11_socket_fd == -1);
- g_assert (!pkcs11_socket_channel);
-
- gkr_cleanup_register (pkcs11_daemon_cleanup, NULL);
-
- tmp_dir = gkr_daemon_util_get_master_directory ();
- g_return_val_if_fail (tmp_dir, FALSE);
-
- pkcs11_socket_path = g_strjoin (NULL, tmp_dir, G_DIR_SEPARATOR_S, "socket",
- GKR_PKCS11_SOCKET_EXT, NULL);
-
-#ifdef WITH_TESTS
- if (g_getenv ("GNOME_KEYRING_TEST_PATH"))
- unlink (pkcs11_socket_path);
-#endif
-
- sock = socket(AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- g_warning ("couldn't create pkcs11 socket: %s", strerror (errno));
- return FALSE;
- }
-
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, pkcs11_socket_path, sizeof (addr.sun_path));
- if (bind (sock, (struct sockaddr*)&addr, sizeof (addr)) < 0) {
- g_warning ("couldn't bind to pkcs11 socket: %s: %s",
- pkcs11_socket_path, strerror (errno));
- return FALSE;
- }
-
- if (listen (sock, 128) < 0) {
- g_warning ("couldn't listen on pkcs11 socket: %s: %s",
- pkcs11_socket_path, strerror (errno));
- return FALSE;
- }
-
- pkcs11_socket_channel = g_io_channel_unix_new (sock);
- g_io_add_watch (pkcs11_socket_channel, G_IO_IN | G_IO_HUP,
- handle_new_connection, NULL);
-
- /* Prep for sessions (ie: connections) */
- session_workers = g_hash_table_new (g_direct_hash, g_direct_equal);
-
- return TRUE;
-}
diff --git a/pkcs11/gkr-pkcs11-daemon.h b/pkcs11/gkr-pkcs11-daemon.h
deleted file mode 100644
index d574e59f..00000000
--- a/pkcs11/gkr-pkcs11-daemon.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-daemon.h - entry points for daemon PKCS#11 functionality
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#ifndef __GKR_PKCS11_DAEMON_H__
-#define __GKR_PKCS11_DAEMON_H__
-
-/* -----------------------------------------------------------------------------
- * GENERAL FUNCTIONS
- */
-
-gboolean gkr_pkcs11_daemon_setup (void);
-
-/* -----------------------------------------------------------------------------
- * Used by gkr-pkcs11-daemon.c and gkr-pkcs11-daemon-session.c
- */
-
-gpointer gkr_pkcs11_daemon_session_thread (gpointer user_data);
-
-#endif /* __GKR_PKCS11_DAEMON_H__ */
diff --git a/pkcs11/gkr-pkcs11-dsa.c b/pkcs11/gkr-pkcs11-dsa.c
deleted file mode 100644
index c01e5201..00000000
--- a/pkcs11/gkr-pkcs11-dsa.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-dsa.c - DSA mechanism code for PKCS#11
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkcs11-dsa.h"
-
-#include "common/gkr-crypto.h"
-
-#include "pk/gkr-pk-pubkey.h"
-#include "pk/gkr-pk-privkey.h"
-#include "pk/gkr-pk-util.h"
-
-static CK_RV
-object_to_public_key (GkrPkObject *object, gcry_sexp_t *s_key)
-{
- GkrPkPubkey *key;
-
- /* Validate and extract the key */
- if (!GKR_IS_PK_PUBKEY (object))
- return CKR_KEY_HANDLE_INVALID;
-
- key = GKR_PK_PUBKEY (object);
- if (gkr_pk_pubkey_get_algorithm (key) != GCRY_PK_DSA)
- return CKR_KEY_TYPE_INCONSISTENT;
-
- *s_key = gkr_pk_pubkey_get_key (key);
- if (!*s_key) {
- /* TODO: This happens when the user doesn't unlock key, proper code */
- g_warning ("couldn't get public key");
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
-
-static CK_RV
-object_to_private_key (GkrPkObject *object, gcry_sexp_t *s_key)
-{
- GkrPkPrivkey *key;
-
- /* Validate and extract the key */
- if (!GKR_IS_PK_PRIVKEY (object))
- return CKR_KEY_HANDLE_INVALID;
-
- key = GKR_PK_PRIVKEY (object);
- if (gkr_pk_privkey_get_algorithm (key) != GCRY_PK_DSA)
- return CKR_KEY_TYPE_INCONSISTENT;
-
- *s_key = gkr_pk_privkey_get_key (key);
- if (!*s_key) {
- /* TODO: This happens when the user doesn't unlock key, proper code */
- g_warning ("couldn't get private key");
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_dsa_sign (GkrPkObject *object, const guchar *plain, gsize n_plain,
- guchar **signature, gsize *n_signature)
-{
- gcry_sexp_t s_key, ssig, splain;
- gcry_error_t gcry;
- gcry_mpi_t mpi;
- gboolean res;
- CK_RV ret;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- ret = object_to_private_key (object, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no output, then don't process */
- if (!signature)
- return CKR_OK;
-
- if (!plain)
- return CKR_ARGUMENTS_BAD;
-
- if (n_plain != 20)
- return CKR_DATA_LEN_RANGE;
-
- /* Prepare the input s-expression */
- gcry = gcry_mpi_scan (&mpi, GCRYMPI_FMT_USG, plain, n_plain, NULL);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
- gcry = gcry_sexp_build (&splain, NULL, "(data (flags raw) (value %m))", mpi);
- gcry_mpi_release (mpi);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
-
- /* Do the magic */
- gcry = gcry_pk_sign (&ssig, splain, s_key);
- gcry_sexp_release (splain);
-
- /* TODO: Certain codes should be returned (data too big etc... ) */
- if (gcry) {
- g_warning ("signing of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-
- *signature = g_new0 (guchar, 40);
- *n_signature = 40;
-
- res = gkr_crypto_sexp_extract_mpi_aligned (ssig, *signature, 20, "dsa", "r", NULL) &&
- gkr_crypto_sexp_extract_mpi_aligned (ssig, *signature + 20, 20, "dsa", "s", NULL);
- g_return_val_if_fail (res, CKR_GENERAL_ERROR);
-
- gcry_sexp_release (ssig);
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_dsa_verify (GkrPkObject *object, const guchar *plain, gsize n_plain,
- const guchar *signature, gsize n_signature)
-{
- gcry_sexp_t s_key, ssig, splain;
- gcry_error_t gcry;
- gcry_mpi_t mpi, mpi2;
- CK_RV ret;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- ret = object_to_public_key (object, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no data, then don't process */
- if (!plain)
- return CKR_OK;
-
- if (!signature)
- return CKR_ARGUMENTS_BAD;
- if (n_plain != 20)
- return CKR_DATA_LEN_RANGE;
- if (n_signature != 40)
- return CKR_DATA_LEN_RANGE;
-
- /* Prepare the input s-expressions */
- gcry = gcry_mpi_scan (&mpi, GCRYMPI_FMT_USG, plain, n_plain, NULL);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
- gcry = gcry_sexp_build (&splain, NULL, "(data (flags raw) (value %m))", mpi);
- gcry_mpi_release (mpi);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
-
- gcry = gcry_mpi_scan (&mpi, GCRYMPI_FMT_USG, signature, 20, NULL);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
- gcry = gcry_mpi_scan (&mpi2, GCRYMPI_FMT_USG, signature + 20, 20, NULL);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
- gcry = gcry_sexp_build (&ssig, NULL, "(sig-val (dsa (r %m) (s %m)))", mpi, mpi2);
- gcry_mpi_release (mpi);
- gcry_mpi_release (mpi2);
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
-
- /* Do the magic */
- gcry = gcry_pk_verify (ssig, splain, s_key);
- gcry_sexp_release (splain);
- gcry_sexp_release (ssig);
-
- /* TODO: See if any other codes should be mapped */
- if (gcry_err_code (gcry) == GPG_ERR_BAD_SIGNATURE) {
- return CKR_SIGNATURE_INVALID;
- } else if (gcry) {
- g_warning ("signing of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
diff --git a/pkcs11/gkr-pkcs11-dsa.h b/pkcs11/gkr-pkcs11-dsa.h
deleted file mode 100644
index 4847ef5e..00000000
--- a/pkcs11/gkr-pkcs11-dsa.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-dsa.h - DSA mechanism code for PKCS#11
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKCS11DSA_H_
-#define GKRPKCS11DSA_H_
-
-#include "pkcs11.h"
-
-#include "pk/gkr-pk-object.h"
-
-CK_RV gkr_pkcs11_dsa_sign (GkrPkObject *key,
- const guchar *plain, gsize n_plain,
- guchar **signature, gsize *n_signature);
-
-CK_RV gkr_pkcs11_dsa_verify (GkrPkObject *key,
- const guchar *plain, gsize n_plain,
- const guchar *signature, gsize n_signature);
-
-CK_RV gkr_pkcs11_dsa_create_key (GkrPkObjectManager *manager,
- const GArray* attrs, GkrPkObject **key);
-
-#endif /*GKRPKCS11DSA_H_*/
diff --git a/pkcs11/gkr-pkcs11-mechanisms.h b/pkcs11/gkr-pkcs11-mechanisms.h
deleted file mode 100644
index 4dc9c71b..00000000
--- a/pkcs11/gkr-pkcs11-mechanisms.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-mechanisms.h - the PKCS#11 mechanisms we support
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <nielsen@memberwebs.com>
-*/
-
-#ifndef GKR_PKCS11_MECHANISMS_H
-#define GKR_PKCS11_MECHANISMS_H
-
-/*
- * IMPORTANT: Keep these two arrays in sync.
- */
-
-const static CK_MECHANISM_TYPE gkr_pkcs11_mechanisms[] = {
- CKM_RSA_PKCS,
- CKM_RSA_X_509,
- CKM_DSA
-};
-
-const static CK_MECHANISM_INFO gkr_pkcs11_mechanism_info[] = {
- /*
- * CKM_RSA_PKCS
- * For RSA, min and max are the minimum and maximum modulus in bits
- * TODO: CKF_SIGN_RECOVER | CKF_VERIFY_RECOVER
- */
- { 256, 32768, CKF_ENCRYPT | CKF_DECRYPT | CKF_SIGN | CKF_VERIFY | CKF_HW },
-
- /*
- * CKM_RSA_X509
- * For RSA, min and max are the minimum and maximum modulus in bits
- * TODO: CKF_SIGN_RECOVER | CKF_VERIFY_RECOVER
- */
- { 256, 32768, CKF_ENCRYPT | CKF_DECRYPT | CKF_SIGN | CKF_VERIFY | CKF_HW },
-
- /*
- * CKM_DSA
- * For DSA, min and max are the minimum and maximum modulus in bits
- */
- { 512, 1024, CKF_SIGN | CKF_VERIFY | CKF_HW }
-};
-
-#endif /* GKR_PKCS11_MECHANISMS_H */
diff --git a/pkcs11/gkr-pkcs11-message.c b/pkcs11/gkr-pkcs11-message.c
deleted file mode 100644
index 49b8b632..00000000
--- a/pkcs11/gkr-pkcs11-message.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-message.c - our marshalled PKCS#11 protocol.
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkcs11-message.h"
-#include "gkr-pkcs11-calls.h"
-
-#include <string.h>
-
-#ifndef ASSERT
-# ifdef G_DISABLE_ASSERT
-# define ASSERT(x)
-# else
-# include <assert.h>
-# define ASSERT(x) assert(x)
-# endif
-#endif
-
-GkrPkcs11Message*
-gkr_pkcs11_message_new (GkrBufferAllocator allocator)
-{
- GkrPkcs11Message *msg;
-
- ASSERT (allocator);
-
- msg = (GkrPkcs11Message*) (allocator)(NULL, sizeof (GkrPkcs11Message));
- if (!msg)
- return NULL;
- memset (msg, 0, sizeof (*msg));
-
- if (!gkr_buffer_init_full (&msg->buffer, 64, allocator)) {
- (allocator) (msg, 0); /* Frees allocation */
- return NULL;
- }
-
- gkr_pkcs11_message_reset (msg);
-
- return msg;
-}
-
-void
-gkr_pkcs11_message_free (GkrPkcs11Message *msg)
-{
- GkrBufferAllocator allocator;
-
- if (msg) {
- ASSERT (msg->buffer.allocator);
- allocator = msg->buffer.allocator;
- gkr_buffer_uninit (&msg->buffer);
-
- /* frees data buffer */
- (allocator) (msg, 0);
- }
-}
-
-void
-gkr_pkcs11_message_reset (GkrPkcs11Message *msg)
-{
- ASSERT (msg);
-
- msg->call_id = 0;
- msg->call_type = 0;
- msg->signature = NULL;
- msg->sigverify = NULL;
- msg->parsed = 0;
-
- gkr_buffer_reset (&msg->buffer);
-}
-
-CK_RV
-gkr_pkcs11_message_prep (GkrPkcs11Message *msg, int call_id, GkrPkcs11MessageType type)
-{
- int len;
-
- ASSERT (type);
- ASSERT (call_id >= PKCS11_CALL_ERROR);
- ASSERT (call_id < PKCS11_CALL_MAX);
-
- gkr_pkcs11_message_reset (msg);
-
- if (call_id != PKCS11_CALL_ERROR) {
-
- /* The call id and signature */
- if (type == GKR_PKCS11_REQUEST)
- msg->signature = gkr_pkcs11_calls[call_id].request;
- else if (type == GKR_PKCS11_RESPONSE)
- msg->signature = gkr_pkcs11_calls[call_id].response;
- else
- ASSERT (0 && "invalid message type");
- msg->sigverify = msg->signature;
- }
-
- msg->call_id = call_id;
- msg->call_type = type;
-
- /* Encode the two of them */
- gkr_buffer_add_uint32 (&msg->buffer, call_id);
- if (msg->signature) {
- len = strlen (msg->signature);
- gkr_buffer_add_byte_array (&msg->buffer, (unsigned char*)msg->signature, len);
- }
-
- msg->parsed = 0;
- return gkr_buffer_has_error (&msg->buffer) ? CKR_HOST_MEMORY : CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_parse (GkrPkcs11Message *msg, GkrPkcs11MessageType type)
-{
- const unsigned char *val;
- size_t len;
- uint32_t call_id;
-
- msg->parsed = 0;
-
- /* Pull out the call identifier */
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &(msg->parsed), &call_id)) {
- gkr_pkcs11_warn ("invalid message: couldn't read call identifier");
- return CKR_DEVICE_ERROR;
- }
-
- msg->signature = msg->sigverify = NULL;
-
- /* If it's an error code then no more processing */
- if (call_id == PKCS11_CALL_ERROR) {
- if (type == GKR_PKCS11_REQUEST) {
- gkr_pkcs11_warn ("invalid message: error code in request");
- return CKR_DEVICE_ERROR;
- }
- return CKR_OK;
- }
-
- /* The call id and signature */
- if (call_id <= 0 || call_id >= PKCS11_CALL_MAX) {
- gkr_pkcs11_warn ("invalid message: bad call id: %d", call_id);
- return CKR_DEVICE_ERROR;
- }
- if (type == GKR_PKCS11_REQUEST)
- msg->signature = gkr_pkcs11_calls[call_id].request;
- else if (type == GKR_PKCS11_RESPONSE)
- msg->signature = gkr_pkcs11_calls[call_id].response;
- else
- ASSERT (0 && "invalid message type");
- msg->call_id = call_id;
- msg->call_type = type;
- msg->sigverify = msg->signature;
-
- /* Verify the incoming signature */
- if (!gkr_buffer_get_byte_array (&msg->buffer, msg->parsed, &(msg->parsed), &val, &len)) {
- gkr_pkcs11_warn ("invalid message: couldn't read signature");
- return CKR_DEVICE_ERROR;
- }
-
- if ((strlen (msg->signature) != len) || (memcmp (val, msg->signature, len) != 0)) {
- gkr_pkcs11_warn ("invalid message: signature doesn't match");
- return CKR_DEVICE_ERROR;
- }
-
- return CKR_OK;
-}
-
-int
-gkr_pkcs11_message_equals (GkrPkcs11Message *m1, GkrPkcs11Message *m2)
-{
- ASSERT (m1 && m2);
-
- /* Any errors and messages are never equal */
- if (gkr_buffer_has_error (&m1->buffer) ||
- gkr_buffer_has_error (&m2->buffer))
- return 0;
-
- /* Calls and signatures must be identical */
- if (m1->call_id != m2->call_id)
- return 0;
- if (m1->call_type != m2->call_type)
- return 0;
- if (m1->signature && m2->signature) {
- if (strcmp (m1->signature, m2->signature) != 0)
- return 0;
- } else if (m1->signature != m2->signature) {
- return 0;
- }
-
- /* Data in buffer must be identical */
- return gkr_buffer_equal (&m1->buffer, &m2->buffer);
-}
-
-int
-gkr_pkcs11_message_verify_part (GkrPkcs11Message *msg, const char* part)
-{
- int len, ok;
-
- if (!msg->sigverify)
- return 1;
-
- len = strlen (part);
- ok = (strncmp (msg->sigverify, part, len) == 0);
- if (ok)
- msg->sigverify += len;
- return ok;
-}
-
-CK_RV
-gkr_pkcs11_message_write_attribute_array (GkrPkcs11Message *msg,
- CK_ATTRIBUTE_PTR arr, CK_ULONG num)
-{
- CK_ULONG i;
- CK_ATTRIBUTE_PTR attr;
- unsigned char validity;
-
- ASSERT (!num || arr);
- ASSERT (msg);
-
- /* Make sure this is in the rigth order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "aA"));
-
- /* Write the number of items */
- gkr_buffer_add_uint32 (&msg->buffer, num);
-
- for (i = 0; i < num; ++i) {
- attr = &(arr[i]);
-
- /* The attribute type */
- gkr_buffer_add_uint32 (&msg->buffer, attr->type);
-
- /* Write out the attribute validity */
- validity = (((CK_LONG)attr->ulValueLen) == -1) ? 0 : 1;
- gkr_buffer_add_byte (&msg->buffer, validity);
-
- /* The attribute value */
- if (validity)
- gkr_buffer_add_byte_array (&msg->buffer, attr->pValue, attr->ulValueLen);
- }
-
- return gkr_buffer_has_error (&msg->buffer) ? CKR_HOST_MEMORY : CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_read_boolean (GkrPkcs11Message *msg, CK_BBOOL *val)
-{
- unsigned char v;
-
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "b"));
-
- if (!gkr_buffer_get_byte (&msg->buffer, msg->parsed, &msg->parsed, &v))
- return CKR_GENERAL_ERROR;
- if (val)
- *val = v ? CK_TRUE : CK_FALSE;
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_write_boolean (GkrPkcs11Message *msg, CK_BBOOL val)
-{
- unsigned char v;
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "b"));
-
- v = CK_TRUE ? 1 : 0;
- if (!gkr_buffer_add_byte (&msg->buffer, v))
- return CKR_HOST_MEMORY;
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_write_byte_array (GkrPkcs11Message *msg,
- CK_BYTE_PTR arr, CK_ULONG num)
-{
- ASSERT (msg);
- ASSERT (!num || arr);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "ay"));
-
- if (!gkr_buffer_add_byte_array (&msg->buffer, arr, num))
- return CKR_HOST_MEMORY;
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_read_uint32 (GkrPkcs11Message *msg, CK_ULONG *val)
-{
- uint32_t v;
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "u"));
-
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed, &v))
- return CKR_GENERAL_ERROR;
- if (val)
- *val = v;
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_message_write_uint32 (GkrPkcs11Message *msg, CK_ULONG val)
-{
- ASSERT (msg);
-
- /* Make sure this is in the rigth order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "u"));
-
- if (!gkr_buffer_add_uint32 (&msg->buffer, val))
- return CKR_HOST_MEMORY;
-
- return CKR_OK;
-}
diff --git a/pkcs11/gkr-pkcs11-message.h b/pkcs11/gkr-pkcs11-message.h
deleted file mode 100644
index 78fee073..00000000
--- a/pkcs11/gkr-pkcs11-message.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-message.h - our marshalled PKCS#11 protocol.
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#include "common/gkr-buffer.h"
-
-#include "pkcs11.h"
-
-#ifndef GKR_PKCS11_MESSAGE_H
-#define GKR_PKCS11_MESSAGE_H
-
-/* This needs to be defined elsewhere in the module/daemon */
-void gkr_pkcs11_warn (const char* format, ...);
-
-typedef enum _GkrPkcs11MessageType {
- GKR_PKCS11_REQUEST = 1,
- GKR_PKCS11_RESPONSE
-} GkrPkcs11MessageType;
-
-typedef struct _GkrPkcs11Message {
- int call_id;
- GkrPkcs11MessageType call_type;
- const char *signature;
- GkrBuffer buffer;
-
- size_t parsed;
- const char *sigverify;
-} GkrPkcs11Message;
-
-#define gkr_pkcs11_message_is_verified(msg) \
- ((msg)->sigverify[0] == 0)
-
-#define gkr_pkcs11_message_buffer_error(msg) \
- (gkr_buffer_has_error(&(msg)->buffer))
-
-GkrPkcs11Message* gkr_pkcs11_message_new (GkrBufferAllocator allocator);
-
-void gkr_pkcs11_message_free (GkrPkcs11Message *msg);
-
-void gkr_pkcs11_message_reset (GkrPkcs11Message *msg);
-
-int gkr_pkcs11_message_equals (GkrPkcs11Message *m1,
- GkrPkcs11Message *m2);
-
-CK_RV gkr_pkcs11_message_prep (GkrPkcs11Message *msg,
- int call_id,
- GkrPkcs11MessageType type);
-
-CK_RV gkr_pkcs11_message_parse (GkrPkcs11Message *msg,
- GkrPkcs11MessageType type);
-
-int gkr_pkcs11_message_verify_part (GkrPkcs11Message *msg,
- const char* part);
-
-CK_RV gkr_pkcs11_message_write_attribute_array (GkrPkcs11Message *msg,
- CK_ATTRIBUTE_PTR arr,
- CK_ULONG num);
-
-CK_RV gkr_pkcs11_message_read_boolean (GkrPkcs11Message *msg,
- CK_BBOOL *val);
-
-CK_RV gkr_pkcs11_message_write_boolean (GkrPkcs11Message *msg,
- CK_BBOOL val);
-
-CK_RV gkr_pkcs11_message_write_byte_array (GkrPkcs11Message *msg,
- CK_BYTE_PTR arr,
- CK_ULONG num);
-
-CK_RV gkr_pkcs11_message_read_uint32 (GkrPkcs11Message *msg,
- CK_ULONG *val);
-
-CK_RV gkr_pkcs11_message_write_uint32 (GkrPkcs11Message *msg,
- CK_ULONG val);
-
-#endif /* GKR_PKCS11_MESSAGE_H */
diff --git a/pkcs11/gkr-pkcs11-module.c b/pkcs11/gkr-pkcs11-module.c
deleted file mode 100644
index 4ebcc7b5..00000000
--- a/pkcs11/gkr-pkcs11-module.c
+++ /dev/null
@@ -1,2486 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-module.c - a PKCS#11 module which communicates with gnome-keyring
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkcs11-message.h"
-#include "gkr-pkcs11-calls.h"
-#include "gkr-pkcs11-mechanisms.h"
-#include "pkcs11.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-secure-memory.h"
-#include "common/gkr-unix-credentials.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-
-/* TODO: module fini should call finalize_common */
-
-/*
- * There are two kinds of mutex here.
- *
- * 1. The global_mutex. This is used to lock all global variables, and
- * the_sessions list.
- * 2. Each session has its own mutex.
- */
-
-/*
- * RULES: Growl! Bark! Woof!
- *
- * - The mutexes must *always* be held in the above order!
- * - No external libraries.
- * - All 'public' functions (ie: C_Xxxx) must check crypto_initialized
- * as their first order of business.
- */
-
-/* -------------------------------------------------------------------
- * GLOBALS / DEFINES
- */
-
-#define MANUFACTURER_ID "GNOME Keyring "
-#define LIBRARY_DESCRIPTION "GNOME Keyring User Keys "
-#define LIBRARY_VERSION_MAJOR 1
-#define LIBRARY_VERSION_MINOR 1
-#define SLOT_DESCRIPTION "Keyring "
-#define HARDWARE_VERSION_MAJOR 0
-#define HARDWARE_VERSION_MINOR 0
-#define FIRMWARE_VERSION_MAJOR 0
-#define FIRMWARE_VERSION_MINOR 0
-#define SLOT_TOKEN_SERIAL "1.0 "
-#define SLOT_TOKEN_MODEL "1.0 "
-#define MAX_PIN_LEN 256
-#define MIN_PIN_LEN 1
-
-/* protects all global variables, and session list */
-static pthread_mutex_t global_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t memory_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-/* Whether we've been initialized, and on what process id it happened */
-static int pkcs11_initialized = 0;
-static pid_t crypto_pid = 0;
-static char socket_path[1024] = { 0, };
-static int slot_id = 0;
-
-#ifndef ASSERT
-# ifdef G_DISABLE_ASSERT
-# define ASSERT(x)
-# else
-# include <assert.h>
-# define ASSERT(x) assert(x)
-# endif
-#endif
-
-#define WARN(x) gkr_pkcs11_warn x
-#define PREREQ(x, v) \
- if (!(x)) { gkr_pkcs11_warn ("'%s' not true at %s", #x, __func__); return v; }
-
-/* -----------------------------------------------------------------------------
- * LOGGING and DEBUGGING
- */
-
-static void
-printva (const char* pref, const char* msg, va_list va)
-{
- fprintf (stderr, "gnome-keyring-pkcs11 %s: ", pref);
- vfprintf (stderr, msg, va);
- fputc ('\n', stderr);
-}
-
-void
-gkr_pkcs11_warn (const char* msg, ...)
-{
- va_list va;
- va_start (va, msg);
- printva ("WARNING", msg, va);
- va_end (va);
-}
-
-#ifdef _DEBUG
-
-static void
-gkr_pkcs11_debug (const char* msg, ...)
-{
- va_list va;
- va_start (va, msg);
- printva ("DEBUG", msg, va);
- va_end (va);
-}
-
-#define DBG(x) gkr_pkcs11_debug x
-
-#else /* !_DEBUG */
-
-#define DBG(x)
-
-#endif /* _DEBUG */
-
-
-/* -----------------------------------------------------------------------------
- * SECURE MEMORY
- *
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
- pthread_mutex_lock (&memory_mutex);
-}
-
-void
-gkr_memory_unlock (void)
-{
- pthread_mutex_unlock (&memory_mutex);
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- return realloc (p, sz);
-}
-
-/* -----------------------------------------------------------------------------
- * CALL SESSION
- */
-
-enum CallState {
- CALL_INVALID,
- CALL_READY,
- CALL_PREP,
- CALL_TRANSIT,
- CALL_PARSE
-};
-
-typedef struct _CallSession {
- CK_ULONG id; /* Unique ID for this session */
- int call_state; /* Whether a call is happening or not */
- int socket; /* The connection we're sending on */
-
- GkrPkcs11Message *req; /* The current request */
- GkrPkcs11Message *resp; /* The current response */
-
- GkrPkcs11Message *overflow; /* The last request which overflowed */
- int overflowed; /* Flag used by response parsing code */
-
- CK_NOTIFY notify_callback; /* Application specified callback */
- CK_VOID_PTR user_data; /* Argument for above */
-
- int refs; /* Reference count */
- pthread_mutex_t mutex; /* Mutex for protecting this structure */
-} CallSession;
-
-/* Allocator for call session buffers */
-static void*
-call_session_allocator (void* p, unsigned long sz)
-{
- /* TODO: Do passwords or secrets pass through here? */
- void* res = realloc (p, (size_t)sz);
- if (!res && sz)
- WARN(("memory allocation of %lu bytes failed", sz));
- return res;
-}
-
-/*
- * Disconnects a call session. An active operation over this will
- * respond by returning CKR_SESSION_CLOSED.
- */
-static void
-call_session_disconnect (CallSession *cs)
-{
- ASSERT (cs);
-
- if (cs->socket != -1) {
- DBG (("S%d: disconnected", cs->id));
- close (cs->socket);
- cs->socket = -1;
- }
-}
-
-/*
- * Destroy's a call session. This is done by call_session_unref_and_unlock()
- * when the reference count reaches 0.
- */
-static void
-call_session_destroy (CallSession* cs)
-{
- ASSERT (cs);
- ASSERT (cs->refs == 0);
-
- call_session_disconnect (cs);
- ASSERT (cs->socket == -1);
-
- gkr_pkcs11_message_free (cs->req);
- gkr_pkcs11_message_free (cs->resp);
- gkr_pkcs11_message_free (cs->overflow);
-
- pthread_mutex_destroy (&cs->mutex);
-
- DBG (("S%d: destroyed", cs->id));
- free (cs);
-}
-
-/*
- * Allocate a new call session. Called from C_OpenSession() the session is
- * not ready for use after this call.
- */
-static CallSession*
-call_session_create ()
-{
- CallSession *cs = calloc (1, sizeof (CallSession));
- if (!cs)
- return NULL;
-
- if (pthread_mutex_init (&cs->mutex, NULL) != 0) {
- free (cs);
- return NULL;
- }
-
- cs->req = NULL;
- cs->resp = NULL;
- cs->overflow = NULL;
- cs->id = 0;
- cs->call_state = CALL_INVALID;
- cs->socket = -1;
- cs->overflowed = 0;
- cs->refs = 0;
-
- DBG (("S0: created"));
- return cs;
-}
-
-/*
- * Connect a newly created call session to gnome-keyring-daemon. The socket
- * path was discovered in C_Initialize()
- */
-static CK_RV
-call_session_connect (CallSession *cs)
-{
- struct sockaddr_un addr;
- int sock;
-
- ASSERT (cs);
- ASSERT (cs->socket == -1);
- ASSERT (cs->call_state == CALL_INVALID);
- ASSERT (pkcs11_initialized);
-
- /* Yup, no environment variable == no token */
- if (!socket_path[0]) {
- WARN (("S%d: no socket available to connect session to"));
- return CKR_TOKEN_NOT_PRESENT;
- }
-
- DBG (("S%d: connecting to: %s", cs->id, socket_path));
-
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, socket_path, sizeof (addr.sun_path));
-
- sock = socket (AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- WARN (("S%d: couldn't open socket: %s",
- cs->id, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
-
- /* close on exec */
- if (fcntl (sock, F_SETFD, 1) == -1) {
- close (sock);
- WARN (("S%d: couldn't secure socket: %s",
- cs->id, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
-
- if (connect (sock, (struct sockaddr*) &addr, sizeof (addr)) < 0) {
- close (sock);
- WARN (("S%d: couldn't connect to: %s: %s",
- cs->id, socket_path, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
-
- if (gkr_unix_credentials_write (sock) < 0) {
- close (sock);
- WARN (("S%d: couldn't send socket credentials: %s",
- cs->id, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
-
- cs->socket = sock;
- cs->call_state = CALL_READY;
- DBG (("S%d: connected", cs->id));
-
- return CKR_OK;
-}
-
-/*
- * Perform the initial setup for a new call via a session.
- */
-static CK_RV
-call_session_prep_call (CallSession *cs, int call_id)
-{
- CK_RV ret;
-
- ASSERT (cs);
- ASSERT (cs->call_state > CALL_INVALID);
-
- /* Only one call can happen at once */
- if (cs->call_state > CALL_READY) {
- WARN (("S%d: a session call is active", cs->id));
- return CKR_OPERATION_ACTIVE;
- }
-
- ASSERT (cs->call_state == CALL_READY);
- ASSERT (!cs->overflowed);
-
- /* Is the socket closed? */
- if (cs->socket == -1) {
- WARN (("S%d: session has been closed", cs->id));
- return CKR_SESSION_CLOSED;
- }
-
- /* Allocate a new request if we've lost the old one */
- if (!cs->req) {
- /* TODO: Do passwords or secrets ever pass through here? */
- cs->req = gkr_pkcs11_message_new (call_session_allocator);
- if (!cs->req) {
- WARN (("S%d: cannot allocate request buffer: out of memory", cs->id));
- return CKR_HOST_MEMORY;
- }
- }
-
- /* Put in the Call ID and signature */
- gkr_pkcs11_message_reset (cs->req);
- ret = gkr_pkcs11_message_prep (cs->req, call_id, GKR_PKCS11_REQUEST);
- if (ret != CKR_OK)
- return ret;
-
- DBG (("S%d: prepared call: %d", cs->id, call_id));
-
- /* Ready to fill in arguments */
- cs->call_state = CALL_PREP;
- return CKR_OK;
-}
-
-/*
- * Write all data to session socket. During blocking write, the session is
- * unlocked, which allows it to be closed or return errors on other threads.
- */
-static CK_RV
-call_session_write (CallSession *cs, unsigned char* data, size_t len)
-{
- int fd, r;
-
- ASSERT (cs);
- ASSERT (data);
- ASSERT (len > 0);
-
- while (len > 0) {
-
- fd = cs->socket;
- if (fd == -1) {
- WARN (("S%d: couldn't send data: session socket has been closed", cs->id));
- return CKR_SESSION_CLOSED;
- }
-
- pthread_mutex_unlock (&cs->mutex);
-
- /* TODO: Need to implement timeouts, and call notify on session */
- r = write (fd, data, len);
-
- pthread_mutex_lock (&cs->mutex);
-
- if (r == -1) {
- if (errno == EPIPE) {
- WARN (("S%d: couldn't send data: daemon closed connection", cs->id));
- call_session_disconnect (cs);
- return CKR_SESSION_CLOSED;
- } else if (errno != EAGAIN && errno != EINTR) {
- WARN (("S%d: couldn't send data: %s", cs->id, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
- } else {
- DBG (("S%d: wrote %d bytes", cs->id, r));
- data += r;
- len -= r;
- }
- }
-
- return CKR_OK;
-}
-
-/*
- * Read a certain amount of data from session socket. During blocking read, the
- * session is unlocked, which allows closing or return errors on other threads.
- */
-static CK_RV
-call_session_read (CallSession *cs, unsigned char* data, size_t len)
-{
- int fd, r;
-
- ASSERT (cs);
- ASSERT (data);
- ASSERT (len > 0);
-
- while (len > 0) {
-
- fd = cs->socket;
- if (fd == -1) {
- WARN (("S%d: couldn't receive data: session socket has been closed", cs->id));
- return CKR_SESSION_CLOSED;
- }
-
- pthread_mutex_unlock (&cs->mutex);
-
- /* TODO: Need to implement timeouts, and call notify on session */
- r = read (fd, data, len);
-
- pthread_mutex_lock (&cs->mutex);
-
- if (r == 0) {
- WARN (("S%d: couldn't receive data: daemon closed connection", cs->id));
- call_session_disconnect (cs);
- return CKR_SESSION_CLOSED;
- } else if (r == -1) {
- if (errno != EAGAIN && errno != EINTR) {
- WARN (("S%d: couldn't receive data: %s", cs->id, strerror (errno)));
- return CKR_DEVICE_ERROR;
- }
- } else {
- DBG (("S%d: read %d bytes", cs->id, r));
- data += r;
- len -= r;
- }
- }
-
- return CKR_OK;
-}
-
-/*
- * Used by call_session_do_call() to actually send the message to the daemon.
- * Note how we unlock and relock the session during the call.
- */
-static CK_RV
-call_session_send_recv (CallSession *cs)
-{
- GkrPkcs11Message *req, *resp;
- unsigned char buf[4];
- uint32_t len;
- CK_RV ret;
-
- ASSERT (cs);
- ASSERT (cs->req);
- ASSERT (cs->call_state == CALL_PREP);
-
- cs->call_state = CALL_TRANSIT;
-
- /* Setup the response buffer properly */
- if (!cs->resp) {
- /* TODO: Do secrets or passwords ever flow through here? */
- cs->resp = gkr_pkcs11_message_new (call_session_allocator);
- if (!cs->resp) {
- WARN (("S%d: couldn't allocate response buffer: out of memory", cs->id));
- return CKR_HOST_MEMORY;
- }
- }
- gkr_pkcs11_message_reset (cs->resp);
-
- /*
- * Now as an additional check to make sure nothing nasty will
- * happen while we are unlocked, we remove the request and
- * response from the session during the action.
- */
- req = cs->req;
- resp = cs->resp;
- cs->req = cs->resp = NULL;
- ASSERT (cs->overflow == NULL);
-
- /* Send the number of bytes, and then the data */
- gkr_buffer_encode_uint32 (buf, req->buffer.len);
- ret = call_session_write (cs, buf, 4);
- if (ret != CKR_OK)
- goto cleanup;
- ret = call_session_write (cs, req->buffer.buf, req->buffer.len);
- if (ret != CKR_OK)
- goto cleanup;
-
- /* Now read out the number of bytes, and then the data */
- ret = call_session_read (cs, buf, 4);
- if (ret != CKR_OK)
- goto cleanup;
- len = gkr_buffer_decode_uint32 (buf);
- if (!gkr_buffer_reserve (&resp->buffer, len + resp->buffer.len)) {
- WARN (("S%d: couldn't allocate %u byte response area: out of memory",
- cs->id, len));
- ret = CKR_HOST_MEMORY;
- goto cleanup;
- }
- ret = call_session_read (cs, resp->buffer.buf, len);
- if (ret != CKR_OK)
- goto cleanup;
-
- gkr_buffer_add_empty (&resp->buffer, len);
- ret = gkr_pkcs11_message_parse (resp, GKR_PKCS11_RESPONSE);
- if (ret != CKR_OK)
- goto cleanup;
-
- DBG (("S%d: received response from daemon", cs->id));
-
-cleanup:
- /* Make sure nobody else used this thread while unlocked */
- ASSERT (cs->call_state == CALL_TRANSIT);
- ASSERT (cs->resp == NULL);
- cs->resp = resp;
- ASSERT (cs->req == NULL);
- cs->req = req;
-
- return ret;
-}
-
-/*
- * At this point the request is ready. So we validate it, and we send it to
- * the daemon for a response.
- */
-static CK_RV
-call_session_do_call (CallSession *cs)
-{
- CK_RV ret = CKR_OK;
- CK_ULONG ckerr;
- int reuse = 0;
-
- ASSERT (cs);
- ASSERT (cs->req);
- ASSERT (cs->call_state == CALL_PREP);
- ASSERT (!cs->overflowed);
-
- /* Did building the call fail? */
- if (gkr_pkcs11_message_buffer_error (cs->req)) {
- WARN (("S%d: couldn't allocate request area: out of memory", cs->id));
- return CKR_HOST_MEMORY;
- }
-
- if (cs->socket == -1) {
- WARN (("S%d: session socket has been closed", cs->id));
- return CKR_SESSION_CLOSED;
- }
-
- /* Make sure that the signature is valid */
- ASSERT (gkr_pkcs11_message_is_verified (cs->req));
-
- if (cs->overflow) {
-
- /* See if this is the same as the call that overflowed */
- if (gkr_pkcs11_message_equals (cs->req, cs->overflow)) {
- ASSERT (cs->resp);
- reuse = 1;
-
- /* Prepare to reparse this message */
- ret = gkr_pkcs11_message_parse (cs->resp, GKR_PKCS11_RESPONSE);
- if (ret != CKR_OK) {
- WARN (("S%d: reparsing overflowed response failed: %d", ret));
- return ret;
- }
-
- DBG (("S%d: last message overflowed, using same response"));
- }
-
- /* We have no further use for this... */
- gkr_pkcs11_message_free (cs->overflow);
- cs->overflow = NULL;
- }
-
- /* Do the dialog with daemon */
- if (!reuse)
- ret = call_session_send_recv (cs);
-
- cs->call_state = CALL_PARSE;
-
- if (ret != CKR_OK)
- return ret;
-
- /* If it's an error code then return it */
- if (cs->resp->call_id == PKCS11_CALL_ERROR) {
-
- ret = gkr_pkcs11_message_read_uint32 (cs->resp, &ckerr);
- if (ret != CKR_OK) {
- WARN (("S%d: invalid error response from gnome-keyring-daemon: too short", cs->id));
- return ret;
- }
-
- if (ckerr <= CKR_OK) {
- WARN (("S%d: invalid error response from gnome-keyring-daemon: bad error code", cs->id));
- return CKR_DEVICE_ERROR;
- }
-
- /* An error code from the daemon */
- return (CK_RV)ckerr;
- }
-
- /* Make sure daemon answered the right call */
- if (cs->req->call_id != cs->resp->call_id) {
- WARN (("S%d: invalid response from gnome-keyring-daemon: call mismatch", cs->id));
- return CKR_DEVICE_ERROR;
- }
-
- ASSERT (!gkr_pkcs11_message_buffer_error (cs->resp));
- ASSERT (!cs->overflowed);
-
- DBG (("S%d: parsing response values", cs->id));
-
- return CKR_OK;
-}
-
-static CK_RV
-call_session_done_call (CallSession *cs, CK_RV ret)
-{
- ASSERT (cs);
- ASSERT (cs->call_state > CALL_INVALID);
-
- if (cs->call_state == CALL_PARSE && cs->req && cs->resp) {
-
- /* Check for parsing errors that were not caught elsewhere */
- if (ret == CKR_OK) {
-
- if (gkr_pkcs11_message_buffer_error (cs->resp)) {
- WARN (("S%d: invalid response from gnome-keyring-daemon: bad argument data", cs->id));
- return CKR_GENERAL_ERROR;
- }
-
- /* Double check that the signature matched our decoding */
- ASSERT (gkr_pkcs11_message_is_verified (cs->resp));
- }
-
- /* Caller didn't supply enough space, ... */
- if (cs->overflowed || ret == CKR_BUFFER_TOO_SMALL) {
-
- DBG (("S%d: not enough space to store response values", cs->id));
-
- /* ...Save away the request for later */
- ASSERT (!cs->overflow);
- cs->overflow = cs->req;
- cs->req = NULL;
- }
- }
-
- /* Some cleanup */
- cs->overflowed = 0;
- cs->call_state = CALL_READY;
-
- return ret;
-}
-
-/* -------------------------------------------------------------------
- * CALL SESSION LIST
- */
-
-typedef struct _CallSessions {
- CallSession **list;
- size_t lmax;
-} CallSessions;
-
-/* These are protected by global_mutex */
-static CallSessions the_sessions = { NULL, 0 }; /* Table of sessions by ID */
-
-static CK_RV
-call_session_find_lock_ref_internal (CallSessions *css, CK_ULONG id,
- int remove, CallSession **cs_ret)
-{
- CallSession *cs;
-
- ASSERT (css);
- ASSERT (cs_ret);
-
- if (id >= css->lmax) {
- WARN (("invalid session id: %d", id));
- return CKR_SESSION_HANDLE_INVALID;
- }
-
- /* A seemingly valid id */
- ASSERT (css->list);
- cs = css->list[id];
-
- /*
- * An initial check is done to make sure this session is not active.
- * This is done outside of the lock. The real check is done later
- * inside a lock. This is so we can return quickly without blocking
- * in most cases.
- */
-
- if (!cs) {
- WARN (("invalid session id: %d", id));
- return CKR_SESSION_HANDLE_INVALID;
- }
-
- ASSERT (cs->id == id);
-
- /* Closing takes precedence over active operations */
- if (!remove) {
- if (cs->call_state == CALL_INVALID) {
- WARN (("S%d: session is in an invalid state", id));
- return CKR_SESSION_HANDLE_INVALID;
- }
- if (cs->call_state != CALL_READY) {
- WARN (("S%d: an operation is already active in this session", id));
- return CKR_OPERATION_ACTIVE;
- }
- }
-
- /* Lock the CallSession */
- pthread_mutex_lock (&cs->mutex);
-
- /* Make sure it doesn't go away */
- ASSERT (cs->refs > 0);
- cs->refs++;
-
- DBG (("S%d: found and locked session", id));
-
- /* And remove it if necessary */
- if (remove) {
- css->list[id] = NULL;
-
- /* The session list reference */
- cs->refs--;
- ASSERT (cs->refs > 0);
-
- DBG (("S%d: removed session from list", id));
- }
-
- *cs_ret = cs;
- return CKR_OK;
-}
-
-static CK_RV
-call_session_find_lock_and_ref (CK_ULONG id, int remove, CallSession **cs)
-{
- /* This must be called without any locks held */
-
- CK_RV ret = CKR_OK;
-
- ASSERT (cs);
- ASSERT (pkcs11_initialized);
-
- if (id <= 0) {
- WARN (("invalid session id passed: %d", id));
- return CKR_ARGUMENTS_BAD;
- }
-
- pthread_mutex_lock (&global_mutex);
-
- ret = call_session_find_lock_ref_internal (&the_sessions,
- id, remove, cs);
-
- pthread_mutex_unlock (&global_mutex);
-
- return ret;
-}
-
-static void
-call_session_unref_and_unlock (CallSession *cs)
-{
- /* The CallSession must be locked at this point */
-
- int refs;
-
- ASSERT (cs);
-
- ASSERT (cs->refs > 0);
- cs->refs--;
-
- refs = cs->refs;
-
- DBG (("S%d: unlocked session", cs->id));
- pthread_mutex_unlock (&cs->mutex);
-
-
- /*
- * At this point if no references are held, then we can safely
- * delete. No other thread should be involved.
- */
-
- if (refs == 0)
- call_session_destroy (cs);
-}
-
-static CK_RV
-call_session_register (CallSession *cs)
-{
- /* This must be called without any locks held */
-
- CK_RV ret = CKR_OK;
- CK_ULONG id = 0;
- size_t i;
-
- ASSERT (pkcs11_initialized);
-
- ASSERT (cs);
- ASSERT (cs->id == 0 && cs->refs == 0);
-
- DBG (("S%d: registering new session", cs->id));
-
- pthread_mutex_lock (&global_mutex);
-
- /* Find a nice session identifier */
- while (id == 0) {
-
- /*
- * PKCS#11 GRAY AREA: We're assuming we can reuse session
- * handles. PKCS#11 spec says they're like file handles,
- * and file handles get reused :)
- */
-
- /* Note we never put anything in array position '0' */
- for (i = 1; i < the_sessions.lmax; ++i) {
-
- /* Any empty position will do */
- if (!the_sessions.list[i]) {
- id = i;
- break;
- }
- }
-
- /* Couldn't find a handle, reallocate */
- if (id == 0) {
- CallSession** buf;
- size_t oldmax, newmax;
-
- oldmax = the_sessions.lmax;
- newmax = oldmax + 16;
-
- buf = realloc (the_sessions.list, newmax * sizeof (CallSession*));
- if (!buf) {
- WARN (("couldn't allocate session list, out of memory"));
- ret = CKR_HOST_MEMORY;
- break;
- }
-
- /* Choose the first of the new block as the id */
- id = oldmax;
-
- /* Clear new memory */
- the_sessions.list = buf;
- for ( ; oldmax < newmax; ++oldmax)
- buf[oldmax] = NULL;
- the_sessions.lmax = newmax;
-
- DBG (("allocated new session list: %d max", newmax));
- }
- }
-
- if (ret == CKR_OK) {
- ASSERT (id > 0 && id < the_sessions.lmax);
- ASSERT (the_sessions.list[id] == NULL);
-
- /* And assign it to the session handle */
- the_sessions.list[id] = cs;
- cs->id = id;
-
- /* The session list reference */
- ASSERT (cs->refs == 0);
- cs->refs++;
-
- DBG (("S%d: registered sesson id", id));
- }
-
- pthread_mutex_unlock (&global_mutex);
-
- return ret;
-}
-
-static void
-call_session_close_all ()
-{
- /* This must be called without any locks held */
-
- CallSessions sessions;
- CallSession *cs;
- CK_LONG i;
- CK_RV ret;
-
- /*
- * PKCS#11 GRAY AREA: What happens when this gets called
- * concurrently? We don't return an error on the second call,
- * because by the time it returns, all sessions should be closed.
- */
-
- pthread_mutex_lock (&global_mutex);
-
- /* Steal all the session data */
- sessions.list = the_sessions.list;
- the_sessions.list = NULL;
- sessions.lmax = the_sessions.lmax;
- the_sessions.lmax = 0;
-
- if (sessions.list || sessions.lmax) {
- DBG (("closing all sessions"));
- }
-
- pthread_mutex_unlock (&global_mutex);
-
- /* Close each session in turn */
- for (i = 1; i < sessions.lmax; ++i) {
-
- if (!sessions.list[i])
- continue;
-
- ret = call_session_find_lock_ref_internal (&sessions, i, 1, &cs);
- ASSERT (ret == CKR_OK);
-
- /*
- * This closes the socket and marks session as closed.
- * Session actually removed from memory when all refs are gone.
- */
- call_session_disconnect (cs);
-
-
- call_session_unref_and_unlock (cs);
- }
-
- /* We stole the memory above, free it now */
- if (sessions.list) {
- free (sessions.list);
- DBG (("freed session list"));
- }
-}
-
-/* -----------------------------------------------------------------------------
- * MODULE SPECIFIC PROTOCOL CODE
- */
-
-static CK_RV
-proto_read_attribute_array (GkrPkcs11Message *msg, CK_ATTRIBUTE_PTR arr,
- CK_ULONG_PTR len, CK_ULONG max)
-{
- uint32_t i, num, val;
- CK_ATTRIBUTE_PTR attr;
- const unsigned char *attrval;
- size_t attrlen;
- unsigned char validity;
- CK_RV ret;
-
- ASSERT (len);
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "aA"));
-
- /* Get the number of items. We need this value to be correct */
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, &num))
- return CKR_DEVICE_ERROR; /* parse error */
-
- *len = num;
-
- if (arr && max < num)
- return CKR_BUFFER_TOO_SMALL;
-
- ret = CKR_OK;
-
- /* We need to go ahead and read everything in all cases */
- for (i = 0; i < num; ++i) {
-
- /* The attribute type */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, &val);
-
- /* Attribute validity */
- gkr_buffer_get_byte (&msg->buffer, msg->parsed,
- &msg->parsed, &validity);
-
- /* And the data itself */
- if (validity)
- gkr_buffer_get_byte_array (&msg->buffer, msg->parsed,
- &msg->parsed, &attrval, &attrlen);
-
- /* Don't act on this data unless no errors */
- if (gkr_buffer_has_error (&msg->buffer))
- break;
-
- /* Try and stuff it in the output data */
- if (arr) {
- attr = &(arr[i]);
- attr->type = val;
-
- if (validity) {
- /* Just requesting the attribute size */
- if (!attr->pValue) {
- attr->ulValueLen = attrlen;
-
- /* Wants attribute data, but too small */
- } else if (attr->ulValueLen < attrlen) {
- attr->ulValueLen = attrlen;
- ret = CKR_BUFFER_TOO_SMALL;
-
- /* Wants attribute data, value is null */
- } else if (attrval == NULL) {
- attr->ulValueLen = 0;
-
- /* Wants attribute data, enough space */
- } else {
- attr->ulValueLen = attrlen;
- memcpy (attr->pValue, attrval, attrlen);
- }
-
- /* Not a valid attribute */
- } else {
- attr->ulValueLen = ((CK_ULONG)-1);
- }
- }
- }
-
- return gkr_buffer_has_error (&msg->buffer) ? CKR_DEVICE_ERROR : ret;
-}
-
-static CK_RV
-proto_read_byte_array (GkrPkcs11Message *msg, CK_BYTE_PTR arr,
- CK_ULONG_PTR len, CK_ULONG max)
-{
- const unsigned char *val;
- size_t vlen;
-
- ASSERT (len);
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "ay"));
-
-
- if (!gkr_buffer_get_byte_array (&msg->buffer, msg->parsed,
- &(msg->parsed), &val, &vlen))
- return CKR_DEVICE_ERROR; /* parse error */
-
- *len = vlen;
-
- /* Just asking us for size */
- if (!arr)
- return CKR_OK;
-
- if (max < vlen)
- return CKR_BUFFER_TOO_SMALL;
-
- /* Enough space, yay */
- memcpy (arr, val, vlen);
- return CKR_OK;
-}
-
-
-static CK_RV
-proto_read_uint32_array (GkrPkcs11Message *msg, CK_ULONG_PTR arr,
- CK_ULONG_PTR len, CK_ULONG max)
-{
- uint32_t i, num, val;
-
- ASSERT (len);
- ASSERT (msg);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "au"));
-
- /* Get the number of items. We need this value to be correct */
- if (!gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, &num))
- return CKR_DEVICE_ERROR; /* parse error */
-
- *len = num;
-
- if (arr && max < num)
- return CKR_BUFFER_TOO_SMALL;
-
- /* We need to go ahead and read everything in all cases */
- for (i = 0; i < num; ++i) {
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed,
- &msg->parsed, &val);
- if (arr)
- arr[i] = val;
- }
-
- return gkr_buffer_has_error (&msg->buffer) ? CKR_DEVICE_ERROR : CKR_OK;
-}
-
-static CK_RV
-proto_write_mechanism (GkrPkcs11Message *msg, CK_MECHANISM_PTR mech)
-{
- int use_parameter = 0;
-
- ASSERT (msg);
- ASSERT (mech);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "M"));
-
- /* The mechanism type */
- gkr_buffer_add_uint32 (&msg->buffer, mech->mechanism);
-
- /*
- * Some callers of PKCS11 expect us not to access the parameter
- * if it's not required for the mechanims, and leave it
- * uninitialized and full of strange values which we could
- * crash trying to access. Yuck.
- *
- * This list is incomplete. As we add mechanims which have parameters
- * to gnome-keyring, we should add those here.
- */
- switch (mech->mechanism) {
- case CKM_RSA_PKCS_OAEP:
- case CKM_RSA_PKCS_PSS:
- use_parameter = 1;
- break;
- };
-
- /* The parameter value */
- if (use_parameter)
- gkr_buffer_add_byte_array (&msg->buffer, mech->pParameter,
- mech->ulParameterLen);
- else
- gkr_buffer_add_byte_array (&msg->buffer, NULL, 0);
-
- return gkr_buffer_has_error (&msg->buffer) ? CKR_HOST_MEMORY : CKR_OK;
-}
-
-static CK_RV
-proto_read_sesssion_info (GkrPkcs11Message *msg, CK_SESSION_INFO_PTR info)
-{
- uint32_t val;
-
- ASSERT (msg);
- ASSERT (info);
-
- /* Make sure this is in the right order */
- ASSERT (!msg->signature || gkr_pkcs11_message_verify_part (msg, "I"));
-
- /* The slot id (we ignore) */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed, &val);
- info->slotID = 0;
-
- /* The state */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed, &val);
- info->state = val;
-
- /* The flags */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed, &val);
- info->flags = val;
-
- /* The device error code */
- gkr_buffer_get_uint32 (&msg->buffer, msg->parsed, &msg->parsed, &val);
- info->ulDeviceError = val;
-
- return gkr_buffer_has_error (&msg->buffer) ? CKR_DEVICE_ERROR : CKR_OK;
-}
-
-
-/* -------------------------------------------------------------------
- * INITIALIZATION and 'GLOBAL' CALLS
- */
-
-static CK_RV
-gkr_C_Initialize (CK_VOID_PTR init_args)
-{
- CK_C_INITIALIZE_ARGS_PTR args;
- CK_RV ret = CKR_OK;
- pid_t initialize_pid;
- char *path;
- int l;
-
- DBG (("C_Initialize: enter"));
-
- /*
- * We check this first to make sure that using our own mutex
- * initialization is ok.
- */
-
-#ifdef _DEBUG
- GKR_PKCS11_CHECK_CALLS();
-#endif
-
- if (init_args != NULL) {
- int supplied_ok;
-
- /* pReserved must be NULL */
- args = init_args;
- PREREQ (!args->pReserved, CKR_ARGUMENTS_BAD);
-
- /* ALL supplied function pointers need to have the value either NULL or non-NULL. */
- supplied_ok = (args->CreateMutex == NULL && args->DestroyMutex == NULL &&
- args->LockMutex == NULL && args->UnlockMutex == NULL) ||
- (args->CreateMutex != NULL && args->DestroyMutex != NULL &&
- args->LockMutex != NULL && args->UnlockMutex != NULL);
- PREREQ (supplied_ok, CKR_ARGUMENTS_BAD);
-
- /*
- * When the CKF_OS_LOCKING_OK flag isn't set and mutex function pointers are supplied
- * by an application, return an error. DBus must be able to use its own locks.
- */
- if (!(args->flags & CKF_OS_LOCKING_OK) && (args->CreateMutex != NULL)) {
- PREREQ (FALSE, CKR_CANT_LOCK);
- }
- }
-
- /* Main initialization */
- pthread_mutex_lock (&global_mutex);
-
- initialize_pid = getpid ();
- if (pkcs11_initialized) {
-
- /* This process has called C_Initialize already */
- if (initialize_pid == crypto_pid) {
- WARN (("C_Initialize called twice for same process"));
- ret = CKR_CRYPTOKI_ALREADY_INITIALIZED;
- }
- }
-
- if (ret == CKR_OK) {
-
- /* slot_id is a random number to avoid the temptation of refering to
- the slot by slot id. */
- slot_id = rand ();
-
- pkcs11_initialized = 1;
- crypto_pid = initialize_pid;
-
- /* Lookup the socket path, append '.pkcs11' */
- socket_path[0] = 0;
- path = getenv ("GNOME_KEYRING_SOCKET");
- if (path && path[0]) {
- l = sizeof (socket_path) - 1;
- strncpy (socket_path, path, l);
- strncat (socket_path, ".pkcs11", l);
- socket_path[l] = 0;
-
- DBG (("gnome-keyring pkcs11 socket is: %s", socket_path));
- }
- }
-
- pthread_mutex_unlock (&global_mutex);
-
- /*
- * Remove all the sessions. This happens when we reinitialize
- * due to a fork, see above.
- */
- call_session_close_all ();
-
- DBG (("C_Initialize: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_Finalize (CK_VOID_PTR reserved)
-{
- DBG (("C_Finalize: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (!reserved, CKR_ARGUMENTS_BAD);
-
- pthread_mutex_lock (&global_mutex);
-
- /* This should stop all other calls in */
- pkcs11_initialized = 0;
-
- slot_id = -1;
- crypto_pid = 0;
- socket_path[0] = 0;
-
- pthread_mutex_unlock (&global_mutex);
-
- call_session_close_all ();
-
- DBG (("C_Finalize: %d", CKR_OK));
- return CKR_OK;
-}
-
-static CK_RV
-gkr_C_GetInfo (CK_INFO_PTR info)
-{
- DBG (("C_GetInfo: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (info, CKR_ARGUMENTS_BAD);
-
- ASSERT (strlen (MANUFACTURER_ID) == 32);
- ASSERT (strlen (LIBRARY_DESCRIPTION) == 32);
-
- info->cryptokiVersion.major = CRYPTOKI_VERSION_MAJOR;
- info->cryptokiVersion.minor = CRYPTOKI_VERSION_MINOR;
- info->libraryVersion.major = LIBRARY_VERSION_MAJOR;
- info->libraryVersion.minor = LIBRARY_VERSION_MINOR;
- info->flags = 0;
- strncpy ((char*)info->manufacturerID, MANUFACTURER_ID, 32);
- strncpy ((char*)info->libraryDescription, LIBRARY_DESCRIPTION, 32);
-
- DBG (("C_GetInfo: %d", CKR_OK));
- return CKR_OK;
-}
-
-static CK_RV
-gkr_C_GetFunctionList (CK_FUNCTION_LIST_PTR_PTR list)
-{
- /* This would be a strange call to receive */
- return C_GetFunctionList (list);
-}
-
-static CK_RV
-gkr_C_GetSlotList (CK_BBOOL tokenPresent, CK_SLOT_ID_PTR slot_list, CK_ULONG_PTR count)
-{
- CK_RV ret = CKR_OK;
- int have;
-
- DBG (("C_GetSlotList: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (count, CKR_ARGUMENTS_BAD);
-
- /* The environment variable is our token */
- have = socket_path[0] || !tokenPresent;
-
- /* Application only wants to know the number of slots. */
- if (slot_list == NULL) {
- *count = have ? 1 : 0;
- goto cleanup;
- }
-
- if (have) {
- if ((*count < 1) && (slot_list != NULL)) {
- *count = 1;
- ret = CKR_BUFFER_TOO_SMALL;
- goto cleanup;
- }
-
- *count = 1;
- slot_list[0] = slot_id;
- } else {
- *count = 0;
- }
-
-cleanup:
- DBG (("C_GetSlotList: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_GetSlotInfo (CK_SLOT_ID id, CK_SLOT_INFO_PTR info)
-{
- CK_RV ret = CKR_OK;
-
- DBG (("C_GetSlotInfo: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (info, CKR_ARGUMENTS_BAD);
-
- /* Make sure the slot ID is valid */
- if (id != slot_id) {
- ret = CKR_SLOT_ID_INVALID;
- goto cleanup;
- }
-
- ASSERT (strlen (SLOT_DESCRIPTION) == 64);
- ASSERT (strlen (MANUFACTURER_ID) == 32);
-
- /* Provide information about the slot in the provided buffer */
- strncpy ((char*)info->slotDescription, SLOT_DESCRIPTION, 64);
- strncpy ((char*)info->manufacturerID, MANUFACTURER_ID, 32);
- info->hardwareVersion.major = HARDWARE_VERSION_MAJOR;
- info->hardwareVersion.minor = HARDWARE_VERSION_MINOR;
- info->firmwareVersion.major = FIRMWARE_VERSION_MAJOR;
- info->firmwareVersion.minor = FIRMWARE_VERSION_MINOR;
-
- /* Token is the enviornment var */
- info->flags = 0;
- if (socket_path[0])
- info->flags |= CKF_TOKEN_PRESENT;
-
-cleanup:
- DBG (("C_GetSlotInfo: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_GetTokenInfo (CK_SLOT_ID id, CK_TOKEN_INFO_PTR info)
-{
- CK_RV ret = CKR_OK;
-
- DBG (("C_GetTokenInfo: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (info, CKR_ARGUMENTS_BAD);
-
- /* Make sure the slot ID is valid */
- if (id != slot_id) {
- ret = CKR_SLOT_ID_INVALID;
- goto cleanup;
- }
-
- if (!socket_path[0]) {
- ret = CKR_TOKEN_NOT_PRESENT;
- goto cleanup;
- }
-
- ASSERT (strlen (SLOT_DESCRIPTION) == 64);
- ASSERT (strlen (MANUFACTURER_ID) == 32);
- ASSERT (strlen (SLOT_TOKEN_MODEL) == 16);
- ASSERT (strlen (SLOT_TOKEN_SERIAL) == 16);
-
- /* Provide information about a token in the provided buffer */
- strncpy ((char*)info->label, SLOT_DESCRIPTION, 32);
- strncpy ((char*)info->manufacturerID, MANUFACTURER_ID, 32);
- strncpy ((char*)info->model, SLOT_TOKEN_MODEL, 16);
- strncpy ((char*)info->serialNumber, SLOT_TOKEN_SERIAL, 16);
-
- info->flags = CKF_TOKEN_INITIALIZED | CKF_PROTECTED_AUTHENTICATION_PATH;
- info->ulMaxSessionCount = CK_EFFECTIVELY_INFINITE;
- info->ulSessionCount = CK_EFFECTIVELY_INFINITE;
- info->ulMaxRwSessionCount = CK_EFFECTIVELY_INFINITE;
- info->ulRwSessionCount = CK_EFFECTIVELY_INFINITE;
- info->ulMaxPinLen = MAX_PIN_LEN;
- info->ulMinPinLen = MIN_PIN_LEN;
- info->ulTotalPublicMemory = CK_UNAVAILABLE_INFORMATION;
- info->ulFreePublicMemory = CK_UNAVAILABLE_INFORMATION;
- info->ulTotalPrivateMemory = CK_UNAVAILABLE_INFORMATION;
- info->ulFreePrivateMemory = CK_UNAVAILABLE_INFORMATION;
- info->hardwareVersion.major = HARDWARE_VERSION_MAJOR;
- info->hardwareVersion.minor = HARDWARE_VERSION_MINOR;
- info->firmwareVersion.major = FIRMWARE_VERSION_MAJOR;
- info->firmwareVersion.minor = FIRMWARE_VERSION_MINOR;
- memset (info->utcTime, ' ', 16);
-
-cleanup:
- DBG (("C_GetTokenInfo: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_GetMechanismList (CK_SLOT_ID id, CK_MECHANISM_TYPE_PTR mechanism_list,
- CK_ULONG_PTR count)
-{
- int i, mechnum;
- CK_RV ret = CKR_OK;
-
- DBG (("C_GetMechanismList: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (count, CKR_ARGUMENTS_BAD);
-
- if (id != slot_id) {
- ret = CKR_SLOT_ID_INVALID;
- goto cleanup;
- }
- if (!socket_path[0]) {
- ret = CKR_TOKEN_NOT_PRESENT;
- goto cleanup;
- }
-
- mechnum = sizeof (gkr_pkcs11_mechanisms) / sizeof (CK_MECHANISM_TYPE);
-
- if (mechanism_list == NULL) {
- *count = mechnum;
- goto cleanup;
- }
-
- if (*count < mechnum) {
- *count = mechnum;
- ret = CKR_BUFFER_TOO_SMALL;
- goto cleanup;
- }
-
- for (i = 0; i < mechnum; i++)
- mechanism_list[i] = gkr_pkcs11_mechanisms[i];
- *count = mechnum;
-
-cleanup:
- DBG (("C_GetMechanismList: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_GetMechanismInfo (CK_SLOT_ID id, CK_MECHANISM_TYPE type,
- CK_MECHANISM_INFO_PTR info)
-{
- int i, mechnum;
- CK_RV ret = CKR_OK;
-
- DBG (("C_GetMechanismInfo: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (info, CKR_ARGUMENTS_BAD);
-
- if (id != slot_id) {
- ret = CKR_SLOT_ID_INVALID;
- goto cleanup;
- }
- if (!socket_path[0]) {
- ret = CKR_TOKEN_NOT_PRESENT;
- goto cleanup;
- }
-
- mechnum = sizeof (gkr_pkcs11_mechanisms) / sizeof (CK_MECHANISM_TYPE);
- for (i = 0; i < mechnum; i++) {
- if (gkr_pkcs11_mechanisms[i] == type)
- break;
- }
-
- /* unsupported mechanism */
- if (i == mechnum) {
- ret = CKR_MECHANISM_INVALID;
- goto cleanup;
- }
-
- info->ulMinKeySize = gkr_pkcs11_mechanism_info[i].ulMinKeySize;
- info->ulMaxKeySize = gkr_pkcs11_mechanism_info[i].ulMaxKeySize;
- info->flags = gkr_pkcs11_mechanism_info[i].flags;
-
-cleanup:
- DBG (("C_GetMechanismInfo: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_InitToken (CK_SLOT_ID id, CK_UTF8CHAR_PTR pin, CK_ULONG pinLen,
- CK_UTF8CHAR_PTR label)
-{
- DBG (("C_InitToken: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- DBG (("C_InitToken: %d", CKR_FUNCTION_NOT_SUPPORTED));
- return CKR_FUNCTION_NOT_SUPPORTED;
-}
-
-static CK_RV
-gkr_C_WaitForSlotEvent (CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, CK_VOID_PTR pRserved)
-{
- DBG (("C_WaitForSlotEvent: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
-
- /*
- * PKCS#11 GRAY AREA: What happens when we know we'll *never*
- * have any slot events, and someone calls us without CKR_DONT_BLOCK?
- * In case there's a thread dedicated to calling this function in a
- * loop, we wait 5 seconds when called without CKR_DONT_BLOCK.
- */
-
- if (!(flags & CKF_DONT_BLOCK))
- sleep (5);
-
- DBG (("C_WaitForSlotEvent: %d", CKR_NO_EVENT));
- return CKR_NO_EVENT;
-}
-
-/* -------------------------------------------------------------------
- * SESSION MANAGEMENT CALLS
- */
-
-static CK_RV
-gkr_C_OpenSession (CK_SLOT_ID id, CK_FLAGS flags, CK_VOID_PTR user_data,
- CK_NOTIFY callback, CK_SESSION_HANDLE_PTR session)
-{
- CallSession *cs;
- CK_RV ret = CKR_OK;
-
- DBG (("C_OpenSession: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- PREREQ (session, CKR_ARGUMENTS_BAD);
- PREREQ (flags & CKF_SERIAL_SESSION, CKR_FUNCTION_NOT_PARALLEL);
-
- if (id != slot_id)
- return CKR_SLOT_ID_INVALID;
- if (!socket_path[0])
- return CKR_TOKEN_NOT_PRESENT;
-
- /* Create the session */
- cs = call_session_create (&cs);
- if (cs == NULL) {
- ret = CKR_HOST_MEMORY;
- goto cleanup;
- }
-
- cs->notify_callback = callback;
- cs->user_data = user_data;
-
- /* Connect the session */
- ret = call_session_connect (cs);
- if (ret != CKR_OK)
- goto cleanup;
-
- /*
- * This lock isn't strictly necessary, but all the send/receive call
- * stuff requires and expects locking so...
- */
- pthread_mutex_lock (&cs->mutex);
-
- ret = call_session_prep_call (cs, PKCS11_CALL_C_OpenSession);
- if (ret == CKR_OK)
- ret = gkr_pkcs11_message_write_byte_array (cs->req,
- (unsigned char*)GKR_PKCS11_HANDSHAKE,
- GKR_PKCS11_HANDSHAKE_LEN);
- if (ret == CKR_OK)
- ret = gkr_pkcs11_message_write_uint32 (cs->req, crypto_pid);
- if (ret == CKR_OK) /* We don't use the slot id yet */
- ret = gkr_pkcs11_message_write_uint32 (cs->req, 0);
- if (ret == CKR_OK)
- ret = gkr_pkcs11_message_write_uint32 (cs->req, flags);
- if (ret == CKR_OK)
- ret = call_session_do_call (cs);
- ret = call_session_done_call (cs, ret);
-
- pthread_mutex_unlock (&cs->mutex);
-
- if (ret != CKR_OK)
- goto cleanup;
-
- /* Register it in the big mix */
- ret = call_session_register (cs);
- if (ret != CKR_OK)
- goto cleanup;
-
-cleanup:
- if (ret == CKR_OK) {
- /* ID should have been assigned when registering it */
- ASSERT (cs->id > 0);
- *session = cs->id;
- } else {
- call_session_destroy (cs);
- }
-
- DBG (("C_OpenSession: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_CloseSession (CK_SESSION_HANDLE session)
-{
- CallSession *cs;
- CK_RV ret = CKR_OK;
-
- DBG (("C_OpenSession: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
-
- /* The 'remove' flag removes it from the main session list */
- ret = call_session_find_lock_and_ref (session, 1, &cs);
- if (ret == CKR_OK) {
- /*
- * PKCS#11 GRAY AREA: Is this supposed to return CKR_OPERATION_ACTIVE
- * if some other session call is in progress? We err on the side of
- * closing the session anyway, which will most likely cause the
- * operation in progress to return CKR_SESSION_CLOSED.
- */
-
- if (cs->socket < 0) {
- ret = CKR_SESSION_CLOSED;
- } else {
-
- /*
- * This closes the socket and marks session as closed.
- * Session actually removed from memory when all refs are gone.
- */
- call_session_disconnect (cs);
- }
-
- /* This will unref and possibly destroy the session */
- call_session_unref_and_unlock (cs);
- }
-
- DBG (("C_CloseSession: %d", ret));
- return ret;
-}
-
-static CK_RV
-gkr_C_CloseAllSessions (CK_SLOT_ID id)
-{
- CK_RV ret = CKR_OK;
-
- DBG (("C_CloseAllSessions: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
-
- if (id == slot_id)
- call_session_close_all ();
- else
- ret = CKR_SLOT_ID_INVALID;
-
- DBG (("C_CloseAllSessions: %d", ret));
- return CKR_OK;
-}
-
-static CK_RV
-gkr_C_GetFunctionStatus (CK_SESSION_HANDLE hSession)
-{
- DBG (("C_GetFunctionStatus: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- DBG (("C_CancelFunction: %d", CKR_FUNCTION_NOT_PARALLEL));
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-
-static CK_RV
-gkr_C_CancelFunction (CK_SESSION_HANDLE hSession)
-{
- DBG (("C_CancelFunction: enter"));
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- DBG (("C_CancelFunction: %d", CKR_FUNCTION_NOT_PARALLEL));
- return CKR_FUNCTION_NOT_PARALLEL;
-}
-/* -------------------------------------------------------------------
- * SESSION DBUS CALLS
- */
-
-#define BEGIN_CALL(session, call_id) \
- DBG ((#call_id ": enter")); \
- PREREQ (pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); \
- { \
- CallSession *_cs; \
- CK_RV _ret = CKR_OK; \
- _ret = call_session_find_lock_and_ref (session, 0, &_cs); \
- if (_ret != CKR_OK) return _ret; \
- _ret = call_session_prep_call (_cs, PKCS11_CALL_##call_id); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define PROCESS_CALL \
- _ret = call_session_do_call (_cs); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define END_CALL \
- _cleanup: \
- _ret = call_session_done_call (_cs, _ret); \
- call_session_unref_and_unlock (_cs); \
- DBG (("ret: %d", _ret)); \
- return _ret; \
- }
-
-#define IN_ATTRIBUTE_ARRAY(arr, num) \
- _ret = gkr_pkcs11_message_write_attribute_array (_cs->req, (arr), (num)); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define IN_BYTE_ARRAY(arr, len) \
- _ret = gkr_pkcs11_message_write_byte_array (_cs->req, arr, len); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define IN_HANDLE(val) \
- _ret = gkr_pkcs11_message_write_uint32 (_cs->req, val); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define IN_MECHANISM(val) \
- _ret = proto_write_mechanism (_cs->req, val); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define IN_ULONG(val) \
- _ret = gkr_pkcs11_message_write_uint32 (_cs->req, val); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_ATTRIBUTE_ARRAY(arr, num, max) \
- if (!arr) _cs->overflowed = 1; \
- _ret = proto_read_attribute_array (_cs->resp, (arr), (num), (max)); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_BYTE_ARRAY(arr, len, max) \
- if (!arr) _cs->overflowed = 1; \
- _ret = proto_read_byte_array (_cs->resp, (arr), (len), (max)); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_HANDLE(val) \
- _ret = gkr_pkcs11_message_read_uint32 (_cs->resp, val); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_HANDLE_ARRAY(a, n, mx) \
- if (!a) _cs->overflowed = 1; \
- _ret = proto_read_uint32_array (_cs->resp, (a), (n), (mx)); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_RETURN_CODE() { \
- CK_RV r; \
- _ret = gkr_pkcs11_message_read_uint32 (_cs->resp, (_ret == CKR_OK) ? &r : NULL); \
- if (_ret == CKR_OK) _ret = r; \
- if (_ret != CKR_OK) goto _cleanup; \
- }
-
-#define OUT_SESSION_INFO(info) \
- _ret = proto_read_sesssion_info (_cs->resp, info); \
- if (_ret != CKR_OK) goto _cleanup;
-
-#define OUT_ULONG(val) \
- _ret = gkr_pkcs11_message_read_uint32 (_cs->resp, val); \
- if (_ret != CKR_OK) goto _cleanup;
-
-
-static CK_RV
-gkr_C_GetSessionInfo(CK_SESSION_HANDLE session, CK_SESSION_INFO_PTR info)
-{
- PREREQ (info, CKR_ARGUMENTS_BAD);
-
- BEGIN_CALL (session, C_GetSessionInfo);
- PROCESS_CALL;
- OUT_SESSION_INFO (info);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_InitPIN (CK_SESSION_HANDLE session, CK_UTF8CHAR_PTR pin,
- CK_ULONG pin_len)
-{
- BEGIN_CALL (session, C_InitPIN);
- IN_BYTE_ARRAY (pin, pin_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SetPIN (CK_SESSION_HANDLE session, CK_UTF8CHAR_PTR old_pin,
- CK_ULONG old_pin_len, CK_UTF8CHAR_PTR new_pin, CK_ULONG new_pin_len)
-{
- BEGIN_CALL (session, C_SetPIN);
- IN_BYTE_ARRAY (old_pin, old_pin_len);
- IN_BYTE_ARRAY (new_pin, old_pin_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GetOperationState (CK_SESSION_HANDLE session, CK_BYTE_PTR operation_state,
- CK_ULONG_PTR operation_state_len)
-{
- BEGIN_CALL (session, C_GetOperationState);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (operation_state, operation_state_len, *operation_state_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SetOperationState (CK_SESSION_HANDLE session, CK_BYTE_PTR operation_state,
- CK_ULONG operation_state_len, CK_OBJECT_HANDLE encryption_key,
- CK_OBJECT_HANDLE authentication_key)
-{
- BEGIN_CALL (session, C_SetOperationState);
- IN_BYTE_ARRAY (operation_state, operation_state_len);
- IN_HANDLE (encryption_key);
- IN_HANDLE (authentication_key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Login (CK_SESSION_HANDLE session, CK_USER_TYPE user_type,
- CK_UTF8CHAR_PTR pin, CK_ULONG pin_len)
-{
- BEGIN_CALL (session, C_Login);
- IN_ULONG (user_type);
- IN_BYTE_ARRAY (pin, pin_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Logout (CK_SESSION_HANDLE session)
-{
- BEGIN_CALL (session, C_Logout);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_CreateObject (CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR template,
- CK_ULONG count, CK_OBJECT_HANDLE_PTR new_object)
-{
- BEGIN_CALL (session, C_CreateObject);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_HANDLE (new_object);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_CopyObject (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template, CK_ULONG count,
- CK_OBJECT_HANDLE_PTR new_object)
-{
- BEGIN_CALL (session, C_CopyObject);
- IN_HANDLE (object);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_HANDLE (new_object);
- END_CALL;
-}
-
-
-static CK_RV
-gkr_C_DestroyObject (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object)
-{
- BEGIN_CALL (session, C_DestroyObject);
- IN_HANDLE (object);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GetObjectSize (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object,
- CK_ULONG_PTR size)
-{
- BEGIN_CALL (session, C_GetObjectSize);
- IN_HANDLE (object);
- PROCESS_CALL;
- OUT_ULONG (size);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GetAttributeValue (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template, CK_ULONG count)
-{
- BEGIN_CALL (session, C_GetAttributeValue);
- IN_HANDLE (object);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_ATTRIBUTE_ARRAY (template, &count, count);
- OUT_RETURN_CODE ();
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SetAttributeValue (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object,
- CK_ATTRIBUTE_PTR template, CK_ULONG count)
-{
- BEGIN_CALL (session, C_SetAttributeValue);
- IN_HANDLE (object);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_FindObjectsInit (CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR template,
- CK_ULONG count)
-{
- BEGIN_CALL (session, C_FindObjectsInit);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_FindObjects (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE_PTR objects,
- CK_ULONG max_count, CK_ULONG_PTR count)
-{
- BEGIN_CALL (session, C_FindObjects);
- IN_ULONG (max_count);
- PROCESS_CALL;
- OUT_HANDLE_ARRAY (objects, count, max_count);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_FindObjectsFinal (CK_SESSION_HANDLE session)
-{
- BEGIN_CALL (session, C_FindObjectsFinal);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_EncryptInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_EncryptInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Encrypt (CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
- CK_BYTE_PTR encrypted_data, CK_ULONG_PTR encrypted_data_len)
-{
- BEGIN_CALL (session, C_Encrypt);
- IN_BYTE_ARRAY (data, data_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (encrypted_data, encrypted_data_len, *encrypted_data_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_EncryptUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part,
- CK_ULONG part_len, CK_BYTE_PTR encrypted_part,
- CK_ULONG_PTR encrypted_part_len)
-{
- BEGIN_CALL (session, C_EncryptUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (encrypted_part, encrypted_part_len, *encrypted_part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_EncryptFinal (CK_SESSION_HANDLE session, CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- BEGIN_CALL (session, C_EncryptFinal);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (last_part, last_part_len, *last_part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DecryptInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_DecryptInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Decrypt (CK_SESSION_HANDLE session, CK_BYTE_PTR enc_data,
- CK_ULONG enc_data_len, CK_BYTE_PTR data, CK_ULONG_PTR data_len)
-{
- BEGIN_CALL (session, C_Decrypt);
- IN_BYTE_ARRAY (enc_data, enc_data_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (data, data_len, *data_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DecryptUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len, CK_BYTE_PTR part, CK_ULONG_PTR part_len)
-{
- BEGIN_CALL (session, C_DecryptUpdate);
- IN_BYTE_ARRAY (enc_part, enc_part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (part, part_len, *part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DecryptFinal (CK_SESSION_HANDLE session, CK_BYTE_PTR last_part,
- CK_ULONG_PTR last_part_len)
-{
- BEGIN_CALL (session, C_DecryptFinal);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (last_part, last_part_len, *last_part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DigestInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism)
-{
- BEGIN_CALL (session, C_DigestInit);
- IN_MECHANISM (mechanism);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Digest (CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
- CK_BYTE_PTR digest, CK_ULONG_PTR digest_len)
-{
- BEGIN_CALL (session, C_Digest);
- IN_BYTE_ARRAY (data, data_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (digest, digest_len, *digest_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DigestUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len)
-{
- BEGIN_CALL (session, C_DigestUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DigestKey (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_DigestKey);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DigestFinal (CK_SESSION_HANDLE session, CK_BYTE_PTR digest,
- CK_ULONG_PTR digest_len)
-{
- BEGIN_CALL (session, C_DigestFinal);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (digest, digest_len, *digest_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_SignInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Sign (CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
- CK_BYTE_PTR signature, CK_ULONG_PTR signature_len)
-{
- BEGIN_CALL (session, C_Sign);
- IN_BYTE_ARRAY (data, data_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (signature, signature_len, *signature_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len)
-{
- BEGIN_CALL (session, C_SignUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignFinal (CK_SESSION_HANDLE session, CK_BYTE_PTR signature,
- CK_ULONG_PTR signature_len)
-{
- BEGIN_CALL (session, C_SignFinal);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (signature, signature_len, *signature_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignRecoverInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_SignRecoverInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignRecover (CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
- CK_BYTE_PTR signature, CK_ULONG_PTR signature_len)
-{
- BEGIN_CALL (session, C_SignRecover);
- IN_BYTE_ARRAY (data, data_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (signature, signature_len, *signature_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_VerifyInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_VerifyInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_Verify (CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
- CK_BYTE_PTR signature, CK_ULONG signature_len)
-{
- BEGIN_CALL (session, C_Verify);
- IN_BYTE_ARRAY (data, data_len);
- IN_BYTE_ARRAY (signature, signature_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_VerifyUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len)
-{
- BEGIN_CALL (session, C_VerifyUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_VerifyFinal (CK_SESSION_HANDLE session, CK_BYTE_PTR signature,
- CK_ULONG signature_len)
-{
- BEGIN_CALL (session, C_VerifyFinal);
- IN_BYTE_ARRAY (signature, signature_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_VerifyRecoverInit (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE key)
-{
- BEGIN_CALL (session, C_VerifyRecoverInit);
- IN_MECHANISM (mechanism);
- IN_HANDLE (key);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_VerifyRecover (CK_SESSION_HANDLE session, CK_BYTE_PTR signature,
- CK_ULONG signature_len, CK_BYTE_PTR data, CK_ULONG_PTR data_len)
-{
- BEGIN_CALL (session, C_VerifyRecover);
- IN_BYTE_ARRAY (signature, signature_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (data, data_len, *data_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DigestEncryptUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part,
- CK_ULONG part_len, CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- BEGIN_CALL (session, C_DigestEncryptUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (enc_part, enc_part_len, *enc_part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DecryptDigestUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len, CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- BEGIN_CALL (session, C_DecryptDigestUpdate);
- IN_BYTE_ARRAY (enc_part, enc_part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (part, part_len, *part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SignEncryptUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR part,
- CK_ULONG part_len, CK_BYTE_PTR enc_part,
- CK_ULONG_PTR enc_part_len)
-{
- BEGIN_CALL (session, C_SignEncryptUpdate);
- IN_BYTE_ARRAY (part, part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (enc_part, enc_part_len, *enc_part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DecryptVerifyUpdate (CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part,
- CK_ULONG enc_part_len, CK_BYTE_PTR part,
- CK_ULONG_PTR part_len)
-{
- BEGIN_CALL (session, C_DecryptVerifyUpdate);
- IN_BYTE_ARRAY (enc_part, enc_part_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (part, part_len, *part_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GenerateKey (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR template, CK_ULONG count,
- CK_OBJECT_HANDLE_PTR key)
-{
- BEGIN_CALL (session, C_GenerateKey);
- IN_MECHANISM (mechanism);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_HANDLE (key);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GenerateKeyPair (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_ATTRIBUTE_PTR pub_template, CK_ULONG pub_count,
- CK_ATTRIBUTE_PTR priv_template, CK_ULONG priv_count,
- CK_OBJECT_HANDLE_PTR pub_key, CK_OBJECT_HANDLE_PTR priv_key)
-{
- BEGIN_CALL (session, C_GenerateKeyPair);
- IN_MECHANISM (mechanism);
- IN_ATTRIBUTE_ARRAY (pub_template, pub_count);
- IN_ATTRIBUTE_ARRAY (priv_template, priv_count);
- PROCESS_CALL;
- OUT_HANDLE (pub_key);
- OUT_HANDLE (priv_key);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_WrapKey (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE wrapping_key, CK_OBJECT_HANDLE key,
- CK_BYTE_PTR wrapped_key, CK_ULONG_PTR wrapped_key_len)
-{
- BEGIN_CALL (session, C_WrapKey);
- IN_MECHANISM (mechanism);
- IN_HANDLE (wrapping_key);
- IN_HANDLE (key);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (wrapped_key, wrapped_key_len, *wrapped_key_len);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_UnwrapKey (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE unwrapping_key, CK_BYTE_PTR wrapped_key,
- CK_ULONG wrapped_key_len, CK_ATTRIBUTE_PTR template,
- CK_ULONG count, CK_OBJECT_HANDLE_PTR key)
-{
- BEGIN_CALL (session, C_UnwrapKey);
- IN_MECHANISM (mechanism);
- IN_HANDLE (unwrapping_key);
- IN_BYTE_ARRAY (wrapped_key, wrapped_key_len);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_HANDLE (key);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_DeriveKey (CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
- CK_OBJECT_HANDLE base_key, CK_ATTRIBUTE_PTR template,
- CK_ULONG count, CK_OBJECT_HANDLE_PTR key)
-{
- BEGIN_CALL (session, C_DeriveKey);
- IN_MECHANISM (mechanism);
- IN_HANDLE (base_key);
- IN_ATTRIBUTE_ARRAY (template, count);
- PROCESS_CALL;
- OUT_HANDLE (key);
- END_CALL;
-}
-
-static CK_RV
-gkr_C_SeedRandom (CK_SESSION_HANDLE session, CK_BYTE_PTR seed, CK_ULONG seed_len)
-{
- BEGIN_CALL (session, C_SeedRandom);
- IN_BYTE_ARRAY (seed, seed_len);
- PROCESS_CALL;
- END_CALL;
-}
-
-static CK_RV
-gkr_C_GenerateRandom (CK_SESSION_HANDLE session, CK_BYTE_PTR random_data,
- CK_ULONG random_len)
-{
- BEGIN_CALL (session, C_GenerateRandom);
- IN_ULONG (random_len);
- PROCESS_CALL;
- OUT_BYTE_ARRAY (random_data, &random_len, random_len);
- END_CALL;
-}
-
-/* --------------------------------------------------------------------
- * MODULE ENTRY POINT
- */
-
-/*
- * PKCS#11 is broken here. It states that Unix compilers automatically byte
- * pack structures. This is wrong. GCC on Linux aligns to 4 by default.
- *
- * This results in incompatibilities. Where this structure's first version
- * members take up too much or too little space depending on how this module
- * is compiled.
- */
-
-static CK_FUNCTION_LIST functionList = {
- { CRYPTOKI_VERSION_MAJOR, CRYPTOKI_VERSION_MINOR }, /* version */
- gkr_C_Initialize,
- gkr_C_Finalize,
- gkr_C_GetInfo,
- gkr_C_GetFunctionList,
- gkr_C_GetSlotList,
- gkr_C_GetSlotInfo,
- gkr_C_GetTokenInfo,
- gkr_C_GetMechanismList,
- gkr_C_GetMechanismInfo,
- gkr_C_InitToken,
- gkr_C_InitPIN,
- gkr_C_SetPIN,
- gkr_C_OpenSession,
- gkr_C_CloseSession,
- gkr_C_CloseAllSessions,
- gkr_C_GetSessionInfo,
- gkr_C_GetOperationState,
- gkr_C_SetOperationState,
- gkr_C_Login,
- gkr_C_Logout,
- gkr_C_CreateObject,
- gkr_C_CopyObject,
- gkr_C_DestroyObject,
- gkr_C_GetObjectSize,
- gkr_C_GetAttributeValue,
- gkr_C_SetAttributeValue,
- gkr_C_FindObjectsInit,
- gkr_C_FindObjects,
- gkr_C_FindObjectsFinal,
- gkr_C_EncryptInit,
- gkr_C_Encrypt,
- gkr_C_EncryptUpdate,
- gkr_C_EncryptFinal,
- gkr_C_DecryptInit,
- gkr_C_Decrypt,
- gkr_C_DecryptUpdate,
- gkr_C_DecryptFinal,
- gkr_C_DigestInit,
- gkr_C_Digest,
- gkr_C_DigestUpdate,
- gkr_C_DigestKey,
- gkr_C_DigestFinal,
- gkr_C_SignInit,
- gkr_C_Sign,
- gkr_C_SignUpdate,
- gkr_C_SignFinal,
- gkr_C_SignRecoverInit,
- gkr_C_SignRecover,
- gkr_C_VerifyInit,
- gkr_C_Verify,
- gkr_C_VerifyUpdate,
- gkr_C_VerifyFinal,
- gkr_C_VerifyRecoverInit,
- gkr_C_VerifyRecover,
- gkr_C_DigestEncryptUpdate,
- gkr_C_DecryptDigestUpdate,
- gkr_C_SignEncryptUpdate,
- gkr_C_DecryptVerifyUpdate,
- gkr_C_GenerateKey,
- gkr_C_GenerateKeyPair,
- gkr_C_WrapKey,
- gkr_C_UnwrapKey,
- gkr_C_DeriveKey,
- gkr_C_SeedRandom,
- gkr_C_GenerateRandom,
- gkr_C_GetFunctionStatus,
- gkr_C_CancelFunction,
- gkr_C_WaitForSlotEvent
-};
-
-CK_RV
-C_GetFunctionList (CK_FUNCTION_LIST_PTR_PTR list)
-{
- PREREQ (list, CKR_ARGUMENTS_BAD);
-
- *list = &functionList;
- return CKR_OK;
-}
diff --git a/pkcs11/gkr-pkcs11-rsa.c b/pkcs11/gkr-pkcs11-rsa.c
deleted file mode 100644
index dea8923e..00000000
--- a/pkcs11/gkr-pkcs11-rsa.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-rsa.c - RSA mechanism code for PKCS#11
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkcs11-rsa.h"
-
-#include "common/gkr-crypto.h"
-
-#include "pk/gkr-pk-pubkey.h"
-#include "pk/gkr-pk-privkey.h"
-
-static CK_RV
-object_to_public_key (GkrPkObject *object, gcry_sexp_t *s_key)
-{
- GkrPkPubkey *key;
-
- /* Validate and extract the key */
- if (!GKR_IS_PK_PUBKEY (object))
- return CKR_KEY_HANDLE_INVALID;
-
- key = GKR_PK_PUBKEY (object);
- if (gkr_pk_pubkey_get_algorithm (key) != GCRY_PK_RSA)
- return CKR_KEY_TYPE_INCONSISTENT;
-
- *s_key = gkr_pk_pubkey_get_key (key);
- if (!*s_key) {
- /* TODO: This happens when the user doesn't unlock key, proper code */
- g_warning ("couldn't get public key");
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
-
-static CK_RV
-object_to_private_key (GkrPkObject *object, gcry_sexp_t *s_key)
-{
- GkrPkPrivkey *key;
-
- /* Validate and extract the key */
- if (!GKR_IS_PK_PRIVKEY (object))
- return CKR_KEY_HANDLE_INVALID;
-
- key = GKR_PK_PRIVKEY (object);
- if (gkr_pk_privkey_get_algorithm (key) != GCRY_PK_RSA)
- return CKR_KEY_TYPE_INCONSISTENT;
-
- *s_key = gkr_pk_privkey_get_key (key);
- if (!*s_key) {
- /* TODO: This happens when the user doesn't unlock key, proper code */
- g_warning ("couldn't get private key");
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
-
-static CK_RV
-data_to_sexp (const gchar *format, guint nbits, GkrCryptoPadding padfunc,
- const guchar *data, gsize n_data, gcry_sexp_t *sexp)
-{
- guchar *padded = NULL;
- gcry_error_t gcry;
- gcry_mpi_t mpi;
- gsize n_padded;
-
- g_assert (format);
- g_assert (sexp);
-
- g_return_val_if_fail (data, CKR_ARGUMENTS_BAD);
-
- if (padfunc) {
- padded = (padfunc) (nbits, data, n_data, &n_padded);
- if (!padded)
- return CKR_DATA_LEN_RANGE;
- }
-
- /* Prepare the input s expression */
- gcry = gcry_mpi_scan (&mpi, GCRYMPI_FMT_USG,
- padded ? padded : data,
- padded ? n_padded : n_data, NULL);
- g_free (padded);
-
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
-
- gcry = gcry_sexp_build (sexp, NULL, format, mpi);
- gcry_mpi_release (mpi);
-
- g_return_val_if_fail (gcry == 0, CKR_GENERAL_ERROR);
-
- g_assert (*sexp);
- return CKR_OK;
-}
-
-static CK_RV
-sexp_to_data (const gchar* format1, const gchar *format2, const gchar *format3,
- guint nbits, GkrCryptoPadding padfunc, gcry_sexp_t sexp,
- guchar **data, gsize *n_data)
-{
- g_assert (format1);
- g_assert (sexp);
- g_assert (data);
- g_assert (n_data);
-
- /* Now extract and send it back out */
- *data = gkr_crypto_sexp_extract_mpi_padded (sexp, nbits, n_data, padfunc,
- format1, format2, format3, NULL);
- g_return_val_if_fail (*data, CKR_GENERAL_ERROR);
-
- return CKR_OK;
-}
-
-CK_RV
-gkr_pkcs11_rsa_encrypt (GkrPkObject *key, GkrCryptoPadding padfunc,
- const guchar *plain, gsize n_plain,
- guchar **encrypted, gsize *n_encrypted)
-{
- gcry_sexp_t s_key, splain, senc;
- gcry_error_t gcry;
- guint nbits;
- CK_RV ret;
-
- g_return_val_if_fail (key, CKR_GENERAL_ERROR);
-
- ret = object_to_public_key (key, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no output, then don't process */
- if (!plain)
- return CKR_OK;
-
- /* The key size */
- nbits = gcry_pk_get_nbits (s_key);
- g_return_val_if_fail (nbits > 0, CKR_GENERAL_ERROR);
-
- /* Prepare the input s expression */
- ret = data_to_sexp ("(data (flags raw) (value %m))",
- nbits, padfunc, plain, n_plain, &splain);
- if (ret != CKR_OK)
- return ret;
-
- /* Do the magic */
- gcry = gcry_pk_encrypt (&senc, splain, s_key);
- gcry_sexp_release (splain);
-
- /* TODO: Certain codes should be returned (data too big etc... ) */
- if (gcry) {
- g_warning ("encrypting of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-
- /* Now extract and send it back out */
- ret = sexp_to_data ("enc-val", "rsa", "a", nbits, NULL, senc, encrypted, n_encrypted);
- gcry_sexp_release (senc);
-
- return ret;
-}
-
-CK_RV
-gkr_pkcs11_rsa_decrypt (GkrPkObject *object, GkrCryptoPadding padfunc,
- const guchar *encrypted, gsize n_encrypted,
- guchar **plain, gsize *n_plain)
-{
- gcry_sexp_t s_key, splain, sdata;
- gcry_error_t gcry;
- guint nbits;
- CK_RV ret;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- ret = object_to_private_key (object, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no output, then don't process */
- if (!plain)
- return CKR_OK;
-
- /* The key size */
- nbits = gcry_pk_get_nbits (s_key);
- g_return_val_if_fail (nbits > 0, CKR_GENERAL_ERROR);
-
- if (n_encrypted != nbits / 8)
- return CKR_DATA_LEN_RANGE;
-
- /* Prepare the input s expression */
- ret = data_to_sexp ("(enc-val (flags) (rsa (a %m)))",
- nbits, NULL, encrypted, n_encrypted, &sdata);
- if (ret != CKR_OK)
- return ret;
-gkr_crypto_sexp_dump (sdata);
-
- /* Do the magic */
- gcry = gcry_pk_decrypt (&splain, sdata, s_key);
- gcry_sexp_release (sdata);
-
- /* TODO: Certain codes should be returned (data too big etc... ) */
- if (gcry) {
- g_warning ("decrypting of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-gkr_crypto_sexp_dump (splain);
-
- /* Now extract and send it back out */
- ret = sexp_to_data ("value", NULL, NULL, nbits, padfunc, splain, plain, n_plain);
- gcry_sexp_release (splain);
-
- return ret;
-}
-
-CK_RV
-gkr_pkcs11_rsa_sign (GkrPkObject *object, GkrCryptoPadding padfunc,
- const guchar *input, gsize n_input,
- guchar **signature, gsize *n_signature)
-{
- gcry_sexp_t s_key, ssig, sdata;
- gcry_error_t gcry;
- guint nbits;
- CK_RV ret;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- ret = object_to_private_key (object, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no output, then don't process */
- if (!signature)
- return CKR_OK;
-
- /* The key size */
- nbits = gcry_pk_get_nbits (s_key);
- g_return_val_if_fail (nbits > 0, CKR_GENERAL_ERROR);
-
- /* Prepare the input s expression */
- ret = data_to_sexp ("(data (flags raw) (value %m))",
- nbits, padfunc, input, n_input, &sdata);
- if (ret != CKR_OK)
- return ret;
-
- /* Do the magic */
- gcry = gcry_pk_sign (&ssig, sdata, s_key);
- gcry_sexp_release (sdata);
-
- /* TODO: Certain codes should be returned (data too big etc... ) */
- if (gcry) {
- g_warning ("signing of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-
- /* Now extract and send it back out */
- ret = sexp_to_data ("rsa", "s", NULL, nbits, NULL, ssig, signature, n_signature);
- gcry_sexp_release (ssig);
-
- return ret;
-}
-
-CK_RV
-gkr_pkcs11_rsa_verify (GkrPkObject *object, GkrCryptoPadding padfunc,
- const guchar *data, gsize n_data,
- const guchar *signature, gsize n_signature)
-{
- gcry_sexp_t s_key, ssig, sdata;
- gcry_error_t gcry;
- guint nbits;
- CK_RV ret;
-
- g_return_val_if_fail (object, CKR_GENERAL_ERROR);
-
- ret = object_to_public_key (object, &s_key);
- if (ret != CKR_OK)
- return ret;
-
- /* If no data, then don't process */
- if (!data)
- return CKR_OK;
-
- g_return_val_if_fail (data, CKR_GENERAL_ERROR);
- g_return_val_if_fail (signature, CKR_GENERAL_ERROR);
-
- /* The key size */
- nbits = gcry_pk_get_nbits (s_key);
- g_return_val_if_fail (nbits > 0, CKR_GENERAL_ERROR);
-
- /* Prepare the input s expressions */
- ret = data_to_sexp ("(data (flags raw) (value %m))",
- nbits, padfunc, data, n_data, &sdata);
- if (ret != CKR_OK)
- return ret;
-
- ret = data_to_sexp ("(sig-val (rsa (s %m)))",
- nbits, NULL, signature, n_signature, &ssig);
- if (ret != CKR_OK) {
- gcry_sexp_release (sdata);
- return ret;
- }
-
- /* Do the magic */
- gcry = gcry_pk_verify (ssig, sdata, s_key);
- gcry_sexp_release (sdata);
- gcry_sexp_release (ssig);
-
- /* TODO: See if any other codes should be mapped */
- if (gcry_err_code (gcry) == GPG_ERR_BAD_SIGNATURE) {
- return CKR_SIGNATURE_INVALID;
- } else if (gcry) {
- g_warning ("signing of the data failed: %s", gcry_strerror (gcry));
- return CKR_GENERAL_ERROR;
- }
-
- return CKR_OK;
-}
diff --git a/pkcs11/gkr-pkcs11-rsa.h b/pkcs11/gkr-pkcs11-rsa.h
deleted file mode 100644
index a0cc7e48..00000000
--- a/pkcs11/gkr-pkcs11-rsa.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkcs11-rsa.h - RSA mechanism code for PKCS#11
-
- Copyright (C) 2007, Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKCS11RSA_H_
-#define GKRPKCS11RSA_H_
-
-#include "pkcs11.h"
-
-#include "pk/gkr-pk-object.h"
-#include "common/gkr-crypto.h"
-
-CK_RV gkr_pkcs11_rsa_encrypt (GkrPkObject *key, GkrCryptoPadding padfunc,
- const guchar *plain, gsize n_plain,
- guchar **encrypted, gsize *n_encrypted);
-
-CK_RV gkr_pkcs11_rsa_decrypt (GkrPkObject *key, GkrCryptoPadding padfunc,
- const guchar *encrypted, gsize n_encrypted,
- guchar **plain, gsize *n_plain);
-
-CK_RV gkr_pkcs11_rsa_sign (GkrPkObject *key, GkrCryptoPadding padfunc,
- const guchar *data, gsize n_data,
- guchar **signature, gsize *n_signature);
-
-CK_RV gkr_pkcs11_rsa_verify (GkrPkObject *key, GkrCryptoPadding padfunc,
- const guchar *data, gsize n_data,
- const guchar *signature, gsize n_signature);
-
-#endif /*GKRPKCS11RSA_H_*/
diff --git a/pkcs11/pkcs11.h b/pkcs11/pkcs11.h
deleted file mode 100644
index 2e6a1e3e..00000000
--- a/pkcs11/pkcs11.h
+++ /dev/null
@@ -1,1357 +0,0 @@
-/* pkcs11.h
- Copyright 2006, 2007 g10 Code GmbH
- Copyright 2006 Andreas Jellinghaus
-
- This file is free software; as a special exception the author gives
- unlimited permission to copy and/or distribute it, with or without
- modifications, as long as this notice is preserved.
-
- This file is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, to the extent permitted by law; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. */
-
-/* Please submit changes back to the Scute project at
- http://www.scute.org/ (or send them to marcus@g10code.com), so that
- they can be picked up by other projects from there as well. */
-
-/* This file is a modified implementation of the PKCS #11 standard by
- RSA Security Inc. It is mostly a drop-in replacement, with the
- following change:
-
- This header file does not require any macro definitions by the user
- (like CK_DEFINE_FUNCTION etc). In fact, it defines those macros
- for you (if useful, some are missing, let me know if you need
- more).
-
- There is an additional API available that does comply better to the
- GNU coding standard. It can be switched on by defining
- CRYPTOKI_GNU before including this header file. For this, the
- following changes are made to the specification:
-
- All structure types are changed to a "struct ck_foo" where CK_FOO
- is the type name in PKCS #11.
-
- All non-structure types are changed to ck_foo_t where CK_FOO is the
- lowercase version of the type name in PKCS #11. The basic types
- (CK_ULONG et al.) are removed without substitute.
-
- All members of structures are modified in the following way: Type
- indication prefixes are removed, and underscore characters are
- inserted before words. Then the result is lowercased.
-
- Note that function names are still in the original case, as they
- need for ABI compatibility.
-
- CK_FALSE, CK_TRUE and NULL_PTR are removed without substitute. Use
- <stdbool.h>.
-
- If CRYPTOKI_COMPAT is defined before including this header file,
- then none of the API changes above take place, and the API is the
- one defined by the PKCS #11 standard. */
-
-#ifndef PKCS11_H
-#define PKCS11_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-
-/* The version of cryptoki we implement. The revision is changed with
- each modification of this file. If you do not use the "official"
- version of this file, please consider deleting the revision macro
- (you may use a macro with a different name to keep track of your
- versions). */
-#define CRYPTOKI_VERSION_MAJOR 2
-#define CRYPTOKI_VERSION_MINOR 20
-#define CRYPTOKI_VERSION_REVISION 6
-
-
-/* Compatibility interface is default, unless CRYPTOKI_GNU is
- given. */
-#ifndef CRYPTOKI_GNU
-#ifndef CRYPTOKI_COMPAT
-#define CRYPTOKI_COMPAT 1
-#endif
-#endif
-
-/* System dependencies. */
-
-#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
-
-/* There is a matching pop below. */
-#pragma pack(push, cryptoki, 1)
-
-#ifdef CRYPTOKI_EXPORTS
-#define CK_SPEC __declspec(dllexport)
-#else
-#define CK_SPEC __declspec(dllimport)
-#endif
-
-#else
-
-#define CK_SPEC
-
-#endif
-
-
-#ifdef CRYPTOKI_COMPAT
- /* If we are in compatibility mode, switch all exposed names to the
- PKCS #11 variant. There are corresponding #undefs below. */
-
-#define ck_flags_t CK_FLAGS
-#define ck_version _CK_VERSION
-
-#define ck_info _CK_INFO
-#define cryptoki_version cryptokiVersion
-#define manufacturer_id manufacturerID
-#define library_description libraryDescription
-#define library_version libraryVersion
-
-#define ck_notification_t CK_NOTIFICATION
-#define ck_slot_id_t CK_SLOT_ID
-
-#define ck_slot_info _CK_SLOT_INFO
-#define slot_description slotDescription
-#define hardware_version hardwareVersion
-#define firmware_version firmwareVersion
-
-#define ck_token_info _CK_TOKEN_INFO
-#define serial_number serialNumber
-#define max_session_count ulMaxSessionCount
-#define session_count ulSessionCount
-#define max_rw_session_count ulMaxRwSessionCount
-#define rw_session_count ulRwSessionCount
-#define max_pin_len ulMaxPinLen
-#define min_pin_len ulMinPinLen
-#define total_public_memory ulTotalPublicMemory
-#define free_public_memory ulFreePublicMemory
-#define total_private_memory ulTotalPrivateMemory
-#define free_private_memory ulFreePrivateMemory
-#define utc_time utcTime
-
-#define ck_session_handle_t CK_SESSION_HANDLE
-#define ck_user_type_t CK_USER_TYPE
-#define ck_state_t CK_STATE
-
-#define ck_session_info _CK_SESSION_INFO
-#define slot_id slotID
-#define device_error ulDeviceError
-
-#define ck_object_handle_t CK_OBJECT_HANDLE
-#define ck_object_class_t CK_OBJECT_CLASS
-#define ck_hw_feature_type_t CK_HW_FEATURE_TYPE
-#define ck_key_type_t CK_KEY_TYPE
-#define ck_certificate_type_t CK_CERTIFICATE_TYPE
-#define ck_attribute_type_t CK_ATTRIBUTE_TYPE
-
-#define ck_attribute _CK_ATTRIBUTE
-#define value pValue
-#define value_len ulValueLen
-
-#define ck_date _CK_DATE
-
-#define ck_mechanism_type_t CK_MECHANISM_TYPE
-
-#define ck_mechanism _CK_MECHANISM
-#define parameter pParameter
-#define parameter_len ulParameterLen
-
-#define ck_mechanism_info _CK_MECHANISM_INFO
-#define min_key_size ulMinKeySize
-#define max_key_size ulMaxKeySize
-
-#define ck_rv_t CK_RV
-#define ck_notify_t CK_NOTIFY
-
-#define ck_function_list _CK_FUNCTION_LIST
-
-#define ck_createmutex_t CK_CREATEMUTEX
-#define ck_destroymutex_t CK_DESTROYMUTEX
-#define ck_lockmutex_t CK_LOCKMUTEX
-#define ck_unlockmutex_t CK_UNLOCKMUTEX
-
-#define ck_c_initialize_args _CK_C_INITIALIZE_ARGS
-#define create_mutex CreateMutex
-#define destroy_mutex DestroyMutex
-#define lock_mutex LockMutex
-#define unlock_mutex UnlockMutex
-#define reserved pReserved
-
-#endif /* CRYPTOKI_COMPAT */
-
-
-
-typedef unsigned long ck_flags_t;
-
-struct ck_version
-{
- unsigned char major;
- unsigned char minor;
-};
-
-
-struct ck_info
-{
- struct ck_version cryptoki_version;
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- unsigned char library_description[32];
- struct ck_version library_version;
-};
-
-
-typedef unsigned long ck_notification_t;
-
-#define CKN_SURRENDER (0)
-
-
-typedef unsigned long ck_slot_id_t;
-
-
-struct ck_slot_info
-{
- unsigned char slot_description[64];
- unsigned char manufacturer_id[32];
- ck_flags_t flags;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
-};
-
-
-#define CKF_TOKEN_PRESENT (1 << 0)
-#define CKF_REMOVABLE_DEVICE (1 << 1)
-#define CKF_HW_SLOT (1 << 2)
-#define CKF_ARRAY_ATTRIBUTE (1 << 30)
-
-
-struct ck_token_info
-{
- unsigned char label[32];
- unsigned char manufacturer_id[32];
- unsigned char model[16];
- unsigned char serial_number[16];
- ck_flags_t flags;
- unsigned long max_session_count;
- unsigned long session_count;
- unsigned long max_rw_session_count;
- unsigned long rw_session_count;
- unsigned long max_pin_len;
- unsigned long min_pin_len;
- unsigned long total_public_memory;
- unsigned long free_public_memory;
- unsigned long total_private_memory;
- unsigned long free_private_memory;
- struct ck_version hardware_version;
- struct ck_version firmware_version;
- unsigned char utc_time[16];
-};
-
-
-#define CKF_RNG (1 << 0)
-#define CKF_WRITE_PROTECTED (1 << 1)
-#define CKF_LOGIN_REQUIRED (1 << 2)
-#define CKF_USER_PIN_INITIALIZED (1 << 3)
-#define CKF_RESTORE_KEY_NOT_NEEDED (1 << 5)
-#define CKF_CLOCK_ON_TOKEN (1 << 6)
-#define CKF_PROTECTED_AUTHENTICATION_PATH (1 << 8)
-#define CKF_DUAL_CRYPTO_OPERATIONS (1 << 9)
-#define CKF_TOKEN_INITIALIZED (1 << 10)
-#define CKF_SECONDARY_AUTHENTICATION (1 << 11)
-#define CKF_USER_PIN_COUNT_LOW (1 << 16)
-#define CKF_USER_PIN_FINAL_TRY (1 << 17)
-#define CKF_USER_PIN_LOCKED (1 << 18)
-#define CKF_USER_PIN_TO_BE_CHANGED (1 << 19)
-#define CKF_SO_PIN_COUNT_LOW (1 << 20)
-#define CKF_SO_PIN_FINAL_TRY (1 << 21)
-#define CKF_SO_PIN_LOCKED (1 << 22)
-#define CKF_SO_PIN_TO_BE_CHANGED (1 << 23)
-
-#define CK_UNAVAILABLE_INFORMATION ((unsigned long) -1)
-#define CK_EFFECTIVELY_INFINITE (0)
-
-
-typedef unsigned long ck_session_handle_t;
-
-#define CK_INVALID_HANDLE (0)
-
-
-typedef unsigned long ck_user_type_t;
-
-#define CKU_SO (0)
-#define CKU_USER (1)
-#define CKU_CONTEXT_SPECIFIC (2)
-
-
-typedef unsigned long ck_state_t;
-
-#define CKS_RO_PUBLIC_SESSION (0)
-#define CKS_RO_USER_FUNCTIONS (1)
-#define CKS_RW_PUBLIC_SESSION (2)
-#define CKS_RW_USER_FUNCTIONS (3)
-#define CKS_RW_SO_FUNCTIONS (4)
-
-
-struct ck_session_info
-{
- ck_slot_id_t slot_id;
- ck_state_t state;
- ck_flags_t flags;
- unsigned long device_error;
-};
-
-#define CKF_RW_SESSION (1 << 1)
-#define CKF_SERIAL_SESSION (1 << 2)
-
-
-typedef unsigned long ck_object_handle_t;
-
-
-typedef unsigned long ck_object_class_t;
-
-#define CKO_DATA (0)
-#define CKO_CERTIFICATE (1)
-#define CKO_PUBLIC_KEY (2)
-#define CKO_PRIVATE_KEY (3)
-#define CKO_SECRET_KEY (4)
-#define CKO_HW_FEATURE (5)
-#define CKO_DOMAIN_PARAMETERS (6)
-#define CKO_MECHANISM (7)
-#define CKO_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-typedef unsigned long ck_hw_feature_type_t;
-
-#define CKH_MONOTONIC_COUNTER (1)
-#define CKH_CLOCK (2)
-#define CKH_USER_INTERFACE (3)
-#define CKH_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-typedef unsigned long ck_key_type_t;
-
-#define CKK_RSA (0)
-#define CKK_DSA (1)
-#define CKK_DH (2)
-#define CKK_ECDSA (3)
-#define CKK_EC (3)
-#define CKK_X9_42_DH (4)
-#define CKK_KEA (5)
-#define CKK_GENERIC_SECRET (0x10)
-#define CKK_RC2 (0x11)
-#define CKK_RC4 (0x12)
-#define CKK_DES (0x13)
-#define CKK_DES2 (0x14)
-#define CKK_DES3 (0x15)
-#define CKK_CAST (0x16)
-#define CKK_CAST3 (0x17)
-#define CKK_CAST128 (0x18)
-#define CKK_RC5 (0x19)
-#define CKK_IDEA (0x1a)
-#define CKK_SKIPJACK (0x1b)
-#define CKK_BATON (0x1c)
-#define CKK_JUNIPER (0x1d)
-#define CKK_CDMF (0x1e)
-#define CKK_AES (0x1f)
-#define CKK_BLOWFISH (0x20)
-#define CKK_TWOFISH (0x21)
-#define CKK_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-typedef unsigned long ck_certificate_type_t;
-
-#define CKC_X_509 (0)
-#define CKC_X_509_ATTR_CERT (1)
-#define CKC_WTLS (2)
-#define CKC_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-typedef unsigned long ck_attribute_type_t;
-
-#define CKA_CLASS (0)
-#define CKA_TOKEN (1)
-#define CKA_PRIVATE (2)
-#define CKA_LABEL (3)
-#define CKA_APPLICATION (0x10)
-#define CKA_VALUE (0x11)
-#define CKA_OBJECT_ID (0x12)
-#define CKA_CERTIFICATE_TYPE (0x80)
-#define CKA_ISSUER (0x81)
-#define CKA_SERIAL_NUMBER (0x82)
-#define CKA_AC_ISSUER (0x83)
-#define CKA_OWNER (0x84)
-#define CKA_ATTR_TYPES (0x85)
-#define CKA_TRUSTED (0x86)
-#define CKA_CERTIFICATE_CATEGORY (0x87)
-#define CKA_JAVA_MIDP_SECURITY_DOMAIN (0x88)
-#define CKA_URL (0x89)
-#define CKA_HASH_OF_SUBJECT_PUBLIC_KEY (0x8a)
-#define CKA_HASH_OF_ISSUER_PUBLIC_KEY (0x8b)
-#define CKA_CHECK_VALUE (0x90)
-#define CKA_KEY_TYPE (0x100)
-#define CKA_SUBJECT (0x101)
-#define CKA_ID (0x102)
-#define CKA_SENSITIVE (0x103)
-#define CKA_ENCRYPT (0x104)
-#define CKA_DECRYPT (0x105)
-#define CKA_WRAP (0x106)
-#define CKA_UNWRAP (0x107)
-#define CKA_SIGN (0x108)
-#define CKA_SIGN_RECOVER (0x109)
-#define CKA_VERIFY (0x10a)
-#define CKA_VERIFY_RECOVER (0x10b)
-#define CKA_DERIVE (0x10c)
-#define CKA_START_DATE (0x110)
-#define CKA_END_DATE (0x111)
-#define CKA_MODULUS (0x120)
-#define CKA_MODULUS_BITS (0x121)
-#define CKA_PUBLIC_EXPONENT (0x122)
-#define CKA_PRIVATE_EXPONENT (0x123)
-#define CKA_PRIME_1 (0x124)
-#define CKA_PRIME_2 (0x125)
-#define CKA_EXPONENT_1 (0x126)
-#define CKA_EXPONENT_2 (0x127)
-#define CKA_COEFFICIENT (0x128)
-#define CKA_PRIME (0x130)
-#define CKA_SUBPRIME (0x131)
-#define CKA_BASE (0x132)
-#define CKA_PRIME_BITS (0x133)
-#define CKA_SUB_PRIME_BITS (0x134)
-#define CKA_VALUE_BITS (0x160)
-#define CKA_VALUE_LEN (0x161)
-#define CKA_EXTRACTABLE (0x162)
-#define CKA_LOCAL (0x163)
-#define CKA_NEVER_EXTRACTABLE (0x164)
-#define CKA_ALWAYS_SENSITIVE (0x165)
-#define CKA_KEY_GEN_MECHANISM (0x166)
-#define CKA_MODIFIABLE (0x170)
-#define CKA_ECDSA_PARAMS (0x180)
-#define CKA_EC_PARAMS (0x180)
-#define CKA_EC_POINT (0x181)
-#define CKA_SECONDARY_AUTH (0x200)
-#define CKA_AUTH_PIN_FLAGS (0x201)
-#define CKA_ALWAYS_AUTHENTICATE (0x202)
-#define CKA_WRAP_WITH_TRUSTED (0x210)
-#define CKA_HW_FEATURE_TYPE (0x300)
-#define CKA_RESET_ON_INIT (0x301)
-#define CKA_HAS_RESET (0x302)
-#define CKA_PIXEL_X (0x400)
-#define CKA_PIXEL_Y (0x401)
-#define CKA_RESOLUTION (0x402)
-#define CKA_CHAR_ROWS (0x403)
-#define CKA_CHAR_COLUMNS (0x404)
-#define CKA_COLOR (0x405)
-#define CKA_BITS_PER_PIXEL (0x406)
-#define CKA_CHAR_SETS (0x480)
-#define CKA_ENCODING_METHODS (0x481)
-#define CKA_MIME_TYPES (0x482)
-#define CKA_MECHANISM_TYPE (0x500)
-#define CKA_REQUIRED_CMS_ATTRIBUTES (0x501)
-#define CKA_DEFAULT_CMS_ATTRIBUTES (0x502)
-#define CKA_SUPPORTED_CMS_ATTRIBUTES (0x503)
-#define CKA_WRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x211)
-#define CKA_UNWRAP_TEMPLATE (CKF_ARRAY_ATTRIBUTE | 0x212)
-#define CKA_ALLOWED_MECHANISMS (CKF_ARRAY_ATTRIBUTE | 0x600)
-#define CKA_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-struct ck_attribute
-{
- ck_attribute_type_t type;
- void *value;
- unsigned long value_len;
-};
-
-
-struct ck_date
-{
- unsigned char year[4];
- unsigned char month[2];
- unsigned char day[2];
-};
-
-
-typedef unsigned long ck_mechanism_type_t;
-
-#define CKM_RSA_PKCS_KEY_PAIR_GEN (0)
-#define CKM_RSA_PKCS (1)
-#define CKM_RSA_9796 (2)
-#define CKM_RSA_X_509 (3)
-#define CKM_MD2_RSA_PKCS (4)
-#define CKM_MD5_RSA_PKCS (5)
-#define CKM_SHA1_RSA_PKCS (6)
-#define CKM_RIPEMD128_RSA_PKCS (7)
-#define CKM_RIPEMD160_RSA_PKCS (8)
-#define CKM_RSA_PKCS_OAEP (9)
-#define CKM_RSA_X9_31_KEY_PAIR_GEN (0xa)
-#define CKM_RSA_X9_31 (0xb)
-#define CKM_SHA1_RSA_X9_31 (0xc)
-#define CKM_RSA_PKCS_PSS (0xd)
-#define CKM_SHA1_RSA_PKCS_PSS (0xe)
-#define CKM_DSA_KEY_PAIR_GEN (0x10)
-#define CKM_DSA (0x11)
-#define CKM_DSA_SHA1 (0x12)
-#define CKM_DH_PKCS_KEY_PAIR_GEN (0x20)
-#define CKM_DH_PKCS_DERIVE (0x21)
-#define CKM_X9_42_DH_KEY_PAIR_GEN (0x30)
-#define CKM_X9_42_DH_DERIVE (0x31)
-#define CKM_X9_42_DH_HYBRID_DERIVE (0x32)
-#define CKM_X9_42_MQV_DERIVE (0x33)
-#define CKM_SHA256_RSA_PKCS (0x40)
-#define CKM_SHA384_RSA_PKCS (0x41)
-#define CKM_SHA512_RSA_PKCS (0x42)
-#define CKM_SHA256_RSA_PKCS_PSS (0x43)
-#define CKM_SHA384_RSA_PKCS_PSS (0x44)
-#define CKM_SHA512_RSA_PKCS_PSS (0x45)
-#define CKM_RC2_KEY_GEN (0x100)
-#define CKM_RC2_ECB (0x101)
-#define CKM_RC2_CBC (0x102)
-#define CKM_RC2_MAC (0x103)
-#define CKM_RC2_MAC_GENERAL (0x104)
-#define CKM_RC2_CBC_PAD (0x105)
-#define CKM_RC4_KEY_GEN (0x110)
-#define CKM_RC4 (0x111)
-#define CKM_DES_KEY_GEN (0x120)
-#define CKM_DES_ECB (0x121)
-#define CKM_DES_CBC (0x122)
-#define CKM_DES_MAC (0x123)
-#define CKM_DES_MAC_GENERAL (0x124)
-#define CKM_DES_CBC_PAD (0x125)
-#define CKM_DES2_KEY_GEN (0x130)
-#define CKM_DES3_KEY_GEN (0x131)
-#define CKM_DES3_ECB (0x132)
-#define CKM_DES3_CBC (0x133)
-#define CKM_DES3_MAC (0x134)
-#define CKM_DES3_MAC_GENERAL (0x135)
-#define CKM_DES3_CBC_PAD (0x136)
-#define CKM_CDMF_KEY_GEN (0x140)
-#define CKM_CDMF_ECB (0x141)
-#define CKM_CDMF_CBC (0x142)
-#define CKM_CDMF_MAC (0x143)
-#define CKM_CDMF_MAC_GENERAL (0x144)
-#define CKM_CDMF_CBC_PAD (0x145)
-#define CKM_MD2 (0x200)
-#define CKM_MD2_HMAC (0x201)
-#define CKM_MD2_HMAC_GENERAL (0x202)
-#define CKM_MD5 (0x210)
-#define CKM_MD5_HMAC (0x211)
-#define CKM_MD5_HMAC_GENERAL (0x212)
-#define CKM_SHA_1 (0x220)
-#define CKM_SHA_1_HMAC (0x221)
-#define CKM_SHA_1_HMAC_GENERAL (0x222)
-#define CKM_RIPEMD128 (0x230)
-#define CKM_RIPEMD128_HMAC (0x231)
-#define CKM_RIPEMD128_HMAC_GENERAL (0x232)
-#define CKM_RIPEMD160 (0x240)
-#define CKM_RIPEMD160_HMAC (0x241)
-#define CKM_RIPEMD160_HMAC_GENERAL (0x242)
-#define CKM_SHA256 (0x250)
-#define CKM_SHA256_HMAC (0x251)
-#define CKM_SHA256_HMAC_GENERAL (0x252)
-#define CKM_SHA384 (0x260)
-#define CKM_SHA384_HMAC (0x261)
-#define CKM_SHA384_HMAC_GENERAL (0x262)
-#define CKM_SHA512 (0x270)
-#define CKM_SHA512_HMAC (0x271)
-#define CKM_SHA512_HMAC_GENERAL (0x272)
-#define CKM_CAST_KEY_GEN (0x300)
-#define CKM_CAST_ECB (0x301)
-#define CKM_CAST_CBC (0x302)
-#define CKM_CAST_MAC (0x303)
-#define CKM_CAST_MAC_GENERAL (0x304)
-#define CKM_CAST_CBC_PAD (0x305)
-#define CKM_CAST3_KEY_GEN (0x310)
-#define CKM_CAST3_ECB (0x311)
-#define CKM_CAST3_CBC (0x312)
-#define CKM_CAST3_MAC (0x313)
-#define CKM_CAST3_MAC_GENERAL (0x314)
-#define CKM_CAST3_CBC_PAD (0x315)
-#define CKM_CAST5_KEY_GEN (0x320)
-#define CKM_CAST128_KEY_GEN (0x320)
-#define CKM_CAST5_ECB (0x321)
-#define CKM_CAST128_ECB (0x321)
-#define CKM_CAST5_CBC (0x322)
-#define CKM_CAST128_CBC (0x322)
-#define CKM_CAST5_MAC (0x323)
-#define CKM_CAST128_MAC (0x323)
-#define CKM_CAST5_MAC_GENERAL (0x324)
-#define CKM_CAST128_MAC_GENERAL (0x324)
-#define CKM_CAST5_CBC_PAD (0x325)
-#define CKM_CAST128_CBC_PAD (0x325)
-#define CKM_RC5_KEY_GEN (0x330)
-#define CKM_RC5_ECB (0x331)
-#define CKM_RC5_CBC (0x332)
-#define CKM_RC5_MAC (0x333)
-#define CKM_RC5_MAC_GENERAL (0x334)
-#define CKM_RC5_CBC_PAD (0x335)
-#define CKM_IDEA_KEY_GEN (0x340)
-#define CKM_IDEA_ECB (0x341)
-#define CKM_IDEA_CBC (0x342)
-#define CKM_IDEA_MAC (0x343)
-#define CKM_IDEA_MAC_GENERAL (0x344)
-#define CKM_IDEA_CBC_PAD (0x345)
-#define CKM_GENERIC_SECRET_KEY_GEN (0x350)
-#define CKM_CONCATENATE_BASE_AND_KEY (0x360)
-#define CKM_CONCATENATE_BASE_AND_DATA (0x362)
-#define CKM_CONCATENATE_DATA_AND_BASE (0x363)
-#define CKM_XOR_BASE_AND_DATA (0x364)
-#define CKM_EXTRACT_KEY_FROM_KEY (0x365)
-#define CKM_SSL3_PRE_MASTER_KEY_GEN (0x370)
-#define CKM_SSL3_MASTER_KEY_DERIVE (0x371)
-#define CKM_SSL3_KEY_AND_MAC_DERIVE (0x372)
-#define CKM_SSL3_MASTER_KEY_DERIVE_DH (0x373)
-#define CKM_TLS_PRE_MASTER_KEY_GEN (0x374)
-#define CKM_TLS_MASTER_KEY_DERIVE (0x375)
-#define CKM_TLS_KEY_AND_MAC_DERIVE (0x376)
-#define CKM_TLS_MASTER_KEY_DERIVE_DH (0x377)
-#define CKM_SSL3_MD5_MAC (0x380)
-#define CKM_SSL3_SHA1_MAC (0x381)
-#define CKM_MD5_KEY_DERIVATION (0x390)
-#define CKM_MD2_KEY_DERIVATION (0x391)
-#define CKM_SHA1_KEY_DERIVATION (0x392)
-#define CKM_PBE_MD2_DES_CBC (0x3a0)
-#define CKM_PBE_MD5_DES_CBC (0x3a1)
-#define CKM_PBE_MD5_CAST_CBC (0x3a2)
-#define CKM_PBE_MD5_CAST3_CBC (0x3a3)
-#define CKM_PBE_MD5_CAST5_CBC (0x3a4)
-#define CKM_PBE_MD5_CAST128_CBC (0x3a4)
-#define CKM_PBE_SHA1_CAST5_CBC (0x3a5)
-#define CKM_PBE_SHA1_CAST128_CBC (0x3a5)
-#define CKM_PBE_SHA1_RC4_128 (0x3a6)
-#define CKM_PBE_SHA1_RC4_40 (0x3a7)
-#define CKM_PBE_SHA1_DES3_EDE_CBC (0x3a8)
-#define CKM_PBE_SHA1_DES2_EDE_CBC (0x3a9)
-#define CKM_PBE_SHA1_RC2_128_CBC (0x3aa)
-#define CKM_PBE_SHA1_RC2_40_CBC (0x3ab)
-#define CKM_PKCS5_PBKD2 (0x3b0)
-#define CKM_PBA_SHA1_WITH_SHA1_HMAC (0x3c0)
-#define CKM_KEY_WRAP_LYNKS (0x400)
-#define CKM_KEY_WRAP_SET_OAEP (0x401)
-#define CKM_SKIPJACK_KEY_GEN (0x1000)
-#define CKM_SKIPJACK_ECB64 (0x1001)
-#define CKM_SKIPJACK_CBC64 (0x1002)
-#define CKM_SKIPJACK_OFB64 (0x1003)
-#define CKM_SKIPJACK_CFB64 (0x1004)
-#define CKM_SKIPJACK_CFB32 (0x1005)
-#define CKM_SKIPJACK_CFB16 (0x1006)
-#define CKM_SKIPJACK_CFB8 (0x1007)
-#define CKM_SKIPJACK_WRAP (0x1008)
-#define CKM_SKIPJACK_PRIVATE_WRAP (0x1009)
-#define CKM_SKIPJACK_RELAYX (0x100a)
-#define CKM_KEA_KEY_PAIR_GEN (0x1010)
-#define CKM_KEA_KEY_DERIVE (0x1011)
-#define CKM_FORTEZZA_TIMESTAMP (0x1020)
-#define CKM_BATON_KEY_GEN (0x1030)
-#define CKM_BATON_ECB128 (0x1031)
-#define CKM_BATON_ECB96 (0x1032)
-#define CKM_BATON_CBC128 (0x1033)
-#define CKM_BATON_COUNTER (0x1034)
-#define CKM_BATON_SHUFFLE (0x1035)
-#define CKM_BATON_WRAP (0x1036)
-#define CKM_ECDSA_KEY_PAIR_GEN (0x1040)
-#define CKM_EC_KEY_PAIR_GEN (0x1040)
-#define CKM_ECDSA (0x1041)
-#define CKM_ECDSA_SHA1 (0x1042)
-#define CKM_ECDH1_DERIVE (0x1050)
-#define CKM_ECDH1_COFACTOR_DERIVE (0x1051)
-#define CKM_ECMQV_DERIVE (0x1052)
-#define CKM_JUNIPER_KEY_GEN (0x1060)
-#define CKM_JUNIPER_ECB128 (0x1061)
-#define CKM_JUNIPER_CBC128 (0x1062)
-#define CKM_JUNIPER_COUNTER (0x1063)
-#define CKM_JUNIPER_SHUFFLE (0x1064)
-#define CKM_JUNIPER_WRAP (0x1065)
-#define CKM_FASTHASH (0x1070)
-#define CKM_AES_KEY_GEN (0x1080)
-#define CKM_AES_ECB (0x1081)
-#define CKM_AES_CBC (0x1082)
-#define CKM_AES_MAC (0x1083)
-#define CKM_AES_MAC_GENERAL (0x1084)
-#define CKM_AES_CBC_PAD (0x1085)
-#define CKM_DSA_PARAMETER_GEN (0x2000)
-#define CKM_DH_PKCS_PARAMETER_GEN (0x2001)
-#define CKM_X9_42_DH_PARAMETER_GEN (0x2002)
-#define CKM_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-struct ck_mechanism
-{
- ck_mechanism_type_t mechanism;
- void *parameter;
- unsigned long parameter_len;
-};
-
-
-struct ck_mechanism_info
-{
- unsigned long min_key_size;
- unsigned long max_key_size;
- ck_flags_t flags;
-};
-
-#define CKF_HW (1 << 0)
-#define CKF_ENCRYPT (1 << 8)
-#define CKF_DECRYPT (1 << 9)
-#define CKF_DIGEST (1 << 10)
-#define CKF_SIGN (1 << 11)
-#define CKF_SIGN_RECOVER (1 << 12)
-#define CKF_VERIFY (1 << 13)
-#define CKF_VERIFY_RECOVER (1 << 14)
-#define CKF_GENERATE (1 << 15)
-#define CKF_GENERATE_KEY_PAIR (1 << 16)
-#define CKF_WRAP (1 << 17)
-#define CKF_UNWRAP (1 << 18)
-#define CKF_DERIVE (1 << 19)
-#define CKF_EXTENSION ((unsigned long) (1 << 31))
-
-
-/* Flags for C_WaitForSlotEvent. */
-#define CKF_DONT_BLOCK (1)
-
-
-typedef unsigned long ck_rv_t;
-
-
-typedef ck_rv_t (*ck_notify_t) (ck_session_handle_t session,
- ck_notification_t event, void *application);
-
-/* Forward reference. */
-struct ck_function_list;
-
-#define _CK_DECLARE_FUNCTION(name, args) \
-typedef ck_rv_t (*CK_ ## name) args; \
-ck_rv_t CK_SPEC name args
-
-_CK_DECLARE_FUNCTION (C_Initialize, (void *init_args));
-_CK_DECLARE_FUNCTION (C_Finalize, (void *reserved));
-_CK_DECLARE_FUNCTION (C_GetInfo, (struct ck_info *info));
-_CK_DECLARE_FUNCTION (C_GetFunctionList,
- (struct ck_function_list **function_list));
-
-_CK_DECLARE_FUNCTION (C_GetSlotList,
- (unsigned char token_present, ck_slot_id_t *slot_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetSlotInfo,
- (ck_slot_id_t slot_id, struct ck_slot_info *info));
-_CK_DECLARE_FUNCTION (C_GetTokenInfo,
- (ck_slot_id_t slot_id, struct ck_token_info *info));
-_CK_DECLARE_FUNCTION (C_WaitForSlotEvent,
- (ck_flags_t flags, ck_slot_id_t *slot, void *reserved));
-_CK_DECLARE_FUNCTION (C_GetMechanismList,
- (ck_slot_id_t slot_id,
- ck_mechanism_type_t *mechanism_list,
- unsigned long *count));
-_CK_DECLARE_FUNCTION (C_GetMechanismInfo,
- (ck_slot_id_t slot_id, ck_mechanism_type_t type,
- struct ck_mechanism_info *info));
-_CK_DECLARE_FUNCTION (C_InitToken,
- (ck_slot_id_t slot_id, unsigned char *pin,
- unsigned long pin_len, unsigned char *label));
-_CK_DECLARE_FUNCTION (C_InitPIN,
- (ck_session_handle_t session, unsigned char *pin,
- unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_SetPIN,
- (ck_session_handle_t session, unsigned char *old_pin,
- unsigned long old_len, unsigned char *new_pin,
- unsigned long new_len));
-
-_CK_DECLARE_FUNCTION (C_OpenSession,
- (ck_slot_id_t slot_id, ck_flags_t flags,
- void *application, ck_notify_t notify,
- ck_session_handle_t *session));
-_CK_DECLARE_FUNCTION (C_CloseSession, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CloseAllSessions, (ck_slot_id_t slot_id));
-_CK_DECLARE_FUNCTION (C_GetSessionInfo,
- (ck_session_handle_t session,
- struct ck_session_info *info));
-_CK_DECLARE_FUNCTION (C_GetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long *operation_state_len));
-_CK_DECLARE_FUNCTION (C_SetOperationState,
- (ck_session_handle_t session,
- unsigned char *operation_state,
- unsigned long operation_state_len,
- ck_object_handle_t encryption_key,
- ck_object_handle_t authentiation_key));
-_CK_DECLARE_FUNCTION (C_Login,
- (ck_session_handle_t session, ck_user_type_t user_type,
- unsigned char *pin, unsigned long pin_len));
-_CK_DECLARE_FUNCTION (C_Logout, (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_CreateObject,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count, ck_object_handle_t *object));
-_CK_DECLARE_FUNCTION (C_CopyObject,
- (ck_session_handle_t session, ck_object_handle_t object,
- struct ck_attribute *templ, unsigned long count,
- ck_object_handle_t *new_object));
-_CK_DECLARE_FUNCTION (C_DestroyObject,
- (ck_session_handle_t session,
- ck_object_handle_t object));
-_CK_DECLARE_FUNCTION (C_GetObjectSize,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- unsigned long *size));
-_CK_DECLARE_FUNCTION (C_GetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_SetAttributeValue,
- (ck_session_handle_t session,
- ck_object_handle_t object,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjectsInit,
- (ck_session_handle_t session,
- struct ck_attribute *templ,
- unsigned long count));
-_CK_DECLARE_FUNCTION (C_FindObjects,
- (ck_session_handle_t session,
- ck_object_handle_t *object,
- unsigned long max_object_count,
- unsigned long *object_count));
-_CK_DECLARE_FUNCTION (C_FindObjectsFinal,
- (ck_session_handle_t session));
-
-_CK_DECLARE_FUNCTION (C_EncryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Encrypt,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *encrypted_data,
- unsigned long *encrypted_data_len));
-_CK_DECLARE_FUNCTION (C_EncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_EncryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_encrypted_part,
- unsigned long *last_encrypted_part_len));
-
-_CK_DECLARE_FUNCTION (C_DecryptInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Decrypt,
- (ck_session_handle_t session,
- unsigned char *encrypted_data,
- unsigned long encrypted_data_len,
- unsigned char *data, unsigned long *data_len));
-_CK_DECLARE_FUNCTION (C_DecryptUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part, unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_DecryptFinal,
- (ck_session_handle_t session,
- unsigned char *last_part,
- unsigned long *last_part_len));
-
-_CK_DECLARE_FUNCTION (C_DigestInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism));
-_CK_DECLARE_FUNCTION (C_Digest,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *digest,
- unsigned long *digest_len));
-_CK_DECLARE_FUNCTION (C_DigestUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_DigestKey,
- (ck_session_handle_t session, ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_DigestFinal,
- (ck_session_handle_t session,
- unsigned char *digest,
- unsigned long *digest_len));
-
-_CK_DECLARE_FUNCTION (C_SignInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Sign,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_SignFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long *signature_len));
-_CK_DECLARE_FUNCTION (C_SignRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_SignRecover,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long *signature_len));
-
-_CK_DECLARE_FUNCTION (C_VerifyInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_Verify,
- (ck_session_handle_t session,
- unsigned char *data, unsigned long data_len,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len));
-_CK_DECLARE_FUNCTION (C_VerifyFinal,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len));
-_CK_DECLARE_FUNCTION (C_VerifyRecoverInit,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t key));
-_CK_DECLARE_FUNCTION (C_VerifyRecover,
- (ck_session_handle_t session,
- unsigned char *signature,
- unsigned long signature_len,
- unsigned char *data,
- unsigned long *data_len));
-
-_CK_DECLARE_FUNCTION (C_DigestEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptDigestUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-_CK_DECLARE_FUNCTION (C_SignEncryptUpdate,
- (ck_session_handle_t session,
- unsigned char *part, unsigned long part_len,
- unsigned char *encrypted_part,
- unsigned long *encrypted_part_len));
-_CK_DECLARE_FUNCTION (C_DecryptVerifyUpdate,
- (ck_session_handle_t session,
- unsigned char *encrypted_part,
- unsigned long encrypted_part_len,
- unsigned char *part,
- unsigned long *part_len));
-
-_CK_DECLARE_FUNCTION (C_GenerateKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *templ,
- unsigned long count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_GenerateKeyPair,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- struct ck_attribute *public_key_template,
- unsigned long public_key_attribute_count,
- struct ck_attribute *private_key_template,
- unsigned long private_key_attribute_count,
- ck_object_handle_t *public_key,
- ck_object_handle_t *private_key));
-_CK_DECLARE_FUNCTION (C_WrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t wrapping_key,
- ck_object_handle_t key,
- unsigned char *wrapped_key,
- unsigned long *wrapped_key_len));
-_CK_DECLARE_FUNCTION (C_UnwrapKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t unwrapping_key,
- unsigned char *wrapped_key,
- unsigned long wrapped_key_len,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-_CK_DECLARE_FUNCTION (C_DeriveKey,
- (ck_session_handle_t session,
- struct ck_mechanism *mechanism,
- ck_object_handle_t base_key,
- struct ck_attribute *templ,
- unsigned long attribute_count,
- ck_object_handle_t *key));
-
-_CK_DECLARE_FUNCTION (C_SeedRandom,
- (ck_session_handle_t session, unsigned char *seed,
- unsigned long seed_len));
-_CK_DECLARE_FUNCTION (C_GenerateRandom,
- (ck_session_handle_t session,
- unsigned char *random_data,
- unsigned long random_len));
-
-_CK_DECLARE_FUNCTION (C_GetFunctionStatus, (ck_session_handle_t session));
-_CK_DECLARE_FUNCTION (C_CancelFunction, (ck_session_handle_t session));
-
-
-struct ck_function_list
-{
- struct ck_version version;
- CK_C_Initialize C_Initialize;
- CK_C_Finalize C_Finalize;
- CK_C_GetInfo C_GetInfo;
- CK_C_GetFunctionList C_GetFunctionList;
- CK_C_GetSlotList C_GetSlotList;
- CK_C_GetSlotInfo C_GetSlotInfo;
- CK_C_GetTokenInfo C_GetTokenInfo;
- CK_C_GetMechanismList C_GetMechanismList;
- CK_C_GetMechanismInfo C_GetMechanismInfo;
- CK_C_InitToken C_InitToken;
- CK_C_InitPIN C_InitPIN;
- CK_C_SetPIN C_SetPIN;
- CK_C_OpenSession C_OpenSession;
- CK_C_CloseSession C_CloseSession;
- CK_C_CloseAllSessions C_CloseAllSessions;
- CK_C_GetSessionInfo C_GetSessionInfo;
- CK_C_GetOperationState C_GetOperationState;
- CK_C_SetOperationState C_SetOperationState;
- CK_C_Login C_Login;
- CK_C_Logout C_Logout;
- CK_C_CreateObject C_CreateObject;
- CK_C_CopyObject C_CopyObject;
- CK_C_DestroyObject C_DestroyObject;
- CK_C_GetObjectSize C_GetObjectSize;
- CK_C_GetAttributeValue C_GetAttributeValue;
- CK_C_SetAttributeValue C_SetAttributeValue;
- CK_C_FindObjectsInit C_FindObjectsInit;
- CK_C_FindObjects C_FindObjects;
- CK_C_FindObjectsFinal C_FindObjectsFinal;
- CK_C_EncryptInit C_EncryptInit;
- CK_C_Encrypt C_Encrypt;
- CK_C_EncryptUpdate C_EncryptUpdate;
- CK_C_EncryptFinal C_EncryptFinal;
- CK_C_DecryptInit C_DecryptInit;
- CK_C_Decrypt C_Decrypt;
- CK_C_DecryptUpdate C_DecryptUpdate;
- CK_C_DecryptFinal C_DecryptFinal;
- CK_C_DigestInit C_DigestInit;
- CK_C_Digest C_Digest;
- CK_C_DigestUpdate C_DigestUpdate;
- CK_C_DigestKey C_DigestKey;
- CK_C_DigestFinal C_DigestFinal;
- CK_C_SignInit C_SignInit;
- CK_C_Sign C_Sign;
- CK_C_SignUpdate C_SignUpdate;
- CK_C_SignFinal C_SignFinal;
- CK_C_SignRecoverInit C_SignRecoverInit;
- CK_C_SignRecover C_SignRecover;
- CK_C_VerifyInit C_VerifyInit;
- CK_C_Verify C_Verify;
- CK_C_VerifyUpdate C_VerifyUpdate;
- CK_C_VerifyFinal C_VerifyFinal;
- CK_C_VerifyRecoverInit C_VerifyRecoverInit;
- CK_C_VerifyRecover C_VerifyRecover;
- CK_C_DigestEncryptUpdate C_DigestEncryptUpdate;
- CK_C_DecryptDigestUpdate C_DecryptDigestUpdate;
- CK_C_SignEncryptUpdate C_SignEncryptUpdate;
- CK_C_DecryptVerifyUpdate C_DecryptVerifyUpdate;
- CK_C_GenerateKey C_GenerateKey;
- CK_C_GenerateKeyPair C_GenerateKeyPair;
- CK_C_WrapKey C_WrapKey;
- CK_C_UnwrapKey C_UnwrapKey;
- CK_C_DeriveKey C_DeriveKey;
- CK_C_SeedRandom C_SeedRandom;
- CK_C_GenerateRandom C_GenerateRandom;
- CK_C_GetFunctionStatus C_GetFunctionStatus;
- CK_C_CancelFunction C_CancelFunction;
- CK_C_WaitForSlotEvent C_WaitForSlotEvent;
-};
-
-
-typedef ck_rv_t (*ck_createmutex_t) (void **mutex);
-typedef ck_rv_t (*ck_destroymutex_t) (void *mutex);
-typedef ck_rv_t (*ck_lockmutex_t) (void *mutex);
-typedef ck_rv_t (*ck_unlockmutex_t) (void *mutex);
-
-
-struct ck_c_initialize_args
-{
- ck_createmutex_t create_mutex;
- ck_destroymutex_t destroy_mutex;
- ck_lockmutex_t lock_mutex;
- ck_unlockmutex_t unlock_mutex;
- ck_flags_t flags;
- void *reserved;
-};
-
-
-#define CKF_LIBRARY_CANT_CREATE_OS_THREADS (1 << 0)
-#define CKF_OS_LOCKING_OK (1 << 1)
-
-#define CKR_OK (0)
-#define CKR_CANCEL (1)
-#define CKR_HOST_MEMORY (2)
-#define CKR_SLOT_ID_INVALID (3)
-#define CKR_GENERAL_ERROR (5)
-#define CKR_FUNCTION_FAILED (6)
-#define CKR_ARGUMENTS_BAD (7)
-#define CKR_NO_EVENT (8)
-#define CKR_NEED_TO_CREATE_THREADS (9)
-#define CKR_CANT_LOCK (0xa)
-#define CKR_ATTRIBUTE_READ_ONLY (0x10)
-#define CKR_ATTRIBUTE_SENSITIVE (0x11)
-#define CKR_ATTRIBUTE_TYPE_INVALID (0x12)
-#define CKR_ATTRIBUTE_VALUE_INVALID (0x13)
-#define CKR_DATA_INVALID (0x20)
-#define CKR_DATA_LEN_RANGE (0x21)
-#define CKR_DEVICE_ERROR (0x30)
-#define CKR_DEVICE_MEMORY (0x31)
-#define CKR_DEVICE_REMOVED (0x32)
-#define CKR_ENCRYPTED_DATA_INVALID (0x40)
-#define CKR_ENCRYPTED_DATA_LEN_RANGE (0x41)
-#define CKR_FUNCTION_CANCELED (0x50)
-#define CKR_FUNCTION_NOT_PARALLEL (0x51)
-#define CKR_FUNCTION_NOT_SUPPORTED (0x54)
-#define CKR_KEY_HANDLE_INVALID (0x60)
-#define CKR_KEY_SIZE_RANGE (0x62)
-#define CKR_KEY_TYPE_INCONSISTENT (0x63)
-#define CKR_KEY_NOT_NEEDED (0x64)
-#define CKR_KEY_CHANGED (0x65)
-#define CKR_KEY_NEEDED (0x66)
-#define CKR_KEY_INDIGESTIBLE (0x67)
-#define CKR_KEY_FUNCTION_NOT_PERMITTED (0x68)
-#define CKR_KEY_NOT_WRAPPABLE (0x69)
-#define CKR_KEY_UNEXTRACTABLE (0x6a)
-#define CKR_MECHANISM_INVALID (0x70)
-#define CKR_MECHANISM_PARAM_INVALID (0x71)
-#define CKR_OBJECT_HANDLE_INVALID (0x82)
-#define CKR_OPERATION_ACTIVE (0x90)
-#define CKR_OPERATION_NOT_INITIALIZED (0x91)
-#define CKR_PIN_INCORRECT (0xa0)
-#define CKR_PIN_INVALID (0xa1)
-#define CKR_PIN_LEN_RANGE (0xa2)
-#define CKR_PIN_EXPIRED (0xa3)
-#define CKR_PIN_LOCKED (0xa4)
-#define CKR_SESSION_CLOSED (0xb0)
-#define CKR_SESSION_COUNT (0xb1)
-#define CKR_SESSION_HANDLE_INVALID (0xb3)
-#define CKR_SESSION_PARALLEL_NOT_SUPPORTED (0xb4)
-#define CKR_SESSION_READ_ONLY (0xb5)
-#define CKR_SESSION_EXISTS (0xb6)
-#define CKR_SESSION_READ_ONLY_EXISTS (0xb7)
-#define CKR_SESSION_READ_WRITE_SO_EXISTS (0xb8)
-#define CKR_SIGNATURE_INVALID (0xc0)
-#define CKR_SIGNATURE_LEN_RANGE (0xc1)
-#define CKR_TEMPLATE_INCOMPLETE (0xd0)
-#define CKR_TEMPLATE_INCONSISTENT (0xd1)
-#define CKR_TOKEN_NOT_PRESENT (0xe0)
-#define CKR_TOKEN_NOT_RECOGNIZED (0xe1)
-#define CKR_TOKEN_WRITE_PROTECTED (0xe2)
-#define CKR_UNWRAPPING_KEY_HANDLE_INVALID (0xf0)
-#define CKR_UNWRAPPING_KEY_SIZE_RANGE (0xf1)
-#define CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT (0xf2)
-#define CKR_USER_ALREADY_LOGGED_IN (0x100)
-#define CKR_USER_NOT_LOGGED_IN (0x101)
-#define CKR_USER_PIN_NOT_INITIALIZED (0x102)
-#define CKR_USER_TYPE_INVALID (0x103)
-#define CKR_USER_ANOTHER_ALREADY_LOGGED_IN (0x104)
-#define CKR_USER_TOO_MANY_TYPES (0x105)
-#define CKR_WRAPPED_KEY_INVALID (0x110)
-#define CKR_WRAPPED_KEY_LEN_RANGE (0x112)
-#define CKR_WRAPPING_KEY_HANDLE_INVALID (0x113)
-#define CKR_WRAPPING_KEY_SIZE_RANGE (0x114)
-#define CKR_WRAPPING_KEY_TYPE_INCONSISTENT (0x115)
-#define CKR_RANDOM_SEED_NOT_SUPPORTED (0x120)
-#define CKR_RANDOM_NO_RNG (0x121)
-#define CKR_DOMAIN_PARAMS_INVALID (0x130)
-#define CKR_BUFFER_TOO_SMALL (0x150)
-#define CKR_SAVED_STATE_INVALID (0x160)
-#define CKR_INFORMATION_SENSITIVE (0x170)
-#define CKR_STATE_UNSAVEABLE (0x180)
-#define CKR_CRYPTOKI_NOT_INITIALIZED (0x190)
-#define CKR_CRYPTOKI_ALREADY_INITIALIZED (0x191)
-#define CKR_MUTEX_BAD (0x1a0)
-#define CKR_MUTEX_NOT_LOCKED (0x1a1)
-#define CKR_FUNCTION_REJECTED (0x200)
-#define CKR_VENDOR_DEFINED ((unsigned long) (1 << 31))
-
-
-
-/* Compatibility layer. */
-
-#ifdef CRYPTOKI_COMPAT
-
-#undef CK_DEFINE_FUNCTION
-#define CK_DEFINE_FUNCTION(retval, name) retval CK_SPEC name
-
-/* For NULL. */
-#include <stddef.h>
-
-typedef unsigned char CK_BYTE;
-typedef unsigned char CK_CHAR;
-typedef unsigned char CK_UTF8CHAR;
-typedef unsigned char CK_BBOOL;
-typedef unsigned long int CK_ULONG;
-typedef long int CK_LONG;
-typedef CK_BYTE *CK_BYTE_PTR;
-typedef CK_CHAR *CK_CHAR_PTR;
-typedef CK_UTF8CHAR *CK_UTF8CHAR_PTR;
-typedef CK_ULONG *CK_ULONG_PTR;
-typedef void *CK_VOID_PTR;
-typedef void **CK_VOID_PTR_PTR;
-#define CK_FALSE 0
-#define CK_TRUE 1
-#ifndef CK_DISABLE_TRUE_FALSE
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef TRUE
-#define TRUE 1
-#endif
-#endif
-
-typedef struct ck_version CK_VERSION;
-typedef struct ck_version *CK_VERSION_PTR;
-
-typedef struct ck_info CK_INFO;
-typedef struct ck_info *CK_INFO_PTR;
-
-typedef ck_slot_id_t *CK_SLOT_ID_PTR;
-
-typedef struct ck_slot_info CK_SLOT_INFO;
-typedef struct ck_slot_info *CK_SLOT_INFO_PTR;
-
-typedef struct ck_token_info CK_TOKEN_INFO;
-typedef struct ck_token_info *CK_TOKEN_INFO_PTR;
-
-typedef ck_session_handle_t *CK_SESSION_HANDLE_PTR;
-
-typedef struct ck_session_info CK_SESSION_INFO;
-typedef struct ck_session_info *CK_SESSION_INFO_PTR;
-
-typedef ck_object_handle_t *CK_OBJECT_HANDLE_PTR;
-
-typedef ck_object_class_t *CK_OBJECT_CLASS_PTR;
-
-typedef struct ck_attribute CK_ATTRIBUTE;
-typedef struct ck_attribute *CK_ATTRIBUTE_PTR;
-
-typedef struct ck_date CK_DATE;
-typedef struct ck_date *CK_DATE_PTR;
-
-typedef ck_mechanism_type_t *CK_MECHANISM_TYPE_PTR;
-
-typedef struct ck_mechanism CK_MECHANISM;
-typedef struct ck_mechanism *CK_MECHANISM_PTR;
-
-typedef struct ck_mechanism_info CK_MECHANISM_INFO;
-typedef struct ck_mechanism_info *CK_MECHANISM_INFO_PTR;
-
-typedef struct ck_function_list CK_FUNCTION_LIST;
-typedef struct ck_function_list *CK_FUNCTION_LIST_PTR;
-typedef struct ck_function_list **CK_FUNCTION_LIST_PTR_PTR;
-
-typedef struct ck_c_initialize_args CK_C_INITIALIZE_ARGS;
-typedef struct ck_c_initialize_args *CK_C_INITIALIZE_ARGS_PTR;
-
-#define NULL_PTR NULL
-
-/* Delete the helper macros defined at the top of the file. */
-#undef ck_flags_t
-#undef ck_version
-
-#undef ck_info
-#undef cryptoki_version
-#undef manufacturer_id
-#undef library_description
-#undef library_version
-
-#undef ck_notification_t
-#undef ck_slot_id_t
-
-#undef ck_slot_info
-#undef slot_description
-#undef hardware_version
-#undef firmware_version
-
-#undef ck_token_info
-#undef serial_number
-#undef max_session_count
-#undef session_count
-#undef max_rw_session_count
-#undef rw_session_count
-#undef max_pin_len
-#undef min_pin_len
-#undef total_public_memory
-#undef free_public_memory
-#undef total_private_memory
-#undef free_private_memory
-#undef utc_time
-
-#undef ck_session_handle_t
-#undef ck_user_type_t
-#undef ck_state_t
-
-#undef ck_session_info
-#undef slot_id
-#undef device_error
-
-#undef ck_object_handle_t
-#undef ck_object_class_t
-#undef ck_hw_feature_type_t
-#undef ck_key_type_t
-#undef ck_certificate_type_t
-#undef ck_attribute_type_t
-
-#undef ck_attribute
-#undef value
-#undef value_len
-
-#undef ck_date
-
-#undef ck_mechanism_type_t
-
-#undef ck_mechanism
-#undef parameter
-#undef parameter_len
-
-#undef ck_mechanism_info
-#undef min_key_size
-#undef max_key_size
-
-#undef ck_rv_t
-#undef ck_notify_t
-
-#undef ck_function_list
-
-#undef ck_createmutex_t
-#undef ck_destroymutex_t
-#undef ck_lockmutex_t
-#undef ck_unlockmutex_t
-
-#undef ck_c_initialize_args
-#undef create_mutex
-#undef destroy_mutex
-#undef lock_mutex
-#undef unlock_mutex
-#undef reserved
-
-#endif /* CRYPTOKI_COMPAT */
-
-
-/* System dependencies. */
-#if defined(_WIN32) || defined(CRYPTOKI_FORCE_WIN32)
-#pragma pack(pop, cryptoki)
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* PKCS11_H */
diff --git a/pkcs11/pkcs11g.h b/pkcs11/pkcs11g.h
deleted file mode 100644
index 768487e5..00000000
--- a/pkcs11/pkcs11g.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* pkcs11g.h - GNOME extensions to PKCS#11
-
- Copyright (C) 2007, Nate Nielsen
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Nate Nielsen <nielsen@memberwebs.com>
-*/
-
-#ifndef PKCS11G_H
-#define PKCS11G_H
-
-#include "pkcs11.h"
-
-#define CKA_GNOME (CKA_VENDOR_DEFINED | 0x474E4D45 /* GNME */ )
-
-#define CKT_GNOME_UNKNOWN 0
-#define CKT_GNOME_UNTRUSTED 1
-#define CKT_GNOME_TRUSTED 2
-
-/*
- *
- * CK_ULONG
- *
- * - CKT_GNOME_TRUSTED
- * - CKT_GNOME_UNTRUSTED
- * - CKT_GNOME_UNKNOWN
- */
-#define CKA_GNOME_USER_TRUST (CKA_GNOME + 10)
-
-/*
- * Whether the key or certificate is restricted to a set of
- * purposes (ie: enhanced usages).
- *
- * CK_BBOOL
- *
- * - When CK_TRUE see CKA_PURPOSE_OIDS for the set of purposes.
- * - When CK_FALSE then is not restricted to any specific purpose.
- */
-#define CKA_GNOME_PURPOSE_RESTRICTED (CKA_GNOME + 12)
-
-/*
- * The available purposes that a certificate or key can be
- * used for.
- *
- * CK_STRING
- *
- * - This is only relevant if CKA_PURPOSE_RESTRICTED is CK_TRUE.
- * - Use CKA_TRUSTED and CKA_CERTIFICATE_CATEGORY to validate whether
- * usage of the certificate for these purposes is directly or
- * indirectly trusted by the user.
- * - The returned string is a space delemited set of OIDs.
- * - When an empty string is returned then no purposes are valid.
- */
-#define CKA_GNOME_PURPOSE_OIDS (CKA_GNOME + 11)
-
-/*
- * The key or certificate can be used for the purpose
- * indicated
- *
- * CK_BBOOL
- *
- * - These are shortcuts to using CKA_PURPOSE_OIDS
- * - Use CKA_TRUSTED and CKA_CERTIFICATE_CATEGORY to validate whether
- * the certificate is directly or indirectly trusted by the user.
- */
-#define CKA_GNOME_PURPOSE_SSH_AUTH (CKA_GNOME + 101)
-#define CKA_GNOME_PURPOSE_SERVER_AUTH (CKA_GNOME + 102)
-#define CKA_GNOME_PURPOSE_CLIENT_AUTH (CKA_GNOME + 103)
-#define CKA_GNOME_PURPOSE_CODE_SIGNING (CKA_GNOME + 104)
-#define CKA_GNOME_PURPOSE_EMAIL_PROTECTION (CKA_GNOME + 105)
-#define CKA_GNOME_PURPOSE_IPSEC_END_SYSTEM (CKA_GNOME + 106)
-#define CKA_GNOME_PURPOSE_IPSEC_TUNNEL (CKA_GNOME + 107)
-#define CKA_GNOME_PURPOSE_IPSEC_USER (CKA_GNOME + 108)
-#define CKA_GNOME_PURPOSE_TIME_STAMPING (CKA_GNOME + 109)
-
-#endif /* PKCS11G_H */
diff --git a/pkcs11/pkcs11n.h b/pkcs11/pkcs11n.h
deleted file mode 100644
index db7f4c8a..00000000
--- a/pkcs11/pkcs11n.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is the Netscape security libraries.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1994-2000
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Dr Stephen Henson <stephen.henson@gemplus.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-#ifndef _PKCS11N_H_
-#define _PKCS11N_H_
-
-#ifdef DEBUG
-static const char CKT_CVS_ID[] = "@(#) $RCSfile: pkcs11n.h,v $ $Revision: 1.15 $ $Date: 2005/09/28 17:12:17 $";
-#endif /* DEBUG */
-
-/*
- * pkcs11n.h
- *
- * This file contains the NSS-specific type definitions for Cryptoki
- * (PKCS#11).
- */
-
-/*
- * NSSCK_VENDOR_NETSCAPE
- *
- * Cryptoki reserves the high half of all the number spaces for
- * vendor-defined use. I'd like to keep all of our Netscape-
- * specific values together, but not in the oh-so-obvious
- * 0x80000001, 0x80000002, etc. area. So I've picked an offset,
- * and constructed values for the beginnings of our spaces.
- *
- * Note that some "historical" Netscape values don't fall within
- * this range.
- */
-#define NSSCK_VENDOR_NETSCAPE 0x4E534350 /* NSCP */
-
-/*
- * Netscape-defined object classes
- *
- */
-#define CKO_NETSCAPE (CKO_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-#define CKO_NETSCAPE_CRL (CKO_NETSCAPE + 1)
-#define CKO_NETSCAPE_SMIME (CKO_NETSCAPE + 2)
-#define CKO_NETSCAPE_TRUST (CKO_NETSCAPE + 3)
-#define CKO_NETSCAPE_BUILTIN_ROOT_LIST (CKO_NETSCAPE + 4)
-#define CKO_NETSCAPE_NEWSLOT (CKO_NETSCAPE + 5)
-#define CKO_NETSCAPE_DELSLOT (CKO_NETSCAPE + 6)
-
-/*
- * Netscape-defined key types
- *
- */
-#define CKK_NETSCAPE (CKK_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-#define CKK_NETSCAPE_PKCS8 (CKK_NETSCAPE + 1)
-/*
- * Netscape-defined certificate types
- *
- */
-#define CKC_NETSCAPE (CKC_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-/*
- * Netscape-defined object attributes
- *
- */
-#define CKA_NETSCAPE (CKA_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-#define CKA_NETSCAPE_URL (CKA_NETSCAPE + 1)
-#define CKA_NETSCAPE_EMAIL (CKA_NETSCAPE + 2)
-#define CKA_NETSCAPE_SMIME_INFO (CKA_NETSCAPE + 3)
-#define CKA_NETSCAPE_SMIME_TIMESTAMP (CKA_NETSCAPE + 4)
-#define CKA_NETSCAPE_PKCS8_SALT (CKA_NETSCAPE + 5)
-#define CKA_NETSCAPE_PASSWORD_CHECK (CKA_NETSCAPE + 6)
-#define CKA_NETSCAPE_EXPIRES (CKA_NETSCAPE + 7)
-#define CKA_NETSCAPE_KRL (CKA_NETSCAPE + 8)
-
-#define CKA_NETSCAPE_PQG_COUNTER (CKA_NETSCAPE + 20)
-#define CKA_NETSCAPE_PQG_SEED (CKA_NETSCAPE + 21)
-#define CKA_NETSCAPE_PQG_H (CKA_NETSCAPE + 22)
-#define CKA_NETSCAPE_PQG_SEED_BITS (CKA_NETSCAPE + 23)
-#define CKA_NETSCAPE_MODULE_SPEC (CKA_NETSCAPE + 24)
-
-/*
- * Trust attributes:
- *
- * If trust goes standard, these probably will too. So I'll
- * put them all in one place.
- */
-
-#define CKA_TRUST (CKA_NETSCAPE + 0x2000)
-
-/* "Usage" key information */
-#define CKA_TRUST_DIGITAL_SIGNATURE (CKA_TRUST + 1)
-#define CKA_TRUST_NON_REPUDIATION (CKA_TRUST + 2)
-#define CKA_TRUST_KEY_ENCIPHERMENT (CKA_TRUST + 3)
-#define CKA_TRUST_DATA_ENCIPHERMENT (CKA_TRUST + 4)
-#define CKA_TRUST_KEY_AGREEMENT (CKA_TRUST + 5)
-#define CKA_TRUST_KEY_CERT_SIGN (CKA_TRUST + 6)
-#define CKA_TRUST_CRL_SIGN (CKA_TRUST + 7)
-
-/* "Purpose" trust information */
-#define CKA_TRUST_SERVER_AUTH (CKA_TRUST + 8)
-#define CKA_TRUST_CLIENT_AUTH (CKA_TRUST + 9)
-#define CKA_TRUST_CODE_SIGNING (CKA_TRUST + 10)
-#define CKA_TRUST_EMAIL_PROTECTION (CKA_TRUST + 11)
-#define CKA_TRUST_IPSEC_END_SYSTEM (CKA_TRUST + 12)
-#define CKA_TRUST_IPSEC_TUNNEL (CKA_TRUST + 13)
-#define CKA_TRUST_IPSEC_USER (CKA_TRUST + 14)
-#define CKA_TRUST_TIME_STAMPING (CKA_TRUST + 15)
-#define CKA_TRUST_STEP_UP_APPROVED (CKA_TRUST + 16)
-
-#define CKA_CERT_SHA1_HASH (CKA_TRUST + 100)
-#define CKA_CERT_MD5_HASH (CKA_TRUST + 101)
-
-/* Netscape trust stuff */
-/* XXX fgmr new ones here-- step-up, etc. */
-
-/* HISTORICAL: define used to pass in the database key for DSA private keys */
-#define CKA_NETSCAPE_DB 0xD5A0DB00L
-#define CKA_NETSCAPE_TRUST 0x80000001L
-
-/*
- * Netscape-defined crypto mechanisms
- *
- */
-#define CKM_NETSCAPE (CKM_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-#define CKM_NETSCAPE_AES_KEY_WRAP (CKM_NETSCAPE + 1)
-#define CKM_NETSCAPE_AES_KEY_WRAP_PAD (CKM_NETSCAPE + 2)
-
-/*
- * HISTORICAL:
- * Do not attempt to use these. They are only used by NETSCAPE's internal
- * PKCS #11 interface. Most of these are place holders for other mechanism
- * and will change in the future.
- */
-#define CKM_NETSCAPE_PBE_SHA1_DES_CBC 0x80000002L
-#define CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC 0x80000003L
-#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC 0x80000004L
-#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC 0x80000005L
-#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4 0x80000006L
-#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4 0x80000007L
-#define CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC 0x80000008L
-#define CKM_NETSCAPE_PBE_SHA1_HMAC_KEY_GEN 0x80000009L
-#define CKM_NETSCAPE_PBE_MD5_HMAC_KEY_GEN 0x8000000aL
-#define CKM_NETSCAPE_PBE_MD2_HMAC_KEY_GEN 0x8000000bL
-
-#define CKM_TLS_PRF_GENERAL 0x80000373L
-
-/*
- * Netscape-defined return values
- *
- */
-#define CKR_NETSCAPE (CKM_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-#define CKR_NETSCAPE_CERTDB_FAILED (CKR_NETSCAPE + 1)
-#define CKR_NETSCAPE_KEYDB_FAILED (CKR_NETSCAPE + 2)
-
-/*
- * Trust info
- *
- * This isn't part of the Cryptoki standard (yet), so I'm putting
- * all the definitions here. Some of this would move to nssckt.h
- * if trust info were made part of the standard. In view of this
- * possibility, I'm putting my (Netscape) values in the netscape
- * vendor space, like everything else.
- */
-
-typedef CK_ULONG CK_TRUST;
-
-/* The following trust types are defined: */
-#define CKT_VENDOR_DEFINED 0x80000000
-
-#define CKT_NETSCAPE (CKT_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
-
-/* If trust goes standard, these'll probably drop out of vendor space. */
-#define CKT_NETSCAPE_TRUSTED (CKT_NETSCAPE + 1)
-#define CKT_NETSCAPE_TRUSTED_DELEGATOR (CKT_NETSCAPE + 2)
-#define CKT_NETSCAPE_UNTRUSTED (CKT_NETSCAPE + 3)
-#define CKT_NETSCAPE_MUST_VERIFY (CKT_NETSCAPE + 4)
-#define CKT_NETSCAPE_TRUST_UNKNOWN (CKT_NETSCAPE + 5) /* default */
-
-/*
- * These may well remain Netscape-specific; I'm only using them
- * to cache resolution data.
- */
-#define CKT_NETSCAPE_VALID (CKT_NETSCAPE + 10)
-#define CKT_NETSCAPE_VALID_DELEGATOR (CKT_NETSCAPE + 11)
-
-
-#endif /* _PKCS11N_H_ */
diff --git a/pkix/Makefile.am b/pkix/Makefile.am
deleted file mode 100644
index 5f9ae222..00000000
--- a/pkix/Makefile.am
+++ /dev/null
@@ -1,53 +0,0 @@
-
-noinst_LTLIBRARIES=libgkr-pkix.la
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS)
-
-BUILT_SOURCES = \
- gkr-pkix-marshal.c gkr-pkix-marshal.h \
- asn1-def-pk.h asn1-def-pkix.h
-
-libgkr_pkix_la_SOURCES = \
- gkr-pkix-asn1.c gkr-pkix-asn1.h \
- gkr-pkix-constants.h \
- gkr-pkix-der.c gkr-pkix-der.h \
- gkr-pkix-openssl.c gkr-pkix-openssl.h \
- gkr-pkix-parser.c gkr-pkix-parser.h \
- gkr-pkix-pem.c gkr-pkix-pem.h \
- gkr-pkix-serialize.c gkr-pkix-serialize.h \
- gkr-pkix-types.h \
- $(BUILT_SOURCES)
-
-gkr-pkix-marshal.h: gkr-pkix-marshal.list $(GLIB_GENMARSHAL)
- $(GLIB_GENMARSHAL) $< --header --prefix=gkr_pkix_marshal > $@
-
-gkr-pkix-marshal.c: gkr-pkix-marshal.list $(GLIB_GENMARSHAL)
- echo "#include \"gkr-pkix-marshal.h\"" > $@ && \
- $(GLIB_GENMARSHAL) $< --body --prefix=gkr_pkix_marshal >> $@
-
-asn1-def-pk.h: pk.asn
- asn1Parser -o asn1-def-pk.h pk.asn
-
-asn1-def-pkix.h: pkix.asn
- asn1Parser -o asn1-def-pkix.h pkix.asn
-
-EXTRA_DIST = gkr-pkix-marshal.list \
- pkix.asn \
- pk.asn
-
-if WITH_TESTS
-TESTS_DIR = tests
-else
-TESTS_DIR =
-endif
-
-SUBDIRS = . $(TESTS_DIR)
diff --git a/pkix/asn1-def-pk.h b/pkix/asn1-def-pk.h
deleted file mode 100644
index 88a0b1fe..00000000
--- a/pkix/asn1-def-pk.h
+++ /dev/null
@@ -1,67 +0,0 @@
-
-#include <libtasn1.h>
-
-extern const ASN1_ARRAY_TYPE pk_asn1_tab[]={
- {"PK",536872976,0},
- {0,1073741836,0},
- {"RSAPublicKey",1610612741,0},
- {"modulus",1073741827,0},
- {"publicExponent",3,0},
- {"RSAPrivateKey",1610612741,0},
- {"version",1073741826,"Version"},
- {"modulus",1073741827,0},
- {"publicExponent",1073741827,0},
- {"privateExponent",1073741827,0},
- {"prime1",1073741827,0},
- {"prime2",1073741827,0},
- {"exponent1",1073741827,0},
- {"exponent2",1073741827,0},
- {"coefficient",1073741827,0},
- {"otherPrimeInfos",16386,"OtherPrimeInfos"},
- {"Version",1610874883,0},
- {"two-prime",1073741825,"0"},
- {"multi",1,"1"},
- {"OtherPrimeInfos",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"OtherPrimeInfo"},
- {"OtherPrimeInfo",1610612741,0},
- {"prime",1073741827,0},
- {"exponent",1073741827,0},
- {"coefficient",3,0},
- {"AlgorithmIdentifier",1610612741,0},
- {"algorithm",1073741836,0},
- {"parameters",541081613,0},
- {"algorithm",1,0},
- {"DigestInfo",1610612741,0},
- {"digestAlgorithm",1073741826,"DigestAlgorithmIdentifier"},
- {"digest",2,"Digest"},
- {"DigestAlgorithmIdentifier",1073741826,"AlgorithmIdentifier"},
- {"Digest",1073741831,0},
- {"DSAPublicPart",1073741827,0},
- {"DSAPublicKey",1610612741,0},
- {"version",1073741827,0},
- {"p",1073741827,0},
- {"q",1073741827,0},
- {"g",1073741827,0},
- {"Y",3,0},
- {"DSAParameters",1610612741,0},
- {"p",1073741827,0},
- {"q",1073741827,0},
- {"g",3,0},
- {"DSASignatureValue",1610612741,0},
- {"r",1073741827,0},
- {"s",3,0},
- {"DSAPrivatePart",1073741827,0},
- {"DSAPrivateKey",1610612741,0},
- {"version",1073741827,0},
- {"p",1073741827,0},
- {"q",1073741827,0},
- {"g",1073741827,0},
- {"Y",1073741827,0},
- {"priv",3,0},
- {"DHParameter",536870917,0},
- {"prime",1073741827,0},
- {"base",1073741827,0},
- {"privateValueLength",16387,0},
- {0,0,0}
-};
diff --git a/pkix/asn1-def-pkix.h b/pkix/asn1-def-pkix.h
deleted file mode 100644
index caf5ded0..00000000
--- a/pkix/asn1-def-pkix.h
+++ /dev/null
@@ -1,1107 +0,0 @@
-
-#include <libtasn1.h>
-
-extern const ASN1_ARRAY_TYPE pkix_asn1_tab[]={
- {"PKIX1",536875024,0},
- {0,1073741836,0},
- {"id-ce",1879048204,0},
- {"joint-iso-ccitt",1073741825,"2"},
- {"ds",1073741825,"5"},
- {0,1,"29"},
- {"id-ce-authorityKeyIdentifier",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"35"},
- {"AuthorityKeyIdentifier",1610612741,0},
- {"keyIdentifier",1610637314,"KeyIdentifier"},
- {0,4104,"0"},
- {"authorityCertIssuer",1610637314,"GeneralNames"},
- {0,4104,"1"},
- {"authorityCertSerialNumber",536895490,"CertificateSerialNumber"},
- {0,4104,"2"},
- {"KeyIdentifier",1073741831,0},
- {"id-ce-subjectKeyIdentifier",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"14"},
- {"SubjectKeyIdentifier",1073741826,"KeyIdentifier"},
- {"id-ce-keyUsage",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"15"},
- {"KeyUsage",1610874886,0},
- {"digitalSignature",1073741825,"0"},
- {"nonRepudiation",1073741825,"1"},
- {"keyEncipherment",1073741825,"2"},
- {"dataEncipherment",1073741825,"3"},
- {"keyAgreement",1073741825,"4"},
- {"keyCertSign",1073741825,"5"},
- {"cRLSign",1073741825,"6"},
- {"encipherOnly",1073741825,"7"},
- {"decipherOnly",1,"8"},
- {"id-ce-privateKeyUsagePeriod",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"16"},
- {"PrivateKeyUsagePeriod",1610612741,0},
- {"notBefore",1619025937,0},
- {0,4104,"0"},
- {"notAfter",545284113,0},
- {0,4104,"1"},
- {"id-ce-certificatePolicies",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"32"},
- {"CertificatePolicies",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"PolicyInformation"},
- {"PolicyInformation",1610612741,0},
- {"policyIdentifier",1073741826,"CertPolicyId"},
- {"policyQualifiers",538984459,0},
- {"MAX",1074266122,"1"},
- {0,2,"PolicyQualifierInfo"},
- {"CertPolicyId",1073741836,0},
- {"PolicyQualifierInfo",1610612741,0},
- {"policyQualifierId",1073741826,"PolicyQualifierId"},
- {"qualifier",541065229,0},
- {"policyQualifierId",1,0},
- {"PolicyQualifierId",1073741836,0},
- {"CPSuri",1073741826,"IA5String"},
- {"UserNotice",1610612741,0},
- {"noticeRef",1073758210,"NoticeReference"},
- {"explicitText",16386,"DisplayText"},
- {"NoticeReference",1610612741,0},
- {"organization",1073741826,"DisplayText"},
- {"noticeNumbers",536870923,0},
- {0,3,0},
- {"DisplayText",1610612754,0},
- {"visibleString",1612709890,"VisibleString"},
- {"200",524298,"1"},
- {"bmpString",1612709890,"BMPString"},
- {"200",524298,"1"},
- {"utf8String",538968066,"UTF8String"},
- {"200",524298,"1"},
- {"id-ce-policyMappings",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"33"},
- {"PolicyMappings",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,536870917,0},
- {"issuerDomainPolicy",1073741826,"CertPolicyId"},
- {"subjectDomainPolicy",2,"CertPolicyId"},
- {"DirectoryString",1610612754,0},
- {"teletexString",1612709890,"TeletexString"},
- {"MAX",524298,"1"},
- {"printableString",1612709890,"PrintableString"},
- {"MAX",524298,"1"},
- {"universalString",1612709890,"UniversalString"},
- {"MAX",524298,"1"},
- {"utf8String",1612709890,"UTF8String"},
- {"MAX",524298,"1"},
- {"bmpString",1612709890,"BMPString"},
- {"MAX",524298,"1"},
- {"ia5String",538968066,"IA5String"},
- {"MAX",524298,"1"},
- {"id-ce-subjectAltName",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"17"},
- {"SubjectAltName",1073741826,"GeneralNames"},
- {"GeneralNames",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"GeneralName"},
- {"GeneralName",1610612754,0},
- {"otherName",1610620930,"AnotherName"},
- {0,4104,"0"},
- {"rfc822Name",1610620930,"IA5String"},
- {0,4104,"1"},
- {"dNSName",1610620930,"IA5String"},
- {0,4104,"2"},
- {"x400Address",1610620930,"ORAddress"},
- {0,4104,"3"},
- {"directoryName",1610620930,"RDNSequence"},
- {0,2056,"4"},
- {"ediPartyName",1610620930,"EDIPartyName"},
- {0,4104,"5"},
- {"uniformResourceIdentifier",1610620930,"IA5String"},
- {0,4104,"6"},
- {"iPAddress",1610620935,0},
- {0,4104,"7"},
- {"registeredID",536879116,0},
- {0,4104,"8"},
- {"AnotherName",1610612741,0},
- {"type-id",1073741836,0},
- {"value",541073421,0},
- {0,1073743880,"0"},
- {"type-id",1,0},
- {"EDIPartyName",1610612741,0},
- {"nameAssigner",1610637314,"DirectoryString"},
- {0,4104,"0"},
- {"partyName",536879106,"DirectoryString"},
- {0,4104,"1"},
- {"id-ce-issuerAltName",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"18"},
- {"IssuerAltName",1073741826,"GeneralNames"},
- {"id-ce-subjectDirectoryAttributes",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"9"},
- {"SubjectDirectoryAttributes",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"Attribute"},
- {"id-ce-basicConstraints",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"19"},
- {"BasicConstraints",1610612741,0},
- {"cA",1610645508,0},
- {0,131081,0},
- {"pathLenConstraint",537411587,0},
- {"0",10,"MAX"},
- {"id-ce-nameConstraints",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"30"},
- {"NameConstraints",1610612741,0},
- {"permittedSubtrees",1610637314,"GeneralSubtrees"},
- {0,4104,"0"},
- {"excludedSubtrees",536895490,"GeneralSubtrees"},
- {0,4104,"1"},
- {"GeneralSubtrees",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"GeneralSubtree"},
- {"GeneralSubtree",1610612741,0},
- {"base",1073741826,"GeneralName"},
- {"minimum",1610653698,"BaseDistance"},
- {0,1073741833,"0"},
- {0,4104,"0"},
- {"maximum",536895490,"BaseDistance"},
- {0,4104,"1"},
- {"BaseDistance",1611137027,0},
- {"0",10,"MAX"},
- {"id-ce-policyConstraints",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"36"},
- {"PolicyConstraints",1610612741,0},
- {"requireExplicitPolicy",1610637314,"SkipCerts"},
- {0,4104,"0"},
- {"inhibitPolicyMapping",536895490,"SkipCerts"},
- {0,4104,"1"},
- {"SkipCerts",1611137027,0},
- {"0",10,"MAX"},
- {"id-ce-cRLDistributionPoints",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"31"},
- {"CRLDistributionPoints",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"DistributionPoint"},
- {"DistributionPoint",1610612741,0},
- {"distributionPoint",1610637314,"DistributionPointName"},
- {0,2056,"0"},
- {"reasons",1610637314,"ReasonFlags"},
- {0,4104,"1"},
- {"cRLIssuer",536895490,"GeneralNames"},
- {0,4104,"2"},
- {"DistributionPointName",1610612754,0},
- {"fullName",1610620930,"GeneralNames"},
- {0,4104,"0"},
- {"nameRelativeToCRLIssuer",536879106,"RelativeDistinguishedName"},
- {0,4104,"1"},
- {"ReasonFlags",1610874886,0},
- {"unused",1073741825,"0"},
- {"keyCompromise",1073741825,"1"},
- {"cACompromise",1073741825,"2"},
- {"affiliationChanged",1073741825,"3"},
- {"superseded",1073741825,"4"},
- {"cessationOfOperation",1073741825,"5"},
- {"certificateHold",1073741825,"6"},
- {"privilegeWithdrawn",1073741825,"7"},
- {"aACompromise",1,"8"},
- {"id-ce-extKeyUsage",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"37"},
- {"ExtKeyUsageSyntax",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"KeyPurposeId"},
- {"KeyPurposeId",1073741836,0},
- {"id-kp-serverAuth",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"1"},
- {"id-kp-clientAuth",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"2"},
- {"id-kp-codeSigning",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"3"},
- {"id-kp-emailProtection",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"4"},
- {"id-kp-ipsecEndSystem",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"5"},
- {"id-kp-ipsecTunnel",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"6"},
- {"id-kp-ipsecUser",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"7"},
- {"id-kp-timeStamping",1879048204,0},
- {0,1073741825,"id-kp"},
- {0,1,"8"},
- {"id-pe-authorityInfoAccess",1879048204,0},
- {0,1073741825,"id-pe"},
- {0,1,"1"},
- {"AuthorityInfoAccessSyntax",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"AccessDescription"},
- {"AccessDescription",1610612741,0},
- {"accessMethod",1073741836,0},
- {"accessLocation",2,"GeneralName"},
- {"id-ce-cRLNumber",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"20"},
- {"CRLNumber",1611137027,0},
- {"0",10,"MAX"},
- {"id-ce-issuingDistributionPoint",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"28"},
- {"IssuingDistributionPoint",1610612741,0},
- {"distributionPoint",1610637314,"DistributionPointName"},
- {0,4104,"0"},
- {"onlyContainsUserCerts",1610653700,0},
- {0,1073872905,0},
- {0,4104,"1"},
- {"onlyContainsCACerts",1610653700,0},
- {0,1073872905,0},
- {0,4104,"2"},
- {"onlySomeReasons",1610637314,"ReasonFlags"},
- {0,4104,"3"},
- {"indirectCRL",536911876,0},
- {0,1073872905,0},
- {0,4104,"4"},
- {"id-ce-deltaCRLIndicator",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"27"},
- {"BaseCRLNumber",1073741826,"CRLNumber"},
- {"id-ce-cRLReasons",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"21"},
- {"CRLReason",1610874901,0},
- {"unspecified",1073741825,"0"},
- {"keyCompromise",1073741825,"1"},
- {"cACompromise",1073741825,"2"},
- {"affiliationChanged",1073741825,"3"},
- {"superseded",1073741825,"4"},
- {"cessationOfOperation",1073741825,"5"},
- {"certificateHold",1073741825,"6"},
- {"removeFromCRL",1,"8"},
- {"id-ce-certificateIssuer",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"29"},
- {"CertificateIssuer",1073741826,"GeneralNames"},
- {"id-ce-holdInstructionCode",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"23"},
- {"HoldInstructionCode",1073741836,0},
- {"holdInstruction",1879048204,0},
- {"joint-iso-itu-t",1073741825,"2"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"x9cm",1073741825,"10040"},
- {0,1,"2"},
- {"id-holdinstruction-none",1879048204,0},
- {0,1073741825,"holdInstruction"},
- {0,1,"1"},
- {"id-holdinstruction-callissuer",1879048204,0},
- {0,1073741825,"holdInstruction"},
- {0,1,"2"},
- {"id-holdinstruction-reject",1879048204,0},
- {0,1073741825,"holdInstruction"},
- {0,1,"3"},
- {"id-ce-invalidityDate",1879048204,0},
- {0,1073741825,"id-ce"},
- {0,1,"24"},
- {"InvalidityDate",1082130449,0},
- {"VisibleString",1610620935,0},
- {0,4360,"26"},
- {"NumericString",1610620935,0},
- {0,4360,"18"},
- {"IA5String",1610620935,0},
- {0,4360,"22"},
- {"TeletexString",1610620935,0},
- {0,4360,"20"},
- {"PrintableString",1610620935,0},
- {0,4360,"19"},
- {"UniversalString",1610620935,0},
- {0,4360,"28"},
- {"BMPString",1610620935,0},
- {0,4360,"30"},
- {"UTF8String",1610620935,0},
- {0,4360,"12"},
- {"id-pkix",1879048204,0},
- {"iso",1073741825,"1"},
- {"identified-organization",1073741825,"3"},
- {"dod",1073741825,"6"},
- {"internet",1073741825,"1"},
- {"security",1073741825,"5"},
- {"mechanisms",1073741825,"5"},
- {"pkix",1,"7"},
- {"id-pe",1879048204,0},
- {0,1073741825,"id-pkix"},
- {0,1,"1"},
- {"id-qt",1879048204,0},
- {0,1073741825,"id-pkix"},
- {0,1,"2"},
- {"id-kp",1879048204,0},
- {0,1073741825,"id-pkix"},
- {0,1,"3"},
- {"id-ad",1879048204,0},
- {0,1073741825,"id-pkix"},
- {0,1,"48"},
- {"id-qt-cps",1879048204,0},
- {0,1073741825,"id-qt"},
- {0,1,"1"},
- {"id-qt-unotice",1879048204,0},
- {0,1073741825,"id-qt"},
- {0,1,"2"},
- {"id-ad-ocsp",1879048204,0},
- {0,1073741825,"id-ad"},
- {0,1,"1"},
- {"id-ad-caIssuers",1879048204,0},
- {0,1073741825,"id-ad"},
- {0,1,"2"},
- {"Attribute",1610612741,0},
- {"type",1073741826,"AttributeType"},
- {"values",536870927,0},
- {0,2,"AttributeValue"},
- {"AttributeType",1073741836,0},
- {"AttributeValue",1614807053,0},
- {"type",1,0},
- {"AttributeTypeAndValue",1610612741,0},
- {"type",1073741826,"AttributeType"},
- {"value",2,"AttributeValue"},
- {"id-at",1879048204,0},
- {"joint-iso-ccitt",1073741825,"2"},
- {"ds",1073741825,"5"},
- {0,1,"4"},
- {"id-at-initials",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"43"},
- {"X520initials",1073741826,"DirectoryString"},
- {"id-at-generationQualifier",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"44"},
- {"X520generationQualifier",1073741826,"DirectoryString"},
- {"id-at-surname",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"4"},
- {"X520surName",1073741826,"DirectoryString"},
- {"id-at-givenName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"42"},
- {"X520givenName",1073741826,"DirectoryString"},
- {"id-at-name",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"41"},
- {"X520name",1073741826,"DirectoryString"},
- {"id-at-commonName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"3"},
- {"X520CommonName",1073741826,"DirectoryString"},
- {"id-at-localityName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"7"},
- {"X520LocalityName",1073741826,"DirectoryString"},
- {"id-at-stateOrProvinceName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"8"},
- {"X520StateOrProvinceName",1073741826,"DirectoryString"},
- {"id-at-organizationName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"10"},
- {"X520OrganizationName",1073741826,"DirectoryString"},
- {"id-at-organizationalUnitName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"11"},
- {"X520OrganizationalUnitName",1073741826,"DirectoryString"},
- {"id-at-title",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"12"},
- {"X520Title",1073741826,"DirectoryString"},
- {"id-at-description",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"13"},
- {"X520Description",1073741826,"DirectoryString"},
- {"id-at-dnQualifier",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"46"},
- {"X520dnQualifier",1073741826,"PrintableString"},
- {"id-at-countryName",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"6"},
- {"X520countryName",1612709890,"PrintableString"},
- {0,1048586,"2"},
- {"id-at-serialNumber",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"5"},
- {"X520serialNumber",1073741826,"PrintableString"},
- {"id-at-telephoneNumber",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"20"},
- {"X520telephoneNumber",1073741826,"PrintableString"},
- {"id-at-facsimileTelephoneNumber",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"23"},
- {"X520facsimileTelephoneNumber",1073741826,"PrintableString"},
- {"id-at-pseudonym",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"65"},
- {"X520pseudonym",1073741826,"DirectoryString"},
- {"id-at-name",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"41"},
- {"X520name",1073741826,"DirectoryString"},
- {"id-at-streetAddress",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"9"},
- {"X520streetAddress",1073741826,"DirectoryString"},
- {"id-at-postalAddress",1880096780,"AttributeType"},
- {0,1073741825,"id-at"},
- {0,1,"16"},
- {"X520postalAddress",1073741826,"PostalAddress"},
- {"PostalAddress",1610612747,0},
- {0,2,"DirectoryString"},
- {"pkcs",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"rsadsi",1073741825,"113549"},
- {"pkcs",1,"1"},
- {"pkcs-9",1879048204,0},
- {0,1073741825,"pkcs"},
- {0,1,"9"},
- {"emailAddress",1880096780,"AttributeType"},
- {0,1073741825,"pkcs-9"},
- {0,1,"1"},
- {"Pkcs9email",1612709890,"IA5String"},
- {"ub-emailaddress-length",524298,"1"},
- {"Name",1610612754,0},
- {"rdnSequence",2,"RDNSequence"},
- {"RDNSequence",1610612747,0},
- {0,2,"RelativeDistinguishedName"},
- {"DistinguishedName",1073741826,"RDNSequence"},
- {"RelativeDistinguishedName",1612709903,0},
- {"MAX",1074266122,"1"},
- {0,2,"AttributeTypeAndValue"},
- {"Certificate",1610612741,0},
- {"tbsCertificate",1073741826,"TBSCertificate"},
- {"signatureAlgorithm",1073741826,"AlgorithmIdentifier"},
- {"signature",6,0},
- {"TBSCertificate",1610612741,0},
- {"version",1610653698,"Version"},
- {0,1073741833,"v1"},
- {0,2056,"0"},
- {"serialNumber",1073741826,"CertificateSerialNumber"},
- {"signature",1073741826,"AlgorithmIdentifier"},
- {"issuer",1073741826,"Name"},
- {"validity",1073741826,"Validity"},
- {"subject",1073741826,"Name"},
- {"subjectPublicKeyInfo",1073741826,"SubjectPublicKeyInfo"},
- {"issuerUniqueID",1610637314,"UniqueIdentifier"},
- {0,4104,"1"},
- {"subjectUniqueID",1610637314,"UniqueIdentifier"},
- {0,4104,"2"},
- {"extensions",536895490,"Extensions"},
- {0,2056,"3"},
- {"Version",1610874883,0},
- {"v1",1073741825,"0"},
- {"v2",1073741825,"1"},
- {"v3",1,"2"},
- {"CertificateSerialNumber",1073741827,0},
- {"Validity",1610612741,0},
- {"notBefore",1073741826,"Time"},
- {"notAfter",2,"Time"},
- {"Time",1610612754,0},
- {"utcTime",1090519057,0},
- {"generalTime",8388625,0},
- {"UniqueIdentifier",1073741830,0},
- {"SubjectPublicKeyInfo",1610612741,0},
- {"algorithm",1073741826,"AlgorithmIdentifier"},
- {"subjectPublicKey",6,0},
- {"Extensions",1612709899,0},
- {"MAX",1074266122,"1"},
- {0,2,"Extension"},
- {"Extension",1610612741,0},
- {"extnID",1073741836,0},
- {"critical",1610645508,0},
- {0,131081,0},
- {"extnValue",7,0},
- {"CertificateList",1610612741,0},
- {"tbsCertList",1073741826,"TBSCertList"},
- {"signatureAlgorithm",1073741826,"AlgorithmIdentifier"},
- {"signature",6,0},
- {"TBSCertList",1610612741,0},
- {"version",1073758210,"Version"},
- {"signature",1073741826,"AlgorithmIdentifier"},
- {"issuer",1073741826,"Name"},
- {"thisUpdate",1073741826,"Time"},
- {"nextUpdate",1073758210,"Time"},
- {"revokedCertificates",1610629131,0},
- {0,536870917,0},
- {"userCertificate",1073741826,"CertificateSerialNumber"},
- {"revocationDate",1073741826,"Time"},
- {"crlEntryExtensions",16386,"Extensions"},
- {"crlExtensions",536895490,"Extensions"},
- {0,2056,"0"},
- {"AlgorithmIdentifier",1610612741,0},
- {"algorithm",1073741836,0},
- {"parameters",541081613,0},
- {"algorithm",1,0},
- {"pkcs-1",1879048204,0},
- {0,1073741825,"pkcs"},
- {0,1,"1"},
- {"rsaEncryption",1879048204,0},
- {0,1073741825,"pkcs-1"},
- {0,1,"1"},
- {"md2WithRSAEncryption",1879048204,0},
- {0,1073741825,"pkcs-1"},
- {0,1,"2"},
- {"md5WithRSAEncryption",1879048204,0},
- {0,1073741825,"pkcs-1"},
- {0,1,"4"},
- {"sha1WithRSAEncryption",1879048204,0},
- {0,1073741825,"pkcs-1"},
- {0,1,"5"},
- {"id-dsa-with-sha1",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"x9-57",1073741825,"10040"},
- {"x9algorithm",1073741825,"4"},
- {0,1,"3"},
- {"Dss-Sig-Value",1610612741,0},
- {"r",1073741827,0},
- {"s",3,0},
- {"dhpublicnumber",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"ansi-x942",1073741825,"10046"},
- {"number-type",1073741825,"2"},
- {0,1,"1"},
- {"DomainParameters",1610612741,0},
- {"p",1073741827,0},
- {"g",1073741827,0},
- {"q",1073741827,0},
- {"j",1073758211,0},
- {"validationParms",16386,"ValidationParms"},
- {"ValidationParms",1610612741,0},
- {"seed",1073741830,0},
- {"pgenCounter",3,0},
- {"id-dsa",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"x9-57",1073741825,"10040"},
- {"x9algorithm",1073741825,"4"},
- {0,1,"1"},
- {"Dss-Parms",1610612741,0},
- {"p",1073741827,0},
- {"q",1073741827,0},
- {"g",3,0},
- {"ORAddress",1610612741,0},
- {"built-in-standard-attributes",1073741826,"BuiltInStandardAttributes"},
- {"built-in-domain-defined-attributes",1073758210,"BuiltInDomainDefinedAttributes"},
- {"extension-attributes",16386,"ExtensionAttributes"},
- {"BuiltInStandardAttributes",1610612741,0},
- {"country-name",1073758210,"CountryName"},
- {"administration-domain-name",1073758210,"AdministrationDomainName"},
- {"network-address",1610637314,"NetworkAddress"},
- {0,2056,"0"},
- {"terminal-identifier",1610637314,"TerminalIdentifier"},
- {0,2056,"1"},
- {"private-domain-name",1610637314,"PrivateDomainName"},
- {0,2056,"2"},
- {"organization-name",1610637314,"OrganizationName"},
- {0,2056,"3"},
- {"numeric-user-identifier",1610637314,"NumericUserIdentifier"},
- {0,2056,"4"},
- {"personal-name",1610637314,"PersonalName"},
- {0,2056,"5"},
- {"organizational-unit-names",536895490,"OrganizationalUnitNames"},
- {0,2056,"6"},
- {"CountryName",1610620946,0},
- {0,1073746952,"1"},
- {"x121-dcc-code",1612709890,"NumericString"},
- {0,1048586,"ub-country-name-numeric-length"},
- {"iso-3166-alpha2-code",538968066,"PrintableString"},
- {0,1048586,"ub-country-name-alpha-length"},
- {"AdministrationDomainName",1610620946,0},
- {0,1073744904,"2"},
- {"numeric",1612709890,"NumericString"},
- {"ub-domain-name-length",524298,"0"},
- {"printable",538968066,"PrintableString"},
- {"ub-domain-name-length",524298,"0"},
- {"NetworkAddress",1073741826,"X121Address"},
- {"X121Address",1612709890,"NumericString"},
- {"ub-x121-address-length",524298,"1"},
- {"TerminalIdentifier",1612709890,"PrintableString"},
- {"ub-terminal-id-length",524298,"1"},
- {"PrivateDomainName",1610612754,0},
- {"numeric",1612709890,"NumericString"},
- {"ub-domain-name-length",524298,"1"},
- {"printable",538968066,"PrintableString"},
- {"ub-domain-name-length",524298,"1"},
- {"OrganizationName",1612709890,"PrintableString"},
- {"ub-organization-name-length",524298,"1"},
- {"NumericUserIdentifier",1612709890,"NumericString"},
- {"ub-numeric-user-id-length",524298,"1"},
- {"PersonalName",1610612750,0},
- {"surname",1814044674,"PrintableString"},
- {0,1073745928,"0"},
- {"ub-surname-length",524298,"1"},
- {"given-name",1814061058,"PrintableString"},
- {0,1073745928,"1"},
- {"ub-given-name-length",524298,"1"},
- {"initials",1814061058,"PrintableString"},
- {0,1073745928,"2"},
- {"ub-initials-length",524298,"1"},
- {"generation-qualifier",740319234,"PrintableString"},
- {0,1073745928,"3"},
- {"ub-generation-qualifier-length",524298,"1"},
- {"OrganizationalUnitNames",1612709899,0},
- {"ub-organizational-units",1074266122,"1"},
- {0,2,"OrganizationalUnitName"},
- {"OrganizationalUnitName",1612709890,"PrintableString"},
- {"ub-organizational-unit-name-length",524298,"1"},
- {"BuiltInDomainDefinedAttributes",1612709899,0},
- {"ub-domain-defined-attributes",1074266122,"1"},
- {0,2,"BuiltInDomainDefinedAttribute"},
- {"BuiltInDomainDefinedAttribute",1610612741,0},
- {"type",1612709890,"PrintableString"},
- {"ub-domain-defined-attribute-type-length",524298,"1"},
- {"value",538968066,"PrintableString"},
- {"ub-domain-defined-attribute-value-length",524298,"1"},
- {"ExtensionAttributes",1612709903,0},
- {"ub-extension-attributes",1074266122,"1"},
- {0,2,"ExtensionAttribute"},
- {"ExtensionAttribute",1610612741,0},
- {"extension-attribute-type",1611145219,0},
- {0,1073743880,"0"},
- {"0",10,"ub-extension-attributes"},
- {"extension-attribute-value",541073421,0},
- {0,1073743880,"1"},
- {"extension-attribute-type",1,0},
- {"common-name",1342177283,"1"},
- {"CommonName",1612709890,"PrintableString"},
- {"ub-common-name-length",524298,"1"},
- {"teletex-common-name",1342177283,"2"},
- {"TeletexCommonName",1612709890,"TeletexString"},
- {"ub-common-name-length",524298,"1"},
- {"teletex-organization-name",1342177283,"3"},
- {"TeletexOrganizationName",1612709890,"TeletexString"},
- {"ub-organization-name-length",524298,"1"},
- {"teletex-personal-name",1342177283,"4"},
- {"TeletexPersonalName",1610612750,0},
- {"surname",1814044674,"TeletexString"},
- {0,1073743880,"0"},
- {"ub-surname-length",524298,"1"},
- {"given-name",1814061058,"TeletexString"},
- {0,1073743880,"1"},
- {"ub-given-name-length",524298,"1"},
- {"initials",1814061058,"TeletexString"},
- {0,1073743880,"2"},
- {"ub-initials-length",524298,"1"},
- {"generation-qualifier",740319234,"TeletexString"},
- {0,1073743880,"3"},
- {"ub-generation-qualifier-length",524298,"1"},
- {"teletex-organizational-unit-names",1342177283,"5"},
- {"TeletexOrganizationalUnitNames",1612709899,0},
- {"ub-organizational-units",1074266122,"1"},
- {0,2,"TeletexOrganizationalUnitName"},
- {"TeletexOrganizationalUnitName",1612709890,"TeletexString"},
- {"ub-organizational-unit-name-length",524298,"1"},
- {"pds-name",1342177283,"7"},
- {"PDSName",1612709890,"PrintableString"},
- {"ub-pds-name-length",524298,"1"},
- {"physical-delivery-country-name",1342177283,"8"},
- {"PhysicalDeliveryCountryName",1610612754,0},
- {"x121-dcc-code",1612709890,"NumericString"},
- {0,1048586,"ub-country-name-numeric-length"},
- {"iso-3166-alpha2-code",538968066,"PrintableString"},
- {0,1048586,"ub-country-name-alpha-length"},
- {"postal-code",1342177283,"9"},
- {"PostalCode",1610612754,0},
- {"numeric-code",1612709890,"NumericString"},
- {"ub-postal-code-length",524298,"1"},
- {"printable-code",538968066,"PrintableString"},
- {"ub-postal-code-length",524298,"1"},
- {"physical-delivery-office-name",1342177283,"10"},
- {"PhysicalDeliveryOfficeName",1073741826,"PDSParameter"},
- {"physical-delivery-office-number",1342177283,"11"},
- {"PhysicalDeliveryOfficeNumber",1073741826,"PDSParameter"},
- {"extension-OR-address-components",1342177283,"12"},
- {"ExtensionORAddressComponents",1073741826,"PDSParameter"},
- {"physical-delivery-personal-name",1342177283,"13"},
- {"PhysicalDeliveryPersonalName",1073741826,"PDSParameter"},
- {"physical-delivery-organization-name",1342177283,"14"},
- {"PhysicalDeliveryOrganizationName",1073741826,"PDSParameter"},
- {"extension-physical-delivery-address-components",1342177283,"15"},
- {"ExtensionPhysicalDeliveryAddressComponents",1073741826,"PDSParameter"},
- {"unformatted-postal-address",1342177283,"16"},
- {"UnformattedPostalAddress",1610612750,0},
- {"printable-address",1814052875,0},
- {"ub-pds-physical-address-lines",1074266122,"1"},
- {0,538968066,"PrintableString"},
- {"ub-pds-parameter-length",524298,"1"},
- {"teletex-string",740311042,"TeletexString"},
- {"ub-unformatted-address-length",524298,"1"},
- {"street-address",1342177283,"17"},
- {"StreetAddress",1073741826,"PDSParameter"},
- {"post-office-box-address",1342177283,"18"},
- {"PostOfficeBoxAddress",1073741826,"PDSParameter"},
- {"poste-restante-address",1342177283,"19"},
- {"PosteRestanteAddress",1073741826,"PDSParameter"},
- {"unique-postal-name",1342177283,"20"},
- {"UniquePostalName",1073741826,"PDSParameter"},
- {"local-postal-attributes",1342177283,"21"},
- {"LocalPostalAttributes",1073741826,"PDSParameter"},
- {"PDSParameter",1610612750,0},
- {"printable-string",1814052866,"PrintableString"},
- {"ub-pds-parameter-length",524298,"1"},
- {"teletex-string",740311042,"TeletexString"},
- {"ub-pds-parameter-length",524298,"1"},
- {"extended-network-address",1342177283,"22"},
- {"ExtendedNetworkAddress",1610612754,0},
- {"e163-4-address",1610612741,0},
- {"number",1612718082,"NumericString"},
- {0,1073743880,"0"},
- {"ub-e163-4-number-length",524298,"1"},
- {"sub-address",538992642,"NumericString"},
- {0,1073743880,"1"},
- {"ub-e163-4-sub-address-length",524298,"1"},
- {"psap-address",536879106,"PresentationAddress"},
- {0,2056,"0"},
- {"PresentationAddress",1610612741,0},
- {"pSelector",1610637319,0},
- {0,2056,"0"},
- {"sSelector",1610637319,0},
- {0,2056,"1"},
- {"tSelector",1610637319,0},
- {0,2056,"2"},
- {"nAddresses",538976271,0},
- {0,1073743880,"3"},
- {"MAX",1074266122,"1"},
- {0,7,0},
- {"terminal-type",1342177283,"23"},
- {"TerminalType",1610874883,0},
- {"telex",1073741825,"3"},
- {"teletex",1073741825,"4"},
- {"g3-facsimile",1073741825,"5"},
- {"g4-facsimile",1073741825,"6"},
- {"ia5-terminal",1073741825,"7"},
- {"videotex",1,"8"},
- {"teletex-domain-defined-attributes",1342177283,"6"},
- {"TeletexDomainDefinedAttributes",1612709899,0},
- {"ub-domain-defined-attributes",1074266122,"1"},
- {0,2,"TeletexDomainDefinedAttribute"},
- {"TeletexDomainDefinedAttribute",1610612741,0},
- {"type",1612709890,"TeletexString"},
- {"ub-domain-defined-attribute-type-length",524298,"1"},
- {"value",538968066,"TeletexString"},
- {"ub-domain-defined-attribute-value-length",524298,"1"},
- {"ub-name",1342177283,"32768"},
- {"ub-common-name",1342177283,"64"},
- {"ub-locality-name",1342177283,"128"},
- {"ub-state-name",1342177283,"128"},
- {"ub-organization-name",1342177283,"64"},
- {"ub-organizational-unit-name",1342177283,"64"},
- {"ub-title",1342177283,"64"},
- {"ub-match",1342177283,"128"},
- {"ub-emailaddress-length",1342177283,"128"},
- {"ub-common-name-length",1342177283,"64"},
- {"ub-country-name-alpha-length",1342177283,"2"},
- {"ub-country-name-numeric-length",1342177283,"3"},
- {"ub-domain-defined-attributes",1342177283,"4"},
- {"ub-domain-defined-attribute-type-length",1342177283,"8"},
- {"ub-domain-defined-attribute-value-length",1342177283,"128"},
- {"ub-domain-name-length",1342177283,"16"},
- {"ub-extension-attributes",1342177283,"256"},
- {"ub-e163-4-number-length",1342177283,"15"},
- {"ub-e163-4-sub-address-length",1342177283,"40"},
- {"ub-generation-qualifier-length",1342177283,"3"},
- {"ub-given-name-length",1342177283,"16"},
- {"ub-initials-length",1342177283,"5"},
- {"ub-integer-options",1342177283,"256"},
- {"ub-numeric-user-id-length",1342177283,"32"},
- {"ub-organization-name-length",1342177283,"64"},
- {"ub-organizational-unit-name-length",1342177283,"32"},
- {"ub-organizational-units",1342177283,"4"},
- {"ub-pds-name-length",1342177283,"16"},
- {"ub-pds-parameter-length",1342177283,"30"},
- {"ub-pds-physical-address-lines",1342177283,"6"},
- {"ub-postal-code-length",1342177283,"16"},
- {"ub-surname-length",1342177283,"40"},
- {"ub-terminal-id-length",1342177283,"24"},
- {"ub-unformatted-address-length",1342177283,"180"},
- {"ub-x121-address-length",1342177283,"16"},
- {"pkcs-7-ContentInfo",1610612741,0},
- {"contentType",1073741826,"pkcs-7-ContentType"},
- {"content",541073421,0},
- {0,1073743880,"0"},
- {"contentType",1,0},
- {"pkcs-7-DigestInfo",1610612741,0},
- {"digestAlgorithm",1073741826,"pkcs-7-DigestAlgorithmIdentifier"},
- {"digest",2,"pkcs-7-Digest"},
- {"pkcs-7-Digest",1073741831,0},
- {"pkcs-7-ContentType",1073741836,0},
- {"pkcs-7-SignedData",1610612741,0},
- {"version",1073741826,"pkcs-7-CMSVersion"},
- {"digestAlgorithms",1073741826,"pkcs-7-DigestAlgorithmIdentifiers"},
- {"encapContentInfo",1073741826,"pkcs-7-EncapsulatedContentInfo"},
- {"certificates",1610637314,"pkcs-7-CertificateSet"},
- {0,4104,"0"},
- {"crls",1610637314,"pkcs-7-CertificateRevocationLists"},
- {0,4104,"1"},
- {"signerInfos",2,"pkcs-7-SignerInfos"},
- {"pkcs-7-CMSVersion",1610874883,0},
- {"v0",1073741825,"0"},
- {"v1",1073741825,"1"},
- {"v2",1073741825,"2"},
- {"v3",1073741825,"3"},
- {"v4",1,"4"},
- {"pkcs-7-DigestAlgorithmIdentifiers",1610612751,0},
- {0,2,"pkcs-7-DigestAlgorithmIdentifier"},
- {"pkcs-7-DigestAlgorithmIdentifier",1073741826,"AlgorithmIdentifier"},
- {"pkcs-7-EncapsulatedContentInfo",1610612741,0},
- {"eContentType",1073741826,"pkcs-7-ContentType"},
- {"eContent",536895495,0},
- {0,2056,"0"},
- {"pkcs-7-CertificateRevocationLists",1610612751,0},
- {0,13,0},
- {"pkcs-7-CertificateChoices",1610612754,0},
- {"certificate",13,0},
- {"pkcs-7-CertificateSet",1610612751,0},
- {0,2,"pkcs-7-CertificateChoices"},
- {"pkcs-7-SignerInfos",1610612751,0},
- {0,13,0},
- {"pkcs-10-CertificationRequestInfo",1610612741,0},
- {"version",1610874883,0},
- {"v1",1,"0"},
- {"subject",1073741826,"Name"},
- {"subjectPKInfo",1073741826,"SubjectPublicKeyInfo"},
- {"attributes",536879106,"Attributes"},
- {0,4104,"0"},
- {"Attributes",1610612751,0},
- {0,2,"Attribute"},
- {"pkcs-10-CertificationRequest",1610612741,0},
- {"certificationRequestInfo",1073741826,"pkcs-10-CertificationRequestInfo"},
- {"signatureAlgorithm",1073741826,"AlgorithmIdentifier"},
- {"signature",6,0},
- {"pkcs-9-ub-challengePassword",1342177283,"255"},
- {"pkcs-9-certTypes",1879048204,0},
- {0,1073741825,"pkcs-9"},
- {0,1,"22"},
- {"pkcs-9-crlTypes",1879048204,0},
- {0,1073741825,"pkcs-9"},
- {0,1,"23"},
- {"pkcs-9-at-challengePassword",1879048204,0},
- {0,1073741825,"pkcs-9"},
- {0,1,"7"},
- {"pkcs-9-challengePassword",1610612754,0},
- {"printableString",1612709890,"PrintableString"},
- {"pkcs-9-ub-challengePassword",524298,"1"},
- {"utf8String",538968066,"UTF8String"},
- {"pkcs-9-ub-challengePassword",524298,"1"},
- {"pkcs-9-at-localKeyId",1879048204,0},
- {0,1073741825,"pkcs-9"},
- {0,1,"21"},
- {"pkcs-9-localKeyId",1073741831,0},
- {"pkcs-9-at-friendlyName",1879048204,0},
- {0,1073741825,"pkcs-9"},
- {0,1,"20"},
- {"pkcs-9-friendlyName",1612709890,"BMPString"},
- {"255",524298,"1"},
- {"pkcs-8-PrivateKeyInfo",1610612741,0},
- {"version",1073741826,"pkcs-8-Version"},
- {"privateKeyAlgorithm",1073741826,"AlgorithmIdentifier"},
- {"privateKey",1073741826,"pkcs-8-PrivateKey"},
- {"attributes",536895490,"Attributes"},
- {0,4104,"0"},
- {"pkcs-8-Version",1610874883,0},
- {"v1",1,"0"},
- {"pkcs-8-PrivateKey",1073741831,0},
- {"pkcs-8-Attributes",1610612751,0},
- {0,2,"Attribute"},
- {"pkcs-8-EncryptedPrivateKeyInfo",1610612741,0},
- {"encryptionAlgorithm",1073741826,"AlgorithmIdentifier"},
- {"encryptedData",2,"pkcs-8-EncryptedData"},
- {"pkcs-8-EncryptedData",1073741831,0},
- {"pkcs-5",1879048204,0},
- {0,1073741825,"pkcs"},
- {0,1,"5"},
- {"pkcs-5-encryptionAlgorithm",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"rsadsi",1073741825,"113549"},
- {0,1,"3"},
- {"pkcs-5-des-EDE3-CBC",1879048204,0},
- {0,1073741825,"pkcs-5-encryptionAlgorithm"},
- {0,1,"7"},
- {"pkcs-5-des-EDE3-CBC-params",1612709895,0},
- {0,1048586,"8"},
- {"pkcs-5-des-CBC-params",1612709895,0},
- {0,1048586,"8"},
- {"pkcs-5-rc2-CBC-params",1610612741,0},
- {"rc2ParameterVersion",1073758211,0},
- {"iv",538968071,0},
- {0,1048586,"8"},
- {"pkcs-5-PBE-params",1610612741,0},
- {"salt",1612709895,0},
- {0,1048586,"8"},
- {"iterationCount",3,0},
- {"pkcs-5-id-PBES2",1879048204,0},
- {0,1073741825,"pkcs-5"},
- {0,1,"13"},
- {"pkcs-5-PBES2-params",1610612741,0},
- {"keyDerivationFunc",1073741826,"AlgorithmIdentifier"},
- {"encryptionScheme",2,"AlgorithmIdentifier"},
- {"pkcs-5-id-PBKDF2",1879048204,0},
- {0,1073741825,"pkcs-5"},
- {0,1,"12"},
- {"pkcs-5-PBKDF2-params",1610612741,0},
- {"salt",1610612754,0},
- {"specified",1073741831,0},
- {"otherSource",2,"AlgorithmIdentifier"},
- {"iterationCount",1611137027,0},
- {"1",10,"MAX"},
- {"keyLength",1611153411,0},
- {"1",10,"MAX"},
- {"prf",16386,"AlgorithmIdentifier"},
- {"pkcs-12",1879048204,0},
- {0,1073741825,"pkcs"},
- {0,1,"12"},
- {"pkcs-12-PFX",1610612741,0},
- {"version",1610874883,0},
- {"v3",1,"3"},
- {"authSafe",1073741826,"pkcs-7-ContentInfo"},
- {"macData",16386,"pkcs-12-MacData"},
- {"pkcs-12-PbeParams",1610612741,0},
- {"salt",1073741831,0},
- {"iterations",3,0},
- {"pkcs-12-MacData",1610612741,0},
- {"mac",1073741826,"pkcs-7-DigestInfo"},
- {"macSalt",1073741831,0},
- {"iterations",536903683,0},
- {0,9,"1"},
- {"pkcs-12-AuthenticatedSafe",1610612747,0},
- {0,2,"pkcs-7-ContentInfo"},
- {"pkcs-12-SafeContents",1610612747,0},
- {0,2,"pkcs-12-SafeBag"},
- {"pkcs-12-SafeBag",1610612741,0},
- {"bagId",1073741836,0},
- {"bagValue",1614815245,0},
- {0,1073743880,"0"},
- {"badId",1,0},
- {"bagAttributes",536887311,0},
- {0,2,"pkcs-12-PKCS12Attribute"},
- {"pkcs-12-bagtypes",1879048204,0},
- {0,1073741825,"pkcs-12"},
- {0,1073741825,"10"},
- {0,1,"1"},
- {"pkcs-12-keyBag",1879048204,0},
- {0,1073741825,"pkcs-12-bagtypes"},
- {0,1,"1"},
- {"pkcs-12-pkcs8ShroudedKeyBag",1879048204,0},
- {0,1073741825,"pkcs-12-bagtypes"},
- {0,1,"2"},
- {"pkcs-12-certBag",1879048204,0},
- {0,1073741825,"pkcs-12-bagtypes"},
- {0,1,"3"},
- {"pkcs-12-crlBag",1879048204,0},
- {0,1073741825,"pkcs-12-bagtypes"},
- {0,1,"4"},
- {"pkcs-12-KeyBag",1073741826,"pkcs-8-PrivateKeyInfo"},
- {"pkcs-12-PKCS8ShroudedKeyBag",1073741826,"pkcs-8-EncryptedPrivateKeyInfo"},
- {"pkcs-12-CertBag",1610612741,0},
- {"certId",1073741836,0},
- {"certValue",541073421,0},
- {0,1073743880,"0"},
- {"certId",1,0},
- {"pkcs-12-CRLBag",1610612741,0},
- {"crlId",1073741836,0},
- {"crlValue",541073421,0},
- {0,1073743880,"0"},
- {"crlId",1,0},
- {"pkcs-12-PKCS12Attribute",1073741826,"Attribute"},
- {"pkcs-7-data",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"rsadsi",1073741825,"113549"},
- {"pkcs",1073741825,"1"},
- {"pkcs7",1073741825,"7"},
- {0,1,"1"},
- {"pkcs-7-encryptedData",1879048204,0},
- {"iso",1073741825,"1"},
- {"member-body",1073741825,"2"},
- {"us",1073741825,"840"},
- {"rsadsi",1073741825,"113549"},
- {"pkcs",1073741825,"1"},
- {"pkcs7",1073741825,"7"},
- {0,1,"6"},
- {"pkcs-7-Data",1073741831,0},
- {"pkcs-7-EncryptedData",1610612741,0},
- {"version",1073741826,"pkcs-7-CMSVersion"},
- {"encryptedContentInfo",1073741826,"pkcs-7-EncryptedContentInfo"},
- {"unprotectedAttrs",536895490,"pkcs-7-UnprotectedAttributes"},
- {0,4104,"1"},
- {"pkcs-7-EncryptedContentInfo",1610612741,0},
- {"contentType",1073741826,"pkcs-7-ContentType"},
- {"contentEncryptionAlgorithm",1073741826,"pkcs-7-ContentEncryptionAlgorithmIdentifier"},
- {"encryptedContent",536895490,"pkcs-7-EncryptedContent"},
- {0,4104,"0"},
- {"pkcs-7-ContentEncryptionAlgorithmIdentifier",1073741826,"AlgorithmIdentifier"},
- {"pkcs-7-EncryptedContent",1073741831,0},
- {"pkcs-7-UnprotectedAttributes",1612709903,0},
- {"MAX",1074266122,"1"},
- {0,2,"Attribute"},
- {"id-at-ldap-DC",1880096780,"AttributeType"},
- {0,1073741825,"0"},
- {0,1073741825,"9"},
- {0,1073741825,"2342"},
- {0,1073741825,"19200300"},
- {0,1073741825,"100"},
- {0,1073741825,"1"},
- {0,1,"25"},
- {"ldap-DC",1073741826,"IA5String"},
- {"id-at-ldap-UID",1880096780,"AttributeType"},
- {0,1073741825,"0"},
- {0,1073741825,"9"},
- {0,1073741825,"2342"},
- {0,1073741825,"19200300"},
- {0,1073741825,"100"},
- {0,1073741825,"1"},
- {0,1,"1"},
- {"ldap-UID",1073741826,"DirectoryString"},
- {"id-pda",1879048204,0},
- {0,1073741825,"id-pkix"},
- {0,1,"9"},
- {"id-pda-dateOfBirth",1880096780,"AttributeType"},
- {0,1073741825,"id-pda"},
- {0,1,"1"},
- {"DateOfBirth",1082130449,0},
- {"id-pda-placeOfBirth",1880096780,"AttributeType"},
- {0,1073741825,"id-pda"},
- {0,1,"2"},
- {"PlaceOfBirth",1073741826,"DirectoryString"},
- {"id-pda-gender",1880096780,"AttributeType"},
- {0,1073741825,"id-pda"},
- {0,1,"3"},
- {"Gender",1612709890,"PrintableString"},
- {0,1048586,"1"},
- {"id-pda-countryOfCitizenship",1880096780,"AttributeType"},
- {0,1073741825,"id-pda"},
- {0,1,"4"},
- {"CountryOfCitizenship",1612709890,"PrintableString"},
- {0,1048586,"2"},
- {"id-pda-countryOfResidence",1880096780,"AttributeType"},
- {0,1073741825,"id-pda"},
- {0,1,"5"},
- {"CountryOfResidence",538968066,"PrintableString"},
- {0,1048586,"2"},
- {0,0,0}
-};
diff --git a/pkix/gkr-pkix-asn1.c b/pkix/gkr-pkix-asn1.c
deleted file mode 100644
index 8ed112da..00000000
--- a/pkix/gkr-pkix-asn1.c
+++ /dev/null
@@ -1,771 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-asn1.c - ASN.1 helper routines
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkix-asn1.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-secure-memory.h"
-
-#include <libtasn1.h>
-
-
-/*
- * HACK: asn1Parser defines these arrays as extern const, which gives
- * gcc a fit. So we def it out.
- */
-
-#define extern
-#include "asn1-def-pk.h"
-#include "asn1-def-pkix.h"
-#undef extern
-
-static gboolean asn1_initialized = FALSE;
-static ASN1_TYPE asn1_pk = NULL;
-static ASN1_TYPE asn1_pkix = NULL;
-
-ASN1_TYPE
-gkr_pkix_asn1_get_pk_asn1type (void)
-{
- int res;
-
- if (!asn1_initialized) {
- asn1_check_version (LIBTASN1_VERSION);
- asn1_initialized = TRUE;
- }
-
- if (!asn1_pk) {
- res = asn1_array2tree (pk_asn1_tab, &asn1_pk, NULL);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
- }
-
- return asn1_pk;
-}
-
-ASN1_TYPE
-gkr_pkix_asn1_get_pkix_asn1type (void)
-{
- int res;
-
- if (!asn1_initialized) {
- asn1_check_version (LIBTASN1_VERSION);
- asn1_initialized = TRUE;
- }
-
- if (!asn1_pkix) {
- res = asn1_array2tree (pkix_asn1_tab, &asn1_pkix, NULL);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
- }
-
- return asn1_pkix;
-}
-
-
-ASN1_TYPE
-gkr_pkix_asn1_decode (const gchar *type, const guchar *data, gsize n_data)
-{
- ASN1_TYPE base = ASN1_TYPE_EMPTY;
- ASN1_TYPE asn;
- int res;
-
- if (strncmp (type, "PKIX1.", 6) == 0)
- base = gkr_pkix_asn1_get_pkix_asn1type ();
- else if (strncmp (type, "PK.", 3) == 0)
- base = gkr_pkix_asn1_get_pk_asn1type ();
- else
- g_return_val_if_reached (NULL);
-
- res = asn1_create_element (base, type, &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- res = asn1_der_decoding (&asn, data, n_data, NULL);
- if (res != ASN1_SUCCESS) {
- asn1_delete_structure (&asn);
- return NULL;
- }
-
- return asn;
-}
-
-guchar*
-gkr_pkix_asn1_encode (ASN1_TYPE asn, const gchar* part, gsize *n_data,
- GkrBufferAllocator alloc)
-{
- guchar *data;
- int res, len;
-
- g_assert (asn);
- g_assert (n_data);
-
- len = 0;
- res = asn1_der_coding (asn, part, NULL, &len, NULL);
- g_return_val_if_fail (res == ASN1_MEM_ERROR, NULL);
-
- if (!alloc)
- alloc = (GkrBufferAllocator)g_realloc;
-
- data = (alloc) (NULL, len);
- g_return_val_if_fail (data != NULL, NULL);
-
- res = asn1_der_coding (asn, part, data, &len, NULL);
- if (res != ASN1_SUCCESS) {
- (alloc) (data, 0);
- return NULL;
- }
-
- *n_data = len;
- return data;
-}
-
-gint
-gkr_pkix_asn1_element_length (const guchar *data, gsize n_data)
-{
- guchar cls;
- int counter = 0;
- int cb, len;
- gulong tag;
-
- if (asn1_get_tag_der (data, n_data, &cls, &cb, &tag) == ASN1_SUCCESS) {
- counter += cb;
- len = asn1_get_length_der (data + cb, n_data - cb, &cb);
- counter += cb;
- if (len >= 0) {
- len += counter;
- if (n_data >= len)
- return len;
- }
- }
-
- return -1;
-}
-
-const guchar*
-gkr_pkix_asn1_read_element (ASN1_TYPE asn, const guchar *data, gsize n_data,
- const gchar *part, gsize *n_element)
-{
- int beg, end, res;
-
- g_return_val_if_fail (asn != NULL, NULL);
- g_return_val_if_fail (part != NULL, NULL);
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (n_element != NULL, NULL);
-
- res = asn1_der_decoding_startEnd (asn, data, n_data, part, &beg, &end);
- if (res != ASN1_SUCCESS)
- return NULL;
-
- *n_element = end - beg + 1;
- return data + beg;
-}
-
-const guchar*
-gkr_pkix_asn1_read_content (ASN1_TYPE asn, const guchar *data, gsize n_data,
- const gchar *part, gsize *n_content)
-{
- const guchar *raw;
- gsize n_raw;
-
- g_return_val_if_fail (asn != NULL, NULL);
- g_return_val_if_fail (part != NULL, NULL);
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (n_content != NULL, NULL);
-
- raw = gkr_pkix_asn1_read_element (asn, data, n_data, part, &n_raw);
- if (!raw)
- return NULL;
-
- return gkr_pkix_asn1_element_content (raw, n_raw, n_content);
-}
-
-const guchar*
-gkr_pkix_asn1_element_content (const guchar *data, gsize n_data, gsize *n_content)
-{
- int counter = 0;
- guchar cls;
- gulong tag;
- int cb, len;
-
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (n_content != NULL, NULL);
-
- /* Now get the data out of this element */
- if (asn1_get_tag_der (data, n_data, &cls, &cb, &tag) != ASN1_SUCCESS)
- return NULL;
-
- counter += cb;
- len = asn1_get_length_der (data + cb, n_data - cb, &cb);
- if (len < 0)
- return NULL;
- counter += cb;
-
- *n_content = len;
- return data + counter;
-}
-
-guchar*
-gkr_pkix_asn1_read_value (ASN1_TYPE asn, const gchar *part, gsize *len,
- GkrBufferAllocator allocator)
-{
- int l, res;
- guchar *buf;
-
- g_return_val_if_fail (asn != NULL, NULL);
- g_return_val_if_fail (part != NULL, NULL);
- g_return_val_if_fail (len != NULL, NULL);
-
- if (allocator == NULL)
- allocator = (GkrBufferAllocator)g_realloc;
-
- *len = 0;
-
- l = 0;
- res = asn1_read_value (asn, part, NULL, &l);
- g_return_val_if_fail (res != ASN1_SUCCESS, NULL);
- if (res != ASN1_MEM_ERROR)
- return NULL;
-
- /* Always null terminate it, just for convenience */
- buf = (allocator) (NULL, l + 1);
- g_return_val_if_fail (buf, NULL);
- memset (buf, 0, *len + 1);
-
- res = asn1_read_value (asn, part, buf, &l);
- if (res != ASN1_SUCCESS) {
- (allocator) (buf, 0);
- buf = NULL;
- } else {
- *len = l;
- }
-
- return buf;
-}
-
-gboolean
-gkr_pkix_asn1_write_value (ASN1_TYPE asn, const gchar *part,
- const guchar* value, gsize len)
-{
- int res;
-
- g_return_val_if_fail (asn, FALSE);
- g_return_val_if_fail (part, FALSE);
- g_return_val_if_fail (!len || value, FALSE);
-
- res = asn1_write_value (asn, part, (const void*)value, (int)len);
- return res == ASN1_SUCCESS;
-}
-
-gboolean
-gkr_pkix_asn1_read_boolean (ASN1_TYPE asn, const gchar *part, gboolean *val)
-{
- gchar buffer[32];
- int n_buffer = sizeof (buffer) - 1;
- int res;
-
- memset (buffer, 0, sizeof (buffer));
-
- res = asn1_read_value (asn, part, buffer, &n_buffer);
- if (res != ASN1_SUCCESS)
- return FALSE;
-
- if (g_ascii_strcasecmp (buffer, "TRUE") == 0)
- *val = TRUE;
- else
- *val = FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_pkix_asn1_read_uint (ASN1_TYPE asn, const gchar *part, guint *val)
-{
- guchar buf[4];
- int n_buf = sizeof (buf);
- gsize i;
- int res;
-
- res = asn1_read_value (asn, part, buf, &n_buf);
- if(res != ASN1_SUCCESS)
- return FALSE;
-
- if (n_buf > 4 || n_buf < 1)
- return FALSE;
-
- *val = 0;
- for (i = 0; i < n_buf; ++i)
- *val |= buf[i] << (8 * ((n_buf - 1) - i));
-
- return TRUE;
-}
-
-gboolean
-gkr_pkix_asn1_write_uint (ASN1_TYPE asn, const gchar *part, guint32 val)
-{
- guchar buf[4];
- int res, bytes;
-
- buf[0] = (val >> 24) & 0xff;
- buf[1] = (val >> 16) & 0xff;
- buf[2] = (val >> 8) & 0xff;
- buf[3] = (val >> 0) & 0xff;
-
- for (bytes = 3; bytes >= 0; --bytes)
- if (!buf[bytes])
- break;
-
- bytes = 4 - (bytes + 1);
- if (bytes == 0)
- bytes = 1;
- res = asn1_write_value (asn, part, buf + (4 - bytes), bytes);
- return res == ASN1_SUCCESS;
-}
-
-GQuark
-gkr_pkix_asn1_read_oid (ASN1_TYPE asn, const gchar *part)
-{
- GQuark quark;
- guchar *buf;
- gsize n_buf;
-
- buf = gkr_pkix_asn1_read_value (asn, part, &n_buf, NULL);
- if (!buf)
- return 0;
-
- quark = g_quark_from_string ((gchar*)buf);
- g_free (buf);
-
- return quark;
-}
-
-gboolean
-gkr_pkix_asn1_write_oid (ASN1_TYPE asn, const gchar *part, GQuark val)
-{
- const gchar* oid;
-
- g_return_val_if_fail (val, FALSE);
-
- oid = g_quark_to_string (val);
- g_return_val_if_fail (oid, FALSE);
-
- return gkr_pkix_asn1_write_value (asn, part, (const guchar*)oid,
- 1 /* any non-null value for OID */);
-}
-
-gboolean
-gkr_pkix_asn1_read_mpi (ASN1_TYPE asn, const gchar *part, gcry_mpi_t *mpi)
-{
- gcry_error_t gcry;
- gsize sz;
- guchar *buf;
-
- buf = gkr_pkix_asn1_read_value (asn, part, &sz, gkr_secure_realloc);
- if (!buf)
- return FALSE;
-
- gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_STD, buf, sz, &sz);
- gkr_secure_free (buf);
-
- if (gcry != 0)
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_pkix_asn1_write_mpi (ASN1_TYPE asn, const gchar *part, gcry_mpi_t mpi)
-{
- gcry_error_t gcry;
- gsize len;
- guchar *buf;
- int res;
-
- g_assert (asn);
- g_assert (part);
- g_assert (mpi);
-
- /* Get the size */
- gcry = gcry_mpi_print (GCRYMPI_FMT_STD, NULL, 0, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
- g_return_val_if_fail (len > 0, FALSE);
-
- buf = gkr_secure_alloc (len);
-
- gcry = gcry_mpi_print (GCRYMPI_FMT_STD, buf, len, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- res = asn1_write_value (asn, part, buf, len);
- gkr_secure_free (buf);
-
- if (res != ASN1_SUCCESS)
- return FALSE;
-
- return TRUE;
-}
-
-static int
-atoin (const char *p, int digits)
-{
- int ret = 0, base = 1;
- while(--digits >= 0) {
- if (p[digits] < '0' || p[digits] > '9')
- return -1;
- ret += (p[digits] - '0') * base;
- base *= 10;
- }
- return ret;
-}
-
-static int
-two_to_four_digit_year (int year)
-{
- time_t now;
- struct tm tm;
- int century, current;
-
- g_return_val_if_fail (year > 0 && year <= 99, -1);
-
- /* Get the current year */
- now = time (NULL);
- g_return_val_if_fail (now >= 0, -1);
- if (!gmtime_r (&now, &tm))
- g_return_val_if_reached (-1);
-
- current = (tm.tm_year % 100);
- century = (tm.tm_year + 1900) - current;
-
- /*
- * Check if it's within 40 years before the
- * current date.
- */
- if (current < 40) {
- if (year < current)
- return century + year;
- if (year > 100 - (40 - current))
- return (century - 100) + year;
- } else {
- if (year < current && year > (current - 40))
- return century + year;
- }
-
- /*
- * If it's after then adjust for overflows to
- * the next century.
- */
- if (year < current)
- return century + 100 + year;
- else
- return century + year;
-}
-
-#ifndef HAVE_TIMEGM
-time_t timegm(struct tm *t)
-{
- time_t tl, tb;
- struct tm *tg;
-
- tl = mktime (t);
- if (tl == -1)
- {
- t->tm_hour--;
- tl = mktime (t);
- if (tl == -1)
- return -1; /* can't deal with output from strptime */
- tl += 3600;
- }
- tg = gmtime (&tl);
- tg->tm_isdst = 0;
- tb = mktime (tg);
- if (tb == -1)
- {
- tg->tm_hour--;
- tb = mktime (tg);
- if (tb == -1)
- return -1; /* can't deal with output from gmtime */
- tb += 3600;
- }
- return (tl - (tb - tl));
-}
-#endif //NOT_HAVE_TIMEGM
-
-time_t
-gkr_pkix_asn1_parse_utc_time (const gchar *time)
-{
- struct tm when;
- guint n_time;
- time_t result;
- const char *p, *e;
- int year;
-
- g_assert (time);
- n_time = strlen (time);
-
- /* YYMMDDhhmmss.ffff Z | +0000 */
- if (n_time < 6 || n_time >= 28)
- return -1;
-
- /* Reset everything to default legal values */
- memset (&when, 0, sizeof (when));
- when.tm_mday = 1;
-
- /* Select the digits part of it */
- p = time;
- for (e = p; *e >= '0' && *e <= '9'; ++e);
-
- if (p + 2 <= e) {
- year = atoin (p, 2);
- p += 2;
-
- /*
- * 40 years in the past is our century. 60 years
- * in the future is the next century.
- */
- when.tm_year = two_to_four_digit_year (year) - 1900;
- }
- if (p + 2 <= e) {
- when.tm_mon = atoin (p, 2) - 1;
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_mday = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_hour = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_min = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_sec = atoin (p, 2);
- p += 2;
- }
-
- if (when.tm_year < 0 || when.tm_year > 9999 ||
- when.tm_mon < 0 || when.tm_mon > 11 ||
- when.tm_mday < 1 || when.tm_mday > 31 ||
- when.tm_hour < 0 || when.tm_hour > 23 ||
- when.tm_min < 0 || when.tm_min > 59 ||
- when.tm_sec < 0 || when.tm_sec > 59)
- return -1;
-
- /* Make sure all that got parsed */
- if (p != e)
- return -1;
-
- /* In order to work with 32 bit time_t. */
- if (sizeof (time_t) <= 4 && when.tm_year >= 2038)
- return (time_t) 2145914603; /* 2037-12-31 23:23:23 */
-
- /* Covnvert to seconds since epoch */
- result = timegm (&when);
-
- /* Now the remaining optional stuff */
- e = time + n_time;
-
- /* See if there's a fraction, and discard it if so */
- if (p < e && *p == '.' && p + 5 <= e)
- p += 5;
-
- /* See if it's UTC */
- if (p < e && *p == 'Z') {
- p += 1;
-
- /* See if it has a timezone */
- } else if ((*p == '-' || *p == '+') && p + 3 <= e) {
- int off, neg;
-
- neg = *p == '-';
- ++p;
-
- off = atoin (p, 2) * 3600;
- if (off < 0 || off > 86400)
- return -1;
- p += 2;
-
- if (p + 2 <= e) {
- off += atoin (p, 2) * 60;
- p += 2;
- }
-
- /* Use TZ offset */
- if (neg)
- result -= off;
- else
- result += off;
- }
-
- /* Make sure everything got parsed */
- if (p != e)
- return -1;
-
- return result;
-}
-
-time_t
-gkr_pkix_asn1_parse_general_time (const gchar *time)
-{
- struct tm when;
- guint n_time;
- time_t result;
- const char *p, *e;
-
- g_assert (time);
- n_time = strlen (time);
-
- /* YYYYMMDDhhmmss.ffff Z | +0000 */
- if (n_time < 8 || n_time >= 30)
- return -1;
-
- /* Reset everything to default legal values */
- memset (&when, 0, sizeof (when));
- when.tm_mday = 1;
-
- /* Select the digits part of it */
- p = time;
- for (e = p; *e >= '0' && *e <= '9'; ++e);
-
- if (p + 4 <= e) {
- when.tm_year = atoin (p, 4) - 1900;
- p += 4;
- }
- if (p + 2 <= e) {
- when.tm_mon = atoin (p, 2) - 1;
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_mday = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_hour = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_min = atoin (p, 2);
- p += 2;
- }
- if (p + 2 <= e) {
- when.tm_sec = atoin (p, 2);
- p += 2;
- }
-
- if (when.tm_year < 0 || when.tm_year > 9999 ||
- when.tm_mon < 0 || when.tm_mon > 11 ||
- when.tm_mday < 1 || when.tm_mday > 31 ||
- when.tm_hour < 0 || when.tm_hour > 23 ||
- when.tm_min < 0 || when.tm_min > 59 ||
- when.tm_sec < 0 || when.tm_sec > 59)
- return -1;
-
- /* Make sure all that got parsed */
- if (p != e)
- return -1;
-
- /* Covnvert to seconds since epoch */
- result = timegm (&when);
-
- /* Now the remaining optional stuff */
- e = time + n_time;
-
- /* See if there's a fraction, and discard it if so */
- if (p < e && *p == '.' && p + 5 <= e)
- p += 5;
-
- /* See if it's UTC */
- if (p < e && *p == 'Z') {
- p += 1;
-
- /* See if it has a timezone */
- } else if ((*p == '-' || *p == '+') && p + 3 <= e) {
- int off, neg;
-
- neg = *p == '-';
- ++p;
-
- off = atoin (p, 2) * 3600;
- if (off < 0 || off > 86400)
- return -1;
- p += 2;
-
- if (p + 2 <= e) {
- off += atoin (p, 2) * 60;
- p += 2;
- }
-
- /* Use TZ offset */
- if (neg)
- result -= off;
- else
- result += off;
- }
-
- /* Make sure everything got parsed */
- if (p != e)
- return -1;
-
- return result;
-}
-
-gboolean
-gkr_pkix_asn1_read_time (ASN1_TYPE asn, const gchar *part, time_t *val)
-{
- #define MAX_TIME 1024
- gchar ttime[MAX_TIME];
- gchar *name;
- int len, res;
-
- len = sizeof (ttime) - 1;
- res = asn1_read_value (asn, part, ttime, &len);
- if (res != ASN1_SUCCESS)
- return FALSE;
-
- /* CHOICE */
- if (strcmp (ttime, "generalTime") == 0) {
- name = g_strconcat (part, ".generalTime", NULL);
- len = sizeof (ttime) - 1;
- res = asn1_read_value (asn, name, ttime, &len);
- g_free (name);
- if (res != ASN1_SUCCESS)
- return FALSE;
-
- *val = gkr_pkix_asn1_parse_general_time (ttime);
-
- /* UTCTIME */
- } else {
- name = g_strconcat (part, ".utcTime", NULL);
- len = sizeof (ttime) - 1;
- res = asn1_read_value (asn, name, ttime, &len);
- g_free (name);
- if (res != ASN1_SUCCESS)
- return FALSE;
-
- *val = gkr_pkix_asn1_parse_utc_time (ttime);
- }
-
- if (*val < (time_t)0)
- return FALSE;
-
- return TRUE;
-}
diff --git a/pkix/gkr-pkix-asn1.h b/pkix/gkr-pkix-asn1.h
deleted file mode 100644
index f54a06bb..00000000
--- a/pkix/gkr-pkix-asn1.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-asn1.h - ASN.1 helper routines
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKIXASN_H_
-#define GKRPKIXASN_H_
-
-#include <libtasn1.h>
-#include <gcrypt.h>
-#include <glib.h>
-
-#include "common/gkr-buffer.h"
-
-ASN1_TYPE gkr_pkix_asn1_get_pk_asn1type (void);
-
-ASN1_TYPE gkr_pkix_asn1_get_pkix_asn1type (void);
-
-ASN1_TYPE gkr_pkix_asn1_decode (const gchar *type, const guchar *data,
- gsize n_data);
-
-guchar* gkr_pkix_asn1_encode (ASN1_TYPE asn, const gchar* part,
- gsize *len, GkrBufferAllocator alloc);
-
-guchar* gkr_pkix_asn1_read_value (ASN1_TYPE asn, const gchar *part,
- gsize *len, GkrBufferAllocator alloc);
-
-gboolean gkr_pkix_asn1_write_value (ASN1_TYPE asn, const gchar *part,
- const guchar* value, gsize len);
-
-GQuark gkr_pkix_asn1_read_oid (ASN1_TYPE asn, const gchar *part);
-
-gboolean gkr_pkix_asn1_write_oid (ASN1_TYPE asn, const gchar *part, GQuark val);
-
-gboolean gkr_pkix_asn1_read_boolean (ASN1_TYPE asn, const gchar *part, gboolean *val);
-
-gboolean gkr_pkix_asn1_read_uint (ASN1_TYPE asn, const gchar *part, guint *val);
-
-gboolean gkr_pkix_asn1_read_time (ASN1_TYPE asn, const gchar *part, time_t *val);
-
-const guchar* gkr_pkix_asn1_read_content (ASN1_TYPE asn, const guchar *data, gsize n_data,
- const gchar *part, gsize *n_content);
-
-const guchar* gkr_pkix_asn1_read_element (ASN1_TYPE asn, const guchar *data, gsize n_data,
- const gchar *part, gsize *n_element);
-
-gboolean gkr_pkix_asn1_write_uint (ASN1_TYPE asn, const gchar *part, guint val);
-
-gboolean gkr_pkix_asn1_read_mpi (ASN1_TYPE asn, const gchar *part,
- gcry_mpi_t *mpi);
-
-gboolean gkr_pkix_asn1_write_mpi (ASN1_TYPE asn, const gchar *part,
- gcry_mpi_t mpi);
-
-gint gkr_pkix_asn1_element_length (const guchar *data, gsize n_data);
-
-const guchar* gkr_pkix_asn1_element_content (const guchar *data, gsize n_data, gsize *n_content);
-
-time_t gkr_pkix_asn1_parse_utc_time (const gchar* value);
-
-time_t gkr_pkix_asn1_parse_general_time (const gchar* value);
-
-#endif /*GKRPKIXASN_H_*/
diff --git a/pkix/gkr-pkix-constants.h b/pkix/gkr-pkix-constants.h
deleted file mode 100644
index 666401f2..00000000
--- a/pkix/gkr-pkix-constants.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-constants.h - Constants from PK standards
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKIXCONSTANTS_H_
-#define GKRPKIXCONSTANTS_H_
-
-#define PKIX_KEY_USAGE_DIGITAL_SIGNATURE 0x80
-#define PKIX_KEY_USAGE_NON_REPUDIATION 0x40
-#define PKIX_KEY_USAGE_KEY_ENCIPHERMENT 0x20
-#define PKIX_KEY_USAGE_DATA_ENCIPHERMENT 0x10
-#define PKIX_KEY_USAGE_KEY_AGREEMENT 0x08
-#define PKIX_KEY_USAGE_KEY_CERT_SIGN 0x04
-#define PKIX_KEY_USAGE_CRL_SIGN 0x02
-#define PKIX_KEY_USAGE_ENCIPHER_ONLY 0x01
-
-#define PKIX_USAGE_SERVER_AUTH "1.3.6.1.5.5.7.3.1"
-#define PKIX_USAGE_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
-#define PKIX_USAGE_CODE_SIGNING "1.3.6.1.5.5.7.3.3"
-#define PKIX_USAGE_EMAIL "1.3.6.1.5.5.7.3.4"
-#define PKIX_USAGE_TIME_STAMPING "1.3.6.1.5.5.7.3.8"
-#define PKIX_USAGE_IPSEC_ENDPOINT "1.3.6.1.5.5.7.3.5"
-#define PKIX_USAGE_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6"
-#define PKIX_USAGE_IPSEC_USER "1.3.6.1.5.5.7.3.7"
-#define PKIX_USAGE_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2"
-
-#endif /*GKRPKIXCONSTANTS_H_*/
diff --git a/pkix/gkr-pkix-der.c b/pkix/gkr-pkix-der.c
deleted file mode 100644
index a9b11848..00000000
--- a/pkix/gkr-pkix-der.c
+++ /dev/null
@@ -1,1383 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-der.c - parsing and serializing of common crypto DER structures
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkix-asn1.h"
-#include "gkr-pkix-der.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-secure-memory.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-/* -----------------------------------------------------------------------------
- * QUARKS
- */
-
-static gboolean quarks_inited = FALSE;
-
-static GQuark OID_PKIX1_RSA;
-static GQuark OID_PKIX1_DSA;
-
-static GQuark OID_PBE_MD2_DES_CBC;
-static GQuark OID_PBE_MD5_DES_CBC;
-static GQuark OID_PBE_MD2_RC2_CBC;
-static GQuark OID_PBE_MD5_RC2_CBC;
-static GQuark OID_PBE_SHA1_DES_CBC;
-static GQuark OID_PBE_SHA1_RC2_CBC;
-static GQuark OID_PBES2;
-static GQuark OID_PBKDF2;
-
-static GQuark OID_DES_CBC;
-static GQuark OID_DES_RC2_CBC;
-static GQuark OID_DES_EDE3_CBC;
-static GQuark OID_DES_RC5_CBC;
-
-static GQuark OID_PKCS12_PBE_ARCFOUR_SHA1;
-static GQuark OID_PKCS12_PBE_RC4_40_SHA1;
-static GQuark OID_PKCS12_PBE_3DES_SHA1;
-static GQuark OID_PKCS12_PBE_2DES_SHA1;
-static GQuark OID_PKCS12_PBE_RC2_128_SHA1;
-static GQuark OID_PKCS12_PBE_RC2_40_SHA1;
-
-static void
-init_quarks (void)
-{
- if (quarks_inited)
- return;
-
- quarks_inited = TRUE;
- #define QUARK(name, value) \
- name = g_quark_from_static_string(value)
-
- QUARK (OID_PKIX1_RSA, "1.2.840.113549.1.1.1");
- QUARK (OID_PKIX1_DSA, "1.2.840.10040.4.1");
-
- QUARK (OID_PBE_MD2_DES_CBC, "1.2.840.113549.1.5.1");
- QUARK (OID_PBE_MD5_DES_CBC, "1.2.840.113549.1.5.3");
- QUARK (OID_PBE_MD2_RC2_CBC, "1.2.840.113549.1.5.4");
- QUARK (OID_PBE_MD5_RC2_CBC, "1.2.840.113549.1.5.6");
- QUARK (OID_PBE_SHA1_DES_CBC, "1.2.840.113549.1.5.10");
- QUARK (OID_PBE_SHA1_RC2_CBC, "1.2.840.113549.1.5.11");
-
- QUARK (OID_PBES2, "1.2.840.113549.1.5.13");
-
- QUARK (OID_PBKDF2, "1.2.840.113549.1.5.12");
-
- QUARK (OID_DES_CBC, "1.3.14.3.2.7");
- QUARK (OID_DES_RC2_CBC, "1.2.840.113549.3.2");
- QUARK (OID_DES_EDE3_CBC, "1.2.840.113549.3.7");
- QUARK (OID_DES_RC5_CBC, "1.2.840.113549.3.9");
-
- QUARK (OID_PKCS12_PBE_ARCFOUR_SHA1, "1.2.840.113549.1.12.1.1");
- QUARK (OID_PKCS12_PBE_RC4_40_SHA1, "1.2.840.113549.1.12.1.2");
- QUARK (OID_PKCS12_PBE_3DES_SHA1, "1.2.840.113549.1.12.1.3");
- QUARK (OID_PKCS12_PBE_2DES_SHA1, "1.2.840.113549.1.12.1.4");
- QUARK (OID_PKCS12_PBE_RC2_128_SHA1, "1.2.840.113549.1.12.1.5");
- QUARK (OID_PKCS12_PBE_RC2_40_SHA1, "1.2.840.113549.1.12.1.6");
-
- #undef QUARK
-}
-
-
-/* -----------------------------------------------------------------------------
- * KEY PARSING
- */
-
-#define SEXP_PUBLIC_RSA \
- "(public-key" \
- " (rsa" \
- " (n %m)" \
- " (e %m)))"
-
-GkrPkixResult
-gkr_pkix_der_read_public_key_rsa (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t n, e;
- int res;
-
- n = e = NULL;
-
- asn = gkr_pkix_asn1_decode ("PK.RSAPublicKey", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_mpi (asn, "modulus", &n) ||
- !gkr_pkix_asn1_read_mpi (asn, "publicExponent", &e))
- goto done;
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PUBLIC_RSA, n, e);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (n);
- gcry_mpi_release (e);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid RSA public key");
-
- return ret;
-}
-
-#define SEXP_PRIVATE_RSA \
- "(private-key" \
- " (rsa" \
- " (n %m)" \
- " (e %m)" \
- " (d %m)" \
- " (p %m)" \
- " (q %m)" \
- " (u %m)))"
-
-GkrPkixResult
-gkr_pkix_der_read_private_key_rsa (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- gcry_mpi_t n, e, d, p, q, u;
- gcry_mpi_t tmp;
- guint version;
- int res;
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
-
- n = e = d = p = q = u = NULL;
-
- asn = gkr_pkix_asn1_decode ("PK.RSAPrivateKey", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_uint (asn, "version", &version))
- goto done;
-
- /* We only support simple version */
- if (version != 0) {
- ret = GKR_PKIX_UNRECOGNIZED;
- g_message ("unsupported version of RSA key: %u", version);
- goto done;
- }
-
- if (!gkr_pkix_asn1_read_mpi (asn, "modulus", &n) ||
- !gkr_pkix_asn1_read_mpi (asn, "publicExponent", &e) ||
- !gkr_pkix_asn1_read_mpi (asn, "privateExponent", &d) ||
- !gkr_pkix_asn1_read_mpi (asn, "prime1", &p) ||
- !gkr_pkix_asn1_read_mpi (asn, "prime2", &q) ||
- !gkr_pkix_asn1_read_mpi (asn, "coefficient", &u))
- goto done;
-
- /* Fix up the incoming key so gcrypt likes it */
- if (gcry_mpi_cmp (p, q) > 0) {
- /* P shall be smaller then Q! Swap primes. iqmp becomes u. */
- tmp = p;
- p = q;
- q = tmp;
- } else {
- /* U needs to be recomputed. */
- gcry_mpi_invm (u, p, q);
- }
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PRIVATE_RSA, n, e, d, p, q, u);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- gcry_mpi_release (d);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (u);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid RSA key");
-
- return ret;
-}
-
-#define SEXP_PUBLIC_DSA \
- "(public-key" \
- " (dsa" \
- " (p %m)" \
- " (q %m)" \
- " (g %m)" \
- " (y %m)))"
-
-GkrPkixResult
-gkr_pkix_der_read_public_key_dsa (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t p, q, g, y;
- int res;
-
- p = q = g = y = NULL;
-
- asn = gkr_pkix_asn1_decode ("PK.DSAPublicKey", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_mpi (asn, "p", &p) ||
- !gkr_pkix_asn1_read_mpi (asn, "q", &q) ||
- !gkr_pkix_asn1_read_mpi (asn, "g", &g) ||
- !gkr_pkix_asn1_read_mpi (asn, "Y", &y))
- goto done;
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PUBLIC_DSA, p, q, g, y);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid public DSA key");
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_public_key_dsa_parts (const guchar *keydata, gsize n_keydata,
- const guchar *params, gsize n_params,
- gcry_sexp_t *s_key)
-{
- gcry_mpi_t p, q, g, y;
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn_params = ASN1_TYPE_EMPTY;
- ASN1_TYPE asn_key = ASN1_TYPE_EMPTY;
- int res;
-
- p = q = g = y = NULL;
-
- asn_params = gkr_pkix_asn1_decode ("PK.DSAParameters", params, n_params);
- asn_key = gkr_pkix_asn1_decode ("PK.DSAPublicPart", keydata, n_keydata);
- if (!asn_params || !asn_key)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_mpi (asn_params, "p", &p) ||
- !gkr_pkix_asn1_read_mpi (asn_params, "q", &q) ||
- !gkr_pkix_asn1_read_mpi (asn_params, "g", &g))
- goto done;
-
- if (!gkr_pkix_asn1_read_mpi (asn_key, "", &y))
- goto done;
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PUBLIC_DSA, p, q, g, y);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn_key)
- asn1_delete_structure (&asn_key);
- if (asn_params)
- asn1_delete_structure (&asn_params);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid DSA key");
-
- return ret;
-}
-
-
-#define SEXP_PRIVATE_DSA \
- "(private-key" \
- " (dsa" \
- " (p %m)" \
- " (q %m)" \
- " (g %m)" \
- " (y %m)" \
- " (x %m)))"
-
-GkrPkixResult
-gkr_pkix_der_read_private_key_dsa (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- gcry_mpi_t p, q, g, y, x;
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- int res;
- ASN1_TYPE asn;
-
- p = q = g = y = x = NULL;
-
- asn = gkr_pkix_asn1_decode ("PK.DSAPrivateKey", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_mpi (asn, "p", &p) ||
- !gkr_pkix_asn1_read_mpi (asn, "q", &q) ||
- !gkr_pkix_asn1_read_mpi (asn, "g", &g) ||
- !gkr_pkix_asn1_read_mpi (asn, "Y", &y) ||
- !gkr_pkix_asn1_read_mpi (asn, "priv", &x))
- goto done;
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PRIVATE_DSA, p, q, g, y, x);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
- gcry_mpi_release (x);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid DSA key");
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_private_key_dsa_parts (const guchar *keydata, gsize n_keydata,
- const guchar *params, gsize n_params,
- gcry_sexp_t *s_key)
-{
- gcry_mpi_t p, q, g, y, x;
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- int res;
- ASN1_TYPE asn_params = ASN1_TYPE_EMPTY;
- ASN1_TYPE asn_key = ASN1_TYPE_EMPTY;
-
- p = q = g = y = x = NULL;
-
- asn_params = gkr_pkix_asn1_decode ("PK.DSAParameters", params, n_params);
- asn_key = gkr_pkix_asn1_decode ("PK.DSAPrivatePart", keydata, n_keydata);
- if (!asn_params || !asn_key)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_mpi (asn_params, "p", &p) ||
- !gkr_pkix_asn1_read_mpi (asn_params, "q", &q) ||
- !gkr_pkix_asn1_read_mpi (asn_params, "g", &g))
- goto done;
-
- if (!gkr_pkix_asn1_read_mpi (asn_key, "", &x))
- goto done;
-
- /* Now we calculate y */
- y = gcry_mpi_snew (1024);
- gcry_mpi_powm (y, g, x, p);
-
- res = gcry_sexp_build (s_key, NULL, SEXP_PRIVATE_DSA, p, q, g, y, x);
- if (res)
- goto done;
-
- g_assert (*s_key);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn_key)
- asn1_delete_structure (&asn_key);
- if (asn_params)
- asn1_delete_structure (&asn_params);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
- gcry_mpi_release (x);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid DSA key");
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_public_key (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- GkrPkixResult res;
-
- res = gkr_pkix_der_read_public_key_rsa (data, n_data, s_key);
- if (res == GKR_PKIX_UNRECOGNIZED)
- res = gkr_pkix_der_read_public_key_dsa (data, n_data, s_key);
-
- return res;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_public_key_info (const guchar* data, gsize n_data, gcry_sexp_t* s_key)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- GQuark oid;
- ASN1_TYPE asn;
- gsize n_key, n_params;
- const guchar *params;
- guchar *key = NULL;
-
- init_quarks ();
-
- asn = gkr_pkix_asn1_decode ("PKIX1.SubjectPublicKeyInfo", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- /* Figure out the algorithm */
- oid = gkr_pkix_asn1_read_oid (asn, "algorithm.algorithm");
- if (!oid)
- goto done;
-
- /* A bit string so we cannot process in place */
- key = gkr_pkix_asn1_read_value (asn, "subjectPublicKey", &n_key, NULL);
- if (!key)
- goto done;
- n_key /= 8;
-
- /* An RSA key is simple */
- if (oid == OID_PKIX1_RSA) {
- ret = gkr_pkix_der_read_public_key_rsa (key, n_key, s_key);
-
- /* A DSA key paramaters are stored separately */
- } else if (oid == OID_PKIX1_DSA) {
- params = gkr_pkix_asn1_read_element (asn, data, n_data, "algorithm.parameters", &n_params);
- if (!params)
- goto done;
- ret = gkr_pkix_der_read_public_key_dsa_parts (key, n_key, params, n_params, s_key);
-
- } else {
- g_message ("unsupported key algorithm in certificate: %s", g_quark_to_string (oid));
- goto done;
- }
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
-
- g_free (key);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid subject public-key info");
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_private_key (const guchar *data, gsize n_data, gcry_sexp_t *s_key)
-{
- GkrPkixResult res;
-
- res = gkr_pkix_der_read_private_key_rsa (data, n_data, s_key);
- if (res == GKR_PKIX_UNRECOGNIZED)
- res = gkr_pkix_der_read_private_key_dsa (data, n_data, s_key);
-
- return res;
-}
-
-guchar*
-gkr_pkix_der_write_public_key_rsa (gcry_sexp_t s_key, gsize *len)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t n, e;
- guchar *result = NULL;
- int res;
-
- n = e = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.RSAPublicKey", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (s_key, &n, "rsa", "n", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &e, "rsa", "e", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "modulus", n) ||
- !gkr_pkix_asn1_write_mpi (asn, "publicExponent", e))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", len, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (n);
- gcry_mpi_release (e);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_private_key_rsa (gcry_sexp_t s_key, gsize *n_key)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t n, e, d, p, q, u, e1, e2, tmp;
- guchar *result = NULL;
- int res;
-
- n = e = d = p = q = u = e1 = e2 = tmp = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.RSAPrivateKey", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (s_key, &n, "rsa", "n", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &e, "rsa", "e", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &d, "rsa", "d", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &p, "rsa", "p", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &q, "rsa", "q", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &u, "rsa", "u", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "modulus", n) ||
- !gkr_pkix_asn1_write_mpi (asn, "publicExponent", e) ||
- !gkr_pkix_asn1_write_mpi (asn, "privateExponent", d) ||
- !gkr_pkix_asn1_write_mpi (asn, "prime1", p) ||
- !gkr_pkix_asn1_write_mpi (asn, "prime2", q) ||
- !gkr_pkix_asn1_write_mpi (asn, "coefficient", u))
- goto done;
-
- /* Calculate e1 and e2 */
- tmp = gcry_mpi_snew (1024);
- gcry_mpi_sub_ui (tmp, p, 1);
- e1 = gcry_mpi_snew (1024);
- gcry_mpi_mod (e1, d, tmp);
- gcry_mpi_sub_ui (tmp, q, 1);
- e2 = gcry_mpi_snew (1024);
- gcry_mpi_mod (e2, d, tmp);
-
- /* Write out calculated */
- if (!gkr_pkix_asn1_write_mpi (asn, "exponent1", e1) ||
- !gkr_pkix_asn1_write_mpi (asn, "exponent2", e2))
- goto done;
-
- /* Write out the version */
- if (!gkr_pkix_asn1_write_uint (asn, "version", 0))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", n_key, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- gcry_mpi_release (d);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (u);
-
- gcry_mpi_release (tmp);
- gcry_mpi_release (e1);
- gcry_mpi_release (e2);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_public_key_dsa (gcry_sexp_t s_key, gsize *len)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t p, q, g, y;
- guchar *result = NULL;
- int res;
-
- p = q = g = y = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.DSAPublicKey", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (s_key, &p, "dsa", "p", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &q, "dsa", "q", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &g, "dsa", "g", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &y, "dsa", "y", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "p", p) ||
- !gkr_pkix_asn1_write_mpi (asn, "q", q) ||
- !gkr_pkix_asn1_write_mpi (asn, "g", g) ||
- !gkr_pkix_asn1_write_mpi (asn, "Y", y))
- goto done;
-
- if (!gkr_pkix_asn1_write_uint (asn, "version", 0))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", len, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_private_key_dsa_part (gcry_sexp_t skey, gsize *n_key)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t x;
- guchar *result = NULL;
- int res;
-
- x = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.DSAPrivatePart", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (skey, &x, "dsa", "x", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "", x))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", n_key, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (x);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_private_key_dsa_params (gcry_sexp_t skey, gsize *n_params)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t p, q, g;
- guchar *result = NULL;
- int res;
-
- p = q = g = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.DSAParameters", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (skey, &p, "dsa", "p", NULL) ||
- !gkr_crypto_sexp_extract_mpi (skey, &q, "dsa", "q", NULL) ||
- !gkr_crypto_sexp_extract_mpi (skey, &g, "dsa", "g", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "p", p) ||
- !gkr_pkix_asn1_write_mpi (asn, "q", q) ||
- !gkr_pkix_asn1_write_mpi (asn, "g", g))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", n_params, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_private_key_dsa (gcry_sexp_t s_key, gsize *len)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_mpi_t p, q, g, y, x;
- guchar *result = NULL;
- int res;
-
- p = q = g = y = x = NULL;
-
- res = asn1_create_element (gkr_pkix_asn1_get_pk_asn1type (),
- "PK.DSAPrivateKey", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- if (!gkr_crypto_sexp_extract_mpi (s_key, &p, "dsa", "p", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &q, "dsa", "q", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &g, "dsa", "g", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &y, "dsa", "y", NULL) ||
- !gkr_crypto_sexp_extract_mpi (s_key, &x, "dsa", "x", NULL))
- goto done;
-
- if (!gkr_pkix_asn1_write_mpi (asn, "p", p) ||
- !gkr_pkix_asn1_write_mpi (asn, "q", q) ||
- !gkr_pkix_asn1_write_mpi (asn, "g", g) ||
- !gkr_pkix_asn1_write_mpi (asn, "Y", y) ||
- !gkr_pkix_asn1_write_mpi (asn, "priv", x))
- goto done;
-
- if (!gkr_pkix_asn1_write_uint (asn, "version", 0))
- goto done;
-
- result = gkr_pkix_asn1_encode (asn, "", len, NULL);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
- gcry_mpi_release (x);
-
- return result;
-}
-
-guchar*
-gkr_pkix_der_write_public_key (gcry_sexp_t s_key, gsize *len)
-{
- gboolean is_priv;
- int algorithm;
-
- g_return_val_if_fail (s_key != NULL, NULL);
-
- if (!gkr_crypto_skey_parse (s_key, &algorithm, &is_priv, NULL))
- g_return_val_if_reached (NULL);
-
- g_return_val_if_fail (!is_priv, NULL);
-
- switch (algorithm) {
- case GCRY_PK_RSA:
- return gkr_pkix_der_write_public_key_rsa (s_key, len);
- case GCRY_PK_DSA:
- return gkr_pkix_der_write_public_key_dsa (s_key, len);
- default:
- g_return_val_if_reached (NULL);
- }
-}
-
-guchar*
-gkr_pkix_der_write_private_key (gcry_sexp_t s_key, gsize *len)
-{
- gboolean is_priv;
- int algorithm;
-
- g_return_val_if_fail (s_key != NULL, NULL);
-
- if (!gkr_crypto_skey_parse (s_key, &algorithm, &is_priv, NULL))
- g_return_val_if_reached (NULL);
-
- g_return_val_if_fail (is_priv, NULL);
-
- switch (algorithm) {
- case GCRY_PK_RSA:
- return gkr_pkix_der_write_private_key_rsa (s_key, len);
- case GCRY_PK_DSA:
- return gkr_pkix_der_write_private_key_dsa (s_key, len);
- default:
- g_return_val_if_reached (NULL);
- }
-}
-
-/* -----------------------------------------------------------------------------
- * CERTIFICATES
- */
-
-GkrPkixResult
-gkr_pkix_der_read_certificate (const guchar *data, gsize n_data, ASN1_TYPE *asn1)
-{
- *asn1 = gkr_pkix_asn1_decode ("PKIX1.Certificate", data, n_data);
- if (!*asn1)
- return GKR_PKIX_UNRECOGNIZED;
-
- return GKR_PKIX_SUCCESS;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_basic_constraints (const guchar *data, gsize n_data,
- gboolean *is_ca, guint *path_len)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.BasicConstraints", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (path_len) {
- if (!gkr_pkix_asn1_read_uint (asn, "pathLenConstraint", path_len))
- goto done;
- }
-
- if (is_ca) {
- if (!gkr_pkix_asn1_read_boolean (asn, "cA", is_ca))
- *is_ca = FALSE;
- }
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
-
- if (ret == GKR_PKIX_FAILURE)
- g_message ("invalid basic constraints");
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_key_usage (const guchar *data, gsize n_data, guint *key_usage)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn;
- guchar buf[4];
- int res, len;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.KeyUsage", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- memset (buf, 0, sizeof (buf));
- len = sizeof (buf);
- res = asn1_read_value (asn, "", buf, &len);
- if (res != ASN1_SUCCESS)
- goto done;
-
- *key_usage = buf[0] | (buf[1] << 8);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_enhanced_usage (const guchar *data, gsize n_data, GQuark **usage_oids)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
- ASN1_TYPE asn;
- gchar *part;
- GArray *array;
- GQuark oid;
- int i;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.ExtKeyUsageSyntax", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- array = g_array_new (TRUE, TRUE, sizeof (GQuark));
- for (i = 0; TRUE; ++i) {
- part = g_strdup_printf ("?%d", i + 1);
- oid = gkr_pkix_asn1_read_oid (asn, part);
- g_free (part);
-
- if (!oid)
- break;
-
- g_array_append_val (array, oid);
- }
-
- *usage_oids = (GQuark*)g_array_free (array, FALSE);
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-guchar*
-gkr_pkix_der_write_certificate (ASN1_TYPE asn1, gsize *n_data)
-{
- g_return_val_if_fail (asn1, NULL);
- g_return_val_if_fail (n_data, NULL);
-
- return gkr_pkix_asn1_encode (asn1, "", n_data, NULL);
-}
-
-/* -----------------------------------------------------------------------------
- * CIPHER/KEY DESCRIPTIONS
- */
-
-GkrPkixResult
-gkr_pkix_der_read_cipher (GQuark oid_scheme, const gchar *password,
- const guchar *data, gsize n_data, gcry_cipher_hd_t *cih)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
-
- g_return_val_if_fail (oid_scheme != 0, GKR_PKIX_FAILURE);
- g_return_val_if_fail (cih != NULL, GKR_PKIX_FAILURE);
- g_return_val_if_fail (data != NULL && n_data != 0, GKR_PKIX_FAILURE);
-
- init_quarks ();
-
- /* PKCS#5 PBE */
- if (oid_scheme == OID_PBE_MD2_DES_CBC)
- ret = gkr_pkix_der_read_cipher_pkcs5_pbe (GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC,
- GCRY_MD_MD2, password, data, n_data, cih);
-
- else if (oid_scheme == OID_PBE_MD2_RC2_CBC)
- /* RC2-64 has no implementation in libgcrypt */
- ret = GKR_PKIX_UNRECOGNIZED;
- else if (oid_scheme == OID_PBE_MD5_DES_CBC)
- ret = gkr_pkix_der_read_cipher_pkcs5_pbe (GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC,
- GCRY_MD_MD5, password, data, n_data, cih);
- else if (oid_scheme == OID_PBE_MD5_RC2_CBC)
- /* RC2-64 has no implementation in libgcrypt */
- ret = GKR_PKIX_UNRECOGNIZED;
- else if (oid_scheme == OID_PBE_SHA1_DES_CBC)
- ret = gkr_pkix_der_read_cipher_pkcs5_pbe (GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC,
- GCRY_MD_SHA1, password, data, n_data, cih);
- else if (oid_scheme == OID_PBE_SHA1_RC2_CBC)
- /* RC2-64 has no implementation in libgcrypt */
- ret = GKR_PKIX_UNRECOGNIZED;
-
-
- /* PKCS#5 PBES2 */
- else if (oid_scheme == OID_PBES2)
- ret = gkr_pkix_der_read_cipher_pkcs5_pbes2 (password, data, n_data, cih);
-
-
- /* PKCS#12 PBE */
- else if (oid_scheme == OID_PKCS12_PBE_ARCFOUR_SHA1)
- ret = gkr_pkix_der_read_cipher_pkcs12_pbe (GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM,
- password, data, n_data, cih);
- else if (oid_scheme == OID_PKCS12_PBE_RC4_40_SHA1)
- /* RC4-40 has no implementation in libgcrypt */;
-
- else if (oid_scheme == OID_PKCS12_PBE_3DES_SHA1)
- ret = gkr_pkix_der_read_cipher_pkcs12_pbe (GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC,
- password, data, n_data, cih);
- else if (oid_scheme == OID_PKCS12_PBE_2DES_SHA1)
- /* 2DES has no implementation in libgcrypt */;
-
- else if (oid_scheme == OID_PKCS12_PBE_RC2_128_SHA1)
- ret = gkr_pkix_der_read_cipher_pkcs12_pbe (GCRY_CIPHER_RFC2268_128, GCRY_CIPHER_MODE_CBC,
- password, data, n_data, cih);
-
- else if (oid_scheme == OID_PKCS12_PBE_RC2_40_SHA1)
- ret = gkr_pkix_der_read_cipher_pkcs12_pbe (GCRY_CIPHER_RFC2268_40, GCRY_CIPHER_MODE_CBC,
- password, data, n_data, cih);
-
- if (ret == GKR_PKIX_UNRECOGNIZED)
- g_message ("unsupported or unrecognized cipher oid: %s", g_quark_to_string (oid_scheme));
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_cipher_pkcs5_pbe (int cipher_algo, int cipher_mode,
- int hash_algo, const gchar *password, const guchar *data,
- gsize n_data, gcry_cipher_hd_t *cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_error_t gcry;
- GkrPkixResult ret;
- const guchar *salt;
- gsize n_salt;
- gsize n_block, n_key;
- guint iterations;
- guchar *key = NULL;
- guchar *iv = NULL;
-
- g_return_val_if_fail (cipher_algo != 0 && cipher_mode != 0, GKR_PKIX_FAILURE);
- g_return_val_if_fail (cih != NULL, GKR_PKIX_FAILURE);
- g_return_val_if_fail (data != NULL && n_data != 0, GKR_PKIX_FAILURE);
-
- *cih = NULL;
- ret = GKR_PKIX_UNRECOGNIZED;
-
- /* Check if we can use this algorithm */
- if (gcry_cipher_algo_info (cipher_algo, GCRYCTL_TEST_ALGO, NULL, 0) != 0 ||
- gcry_md_test_algo (hash_algo) != 0)
- goto done;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-PBE-params", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- salt = gkr_pkix_asn1_read_content (asn, data, n_data, "salt", &n_salt);
- if (!salt)
- goto done;
- if (!gkr_pkix_asn1_read_uint (asn, "iterationCount", &iterations))
- iterations = 1;
-
- n_key = gcry_cipher_get_algo_keylen (cipher_algo);
- g_return_val_if_fail (n_key > 0, GKR_PKIX_FAILURE);
- n_block = gcry_cipher_get_algo_blklen (cipher_algo);
-
- if (!gkr_crypto_generate_symkey_pbe (cipher_algo, hash_algo, password, salt,
- n_salt, iterations, &key, n_block > 1 ? &iv : NULL))
- goto done;
-
- gcry = gcry_cipher_open (cih, cipher_algo, cipher_mode, 0);
- if (gcry != 0) {
- g_warning ("couldn't create cipher: %s", gcry_strerror (gcry));
- goto done;
- }
-
- if (iv)
- gcry_cipher_setiv (*cih, iv, n_block);
- gcry_cipher_setkey (*cih, key, n_key);
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- gkr_secure_free (iv);
- gkr_secure_free (key);
-
- if (asn)
- asn1_delete_structure (&asn);
-
- return ret;
-}
-
-static gboolean
-setup_pkcs5_rc2_params (const guchar *data, guchar n_data, gcry_cipher_hd_t cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_error_t gcry;
- const guchar *iv;
- gsize n_iv;
- guint version;
-
- g_assert (data);
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-rc2-CBC-params", data, n_data);
- if (!asn)
- return GKR_PKIX_UNRECOGNIZED;
-
- if (!gkr_pkix_asn1_read_uint (asn, "rc2ParameterVersion", &version))
- return GKR_PKIX_FAILURE;
-
- iv = gkr_pkix_asn1_read_content (asn, data, n_data, "iv", &n_iv);
- asn1_delete_structure (&asn);
-
- if (!iv)
- return GKR_PKIX_FAILURE;
-
- gcry = gcry_cipher_setiv (cih, iv, n_iv);
-
- if (gcry != 0) {
- g_message ("couldn't set %lu byte iv on cipher", (gulong)n_iv);
- return GKR_PKIX_FAILURE;
- }
-
- return GKR_PKIX_SUCCESS;
-}
-
-static gboolean
-setup_pkcs5_des_params (const guchar *data, guchar n_data, gcry_cipher_hd_t cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_error_t gcry;
- const guchar *iv;
- gsize n_iv;
-
- g_assert (data);
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-des-EDE3-CBC-params", data, n_data);
- if (!asn)
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-des-CBC-params", data, n_data);
- if (!asn)
- return GKR_PKIX_UNRECOGNIZED;
-
- iv = gkr_pkix_asn1_read_content (asn, data, n_data, "", &n_iv);
- asn1_delete_structure (&asn);
-
- if (!iv)
- return GKR_PKIX_FAILURE;
-
- gcry = gcry_cipher_setiv (cih, iv, n_iv);
-
- if (gcry != 0) {
- g_message ("couldn't set %lu byte iv on cipher", (gulong)n_iv);
- return GKR_PKIX_FAILURE;
- }
-
- return GKR_PKIX_SUCCESS;
-}
-
-static GkrPkixResult
-setup_pkcs5_pbkdf2_params (const gchar *password, const guchar *data,
- gsize n_data, int cipher_algo, gcry_cipher_hd_t cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- gcry_error_t gcry;
- guchar *key = NULL;
- const guchar *salt;
- gsize n_salt, n_key;
- guint iterations;
-
- g_assert (cipher_algo);
- g_assert (data);
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-PBKDF2-params", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- if (!gkr_pkix_asn1_read_uint (asn, "iterationCount", &iterations))
- iterations = 1;
- salt = gkr_pkix_asn1_read_content (asn, data, n_data, "salt.specified", &n_salt);
- if (!salt)
- goto done;
-
- if (!gkr_crypto_generate_symkey_pbkdf2 (cipher_algo, GCRY_MD_SHA1, password,
- salt, n_salt, iterations, &key, NULL))
- goto done;
-
- n_key = gcry_cipher_get_algo_keylen (cipher_algo);
- g_return_val_if_fail (n_key > 0, GKR_PKIX_FAILURE);
-
- gcry = gcry_cipher_setkey (cih, key, n_key);
- if (gcry != 0) {
- g_message ("couldn't set %lu byte key on cipher", (gulong)n_key);
- goto done;
- }
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- gkr_secure_free (key);
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_cipher_pkcs5_pbes2 (const gchar *password, const guchar *data,
- gsize n_data, gcry_cipher_hd_t *cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult r, ret;
- GQuark key_deriv_algo, enc_oid;
- gcry_error_t gcry;
- int algo, mode;
- int beg, end, res;
-
- g_return_val_if_fail (cih != NULL, GKR_PKIX_FAILURE);
- g_return_val_if_fail (data != NULL && n_data != 0, GKR_PKIX_FAILURE);
-
- init_quarks ();
-
- *cih = NULL;
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-5-PBES2-params", data, n_data);
- if (!asn)
- goto done;
-
- res = GKR_PKIX_FAILURE;
- algo = mode = 0;
-
- /* Read in all the encryption type */
- enc_oid = gkr_pkix_asn1_read_oid (asn, "encryptionScheme.algorithm");
- if (!enc_oid)
- goto done;
- if (enc_oid == OID_DES_EDE3_CBC)
- algo = GCRY_CIPHER_3DES;
- else if (enc_oid == OID_DES_CBC)
- algo = GCRY_CIPHER_DES;
- else if (enc_oid == OID_DES_RC2_CBC)
- algo = GCRY_CIPHER_RFC2268_128;
- else if (enc_oid == OID_DES_RC5_CBC)
- /* RC5 doesn't exist in libgcrypt */;
-
- /* Unsupported? */
- if (algo == 0 || gcry_cipher_algo_info (algo, GCRYCTL_TEST_ALGO, NULL, 0) != 0) {
- ret = GKR_PKIX_UNRECOGNIZED;
- goto done;
- }
-
- /* Instantiate our cipher */
- gcry = gcry_cipher_open (cih, algo, GCRY_CIPHER_MODE_CBC, 0);
- if (gcry != 0) {
- g_warning ("couldn't create cipher: %s", gcry_cipher_algo_name (algo));
- goto done;
- }
-
- /* Read out the parameters */
- if (asn1_der_decoding_startEnd (asn, data, n_data, "encryptionScheme.parameters",
- &beg, &end) != ASN1_SUCCESS)
- goto done;
-
- switch (algo) {
- case GCRY_CIPHER_3DES:
- case GCRY_CIPHER_DES:
- r = setup_pkcs5_des_params (data + beg, end - beg + 1, *cih);
- break;
- case GCRY_CIPHER_RFC2268_128:
- r = setup_pkcs5_rc2_params (data + beg, end - beg + 1, *cih);
- break;
- default:
- /* Should have been caught on the oid check above */
- g_assert_not_reached ();
- r = GKR_PKIX_UNRECOGNIZED;
- break;
- };
-
- if (r != GKR_PKIX_SUCCESS) {
- ret = r;
- goto done;
- }
-
- /* Read out the key creation paramaters */
- key_deriv_algo = gkr_pkix_asn1_read_oid (asn, "keyDerivationFunc.algorithm");
- if (!key_deriv_algo)
- goto done;
- if (key_deriv_algo != OID_PBKDF2) {
- g_message ("unsupported key derivation algorithm: %s", g_quark_to_string (key_deriv_algo));
- ret = GKR_PKIX_UNRECOGNIZED;
- goto done;
- }
-
- if (asn1_der_decoding_startEnd (asn, data, n_data, "keyDerivationFunc.parameters",
- &beg, &end) != ASN1_SUCCESS)
- goto done;
-
- ret = setup_pkcs5_pbkdf2_params (password, data + beg, end - beg + 1, algo, *cih);
-
-done:
- if (ret != GKR_PKIX_SUCCESS && *cih) {
- gcry_cipher_close (*cih);
- *cih = NULL;
- }
-
- if (asn)
- asn1_delete_structure (&asn);
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_der_read_cipher_pkcs12_pbe (int cipher_algo, int cipher_mode, const gchar *password,
- const guchar *data, gsize n_data, gcry_cipher_hd_t *cih)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_error_t gcry;
- GkrPkixResult ret;
- const guchar *salt;
- gsize n_salt;
- gsize n_block, n_key;
- guint iterations;
- guchar *key = NULL;
- guchar *iv = NULL;
-
- g_return_val_if_fail (cipher_algo != 0 && cipher_mode != 0, GKR_PKIX_FAILURE);
- g_return_val_if_fail (cih != NULL, GKR_PKIX_FAILURE);
- g_return_val_if_fail (data != NULL && n_data != 0, GKR_PKIX_FAILURE);
-
- *cih = NULL;
- ret = GKR_PKIX_UNRECOGNIZED;
-
- /* Check if we can use this algorithm */
- if (gcry_cipher_algo_info (cipher_algo, GCRYCTL_TEST_ALGO, NULL, 0) != 0)
- goto done;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-12-PbeParams", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- salt = gkr_pkix_asn1_read_content (asn, data, n_data, "salt", &n_salt);
- if (!salt)
- goto done;
- if (!gkr_pkix_asn1_read_uint (asn, "iterations", &iterations))
- goto done;
-
- n_block = gcry_cipher_get_algo_blklen (cipher_algo);
- n_key = gcry_cipher_get_algo_keylen (cipher_algo);
-
- /* Generate IV and key using salt read above */
- if (!gkr_crypto_generate_symkey_pkcs12 (cipher_algo, GCRY_MD_SHA1, password,
- salt, n_salt, iterations, &key,
- n_block > 1 ? &iv : NULL))
- goto done;
-
- gcry = gcry_cipher_open (cih, cipher_algo, cipher_mode, 0);
- if (gcry != 0) {
- g_warning ("couldn't create encryption cipher: %s", gcry_strerror (gcry));
- goto done;
- }
-
- if (iv)
- gcry_cipher_setiv (*cih, iv, n_block);
- gcry_cipher_setkey (*cih, key, n_key);
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (ret != GKR_PKIX_SUCCESS && *cih) {
- gcry_cipher_close (*cih);
- *cih = NULL;
- }
-
- gkr_secure_free (iv);
- gkr_secure_free (key);
-
- if (asn)
- asn1_delete_structure (&asn);
-
- return ret;
-}
diff --git a/pkix/gkr-pkix-der.h b/pkix/gkr-pkix-der.h
deleted file mode 100644
index 0e129080..00000000
--- a/pkix/gkr-pkix-der.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-der.h - parsing and serializing of common crypto DER structures
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKIXDER_H_
-#define GKRPKIXDER_H_
-
-#include <glib.h>
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include "gkr-pkix-types.h"
-
-/* -----------------------------------------------------------------------------
- * PRIVATE KEYS
- */
-
-GkrPkixResult gkr_pkix_der_read_private_key_rsa (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_private_key_dsa (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_private_key_dsa_parts (const guchar *keydata, gsize n_keydata,
- const guchar *params, gsize n_params,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_private_key (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-guchar* gkr_pkix_der_write_private_key_rsa (gcry_sexp_t s_key, gsize *n_data);
-
-guchar* gkr_pkix_der_write_private_key_dsa (gcry_sexp_t s_key, gsize *len);
-
-guchar* gkr_pkix_der_write_private_key_dsa_part (gcry_sexp_t skey, gsize *n_key);
-
-guchar* gkr_pkix_der_write_private_key_dsa_params (gcry_sexp_t skey, gsize *n_params);
-
-guchar* gkr_pkix_der_write_private_key (gcry_sexp_t s_key, gsize *n_data);
-
-
-/* -----------------------------------------------------------------------------
- * PUBLIC KEYS
- */
-
-GkrPkixResult gkr_pkix_der_read_public_key_rsa (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_public_key_dsa (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_public_key_dsa_parts (const guchar *keydata, gsize n_keydata,
- const guchar *params, gsize n_params,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_public_key (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-GkrPkixResult gkr_pkix_der_read_public_key_info (const guchar *data, gsize n_data,
- gcry_sexp_t *s_key);
-
-guchar* gkr_pkix_der_write_public_key_rsa (gcry_sexp_t s_key, gsize *len);
-
-guchar* gkr_pkix_der_write_public_key_dsa (gcry_sexp_t s_key, gsize *len);
-
-guchar* gkr_pkix_der_write_public_key (gcry_sexp_t s_key, gsize *len);
-
-
-/* -----------------------------------------------------------------------------
- * CERTIFICATES
- */
-
-GkrPkixResult gkr_pkix_der_read_certificate (const guchar *data, gsize n_data,
- ASN1_TYPE *asn1);
-
-GkrPkixResult gkr_pkix_der_read_basic_constraints (const guchar *data, gsize n_data,
- gboolean *is_ca, guint *path_len);
-
-GkrPkixResult gkr_pkix_der_read_key_usage (const guchar *data, gsize n_data,
- guint *key_usage);
-
-GkrPkixResult gkr_pkix_der_read_enhanced_usage (const guchar *data, gsize n_data,
- GQuark **oids);
-
-guchar* gkr_pkix_der_write_certificate (ASN1_TYPE asn1, gsize *n_data);
-
-/* -----------------------------------------------------------------------------
- * CIPHERS
- */
-
-GkrPkixResult gkr_pkix_der_read_cipher (GQuark oid_scheme, const gchar *password,
- const guchar *data, gsize n_data,
- gcry_cipher_hd_t *cih);
-
-GkrPkixResult gkr_pkix_der_read_cipher_pkcs5_pbe (int cipher_algo, int cipher_mode,
- int hash_algo, const gchar *password,
- const guchar *data, gsize n_data,
- gcry_cipher_hd_t *cih);
-
-GkrPkixResult gkr_pkix_der_read_cipher_pkcs5_pbes2 (const gchar *password, const guchar *data,
- gsize n_data, gcry_cipher_hd_t *cih);
-
-GkrPkixResult gkr_pkix_der_read_cipher_pkcs12_pbe (int cipher_algo, int cipher_mode,
- const gchar *password, const guchar *data,
- gsize n_data, gcry_cipher_hd_t *cih);
-
-#endif /*GKRPKIXDER_H_*/
diff --git a/pkix/gkr-pkix-marshal.list b/pkix/gkr-pkix-marshal.list
deleted file mode 100644
index de6091f7..00000000
--- a/pkix/gkr-pkix-marshal.list
+++ /dev/null
@@ -1,3 +0,0 @@
-BOOLEAN:UINT,POINTER,UINT
-BOOLEAN:UINT,POINTER,UINT,POINTER
-POINTER:UINT,POINTER,UINT,STRING,UINT
diff --git a/pkix/gkr-pkix-openssl.c b/pkix/gkr-pkix-openssl.c
deleted file mode 100644
index 3b93d327..00000000
--- a/pkix/gkr-pkix-openssl.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-openssl.c - OpenSSL compatibility functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkix-openssl.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-secure-memory.h"
-
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include <glib.h>
-
-const static struct {
- const gchar *desc;
- int algo;
- int mode;
-} openssl_algos[] = {
- { "DES-ECB", GCRY_CIPHER_DES, GCRY_CIPHER_MODE_ECB },
- { "DES-CFB64", GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CFB },
- { "DES-CFB", GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CFB },
- /* DES-CFB1 */
- /* DES-CFB8 */
- /* DESX-CBC */
- /* DES-EDE */
- /* DES-EDE-CBC */
- /* DES-EDE-ECB */
- /* DES-EDE-CFB64 DES-EDE-CFB */
- /* DES-EDE-CFB1 */
- /* DES-EDE-CFB8 */
- /* DES-EDE-OFB */
- /* DES-EDE3 */
- { "DES-EDE3-ECB", GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_ECB },
- { "DES-EDE3-CFB64", GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CFB },
- { "DES-EDE3-CFB", GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CFB },
- /* DES-EDE3-CFB1 */
- /* DES-EDE3-CFB8 */
- { "DES-OFB", GCRY_CIPHER_DES, GCRY_CIPHER_MODE_OFB },
- { "DES-EDE3-OFB", GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_OFB },
- { "DES-CBC", GCRY_CIPHER_DES, GCRY_CIPHER_MODE_CBC },
- { "DES-EDE3-CBC", GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC },
- /* RC2-ECB */
- /* RC2-CBC */
- /* RC2-40-CBC */
- /* RC2-64-CBC */
- /* RC2-CFB64 RC2-CFB */
- /* RC2-OFB */
- { "RC4", GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM },
- { "RC4-40", GCRY_CIPHER_ARCFOUR, GCRY_CIPHER_MODE_STREAM },
- { "IDEA-ECB", GCRY_CIPHER_IDEA, GCRY_CIPHER_MODE_ECB },
- { "IDEA-CFB64", GCRY_CIPHER_IDEA, GCRY_CIPHER_MODE_CFB },
- { "IDEA-OFB", GCRY_CIPHER_IDEA, GCRY_CIPHER_MODE_OFB },
- { "IDEA-CBC", GCRY_CIPHER_IDEA, GCRY_CIPHER_MODE_CBC },
- { "BF-ECB", GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_ECB },
- { "BF-CBC", GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_CBC },
- { "BF-CFB64", GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_CFB },
- { "BF-CFB", GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_CFB },
- { "BF-OFB", GCRY_CIPHER_BLOWFISH, GCRY_CIPHER_MODE_OFB },
- { "CAST5-ECB", GCRY_CIPHER_CAST5, GCRY_CIPHER_MODE_ECB },
- { "CAST5-CBC", GCRY_CIPHER_CAST5, GCRY_CIPHER_MODE_CBC },
- { "CAST5-CFB64", GCRY_CIPHER_CAST5, GCRY_CIPHER_MODE_CFB },
- { "CAST5-CFB", GCRY_CIPHER_CAST5, GCRY_CIPHER_MODE_CFB },
- { "CAST5-OFB", GCRY_CIPHER_CAST5, GCRY_CIPHER_MODE_OFB },
- /* RC5-32-12-16-CBC */
- /* RC5-32-12-16-ECB */
- /* RC5-32-12-16-CFB64 RC5-32-12-16-CFB */
- /* RC5-32-12-16-OFB */
- { "AES-128-ECB", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_ECB },
- { "AES-128-CBC", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC },
- /* AES-128-CFB1 */
- /* AES-128-CFB8 */
- { "AES-128-CFB128", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CFB },
- { "AES-128-CFB", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CFB },
- { "AES-128-OFB", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_OFB },
- { "AES-128-CTR", GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CTR },
- { "AES-192-ECB", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_ECB },
- { "AES-192-CBC", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CBC },
- /* AES-192-CFB1 */
- /* AES-192-CFB8 */
- { "AES-192-CFB128", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CFB },
- { "AES-192-CFB", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CFB },
- { "AES-192-OFB", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_OFB },
- { "AES-192-CTR", GCRY_CIPHER_AES192, GCRY_CIPHER_MODE_CTR },
- { "AES-256-ECB", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_ECB },
- { "AES-256-CBC", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CBC },
- /* AES-256-CFB1 */
- /* AES-256-CFB8 */
- { "AES-256-CFB128", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CFB },
- { "AES-256-CFB", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CFB },
- { "AES-256-OFB", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_OFB },
- { "AES-256-CTR", GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_CTR },
- /* CAMELLIA-128-ECB */
- /* CAMELLIA-128-CBC */
- /* CAMELLIA-128-CFB1 */
- /* CAMELLIA-128-CFB8 */
- /* CAMELLIA-128-CFB128 CAMELLIA-128-CFB */
- /* CAMELLIA-128-OFB */
- /* CAMELLIA-192-ECB */
- /* CAMELLIA-192-CBC */
- /* CAMELLIA-192-CFB1 */
- /* CAMELLIA-192-CFB8 */
- /* CAMELLIA-192-CFB128 CAMELLIA-192-CFB */
- /* CAMELLIA-192_OFB */
- /* CAMELLIA-256-ECB */
- /* CAMELLIA-256-CBC */
- /* CAMELLIA-256-CFB1 */
- /* CAMELLIA-256-CFB8 */
- /* CAMELLIA-256-CFB128 CAMELLIA-256-CFB */
- /* CAMELLIA-256-OFB */
-};
-
-#define N_OPENSSL_ALGOS (sizeof (openssl_algos) / sizeof (openssl_algos[0]))
-static GQuark openssl_quarks[N_OPENSSL_ALGOS] = { 0, };
-static gboolean openssl_quarks_inited = FALSE;
-
-int
-gkr_pkix_openssl_parse_algo (const char *name, int *mode)
-{
- GQuark q;
- int i;
-
- if (!openssl_quarks_inited) {
- for (i = 0; i < N_OPENSSL_ALGOS; ++i)
- openssl_quarks[i] = g_quark_from_static_string (openssl_algos[i].desc);
- openssl_quarks_inited = TRUE;
- }
-
- q = g_quark_try_string (name);
- if (q) {
- for (i = 0; i < N_OPENSSL_ALGOS; ++i) {
- if (q == openssl_quarks[i]) {
- *mode = openssl_algos[i].mode;
- return openssl_algos[i].algo;
- }
- }
- }
-
- return 0;
-}
-
-static gboolean
-parse_dekinfo (const gchar *dek, int *algo, int *mode, guchar **iv)
-{
- gboolean success = FALSE;
- gchar **parts = NULL;
- gcry_error_t gcry;
- gsize ivlen, len;
-
- parts = g_strsplit (dek, ",", 2);
- if (!parts || !parts[0] || !parts[1])
- goto done;
-
- /* Parse the algorithm name */
- *algo = gkr_pkix_openssl_parse_algo (parts[0], mode);
- if (!*algo)
- goto done;
-
- /* Make sure this is usable */
- gcry = gcry_cipher_test_algo (*algo);
- if (gcry)
- goto done;
-
- /* Parse the IV */
- ivlen = len = gcry_cipher_get_algo_blklen (*algo);
- *iv = g_malloc (ivlen);
-
- if (!gkr_crypto_hex_decode (parts[1], strlen(parts[1]), *iv, &len)) {
- g_free (*iv);
- goto done;
- }
-
- if (ivlen != len) {
- g_free (*iv);
- goto done;
- }
-
- success = TRUE;
-
-done:
- g_strfreev (parts);
- return success;
-}
-
-GkrPkixResult
-gkr_pkix_openssl_decrypt_block (const gchar *dekinfo, const gchar *password,
- const guchar *data, gsize n_data,
- guchar **decrypted, gsize *n_decrypted)
-{
- gcry_cipher_hd_t ch;
- guchar *key = NULL;
- guchar *iv = NULL;
- int gcry, ivlen;
- int algo = 0;
- int mode = 0;
-
- if (!parse_dekinfo (dekinfo, &algo, &mode, &iv))
- return GKR_PKIX_UNRECOGNIZED;
-
- ivlen = gcry_cipher_get_algo_blklen (algo);
-
- /* We assume the iv is at least as long as at 8 byte salt */
- g_return_val_if_fail (ivlen >= 8, FALSE);
-
- /* IV is already set from the DEK info */
- if (!gkr_crypto_generate_symkey_simple (algo, GCRY_MD_MD5, password,
- iv, 8, 1, &key, NULL)) {
- g_free (iv);
- return GKR_PKIX_FAILURE;
- }
-
- /* TODO: Use secure memory */
- gcry = gcry_cipher_open (&ch, algo, mode, 0);
- g_return_val_if_fail (!gcry, GKR_PKIX_FAILURE);
-
- gcry = gcry_cipher_setkey (ch, key, gcry_cipher_get_algo_keylen (algo));
- g_return_val_if_fail (!gcry, GKR_PKIX_UNRECOGNIZED);
- gkr_secure_free (key);
-
- /* 16 = 128 bits */
- gcry = gcry_cipher_setiv (ch, iv, ivlen);
- g_return_val_if_fail (!gcry, GKR_PKIX_UNRECOGNIZED);
- g_free (iv);
-
- /* Allocate output area */
- *n_decrypted = n_data;
- *decrypted = gkr_secure_alloc (n_data);
-
- gcry = gcry_cipher_decrypt (ch, *decrypted, *n_decrypted, (void*)data, n_data);
- if (gcry) {
- gkr_secure_free (*decrypted);
- g_return_val_if_reached (GKR_PKIX_FAILURE);
- }
-
- gcry_cipher_close (ch);
-
- return GKR_PKIX_SUCCESS;
-}
diff --git a/pkix/gkr-pkix-openssl.h b/pkix/gkr-pkix-openssl.h
deleted file mode 100644
index ee13f0e5..00000000
--- a/pkix/gkr-pkix-openssl.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-openssl.h - OpenSSL compatibility functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKIOPENSSL_H_
-#define GKRPKIOPENSSL_H_
-
-#include <glib.h>
-
-#include "gkr-pkix-parser.h"
-
-int gkr_pkix_openssl_parse_algo (const gchar *name, int *mode);
-
-GkrPkixResult gkr_pkix_openssl_decrypt_block (const gchar *dekinfo, const gchar *password,
- const guchar *data, gsize n_data,
- guchar **decrypted, gsize *n_decrypted);
-
-#endif /*GKRPKIOPENSSL_H_*/
diff --git a/pkix/gkr-pkix-parser.c b/pkix/gkr-pkix-parser.c
deleted file mode 100644
index 4e5cf98e..00000000
--- a/pkix/gkr-pkix-parser.c
+++ /dev/null
@@ -1,1439 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-parser.c - A parser for PKI objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include "gkr-pkix-asn1.h"
-#include "gkr-pkix-der.h"
-#include "gkr-pkix-marshal.h"
-#include "gkr-pkix-openssl.h"
-#include "gkr-pkix-parser.h"
-#include "gkr-pkix-pem.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-memory.h"
-
-/* -----------------------------------------------------------------------------
- * QUARK DEFINITIONS
- */
-
-/*
- * PEM STRINGS
- * The xxxxx in: ----- BEGIN xxxxx ------
- */
-
-static GQuark PEM_CERTIFICATE;
-static GQuark PEM_RSA_PRIVATE_KEY;
-static GQuark PEM_DSA_PRIVATE_KEY;
-static GQuark PEM_ANY_PRIVATE_KEY;
-static GQuark PEM_ENCRYPTED_PRIVATE_KEY;
-static GQuark PEM_PRIVATE_KEY;
-static GQuark PEM_PKCS7;
-static GQuark PEM_PKCS12;
-
-/*
- * OIDS
- */
-static GQuark OID_PKIX1_RSA;
-static GQuark OID_PKIX1_DSA;
-static GQuark OID_PKCS7_DATA;
-static GQuark OID_PKCS7_SIGNED_DATA;
-static GQuark OID_PKCS7_ENCRYPTED_DATA;
-static GQuark OID_PKCS12_BAG_PKCS8_KEY;
-static GQuark OID_PKCS12_BAG_PKCS8_ENCRYPTED_KEY;
-static GQuark OID_PKCS12_BAG_CERTIFICATE;
-static GQuark OID_PKCS12_BAG_CRL;
-
-static void
-init_quarks (void)
-{
- #define QUARK(name, value) \
- name = g_quark_from_static_string(value)
-
- QUARK (OID_PKIX1_RSA, "1.2.840.113549.1.1.1");
- QUARK (OID_PKIX1_DSA, "1.2.840.10040.4.1");
- QUARK (OID_PKCS7_DATA, "1.2.840.113549.1.7.1");
- QUARK (OID_PKCS7_SIGNED_DATA, "1.2.840.113549.1.7.2");
- QUARK (OID_PKCS7_ENCRYPTED_DATA, "1.2.840.113549.1.7.6");
- QUARK (OID_PKCS12_BAG_PKCS8_KEY, "1.2.840.113549.1.12.10.1.1");
- QUARK (OID_PKCS12_BAG_PKCS8_ENCRYPTED_KEY, "1.2.840.113549.1.12.10.1.2");
- QUARK (OID_PKCS12_BAG_CERTIFICATE, "1.2.840.113549.1.12.10.1.3");
- QUARK (OID_PKCS12_BAG_CRL, "1.2.840.113549.1.12.10.1.4");
-
- QUARK (PEM_CERTIFICATE, "CERTIFICATE");
- QUARK (PEM_PRIVATE_KEY, "PRIVATE KEY");
- QUARK (PEM_RSA_PRIVATE_KEY, "RSA PRIVATE KEY");
- QUARK (PEM_DSA_PRIVATE_KEY, "DSA PRIVATE KEY");
- QUARK (PEM_ANY_PRIVATE_KEY, "ANY PRIVATE KEY");
- QUARK (PEM_ENCRYPTED_PRIVATE_KEY, "ENCRYPTED PRIVATE KEY");
- QUARK (PEM_PKCS7, "PKCS7");
- QUARK (PEM_PKCS12, "PKCS12");
-
- #undef QUARK
-}
-
-/* -----------------------------------------------------------------------------
- * DEFINES
- */
-
-
-typedef struct {
- GQuark location;
- guint n_prompts;
- guint n_passes;
- GSList *seen;
-} PasswordState;
-
-#define PASSWORD_STATE_INIT { 0, 0, 0, NULL}
-
-typedef struct {
- GSList *seen_passwords;
-} GkrPkixParserPrivate;
-
-enum {
- PARSED_PARTIAL,
- PARSED_SEXP,
- PARSED_ASN1,
- ASK_PASSWORD,
- LAST_SIGNAL
-};
-
-#define GKR_PKIX_PARSER_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_PKIX_PARSER, GkrPkixParserPrivate))
-
-G_DEFINE_TYPE (GkrPkixParser, gkr_pkix_parser, G_TYPE_OBJECT);
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static gboolean
-enum_next_password (GkrPkixParser *parser, GQuark loc, gkrid digest,
- GQuark type, const gchar *label, PasswordState *state,
- const gchar **password)
-{
- GkrPkixParserPrivate *pv = GKR_PKIX_PARSER_GET_PRIVATE (parser);
- gboolean first = FALSE;
- gchar *display = NULL;
- guint passes;
- gchar *prompted;
- GSList *l;
-
- if (gkr_async_is_stopping ())
- return FALSE;
-
- /* Is it a new location, reset stuff */
- if (loc != state->location) {
- state->seen = NULL;
- state->n_prompts = 0;
- state->n_passes = 0;
- state->location = loc;
- }
-
- passes = state->n_passes;
- ++state->n_passes;
-
- /*
- * On the first pass always try a NULL and then an empty password.
- * This helps with two things.
- *
- * 1. Often code will call this function, without actually parsing
- * any data yet. So this prevents us prompting the user without
- * knowing it will parse.
- *
- * 2. In case it is actually an empty password, we don't want to
- * prompt the user, just 'decrypt' it. Note that some systems
- * use the null password instead of empty, so we try both.
- */
- if (passes == 0) {
- *password = "";
- return TRUE;
- }
-
- if (passes == 1) {
- *password = NULL;
- return TRUE;
- }
-
- /*
- * Next passes we look through all the passwords that the parser
- * has seen so far. This is because different parts of a encrypted
- * container (such as PKCS#12) often use the same password even
- * if with different algorithms.
- *
- * If we didn't do this and the user chooses enters a password,
- * but doesn't save it, they would get prompted for the same thing
- * over and over, dumb.
- */
- if (!state->seen) {
- state->seen = pv->seen_passwords;
- first = TRUE;
- }
-
- l = state->seen;
-
- /* Return first seen password? */
- if (first && l && l->data) {
- *password = (const gchar*)l->data;
- return TRUE;
- }
-
- /* Return next seen password? */
- if (l && l->next) {
- l = state->seen = state->seen->next;
- if (l->data) {
- *password = (const gchar*)l->data;
- return TRUE;
- }
- }
-
- /*
- * And lastly we actually prompt for a password. This prompt might
- * also lookup saved passwords for this location.
- */
-
- if (!label)
- label = display = gkr_location_to_display (loc);
-
- g_signal_emit (parser, signals[ASK_PASSWORD], 0,
- loc, digest, type, label, state->n_prompts, &prompted);
-
- ++state->n_prompts;
- g_free (display);
-
- /* Stash away any password */
- if (prompted) {
- pv->seen_passwords = g_slist_prepend (pv->seen_passwords, prompted);
- *password = prompted;
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-fire_parsed_partial (GkrPkixParser *parser, GQuark location,
- gkrconstid digest, GQuark type)
-{
- gboolean owned = FALSE;
-
- g_assert (location);
-
- if (!gkr_async_is_stopping ())
- g_signal_emit (parser, signals[PARSED_PARTIAL], 0, location, digest, type, &owned);
-}
-
-static void
-fire_parsed_sexp (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, gcry_sexp_t sexp)
-{
- gboolean owned = FALSE;
-
- g_assert (sexp);
- g_assert (type);
-
- if (!gkr_async_is_stopping ())
- g_signal_emit (parser, signals[PARSED_SEXP], 0, location, digest, type, sexp, &owned);
- if (!owned)
- gcry_sexp_release (sexp);
-}
-
-static void
-fire_parsed_asn1 (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, ASN1_TYPE asn1)
-{
- gboolean owned = FALSE;
-
- g_assert (asn1);
- g_assert (type);
-
- if (!gkr_async_is_stopping ())
- g_signal_emit (parser, signals[PARSED_ASN1], 0, location, digest, type, asn1, &owned);
- if (!owned)
- asn1_delete_structure (&asn1);
-}
-
-static gboolean
-accumulate_password (GSignalInvocationHint *ihint, GValue *return_accu,
- const GValue *handler_return, gpointer data)
-{
- gchar *password;
-
- password = g_value_get_pointer (handler_return);
- if (!password)
- return TRUE;
-
- /* Choose the first password returned by a handler */
- g_value_set_pointer (return_accu, password);
- return FALSE;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_pkix_parser_init (GkrPkixParser *parser)
-{
- GkrPkixParserPrivate *pv = GKR_PKIX_PARSER_GET_PRIVATE (parser);
- pv->seen_passwords = NULL;
-}
-
-static gboolean
-gkr_pkix_parser_parsed_partial (GkrPkixParser *parser, GQuark loc, gkrconstid digest,
- GQuark type)
-{
- /* Didn't take ownership of the data */
- return FALSE;
-}
-
-static gboolean
-gkr_pkix_parser_parsed_asn1 (GkrPkixParser *parser, GQuark loc, gkrconstid digest,
- GQuark type, ASN1_TYPE asn1)
-{
- /* Didn't take ownership of the data */
- return FALSE;
-}
-
-static gboolean
-gkr_pkix_parser_parsed_sexp (GkrPkixParser *parser, GQuark loc, gkrconstid digest,
- GQuark type, gcry_sexp_t sexp)
-{
- /* Didn't take ownership of the data */
- return FALSE;
-}
-
-static gchar*
-gkr_pkix_parser_ask_password (GkrPkixParser *parser, GQuark loc, gkrconstid digest,
- GQuark type, const gchar *details, guint n_prompts)
-{
- return NULL;
-}
-
-static void
-gkr_pkix_parser_finalize (GObject *obj)
-{
- GkrPkixParser *parser = GKR_PKIX_PARSER (obj);
- GkrPkixParserPrivate *pv = GKR_PKIX_PARSER_GET_PRIVATE (parser);
- GSList *l;
-
- for (l = pv->seen_passwords; l; l = g_slist_next (l))
- gkr_secure_strfree (l->data);
- g_slist_free (pv->seen_passwords);
-
- G_OBJECT_CLASS (gkr_pkix_parser_parent_class)->finalize (obj);
-}
-
-static void
-gkr_pkix_parser_class_init (GkrPkixParserClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- init_quarks ();
-
- gkr_pkix_parser_parent_class = g_type_class_peek_parent (klass);
-
- klass->parsed_partial = gkr_pkix_parser_parsed_partial;
- klass->parsed_sexp = gkr_pkix_parser_parsed_sexp;
- klass->parsed_asn1 = gkr_pkix_parser_parsed_asn1;
- klass->ask_password = gkr_pkix_parser_ask_password;
-
- gobject_class->finalize = gkr_pkix_parser_finalize;
-
- signals[PARSED_PARTIAL] = g_signal_new ("parsed-partial", GKR_TYPE_PKIX_PARSER,
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GkrPkixParserClass, parsed_partial),
- g_signal_accumulator_true_handled, NULL, gkr_pkix_marshal_BOOLEAN__UINT_POINTER_UINT,
- G_TYPE_BOOLEAN, 3, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT);
-
- signals[PARSED_ASN1] = g_signal_new ("parsed-asn1", GKR_TYPE_PKIX_PARSER,
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GkrPkixParserClass, parsed_asn1),
- g_signal_accumulator_true_handled, NULL, gkr_pkix_marshal_BOOLEAN__UINT_POINTER_UINT_POINTER,
- G_TYPE_BOOLEAN, 4, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_POINTER);
-
- signals[PARSED_SEXP] = g_signal_new ("parsed-sexp", GKR_TYPE_PKIX_PARSER,
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GkrPkixParserClass, parsed_sexp),
- g_signal_accumulator_true_handled, NULL, gkr_pkix_marshal_BOOLEAN__UINT_POINTER_UINT_POINTER,
- G_TYPE_BOOLEAN, 4, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_POINTER);
-
- /* Due to our use of secure memory, we use a pointer as the signal return type */
- signals[ASK_PASSWORD] = g_signal_new ("ask-password", GKR_TYPE_PKIX_PARSER,
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GkrPkixParserClass, ask_password),
- accumulate_password, NULL, gkr_pkix_marshal_POINTER__UINT_POINTER_UINT_STRING_UINT,
- G_TYPE_POINTER, 5, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT, G_TYPE_STRING, G_TYPE_UINT);
-
- g_type_class_add_private (klass, sizeof (GkrPkixParserPrivate));
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrPkixParser*
-gkr_pkix_parser_new (void)
-{
- return g_object_new (GKR_TYPE_PKIX_PARSER, NULL);
-}
-
-GQuark
-gkr_pkix_parser_get_error_domain (void)
-{
- static GQuark domain = 0;
- if (domain == 0)
- domain = g_quark_from_static_string ("gkr-pkix-parse-error");
- return domain;
-}
-
-gboolean
-gkr_pkix_parser_parse (GkrPkixParser *parser, GQuark loc, const guchar *data,
- gsize n_data, GError **err)
-{
- GkrPkixResult ret;
-
- g_return_val_if_fail (GKR_IS_PKIX_PARSER (parser), FALSE);
- g_return_val_if_fail (loc != 0, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
- g_return_val_if_fail (!err || !*err, FALSE);
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- if (n_data > 0) {
- ret = gkr_pkix_parser_der (parser, loc, data, n_data);
- if (ret == GKR_PKIX_UNRECOGNIZED)
- ret = gkr_pkix_parser_pem (parser, loc, data, n_data);
- }
-
- if (ret == GKR_PKIX_SUCCESS)
- return TRUE;
-
- switch (ret) {
- case GKR_PKIX_UNRECOGNIZED:
- g_set_error (err, GKR_PKIX_PARSE_ERROR, ret, "%s",
- _("Unrecognized or unsupported file."));
- return FALSE;
- case GKR_PKIX_FAILURE:
- g_set_error (err, GKR_PKIX_PARSE_ERROR, ret, "%s",
- _("Could not parse invalid or corrupted file."));
- return FALSE;
- default:
- g_assert_not_reached ();
- return FALSE;
- }
-}
-
-
-GkrPkixResult
-gkr_pkix_parser_der (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data)
-{
- GkrPkixResult ret = GKR_PKIX_UNRECOGNIZED;
-
- /*
- * It's pretty much impossible to know what DER data belongs to
- * without parsing the entire thing. A few bytes of random data
- * will be valid for some ASN.1 spec most of the time.
- *
- * So it's not unreasonable for us to just try and parse all the
- * different formats without trying to determine which one it
- * really is before hand.
- */
-
- ret = gkr_pkix_parser_der_pkcs12 (parser, loc, data, n_data);
- if (ret != GKR_PKIX_UNRECOGNIZED)
- goto done;
-
- ret = gkr_pkix_parser_der_certificate (parser, loc, data, n_data);
- if (ret != GKR_PKIX_UNRECOGNIZED)
- goto done;
-
- ret = gkr_pkix_parser_der_private_key (parser, loc, data, n_data);
- if (ret != GKR_PKIX_UNRECOGNIZED)
- goto done;
-
- ret = gkr_pkix_parser_der_pkcs8 (parser, loc, data, n_data);
- if (ret != GKR_PKIX_UNRECOGNIZED)
- goto done;
-
- ret = gkr_pkix_parser_der_pkcs7 (parser, loc, data, n_data);
- if (ret != GKR_PKIX_UNRECOGNIZED)
- goto done;
-
-done:
- return ret;
-}
-
-gboolean
-gkr_pkix_parser_parse_location (GkrPkixParser *parser, GQuark loc, GError **err)
-{
- GMappedFile *mapped;
- gboolean ret;
- const guchar *data;
- gsize n_data;
- gchar *path;
-
- g_return_val_if_fail (GKR_IS_PKIX_PARSER (parser), FALSE);
- g_return_val_if_fail (loc != 0, FALSE);
- g_return_val_if_fail (!err || !*err, FALSE);
-
- path = gkr_location_to_path (loc);
- if (!path) {
- g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NODEV, "%s",
- _("The disk or drive this file is located on is not present"));
- return FALSE;
- }
-
- mapped = g_mapped_file_new (path, FALSE, err);
- g_free (path);
-
- if (!mapped) {
- /* err is already set */
- return FALSE;
- }
-
- data = (const guchar*)g_mapped_file_get_contents (mapped);
- n_data = g_mapped_file_get_length (mapped);
-
- ret = gkr_pkix_parser_parse (parser, loc, data, n_data, err);
-
- g_mapped_file_free (mapped);
-
- return ret;
-}
-
-/* -----------------------------------------------------------------------------
- * PRIVATE KEYS
- */
-
-GkrPkixResult
-gkr_pkix_parser_der_private_key (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data)
-{
- gkrid digest;
- GkrPkixResult ret;
- gcry_sexp_t s_key = NULL;
-
- digest = gkr_id_new_digest (data, n_data);
-
- ret = gkr_pkix_der_read_private_key_rsa (data, n_data, &s_key);
- if (ret == GKR_PKIX_UNRECOGNIZED)
- ret = gkr_pkix_der_read_private_key_dsa (data, n_data, &s_key);
- if (ret == GKR_PKIX_SUCCESS)
- fire_parsed_sexp (parser, loc, digest, GKR_PKIX_PRIVATE_KEY, s_key);
-
- gkr_id_free (digest);
-
- return ret;
-}
-
-static GkrPkixResult
-parse_der_pkcs8_plain (GkrPkixParser *parser, GQuark loc,
- gkrid digest, const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- int algorithm;
- GQuark key_algo;
- const guchar *keydata;
- gsize n_keydata;
- const guchar *params;
- gsize n_params;
- gcry_sexp_t s_key = NULL;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-8-PrivateKeyInfo", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
- algorithm = 0;
-
- key_algo = gkr_pkix_asn1_read_oid (asn, "privateKeyAlgorithm.algorithm");
- if (!key_algo)
- goto done;
- else if (key_algo == OID_PKIX1_RSA)
- algorithm = GCRY_PK_RSA;
- else if (key_algo == OID_PKIX1_DSA)
- algorithm = GCRY_PK_DSA;
-
- if (!algorithm) {
- ret = GKR_PKIX_UNRECOGNIZED;
- goto done;
- }
-
- keydata = gkr_pkix_asn1_read_content (asn, data, n_data, "privateKey", &n_keydata);
- if (!keydata)
- goto done;
-
- params = gkr_pkix_asn1_read_element (asn, data, n_data, "privateKeyAlgorithm.parameters",
- &n_params);
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (ret == GKR_PKIX_SUCCESS) {
- switch (algorithm) {
- case GCRY_PK_RSA:
- ret = gkr_pkix_der_read_private_key_rsa (keydata, n_keydata, &s_key);
- break;
- case GCRY_PK_DSA:
- /* Try the normal sane format */
- ret = gkr_pkix_der_read_private_key_dsa (keydata, n_keydata, &s_key);
-
- /* Otherwise try the two part format that everyone seems to like */
- if (ret == GKR_PKIX_UNRECOGNIZED && params && n_params)
- ret = gkr_pkix_der_read_private_key_dsa_parts (keydata, n_keydata,
- params, n_params, &s_key);
-
- break;
- default:
- g_message ("invalid or unsupported key type in PKCS#8 key");
- ret = GKR_PKIX_UNRECOGNIZED;
- break;
- };
-
- if (ret == GKR_PKIX_SUCCESS)
- fire_parsed_sexp (parser, loc, digest, GKR_PKIX_PRIVATE_KEY, s_key);
-
- } else if (ret == GKR_PKIX_FAILURE) {
- g_message ("invalid PKCS#8 key");
- }
-
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_parser_der_pkcs8_plain (GkrPkixParser *parser, GQuark location,
- const guchar *data, gsize n_data)
-{
- gkrid digest;
- GkrPkixResult ret;
-
- digest = gkr_id_new_digest (data, n_data);
- ret = parse_der_pkcs8_plain (parser, location, digest, data, n_data);
- gkr_id_free (digest);
-
- return ret;
-}
-
-static GkrPkixResult
-parse_der_pkcs8_encrypted (GkrPkixParser *parser, GQuark location,
- gkrid digest, const guchar *data, gsize n_data)
-{
- PasswordState pstate = PASSWORD_STATE_INIT;
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_cipher_hd_t cih = NULL;
- gcry_error_t gcry;
- GkrPkixResult ret, r;
- GQuark scheme;
- guchar *crypted = NULL;
- const guchar *params;
- gsize n_crypted, n_params;
- const gchar *password;
- gint l;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-8-EncryptedPrivateKeyInfo", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- /* Figure out the type of encryption */
- scheme = gkr_pkix_asn1_read_oid (asn, "encryptionAlgorithm.algorithm");
- if (!scheme)
- goto done;
-
- params = gkr_pkix_asn1_read_element (asn, data, n_data, "encryptionAlgorithm.parameters", &n_params);
-
- /* Loop to try different passwords */
- for (;;) {
-
- g_assert (cih == NULL);
-
- /* If no password is available, we still know it's a key, so 'partial' parse */
- if (!enum_next_password (parser, location, digest, GKR_PKIX_PRIVATE_KEY, NULL, &pstate, &password)) {
- fire_parsed_partial (parser, location, digest, GKR_PKIX_PRIVATE_KEY);
- ret = GKR_PKIX_SUCCESS;
- goto done;
- }
-
- /*
- * Parse the encryption stuff into a cipher.
- */
- r = gkr_pkix_der_read_cipher (scheme, password, params, n_params, &cih);
- if (r == GKR_PKIX_UNRECOGNIZED) {
- ret = GKR_PKIX_FAILURE;
- goto done;
- } else if (r != GKR_PKIX_SUCCESS) {
- ret = r;
- goto done;
- }
-
- crypted = gkr_pkix_asn1_read_value (asn, "encryptedData", &n_crypted,
- gkr_secure_realloc);
- if (!crypted)
- goto done;
-
- gcry = gcry_cipher_decrypt (cih, crypted, n_crypted, NULL, 0);
- gcry_cipher_close (cih);
- cih = NULL;
-
- if (gcry != 0) {
- g_warning ("couldn't decrypt pkcs8 data: %s", gcry_strerror (gcry));
- goto done;
- }
-
- /* Unpad the DER data */
- l = gkr_pkix_asn1_element_length (crypted, n_crypted);
- if (l > 0)
- n_crypted = l;
-
- /* Try to parse the resulting key */
- r = parse_der_pkcs8_plain (parser, location, digest, crypted, n_crypted);
- gkr_secure_free (crypted);
- crypted = NULL;
-
- if (r != GKR_PKIX_UNRECOGNIZED) {
- ret = r;
- break;
- }
-
- /* We assume unrecognized data, is a bad encryption key */
- }
-
-done:
- if (cih)
- gcry_cipher_close (cih);
- if (asn)
- asn1_delete_structure (&asn);
- gkr_secure_free (crypted);
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_parser_der_pkcs8_encrypted (GkrPkixParser *parser, GQuark location,
- const guchar *data, gsize n_data)
-{
- gkrid digest;
- GkrPkixResult ret;
-
- digest = gkr_id_new_digest (data, n_data);
- ret = parse_der_pkcs8_encrypted (parser, location, digest, data, n_data);
- gkr_id_free (digest);
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_parser_der_pkcs8 (GkrPkixParser *parser, GQuark loc, const guchar *data,
- gsize n_data)
-{
- gkrid digest;
- GkrPkixResult ret;
-
- digest = gkr_id_new_digest (data, n_data);
- ret = parse_der_pkcs8_plain (parser, loc, digest, data, n_data);
- if (ret == GKR_PKIX_UNRECOGNIZED)
- ret = parse_der_pkcs8_encrypted (parser, loc, digest, data, n_data);
- gkr_id_free (digest);
-
- return ret;
-}
-
-/* -----------------------------------------------------------------------------
- * X509 stuff
- */
-
-GkrPkixResult
-gkr_pkix_parser_der_certificate (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data)
-{
- gkrid digest;
- GkrPkixResult ret;
- ASN1_TYPE asn1;
-
- digest = gkr_id_new_digest (data, n_data);
-
- ret = gkr_pkix_der_read_certificate (data, n_data, &asn1);
- if(ret == GKR_PKIX_SUCCESS)
- fire_parsed_asn1 (parser, loc, digest, GKR_PKIX_CERTIFICATE, asn1);
- gkr_id_free (digest);
-
- return ret;
-}
-
-/* -----------------------------------------------------------------------------
- * CONTAINER FORMATS
- */
-
-static GkrPkixResult
-parse_pkcs12_cert_bag (GkrPkixParser *parser, GQuark loc, gkrid digest, const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- ASN1_TYPE casn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- const guchar *certificate;
- gsize n_certificate;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-12-CertBag", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- certificate = gkr_pkix_asn1_read_content (asn, data, n_data, "certValue", &n_certificate);
- if (!certificate)
- goto done;
-
- /*
- * Wrapped in an OCTET STRING, so unwrap here, rather than allocating
- * a whole bunch more memory for a full ASN.1 parsing context.
- */
- certificate = gkr_pkix_asn1_element_content (certificate, n_certificate, &n_certificate);
- if (!certificate)
- goto done;
-
- ret = gkr_pkix_der_read_certificate (certificate, n_certificate, &casn);
- if(ret == GKR_PKIX_SUCCESS)
- fire_parsed_asn1 (parser, loc, digest, GKR_PKIX_CERTIFICATE, casn);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
-
- return ret;
-}
-
-static GkrPkixResult
-parse_pkcs12_bag (GkrPkixParser *parser, GQuark loc, gkrid digest, const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret, r;
- int res, count = 0;
- GQuark oid;
- const guchar *element;
- gsize n_element;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-12-SafeContents", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- /* Get the number of elements in this bag */
- res = asn1_number_of_elements (asn, "", &count);
- if (res != ASN1_SUCCESS)
- goto done;
-
- /*
- * Now inside each bag are multiple elements. Who comes up
- * with this stuff?
- *
- * But this is where we draw the line. We only support one
- * element per bag, not multiple elements, not strange
- * nested bags, not fairy queens with magical wands in bags...
- *
- * Just one element per bag.
- */
- if (count >= 1) {
-
- oid = gkr_pkix_asn1_read_oid (asn, "?1.bagId");
- if (!oid)
- goto done;
-
- element = gkr_pkix_asn1_read_content (asn, data, n_data, "?1.bagValue", &n_element);
- if (!element)
- goto done;
-
- /* A normal unencrypted key */
- if (oid == OID_PKCS12_BAG_PKCS8_KEY) {
- r = parse_der_pkcs8_plain (parser, loc, digest, element, n_element);
-
- /* A properly encrypted key */
- } else if (oid == OID_PKCS12_BAG_PKCS8_ENCRYPTED_KEY) {
- r = parse_der_pkcs8_encrypted (parser, loc, digest, element, n_element);
-
- /* A certificate */
- } else if (oid == OID_PKCS12_BAG_CERTIFICATE) {
- r = parse_pkcs12_cert_bag (parser, loc, digest, element, n_element);
-
- /* TODO: OID_PKCS12_BAG_CRL */
- } else {
- r = GKR_PKIX_UNRECOGNIZED;
- }
-
- if (r == GKR_PKIX_FAILURE) {
- ret = r;
- goto done;
- }
- }
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
-
- return ret;
-}
-
-static GkrPkixResult
-parse_pkcs12_encrypted_bag (GkrPkixParser *parser, GQuark loc, gkrid digest,
- const guchar *data, gsize n_data)
-{
- PasswordState pstate = PASSWORD_STATE_INIT;
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- gcry_cipher_hd_t cih = NULL;
- gcry_error_t gcry;
- GkrPkixResult ret, r;
- guchar *crypted = NULL;
- const guchar *params;
- gsize n_params, n_crypted;
- const gchar *password;
- GQuark scheme;
- gint l;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-7-EncryptedData", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- /* Check the encryption schema OID */
- scheme = gkr_pkix_asn1_read_oid (asn, "encryptedContentInfo.contentEncryptionAlgorithm.algorithm");
- if (!scheme)
- goto done;
-
- params = gkr_pkix_asn1_read_element (asn, data, n_data, "encryptedContentInfo.contentEncryptionAlgorithm.parameters", &n_params);
- if (!params)
- goto done;
-
- /* Loop to try different passwords */
- for (;;) {
-
- g_assert (cih == NULL);
-
- if (!enum_next_password (parser, loc, digest, 0, NULL, &pstate, &password)) {
- fire_parsed_partial (parser, loc, digest, 0);
- ret = GKR_PKIX_SUCCESS;
- goto done;
- }
-
- /* Parse the encryption stuff into a cipher. */
- r = gkr_pkix_der_read_cipher (scheme, password, params, n_params, &cih);
- if (r == GKR_PKIX_UNRECOGNIZED) {
- ret = GKR_PKIX_FAILURE;
- goto done;
- } else if (r != GKR_PKIX_SUCCESS) {
- ret = r;
- goto done;
- }
-
- crypted = gkr_pkix_asn1_read_value (asn, "encryptedContentInfo.encryptedContent",
- &n_crypted, gkr_secure_realloc);
- if (!crypted)
- goto done;
-
- gcry = gcry_cipher_decrypt (cih, crypted, n_crypted, NULL, 0);
- gcry_cipher_close (cih);
- cih = NULL;
-
- if (gcry != 0) {
- g_warning ("couldn't decrypt pkcs7 data: %s", gcry_strerror (gcry));
- goto done;
- }
-
- /* Unpad the DER data */
- l = gkr_pkix_asn1_element_length (crypted, n_crypted);
- if (l > 0)
- n_crypted = l;
-
- /* Try to parse the resulting key */
- r = parse_pkcs12_bag (parser, loc, digest, crypted, n_crypted);
- gkr_secure_free (crypted);
- crypted = NULL;
-
- if (r != GKR_PKIX_UNRECOGNIZED) {
- ret = r;
- break;
- }
-
- /* We assume unrecognized data is a bad encryption key */
- }
-
-done:
- if (cih)
- gcry_cipher_close (cih);
- if (asn)
- asn1_delete_structure (&asn);
- gkr_secure_free (crypted);
-
- return ret;
-}
-
-static GkrPkixResult
-parse_pkcs12_safe (GkrPkixParser *parser, GQuark loc, const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret, r;
- const guchar *bag;
- gkrid digest = NULL;
- gsize n_bag;
- gchar *part;
- GQuark oid;
- guint i;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-12-AuthenticatedSafe", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- /*
- * Inside each PKCS12 safe there are multiple bags.
- */
- for (i = 0; TRUE; ++i) {
-
- part = g_strdup_printf ("?%u.contentType", i + 1);
- oid = gkr_pkix_asn1_read_oid (asn, part);
- g_free (part);
-
- /* All done? no more bags */
- if (!oid)
- break;
-
- part = g_strdup_printf ("?%u.content", i + 1);
- bag = gkr_pkix_asn1_read_content (asn, data, n_data, part, &n_bag);
- g_free (part);
-
- if (!bag) /* A parse error */
- goto done;
-
- gkr_id_free (digest);
- digest = gkr_id_new_digest (bag, n_bag);
-
- /* A non encrypted bag, just parse */
- if (oid == OID_PKCS7_DATA) {
-
- /*
- * Wrapped in an OCTET STRING, so unwrap here, rather than allocating
- * a whole bunch more memory for a full ASN.1 parsing context.
- */
- bag = gkr_pkix_asn1_element_content (bag, n_bag, &n_bag);
- if (!bag)
- goto done;
-
- r = parse_pkcs12_bag (parser, loc, digest, bag, n_bag);
-
- /* Encrypted data first needs decryption */
- } else if (oid == OID_PKCS7_ENCRYPTED_DATA) {
- r = parse_pkcs12_encrypted_bag (parser, loc, digest, bag, n_bag);
-
- /* Hmmmm, not sure what this is */
- } else {
- g_warning ("unrecognized type of safe content in pkcs12: %s", g_quark_to_string (oid));
- r = GKR_PKIX_UNRECOGNIZED;
- }
-
- if (r == GKR_PKIX_FAILURE) {
- ret = r;
- goto done;
- }
- }
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- if (digest)
- gkr_id_free (digest);
-
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_parser_der_pkcs12 (GkrPkixParser *parser, GQuark loc, const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- const guchar* content = NULL;
- gsize n_content;
- GQuark oid;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-12-PFX", data, n_data);
- if (!asn)
- goto done;
-
- oid = gkr_pkix_asn1_read_oid (asn, "authSafe.contentType");
- if (!oid)
- goto done;
-
- /* Outer most one must just be plain data */
- if (oid != OID_PKCS7_DATA) {
- g_message ("unsupported safe content type in pkcs12: %s", g_quark_to_string (oid));
- goto done;
- }
-
- content = gkr_pkix_asn1_read_content (asn, data, n_data, "authSafe.content", &n_content);
- if (!content)
- goto done;
-
- /*
- * Wrapped in an OCTET STRING, so unwrap here, rather than allocating
- * a whole bunch more memory for a full ASN.1 parsing context.
- */
- content = gkr_pkix_asn1_element_content (content, n_content, &n_content);
- if (!content)
- goto done;
-
- ret = parse_pkcs12_safe (parser, loc, content, n_content);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-static GkrPkixResult
-parse_pkcs7_signed_data (GkrPkixParser *parser, GQuark loc, gkrid digest,
- const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- ASN1_TYPE casn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- gchar *part;
- const guchar *certificate;
- gsize n_certificate;
- int i;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-7-SignedData", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- for (i = 0; TRUE; ++i) {
-
- part = g_strdup_printf ("certificates.?%u", i + 1);
- certificate = gkr_pkix_asn1_read_element (asn, data, n_data, part, &n_certificate);
- g_free (part);
-
- /* No more certificates? */
- if (!certificate)
- break;
-
- ret = gkr_pkix_der_read_certificate (certificate, n_certificate, &casn);
- if (ret == GKR_PKIX_SUCCESS)
- fire_parsed_asn1 (parser, loc, digest, GKR_PKIX_CERTIFICATE, casn);
- if (ret == GKR_PKIX_FAILURE)
- goto done;
- }
-
- /* TODO: Parse out all the CRLs */
-
- ret = GKR_PKIX_SUCCESS;
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-static GkrPkixResult
-parse_der_pkcs7 (GkrPkixParser *parser, GQuark loc, gkrid digest,
- const guchar *data, gsize n_data)
-{
- ASN1_TYPE asn = ASN1_TYPE_EMPTY;
- GkrPkixResult ret;
- const guchar* content = NULL;
- gsize n_content;
- GQuark oid;
-
- ret = GKR_PKIX_UNRECOGNIZED;
-
- asn = gkr_pkix_asn1_decode ("PKIX1.pkcs-7-ContentInfo", data, n_data);
- if (!asn)
- goto done;
-
- ret = GKR_PKIX_FAILURE;
-
- oid = gkr_pkix_asn1_read_oid (asn, "contentType");
- if (!oid)
- goto done;
-
- /* Outer most one must just be plain data */
- if (oid != OID_PKCS7_SIGNED_DATA) {
- g_message ("unsupported outer content type in pkcs7: %s", g_quark_to_string (oid));
- goto done;
- }
-
- content = gkr_pkix_asn1_read_content (asn, data, n_data, "content", &n_content);
- if (!content)
- goto done;
-
- ret = parse_pkcs7_signed_data (parser, loc, digest, content, n_content);
-
-done:
- if (asn)
- asn1_delete_structure (&asn);
- return ret;
-}
-
-GkrPkixResult
-gkr_pkix_parser_der_pkcs7 (GkrPkixParser *parser, GQuark loc, const guchar *data, gsize n_data)
-{
- GkrPkixResult ret;
- gkrid digest;
-
- digest = gkr_id_new_digest (data, n_data);
- ret = parse_der_pkcs7 (parser, loc, digest, data, n_data);
- gkr_id_free (digest);
-
- return ret;
-}
-
-typedef struct {
- GkrPkixParser *parser;
- GQuark location;
- GkrPkixResult result;
-} ParserCtx;
-
-static GQuark
-pem_to_parsed_type (gint type)
-{
- if (type == PEM_RSA_PRIVATE_KEY ||
- type == PEM_DSA_PRIVATE_KEY ||
- type == PEM_ANY_PRIVATE_KEY ||
- type == PEM_PRIVATE_KEY ||
- type == PEM_ENCRYPTED_PRIVATE_KEY)
- return GKR_PKIX_PRIVATE_KEY;
-
- else if (type == PEM_CERTIFICATE)
- return GKR_PKIX_CERTIFICATE;
-
- else if (type == PEM_PKCS7 ||
- type == PEM_PKCS12)
- return 0;
-
- return 0;
-}
-
-static GkrPkixResult
-parse_plain_pem (GkrPkixParser *parser, GQuark location, gkrid digest,
- GQuark type, const guchar *data, gsize n_data)
-{
- GkrPkixResult res;
- gcry_sexp_t s_key = NULL;
- ASN1_TYPE asn1 = NULL;
- GQuark parsed = 0;
-
- if (type == PEM_RSA_PRIVATE_KEY) {
- parsed = GKR_PKIX_PRIVATE_KEY;
- res = gkr_pkix_der_read_private_key_rsa (data, n_data, &s_key);
-
- } else if (type == PEM_DSA_PRIVATE_KEY) {
- parsed = GKR_PKIX_PRIVATE_KEY;
- res = gkr_pkix_der_read_private_key_dsa (data, n_data, &s_key);
-
- } else if (type == PEM_ANY_PRIVATE_KEY) {
- parsed = GKR_PKIX_PRIVATE_KEY;
- res = gkr_pkix_der_read_private_key (data, n_data, &s_key);
-
- } else if (type == PEM_PRIVATE_KEY) {
- return parse_der_pkcs8_plain (parser, location, digest, data, n_data);
-
- } else if (type == PEM_ENCRYPTED_PRIVATE_KEY) {
- return parse_der_pkcs8_encrypted (parser, location, digest, data, n_data);
-
- } else if (type == PEM_CERTIFICATE) {
- parsed = GKR_PKIX_CERTIFICATE;
- res = gkr_pkix_der_read_certificate (data, n_data, &asn1);
-
- } else if (type == PEM_PKCS7) {
- return parse_der_pkcs7 (parser, location, digest, data, n_data);
-
- } else if (type == PEM_PKCS7) {
- return gkr_pkix_parser_der_pkcs12 (parser, location, data, n_data);
-
- } else {
- res = GKR_PKIX_UNRECOGNIZED;
- }
-
- if (res == GKR_PKIX_SUCCESS) {
- g_assert (s_key || asn1);
- g_assert (parsed);
-
- if (s_key)
- fire_parsed_sexp (parser, location, digest, parsed, s_key);
- else
- fire_parsed_asn1 (parser, location, digest, parsed, asn1);
- }
-
- return res;
-}
-
-static GkrPkixResult
-parse_encrypted_pem (GkrPkixParser *parser, GQuark location, gkrid digest,
- GQuark type, GHashTable *headers, const guchar *data, gsize n_data)
-{
- PasswordState pstate = PASSWORD_STATE_INIT;
- GQuark parsed;
- GkrPkixResult ret;
- const gchar *val;
- const gchar *password;
- guchar *decrypted;
- gsize n_decrypted;
- gboolean res;
- gint l;
-
- g_assert (parser);
- g_assert (headers);
- g_assert (type);
-
- val = g_hash_table_lookup (headers, "DEK-Info");
- if (!val) {
- g_message ("missing encryption header");
- return GKR_PKIX_FAILURE;
- }
-
- parsed = pem_to_parsed_type (type);
- if (!parsed)
- return GKR_PKIX_UNRECOGNIZED;
-
- while (!gkr_async_is_stopping ()) {
-
- /* If no password is available, we still know what it was, so 'partial' parse */
- if (!enum_next_password (parser, location, digest, parsed, NULL, &pstate, &password)) {
- fire_parsed_partial (parser, location, digest, parsed);
- return GKR_PKIX_SUCCESS;
- }
-
- decrypted = NULL;
- n_decrypted = 0;
-
- /* Decrypt, this will result in garble if invalid password */
- res = gkr_pkix_openssl_decrypt_block (val, password, data, n_data,
- &decrypted, &n_decrypted);
- if (!res)
- return GKR_PKIX_FAILURE;
-
- g_assert (decrypted);
-
- /* Unpad the DER data */
- l = gkr_pkix_asn1_element_length (decrypted, n_decrypted);
- if (l > 0)
- n_decrypted = l;
-
- /* Try to parse */
- ret = parse_plain_pem (parser, location, digest, type, decrypted, n_decrypted);
- gkr_secure_free (decrypted);
-
- if (ret != GKR_PKIX_UNRECOGNIZED)
- return ret;
- }
-
- return GKR_PKIX_FAILURE;
-}
-
-static void
-handle_pem_data (GQuark type, const guchar *data, gsize n_data,
- GHashTable *headers, gpointer user_data)
-{
- ParserCtx *ctx = (ParserCtx*)user_data;
- GkrPkixResult res = GKR_PKIX_FAILURE;
- gboolean encrypted = FALSE;
- gkrid digest;
- const gchar *val;
-
- digest = gkr_id_new_digest (data, n_data);
-
- /* See if it's encrypted PEM all openssl like*/
- if (headers) {
- val = g_hash_table_lookup (headers, "Proc-Type");
- if (val && strcmp (val, "4,ENCRYPTED") == 0)
- encrypted = TRUE;
- }
-
- if (encrypted) {
- res = parse_encrypted_pem (ctx->parser, ctx->location, digest,
- type, headers, data, n_data);
- } else {
- res = parse_plain_pem (ctx->parser, ctx->location, digest,
- type, data, n_data);
- }
-
- if (res == GKR_PKIX_FAILURE) {
- ctx->result = res;
- } else if (ctx->result == GKR_PKIX_UNRECOGNIZED)
- ctx->result = res;
-
- gkr_id_free (digest);
-}
-
-GkrPkixResult
-gkr_pkix_parser_pem (GkrPkixParser *parser, GQuark loc, const guchar *data, gsize n_data)
-{
- ParserCtx ctx = { parser, loc, GKR_PKIX_UNRECOGNIZED };
- guint found;
-
- if (n_data == 0)
- return GKR_PKIX_UNRECOGNIZED;
-
- found = gkr_pkix_pem_parse (data, n_data, handle_pem_data, &ctx);
-
- if (found == 0)
- return GKR_PKIX_UNRECOGNIZED;
-
- return ctx.result;
-}
diff --git a/pkix/gkr-pkix-parser.h b/pkix/gkr-pkix-parser.h
deleted file mode 100644
index ecb9685a..00000000
--- a/pkix/gkr-pkix-parser.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-parser.h - A parser for PKIX objects
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_PKIX_PARSER_H__
-#define __GKR_PKIX_PARSER_H__
-
-#include <glib-object.h>
-
-#include "gkr-pkix-types.h"
-
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include "common/gkr-async.h"
-#include "common/gkr-id.h"
-
-G_BEGIN_DECLS
-
-#define GKR_PKIX_PARSE_ERROR (gkr_pkix_parser_get_error_domain ())
-
-#define GKR_TYPE_PKIX_PARSER (gkr_pkix_parser_get_type ())
-#define GKR_PKIX_PARSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_PKIX_PARSER, GkrPkixParser))
-#define GKR_PKIX_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_PKIX_PARSER, GkrPkixObject))
-#define GKR_IS_PKIX_PARSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_PKIX_PARSER))
-#define GKR_IS_PKIX_PARSER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_PKIX_PARSER))
-#define GKR_PKIX_PARSER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_PKIX_PARSER, GkrPkixParserClass))
-
-typedef struct _GkrPkixParser GkrPkixParser;
-typedef struct _GkrPkixParserClass GkrPkixParserClass;
-
-struct _GkrPkixParser {
- GObject parent;
-};
-
-struct _GkrPkixParserClass {
- GObjectClass parent_class;
-
- /* When an object is not fully parsed because of restrictions */
- gboolean (*parsed_partial) (GkrPkixParser *parser, GQuark location,
- gkrconstid digest, GQuark type);
-
- /* When an ASN.1 type object is parsed */
- gboolean (*parsed_asn1) (GkrPkixParser *parser, GQuark location,
- gkrconstid digest, GQuark type,
- ASN1_TYPE asn1);
-
- /* When a gcrypt sexp is parsed */
- gboolean (*parsed_sexp) (GkrPkixParser *parser, GQuark location,
- gkrconstid digest, GQuark type,
- gcry_sexp_t sexp);
-
- /* A callback for each password needed */
- gchar* (*ask_password) (GkrPkixParser *parser, GQuark location,
- gkrconstid digest, GQuark type,
- const gchar *orig_label, guint failed);
-};
-
-GType gkr_pkix_parser_get_type (void) G_GNUC_CONST;
-
-GQuark gkr_pkix_parser_get_error_domain (void) G_GNUC_CONST;
-
-GkrPkixParser* gkr_pkix_parser_new (void);
-
-gboolean gkr_pkix_parser_parse (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data,
- GError **err);
-
-gboolean gkr_pkix_parser_parse_location (GkrPkixParser *parser, GQuark loc,
- GError **err);
-
-GkrPkixResult gkr_pkix_parser_der (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-/* Private keys ------------------------------------------------------------- */
-
-GkrPkixResult gkr_pkix_parser_der_private_key (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs8 (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs8_plain (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs8_encrypted (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-/* X509 --------------------------------------------------------------------- */
-
-GkrPkixResult gkr_pkix_parser_der_certificate (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-#ifdef FUTURE
-
-GkrPkixResult gkr_pkix_parser_der_crl (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data,
- ASN1_TYPE *crl);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs10 (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data,
- ASN1_TYPE *crl);
-#endif
-
-/* Container Formats -------------------------------------------------------- */
-
-GkrPkixResult gkr_pkix_parser_pem (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs12 (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-GkrPkixResult gkr_pkix_parser_der_pkcs7 (GkrPkixParser *parser, GQuark loc,
- const guchar *data, gsize n_data);
-
-G_END_DECLS
-
-#endif /* __GKR_PKIX_PARSER_H__ */
diff --git a/pkix/gkr-pkix-pem.c b/pkix/gkr-pkix-pem.c
deleted file mode 100644
index a897bdc2..00000000
--- a/pkix/gkr-pkix-pem.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-pem.c - PEM base64 encoding helper routines
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-pkix-pem.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-secure-memory.h"
-
-#include <glib.h>
-
-#include <ctype.h>
-#include <string.h>
-
-/*
- * PEM looks like:
- *
- * -----BEGIN RSA PRIVATE KEY-----
- * Proc-Type: 4,ENCRYPTED
- * DEK-Info: DES-EDE3-CBC,704CFFD62FBA03E9
- *
- * 4AV/g0BiTeb07hzo4/Ct47HGhHEshMhBPGJ843QzuAinpZBbg3OxwPsQsLgoPhJL
- * Bg6Oxyz9M4UN1Xlx6Lyo2lRT908mBP6dl/OItLsVArqAzM+e29KHQVNjV1h7xN9F
- * u84tOgZftKun+ZkQUOoRvMLLu4yV4CUraks9tgyXquugGba/tbeyj2MYsC8wwSJX
- * ....
- * -----END RSA PRIVATE KEY-----
- */
-
-#define PEM_SUFF "-----"
-#define PEM_SUFF_L 5
-#define PEM_PREF_BEGIN "-----BEGIN "
-#define PEM_PREF_BEGIN_L 11
-#define PEM_PREF_END "-----END "
-#define PEM_PREF_END_L 9
-
-static void
-parse_header_lines (const gchar *hbeg, const gchar *hend, GHashTable **result)
-{
- gchar **lines, **l;
- gchar *line, *name, *value;
- gchar *copy;
-
- copy = g_strndup (hbeg, hend - hbeg);
- lines = g_strsplit (copy, "\n", 0);
- g_free (copy);
-
- for (l = lines; l && *l; ++l) {
- line = *l;
- g_strstrip (line);
-
- /* Look for the break between name: value */
- value = strchr (line, ':');
- if (value == NULL)
- continue;
-
- *value = 0;
- value = g_strdup (value + 1);
- g_strstrip (value);
-
- name = g_strdup (line);
- g_strstrip (name);
-
- if (!*result)
- *result = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- g_hash_table_replace (*result, name, value);
- }
-
- g_strfreev (lines);
-}
-
-static const gchar*
-pem_find_begin (const gchar *data, gsize n_data, GQuark *type)
-{
- const gchar *pref, *suff;
- gchar *stype;
-
- /* Look for a prefix */
- pref = g_strstr_len ((gchar*)data, n_data, PEM_PREF_BEGIN);
- if (!pref)
- return NULL;
-
- n_data -= (pref - data) + PEM_PREF_BEGIN_L;
- data = pref + PEM_PREF_BEGIN_L;
-
- /* Look for the end of that begin */
- suff = g_strstr_len ((gchar*)data, n_data, PEM_SUFF);
- if (!suff)
- return NULL;
-
- /* Make sure on the same line */
- if (memchr (pref, '\n', suff - pref))
- return NULL;
-
- if (type) {
- *type = 0;
- pref += PEM_PREF_BEGIN_L;
- g_assert (suff > pref);
- stype = g_alloca (suff - pref + 1);
- memcpy (stype, pref, suff - pref);
- stype[suff - pref] = 0;
- *type = g_quark_from_string (stype);
- }
-
- /* The byte after this ---BEGIN--- */
- return suff + PEM_SUFF_L;
-}
-
-static const gchar*
-pem_find_end (const gchar *data, gsize n_data, GQuark type)
-{
- const gchar *stype;
- const gchar *pref;
- gsize n_type;
-
- /* Look for a prefix */
- pref = g_strstr_len (data, n_data, PEM_PREF_END);
- if (!pref)
- return NULL;
-
- n_data -= (pref - data) + PEM_PREF_END_L;
- data = pref + PEM_PREF_END_L;
-
- /* Next comes the type string */
- stype = g_quark_to_string (type);
- n_type = strlen (stype);
- if (strncmp ((gchar*)data, stype, n_type) != 0)
- return NULL;
-
- n_data -= n_type;
- data += n_type;
-
- /* Next comes the suffix */
- if (strncmp ((gchar*)data, PEM_SUFF, PEM_SUFF_L) != 0)
- return NULL;
-
- /* The beginning of this ---END--- */
- return pref;
-}
-
-static gboolean
-pem_parse_block (const gchar *data, gsize n_data, guchar **decoded, gsize *n_decoded,
- GHashTable **headers)
-{
- const gchar *x, *hbeg, *hend;
- const gchar *p, *end;
- gint state = 0;
- guint save = 0;
-
- g_assert (data);
- g_assert (n_data);
-
- g_assert (decoded);
- g_assert (n_decoded);
-
- p = data;
- end = p + n_data;
-
- hbeg = hend = NULL;
-
- /* Try and find a pair of blank lines with only white space between */
- while (hend == NULL) {
- x = memchr (p, '\n', end - p);
- if (!x)
- break;
- ++x;
- while (isspace (*x)) {
- /* Found a second line, with only spaces between */
- if (*x == '\n') {
- hbeg = data;
- hend = x;
- break;
- /* Found a space between two lines */
- } else {
- ++x;
- }
- }
-
- /* Try next line */
- p = x;
- }
-
- /* Headers found? */
- if (hbeg && hend) {
- data = hend;
- n_data = end - data;
- }
-
- *n_decoded = (n_data * 3) / 4 + 1;
- if (gkr_secure_check (data))
- *decoded = gkr_secure_alloc (*n_decoded);
- else
- *decoded = g_malloc (*n_decoded);
- g_return_val_if_fail (*decoded, FALSE);
-
- *n_decoded = g_base64_decode_step (data, n_data, *decoded, &state, &save);
- if (!*n_decoded) {
- gkr_secure_free (*decoded);
- return FALSE;
- }
-
- if (headers && hbeg && hend)
- parse_header_lines (hbeg, hend, headers);
-
- return TRUE;
-}
-
-guint
-gkr_pkix_pem_parse (const guchar *data, gsize n_data,
- GkrPkixPemCallback callback, gpointer user_data)
-{
- const gchar *beg, *end;
- guint nfound = 0;
- guchar *decoded = NULL;
- gsize n_decoded = 0;
- GHashTable *headers = NULL;
- GQuark type;
-
- g_return_val_if_fail (data, 0);
- g_return_val_if_fail (n_data, 0);
- g_return_val_if_fail (callback, 0);
-
- while (n_data > 0 && !gkr_async_is_stopping ()) {
-
- /* This returns the first character after the PEM BEGIN header */
- beg = pem_find_begin ((const gchar*)data, n_data, &type);
- if (!beg)
- break;
-
- g_assert (type);
-
- /* This returns the character position before the PEM END header */
- end = pem_find_end ((const gchar*)beg, n_data - ((const guchar*)beg - data), type);
- if (!end)
- break;
-
- if (gkr_async_is_stopping ())
- break;
-
- if (beg != end) {
- if (pem_parse_block (beg, end - beg, &decoded, &n_decoded, &headers)) {
- (callback) (type, decoded, n_decoded, headers, user_data);
- ++nfound;
- gkr_secure_free (decoded);
- if (headers)
- g_hash_table_remove_all (headers);
- }
- }
-
- /* Try for another block */
- end += PEM_SUFF_L;
- n_data -= (const guchar*)end - data;
- data = (const guchar*)end;
- }
-
- if (headers)
- g_hash_table_destroy (headers);
-
- return nfound;
-}
-
diff --git a/pkix/gkr-pkix-pem.h b/pkix/gkr-pkix-pem.h
deleted file mode 100644
index 93245bb7..00000000
--- a/pkix/gkr-pkix-pem.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-pkix-pem.h - PEM base64 helper routines
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRPKIPEM_H_
-#define GKRPKIPEM_H_
-
-#include <glib.h>
-
-typedef void (*GkrPkixPemCallback) (GQuark type, const guchar *data, gsize n_data,
- GHashTable *headers, gpointer user_data);
-
-guint gkr_pkix_pem_parse (const guchar *data, gsize n_data,
- GkrPkixPemCallback callback,
- gpointer user_data);
-
-#endif /*GKRPKIPEM_H_*/
diff --git a/pkix/gkr-pkix-serialize.c b/pkix/gkr-pkix-serialize.c
deleted file mode 100644
index 41fa1201..00000000
--- a/pkix/gkr-pkix-serialize.c
+++ /dev/null
@@ -1,297 +0,0 @@
-
-#include "config.h"
-
-#include "gkr-pkix-asn1.h"
-#include "gkr-pkix-der.h"
-#include "gkr-pkix-serialize.h"
-#include "gkr-pkix-types.h"
-
-#include "common/gkr-crypto.h"
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include <glib/gi18n.h>
-
-#include <stdlib.h>
-
-/* -----------------------------------------------------------------------------
- * QUARK DEFINITIONS
- */
-
-static GQuark OID_PKIX1_RSA;
-static GQuark OID_PKIX1_DSA;
-static GQuark OID_PKCS12_PBE_3DES_SHA1;
-
-static void
-init_quarks (void)
-{
- #define QUARK(name, value) \
- name = g_quark_from_static_string(value)
-
- QUARK (OID_PKIX1_RSA, "1.2.840.113549.1.1.1");
- QUARK (OID_PKIX1_DSA, "1.2.840.10040.4.1");
- QUARK (OID_PKCS12_PBE_3DES_SHA1, "1.2.840.113549.1.12.1.3");
-
- #undef QUARK
-}
-
-/* ----------------------------------------------------------------------------
- * PUBLIC FUNCTIONS
- */
-
-gboolean
-gkr_pkix_serialize_to_location (GQuark type, gpointer what, const gchar *password,
- GQuark location, GError **err)
-{
- gboolean ret;
- gchar *path;
- guchar *data;
- gsize n_data;
-
- data = gkr_pkix_serialize_to_data (type, what, password, &n_data);
- g_return_val_if_fail (data, FALSE);
-
- path = gkr_location_to_path (location);
- if (!path) {
- g_free (data);
- g_set_error (err, G_FILE_ERROR, G_FILE_ERROR_NODEV, "%s",
- _("The disk or drive this file is located on is not present"));
- return FALSE;
- }
-
- ret = g_file_set_contents (path, (const gchar*)data, n_data, err);
- g_free (path);
- g_free (data);
-
- return ret;
-}
-
-guchar*
-gkr_pkix_serialize_to_data (GQuark type, gpointer what, const gchar *password,
- gsize *n_data)
-{
- if (type == GKR_PKIX_CERTIFICATE)
- return gkr_pkix_serialize_certificate ((ASN1_TYPE)what, n_data);
-
- else if (type == GKR_PKIX_PUBLIC_KEY)
- return gkr_pkix_serialize_public_key ((gcry_sexp_t)what, n_data);
-
- else if (type == GKR_PKIX_PRIVATE_KEY)
- return gkr_pkix_serialize_private_key_pkcs8 ((gcry_sexp_t)what, password, n_data);
-
- g_return_val_if_reached (NULL);
-}
-
-guchar*
-gkr_pkix_serialize_certificate (ASN1_TYPE asn, gsize *n_data)
-{
- g_return_val_if_fail (asn, NULL);
- g_return_val_if_fail (n_data, NULL);
- return gkr_pkix_der_write_certificate (asn, n_data);
-}
-
-guchar*
-gkr_pkix_serialize_public_key (gcry_sexp_t skey, gsize *n_data)
-{
- g_return_val_if_fail (skey, NULL);
- g_return_val_if_fail (n_data, NULL);
- return gkr_pkix_der_write_public_key (skey, n_data);
-}
-
-static gcry_cipher_hd_t
-prepare_and_encode_pkcs8_cipher (ASN1_TYPE asn, const gchar *password, gsize *n_block)
-{
- ASN1_TYPE asn1_params;
- gcry_cipher_hd_t cih;
- guchar salt[8];
- gcry_error_t gcry;
- guchar *key, *iv, *portion;
- gsize n_key, n_portion;
- int iterations, res;
-
- init_quarks ();
-
- /* Make sure the encryption algorithm works */
- g_return_val_if_fail (gcry_cipher_algo_info (OID_PKCS12_PBE_3DES_SHA1,
- GCRYCTL_TEST_ALGO, NULL, 0), NULL);
-
- /* The encryption algorithm */
- if(!gkr_pkix_asn1_write_oid (asn, "encryptionAlgorithm.algorithm",
- OID_PKCS12_PBE_3DES_SHA1))
- g_return_val_if_reached (NULL);
-
- /* Randomize some input for the password based secret */
- iterations = 1000 + (int) (1000.0 * rand () / (RAND_MAX + 1.0));
- gcry_create_nonce (salt, sizeof (salt));
-
- /* Allocate space for the key and iv */
- n_key = gcry_cipher_get_algo_keylen (GCRY_CIPHER_3DES);
- *n_block = gcry_cipher_get_algo_blklen (GCRY_MD_SHA1);
- g_return_val_if_fail (n_key && *n_block, NULL);
-
- if (!gkr_crypto_generate_symkey_pkcs12 (GCRY_CIPHER_3DES, GCRY_MD_SHA1,
- password, salt, sizeof (salt),
- iterations, &key, &iv))
- g_return_val_if_reached (NULL);
-
- /* Now write out the parameters */
- res = asn1_create_element (gkr_pkix_asn1_get_pkix_asn1type (),
- "PKIX1.pkcs-12-PbeParams", &asn1_params);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
- if (!gkr_pkix_asn1_write_value (asn1_params, "salt", salt, sizeof (salt)))
- g_return_val_if_reached (NULL);
- if (!gkr_pkix_asn1_write_uint (asn1_params, "iterations", iterations))
- g_return_val_if_reached (NULL);
- portion = gkr_pkix_asn1_encode (asn1_params, "", &n_portion, NULL);
- g_return_val_if_fail (portion, NULL);
-
- if (!gkr_pkix_asn1_write_value (asn, "encryptionAlgorithm.parameters", portion, n_portion))
- g_return_val_if_reached (NULL);
- g_free (portion);
-
- /* Now make a cipher that matches what we wrote out */
- gcry = gcry_cipher_open (&cih, GCRY_CIPHER_3DES, GCRY_CIPHER_MODE_CBC, 0);
- g_return_val_if_fail (gcry == 0, NULL);
- g_return_val_if_fail (cih, NULL);
-
- gcry_cipher_setiv (cih, iv, *n_block);
- gcry_cipher_setkey (cih, key, n_key);
-
- gkr_secure_free (iv);
- gkr_secure_free (key);
- asn1_delete_structure (&asn1_params);
-
- return cih;
-}
-
-static guchar*
-encode_pkcs8_private_key (gcry_sexp_t skey, gsize *n_data)
-{
- ASN1_TYPE asn;
- int res, algorithm;
- gboolean is_priv;
- GQuark oid;
- guchar *params, *key, *data;
- gsize n_params, n_key;
-
- init_quarks ();
-
- /* Parse and check that the key is for real */
- if (!gkr_crypto_skey_parse (skey, &algorithm, &is_priv, NULL))
- g_return_val_if_reached (NULL);
- g_return_val_if_fail (is_priv == TRUE, NULL);
-
- res = asn1_create_element (gkr_pkix_asn1_get_pkix_asn1type (),
- "PKIX1.pkcs-8-PrivateKeyInfo", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- /* Write out the version */
- if (!gkr_pkix_asn1_write_uint (asn, "version", 1))
- g_return_val_if_reached (NULL);
-
- /* Per algorithm differences */
- switch (algorithm)
- {
- /* RSA gets encoded in a standard simple way */
- case GCRY_PK_RSA:
- oid = OID_PKIX1_RSA;
- params = NULL;
- n_params = 0;
- key = gkr_pkix_der_write_private_key_rsa (skey, &n_key);
- break;
-
- /* DSA gets incoded with the params seperate */
- case GCRY_PK_DSA:
- oid = OID_PKIX1_DSA;
- key = gkr_pkix_der_write_private_key_dsa_part (skey, &n_key);
- params = gkr_pkix_der_write_private_key_dsa_params (skey, &n_params);
- break;
-
- default:
- g_warning ("trying to serialize unsupported private key algorithm: %d", algorithm);
- return NULL;
- };
-
- /* Write out the algorithm */
- if (!gkr_pkix_asn1_write_oid (asn, "privateKeyAlgorithm.algorithm", oid))
- g_return_val_if_reached (NULL);
-
- /* Write out the parameters */
- if (!gkr_pkix_asn1_write_value (asn, "privateKeyAlgorithm.parameters", params, n_params))
- g_return_val_if_reached (NULL);
- gkr_secure_free (params);
-
- /* Write out the key portion */
- if (!gkr_pkix_asn1_write_value (asn, "privateKey", key, n_key))
- g_return_val_if_reached (NULL);
- gkr_secure_free (key);
-
- /* Add an empty attributes field */
- if (!gkr_pkix_asn1_write_value (asn, "attributes", NULL, 0))
- g_return_val_if_reached (NULL);
-
- data = gkr_pkix_asn1_encode (asn, "", n_data, NULL);
- g_return_val_if_fail (data, NULL);
-
- asn1_delete_structure (&asn);
-
- return data;
-}
-
-guchar*
-gkr_pkix_serialize_private_key_pkcs8 (gcry_sexp_t skey, const gchar *password,
- gsize *n_data)
-{
- gcry_error_t gcry;
- gcry_cipher_hd_t cih;
- ASN1_TYPE asn;
- int res;
- guchar *key, *data;
- gsize n_key, block = 0;
-
- /* Encode the key in normal pkcs8 fashion */
- key = encode_pkcs8_private_key (skey, &n_key);
-
- /* If no encryption then just return that */
- if(!password || !password[0]) {
- *n_data = n_key;
- return key;
- }
-
- res = asn1_create_element (gkr_pkix_asn1_get_pkix_asn1type (),
- "PKIX1.pkcs-8-EncryptedPrivateKeyInfo", &asn);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- /* Create a and write out a cipher used for encryption */
- cih = prepare_and_encode_pkcs8_cipher (asn, password, &block);
- g_return_val_if_fail (cih, NULL);
-
- /* Pad the block of data */
- if(block > 1) {
- gsize pad;
- guchar *padded;
-
- pad = block - (n_key % block);
- if (pad == 0)
- pad = block;
- padded = g_realloc (key, n_key + pad);
- memset (padded + n_key, pad, pad);
- key = padded;
- n_key += pad;
- }
-
- gcry = gcry_cipher_encrypt (cih, key, n_key, NULL, 0);
- g_return_val_if_fail (gcry == 0, NULL);
-
- gcry_cipher_close (cih);
-
- res = asn1_write_value (asn, "encryptedData", key, n_key);
- g_return_val_if_fail (res == ASN1_SUCCESS, NULL);
-
- data = gkr_pkix_asn1_encode (asn, "", n_data, NULL);
- g_return_val_if_fail (data, NULL);
-
- asn1_delete_structure (&asn);
-
- return data;
-}
diff --git a/pkix/gkr-pkix-serialize.h b/pkix/gkr-pkix-serialize.h
deleted file mode 100644
index 55f30dc5..00000000
--- a/pkix/gkr-pkix-serialize.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef GKRPKIXSERIALIZE_H_
-#define GKRPKIXSERIALIZE_H_
-
-#include <glib.h>
-
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-gboolean gkr_pkix_serialize_to_location (GQuark type, gpointer what,
- const gchar *password,
- GQuark location, GError **err);
-
-guchar* gkr_pkix_serialize_to_data (GQuark type, gpointer what,
- const gchar *password,
- gsize *n_data);
-
-guchar* gkr_pkix_serialize_certificate (ASN1_TYPE asn, gsize *n_data);
-
-guchar* gkr_pkix_serialize_public_key (gcry_sexp_t skey, gsize *n_data);
-
-guchar* gkr_pkix_serialize_private_key_pkcs8 (gcry_sexp_t skey, const gchar *password,
- gsize *n_data);
-
-#endif /*GKRPKIXSERIALIZE_H_*/
diff --git a/pkix/gkr-pkix-types.h b/pkix/gkr-pkix-types.h
deleted file mode 100644
index f22f12ea..00000000
--- a/pkix/gkr-pkix-types.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef GKRPKIXTYPES_H_
-#define GKRPKIXTYPES_H_
-
-typedef enum _GkrPkixResult {
- GKR_PKIX_FAILURE = -1,
- GKR_PKIX_UNRECOGNIZED = 0,
- GKR_PKIX_SUCCESS = 1
-} GkrPkixResult;
-
-/*
- * There are switch statements that use these in various
- * places in the code. When adding a type, make sure
- * to search them out and add cases for the new type.
- */
-#define GKR_PKIX_CERTIFICATE (g_quark_from_static_string ("certificate"))
-#define GKR_PKIX_PUBLIC_KEY (g_quark_from_static_string ("public-key"))
-#define GKR_PKIX_PRIVATE_KEY (g_quark_from_static_string ("private-key"))
-
-#endif /*GKRPKIXTYPES_H_*/
diff --git a/pkix/pk.asn b/pkix/pk.asn
deleted file mode 100644
index f347c198..00000000
--- a/pkix/pk.asn
+++ /dev/null
@@ -1,103 +0,0 @@
-PK { }
-
-DEFINITIONS EXPLICIT TAGS ::=
-
-BEGIN
-
--- This file contains parts of PKCS-1 structures and some stuff
--- required for DSA keys.
-
-RSAPublicKey ::= SEQUENCE {
- modulus INTEGER, -- n
- publicExponent INTEGER -- e
-}
-
---
--- Representation of RSA private key with information for the
--- CRT algorithm.
---
-RSAPrivateKey ::= SEQUENCE {
- version Version,
- modulus INTEGER, -- (Usually large) n
- publicExponent INTEGER, -- (Usually small) e
- privateExponent INTEGER, -- (Usually large) d
- prime1 INTEGER, -- (Usually large) p
- prime2 INTEGER, -- (Usually large) q
- exponent1 INTEGER, -- (Usually large) d mod (p-1)
- exponent2 INTEGER, -- (Usually large) d mod (q-1)
- coefficient INTEGER, -- (Usually large) (inverse of q) mod p
- otherPrimeInfos OtherPrimeInfos OPTIONAL
-}
-
-Version ::= INTEGER { two-prime(0), multi(1) }
--- version must be multi if otherPrimeInfos present --
-
-OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
-
-OtherPrimeInfo ::= SEQUENCE {
- prime INTEGER, -- ri
- exponent INTEGER, -- di
- coefficient INTEGER -- ti
-}
-
--- for signature calculation
--- added by nmav
-
-AlgorithmIdentifier ::= SEQUENCE {
- algorithm OBJECT IDENTIFIER,
- parameters ANY DEFINED BY algorithm OPTIONAL
-}
- -- contains a value of the type
- -- registered for use with the
- -- algorithm object identifier value
-
-DigestInfo ::= SEQUENCE {
- digestAlgorithm DigestAlgorithmIdentifier,
- digest Digest
-}
-
-DigestAlgorithmIdentifier ::= AlgorithmIdentifier
-
-Digest ::= OCTET STRING
-
-DSAPublicPart ::= INTEGER
-
-DSAPublicKey ::= SEQUENCE {
- version INTEGER, -- should be zero
- p INTEGER,
- q INTEGER,
- g INTEGER,
- Y INTEGER -- public
-}
-
-DSAParameters ::= SEQUENCE {
- p INTEGER,
- q INTEGER,
- g INTEGER
-}
-
-DSASignatureValue ::= SEQUENCE {
- r INTEGER,
- s INTEGER
-}
-
-DSAPrivatePart ::= INTEGER
-
-DSAPrivateKey ::= SEQUENCE {
- version INTEGER, -- should be zero
- p INTEGER,
- q INTEGER,
- g INTEGER,
- Y INTEGER, -- public
- priv INTEGER
-}
-
--- from PKCS#3
-DHParameter ::= SEQUENCE {
- prime INTEGER, -- p
- base INTEGER, -- g
- privateValueLength INTEGER OPTIONAL
-}
-
-
-END
diff --git a/pkix/pkix.asn b/pkix/pkix.asn
deleted file mode 100644
index 1e5d6571..00000000
--- a/pkix/pkix.asn
+++ /dev/null
@@ -1,1230 +0,0 @@
-
-PKIX1 { }
-
-DEFINITIONS IMPLICIT TAGS ::=
-
-BEGIN
-
--- This contains both PKIX1Implicit88 and RFC2630 ASN.1 modules.
-
--- ISO arc for standard certificate and CRL extensions
-
-id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29}
-
-
--- authority key identifier OID and syntax
-
-id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
-
-AuthorityKeyIdentifier ::= SEQUENCE {
- keyIdentifier [0] KeyIdentifier OPTIONAL,
- authorityCertIssuer [1] GeneralNames OPTIONAL,
- authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
- -- authorityCertIssuer and authorityCertSerialNumber shall both
- -- be present or both be absgent
-
-KeyIdentifier ::= OCTET STRING
-
--- subject key identifier OID and syntax
-
-id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 }
-
-SubjectKeyIdentifier ::= KeyIdentifier
-
--- key usage extension OID and syntax
-
-id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
-
-KeyUsage ::= BIT STRING {
- digitalSignature (0),
- nonRepudiation (1),
- keyEncipherment (2),
- dataEncipherment (3),
- keyAgreement (4),
- keyCertSign (5),
- cRLSign (6),
- encipherOnly (7),
- decipherOnly (8) }
-
--- private key usage period extension OID and syntax
-
-id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 }
-
-PrivateKeyUsagePeriod ::= SEQUENCE {
- notBefore [0] GeneralizedTime OPTIONAL,
- notAfter [1] GeneralizedTime OPTIONAL }
- -- either notBefore or notAfter shall be present
-
--- certificate policies extension OID and syntax
-
-id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }
-
-CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation
-
-PolicyInformation ::= SEQUENCE {
- policyIdentifier CertPolicyId,
- policyQualifiers SEQUENCE SIZE (1..MAX) OF
- PolicyQualifierInfo OPTIONAL }
-
-CertPolicyId ::= OBJECT IDENTIFIER
-
-PolicyQualifierInfo ::= SEQUENCE {
- policyQualifierId PolicyQualifierId,
- qualifier ANY DEFINED BY policyQualifierId }
-
--- Implementations that recognize additional policy qualifiers shall
--- augment the following definition for PolicyQualifierId
-
-PolicyQualifierId ::=
- OBJECT IDENTIFIER -- ( id-qt-cps | id-qt-unotice )
-
--- CPS pointer qualifier
-
-CPSuri ::= IA5String
-
--- user notice qualifier
-
-UserNotice ::= SEQUENCE {
- noticeRef NoticeReference OPTIONAL,
- explicitText DisplayText OPTIONAL}
-
-NoticeReference ::= SEQUENCE {
- organization DisplayText,
- noticeNumbers SEQUENCE OF INTEGER }
-
-DisplayText ::= CHOICE {
- visibleString VisibleString (SIZE (1..200)),
- bmpString BMPString (SIZE (1..200)),
- utf8String UTF8String (SIZE (1..200)) }
-
--- policy mapping extension OID and syntax
-
-id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 }
-
-PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
- issuerDomainPolicy CertPolicyId,
- subjectDomainPolicy CertPolicyId }
-
--- subject alternative name extension OID and syntax
-
--- Directory string type --
-
-DirectoryString ::= CHOICE {
- teletexString TeletexString (SIZE (1..MAX)),
- printableString PrintableString (SIZE (1..MAX)),
- universalString UniversalString (SIZE (1..MAX)),
- utf8String UTF8String (SIZE (1..MAX)),
- bmpString BMPString (SIZE(1..MAX)),
- -- IA5String is added here to handle old UID encoded as ia5String --
- -- See tests/userid/ for more information. It shouldn't be here, --
- -- so if it causes problems, considering dropping it. --
- ia5String IA5String (SIZE(1..MAX)) }
-
-id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 }
-
-SubjectAltName ::= GeneralNames
-
-GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
-
-GeneralName ::= CHOICE {
- otherName [0] AnotherName,
- rfc822Name [1] IA5String,
- dNSName [2] IA5String,
- x400Address [3] ORAddress,
--- Changed to work with the libtasn1 parser.
- directoryName [4] EXPLICIT RDNSequence, --Name,
- ediPartyName [5] EDIPartyName,
- uniformResourceIdentifier [6] IA5String,
- iPAddress [7] OCTET STRING,
- registeredID [8] OBJECT IDENTIFIER }
-
--- AnotherName replaces OTHER-NAME ::= TYPE-IDENTIFIER, as
--- TYPE-IDENTIFIER is not supported in the '88 ASN.1 syntax
-
-AnotherName ::= SEQUENCE {
- type-id OBJECT IDENTIFIER,
- value [0] EXPLICIT ANY DEFINED BY type-id }
-
-EDIPartyName ::= SEQUENCE {
- nameAssigner [0] DirectoryString OPTIONAL,
- partyName [1] DirectoryString }
-
--- issuer alternative name extension OID and syntax
-
-id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 }
-
-IssuerAltName ::= GeneralNames
-
-id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }
-
-SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
-
--- basic constraints extension OID and syntax
-
-id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }
-
-BasicConstraints ::= SEQUENCE {
- cA BOOLEAN DEFAULT FALSE,
- pathLenConstraint INTEGER (0..MAX) OPTIONAL }
-
--- name constraints extension OID and syntax
-
-id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 }
-
-NameConstraints ::= SEQUENCE {
- permittedSubtrees [0] GeneralSubtrees OPTIONAL,
- excludedSubtrees [1] GeneralSubtrees OPTIONAL }
-
-GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
-
-GeneralSubtree ::= SEQUENCE {
- base GeneralName,
- minimum [0] BaseDistance DEFAULT 0,
- maximum [1] BaseDistance OPTIONAL }
-
-BaseDistance ::= INTEGER (0..MAX)
-
--- policy constraints extension OID and syntax
-
-id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 }
-
-PolicyConstraints ::= SEQUENCE {
- requireExplicitPolicy [0] SkipCerts OPTIONAL,
- inhibitPolicyMapping [1] SkipCerts OPTIONAL }
-
-SkipCerts ::= INTEGER (0..MAX)
-
--- CRL distribution points extension OID and syntax
-
-id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31}
-
-CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
-
-DistributionPoint ::= SEQUENCE {
- distributionPoint [0] EXPLICIT DistributionPointName OPTIONAL,
- reasons [1] ReasonFlags OPTIONAL,
- cRLIssuer [2] GeneralNames OPTIONAL
-}
-
-DistributionPointName ::= CHOICE {
- fullName [0] GeneralNames,
- nameRelativeToCRLIssuer [1] RelativeDistinguishedName
-}
-
-ReasonFlags ::= BIT STRING {
- unused (0),
- keyCompromise (1),
- cACompromise (2),
- affiliationChanged (3),
- superseded (4),
- cessationOfOperation (5),
- certificateHold (6),
- privilegeWithdrawn (7),
- aACompromise (8) }
-
--- extended key usage extension OID and syntax
-
-id-ce-extKeyUsage OBJECT IDENTIFIER ::= {id-ce 37}
-
-ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
-
-KeyPurposeId ::= OBJECT IDENTIFIER
-
--- extended key purpose OIDs
-id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 }
-id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 }
-id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 }
-id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
-id-kp-ipsecEndSystem OBJECT IDENTIFIER ::= { id-kp 5 }
-id-kp-ipsecTunnel OBJECT IDENTIFIER ::= { id-kp 6 }
-id-kp-ipsecUser OBJECT IDENTIFIER ::= { id-kp 7 }
-id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 }
-
--- authority info access
-
-id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
-
-AuthorityInfoAccessSyntax ::=
- SEQUENCE SIZE (1..MAX) OF AccessDescription
-
-AccessDescription ::= SEQUENCE {
- accessMethod OBJECT IDENTIFIER,
- accessLocation GeneralName }
-
--- CRL number extension OID and syntax
-
-id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }
-
-CRLNumber ::= INTEGER (0..MAX)
-
--- issuing distribution point extension OID and syntax
-
-id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }
-
-IssuingDistributionPoint ::= SEQUENCE {
- distributionPoint [0] DistributionPointName OPTIONAL,
- onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
- onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
- onlySomeReasons [3] ReasonFlags OPTIONAL,
- indirectCRL [4] BOOLEAN DEFAULT FALSE }
-
-
-id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }
-
--- deltaCRLIndicator ::= BaseCRLNumber
-
-BaseCRLNumber ::= CRLNumber
-
--- CRL reasons extension OID and syntax
-
-id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }
-
-CRLReason ::= ENUMERATED {
- unspecified (0),
- keyCompromise (1),
- cACompromise (2),
- affiliationChanged (3),
- superseded (4),
- cessationOfOperation (5),
- certificateHold (6),
- removeFromCRL (8) }
-
--- certificate issuer CRL entry extension OID and syntax
-
-id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }
-
-CertificateIssuer ::= GeneralNames
-
--- hold instruction extension OID and syntax
-
-id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }
-
-HoldInstructionCode ::= OBJECT IDENTIFIER
-
--- ANSI x9 holdinstructions
-
--- ANSI x9 arc holdinstruction arc
-holdInstruction OBJECT IDENTIFIER ::=
- {joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2}
-
--- ANSI X9 holdinstructions referenced by this standard
-id-holdinstruction-none OBJECT IDENTIFIER ::=
- {holdInstruction 1} -- deprecated
-id-holdinstruction-callissuer OBJECT IDENTIFIER ::=
- {holdInstruction 2}
-id-holdinstruction-reject OBJECT IDENTIFIER ::=
- {holdInstruction 3}
-
--- invalidity date CRL entry extension OID and syntax
-
-id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }
-
-InvalidityDate ::= GeneralizedTime
-
-
--- --------------------------------------
--- EXPLICIT
--- --------------------------------------
-
--- UNIVERSAL Types defined in '93 and '98 ASN.1
--- but required by this specification
-
-VisibleString ::= [UNIVERSAL 26] IMPLICIT OCTET STRING
-
-NumericString ::= [UNIVERSAL 18] IMPLICIT OCTET STRING
-
-IA5String ::= [UNIVERSAL 22] IMPLICIT OCTET STRING
-
-TeletexString ::= [UNIVERSAL 20] IMPLICIT OCTET STRING
-
-PrintableString ::= [UNIVERSAL 19] IMPLICIT OCTET STRING
-
-UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
- -- UniversalString is defined in ASN.1:1993
-
-BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING
- -- BMPString is the subtype of UniversalString and models
- -- the Basic Multilingual Plane of ISO/IEC/ITU 10646-1
-
-UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
- -- The content of this type conforms to RFC 2279.
-
-
--- PKIX specific OIDs
-
-id-pkix OBJECT IDENTIFIER ::=
- { iso(1) identified-organization(3) dod(6) internet(1)
- security(5) mechanisms(5) pkix(7) }
-
--- PKIX arcs
-
-id-pe OBJECT IDENTIFIER ::= { id-pkix 1 }
- -- arc for private certificate extensions
-id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
- -- arc for policy qualifier types
-id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
- -- arc for extended key purpose OIDS
-id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
- -- arc for access descriptors
-
--- policyQualifierIds for Internet policy qualifiers
-
-id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
- -- OID for CPS qualifier
-id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
- -- OID for user notice qualifier
-
--- access descriptor definitions
-
-id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
-id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
-
--- attribute data types --
-
-Attribute ::= SEQUENCE {
- type AttributeType,
- values SET OF AttributeValue
- -- at least one value is required --
-}
-
-AttributeType ::= OBJECT IDENTIFIER
-
-AttributeValue ::= ANY DEFINED BY type
-
-AttributeTypeAndValue ::= SEQUENCE {
- type AttributeType,
- value AttributeValue }
-
--- suggested naming attributes: Definition of the following
--- information object set may be augmented to meet local
--- requirements. Note that deleting members of the set may
--- prevent interoperability with conforming implementations.
--- presented in pairs: the AttributeType followed by the
--- type definition for the corresponding AttributeValue
-
--- Arc for standard naming attributes
-id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4}
-
--- Attributes of type NameDirectoryString
-id-at-initials AttributeType ::= { id-at 43 }
-X520initials ::= DirectoryString
-
-id-at-generationQualifier AttributeType ::= { id-at 44 }
-X520generationQualifier ::= DirectoryString
-
-id-at-surname AttributeType ::= { id-at 4 }
-X520surName ::= DirectoryString
-
-id-at-givenName AttributeType ::= { id-at 42 }
-X520givenName ::= DirectoryString
-
-id-at-name AttributeType ::= { id-at 41 }
-X520name ::= DirectoryString
-
-id-at-commonName AttributeType ::= {id-at 3}
-X520CommonName ::= DirectoryString
-
-id-at-localityName AttributeType ::= {id-at 7}
-X520LocalityName ::= DirectoryString
-
-id-at-stateOrProvinceName AttributeType ::= {id-at 8}
-X520StateOrProvinceName ::= DirectoryString
-
-id-at-organizationName AttributeType ::= {id-at 10}
-X520OrganizationName ::= DirectoryString
-
-id-at-organizationalUnitName AttributeType ::= {id-at 11}
-X520OrganizationalUnitName ::= DirectoryString
-
-id-at-title AttributeType ::= {id-at 12}
-X520Title ::= DirectoryString
-
-id-at-description AttributeType ::= {id-at 13}
-X520Description ::= DirectoryString
-
-id-at-dnQualifier AttributeType ::= {id-at 46}
-X520dnQualifier ::= PrintableString
-
-id-at-countryName AttributeType ::= {id-at 6}
-X520countryName ::= PrintableString (SIZE (2)) -- IS 3166 codes
-
-id-at-serialNumber AttributeType ::= {id-at 5}
-X520serialNumber ::= PrintableString
-
-id-at-telephoneNumber AttributeType ::= {id-at 20}
-X520telephoneNumber ::= PrintableString
-
-id-at-facsimileTelephoneNumber AttributeType ::= {id-at 23}
-X520facsimileTelephoneNumber ::= PrintableString
-
-id-at-pseudonym AttributeType ::= {id-at 65}
-X520pseudonym ::= DirectoryString
-
-id-at-name AttributeType ::= {id-at 41}
-X520name ::= DirectoryString
-
-id-at-streetAddress AttributeType ::= {id-at 9}
-X520streetAddress ::= DirectoryString
-
-id-at-postalAddress AttributeType ::= {id-at 16}
-X520postalAddress ::= PostalAddress
-
-PostalAddress ::= SEQUENCE OF DirectoryString
-
-
- -- Legacy attributes
-
-pkcs OBJECT IDENTIFIER ::=
- { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) }
-
-pkcs-9 OBJECT IDENTIFIER ::=
- { pkcs 9 }
-
-
-emailAddress AttributeType ::= { pkcs-9 1 }
-
-Pkcs9email ::= IA5String (SIZE (1..ub-emailaddress-length))
-
--- naming data types --
-
-Name ::= CHOICE { -- only one possibility for now --
- rdnSequence RDNSequence }
-
-RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
-
-DistinguishedName ::= RDNSequence
-
-RelativeDistinguishedName ::=
- SET SIZE (1 .. MAX) OF AttributeTypeAndValue
-
-
-
--- --------------------------------------------------------
--- certificate and CRL specific structures begin here
--- --------------------------------------------------------
-
-Certificate ::= SEQUENCE {
- tbsCertificate TBSCertificate,
- signatureAlgorithm AlgorithmIdentifier,
- signature BIT STRING }
-
-TBSCertificate ::= SEQUENCE {
- version [0] EXPLICIT Version DEFAULT v1,
- serialNumber CertificateSerialNumber,
- signature AlgorithmIdentifier,
- issuer Name,
- validity Validity,
- subject Name,
- subjectPublicKeyInfo SubjectPublicKeyInfo,
- issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
- -- If present, version shall be v2 or v3
- subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
- -- If present, version shall be v2 or v3
- extensions [3] EXPLICIT Extensions OPTIONAL
- -- If present, version shall be v3 --
-}
-
-Version ::= INTEGER { v1(0), v2(1), v3(2) }
-
-CertificateSerialNumber ::= INTEGER
-
-Validity ::= SEQUENCE {
- notBefore Time,
- notAfter Time }
-
-Time ::= CHOICE {
- utcTime UTCTime,
- generalTime GeneralizedTime }
-
-UniqueIdentifier ::= BIT STRING
-
-SubjectPublicKeyInfo ::= SEQUENCE {
- algorithm AlgorithmIdentifier,
- subjectPublicKey BIT STRING }
-
-Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
-
-Extension ::= SEQUENCE {
- extnID OBJECT IDENTIFIER,
- critical BOOLEAN DEFAULT FALSE,
- extnValue OCTET STRING }
-
-
--- ------------------------------------------
--- CRL structures
--- ------------------------------------------
-
-CertificateList ::= SEQUENCE {
- tbsCertList TBSCertList,
- signatureAlgorithm AlgorithmIdentifier,
- signature BIT STRING }
-
-TBSCertList ::= SEQUENCE {
- version Version OPTIONAL,
- -- if present, shall be v2
- signature AlgorithmIdentifier,
- issuer Name,
- thisUpdate Time,
- nextUpdate Time OPTIONAL,
- revokedCertificates SEQUENCE OF SEQUENCE {
- userCertificate CertificateSerialNumber,
- revocationDate Time,
- crlEntryExtensions Extensions OPTIONAL
- -- if present, shall be v2
- } OPTIONAL,
- crlExtensions [0] EXPLICIT Extensions OPTIONAL
- -- if present, shall be v2 --
-}
-
--- Version, Time, CertificateSerialNumber, and Extensions were
--- defined earlier for use in the certificate structure
-
-AlgorithmIdentifier ::= SEQUENCE {
- algorithm OBJECT IDENTIFIER,
- parameters ANY DEFINED BY algorithm OPTIONAL }
- -- contains a value of the type
- -- registered for use with the
- -- algorithm object identifier value
-
--- Algorithm OIDs and parameter structures
-
-pkcs-1 OBJECT IDENTIFIER ::= {
- pkcs 1 }
-
-rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 }
-
-md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 }
-
-md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 }
-
-sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 }
-
-id-dsa-with-sha1 OBJECT IDENTIFIER ::= {
- iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 }
-
-Dss-Sig-Value ::= SEQUENCE {
- r INTEGER,
- s INTEGER
-}
-
-dhpublicnumber OBJECT IDENTIFIER ::= {
- iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1 }
-
-DomainParameters ::= SEQUENCE {
- p INTEGER, -- odd prime, p=jq +1
- g INTEGER, -- generator, g
- q INTEGER, -- factor of p-1
- j INTEGER OPTIONAL, -- subgroup factor, j>= 2
- validationParms ValidationParms OPTIONAL }
-
-ValidationParms ::= SEQUENCE {
- seed BIT STRING,
- pgenCounter INTEGER }
-
-id-dsa OBJECT IDENTIFIER ::= {
- iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 }
-
-Dss-Parms ::= SEQUENCE {
- p INTEGER,
- q INTEGER,
- g INTEGER }
-
--- x400 address syntax starts here
--- OR Names
-
-ORAddress ::= SEQUENCE {
- built-in-standard-attributes BuiltInStandardAttributes,
- built-in-domain-defined-attributes
- BuiltInDomainDefinedAttributes OPTIONAL,
- -- see also teletex-domain-defined-attributes
- extension-attributes ExtensionAttributes OPTIONAL }
--- The OR-address is semantically absent from the OR-name if the
--- built-in-standard-attribute sequence is empty and the
--- built-in-domain-defined-attributes and extension-attributes are
--- both omitted.
-
--- Built-in Standard Attributes
-
-BuiltInStandardAttributes ::= SEQUENCE {
- country-name CountryName OPTIONAL,
- administration-domain-name AdministrationDomainName OPTIONAL,
- network-address [0] EXPLICIT NetworkAddress OPTIONAL,
- -- see also extended-network-address
- terminal-identifier [1] EXPLICIT TerminalIdentifier OPTIONAL,
- private-domain-name [2] EXPLICIT PrivateDomainName OPTIONAL,
- organization-name [3] EXPLICIT OrganizationName OPTIONAL,
- -- see also teletex-organization-name
- numeric-user-identifier [4] EXPLICIT NumericUserIdentifier OPTIONAL,
- personal-name [5] EXPLICIT PersonalName OPTIONAL,
- -- see also teletex-personal-name
- organizational-unit-names [6] EXPLICIT OrganizationalUnitNames OPTIONAL
- -- see also teletex-organizational-unit-names --
-}
-
-CountryName ::= [APPLICATION 1] CHOICE {
- x121-dcc-code NumericString
- (SIZE (ub-country-name-numeric-length)),
- iso-3166-alpha2-code PrintableString
- (SIZE (ub-country-name-alpha-length)) }
-
-AdministrationDomainName ::= [APPLICATION 2] EXPLICIT CHOICE {
- numeric NumericString (SIZE (0..ub-domain-name-length)),
- printable PrintableString (SIZE (0..ub-domain-name-length)) }
-
-NetworkAddress ::= X121Address -- see also extended-network-address
-
-X121Address ::= NumericString (SIZE (1..ub-x121-address-length))
-
-TerminalIdentifier ::= PrintableString (SIZE (1..ub-terminal-id-length))
-
-PrivateDomainName ::= CHOICE {
- numeric NumericString (SIZE (1..ub-domain-name-length)),
- printable PrintableString (SIZE (1..ub-domain-name-length)) }
-
-OrganizationName ::= PrintableString
- (SIZE (1..ub-organization-name-length))
--- see also teletex-organization-name
-
-NumericUserIdentifier ::= NumericString
- (SIZE (1..ub-numeric-user-id-length))
-
-PersonalName ::= SET {
- surname [0] PrintableString (SIZE (1..ub-surname-length)),
- given-name [1] PrintableString
- (SIZE (1..ub-given-name-length)) OPTIONAL,
- initials [2] PrintableString (SIZE (1..ub-initials-length)) OPTIONAL,
- generation-qualifier [3] PrintableString
- (SIZE (1..ub-generation-qualifier-length)) OPTIONAL }
--- see also teletex-personal-name
-
-OrganizationalUnitNames ::= SEQUENCE SIZE (1..ub-organizational-units)
- OF OrganizationalUnitName
--- see also teletex-organizational-unit-names
-
-OrganizationalUnitName ::= PrintableString (SIZE
- (1..ub-organizational-unit-name-length))
-
--- Built-in Domain-defined Attributes
-
-BuiltInDomainDefinedAttributes ::= SEQUENCE SIZE
- (1..ub-domain-defined-attributes) OF
- BuiltInDomainDefinedAttribute
-
-BuiltInDomainDefinedAttribute ::= SEQUENCE {
- type PrintableString (SIZE
- (1..ub-domain-defined-attribute-type-length)),
- value PrintableString (SIZE
- (1..ub-domain-defined-attribute-value-length))}
-
--- Extension Attributes
-
-ExtensionAttributes ::= SET SIZE (1..ub-extension-attributes) OF
- ExtensionAttribute
-
-ExtensionAttribute ::= SEQUENCE {
- extension-attribute-type [0] EXPLICIT INTEGER (0..ub-extension-attributes),
- extension-attribute-value [1] EXPLICIT
- ANY DEFINED BY extension-attribute-type }
-
--- Extension types and attribute values
---
-
-common-name INTEGER ::= 1
-
-CommonName ::= PrintableString (SIZE (1..ub-common-name-length))
-
-teletex-common-name INTEGER ::= 2
-
-TeletexCommonName ::= TeletexString (SIZE (1..ub-common-name-length))
-
-teletex-organization-name INTEGER ::= 3
-
-TeletexOrganizationName ::=
- TeletexString (SIZE (1..ub-organization-name-length))
-
-teletex-personal-name INTEGER ::= 4
-
-TeletexPersonalName ::= SET {
- surname [0] EXPLICIT TeletexString (SIZE (1..ub-surname-length)),
- given-name [1] EXPLICIT TeletexString
- (SIZE (1..ub-given-name-length)) OPTIONAL,
- initials [2] EXPLICIT TeletexString (SIZE (1..ub-initials-length)) OPTIONAL,
- generation-qualifier [3] EXPLICIT TeletexString (SIZE
- (1..ub-generation-qualifier-length)) OPTIONAL }
-
-teletex-organizational-unit-names INTEGER ::= 5
-
-TeletexOrganizationalUnitNames ::= SEQUENCE SIZE
- (1..ub-organizational-units) OF TeletexOrganizationalUnitName
-
-TeletexOrganizationalUnitName ::= TeletexString
- (SIZE (1..ub-organizational-unit-name-length))
-
-pds-name INTEGER ::= 7
-
-PDSName ::= PrintableString (SIZE (1..ub-pds-name-length))
-
-physical-delivery-country-name INTEGER ::= 8
-
-PhysicalDeliveryCountryName ::= CHOICE {
- x121-dcc-code NumericString (SIZE (ub-country-name-numeric-length)),
- iso-3166-alpha2-code PrintableString
- (SIZE (ub-country-name-alpha-length)) }
-
-postal-code INTEGER ::= 9
-
-PostalCode ::= CHOICE {
- numeric-code NumericString (SIZE (1..ub-postal-code-length)),
- printable-code PrintableString (SIZE (1..ub-postal-code-length)) }
-
-physical-delivery-office-name INTEGER ::= 10
-
-PhysicalDeliveryOfficeName ::= PDSParameter
-
-physical-delivery-office-number INTEGER ::= 11
-
-PhysicalDeliveryOfficeNumber ::= PDSParameter
-
-extension-OR-address-components INTEGER ::= 12
-
-ExtensionORAddressComponents ::= PDSParameter
-
-physical-delivery-personal-name INTEGER ::= 13
-
-PhysicalDeliveryPersonalName ::= PDSParameter
-
-physical-delivery-organization-name INTEGER ::= 14
-
-PhysicalDeliveryOrganizationName ::= PDSParameter
-
-extension-physical-delivery-address-components INTEGER ::= 15
-
-ExtensionPhysicalDeliveryAddressComponents ::= PDSParameter
-
-unformatted-postal-address INTEGER ::= 16
-
-UnformattedPostalAddress ::= SET {
- printable-address SEQUENCE SIZE (1..ub-pds-physical-address-lines) OF
- PrintableString (SIZE (1..ub-pds-parameter-length)) OPTIONAL,
- teletex-string TeletexString
- (SIZE (1..ub-unformatted-address-length)) OPTIONAL }
-
-street-address INTEGER ::= 17
-
-StreetAddress ::= PDSParameter
-
-post-office-box-address INTEGER ::= 18
-
-PostOfficeBoxAddress ::= PDSParameter
-
-poste-restante-address INTEGER ::= 19
-
-PosteRestanteAddress ::= PDSParameter
-
-unique-postal-name INTEGER ::= 20
-
-UniquePostalName ::= PDSParameter
-
-local-postal-attributes INTEGER ::= 21
-
-LocalPostalAttributes ::= PDSParameter
-
-PDSParameter ::= SET {
- printable-string PrintableString
- (SIZE(1..ub-pds-parameter-length)) OPTIONAL,
- teletex-string TeletexString
- (SIZE(1..ub-pds-parameter-length)) OPTIONAL }
-
-extended-network-address INTEGER ::= 22
-
-ExtendedNetworkAddress ::= CHOICE {
- e163-4-address SEQUENCE {
- number [0] EXPLICIT NumericString (SIZE (1..ub-e163-4-number-length)),
- sub-address [1] EXPLICIT NumericString
- (SIZE (1..ub-e163-4-sub-address-length)) OPTIONAL },
- psap-address [0] EXPLICIT PresentationAddress }
-
-PresentationAddress ::= SEQUENCE {
- pSelector [0] EXPLICIT OCTET STRING OPTIONAL,
- sSelector [1] EXPLICIT OCTET STRING OPTIONAL,
- tSelector [2] EXPLICIT OCTET STRING OPTIONAL,
- nAddresses [3] EXPLICIT SET SIZE (1..MAX) OF OCTET STRING }
-
-terminal-type INTEGER ::= 23
-
-TerminalType ::= INTEGER {
- telex (3),
- teletex (4),
- g3-facsimile (5),
- g4-facsimile (6),
- ia5-terminal (7),
- videotex (8) } -- (0..ub-integer-options)
-
--- Extension Domain-defined Attributes
-
-teletex-domain-defined-attributes INTEGER ::= 6
-
-TeletexDomainDefinedAttributes ::= SEQUENCE SIZE
- (1..ub-domain-defined-attributes) OF TeletexDomainDefinedAttribute
-
-TeletexDomainDefinedAttribute ::= SEQUENCE {
- type TeletexString
- (SIZE (1..ub-domain-defined-attribute-type-length)),
- value TeletexString
- (SIZE (1..ub-domain-defined-attribute-value-length)) }
-
--- specifications of Upper Bounds shall be regarded as mandatory
--- from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
--- Upper Bounds
-
--- Upper Bounds
-ub-name INTEGER ::= 32768
-ub-common-name INTEGER ::= 64
-ub-locality-name INTEGER ::= 128
-ub-state-name INTEGER ::= 128
-ub-organization-name INTEGER ::= 64
-ub-organizational-unit-name INTEGER ::= 64
-ub-title INTEGER ::= 64
-ub-match INTEGER ::= 128
-
-ub-emailaddress-length INTEGER ::= 128
-
-ub-common-name-length INTEGER ::= 64
-ub-country-name-alpha-length INTEGER ::= 2
-ub-country-name-numeric-length INTEGER ::= 3
-ub-domain-defined-attributes INTEGER ::= 4
-ub-domain-defined-attribute-type-length INTEGER ::= 8
-ub-domain-defined-attribute-value-length INTEGER ::= 128
-ub-domain-name-length INTEGER ::= 16
-ub-extension-attributes INTEGER ::= 256
-ub-e163-4-number-length INTEGER ::= 15
-ub-e163-4-sub-address-length INTEGER ::= 40
-ub-generation-qualifier-length INTEGER ::= 3
-ub-given-name-length INTEGER ::= 16
-ub-initials-length INTEGER ::= 5
-ub-integer-options INTEGER ::= 256
-ub-numeric-user-id-length INTEGER ::= 32
-ub-organization-name-length INTEGER ::= 64
-ub-organizational-unit-name-length INTEGER ::= 32
-ub-organizational-units INTEGER ::= 4
-ub-pds-name-length INTEGER ::= 16
-ub-pds-parameter-length INTEGER ::= 30
-ub-pds-physical-address-lines INTEGER ::= 6
-ub-postal-code-length INTEGER ::= 16
-ub-surname-length INTEGER ::= 40
-ub-terminal-id-length INTEGER ::= 24
-ub-unformatted-address-length INTEGER ::= 180
-ub-x121-address-length INTEGER ::= 16
-
--- Note - upper bounds on string types, such as TeletexString, are
--- measured in characters. Excepting PrintableString or IA5String, a
--- significantly greater number of octets will be required to hold
--- such a value. As a minimum, 16 octets, or twice the specified upper
--- bound, whichever is the larger, should be allowed for TeletexString.
--- For UTF8String or UniversalString at least four times the upper
--- bound should be allowed.
-
-
-
--- END of PKIX1Implicit88
-
-
--- BEGIN of RFC2630
-
--- Cryptographic Message Syntax
-
-pkcs-7-ContentInfo ::= SEQUENCE {
- contentType pkcs-7-ContentType,
- content [0] EXPLICIT ANY DEFINED BY contentType }
-
-pkcs-7-DigestInfo ::= SEQUENCE {
- digestAlgorithm pkcs-7-DigestAlgorithmIdentifier,
- digest pkcs-7-Digest
-}
-
-pkcs-7-Digest ::= OCTET STRING
-
-pkcs-7-ContentType ::= OBJECT IDENTIFIER
-
-pkcs-7-SignedData ::= SEQUENCE {
- version pkcs-7-CMSVersion,
- digestAlgorithms pkcs-7-DigestAlgorithmIdentifiers,
- encapContentInfo pkcs-7-EncapsulatedContentInfo,
- certificates [0] IMPLICIT pkcs-7-CertificateSet OPTIONAL,
- crls [1] IMPLICIT pkcs-7-CertificateRevocationLists OPTIONAL,
- signerInfos pkcs-7-SignerInfos
-}
-
-pkcs-7-CMSVersion ::= INTEGER { v0(0), v1(1), v2(2), v3(3), v4(4) }
-
-pkcs-7-DigestAlgorithmIdentifiers ::= SET OF pkcs-7-DigestAlgorithmIdentifier
-
-pkcs-7-DigestAlgorithmIdentifier ::= AlgorithmIdentifier
-
-pkcs-7-EncapsulatedContentInfo ::= SEQUENCE {
- eContentType pkcs-7-ContentType,
- eContent [0] EXPLICIT OCTET STRING OPTIONAL }
-
--- We don't use CertificateList here since we only want
--- to read the raw data.
-pkcs-7-CertificateRevocationLists ::= SET OF ANY
-
-pkcs-7-CertificateChoices ::= CHOICE {
--- Although the paper uses Certificate type, we
--- don't use it since, we don't need to parse it.
--- We only need to read and store it.
- certificate ANY
-}
-
-pkcs-7-CertificateSet ::= SET OF pkcs-7-CertificateChoices
-
-pkcs-7-SignerInfos ::= SET OF ANY -- this is not correct but we don't use it
- -- anyway
-
-
--- BEGIN of RFC2986
-
--- Certificate requests
-pkcs-10-CertificationRequestInfo ::= SEQUENCE {
- version INTEGER { v1(0) },
- subject Name,
- subjectPKInfo SubjectPublicKeyInfo,
- attributes [0] Attributes
-}
-
-Attributes ::= SET OF Attribute
-
-pkcs-10-CertificationRequest ::= SEQUENCE {
- certificationRequestInfo pkcs-10-CertificationRequestInfo,
- signatureAlgorithm AlgorithmIdentifier,
- signature BIT STRING
-}
-
--- stuff from PKCS#9
-
-pkcs-9-ub-challengePassword INTEGER ::= 255
-
-pkcs-9-certTypes OBJECT IDENTIFIER ::= {pkcs-9 22}
-pkcs-9-crlTypes OBJECT IDENTIFIER ::= {pkcs-9 23}
-
-pkcs-9-at-challengePassword OBJECT IDENTIFIER ::= {pkcs-9 7}
-
-pkcs-9-challengePassword ::= CHOICE {
- printableString PrintableString (SIZE (1..pkcs-9-ub-challengePassword)),
- utf8String UTF8String (SIZE (1..pkcs-9-ub-challengePassword)) }
-
-pkcs-9-at-localKeyId OBJECT IDENTIFIER ::= {pkcs-9 21}
-
-pkcs-9-localKeyId ::= OCTET STRING
-
-pkcs-9-at-friendlyName OBJECT IDENTIFIER ::= {pkcs-9 20}
-
-pkcs-9-friendlyName ::= BMPString (SIZE (1..255))
-
--- PKCS #8 stuff
-
--- Private-key information syntax
-
-pkcs-8-PrivateKeyInfo ::= SEQUENCE {
- version pkcs-8-Version,
- privateKeyAlgorithm AlgorithmIdentifier,
- privateKey pkcs-8-PrivateKey,
- attributes [0] Attributes OPTIONAL }
-
-pkcs-8-Version ::= INTEGER {v1(0)}
-
-pkcs-8-PrivateKey ::= OCTET STRING
-
-pkcs-8-Attributes ::= SET OF Attribute
-
--- Encrypted private-key information syntax
-
-pkcs-8-EncryptedPrivateKeyInfo ::= SEQUENCE {
- encryptionAlgorithm AlgorithmIdentifier,
- encryptedData pkcs-8-EncryptedData
-}
-
-pkcs-8-EncryptedData ::= OCTET STRING
-
--- PKCS #5 stuff
-
-pkcs-5 OBJECT IDENTIFIER ::=
- { pkcs 5 }
-
-pkcs-5-encryptionAlgorithm OBJECT IDENTIFIER ::=
- { iso(1) member-body(2) us(840) rsadsi(113549) 3 }
-
-pkcs-5-des-EDE3-CBC OBJECT IDENTIFIER ::= {pkcs-5-encryptionAlgorithm 7}
-
-pkcs-5-des-EDE3-CBC-params ::= OCTET STRING (SIZE(8))
-
-pkcs-5-des-CBC-params ::= OCTET STRING (SIZE(8))
-
-pkcs-5-rc2-CBC-params ::= SEQUENCE {
- rc2ParameterVersion INTEGER OPTIONAL,
- iv OCTET STRING (SIZE(8))
-}
-
-pkcs-5-PBE-params ::= SEQUENCE {
- salt OCTET STRING (SIZE(8)),
- iterationCount INTEGER
-}
-
-pkcs-5-id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}
-
-pkcs-5-PBES2-params ::= SEQUENCE {
- keyDerivationFunc AlgorithmIdentifier,
- encryptionScheme AlgorithmIdentifier }
-
--- PBKDF2
-
-pkcs-5-id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12}
-
--- pkcs-5-id-hmacWithSHA1 OBJECT IDENTIFIER ::= {iso(1) member-body(2) us(840) rsadsi(113549) 2 7}
-
--- pkcs-5-algid-hmacWithSHA1 AlgorithmIdentifier ::=
--- {algorithm pkcs-5-id-hmacWithSHA1, parameters NULL : NULL}
-
-pkcs-5-PBKDF2-params ::= SEQUENCE {
- salt CHOICE {
- specified OCTET STRING,
- otherSource AlgorithmIdentifier
- },
- iterationCount INTEGER (1..MAX),
- keyLength INTEGER (1..MAX) OPTIONAL,
- prf AlgorithmIdentifier OPTIONAL -- DEFAULT pkcs-5-id-hmacWithSHA1
-}
-
--- PKCS #12 stuff
-
-pkcs-12 OBJECT IDENTIFIER ::= {pkcs 12}
-
-pkcs-12-PFX ::= SEQUENCE {
- version INTEGER {v3(3)},
- authSafe pkcs-7-ContentInfo,
- macData pkcs-12-MacData OPTIONAL
-}
-
-pkcs-12-PbeParams ::= SEQUENCE {
- salt OCTET STRING,
- iterations INTEGER
-}
-
-pkcs-12-MacData ::= SEQUENCE {
- mac pkcs-7-DigestInfo,
- macSalt OCTET STRING,
- iterations INTEGER DEFAULT 1
--- Note: The default is for historical reasons and its use is
--- deprecated. A higher value, like 1024 is recommended.
-}
-
-pkcs-12-AuthenticatedSafe ::= SEQUENCE OF pkcs-7-ContentInfo
- -- Data if unencrypted
- -- EncryptedData if password-encrypted
- -- EnvelopedData if public key-encrypted
-
-pkcs-12-SafeContents ::= SEQUENCE OF pkcs-12-SafeBag
-
-pkcs-12-SafeBag ::= SEQUENCE {
- bagId OBJECT IDENTIFIER,
- bagValue [0] EXPLICIT ANY DEFINED BY badId,
- bagAttributes SET OF pkcs-12-PKCS12Attribute OPTIONAL
-}
-
--- Bag types
-
-
-pkcs-12-bagtypes OBJECT IDENTIFIER ::= {pkcs-12 10 1}
-
-pkcs-12-keyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 1}
-pkcs-12-pkcs8ShroudedKeyBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 2}
-pkcs-12-certBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 3}
-pkcs-12-crlBag OBJECT IDENTIFIER ::= {pkcs-12-bagtypes 4}
-
-pkcs-12-KeyBag ::= pkcs-8-PrivateKeyInfo
-
--- Shrouded KeyBag
-
-pkcs-12-PKCS8ShroudedKeyBag ::= pkcs-8-EncryptedPrivateKeyInfo
-
--- CertBag
-
-pkcs-12-CertBag ::= SEQUENCE {
- certId OBJECT IDENTIFIER,
- certValue [0] EXPLICIT ANY DEFINED BY certId
-}
-
--- x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {pkcs-9-certTypes 1}}
--- DER-encoded X.509 certificate stored in OCTET STRING
-
-pkcs-12-CRLBag ::= SEQUENCE {
- crlId OBJECT IDENTIFIER,
- crlValue [0] EXPLICIT ANY DEFINED BY crlId
-}
-
--- x509CRL BAG-TYPE ::=
--- {OCTET STRING IDENTIFIED BY {pkcs-9-crlTypes 1}}
--- DER-encoded X.509 CRL stored in OCTET STRING
-
-pkcs-12-PKCS12Attribute ::= Attribute
-
--- PKCS #7 stuff (needed in PKCS 12)
-
-pkcs-7-data OBJECT IDENTIFIER ::= { iso(1) member-body(2)
- us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1 }
-
-pkcs-7-encryptedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
- us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6 }
-
-pkcs-7-Data ::= OCTET STRING
-
-pkcs-7-EncryptedData ::= SEQUENCE {
- version pkcs-7-CMSVersion,
- encryptedContentInfo pkcs-7-EncryptedContentInfo,
- unprotectedAttrs [1] IMPLICIT pkcs-7-UnprotectedAttributes OPTIONAL }
-
-pkcs-7-EncryptedContentInfo ::= SEQUENCE {
- contentType pkcs-7-ContentType,
- contentEncryptionAlgorithm pkcs-7-ContentEncryptionAlgorithmIdentifier,
- encryptedContent [0] IMPLICIT pkcs-7-EncryptedContent OPTIONAL }
-
-pkcs-7-ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-
-pkcs-7-EncryptedContent ::= OCTET STRING
-
-pkcs-7-UnprotectedAttributes ::= SET SIZE (1..MAX) OF Attribute
-
--- LDAP stuff
--- may not be correct
-
-id-at-ldap-DC AttributeType ::= { 0 9 2342 19200300 100 1 25 }
-
-ldap-DC ::= IA5String
-
-id-at-ldap-UID AttributeType ::= { 0 9 2342 19200300 100 1 1 }
-
-ldap-UID ::= DirectoryString
-
--- rfc3039
-
-id-pda OBJECT IDENTIFIER ::= { id-pkix 9 }
-
-id-pda-dateOfBirth AttributeType ::= { id-pda 1 }
-DateOfBirth ::= GeneralizedTime
-
-id-pda-placeOfBirth AttributeType ::= { id-pda 2 }
-PlaceOfBirth ::= DirectoryString
-
-id-pda-gender AttributeType ::= { id-pda 3 }
-Gender ::= PrintableString (SIZE(1))
- -- "M", "F", "m" or "f"
-
-id-pda-countryOfCitizenship AttributeType ::= { id-pda 4 }
-CountryOfCitizenship ::= PrintableString (SIZE (2))
- -- ISO 3166 Country Code
-
-id-pda-countryOfResidence AttributeType ::= { id-pda 5 }
-CountryOfResidence ::= PrintableString (SIZE (2))
- -- ISO 3166 Country Code
-
-END
diff --git a/pkix/tests/Makefile.am b/pkix/tests/Makefile.am
deleted file mode 100644
index 794c339f..00000000
--- a/pkix/tests/Makefile.am
+++ /dev/null
@@ -1,27 +0,0 @@
-
-BUILT_SOURCES = \
- asn1-def-test.h
-
-asn1-def-test.h: test.asn
- asn1Parser -o asn1-def-test.h test.asn
-
-UNIT_AUTO = \
- unit-test-gcrypt-setup.c \
- unit-test-pkix-asn1.c \
- unit-test-pkix-der.c \
- unit-test-pkix-parser.c \
- unit-test-pkix-serialize.c \
- $(BUILT_SOURCES)
-
-UNIT_PROMPT =
-
-UNIT_LIBS = \
- $(top_builddir)/pkix/libgkr-pkix.la \
- $(top_builddir)/common/libgkr-common.la
-
-EXTRA_DIST = \
- test.asn \
- test-data
-
-include $(top_srcdir)/tests/test.make
-
diff --git a/pkix/tests/asn1-def-test.h b/pkix/tests/asn1-def-test.h
deleted file mode 100644
index e0a24db5..00000000
--- a/pkix/tests/asn1-def-test.h
+++ /dev/null
@@ -1,13 +0,0 @@
-
-#include <libtasn1.h>
-
-extern const ASN1_ARRAY_TYPE test_asn1_tab[]={
- {"TEST",536872976,0},
- {0,1073741836,0},
- {"TestIntegers",536870917,0},
- {"uint1",1073741827,0},
- {"uint2",1073741827,0},
- {"uint3",1073741827,0},
- {"mpi",3,0},
- {0,0,0}
-};
diff --git a/pkix/tests/test-data/RSA_Root_Certificate_1.pem b/pkix/tests/test-data/RSA_Root_Certificate_1.pem
deleted file mode 100644
index f6cdfcd0..00000000
--- a/pkix/tests/test-data/RSA_Root_Certificate_1.pem
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
-ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
-Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRp
-b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
-bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
-NjAwMjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
-IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
-NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24g
-QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
-IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2f
-NUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChM
-MFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqYJJgpp0lZpd34
-t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs3x/b
-e0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0Wu
-PIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
-PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/RSA_Security_1024_v3.pem b/pkix/tests/test-data/RSA_Security_1024_v3.pem
deleted file mode 100644
index 94e0ad13..00000000
--- a/pkix/tests/test-data/RSA_Security_1024_v3.pem
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUF
-ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
-U2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAyMjIyMTAxNDlaFw0yNjAyMjIyMDAx
-NDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
-QSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-gQDV3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dY
-rIMKo1W1exeQFYRMiu4mmdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYt
-bzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1BlqFikYvtc6adwlWzMaUQIDAQAB
-o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSME
-GDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1N
-AdRU2qUMX96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRy
-HUZXxGFraZ8SmyzVWujAovBDleMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9
-am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNumU4/iXgDmMrzVcydro7B
-qkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/RSA_Security_2048_v3.pem b/pkix/tests/test-data/RSA_Security_2048_v3.pem
deleted file mode 100644
index 86c907eb..00000000
--- a/pkix/tests/test-data/RSA_Security_2048_v3.pem
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUF
-ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
-U2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5
-MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
-QSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37
-RqtBaB4Y6lXIL5F4iSj7Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E
-0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J
-6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iHKrtjEAMq
-s6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzD
-uvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2Mw
-YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAW
-gBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NRMKSq6UWuNST6
-/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmYv/3V
-EhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5g
-EydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+
-f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJq
-aHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEk
-llgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
-pKnXwiJPZ9d37CAFYd4=
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Personal_Basic_CA.pem b/pkix/tests/test-data/Thawte_Personal_Basic_CA.pem
deleted file mode 100644
index 22c2a8db..00000000
--- a/pkix/tests/test-data/Thawte_Personal_Basic_CA.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBl
-cnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNp
-Y0B0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVow
-gcsxCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNV
-BAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAm
-BgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNV
-BAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZ
-cGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTK
-P1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdKwPQIcOk8RHtQ
-fmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY0b8j
-kyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOB
-gQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7
-c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95
-B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ==
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Personal_Freemail_CA.pem b/pkix/tests/test-data/Thawte_Personal_Freemail_CA.pem
deleted file mode 100644
index 565a4be1..00000000
--- a/pkix/tests/test-data/Thawte_Personal_Freemail_CA.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBl
-cnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1m
-cmVlbWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIz
-NTk1OVowgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUx
-EjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRp
-bmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
-JDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqG
-SIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkq
-hkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0N
-j3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5ErHzmj+hND3Ef
-QDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgkCGqY
-x7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
-hkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP
-MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgC
-neSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr
-5PjRzneigQ==
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Personal_Premium_CA.pem b/pkix/tests/test-data/Thawte_Personal_Premium_CA.pem
deleted file mode 100644
index 688c3ae1..00000000
--- a/pkix/tests/test-data/Thawte_Personal_Premium_CA.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBl
-cnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXBy
-ZW1pdW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5
-NTlaMIHPMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIw
-EAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5n
-MSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSMw
-IQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3
-DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw7
-7f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWIEt12TfIa/G8j
-Hnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicRFTuq
-W/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
-DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH
-b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVx
-eTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1
-KzGJ
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Premium_Server_CA.pem b/pkix/tests/test-data/Thawte_Premium_Server_CA.pem
deleted file mode 100644
index aa37cfc9..00000000
--- a/pkix/tests/test-data/Thawte_Premium_Server_CA.pem
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
-dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3Rl
-IFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
-cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1
-OVowgc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQ
-BgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcg
-Y2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
-ITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3
-DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhI
-NTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPL
-lyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/qgeN
-9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
-AQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
-hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZ
-a4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcU
-Qg==
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Server_CA.pem b/pkix/tests/test-data/Thawte_Server_CA.pem
deleted file mode 100644
index ac4e25bf..00000000
--- a/pkix/tests/test-data/Thawte_Server_CA.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
-dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3Rl
-IFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkG
-A1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2Fw
-ZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
-CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQ
-VGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRz
-QHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I
-/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC
-6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCXL+eQbcAoQpnX
-TEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzARMA8G
-A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWD
-TSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
-QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdni
-TCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/Thawte_Time_Stamping_CA.pem b/pkix/tests/test-data/Thawte_Time_Stamping_CA.pem
deleted file mode 100644
index fecbd15e..00000000
--- a/pkix/tests/test-data/Thawte_Time_Stamping_CA.pem
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmls
-bGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmlj
-YXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcw
-MTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
-BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN
-BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24x
-HzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcN
-AQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8
-WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR
-5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7
-X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN
-AQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC9RAIDb/LogWK
-0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCed/r8
-zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJ
-SdM=
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/ca-certificates.crt b/pkix/tests/test-data/ca-certificates.crt
deleted file mode 100644
index c30335f8..00000000
--- a/pkix/tests/test-data/ca-certificates.crt
+++ /dev/null
@@ -1,2560 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEuDCCA6CgAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBtDELMAkGA1UEBhMCQlIx
-EzARBgNVBAoTCklDUC1CcmFzaWwxPTA7BgNVBAsTNEluc3RpdHV0byBOYWNpb25h
-bCBkZSBUZWNub2xvZ2lhIGRhIEluZm9ybWFjYW8gLSBJVEkxETAPBgNVBAcTCEJy
-YXNpbGlhMQswCQYDVQQIEwJERjExMC8GA1UEAxMoQXV0b3JpZGFkZSBDZXJ0aWZp
-Y2Fkb3JhIFJhaXogQnJhc2lsZWlyYTAeFw0wMTExMzAxMjU4MDBaFw0xMTExMzAy
-MzU5MDBaMIG0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE9MDsG
-A1UECxM0SW5zdGl0dXRvIE5hY2lvbmFsIGRlIFRlY25vbG9naWEgZGEgSW5mb3Jt
-YWNhbyAtIElUSTERMA8GA1UEBxMIQnJhc2lsaWExCzAJBgNVBAgTAkRGMTEwLwYD
-VQQDEyhBdXRvcmlkYWRlIENlcnRpZmljYWRvcmEgUmFpeiBCcmFzaWxlaXJhMIIB
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwPMudwX/hvm+Uh2b/lQAcHVA
-isamaLkWdkwP9/S/tOKIgRrL6Oy+ZIGlOUdd6uYtk9Ma/3pUpgcfNAj0vYm5gsyj
-Qo9emsc+x6m4VWwk9iqMZSCK5EQkAq/Ut4n7KuLE1+gdftwdIgxfUsPt4CyNrY50
-QV57KM2UT8x5rrmzEjr7TICGpSUAl2gVqe6xaii+bmYR1QrmWaBSAG59LrkrjrYt
-bRhFboUDe1DK+6T8s5L6k8c8okpbHpa9veMztDVC9sPJ60MWXh6anVKo1UcLcbUR
-yEeNvZneVRKAAU6ouwdjDvwlsaKydFKwed0ToQ47bmUKgcm+wV3eTRk36UOnTwID
-AQABo4HSMIHPME4GA1UdIARHMEUwQwYFYEwBAQAwOjA4BggrBgEFBQcCARYsaHR0
-cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0RQQ2FjcmFpei5wZGYwPQYDVR0f
-BDYwNDAyoDCgLoYsaHR0cDovL2FjcmFpei5pY3BicmFzaWwuZ292LmJyL0xDUmFj
-cmFpei5jcmwwHQYDVR0OBBYEFIr68VeEERM1kEL6V0lUaQ2kxPA3MA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAZA5c1
-U/hgIh6OcgLAfiJgFWpvmDZWqlV30/bHFpj8iBobJSm5uDpt7TirYh1Uxe3fQaGl
-YjJe+9zd+izPRbBqXPVQA34EXcwk4qpWuf1hHriWfdrx8AcqSqr6CuQFwSr75Fos
-SzlwDADa70mT7wZjAmQhnZx2xJ6wfWlT9VQfS//JYeIc7Fue2JNLd00UOSMMaiK/
-t79enKNHEA2fupH3vEigf5Eh4bVAN5VohrTm6MY53x7XQZZr1ME7a55lFEnSeT0u
-mlOAjR2mAbvSM5X5oSZNrmetdzyTj2flCM8CC7MLab0kkdngRIlUBGHF1/S5nmPb
-K+9A46sd33oqK8n8
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
-IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
-IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
-Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
-BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
-MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
-ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
-8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
-zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
-fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
-w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
-G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
-epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
-laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
-QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
-fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
-YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
-ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
-gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
-MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
-IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
-dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
-czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
-dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
-aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
-AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
-b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
-ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
-nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
-18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
-gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
-Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
-sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
-SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
-CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
-GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
-zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
-omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDtTCCAp2gAwIBAgIRANAeQJAAAEZSAAAAAQAAAAQwDQYJKoZIhvcNAQEF
-BQAwgYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJEQzETMBEGA1UEBxMKV2Fz
-aGluZ3RvbjEXMBUGA1UEChMOQUJBLkVDT00sIElOQy4xGTAXBgNVBAMTEEFC
-QS5FQ09NIFJvb3QgQ0ExJDAiBgkqhkiG9w0BCQEWFWFkbWluQGRpZ3NpZ3Ry
-dXN0LmNvbTAeFw05OTA3MTIxNzMzNTNaFw0wOTA3MDkxNzMzNTNaMIGJMQsw
-CQYDVQQGEwJVUzELMAkGA1UECBMCREMxEzARBgNVBAcTCldhc2hpbmd0b24x
-FzAVBgNVBAoTDkFCQS5FQ09NLCBJTkMuMRkwFwYDVQQDExBBQkEuRUNPTSBS
-b290IENBMSQwIgYJKoZIhvcNAQkBFhVhZG1pbkBkaWdzaWd0cnVzdC5jb20w
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx0xHgeVVDBwhMywVC
-AOINg0Y95JO6tgbTDVm9PsHOQ2cBiiGo77zM0KLMsFWWU4RmBQDaREmA2FQK
-pSWGlO1jVv9wbKOhGdJ4vmgqRF4vz8wYXke8OrFGPR7wuSw0X4x8TAgpnUBV
-6zx9g9618PeKgw6hTLQ6pbNfWiKX7BmbwQVo/ea3qZGULOR4SCQaJRk665Wc
-OQqKz0Ky8BzVX/tr7WhWezkscjiw7pOp03t3POtxA6k4ShZsiSrK2jMTecJV
-jO2cu/LLWxD4LmE1xilMKtAqY9FlWbT4zfn0AIS2V0KFnTKo+SpU+/94Qby9
-cSj0u5C8/5Y0BONFnqFGKECBAgMBAAGjFjAUMBIGA1UdEwEB/wQIMAYBAf8C
-AQgwDQYJKoZIhvcNAQEFBQADggEBAARvJYbk5pYntNlCwNDJALF/VD6Hsm0k
-qS8Kfv2kRLD4VAe9G52dyntQJHsRW0mjpr8SdNWJt7cvmGQlFLdh6X9ggGvT
-ZOirvRrWUfrAtF13Gn9kCF55xgVM8XrdTX3O5kh7VNJhkoHWG9YA8A6eKHeg
-TYjHInYZw8eeG6Z3ePhfm1bR8PIXrI6dWeYf/le22V7hXZ9F7GFoGUHhsiAm
-/lowdiT/QHI8eZ98IkirRs3bs4Ysj78FQdPB4xTjQRcm0HyncUwZ6EoPclgx
-fexgeqMiKL0ZJGA/O4dzwGvky663qyVDslUte6sGDnVdNOVdc22esnVApVnJ
-TzFxiNmIf1Q=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
-VVMxHTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNB
-bWVyaWNhIE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIg
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyOTA2MDAw
-MFoXDTM3MTEyMDE1MDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRB
-T0wgVGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUg
-SW5jLjE3MDUGA1UEAxMuQU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBAJnej8Mlo2k06AX3dLm/WpcZuS+U0pPlLYnKhHw/EEMbjIt8hFj4JHxI
-zyr9wBXZGH6EGhfT257XyuTZ16pYUYfw8ItITuLCxFlpMGK2MKKMCxGZYTVt
-fu/FsRkGIBKOQuHfD5YQUqjPnF+VFNivO3ULMSAfRC+iYkGzuxgh28pxPIzs
-trkNn+9R7017EvILDOGsQI93f7DKeHEMXRZxcKLXwjqFzQ6axOAAsNUl6twr
-5JQtOJyJQVdkKGUZHLZEtMgxa44Be3ZZJX8VHIQIfHNlIAqhBC4aMqiaILGc
-LCFZ5/vP7nAtCMpjPiybkxlqpMKX/7eGV4iFbJ4VFitNLLMCAwEAAaNjMGEw
-DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUoTYwFsuGkABFgFOxj8jYPXy+
-XxIwHwYDVR0jBBgwFoAUoTYwFsuGkABFgFOxj8jYPXy+XxIwDgYDVR0PAQH/
-BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQCKIBilvrMvtKaEAEAwKfq0FHNM
-eUWn9nDg6H5kHgqVfGphwu9OH77/yZkfB2FK4V1Mza3u0FIy2VkyvNp5ctZ7
-CegCgTXTCt8RHcl5oIBN/lrXVtbtDyqvpxh1MwzqwWEFT2qaifKNuZ8u77Bf
-WgDrvq2g+EQFZ7zLBO+eZMXpyD8Fv8YvBxzDNnGGyjhmSs3WuEvGbKeXO/oT
-LW4jYYehY0KswsuXn2Fozy1MBJ3XJU8KDk2QixhWqJNIV9xvrr2eZ1d3iVCz
-vhGbRWeDhhmH05i9CBoWH1iCC+GWaQVLjuyDUTEH1dSf/1l7qG6Fz9NLqUmw
-X7A5KGgOc90lmt4S
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIF5jCCA86gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgzELMAkGA1UEBhMC
-VVMxHTAbBgNVBAoTFEFPTCBUaW1lIFdhcm5lciBJbmMuMRwwGgYDVQQLExNB
-bWVyaWNhIE9ubGluZSBJbmMuMTcwNQYDVQQDEy5BT0wgVGltZSBXYXJuZXIg
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyOTA2MDAw
-MFoXDTM3MDkyODIzNDMwMFowgYMxCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRB
-T0wgVGltZSBXYXJuZXIgSW5jLjEcMBoGA1UECxMTQW1lcmljYSBPbmxpbmUg
-SW5jLjE3MDUGA1UEAxMuQU9MIFRpbWUgV2FybmVyIFJvb3QgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
-ggIBALQ3WggWmRToVbEbJGv8x4vmh6mJ7ouZzU9AhqS2TcnZsdw8TQ2FTBVs
-RotSeJ/4I/1n9SQ6aF3Q92RhQVSji6UI0ilbm2BPJoPRYxJWSXakFsKlnUWs
-i4SVqBax7J/qJBrvuVdcmiQhLE0OcR+mrF1FdAOYxFSMFkpBd4aVdQxHAWZg
-/BXxD+r1FHjHDtdugRxev17nOirYlxcwfACtCJ0zr7iZYYCLqJV+FNwSbKTQ
-2O9ASQI2+W6p1h2WVgSysy0WVoaP2SBXgM1nEG2wTPDaRrbqJS5Gr42whTg0
-ixQmgiusrpkLjhTXUr2eacOGAgvqdnUxCc4zGSGFQ+aJLZ8lN2fxI2rSAG2X
-+Z/nKcrdH9cG6rjJuQkhn8g/BsXS6RJGAE57COtCPStIbp1n3UsC5ETzkxml
-J85per5n0/xQpCyrw2u544BMzwVhSyvcG7mm0tCq9Stz+86QNZ8MUhy/XCFh
-EVsVS6kkUfykXPcXnbDS+gfpj1bkGoxoigTTfFrjnqKhynFbotSg5ymFXQNo
-Kk/SBtc9+cMDLz9l+WceR0DTYw/j1Y75hauXTLPXJuuWCpTehTacyH+BCQJJ
-Kg71ZDIMgtG6aoIbs0t0EfOMd9afv9w3pKdVBC/UMejTRrkDfNoSTllkt1Ex
-MVCgyhwn2RAurda9EGYrw7AiShJbAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMB
-Af8wHQYDVR0OBBYEFE9pbQN+nZ8HGEO8txBO1b+pxCAoMB8GA1UdIwQYMBaA
-FE9pbQN+nZ8HGEO8txBO1b+pxCAoMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG
-9w0BAQUFAAOCAgEAO/Ouyuguh4X7ZVnnrREUpVe8WJ8kEle7+z802u6teio0
-cnAxa8cZmIDJgt43d15Ui47y6mdPyXSEkVYJ1eV6moG2gcKtNuTxVBFT8zRF
-ASbI5Rq8NEQh3q0l/HYWdyGQgJhXnU7q7C+qPBR7V8F+GBRn7iTGvboVsNIY
-vbdVgaxTwOjdaRITQrcCtQVBynlQboIOcXKTRuidDV29rs4prWPVVRaAMCf/
-drr3uNZK49m1+VLQTkCpx+XCMseqdiThawVQ68W/ClTluUI8JPu3B5wwn3la
-5uBAUhX0/Kr0VvlEl4ftDmVyXr4m+02kLQgH3thcoNyBM5kYJRF3p+v9WAks
-mWsbivNSPxpNSGDxoPYzAlOL7SUJuA0t7Zdz7NeWH45gDtoQmy8YJPamTQr5
-O8t1wswvziRpyQoijlmn94IM19drNZxDAGrElWe6nEXLuA4399xOAU++CrYD
-062KRffaJ00psUjf5BHklka9bAI+1lHIlRcBFanyqqryvy9lG2/QuRqT9Y41
-xICHPpQvZuTpqP9BnHAqTyo5GJUefvthATxRCC4oGKQWDzH9OmwjkyB24f0H
-hdFbP9IcczLd+rn4jM8Ch3qaluTtT4mNU0OrDhPAARW0eTjb/G49nlG2uBOL
-Z8/5fNkiHfZdxRwBL5joeiQYvITX+txyW/fBOmg=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4
-dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5h
-bCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzEL
-MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1B
-ZGRUcnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1
-c3QgRXh0ZXJuYWwgQ0EgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALf3GjPm8gAELTngTlvtH7xsD821+iO2zt6bETOXpClMfZOfvUq8
-k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfwTz/oMp50
-ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504
-B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDez
-eWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5
-aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0WicCAwEAAaOB
-3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0PBAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6
-xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
-cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdv
-cmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJ
-KoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
-j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5R
-xNKWt9x+Tu5w/Rw56wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjT
-K3rMUUKhemPR5ruhxSvCNr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1
-n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHx
-REzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49O
-hgQ=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
-UCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3Qw
-HhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
-UCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3Qw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwze
-xODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY654eyNAbFvAWlA3yCyykQruGI
-gb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWroulpOj0O
-M3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1Lc
-sRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5
-mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG
-9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0OBBYEFJWxtPCU
-tr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTADAQH/
-MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQsw
-CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk
-ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAx
-IENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0
-MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
-iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9
-tTEv2dB8Xfjea4MYeDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL
-/bscVjby/rK25Xa71SJlpz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlV
-g3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6
-tkD9xOQ14R0WHNC8K47Wcdk=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
-UCBOZXR3b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAe
-Fw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNF
-MRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
-IE5ldHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIB
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+
-A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c
-+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1id9NEHif2
-P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKX
-C1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8R
-s3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9
-BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQWBBSBPjfYkrAf
-d59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zCB
-jgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkG
-A1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU
-cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENB
-IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmu
-G7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
-+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbj
-PGsye/Kf8Lb93/AoGEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bY
-GozH7ZxOmuASu7VqTITh4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6
-NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9HEufOX1362Kqx
-My3ZdvJOOjMMK7MtkAY=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJT
-RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRU
-UCBOZXR3b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9v
-dDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYT
-AlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3Qg
-VFRQIE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBS
-b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoek
-n0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKk
-IhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3KP0q6p6z
-sLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1t
-UvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R
-+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvES
-a0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0GA1UdDgQWBBQ5
-lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw
-AwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkw
-ZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL
-ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVh
-bGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2Vh
-lRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
-GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx9
-5dr6h+sNNVJn0J6XdgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKF
-Yqa0p9m9N5xotS1WfbC3P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVA
-wRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQw
-dOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
-UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
-cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4X
-DTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
-Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw
-DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCa
-xlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CGv2BlnEtUiMJIxUo5vxTjWVXl
-GbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44zDyL9Hy7n
-BzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145Lcx
-VR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiE
-mf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCu
-JKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
-HQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Zo/Z5
-9m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
-A4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
-Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOM
-IOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTI
-dGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j
-8uB9Gr784N/Xx6dssPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
-UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
-cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4X
-DTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
-Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIw
-DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssN
-t79Hc9PwVU3dxgz6sWYFas14tNwC206B89enfHG8dWOgXeMHDEjsJcQDIPT/
-DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8f3SkWq7x
-uhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE
-18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxr
-kJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMD
-bi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8BPeraunzgWGcX
-uVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn6KVu
-Y8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9
-W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ
-o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48
-ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124Hhn
-AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNee
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypL
-M7PmG2tZTiLMubekJcmnxPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qf
-tIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjR
-Ywu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R
-+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr
-+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVM
-nNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMADjMSW7yV5TKQqLPGbIOt
-d+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh1NolNscI
-WC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZ
-ZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y
-3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz
-2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw
-RY8mkaKO/qk=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQG
-EwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0
-MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUx
-MjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNV
-BAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZ
-QmFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKMEuyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+h
-Xe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gR
-QKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/CG9VwcPCP
-wBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1
-pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNT
-Px8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkC
-AwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1BE3wMBIGA1Ud
-EwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUA
-A4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkT
-I7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
-jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/
-oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67
-G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
-RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYT
-AlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNl
-cnR1bSBDQTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJ
-BgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNV
-BAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AM6xwS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYV
-M42sLQnFdvkrOYCJ5JdLkKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/Ox
-LjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE
-7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/KUz/iDsaW
-VhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu
-/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYD
-VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESS
-bLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQaTOs9qmdvLdTN
-/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvgGrZg
-FCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqT
-E5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x
-O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYV
-IZQs6GAqm4VKQPNriiTsBhYscw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJH
-QjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxm
-b3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFB
-IENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIz
-MTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
-Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENB
-IExpbWl0ZWQxITAfBgNVBAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCC
-ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL5AnfRu4ep2hxxNRUSO
-vkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhGC1Pqy0wk
-wLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfH
-dr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf04
-9vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULi
-mAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cmez6KJcfA3Z3m
-NWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEKIz6W
-8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
-Af8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
-QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwu
-Y29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG
-9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
-7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHC
-v8S5dIa2LX1rzNLzRt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdV
-CYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAV
-GI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C12yxow+ev+to
-51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJH
-QjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxm
-b3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2Vj
-dXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4
-MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIg
-TWFuY2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2Rv
-IENBIExpbWl0ZWQxJDAiBgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2
-aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMBxM4KK0HDr
-c4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP9nQ95IDC
-+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8
-j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWC
-iIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtG
-Cd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz6YiO/O1R65Nx
-Tq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4EFgQU
-PNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB
-/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv
-Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNo
-dHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNl
-cy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
-4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiF
-Gv45jN5bBAS0VPmjZ55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXG
-De+X3EyrEeFryzHRbPtIgKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsF
-Vy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfU
-a7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6s
-Cx1HRR3B7Hzs/Sk=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJH
-QjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxm
-b3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1
-c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0y
-ODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVy
-IE1hbmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9k
-byBDQSBMaW1pdGVkMSUwIwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNl
-cnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhT
-WvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh73TkVvFVI
-xO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9
-C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/
-oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW1O24zG71++IsWL1/
-T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7kUlcsutT6vif
-R4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1UdDgQW
-BBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0T
-AQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v
-ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2
-hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2Vy
-dmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
-uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdT
-mw7pSqBYaWcOrp32pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+C
-l5EfKNsYEYwq5GWDVxISjBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/g
-hhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVF
-wL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOj
-GM9O9y5Xt5hwXsjEeLBi
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQG
-EwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREw
-DwYDVQQLEwhEU1RDQSBFMTAeFw05ODEyMTAxODEwMjNaFw0xODEyMTAxODQw
-MjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy
-ZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEB
-AQUAA4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlR
-EmlvMVW5SXIACH7TpWJENySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+Lth
-zfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2io74CTADKAqjuAQIxZA9SLRN0
-dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBoBgNVHR8E
-YTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwg
-U2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNV
-BAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIx
-MDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFGp5fpFpRhgTCgJ3
-pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAMBgNV
-HRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3
-DQEBBQUAA4GBACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lN
-QseSJqBcNJo4cvj9axY+IO6CizEqkzaFI4iKPANo08kJD038bKTaKHKTDomA
-sH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4RbyhkwS7hp86W0N6
-w4pl
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIID2DCCAsACEQDQHkCLAAACfAAAAAIAAAABMA0GCSqGSIb3DQEBBQUAMIGp
-MQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBM
-YWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENv
-LjERMA8GA1UECxMIRFNUQ0EgWDExFjAUBgNVBAMTDURTVCBSb290Q0EgWDEx
-ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODEyMDEx
-ODE4NTVaFw0wODExMjgxODE4NTVaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UE
-CBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp
-Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDEx
-FjAUBgNVBAMTDURTVCBSb290Q0EgWDExITAfBgkqhkiG9w0BCQEWEmNhQGRp
-Z3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ANLGJrbnpT3BxGjVUG9TxW9JEwm4ryxIjRRqoxdfWvnTLnUv2Chi0ZMv/E3U
-q4flCMeZ55I/db3rJbQVwZsZPdJEjdd0IG03Ao9pk1uKxBmd9LIO/BZsubEF
-koPRhSxglD5FVaDZqwgh5mDoO3TymVBRaNADLbGAvqPYUrBEzUNKcI5YhZXh
-TizWLUFv1oTnyJhEykfbLCSlaSbPa7gnYsP0yXqSI+0TZ4KuRS5F5X5yP4Wd
-lGIQ5jyRoa13AOAV7POEgHJ6jm5gl8ckWRA0g1vhpaRptlc1HHhZxtMvOnNn
-7pTKBBMFYgZwI7P0fO5F2WQLW0mqpEPOJsREEmy43XkCAwEAATANBgkqhkiG
-9w0BAQUFAAOCAQEAojeyP2n714Z5VEkxlTMr89EJFEliYIalsBHiUMIdBlc+
-LegzZL6bqq1fG03UmZWii5rJYnK1aerZWKs17RWiQ9a2vAd5ZWRzfdd5ynvV
-WlHG4VMElo04z6MXrDlxawHDi1M8Y+nuecDkvpIyZHqzH5eUYr3qsiAVlfuX
-8ngvYzZAOONGDx3drJXK50uQe7FLqdTF65raqtWjlBRGjS0f8zrWkzr2Pnn8
-6Oawde3uPclwx12qgUtGJRzHbBXjlU4PqjI3lAoXJJIThFjSY28r9+ZbYgsT
-F7ANUkz+/m9c4pFuHf2kYtdo+o56T9II2pPc8JIRetDccpMMc5NihWjQ9A==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQG
-EwJVUzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREw
-DwYDVQQLEwhEU1RDQSBFMjAeFw05ODEyMDkxOTE3MjZaFw0xODEyMDkxOTQ3
-MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVy
-ZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEB
-AQUAA4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fB
-w18DW9Fvrn5C6mYjuGODVvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87e
-ZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JSxhcxEzu1TdvIxPbDDyQq2gyd
-55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBoBgNVHR8E
-YTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwg
-U2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNV
-BAMTBENSTDEwKwYDVR0QBCQwIoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIw
-OTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFB6CTShlgDzJQW6s
-NS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAMBgNV
-HRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3
-DQEBBQUAA4GBAEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHR
-xdf0CiUPPXiBng+xZ8SQTGPdXqfiup/1902lMXucKS1M/mQ+7LZT/uqb7YLb
-dHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1mPnHfxsb1gYgAlih
-w6ID
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIID2DCCAsACEQDQHkCLAAB3bQAAAAEAAAAEMA0GCSqGSIb3DQEBBQUAMIGp
-MQswCQYDVQQGEwJ1czENMAsGA1UECBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBM
-YWtlIENpdHkxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0dXJlIFRydXN0IENv
-LjERMA8GA1UECxMIRFNUQ0EgWDIxFjAUBgNVBAMTDURTVCBSb290Q0EgWDIx
-ITAfBgkqhkiG9w0BCQEWEmNhQGRpZ3NpZ3RydXN0LmNvbTAeFw05ODExMzAy
-MjQ2MTZaFw0wODExMjcyMjQ2MTZaMIGpMQswCQYDVQQGEwJ1czENMAsGA1UE
-CBMEVXRhaDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxJDAiBgNVBAoTG0Rp
-Z2l0YWwgU2lnbmF0dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgWDIx
-FjAUBgNVBAMTDURTVCBSb290Q0EgWDIxITAfBgkqhkiG9w0BCQEWEmNhQGRp
-Z3NpZ3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-ANx18IzAdZaawGIfJvfE4Zrq4FZzW5nNAUSoCLbVp9oaBBg5kkp4o4HC9Xd6
-ULRw/5qrxsfKboNPQpj7Jgva3G3WqZlVUmfpKAOS3OWwBZoPFflrWXJW8vo5
-/Kpo7g8fEIMv/J36F5bdguPmRX3AS4BEH+0s4IT9kVySVGkl5WJp3OXuAFK9
-MwutdQKFp2RQLcUZGTDAJtvJ0/0uma1ZtQtN1EGuhUhDWdy3qOKi3sOP17ih
-YqZoUFLkzzGnlIXan0YyF1bl8utmPRL/Q9uY73fPy4GNNLHGUEom0eQ+QVCv
-bK4iNC7Va26Dunm4dmVI2gkpZGMiuftHdoWMhkTLCdsCAwEAATANBgkqhkiG
-9w0BAQUFAAOCAQEAtTYOXeFhKFoRZcA/gwN5Tb4opgsHAlKFzfiR0BBstWog
-WxyQ2TA8xkieil5k+aFxd+8EJx8H6+Qm93N0yUQYGmbT4EOvkTvRyyzYdFQ6
-HE3K1GjNI3wdEJ5F6fYAbqbNGf9PLCmPV03Ed5K+4EwJ+11EhmYhqLkyolbV
-6YyDfFk/xPEL553snr2cGA4+wjl5KLcDDQjLxufZATdQEOzMYRZA1K8xdHv8
-PzGn0EdzMzkbzE5q10mDEQb+64JYMzJM8FasHpwvVpp7wUocpf1VNs78lk30
-sPDst2yC7S8xmUJMqbINuBVd8d+6ybVK1GSYsyapMMj9puyrliGtf8J4tg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UE
-ChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NB
-X0NQUyBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsT
-HChjKSAyMDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1
-c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAy
-MDcxNjE2NDBaFw0yMDAyMDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0
-Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29y
-cC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg
-RW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xp
-ZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7NySpj10InJrWPNTTVRaoTU
-rcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0iJBeAZfv6lOm3fzB
-3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn5JVn1j+SgF7y
-NH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHdBgNVHR8E
-gdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUAw
-PgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy
-ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0
-Lm5ldCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2Vy
-dGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
-IoAPMjAwMDAyMDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQD
-AgEGMB8GA1UdIwQYMBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQW
-BBSEi3T9xY3A/ydtIDdFfP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2
-fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWA
-O9GK9Q6nIMstZVXQkvTnhLUGJoMShAusO7JE7r3PQNsgDrpuFOow4DtifH+L
-a3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/GpsKkMWr2tGzhtQvJFJcem3G8v7l
-TRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKdzmVml64mXg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UE
-ChMLRW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xf
-Q1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc
-KGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVz
-dC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe
-Fw0wMDAyMDQxNzIwMDBaFw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtF
-bnRydXN0Lm5ldDE/MD0GA1UECxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMg
-aW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykg
-MjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5l
-dCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0G
-CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO8GCGD9JYf9Mzly0XonUw
-tZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaBbL3+qPZ1V1eMkGxK
-wz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2dWcTC5/oVzbI
-XQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4QgEBBAQD
-AgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoTC0Vu
-dHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp
-bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAy
-MDAwIEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0
-IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNV
-BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIw
-NDE3NTAwMFowCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc
-/vuLkpyw8m4iMB0GA1UdDgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNV
-HRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkq
-hkiG9w0BAQQFAAOBgQBi24GRzsiad0Iv7L0no1MPUBvqTpLwqa+poLpIYcvv
-yQbvH9X07t9WLebKahlzqlO+krNQAraFJnJj2HVQYnUUt7NQGj/KEQALhUVp
-bbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1UyrrJzOCE98g+EZfTYAkYvAX/
-bIkz8OwVDw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UE
-ChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNf
-MjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsT
-HChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1
-c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEy
-MjQxNzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0
-Lm5ldDFAMD4GA1UECxQ3d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29y
-cC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkg
-RW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2Vy
-dGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4
-QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/EC
-DNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuXMlBvPci6Zgzj
-/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzWnLLP
-KQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZd
-enoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH
-4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB
-0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJ
-FrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
-AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFh
-fGPjK50xA3B20qMooPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVU
-KcgF7bISKo30Axv/55IQh7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaoho
-wXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2
-+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof888
-6ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UE
-BhMCVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50
-cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBs
-aW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExp
-bWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0
-aW9uIEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBa
-MIHJMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNV
-BAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3Jw
-LiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50
-cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GL
-ADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSv
-x1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux5zDeg7K6PvHV
-iTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTmT173
-iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkw
-ggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50
-cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0Ff
-SW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UE
-CxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50
-cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYD
-VQQDEwRDUkwxMCygKqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9D
-bGllbnQxLmNybDArBgNVHRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkx
-MDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW
-/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwG
-A1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI
-hvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQ
-OokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzzwy5E97BnRqqS5TvaHBkU
-ODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYGJqibGapE
-PHayXOw=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UE
-BhMCVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50
-cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
-MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UE
-AxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQsw
-CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3
-dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlh
-Yi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVkMTow
-OAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp
-b24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0
-VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHIN
-iC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3wkrYKZImZNHk
-mGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcwggHT
-MBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHY
-pIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5
-BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChs
-aW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBM
-aW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNo
-dHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAi
-gA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMC
-AQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYE
-FPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9
-B0EABAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKn
-CqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2Zcgx
-xufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd2cNgQ4xYDiKWL2KjLB+6
-rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQG
-EwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1
-cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4
-MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgx
-LTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0
-eTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2R
-FGiYCh7+2gRvE4RiIcPRfM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO
-/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuv
-K9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAGA1UdHwRp
-MGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEt
-MCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
-MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjAL
-BgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gjIBBPM5iQn9Qw
-HQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMBAf8w
-GgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GB
-AFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
-7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2u
-FHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJV
-UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1
-aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0
-MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoT
-E0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJl
-IEdsb2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
-gYkCgYEAuucXkAJlsTRVPEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQy
-td4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORR
-OhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxnhcXIw2EC
-AwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8w
-HwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6o
-oHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf
-2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkAZ70Br83gcfxa
-z2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIYNMR1
-pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJV
-UzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1
-aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcN
-MjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZh
-eCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2lu
-ZXNzIENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fe
-k6lfWg0XTzQaDJj0ItlZ1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5
-/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4aIZX5UkxVWsUPOE9G+m34LjXW
-HXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBkMBEGCWCG
-SAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4
-MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBq
-R3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnm
-JXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+WB5Hh1Q+WKG1
-tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+KpYr
-tWKmpj29f5JZzVoqgrI3eQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQG
-EwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlm
-YXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5
-MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXgg
-U2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0Et
-MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF
-7Y6yEb3+6+e0dMKP/wXn2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKD
-pkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HM
-HMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAGA1UdHwRp
-MGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBT
-ZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
-MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjAL
-BgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBqy/3YIHqngnYw
-HQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMBAf8w
-GgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GB
-AAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy
-0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkt
-y3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgw
-FgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRy
-dXN0IFNvbHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3Qg
-R2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1
-MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYD
-VQQLEx5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMT
-GkdURSBDeWJlclRydXN0IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4usJTQGz0O9pTAipTHBsiQl8i4
-ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcqlHHK6XALn
-ZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8F
-LztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh3
-46B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq
-81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0PlZPvy5TYnh+d
-XIVtx6quTx8itc2VrbqnzPmrC3p/
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIB+jCCAWMCAgGjMA0GCSqGSIb3DQEBBAUAMEUxCzAJBgNVBAYTAlVTMRgw
-FgYDVQQKEw9HVEUgQ29ycG9yYXRpb24xHDAaBgNVBAMTE0dURSBDeWJlclRy
-dXN0IFJvb3QwHhcNOTYwMjIzMjMwMTAwWhcNMDYwMjIzMjM1OTAwWjBFMQsw
-CQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMRwwGgYDVQQD
-ExNHVEUgQ3liZXJUcnVzdCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
-iQKBgQC45k+625h8cXyvRLfTD0bZZOWTwUKOx7pJjTUteueLveUFMVnGsS8K
-DPufpz+iCWaEVh43KRuH6X4MypqfpX/1FZSj1aJGgthoTNE3FQZor734sLPw
-KfWVWgkWYXcKIiXUT0Wqx73llt/51KiOQswkwB6RJ0q1bQaAYznEol44AwID
-AQABMA0GCSqGSIb3DQEBBAUAA4GBABKzdcZfHeFhVYAA1IFLezEPI2PnPfMD
-+fQ2qLvZ46WXTeorKeDWanOB5sCJo9Px4KWlIjeaY8JIILTbcuPI9tl8vrGv
-U9oUtCG41tWW4/5ODFlitppK+ULdjG+BqXH/9ApybW1EDp3zdHSo1TRJ6V6e
-6bR64eVaH4QwnNOfpSXY
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYT
-AlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVz
-dCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBC
-MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UE
-AxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEH
-CIjaWC9mOSm9BXiLnTjoBbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlC
-GDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet8u5fa9IAjbkU+BQVNdnARqN7
-csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+VcT4wt/lAj
-Nvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdRe
-JivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQAB
-o1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9
-qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjANBgkq
-hkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Qzxpe
-R+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWV
-Yrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF
-PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot
-2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeX
-xx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
-Mw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDdTCCAl2gAwIBAgILAgAAAAAA1ni3lAUwDQYJKoZIhvcNAQEEBQAwVzEL
-MAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNV
-BAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05
-ODA5MDExMjAwMDBaFw0xNDAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkw
-FwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRsw
-GQYDVQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQDaDuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR
-4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc
-71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4
-bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgK
-OOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMW
-ea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DP
-AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIABjAdBgNVHQ4EFgQUYHtmGkUNl8qJ
-UC99BM00qP/8/UswDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOC
-AQEArqqf/LfSyx9fOSkoGJ40yWxPbxrwZKJwSk8ThptgKJ7ogUmYfQq75bCd
-PTbbjwVR/wkxKh/diXeeDy5slQTthsu0AD+EAk2AaioteAuubyuig0SDH81Q
-gkwkr733pbTIWg/050deSY43lv6aiAU62cDbKYfmGZZHpzqmjIs8d/5GY6dT
-2iHRrH5Jokvmw2dZL7OKDrssvamqQnw1wdh/1acxOk5jQzmvCLBhNIzTmKlD
-NPYPhyk7ncJWWJh3w/cbrPad+D6qp1RF8PX51TFl/mtYnHGzHtdS6jIX/EBg
-Hcl5JLL2bP2oZg6C3ZjL2sJETy6ge/L3ayx2EYRGinij4w==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMSBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAx
-MTIyOTAwNTkzOFoXDTI1MTIyNzAwNTkzOFowggESMQswCQYDVQQGEwJFUzES
-MBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNV
-BAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzAp
-BgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAs
-BgNVBAsTJUlQUyBDQSBDTEFTRTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx
-LjAsBgNVBAMTJUlQUyBDQSBDTEFTRTEgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG
-9w0BAQEFAAOBjQAwgYkCgYEA4FEnpwvdr9G5Q1uCN0VWcu+atsIS7ywSzHb5
-BlmvXSHU0lq4oNTzav3KaY1mSPd05u42veiWkXWmcSjK5yISMmmwPh5r9FBS
-YmL9Yzt9fuzuOOpi9GyocY3h6YvJP8a1zZRCb92CRTzo3wno7wpVqVZHYUxJ
-ZHMQKD/Kvwn/xi8CAwEAAaOCBEowggRGMB0GA1UdDgQWBBTrsxl588GlHKzc
-uh9morKbadB4CDCCAUQGA1UdIwSCATswggE3gBTrsxl588GlHKzcuh9morKb
-adB4CKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNl
-bG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJu
-ZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFp
-bC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQLEyVJUFMgQ0Eg
-Q0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMg
-Q0EgQ0xBU0UxIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcN
-AQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8E
-BQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUH
-AwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIB
-FgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
-GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0Bt
-YWlsLmlwcy5lczBBBglghkgBhvhCAQ0ENBYyQ0xBU0UxIENBIENlcnRpZmlj
-YXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC
-BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIBBAQt
-FitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTEuY3Js
-MD8GCWCGSAGG+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jl
-dm9jYXRpb25DTEFTRTEuaHRtbD8wPAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93
-d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMS5odG1sPzA6BglghkgB
-hvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
-RTEuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9p
-cHMyMDAyL2lwczIwMDJDTEFTRTEuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFj
-ay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0UxLmNybDAvBggrBgEFBQcB
-AQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZI
-hvcNAQEFBQADgYEAK9Dr/drIyllq2tPMMi7JVBuKYn4VLenZMdMu9Ccj/1ur
-xUq2ckCuU3T0vAW0xtnIyXf7t/k0f3gA+Nak5FI/LEpjV4F1Wo7ojPsCwJTG
-Kbqz3Bzosq/SLmJbGqmODszFV0VRFOlOHIilkfSj945RyKm+hjM+5i9Ibq9U
-kE6tsSU=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIH6jCCB1OgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARIxCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjEuMCwGA1UECxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTEuMCwGA1UEAxMlSVBTIENBIENMQVNFMyBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMB4XDTAx
-MTIyOTAxMDE0NFoXDTI1MTIyNzAxMDE0NFowggESMQswCQYDVQQGEwJFUzES
-MBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmExLjAsBgNV
-BAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMubC4xKzAp
-BgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0NTIxLjAs
-BgNVBAsTJUlQUyBDQSBDTEFTRTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx
-LjAsBgNVBAMTJUlQUyBDQSBDTEFTRTMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlwcy5lczCBnzANBgkqhkiG
-9w0BAQEFAAOBjQAwgYkCgYEAqxf+DrDGaBtT8FK+n/ra+osTBLsBjzLZH49N
-zjaY2uQARIwo2BNEKqRrThckQpzTiKRBgtYj+4vJhuW5qYIF3PHeH+AMmVWY
-8jjsbJ0gA8DvqqPGZARRLXgNo9KoOtYkTOmWehisEyMiG3zoMRGzXwmqMHBx
-RiVrSXGAK5UBsh8CAwEAAaOCBEowggRGMB0GA1UdDgQWBBS4k/8uy9wsjqLn
-ev42USGjmFsMNDCCAUQGA1UdIwSCATswggE3gBS4k/8uy9wsjqLnev42USGj
-mFsMNKGCARqkggEWMIIBEjELMAkGA1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNl
-bG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMS4wLAYDVQQKEyVJUFMgSW50ZXJu
-ZXQgcHVibGlzaGluZyBTZXJ2aWNlcyBzLmwuMSswKQYDVQQKFCJpcHNAbWFp
-bC5pcHMuZXMgQy5JLkYuICBCLTYwOTI5NDUyMS4wLAYDVQQLEyVJUFMgQ0Eg
-Q0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVJUFMg
-Q0EgQ0xBU0UzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcN
-AQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8E
-BQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUH
-AwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIB
-FgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcw
-GgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0Bt
-YWlsLmlwcy5lczBBBglghkgBhvhCAQ0ENBYyQ0xBU0UzIENBIENlcnRpZmlj
-YXRlIGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgEC
-BBwWGmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMDoGCWCGSAGG+EIBBAQt
-FitodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJDTEFTRTMuY3Js
-MD8GCWCGSAGG+EIBAwQyFjBodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jl
-dm9jYXRpb25DTEFTRTMuaHRtbD8wPAYJYIZIAYb4QgEHBC8WLWh0dHA6Ly93
-d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFMy5odG1sPzA6BglghkgB
-hvhCAQgELRYraHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9wb2xpY3lDTEFT
-RTMuaHRtbDBzBgNVHR8EbDBqMDGgL6AthitodHRwOi8vd3d3Lmlwcy5lcy9p
-cHMyMDAyL2lwczIwMDJDTEFTRTMuY3JsMDWgM6Axhi9odHRwOi8vd3d3YmFj
-ay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0UzLmNybDAvBggrBgEFBQcB
-AQQjMCEwHwYIKwYBBQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZI
-hvcNAQEFBQADgYEAF2VcmZVDAyevJuXr0LMXI/dDqsfwfewPxqmurpYPdikc
-4gYtfibFPPqhwYHOU7BC0ZdXGhd+pFFhxu7pXu8Fuuu9D6eSb9ijBmgpjnn1
-/7/5p6/ksc7C0YBCJwUENPjDfxZ4IwwHJPJGR607VNCv1TGyr33I6unUVtkO
-E7LFRVA=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcN
-MDExMjI5MDEwNTMyWhcNMjUxMjI3MDEwNTMyWjCCARQxCzAJBgNVBAYTAkVT
-MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwG
-A1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjEr
-MCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEv
-MC0GA1UECxMmSVBTIENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8wDQYJ
-KoZIhvcNAQEBBQADgY0AMIGJAoGBALsw19zQVL01Tp/FTILq0VA8R5j8m2md
-d81u4D/u6zJfX5/S0HnllXNEITLgCtud186Nq1KLK3jgm1t99P1tCeWu4Wwd
-ByOgF9H5fahGRpEiqLJpxq339fWUoTCUvQDMRH/uxJ7JweaPCjbB/SQ9AaD1
-e+J8eGZDi09Z8pvZ+kmzAgMBAAGjggRTMIIETzAdBgNVHQ4EFgQUZyaW56G/
-2LUDnf473P7yiuYV3TAwggFGBgNVHSMEggE9MIIBOYAUZyaW56G/2LUDnf47
-3P7yiuYV3TChggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlC
-YXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIElu
-dGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBz
-QG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBT
-IENBIENMQVNFQTEgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMT
-JklQUyBDQSBDTEFTRUExIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
-KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAM
-BgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYI
-KwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
-BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEE
-BAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGB
-D2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ0xBU0VBMSBDQSBD
-ZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCG
-SAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7BglghkgB
-hvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xB
-U0VBMS5jcmwwQAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lw
-czIwMDIvcmV2b2NhdGlvbkNMQVNFQTEuaHRtbD8wPQYJYIZIAYb4QgEHBDAW
-Lmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFQTEuaHRt
-bD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
-cG9saWN5Q0xBU0VBMS5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93
-d3cuaXBzLmVzL2lwczIwMDIvaXBzMjAwMkNMQVNFQTEuY3JsMDagNKAyhjBo
-dHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMS5j
-cmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5p
-cHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAH66iqyAAIQVCtWYUQxkxZwCWINm
-yq0eB81+atqAB98DNEock8RLWCA1NnHtogo1EqWmZaeFaQoO42Hu6r4okzPV
-7Oi+xNtff6j5YzHIa5biKcJboOeXNp13XjFr/tOn2yrb25aLH2betgPAK7N4
-1lUH5Y85UN4HI3LmvSAUS7SG
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARQxCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjEvMC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwHhcN
-MDExMjI5MDEwNzUwWhcNMjUxMjI3MDEwNzUwWjCCARQxCzAJBgNVBAYTAkVT
-MRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwG
-A1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjEr
-MCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEv
-MC0GA1UECxMmSVBTIENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
-dHkxLzAtBgNVBAMTJklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXMwgZ8wDQYJ
-KoZIhvcNAQEBBQADgY0AMIGJAoGBAO6AAPYaZC6tasiDsYun7o/ZttvNG7uG
-BiJ2MwwSbUhWYdLcgiViL5/SaTBlA0IjWLxH3GvWdV0XPOH/8lhneaDBgbHU
-VqLyjRGZ/fZ98cfEXgIqmuJKtROKAP2Md4bm15T1IHUuDky/dMQ/gT6DtKM4
-Ninn6Cr1jIhBqoCm42zvAgMBAAGjggRTMIIETzAdBgNVHQ4EFgQUHp9XUEe2
-YZM50yz82l09BXW3mQIwggFGBgNVHSMEggE9MIIBOYAUHp9XUEe2YZM50yz8
-2l09BXW3mQKhggEcpIIBGDCCARQxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlC
-YXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEuMCwGA1UEChMlSVBTIElu
-dGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5sLjErMCkGA1UEChQiaXBz
-QG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1MjEvMC0GA1UECxMmSVBT
-IENBIENMQVNFQTMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxLzAtBgNVBAMT
-JklQUyBDQSBDTEFTRUEzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJ
-KoZIhvcNAQkBFg9pcHNAbWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAM
-BgNVHQ8EBQMDB/+AMGsGA1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYI
-KwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYB
-BAGCNwIBFgYKKwYBBAGCNwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEE
-BAMCAAcwGgYDVR0RBBMwEYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGB
-D2lwc0BtYWlsLmlwcy5lczBCBglghkgBhvhCAQ0ENRYzQ0xBU0VBMyBDQSBD
-ZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkgaHR0cDovL3d3dy5pcHMuZXMvMCkGCWCG
-SAGG+EIBAgQcFhpodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyLzA7BglghkgB
-hvhCAQQELhYsaHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xB
-U0VBMy5jcmwwQAYJYIZIAYb4QgEDBDMWMWh0dHA6Ly93d3cuaXBzLmVzL2lw
-czIwMDIvcmV2b2NhdGlvbkNMQVNFQTMuaHRtbD8wPQYJYIZIAYb4QgEHBDAW
-Lmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbENMQVNFQTMuaHRt
-bD8wOwYJYIZIAYb4QgEIBC4WLGh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIv
-cG9saWN5Q0xBU0VBMy5odG1sMHUGA1UdHwRuMGwwMqAwoC6GLGh0dHA6Ly93
-d3cuaXBzLmVzL2lwczIwMDIvaXBzMjAwMkNMQVNFQTMuY3JsMDagNKAyhjBo
-dHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0xBU0VBMy5j
-cmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5p
-cHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAEo9IEca2on0eisxeewBwMwB9dbB
-/MjD81ACUZBYKp/nNQlbMAqBACVHr9QPDp5gJqiVp4MI3y2s6Q73nMify5NF
-8bpqxmdRSmlPa/59Cy9SKcJQrSRE7SOzSMtEQMEDlQwKeAYSAfWRMS1Jjbs/
-RU4s4OjNtckUFQzjB4ObJnXv
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIH9zCCB2CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCARwxCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjEzMDEGA1UECxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5MTMwMQYDVQQDEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlm
-aWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lwc0BtYWlsLmlw
-cy5lczAeFw0wMTEyMjkwMDUzNThaFw0yNTEyMjcwMDUzNThaMIIBHDELMAkG
-A1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vs
-b25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNl
-cyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYw
-OTI5NDUyMTMwMQYDVQQLEypJUFMgQ0EgQ2hhaW5lZCBDQXMgQ2VydGlmaWNh
-dGlvbiBBdXRob3JpdHkxMzAxBgNVBAMTKklQUyBDQSBDaGFpbmVkIENBcyBD
-ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1h
-aWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcVpJJspQg
-vJhPUOtopKdJC7/SMejHT8KGC/po/UNaivNgkjWZOLtNA1IhW/A3mTXhQSCB
-hYEFcYGdtJUZqV92NC5jNzVXjrQfQj8VXOF6wV8TGDIxya2+o8eDZh65nAQT
-y2nBBt4wBrszo7Uf8I9vzv+W6FS+ZoCua9tBhDaiPQIDAQABo4IEQzCCBD8w
-HQYDVR0OBBYEFKGtMbH5PuEXpsirNPxShwkeYlJBMIIBTgYDVR0jBIIBRTCC
-AUGAFKGtMbH5PuEXpsirNPxShwkeYlJBoYIBJKSCASAwggEcMQswCQYDVQQG
-EwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJjZWxvbmEx
-LjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZpY2VzIHMu
-bC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEItNjA5Mjk0
-NTIxMzAxBgNVBAsTKklQUyBDQSBDaGFpbmVkIENBcyBDZXJ0aWZpY2F0aW9u
-IEF1dGhvcml0eTEzMDEGA1UEAxMqSVBTIENBIENoYWluZWQgQ0FzIENlcnRp
-ZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNAbWFpbC5p
-cHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsGA1UdJQRk
-MGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggr
-BgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGCNwoDAQYK
-KwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMwEYEPaXBz
-QG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5lczBCBglg
-hkgBhvhCAQ0ENRYzQ2hhaW5lZCBDQSBDZXJ0aWZpY2F0ZSBpc3N1ZWQgYnkg
-aHR0cDovL3d3dy5pcHMuZXMvMCkGCWCGSAGG+EIBAgQcFhpodHRwOi8vd3d3
-Lmlwcy5lcy9pcHMyMDAyLzA3BglghkgBhvhCAQQEKhYoaHR0cDovL3d3dy5p
-cHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0FDLmNybDA8BglghkgBhvhCAQMELxYt
-aHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9yZXZvY2F0aW9uQ0FDLmh0bWw/
-MDkGCWCGSAGG+EIBBwQsFipodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL3Jl
-bmV3YWxDQUMuaHRtbD8wNwYJYIZIAYb4QgEIBCoWKGh0dHA6Ly93d3cuaXBz
-LmVzL2lwczIwMDIvcG9saWN5Q0FDLmh0bWwwbQYDVR0fBGYwZDAuoCygKoYo
-aHR0cDovL3d3dy5pcHMuZXMvaXBzMjAwMi9pcHMyMDAyQ0FDLmNybDAyoDCg
-LoYsaHR0cDovL3d3d2JhY2suaXBzLmVzL2lwczIwMDIvaXBzMjAwMkNBQy5j
-cmwwLwYIKwYBBQUHAQEEIzAhMB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5p
-cHMuZXMvMA0GCSqGSIb3DQEBBQUAA4GBAERyMJ1WWKJBGyi3leGmGpVfp3hA
-K+/blkr8THFj2XOVvQLiogbHvpcqk4A0hgP63Ng9HgfNHnNDJGD1HWHc3Jag
-vPsd4+cSACczAsDAK1M92GsDgaPb1pOVIO/Tln4mkImcJpvNb2ar7QMiRDjM
-Wb2f2/YHogF/JsRj9SVCXmK9
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICtzCCAiACAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkVTMRIw
-EAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcTCUJBUkNFTE9OQTEZMBcGA1UE
-ChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UECxMPQ2VydGlmaWNhY2lvbmVz
-MRcwFQYDVQQDEw5JUFMgU0VSVklET1JFUzEeMBwGCSqGSIb3DQEJARYPaXBz
-QG1haWwuaXBzLmVzMB4XDTk4MDEwMTIzMjEwN1oXDTA5MTIyOTIzMjEwN1ow
-gaMxCzAJBgNVBAYTAkVTMRIwEAYDVQQIEwlCQVJDRUxPTkExEjAQBgNVBAcT
-CUJBUkNFTE9OQTEZMBcGA1UEChMQSVBTIFNlZ3VyaWRhZCBDQTEYMBYGA1UE
-CxMPQ2VydGlmaWNhY2lvbmVzMRcwFQYDVQQDEw5JUFMgU0VSVklET1JFUzEe
-MBwGCSqGSIb3DQEJARYPaXBzQG1haWwuaXBzLmVzMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQCsT1J0nznqjtwlxLyYXZhkJAk8IbPMGbWOlI6H0fg3
-PqHILVikgDVboXVsHUUMH2Fjal5vmwpMwci4YSM1gf/+rHhwLWjhOgeYlQJU
-3c0jt4BT18g3RXIGJBK6E2Ehim51KODFDzT9NthFf+G4Nu+z4cYgjui0OLzh
-PvYR3oydAQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBACzzw3lYJN7GO9HgQmm4
-7mSzPWIBubOE3yN93ZjPEKn+ANgilgUTB1RXxafey9m4iEL2mdsUdx+2/iU9
-4aI+A6mB0i1sR/WWRowiq8jMDQ6XXotBtDvECgZAHd1G9AHduoIuPD14cJ58
-GNCr+Lh3B0Zx8coLY1xq+XKU1QFPoNtC
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIIODCCB6GgAwIBAgIBADANBgkqhkiG9w0BAQUFADCCAR4xCzAJBgNVBAYT
-AkVTMRIwEAYDVQQIEwlCYXJjZWxvbmExEjAQBgNVBAcTCUJhcmNlbG9uYTEu
-MCwGA1UEChMlSVBTIEludGVybmV0IHB1Ymxpc2hpbmcgU2VydmljZXMgcy5s
-LjErMCkGA1UEChQiaXBzQG1haWwuaXBzLmVzIEMuSS5GLiAgQi02MDkyOTQ1
-MjE0MDIGA1UECxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0aWZpY2F0aW9u
-IEF1dGhvcml0eTE0MDIGA1UEAxMrSVBTIENBIFRpbWVzdGFtcGluZyBDZXJ0
-aWZpY2F0aW9uIEF1dGhvcml0eTEeMBwGCSqGSIb3DQEJARYPaXBzQG1haWwu
-aXBzLmVzMB4XDTAxMTIyOTAxMTAxOFoXDTI1MTIyNzAxMTAxOFowggEeMQsw
-CQYDVQQGEwJFUzESMBAGA1UECBMJQmFyY2Vsb25hMRIwEAYDVQQHEwlCYXJj
-ZWxvbmExLjAsBgNVBAoTJUlQUyBJbnRlcm5ldCBwdWJsaXNoaW5nIFNlcnZp
-Y2VzIHMubC4xKzApBgNVBAoUImlwc0BtYWlsLmlwcy5lcyBDLkkuRi4gIEIt
-NjA5Mjk0NTIxNDAyBgNVBAsTK0lQUyBDQSBUaW1lc3RhbXBpbmcgQ2VydGlm
-aWNhdGlvbiBBdXRob3JpdHkxNDAyBgNVBAMTK0lQUyBDQSBUaW1lc3RhbXBp
-bmcgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHjAcBgkqhkiG9w0BCQEWD2lw
-c0BtYWlsLmlwcy5lczCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLju
-VqWajOY2ycJioGaBjRrVetJznw6EZLqVtJCneK/K/lRhW86yIFcBrkSSQxA4
-Efdo/BdApWgnMjvEp+ZCccWZ73b/K5Uk9UmSGGjKALWkWi9uy9YbLA1UZ2t6
-KaFYq6JaANZbuxjC3/YeE1Z2m6Vo4pjOxgOKNNtMg0GmqaMCAwEAAaOCBIAw
-ggR8MB0GA1UdDgQWBBSL0BBQCYHynQnVDmB4AyKiP8jKZjCCAVAGA1UdIwSC
-AUcwggFDgBSL0BBQCYHynQnVDmB4AyKiP8jKZqGCASakggEiMIIBHjELMAkG
-A1UEBhMCRVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vs
-b25hMS4wLAYDVQQKEyVJUFMgSW50ZXJuZXQgcHVibGlzaGluZyBTZXJ2aWNl
-cyBzLmwuMSswKQYDVQQKFCJpcHNAbWFpbC5pcHMuZXMgQy5JLkYuICBCLTYw
-OTI5NDUyMTQwMgYDVQQLEytJUFMgQ0EgVGltZXN0YW1waW5nIENlcnRpZmlj
-YXRpb24gQXV0aG9yaXR5MTQwMgYDVQQDEytJUFMgQ0EgVGltZXN0YW1waW5n
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MR4wHAYJKoZIhvcNAQkBFg9pcHNA
-bWFpbC5pcHMuZXOCAQAwDAYDVR0TBAUwAwEB/zAMBgNVHQ8EBQMDB/+AMGsG
-A1UdJQRkMGIGCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUF
-BwMEBggrBgEFBQcDCAYKKwYBBAGCNwIBFQYKKwYBBAGCNwIBFgYKKwYBBAGC
-NwoDAQYKKwYBBAGCNwoDBDARBglghkgBhvhCAQEEBAMCAAcwGgYDVR0RBBMw
-EYEPaXBzQG1haWwuaXBzLmVzMBoGA1UdEgQTMBGBD2lwc0BtYWlsLmlwcy5l
-czBHBglghkgBhvhCAQ0EOhY4VGltZXN0YW1waW5nIENBIENlcnRpZmljYXRl
-IGlzc3VlZCBieSBodHRwOi8vd3d3Lmlwcy5lcy8wKQYJYIZIAYb4QgECBBwW
-Gmh0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvMEAGCWCGSAGG+EIBBAQzFjFo
-dHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBpbmcu
-Y3JsMEUGCWCGSAGG+EIBAwQ4FjZodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAy
-L3Jldm9jYXRpb25UaW1lc3RhbXBpbmcuaHRtbD8wQgYJYIZIAYb4QgEHBDUW
-M2h0dHA6Ly93d3cuaXBzLmVzL2lwczIwMDIvcmVuZXdhbFRpbWVzdGFtcGlu
-Zy5odG1sPzBABglghkgBhvhCAQgEMxYxaHR0cDovL3d3dy5pcHMuZXMvaXBz
-MjAwMi9wb2xpY3lUaW1lc3RhbXBpbmcuaHRtbDB/BgNVHR8EeDB2MDegNaAz
-hjFodHRwOi8vd3d3Lmlwcy5lcy9pcHMyMDAyL2lwczIwMDJUaW1lc3RhbXBp
-bmcuY3JsMDugOaA3hjVodHRwOi8vd3d3YmFjay5pcHMuZXMvaXBzMjAwMi9p
-cHMyMDAyVGltZXN0YW1waW5nLmNybDAvBggrBgEFBQcBAQQjMCEwHwYIKwYB
-BQUHMAGGE2h0dHA6Ly9vY3NwLmlwcy5lcy8wDQYJKoZIhvcNAQEFBQADgYEA
-ZbrBzAAalZHK6Ww6vzoeFAh8+4Pua2JR0zORtWB5fgTYXXk36MNbsMRnLWha
-sl8OCvrNPzpFoeo2zyYepxEoxZSPhExTCMWTs/zif/WN87GphV+I3pGW7hdb
-rqXqcGV4LCFkAZXOzkw+UPS2Wctjjba9GNSHSl/c7+lW8AoM6HU=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQG
-EwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9v
-dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMg
-Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNa
-Fw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9W
-YWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1
-lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMukJ0KX0J+D
-isPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj18
-2d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Sp
-x2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZ
-yH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospUxbF6lR1xHkop
-igPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4wPQYI
-KwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFk
-aXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
-ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlh
-bmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBw
-YXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
-ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRp
-ZmljYXRpb24gcHJhY3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmlj
-YXRlIFBvbGljeS4wIgYIKwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMu
-Ym0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYw
-gaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJN
-MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCLMA4GA1UdDwEB/wQEAwIB
-BjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lofFIk3Wdv
-OXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10
-buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe
-/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6
-isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
-xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQ
-NiOKSnQ2+Q==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
-ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
-Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRp
-b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
-bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
-NjAwMjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
-IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
-NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24g
-QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
-IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2f
-NUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChM
-MFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqYJJgpp0lZpd34
-t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs3x/b
-e0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0Wu
-PIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A
-PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICXDCCAcWgAwIBAgIQCgEBAQAAAnwAAAALAAAAAjANBgkqhkiG9w0BAQUF
-ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
-U2VjdXJpdHkgMTAyNCBWMzAeFw0wMTAyMjIyMTAxNDlaFw0yNjAyMjIyMDAx
-NDlaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
-QSBTZWN1cml0eSAxMDI0IFYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-gQDV3f5mCc8kPD6ugU5OisRpgFtZO9+5TUzKtS3DJy08rwBCbbwoppbPf9dY
-rIMKo1W1exeQFYRMiu4mmdxY78c4pqqv0I5CyGLXq6yp+0p9v+r+Ek3d/yYt
-bzZUaMjShFbuklNhCbM/OZuoyZu9zp9+1BlqFikYvtc6adwlWzMaUQIDAQAB
-o2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSME
-GDAWgBTEwBykB5T9zU0B1FTapQxf3q4FWjAdBgNVHQ4EFgQUxMAcpAeU/c1N
-AdRU2qUMX96uBVowDQYJKoZIhvcNAQEFBQADgYEAPy1q4yZDlX2Jl2X7deRy
-HUZXxGFraZ8SmyzVWujAovBDleMf6XbN3Ou8k6BlCsdNT1+nr6JGFLkM88y9
-am63nd4lQtBU/55oc2PcJOsiv6hy8l4A4Q1OOkNumU4/iXgDmMrzVcydro7B
-qkWY+o8aoI2II/EVQQ2lRj6RP4vr93E=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUF
-ADA6MRkwFwYDVQQKExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0Eg
-U2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAyMjIyMDM5MjNaFw0yNjAyMjIyMDM5
-MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAbBgNVBAsTFFJT
-QSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37
-RqtBaB4Y6lXIL5F4iSj7Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E
-0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgbWhOHV4PR8CDn6E8jQrAApX2J
-6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iHKrtjEAMq
-s6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzD
-uvsf9/UP+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2Mw
-YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAW
-gBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4EFgQUB8NRMKSq6UWuNST6
-/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmYv/3V
-EhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5g
-EydxiKRz44Rj0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+
-f00/FGj1EVDVwfSQpQgdMWD/YIwjVAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJq
-aHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395nzIlQnQFgCi/vcEk
-llgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
-pKnXwiJPZ9d37CAFYd4=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJK
-UDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0
-eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMw
-OTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1
-c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RD
-QTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8
-V6UMbXaKL0u/ZPtM7orw8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpx
-xpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uMDPpVmDvY6CKhS3E4eayXkmmz
-iX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX5HA49LY6
-tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819
-uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/L
-TX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZ
-aNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
-/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g0dNq
-/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94
-nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5
-Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNn
-PaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfci
-oU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
-FL39vmwLAw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJG
-STEPMA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENB
-MB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMC
-RkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue
-+H887dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mX
-y47vPxVnqIJyY1MPQYx9EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNY
-wBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JF
-hfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF6452F/NM8Ec
-yonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW
-1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB
-/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEB
-BQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuXZfsSZ9gqXLar
-5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxVyhbM
-p6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2
-nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv
-kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2y
-Ix4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJG
-STEPMA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENB
-MB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMC
-RkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE
-+hY3/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gX
-GM2RX/uJ4+q/Tl18GybTdXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQ
-TiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMGf+dJQMjFAbJUWmYdPfz56TwK
-noG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8PtOFCx4j1
-P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURr
-BGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB
-/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEB
-BQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zilzqsWuasvfDXL
-rNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEIcbCd
-jdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr4
-50kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6
-Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkeja
-nZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG
-EwJOTDEeMBwGA1UEChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQD
-Ex1TdGFhdCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQTAeFw0wMjEyMTcwOTIz
-NDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4wHAYDVQQKExVT
-dGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRl
-cmxhbmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEAmNK1URF6gaYUmHFtvsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rF
-DBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02PjLwYdjeFnejKScfST5gTCaI+
-Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGcaC1Hoi6Ce
-UJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7l
-r7HcsBthvJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4Zl
-kuxEK7COudxwC0barbxjiDn622r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGO
-MAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRVHSAAMDwwOgYIKwYBBQUH
-AgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9vdC1w
-b2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg
-0zTBLL9s+DANBgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k
-/rvuFbQvBgwp8qiSpGEN/KtcCFtREytNwiphyPgJWPwtArI5fZlmgb9uXJVF
-IGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbwMVcoEoJz6TMvplW0
-C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
-nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBp
-IzlWYGeQiy52OfsRiJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYV
-wSR8MnwDHTuhWEUykw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYT
-AkRFMRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYD
-VQQKEzFUQyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3
-b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAyIENB
-MSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAe
-Fw05ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJE
-RTEQMA4GA1UECBMHSGFtYnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UE
-ChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3VyaXR5IGluIERhdGEgTmV0d29y
-a3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTEp
-MCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8w
-DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmk
-qYov1YtcaF9QxmL1Zr3KkSLsqh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJO
-gtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5Nu6hLVxa8/vhYnvgpjbB7
-zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMBAf8w
-DgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRy
-dXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
-CSqGSIb3DQEBBAUAA4GBAIRS+yjf/x91AbwBvgRWl2p0QiQxg/lGsQaKic+W
-LDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ29ELw+HkuCkhcq8xR
-T3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
-ASZ4smZHcFFk
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYT
-AkRFMRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYD
-VQQKEzFUQyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3
-b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAzIENB
-MSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAe
-Fw05ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJE
-RTEQMA4GA1UECBMHSGFtYnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UE
-ChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3VyaXR5IGluIERhdGEgTmV0d29y
-a3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTEp
-MCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8w
-DQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQ
-GwfeLud2zODa/ISoXoxjaitN2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYn
-v68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+77uMMfTDWw1Krj10nnGvA
-o+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMBAf8w
-DgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRy
-dXN0Y2VudGVyLmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
-CSqGSIb3DQEBBAUAA4GBABY9xs3Bu4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4
-iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm5gZOngylerpuw3yC
-GdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
-CdS7kjXvD9s0
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQG
-EwJESzEVMBMGA1UEChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50
-ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUxNjMzMTdaFw0yMTA0MDUxNzAzMTda
-MEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJuZXQxHTAbBgNV
-BAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4Nr
-XceO+YQwzho7+vvOi20jxsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaq
-HF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvLznWv3Hv6gXPU/Lq9QYjUdLP5
-Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc5IogCSEW
-Vmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8n
-mHj9eQY6otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwID
-AQABo4IBJTCCASEwEQYJYIZIAYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBY
-oFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMMVERDIEludGVybmV0MR0w
-GwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JMMTAr
-BgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjAL
-BgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAw
-HQYDVR0OBBYEFGxkAcf9hW2syNqeUAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8w
-HQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
-A4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
-gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKs
-LtB9KOy282A4aW8+2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7T
-mHnaCB4Mb7j4Fifvwm899qNLPg7kbWzbO0ESm70NRyN/PErQr8Cv9u8btRXE
-64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrUCbz0vGbMPVjQ
-V0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQG
-EwJESzEMMAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0w
-MzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5MzBaMDExCzAJBgNVBAYTAkRLMQww
-CgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSj
-hFuHnEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8
-z3sM8W9Hpg1DTeLpHTk0zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJH
-hNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvViGjaXbXqzRowwYCDdlCqT9HU
-3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBdedObaE+3p
-Hx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTw
-tyv6e1mO3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
-Af8EBAMCAQYwgewGA1UdIASB5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYB
-BQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5kay9yZXBvc2l0b3J5MIGd
-BggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBmcmEg
-ZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
-LiBDZXJ0aWZpY2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIg
-T0lEIDEuMi4yMDguMTY5LjEuMS4xLjARBglghkgBhvhCAQEEBAMCAAcwgYEG
-A1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEMMAoGA1UEChMDVERD
-MRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
-aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0Q
-BCQwIoAPMjAwMzAyMTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0j
-BBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647+RIwHQYDVR0OBBYEFGC1hexWZH4S
-GSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDAN
-BgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBu
-o7E4A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjND
-fZziChmPyQE+dF10yYscA+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8Aqt
-FxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9AOoBmbgGglGBTvH1tJFUuSN6
-AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1AoLbrIyi
-gfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2Lq
-L19iUw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBl
-cnNvbmFsIEJhc2ljIENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNp
-Y0B0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVow
-gcsxCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNV
-BAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAm
-BgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24xITAfBgNV
-BAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBDQTEoMCYGCSqGSIb3DQEJARYZ
-cGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53dXLdjUmbllegeNTK
-P1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdKwPQIcOk8RHtQ
-fmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7G1sY0b8j
-kyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOB
-gQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7
-c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95
-B21P9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBl
-cnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1m
-cmVlbWFpbEB0aGF3dGUuY29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIz
-NTk1OVowgdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUx
-EjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRp
-bmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
-JDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBDQTErMCkGCSqG
-SIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTCBnzANBgkq
-hkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfYDFG26nKRsIRefS0N
-j3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5ErHzmj+hND3Ef
-QDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVquzgkCGqY
-x7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
-hkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP
-MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgC
-neSa/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr
-5PjRzneigQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlm
-aWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBl
-cnNvbmFsIFByZW1pdW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXBy
-ZW1pdW1AdGhhd3RlLmNvbTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5
-NTlaMIHPMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIw
-EAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5n
-MSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSMw
-IQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJlbWl1bSBDQTEqMCgGCSqGSIb3
-DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0VsBd/eJxZRNkERbGw7
-7f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWIEt12TfIa/G8j
-Hnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYDZicRFTuq
-W/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3
-DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH
-b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVx
-eTBhKXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1
-KzGJ
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
-dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3Rl
-IFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNl
-cnZlckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1
-OVowgc4xCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQ
-BgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMUVGhhd3RlIENvbnN1bHRpbmcg
-Y2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2aXNpb24x
-ITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3
-DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0B
-AQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhI
-NTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQug2SBhRz1JPL
-lyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/qgeN
-9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B
-AQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI
-hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZ
-a4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcU
-Qg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3du
-MR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2Vy
-dGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3Rl
-IFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkG
-A1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2Fw
-ZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UE
-CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQ
-VGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRz
-QHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I
-/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC
-6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCXL+eQbcAoQpnX
-TEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzARMA8G
-A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWD
-TSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e
-QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdni
-TCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMC
-WkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmls
-bGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmlj
-YXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcw
-MTAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTAT
-BgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN
-BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24x
-HzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcN
-AQEBBQADgY0AMIGJAoGBANYrWHhhRYZT6jR7UZztsOYuGA7+4F+oJ9O0yeB8
-WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQaWt9MevPZQx08EHp5JduQ/vBR
-5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL8vg7ij5FrHGSALSQQZj7
-X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN
-AQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC9RAIDb/LogWK
-0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQpgCed/r8
-zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZCayJ
-SdM=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUF
-ADCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
-IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
-HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVU
-Ti1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0
-ODM5WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgT
-AlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVT
-RVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVz
-dC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNh
-dGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZV
-hawGNFugmliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAb
-GHNhSuh+zdMvZOOmfAz6F4CjDUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZ
-NaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXuOzr0hAReYFmnjDRy7rh4
-xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwiP8vv
-/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7i
-gEL66S/ozjIEj3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQD
-AgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFPqGydvguul49Uuo1hXf
-8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9jcmwudXNlcnRydXN0
-LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
-CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXh
-i6r/fWRRzwr/vH3YIWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUq
-f9FuVSTiuwL7MT++6LzsQCv4AdRWOOTKRIK1YSAhZ2X28AvnNPilwpyjXEAf
-hZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4QpxFq9ZFdyrTvP
-NximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+
-FTAqDbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjis
-H8SE
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUF
-ADCBkzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
-IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
-HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVU
-TiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2
-MzBaMIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNh
-bHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
-ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTEbMBkGA1UEAxMS
-VVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+O
-GQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrr
-U0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrL
-Z9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykqlXvY8qdOD1R8
-oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv33i+
-Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4Gr
-MIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT
-MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8v
-Y3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUE
-IzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
-DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHc
-rpY6CiM+iVnJowftGzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuM
-FrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1
-+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdO
-jtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jF
-VkwPDPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUF
-ADCBrjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
-IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
-HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVU
-Ti1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAe
-Fw05OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJV
-UzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD
-VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93
-d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJzdC1DbGll
-bnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxq
-mNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqk
-kqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6lL8/K2m2qL+us
-obNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHGTPNp
-saguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZU
-Ot4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws
-6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0G
-A1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJ
-hkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
-bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEF
-BQcDAgYIKwYBBQUHAwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rk
-MPxTbyUkxsrt4jFcKw7u7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK
-2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/
-bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJR
-warVNZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf
-6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQ
-jvLzxq4oW6fw8zYX/MMF08oDSlQ=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUF
-ADCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
-IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
-HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVU
-Ti1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5
-MTgxOTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQH
-Ew5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3
-b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNV
-BAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZ
-FvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6N
-q9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEH
-OG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNdoI6yqqr2jmmI
-BsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjfPe58
-BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhb
-AgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
-VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWG
-M2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3
-YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
-BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0o
-XnWO6y1n7k57K9cM//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjA
-bPLPSbtNk28GpgoiskliCE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59
-Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4f
-Fm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchq
-J/kniCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0q
-UZ6B+dQ7XnASfxAynB67nfhmqA==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUF
-ADCBlTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0
-IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEw
-HwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVU
-Ti1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4
-NDAzNlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMO
-U2FsdCBMYWtlIENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29y
-azEhMB8GA1UECxMYaHR0cDovL3d3dy51c2VydHJ1c3QuY29tMR0wGwYDVQQD
-ExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEBBQADggEP
-ADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r55
-96Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc
-/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2
-yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+pKvEHDHd17bR
-5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7RwvC
-bNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEA
-AaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
-FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0
-cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNy
-bDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
-DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXF
-wfNfLEzIR1pp6ujwNTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T
-7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85
-dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U
-+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCA
-GKCGhU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2o
-Ps0AH8g=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
-ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
-Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRp
-b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
-bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
-NTIyMjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
-IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
-NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24g
-QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
-IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw
-8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m
-+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8YTfwggtFzVXSN
-dnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwGlN+V
-YH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8so
-gTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw
-nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlD
-ZXJ0IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIElu
-Yy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRp
-b24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNv
-bS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYy
-NjAwMTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0
-IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4x
-NTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24g
-QXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8x
-IDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3
-DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc
-65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQ
-b7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QSv4dk+NoS/zcn
-wbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZSWI4
-OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZ
-oDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC
-W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8x
-CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UE
-CxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNV
-BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh
-c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCB
-nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3
-noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw0FaEGIeaBpsQoXPftFg5a27B
-9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7NsljXMXg
-1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBM
-P7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P
-/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjj
-t/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89FxlA==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcEx
-CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
-CxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
-IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
-A1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
-LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
-biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq
-0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9
-Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSmFc/IReumXY6c
-PvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQABMA0G
-CSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9Zr
-bWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul
-uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4i
-P/68DzFc6PLZ
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHK
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
-BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
-IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
-BgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlm
-aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
-MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
-IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
-BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
-dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFBy
-aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRR
-ZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO8ESlV8dAWB6j
-Rx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJrKsh
-JlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7P
-oBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2
-6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHh
-v2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQ
-BfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
-y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUf
-xJM8/XmPBNQ+T+r3ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFM
-DSZl4kSAHsef493oCtrspSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5
-SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXV
-OBRgmaNL3gaWcSzy27YfpO8/7g==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDnjCCAwegAwIBAgIQK2jUo0aexTsoCas4XX8nIDANBgkqhkiG9w0BAQUF
-ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
-BgNVBAsTLkNsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDAwODA0MDAwMDAwWhcNMDQwODAzMjM1OTU5WjCBpzEX
-MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
-L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAx
-IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQC57V56Ondfzl86UvzNZPdxtW9qlsZZklWUXS9bLsER
-6iaKy6eBPPZaRN56Ey/9WlHZezcmSsAnPwQDalbBgyzhb1upVFAkSsYuekyh
-WzdUJCExH6F4GHansXDaItBq/gdiQMb39pt9DAa4S8co5GYjhFHvRreT2IEz
-y+U2rMboBQIDAQABo4IBEDCCAQwwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
-CE9DU1AgMS0xMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNp
-Z24uY29tL3BjYTEuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEIGCCsGAQUF
-BwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJpc2lnbi5j
-b20vb2NzcC9zdGF0dXMwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcBATAqMCgG
-CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vUlBBMAkGA1Ud
-EwQCMAAwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBBQUAA4GBAHCQ3bjkvlMX
-fH8C6dX3i5mTMWCNfuZgayTvYKzSzpHegG0JpNO4OOVEynJeDS3Bd5y9LAN4
-KY2kpXeH9fErJq3MB2w6VFoo4AnzTQoEytRYaQuns/XdAaXn3PAfusFdkI2z
-6k/BEVmXarIrE7HarZehs7GgIFvKMquNzxPwHynD
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzEL
-MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL
-Ey5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
-aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
-cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZM
-JaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvE
-erf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/S2wj1VCC
-JkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIob
-K/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxg
-MxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3
-Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHB
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNV
-BAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4g
-LSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24g
-VHJ1c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTla
-MIHBMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6
-BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIElu
-Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNp
-Z24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
-p4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkf
-rbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjwDqL7MWzJ5m+Z
-Jwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEAATAN
-BgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/
-7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX
-rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6x
-RnInjBJ7xUS0rg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcox
-CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UE
-CxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkg
-VmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMG
-A1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcx
-NjIzNTk1OVowgcoxCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwg
-SW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UE
-CxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1
-c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJp
-bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY8
-1nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDOJxOeBUebMXoT
-2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7C9UT
-AJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQ
-HgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN
-qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVC
-YQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekh
-ktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
-0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydE
-p85EXdQbkJgNHkKUsQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377B
-MnMiIYtYgXsVkXq642RIsH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab
-5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//jGHyJizNdrDPX
-p/naOlXJWBD5qu9ats9LS98q
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDnjCCAwegAwIBAgIQCUYX5h3Y1BygDKBi6HmKpzANBgkqhkiG9w0BAQUF
-ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
-BgNVBAsTLkNsYXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDAwODAxMDAwMDAwWhcNMDQwNzMxMjM1OTU5WjCBpzEX
-MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
-L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAy
-IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQDQymMxYX9ENHwFfQs9apDLeUt3Cj9LxyPlwGItfpx+
-PoiHkdCs6E1Jh6KWkIrdBKUCP4yb6Yn+YqDiWr3I3bR45qVCkwhnAcAgTddc
-9F3as+M3plIaLExlTYqH2aij8UlUuzxcgFFoxvtJ/wtVqxXd+5rBuR10DbKM
-RF2J/J/5gwIDAQABo4IBEDCCAQwwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
-CE9DU1AgMS0yMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwudmVyaXNp
-Z24uY29tL3BjYTIuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEIGCCsGAQUF
-BwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJpc2lnbi5j
-b20vb2NzcC9zdGF0dXMwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcBATAqMCgG
-CCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vUlBBMAkGA1Ud
-EwQCMAAwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBBQUAA4GBAB99CW4kRnUE
-nPMmm+M5bhfvvL2iG9IChIar0ECXLMRDiDcZayKoA3FQnSDcNmAgmnMtc1Vs
-WJsswrQ0LHozQsqR2elDr88e4PXEeqs/cmMeqTfhWzuIsxOGgpBXy1f/9Fa+
-It3jl6jhvCJDwt1N2/aBnpIUnjkPE1TegtjAXjSN
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzEL
-MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQL
-Ey5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
-aXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UE
-BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz
-cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69q
-RUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94f56TuZoAqiN91qyFomNFx3In
-zPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Olhec9vn2a
-/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtM
-EivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPw
-TtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzk
-uxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcEx
-CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
-CxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
-IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
-A1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
-LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
-biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDM
-XtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXX
-wc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg013gfqLptQ5GV
-j0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQABMA0G
-CSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01U
-bSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i
-F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo
-1KpYoJ2daZH9
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHK
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
-BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
-IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
-BgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlm
-aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
-MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
-IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
-BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
-dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFBy
-aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2
-R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2tKmFZpGcmTNDo
-vFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUccLwg
-TS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+V
-k7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ
-Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJ
-OxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my
-/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
-j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoA
-Wii/gt/4uhMdUIaC/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8S
-GhJouPtmmRQURVyu565pF4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbb
-o27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh
-/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDojCCAwugAwIBAgIQLpaev7ZibOx76XPM42zBhDANBgkqhkiG9w0BAQUF
-ADBfMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1
-BgNVBAsTLkNsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBB
-dXRob3JpdHkwHhcNMDAwODA0MDAwMDAwWhcNMDQwODAzMjM1OTU5WjCBpzEX
-MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
-dXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBhdCBodHRwczov
-L3d3dy52ZXJpc2lnbi5jb20vUlBBIChjKTAwMS4wLAYDVQQDEyVDbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IE9DU1AgUmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEB
-AQUAA4GNADCBiQKBgQDx5AgOg7t140jluNum8Lmr6Txix141W9ACVBHYydFW
-uXZLuat65s269gwE1n7WsAplrE454/H3LaMlOe+wi8++2wxdbnD0B81w9zrA
-PjUW7XiMQ8/CJi5H1oZ9nPG+1mcMIiWkymXmH3p4KC8/BdsEIb/hRWb+PLeC
-7Vq4FhW5VQIDAQABo4IBFDCCARAwIAYDVR0RBBkwF6QVMBMxETAPBgNVBAMT
-CE9DU1AgMS0zMDUGA1UdHwQuMCwwKqAooCaGJGh0dHA6Ly9jcmwudmVyaXNp
-Z24uY29tL3BjYTMuMS4xLmNybDATBgNVHSUEDDAKBggrBgEFBQcDCTBCBggr
-BgEFBQcBAQQ2MDQwMgYIKwYBBQUHMAGmJhYkaHR0cDovL29jc3AudmVyaXNp
-Z24uY29tL29jc3Avc3RhdHVzMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQEw
-KjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL1JQQTAJ
-BgNVHRMEAjAAMAsGA1UdDwQEAwIHgDANBgkqhkiG9w0BAQUFAAOBgQAC9lNj
-wKke8tCLMzCPSJtMsFa0g3FKvtxQ2PW24AvbvXhP6c8JNNopSZ0Bc1qRkYJU
-LBMK03cjzzf8Y96n4/a3tWlFKEnDkdyqRxypiJksBSqNjYr6YuJatwAgXTnE
-KMLL/J6oia5bPY4S6jKy/OsU1wkVGsDNG9W1FU5B1ZbjTg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcEx
-CzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UE
-CxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAt
-IEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-gcExCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoG
-A1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1
-dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5j
-LiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2ln
-biBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6
-8OTP+cSuhVS5B1f5j8V/aBH4xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTK
-QWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDHqGKB3FtKqsGgtG7rL+VX
-xbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQABMA0G
-CSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGI
-L4LcY/oCRaxFWdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0y
-cyfYaT5DdPauxYma51N86Xv2S/PBZYPejYqcPIiNOVn8qj8ijaHBZlCBckzt
-ImRPT8qAkbYp
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHK
-MQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNV
-BAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5
-IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBD
-BgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlm
-aWNhdGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3
-MTYyMzU5NTlaMIHKMQswCQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24s
-IEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNV
-BAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQg
-dXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFBy
-aW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
-hvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYl
-S+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ+mGuqPKljYXC
-KtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM8BDc
-VHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdL
-MEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY
-ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDD
-Zq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1Wr
-IhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
-mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csK
-vE+MW8VLADsfKoKmfjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluP
-QSjA1egtTaRezarZ7c7c2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kP
-mF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr
-9Xgn2uf3ZkPznoM+IKrDNWCRzg==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzEL
-MAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMu
-MS4wLAYDVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9y
-aXR5MB4XDTk0MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UE
-BhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD
-VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGb
-MA0GCSqGSIb3DQEBAQUAA4GJADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6O
-LDfO6zV4ZFQD5YRAUcm/jwjiioII0haGN1XpsSECrXZogZoFokvJSyVmIlZs
-iAeP94FZbYQHZXATcXY+m3dM41CJVphIuR2nKRoTLkoRWZweFdVJVCxzOmmC
-sZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZIhvcNAQECBQADfgBl3X7hsuyw
-4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3YQO2WxZpO8ZECAyIUwxr
-l0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc1/p3yjkWWW8O6tO1
-g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDnzCCAwygAwIBAgIRAP9F1SddJPuzwjkkU1fhT94wDQYJKoZIhvcNAQEF
-BQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5
-LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5MB4XDTAwMDgwNDAwMDAwMFoXDTA0MDgwMzIzNTk1OVowgZ4x
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
-cnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2UgYXQgaHR0cHM6
-Ly93d3cudmVyaXNpZ24uY29tL1JQQSAoYykwMDElMCMGA1UEAxMcU2VjdXJl
-IFNlcnZlciBPQ1NQIFJlc3BvbmRlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
-gYkCgYEAuFGZZIUO7rMKaPC/Y3YdU/X8oXiMM+6f9L452psPTUepjyDoS0S9
-zs17kNEw6JDEJXuJKN699pMd/7n/krWpjeSuzOLDB4Nqo3IQASdiIqY1Jjkt
-ns9gDPxHpNfQQninHWzQy08VpykKtJVFxLHnWgnXOZXYHTWewr2zXcEMSx8C
-AwEAAaOCAR0wggEZMCAGA1UdEQQZMBekFTATMREwDwYDVQQDEwhPQ1NQIDEt
-NDA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY3JsLnZlcmlzaWduLmNvbS9S
-U0FTZWN1cmVTZXJ2ZXItcC5jcmwwEwYDVR0lBAwwCgYIKwYBBQUHAwkwQgYI
-KwYBBQUHAQEENjA0MDIGCCsGAQUFBzABpiYWJGh0dHA6Ly9vY3NwLnZlcmlz
-aWduLmNvbS9vY3NwL3N0YXR1czBEBgNVHSAEPTA7MDkGC2CGSAGG+EUBBwEB
-MCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9SUEEw
-CQYDVR0TBAIwADALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQEFBQADfgAAsxBT
-ZpxJky4xoAJC0lhXfmah/huKYRhQQCweK0Gl1tv/rAgcWgVtAlwqtpZPR9u+
-TtvOzLqGuBjOsRKRX2P380g+zPFNE+RtCZR4AJLLoyCdBgtqoEMHztEZbI8Y
-dZqfFzP9qSa44+LewqjEWop/mNYHBmvMVp6GcM7U7w==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDzTCCAzagAwIBAgIQU2GyYK7bcY6nlLMTM/QHCTANBgkqhkiG9w0BAQUF
-ADCBwTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTww
-OgYDVQQLEzNDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24g
-QXV0aG9yaXR5IC0gRzIxOjA4BgNVBAsTMShjKSAxOTk4IFZlcmlTaWduLCBJ
-bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAsTFlZlcmlT
-aWduIFRydXN0IE5ldHdvcmswHhcNMDAwOTI2MDAwMDAwWhcNMTAwOTI1MjM1
-OTU5WjCBpTEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl
-cmlTaWduIFRydXN0IE5ldHdvcmsxOzA5BgNVBAsTMlRlcm1zIG9mIHVzZSBh
-dCBodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhIChjKTAwMSwwKgYDVQQD
-EyNWZXJpU2lnbiBUaW1lIFN0YW1waW5nIEF1dGhvcml0eSBDQTCBnzANBgkq
-hkiG9w0BAQEFAAOBjQAwgYkCgYEA0hmdZ8IAIVlizrQJIkRpivglWtvtDbc2
-fk7gu5Q+kCWHwmFHKdm9VLhjzCx9abQzNvQ3B5rB3UBU/OB4naCTuQk9I1F/
-RMIUdNsKvsvJMDRAmD7Q1yUQgZS9B0+c1lQn3y6ov8uQjI11S7zi6ESHzeZB
-CiVu6PQkAsVSD27smHUCAwEAAaOB3zCB3DAPBgNVHRMECDAGAQH/AgEAMEUG
-A1UdIAQ+MDwwOgYMYIZIAYb4RQEHFwEDMCowKAYIKwYBBQUHAgEWHGh0dHBz
-Oi8vd3d3LnZlcmlzaWduLmNvbS9ycGEwMQYDVR0fBCowKDAmoCSgIoYgaHR0
-cDovL2NybC52ZXJpc2lnbi5jb20vcGNhMy5jcmwwCwYDVR0PBAQDAgEGMEIG
-CCsGAQUFBwEBBDYwNDAyBggrBgEFBQcwAaYmFiRodHRwOi8vb2NzcC52ZXJp
-c2lnbi5jb20vb2NzcC9zdGF0dXMwDQYJKoZIhvcNAQEFBQADgYEAgnBold+2
-DcIBcBlK0lRWHqzyRUyHuPU163hLBanInTsZIS5wNEqi9YngFXVF5yg3ADQn
-Keg3S/LvRJdrF1Eaw1adPBqK9kpGRjeM+sv1ZFo4aC4cw+9wzrhGBha/937n
-tag+RaypJXUie28/sJyU58dzq6wf7iWbwBbtt8pb8BQ=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDgDCCAmigAwIBAgICAx4wDQYJKoZIhvcNAQEFBQAwYTELMAkGA1UEBhMC
-VVMxDTALBgNVBAoTBFZJU0ExLzAtBgNVBAsTJlZpc2EgSW50ZXJuYXRpb25h
-bCBTZXJ2aWNlIEFzc29jaWF0aW9uMRIwEAYDVQQDEwlHUCBSb290IDIwHhcN
-MDAwODE2MjI1MTAwWhcNMjAwODE1MjM1OTAwWjBhMQswCQYDVQQGEwJVUzEN
-MAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNl
-cnZpY2UgQXNzb2NpYXRpb24xEjAQBgNVBAMTCUdQIFJvb3QgMjCCASIwDQYJ
-KoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkBcLWqxEDwq2omYXkZAPy/mzdZ
-DK9vZBv42pWUJGkzEXDK41Z0ohdXZFwgBuHW73G3O/erwWnQSaSxBNf0V2KJ
-XLB1LRckaeNCYOTudNargFbYiCjh+20i/SN8RnNPflRzHqgsVVh1t0zzWkWl
-Ahr62p3DRcMiXvOL8WAp0sdftAw6UYPvMPjU58fy+pmjIlC++QU3o63tmsPm
-7IgbthknGziLgE3sucfFicv8GjLtI/C1AVj59o/ghalMCXI5Etuz9c9OYmTa
-xhkVOmMd6RdVoUwiPDQyRvhlV7or7zaMavrZ2UT0qt2E1w0cslSsMoW0ZA3e
-QbuxNMYBhjJk1Z8CAwEAAaNCMEAwHQYDVR0OBBYEFJ59SzS/ca3CBfYDdYDO
-qU8axCRMMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqG
-SIb3DQEBBQUAA4IBAQAhpXYUVfmtJ3CPPPTVbMjMCqujmAuKBiPFyWHbmQdp
-NSYx/scuhMKZYdQN6X0uEyt8joW2hcdLzzW2LEc9zikv2G+fiRxkk78IvXbQ
-kIqUs38oW26sTTMs7WXcFsziza6kPWKSBpUmv9+55CCmc2rBvveURNZNbyoL
-axhNdBA2aGpawWqn3TYpjLgwi08hPwAuVDAHOrqK5MOeyti12HvOdUVmB/Rt
-Ldh6yumJivIj2C/LbgA2T/vwLwHMD8AiZfSr4k5hLQOCfZEWtTDVFN5ex5D8
-ofyrEK9ca3CnB+8phuiyJccg/ybdd+95RBTEvd07xQObdyPsoOy7Wjm1zK0G
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUF
-ADBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlz
-YSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMT
-E1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0
-MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UE
-CxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAa
-BgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA
-A4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh
-28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8bRaVK7362
-rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81
-q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtF
-Wsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0
-lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaLdXe6YJ2E5/4t
-AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
-A1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOC
-AQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR
-zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKht
-cbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGI
-xHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
-YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/
-hC3euiInlhBx6yLt398znM/jra6O1I7mT1GvFpLgXPYHDw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFajCCBFKgAwIBAgIEPLU9RjANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQK
-EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEG
-A1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0EtQmFsdGltb3JlIEltcGxlbWVudGF0
-aW9uMB4XDTAyMDQxMTA3Mzg1MVoXDTIyMDQxMTA3Mzg1MVowZjESMBAGA1UE
-ChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAx
-BgNVBAMTKmJlVFJVU1RlZCBSb290IENBLUJhbHRpbW9yZSBJbXBsZW1lbnRh
-dGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALx+xDmcjOPW
-HIb/ymKt4H8wRXqOGrO4x/nRNv8i805qX4QQ+2aBw5R5MdKR4XeOGCrDFN5R
-9U+jK7wYFuK13XneIviCfsuBH/0nLI/6l2Qijvj/YaOcGx6Sj8CoCd8JEey3
-fTGaGuqDIQY8n7pc/5TqarjDa1U0Tz0yH92BFODEPM2dMPgwqZfT7syj0B9f
-HBOB1BirlNFjw55/NZKeX0Tq7PQiXLfoPX2k+YmpkbIq2eszh+6l/ePazIjm
-iSZuxyuC0F6dWdsU7JGDBcNeDsYq0ATdcT0gTlgn/FP7eHgZFLL8kFKJOGJg
-B7Sg7KxrUNb9uShr71ItOrL/8QFArDcCAwEAAaOCAh4wggIaMA8GA1UdEwEB
-/wQFMAMBAf8wggG1BgNVHSAEggGsMIIBqDCCAaQGDysGAQQBsT4AAAEJKIOR
-MTCCAY8wggFIBggrBgEFBQcCAjCCAToaggE2UmVsaWFuY2Ugb24gb3IgdXNl
-IG9mIHRoaXMgQ2VydGlmaWNhdGUgY3JlYXRlcyBhbiBhY2tub3dsZWRnbWVu
-dCBhbmQgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5k
-YXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgdGhlIENlcnRpZmlj
-YXRpb24gUHJhY3RpY2UgU3RhdGVtZW50IGFuZCB0aGUgUmVseWluZyBQYXJ0
-eSBBZ3JlZW1lbnQsIHdoaWNoIGNhbiBiZSBmb3VuZCBhdCB0aGUgYmVUUlVT
-VGVkIHdlYiBzaXRlLCBodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20vcHJvZHVj
-dHNfc2VydmljZXMvaW5kZXguaHRtbDBBBggrBgEFBQcCARY1aHR0cDovL3d3
-dy5iZXRydXN0ZWQuY29tL3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWww
-HQYDVR0OBBYEFEU9w6nR3D8kVpgccxiIav+DR+22MB8GA1UdIwQYMBaAFEU9
-w6nR3D8kVpgccxiIav+DR+22MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0B
-AQUFAAOCAQEASZK8o+6svfoNyYt5hhwjdrCAWXf82n+0S9/DZEtqTg6t8n1Z
-dwWtColzsPq8y9yNAIiPpqCy6qxSJ7+hSHyXEHu67RMdmgduyzFiEuhjA6p9
-beP4G3YheBufS0OM00mG9htc9i5gFdPp43t1P9ACg9AYgkHNZTfqjjJ+vWuZ
-XTARyNtIVBw74acT02pIk/c9jH8F6M7ziCpjBLjqflh8AXtb4cV97yHgjQ5d
-UX2xZ/2jvTg2xvI4hocalmhgRvsoFEdV4aeADGvi6t9NfJBIoDa9CReJf8Py
-05yc493EG931t3GzUwWJBtDLSoDByFOQtTwxiBdQn8nEDovYqAJjDQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFLDCCBBSgAwIBAgIEOU99hzANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQG
-EwJXVzESMBAGA1UEChMJYmVUUlVTVGVkMRswGQYDVQQDExJiZVRSVVNUZWQg
-Um9vdCBDQXMxGjAYBgNVBAMTEWJlVFJVU1RlZCBSb290IENBMB4XDTAwMDYy
-MDE0MjEwNFoXDTEwMDYyMDEzMjEwNFowWjELMAkGA1UEBhMCV1cxEjAQBgNV
-BAoTCWJlVFJVU1RlZDEbMBkGA1UEAxMSYmVUUlVTVGVkIFJvb3QgQ0FzMRow
-GAYDVQQDExFiZVRSVVNUZWQgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBANS0c3oTCjhVAb6JVuGUntS+WutKNHUbYSnE4a0IYCF4
-SP+00PpeQY1hRIfo7clY+vyTmt9P6j41ffgzeubx181vSUs9Ty1uDoM6GHh3
-o8/n9E1z2Jo7Gh2+lVPPIJfCzz4kUmwMjmVZxXH/YgmPqsWPzGCgc0rXOD8V
-cr+il7dw6K/ifhYGTPWqZCZyByWtNfwYsSbX2P8ZDoMbjNx4RWc0PfSvHI3k
-bWvtILNnmrRhyxdviTX/507AMhLn7uzf/5cwdO2NR47rtMNE5qdMf1ZD6Li8
-tr76g5fmu/vEtpO+GRg+jIG5c4gW9JZDnGdzF5DYCW5jrEq2I8QBoa2k5MUC
-AwEAAaOCAfgwggH0MA8GA1UdEwEB/wQFMAMBAf8wggFZBgNVHSAEggFQMIIB
-TDCCAUgGCisGAQQBsT4BAAAwggE4MIIBAQYIKwYBBQUHAgIwgfQagfFSZWxp
-YW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVz
-IGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0
-ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGFuZCBjZXJ0aWZpY2F0aW9u
-IHByYWN0aWNlIHN0YXRlbWVudCwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0IGJl
-VFJVU1RlZCdzIHdlYiBzaXRlLCBodHRwczovL3d3dy5iZVRSVVNUZWQuY29t
-L3ZhdWx0L3Rlcm1zMDEGCCsGAQUFBwIBFiVodHRwczovL3d3dy5iZVRSVVNU
-ZWQuY29tL3ZhdWx0L3Rlcm1zMDQGA1UdHwQtMCswKaAnoCWkIzAhMRIwEAYD
-VQQKEwliZVRSVVNUZWQxCzAJBgNVBAYTAldXMB0GA1UdDgQWBBQquZtpLjub
-2M3eKjEENGvKBxirZzAfBgNVHSMEGDAWgBQquZtpLjub2M3eKjEENGvKBxir
-ZzAOBgNVHQ8BAf8EBAMCAf4wDQYJKoZIhvcNAQEFBQADggEBAHlh26Nebhax
-6nZR+csVm8tpvuaBa58oH2U+3RGFktToQb9+M70j5/Egv6S0phkBxoyNNXxl
-pE8JpNbYIxUFE6dDea/bow6be3ga8wSGWsb2jCBHOElQBp1yZzrwmAOtlmdE
-/D8QDYZN5AA7KXvOOzuZhmElQITcE2K3+spZ1gMe1lMBzW1MaFVA4e5rxyoA
-AEiCswoBw2AqDPeCNe5IhpbkdNQ96gFxugR1QKepfzk5mlWXKWWuGVUlBXJH
-0+gY3Ljpr0NzARJ0o+FcXxVdJPP55PS2Z2cS52QiivalQaYctmBjRYoQtLpG
-EK5BV2VsPyMQPyEQWbfkQN0mDCP2qq4=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIGUTCCBTmgAwIBAgIEPLVPQDANBgkqhkiG9w0BAQUFADBmMRIwEAYDVQQK
-EwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290IENBczEzMDEG
-A1UEAxMqYmVUUlVTVGVkIFJvb3QgQ0EgLSBFbnRydXN0IEltcGxlbWVudGF0
-aW9uMB4XDTAyMDQxMTA4MjQyN1oXDTIyMDQxMTA4NTQyN1owZjESMBAGA1UE
-ChMJYmVUUlVTVGVkMRswGQYDVQQLExJiZVRSVVNUZWQgUm9vdCBDQXMxMzAx
-BgNVBAMTKmJlVFJVU1RlZCBSb290IENBIC0gRW50cnVzdCBJbXBsZW1lbnRh
-dGlvbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALr0RAOqEmq1
-Q+xVkrYwfTVXDNvzDSduTPdQqJtOK2/b9a0cS12zqcH+e0TrW6MFDR/FNCsw
-ACnxeECypP869AGIF37m1CbTukzqMvtDd5eHI8XbQ6P1KqNRXuE70mVpflUV
-m3rnafdE4Fe1FehmYA8NA/uCjqPoEXtsvsdjDheT389Lrm5zdeDzqrmkwAkb
-hepxKYhBMvnwKg5sCfJ0a2ZsUhMfGLzUPvfYbiCeyv78IZTuEyhL11xeDGbu
-6bsPwTSxfwh28z0mcMmLJR1iJAzqHHVOwBLkuhMdMCktVjMFu5dZfsZJT4nX
-LySotohAtWSSU1Yk5KKghbNekLQSM80CAwEAAaOCAwUwggMBMIIBtwYDVR0g
-BIIBrjCCAaowggGmBg8rBgEEAbE+AAACCSiDkTEwggGRMIIBSQYIKwYBBQUH
-AgIwggE7GoIBN1JlbGlhbmNlIG9uIG9yIHVzZSBvZiB0aGlzIENlcnRpZmlj
-YXRlIGNyZWF0ZXMgYW4gYWNrbm93bGVkZ21lbnQgYW5kIGFjY2VwdGFuY2Ug
-b2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29u
-ZGl0aW9ucyBvZiB1c2UsIHRoZSBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0
-YXRlbWVudCBhbmQgdGhlIFJlbHlpbmcgUGFydHkgQWdyZWVtZW50LCB3aGlj
-aCBjYW4gYmUgZm91bmQgYXQgdGhlIGJlVFJVU1RlZCB3ZWIgc2l0ZSwgaHR0
-cHM6Ly93d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRl
-eC5odG1sMEIGCCsGAQUFBwIBFjZodHRwczovL3d3dy5iZXRydXN0ZWQuY29t
-L3Byb2R1Y3RzX3NlcnZpY2VzL2luZGV4Lmh0bWwwEQYJYIZIAYb4QgEBBAQD
-AgAHMIGJBgNVHR8EgYEwfzB9oHugeaR3MHUxEjAQBgNVBAoTCWJlVFJVU1Rl
-ZDEbMBkGA1UECxMSYmVUUlVTVGVkIFJvb3QgQ0FzMTMwMQYDVQQDEypiZVRS
-VVNUZWQgUm9vdCBDQSAtIEVudHJ1c3QgSW1wbGVtZW50YXRpb24xDTALBgNV
-BAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMjA0MTEwODI0MjdagQ8yMDIyMDQx
-MTA4NTQyN1owCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFH1w5a44iwY/qhwa
-j/nPJDCqhIQWMB0GA1UdDgQWBBR9cOWuOIsGP6ocGo/5zyQwqoSEFjAMBgNV
-HRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6NC4wAwIEkDANBgkq
-hkiG9w0BAQUFAAOCAQEAKrgXzh8QlOu4mre5X+za95IkrNySO8cgjfKZ5V04
-ocI07cUTWVwFtStPYZuR+0H8/NU8TZh2BvWBfevdkObRVlTa4y0MnxEylCIB
-evZsLHRnBMylj44ss0O1lKLQfelifwa+JwGDnjr9iu6YQ0pr17WXOzq/T220
-Y/ozADQuLW2WyXvKmWO6vvT2MKAtmJbpVkQFqUSjYRDrgqFnXbxdJ3Wqiig2
-KjiS2d2kXgClzMx8KSreKJCrt+G2/30lC0DYqjSjLd4H61/OCt3Kfjp9JsFi
-aDrmLzfzgYYhxKlkqu9FNtEaZnz46TfW1mG+oq1I59/mdP7TbX3SJdysYlep
-9w==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFaDCCBFCgAwIBAgIQO1nHe81bV569N1KsdrSqGjANBgkqhkiG9w0BAQUF
-ADBiMRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBS
-b290IENBczEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1w
-bGVtZW50YXRpb24wHhcNMDIwNDExMTExODEzWhcNMjIwNDEyMTEwNzI1WjBi
-MRIwEAYDVQQKEwliZVRSVVNUZWQxGzAZBgNVBAsTEmJlVFJVU1RlZCBSb290
-IENBczEvMC0GA1UEAxMmYmVUUlVTVGVkIFJvb3QgQ0EgLSBSU0EgSW1wbGVt
-ZW50YXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkujQw
-CY5X0LkGLG9uJIAiv11DpvpPrILnHGhwhRujbrWqeNluB0s/6d/16uhUoWGK
-Di9pdRi3DOUUjXFumLhV/AyV0Jtu4S2I1DpAa5LxmZZk3tv/ePTulh1HiXzU
-vrmIdyM6CeYEnm2qXtLIvZpOGd+J6lsOfsPktPDgaTuID0GQ+NRxQyTBjyZL
-O1bp/4xsN+lFrYWMU8NghpBKlsmzVLC7F/AcRdnUGxlkVgoZ98zh/4avflhe
-rHqQH8koOUV7orbHnB/ahdQhhlkwk75TMzf270HPM8ercmsl9fNTGwxMLvF1
-S++gh/f+ihXQbNXL+WhTuXAVE8L1LvtDNXUtAgMBAAGjggIYMIICFDAMBgNV
-HRMEBTADAQH/MIIBtQYDVR0gBIIBrDCCAagwggGkBg8rBgEEAbE+AAADCSiD
-kTEwggGPMEEGCCsGAQUFBwIBFjVodHRwOi8vd3d3LmJldHJ1c3RlZC5jb20v
-cHJvZHVjdHNfc2VydmljZXMvaW5kZXguaHRtbDCCAUgGCCsGAQUFBwICMIIB
-OhqCATZSZWxpYW5jZSBvbiBvciB1c2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBj
-cmVhdGVzIGFuIGFja25vd2xlZGdtZW50IGFuZCBhY2NlcHRhbmNlIG9mIHRo
-ZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv
-bnMgb2YgdXNlLCB0aGUgQ2VydGlmaWNhdGlvbiBQcmFjdGljZSBTdGF0ZW1l
-bnQgYW5kIHRoZSBSZWx5aW5nIFBhcnR5IEFncmVlbWVudCwgd2hpY2ggY2Fu
-IGJlIGZvdW5kIGF0IHRoZSBiZVRSVVNUZWQgd2ViIHNpdGUsIGh0dHA6Ly93
-d3cuYmV0cnVzdGVkLmNvbS9wcm9kdWN0c19zZXJ2aWNlcy9pbmRleC5odG1s
-MAsGA1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSp7BR++dlDzFMrFK3P9/BZiUHN
-GTAdBgNVHQ4EFgQUqewUfvnZQ8xTKxStz/fwWYlBzRkwDQYJKoZIhvcNAQEF
-BQADggEBANuXsHXqDMTBmMpWBcCorSZIry0g6IHHtt9DwSwddUvUQo3neqh0
-3GZCWYez9Wlt2ames30cMcH1VOJZJEnl7r05pmuKmET7m9cqg5c0Lcd9NUwt
-NLg+DcTsiCevnpL9UGGCqGAHFFPMZRPB9kdEadIxyKbdLrML3kqNWz2rDcI1
-UqJWN8wyiyiFQpyRQHpwKzg21eFzGh/l+n5f3NacOzDq28BbJ1zTcwfBwvNM
-m2+fG8oeqqg4MwlYsq78B+g23FW6L09A/nq9BqaBwZMifIYRCgZ3SK41ty8y
-mmFei74pnykkiFY5LKjSq5YDWtRIn7lAhAuYaPsBQ9Yb4gmxlxw=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC
-TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0
-aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0
-aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz
-MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw
-IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR
-dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG
-9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp
-li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D
-rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ
-WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug
-F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU
-xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC
-Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv
-dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw
-ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl
-IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh
-c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy
-ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
-Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI
-KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T
-KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq
-y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p
-dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD
-VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL
-MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk
-fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8
-7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R
-cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y
-mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW
-xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK
-SnQ2+Q==
------END CERTIFICATE-----
-
------BEGIN CERTIFICATE-----
-MIIETzCCAzegAwIBAgIEO63vKTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIzMTQxODE3WhcNMTEw
-OTIzMTMxODE3WjB1MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
-LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWdu
-ZXQgLSBDQSBLbGFzYSAxMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4SRW9Q58g5DY1Hw7h
-gCRKBEdPdGn0MFHsfw7rlu/oQm7IChI/uWd9q5wwo77YojtTDjRnpgZsjqBeynX8T90vFILqsY2K
-5CF1OESalwvVr3sZiQX79lisuFKat92u6hBFikFIVxfHHB67Af+g7u0dEHdDW7lwy81MwFYxBTRy
-9wIDAQABo4IBbTCCAWkwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwggEEBgNVHSAE
-gfwwgfkwgfYGDSsGAQQBvj8CAQoBAQAwgeQwgZoGCCsGAQUFBwICMIGNGoGKQ2VydHlmaWthdCB3
-eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtOiAiUG9saXR5a2EgQ2VydHlmaWthY2ppIGRs
-YSBSb290Q0EiLiBDZXJ0eWZpa2F0IHd5c3Rhd2lvbnkgcHJ6ZXogUm9vdENBIHcgaGllcmFyY2hp
-aSBDQyBTaWduZXQuMEUGCCsGAQUFBwIBFjlodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0b3Jp
-dW0vZG9rdW1lbnR5L3BjX3Jvb3RjYS50eHQwHwYDVR0jBBgwFoAUwJvFIw0C4aZOSGsfAOnjmhQb
-sa8wHQYDVR0OBBYEFMODHtVZd1T7TftXR/nEI1zR54njMA0GCSqGSIb3DQEBBQUAA4IBAQBRIHQB
-FIGh8Jpxt87AgSLwIEEk4+oGy769u3NtoaR0R3WNMdmt7fXTi0tyTQ9V4AIszxVjhnUPaKnF1KYy
-f8Tl+YTzk9ZfFkZ3kCdSaILZAOIrmqWNLPmjUQ5/JiMGho0e1YmWUcMci84+pIisTsytFzVP32/W
-+sz2H4FQAvOIMmxB7EJX9AdbnXn9EXZ+4nCqi0ft5z96ZqOJJiCB3vSaoYg+wdkcvb6souMJzuc2
-uptXtR1Xf3ihlHaGW+hmnpcwFA6AoNrom6Vgzk6U1ienx0Cw28BhRSKqzKkyXkuK8gRflZUx84uf
-tXncwKJrMiE3lvgOOBITRzcahirLer4c
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIE9zCCA9+gAwIBAgIEPL/xoTANBgkqhkiG9w0BAQUFADB2MQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MSAwHgYDVQQDExdDQyBTaWduZXQgLSBQQ0EgS2xhc2EgMjAeFw0wMjA0MTkxMDI5NTNa
-Fw0xNzA0MTgxMjUzMDdaMHUxCzAJBgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4g
-eiBvLm8uMSQwIgYDVQQLExtDZW50cnVtIENlcnR5ZmlrYWNqaSBTaWduZXQxHzAdBgNVBAMTFkND
-IFNpZ25ldCAtIENBIEtsYXNhIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqgLJu
-QqY4yavbSgHg8CyfKTx4BokNSDOVz4eD9vptUr11Kqd06ED1hlH7Sg0goBFAfntNU/QTKwSBaNui
-me7C4sSEdgsKrPoAhGb4Mq8y7Ty7RqZz7mkzNMqzL2L2U4yQ2QjvpH8MH0IBqOWEcpSkpwnrCDIm
-RoTfd+YlZWKi2JceQixUUYIQ45Ox8+x8hHbvvZdgqtcvo8PW27qoHkp/7hMuJ44kDAGrmxffBXl/
-OBRZp0uO1CSLcMcVJzyr2phKhy406MYdWrtNPEluGs0GFDzd0nrIctiWAO4cmct4S72S9Q6e//0G
-O9f3/Ca5Kb2I1xYLj/xE+HgjHX9aD2MhAgMBAAGjggGMMIIBiDAPBgNVHRMBAf8EBTADAQH/MA4G
-A1UdDwEB/wQEAwIBBjCB4wYDVR0gBIHbMIHYMIHVBg0rBgEEAb4/AhQKAQEAMIHDMHUGCCsGAQUF
-BwICMGkaZ0NlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
-eWthIENlcnR5ZmlrYWNqaSBQQ0EyIC0gQ2VydHlmaWthdHkgVXJ6ZWRvdyBLbGFzeSAyIi4wSgYI
-KwYBBQUHAgEWPmh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9kb2t1bWVudHkva2xh
-c2EyL3BjX3BjYTIudHh0MD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHA6Ly93d3cuc2lnbmV0LnBsL3Jl
-cG96eXRvcml1bS9jcmwvcGNhMi5jcmwwHwYDVR0jBBgwFoAUwGxGyl2CfpYHRonE82AVXO08kMIw
-HQYDVR0OBBYEFLtFBlILy4HNKVSzvHxBTM0HDowlMA0GCSqGSIb3DQEBBQUAA4IBAQBWTsCbqXrX
-hBBev5v5cIuc6gJM8ww7oR0uMQRZoFSqvQUPWBYM2/TLI/f8UM9hSShUVj3zEsSj/vFHagUVmzuV
-Xo5u0WK8iaqATSyEVBhADHrPG6wYcLKJlagge/ILA0m+SieyP2sjYD9MUB9KZIEyBKv0429UuDTw
-6P7pslxMWJBSNyQxaLIs0SRKsqZZWkc7ZYAj2apSkBMX2Is1oHA+PwkF6jQMwCao/+CndXPUzfCF
-6caa9WwW31W26MlXCvSmJgfiTPwGvm4PkPmOnmWZ3CczzhHl4q7ztHFzshJH3sZWDnrWwBFjzz5e
-Pr3WHV1wA7EY6oT4zBx+2gT9XBTB
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEUzCCAzugAwIBAgIEPq+qjzANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJQTDE3MDUGA1UE
-ChMuQ1ppQyBDZW50cmFzdCBTQSB3IGltaWVuaXUgTWluaXN0cmEgR29zcG9kYXJraTEZMBcGA1UE
-AxMQQ1ppQyBDZW50cmFzdCBTQTAeFw0wMzA0MzAxMDUwNTVaFw0wODA0MjgxMDUwNTVaMGgxCzAJ
-BgNVBAYTAlBMMR8wHQYDVQQKExZUUCBJbnRlcm5ldCBTcC4geiBvLm8uMR8wHQYDVQQDExZDQyBT
-aWduZXQgLSBDQSBLbGFzYSAzMRcwFQYDVQQFEw5OdW1lciB3cGlzdTogNDCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALVdeOM62cPH2NERFxbS5FIp/HSv3fgesdVsTUFxZbGtE+/E0RMl
-KZQJHH9emx7vRYubsi4EOLCjYsCOTFvgGRIpZzx7R7T5c0Di5XFkRU4gjBl7aHJoKb5SLzGlWdoX
-GsekVtl6keEACrizV2EafqjI8cnBWY7OxQ1ooLQp5AeFjXg+5PT0lO6TUZAubqjFbhVbxSWjqvdj
-93RGfyYE76MnNn4c2xWySD07n7uno06TC0IJe6+3WSX1h+76VsIFouWBXOoM7cxxiLjoqdBVu24+
-P8e81SukE7qEvOwDPmk9ZJFtt1nBNg8a1kaixcljrA/43XwOPz6qnJ+cIj/xywECAwEAAaOCAQow
-ggEGMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMDMGA1UdIAEB/wQpMCcwJQYEVR0g
-ADAdMBsGCCsGAQUFBwIBFg93d3cuY2VudHJhc3QucGwwgY4GA1UdIwSBhjCBg4AU2a7r85Cp1iJN
-W0Ca1LR6VG3996ShZaRjMGExCzAJBgNVBAYTAlBMMTcwNQYDVQQKEy5DWmlDIENlbnRyYXN0IFNB
-IHcgaW1pZW5pdSBNaW5pc3RyYSBHb3Nwb2RhcmtpMRkwFwYDVQQDExBDWmlDIENlbnRyYXN0IFNB
-ggQ9/0sQMB0GA1UdDgQWBBR7Y8wZkHq0zrY7nn1tFSdQ0PlJuTANBgkqhkiG9w0BAQUFAAOCAQEA
-ldt/svO5c1MU08FKgrOXCGEbEPbQxhpM0xcd6Iv3dCo6qugEgjEs9Qm5CwUNKMnFsvR27cJWUvZb
-MVcvwlwCwclOdwF6u/QRS8bC2HYErhYo9bp9yuxxzuow2A94c5fPqfVrjXy+vDouchAm6+A5Wjzv
-J8wxVFDCs+9iGACmyUWr/JGXCYiQIbQkwlkRKHHlan9ymKf1NvIej/3EpeT8fKr6ywxGuhAfqofW
-pg3WJY/RCB4lTzD8vZGNwfMFGkWhJkypad3i9w3lGmDVpsHaWtCgGfd0H7tUtWPkP+t7EjIRCD9J
-HYnTR+wbbewc5vOI+UobR15ynGfFIaSIiMTVtQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEejCCA2KgAwIBAgIEP4vk6TANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQ
-TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2Vu
-dHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBD
-QSBLbGFzYSAyMB4XDTAzMTAxNDExNTgyMloXDTE3MDQxODEyNTMwN1owdzELMAkG
-A1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6IG8uby4xJDAiBgNV
-BAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEhMB8GA1UEAxMYQ0MgU2ln
-bmV0IC0gT0NTUCBLbGFzYSAyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCo
-VCsaBStblXQYVNthe3dvaCrfvKpPXngh4almm988iIlEv9CVTaAdCfaJNihvA+Vs
-Qw8++ix1VqteMQE474/MV/YaXigP0Zr0QB+g+/7PWVlv+5U9Gzp9+Xx4DJay8AoI
-iB7Iy5Qf9iZiHm5BiPRIuUXT4ZRbZRYPh0/76vgRsQIDAQABo4IBkjCCAY4wDgYD
-VR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMJMEEGA1UdHwQ6MDgwNqA0
-oDKGMGh0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9jcmwva2xhc2Ey
-LmNybDCB2AYDVR0gBIHQMIHNMIHKBg4rBgEEAb4/AoFICgwBADCBtzBsBggrBgEF
-BQcCAjBgGl5DZXJ0eWZpa2F0IHd5ZGFueSB6Z29kbmllIHogZG9rdW1lbnRlbSAi
-UG9saXR5a2EgQ2VydHlmaWthY2ppIC0gQ2VydHlmaWthdHkgcmVzcG9uZGVyb3cg
-T0NTUCIuMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnNpZ25ldC5wbC9yZXBvenl0
-b3JpdW0vZG9rdW1lbnR5L3BjX29jc3BfMV8wLnBkZjAfBgNVHSMEGDAWgBS7RQZS
-C8uBzSlUs7x8QUzNBw6MJTAdBgNVHQ4EFgQUKEVrOY7cEHvsVgvoyZdytlbtgwEw
-CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAQrRg5MV6dxr0HU2IsLInxhvt
-iUVmSFkIUsBCjzLoewOXA16d2oDyHhI/eE+VgAsp+2ANjZu4xRteHIHoYMsN218M
-eD2MLRsYS0U9xxAFK9gDj/KscPbrrdoqLvtPSMhUb4adJS9HLhvUe6BicvBf3A71
-iCNe431axGNDWKnpuj2KUpj4CFHYsWCXky847YtTXDjri9NIwJJauazsrSjK+oXp
-ngRS506mdQ7vWrtApkh8zhhWp7duCkjcCo1O8JxqYr2qEW1fXmgOISe010v2mmuv
-hHxPyVwoAU4KkOw0nbXZn53yak0is5+XmAjh0wWue44AssHrjC9nUh3mkLt6eQ==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEezCCA2OgAwIBAgIEP4vnLzANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJQ
-TDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEfMB0GA1UEAxMWQ0Mg
-U2lnbmV0IC0gQ0EgS2xhc2EgMzEXMBUGA1UEBRMOTnVtZXIgd3Bpc3U6IDQwHhcN
-MDMxMDE0MTIwODAwWhcNMDgwNDI4MTA1MDU1WjB3MQswCQYDVQQGEwJQTDEfMB0G
-A1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBD
-ZXJ0eWZpa2FjamkgU2lnbmV0MSEwHwYDVQQDExhDQyBTaWduZXQgLSBPQ1NQIEts
-YXNhIDMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM/9GwvARNuCVN+PqZmO
-4FqH8vTqhenUyqRkmAVT4YhLu0a9AXeLAYVDu+NTkYzsAUMAfu55rIKHNLlm6WbF
-KvLiKKz4p4pbUr+ToPcwl/TDotidloUdBAxDg0SL+PmQqACZDe3seJho2IYf2vDL
-/G4TLMbKmNB0mlWFuN0f4fJNAgMBAAGjggGgMIIBnDAOBgNVHQ8BAf8EBAMCB4Aw
-EwYDVR0lBAwwCgYIKwYBBQUHAwkwTwYDVR0fBEgwRjBEoEKgQIY+aHR0cDovL3d3
-dy5zaWduZXQucGwva3dhbGlmaWtvd2FuZS9yZXBvenl0b3JpdW0vY3JsL2tsYXNh
-My5jcmwwgdgGA1UdIASB0DCBzTCBygYOKwYBBAG+PwKCLAoCAQAwgbcwbAYIKwYB
-BQUHAgIwYBpeQ2VydHlmaWthdCB3eWRhbnkgemdvZG5pZSB6IGRva3VtZW50ZW0g
-IlBvbGl0eWthIENlcnR5ZmlrYWNqaSAtIENlcnR5ZmlrYXR5IHJlc3BvbmRlcm93
-IE9DU1AiLjBHBggrBgEFBQcCARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5
-dG9yaXVtL2Rva3VtZW50eS9wY19vY3NwXzFfMC5wZGYwHwYDVR0jBBgwFoAUe2PM
-GZB6tM62O559bRUnUND5SbkwHQYDVR0OBBYEFG4jnCMvBALRQXtmDn9TyXQ/EKP+
-MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBACXrKG5Def5lpRwmZom3UEDq
-bl7y4U3qomG4B+ok2FVZGgPZti+ZgvrenPj7PtbYCUBPsCSTNrznKinoT3gD9lQQ
-xkEHwdc6VD1GlFp+qI64u0+wS9Epatrdf7aBnizrOIB4LJd4E2TWQ6trspetjMIU
-upyWls1BmYUxB91R7QkTiAUSNZ87s3auhZuG4f0V0JLVCcg2rn7AN1rfMkgxCbHk
-GxiQbYWFljl6aatxR3odnnzVUe1I8uoY2JXpmmUcOG4dNGuQYziyKG3mtXCQWvug
-5qi9Mf3KUh1oSTKx6HfLjjNl1+wMB5Mdb8LF0XyZLdJM9yIZh7SBRsYm9QiXevY=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFGjCCBAKgAwIBAgIEPL7eEDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwNDE4MTQ1NDA4WhcNMjYw
-OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
-LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
-ZXQgLSBQQ0EgS2xhc2EgMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM7BrBlbN5ma
-M5eg0BOTqoZ+9NBDvU8Lm5rTdrMswFTCathzpVVLK/JD4K3+4oCZ9SRAspEXE4gvwb08ASY6w5s+
-HpRkeJw8YzMFR5kDZD5adgnCAy4vDfIXYZgppXPaTQ8wnfUZ7BZ7Zfa7QBemUIcJIzJBB0UqgtxW
-Ceol9IekpBRVmuuSA6QG0Jkm+pGDJ05yj2eQG8jTcBENM7sVA8rGRMyFA4skSZ+D0OG6FS2xC1i9
-JyN0ag1yII/LPx8HK5J4W9MaPRNjAEeaa2qI9EpchwrOxnyVbQfSedCG1VRJfAsE/9tT9CMUPZ3x
-W20QjQcSZJqVcmGW9gVsXKQOVLsCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
-AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQEBMIHkMIGaBggrBgEFBQcC
-AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
-eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
-IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
-aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
-OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
-bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUwGxGyl2CfpYHRonE
-82AVXO08kMIwDQYJKoZIhvcNAQEFBQADggEBABp1TAUsa+BeVWg4cjowc8yTJ5XN3GvN96GObMkx
-UGY7U9kVrLI71xBgoNVyzXTiMNDBvjh7vdPWjpl5SDiRpnnKiOFXA43HvNWzUaOkTu1mxjJsZsan
-ot1Xt6j0ZDC+03FjLHdYMyM9kSWp6afb4980EPYZCcSzgM5TOGfJmNii5Tq468VFKrX+52Aou1G2
-2Ohu+EEOlOrG7ylKv1hHUJJCjwN0ZVEIn1nDbrU9FeGCz8J9ihVUvnENEBbBkU37PWqWuHitKQDV
-tcwTwJJdR8cmKq3NmkwAm9fPacidQLpaw0WkuGrS+fEDhu1Nhy9xELP6NA9GRTCNxm/dXlcwnmY=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIFGjCCBAKgAwIBAgIEPV0tNDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDIwODE2MTY0OTU2WhcNMjYw
-OTIxMTU0MjE5WjB2MQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
-LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MSAwHgYDVQQDExdDQyBTaWdu
-ZXQgLSBQQ0EgS2xhc2EgMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALN3LanJtdue
-Ne6geWUTFENa+lEuzqELcoqhYB+a/tJcPEkc6TX/bYPzalRRjqs+quMP6KZTU0DixOrV+K7iWaqA
-iQ913HX5IBLmKDCrTVW/ZvSDpiBKbxlHfSNuJxAuVT6HdbzK7yAW38ssX+yS2tZYHZ5FhZcfqzPE
-OpO94mAKcBUhk6T/ki0evXX/ZvvktwmF3hKattzwtM4JMLurAEl8SInyEYULw5JdlfcBez2Tg6Db
-w34hA1A+ckTwhxzecrB8TUe2BnQKOs9vr2cCACpFFcOmPkM0Drtjctr1QHm1tYSqRFRf9VcV5tfC
-3P8QqoK4ONjtLPHc9x5NE1uK/FMCAwEAAaOCAbMwggGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
-AQH/BAQDAgEGMIIBBAYDVR0gBIH8MIH5MIH2Bg0rBgEEAb4/AgEKAQECMIHkMIGaBggrBgEFBQcC
-AjCBjRqBikNlcnR5ZmlrYXQgd3lzdGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0
-eWthIENlcnR5ZmlrYWNqaSBkbGEgUm9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6
-IFJvb3RDQSB3IGhpZXJhcmNoaWkgQ0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5z
-aWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY19yb290Y2EudHh0MEQGA1UdHwQ9MDsw
-OaA3oDWGM2h0dHA6Ly93d3cuc2lnbmV0LnBsL3JlcG96eXRvcml1bS9yb290Y2Evcm9vdGNhLmNy
-bDAfBgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAdBgNVHQ4EFgQUXvthcPHlH5BgGhlM
-ErJNXWlhlgAwDQYJKoZIhvcNAQEFBQADggEBACIce95Mvn710KCAISA0CuHD4aznTU6pLoCDShW4
-7OR+GTpJUm1coTcUqlBHV9mra4VFrBcBuOkHZoBLq/jmE0QJWnpSEULDcH9J3mF0nqO9SM+mWyJG
-dsJF/XU/7smummgjMNQXwzQTtWORF+6v5KUbWX85anO2wR+M6YTBWC55zWpWi4RG3vkHFs5Ze2oF
-JTlpuxw9ZgxTnWlwI9QR2MvEhYIUMKMOWxw1nt0kKj+5TCNQQGh/VJJ1dsiroGh/io1DOcePEhKz
-1Ag52y6Wf0nJJB9yk0sFakqZH18F7eQecQImgZyyeRtsG95leNugB3BXWCW+KxwiBrtQTXv4dTE=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEzzCCA7egAwIBAgIEO6ocGTANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MRswGQYDVQQDExJDQyBTaWduZXQgLSBSb290Q0EwHhcNMDEwOTIwMTY0MjE5WhcNMjYw
-OTIxMTU0MjE5WjBxMQswCQYDVQQGEwJQTDEfMB0GA1UEChMWVFAgSW50ZXJuZXQgU3AuIHogby5v
-LjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2FjamkgU2lnbmV0MRswGQYDVQQDExJDQyBTaWdu
-ZXQgLSBSb290Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrr2vydnNpELfGW3Ks
-ARiDhJvwDtUe4AbWev+OfMc3+vA29nX8ZmIwno3gmItjo5DbUCCRiCMq5c9epcGu+kg4a3BJChVX
-REl8gVh0ST15rr3RKrSc4VgsvQzl0ZUraeQLl8JoRT5PLsUj3qwF78jUCQVckiiLVcnGfZtFCm+D
-CJXliQBDMB9XFAUEiO/DtEBs0B7wJGx7lgJeJpQUcGiaOPjcJDYOk7rNAYmmD2gWeSlepufO8luU
-YG/YDxTC4mqhRqfa4MnVO5dqy+ICj2UvUpHbZDB0KfGRibgBYeQP1kuqgIzJN4UqknVAJb0aMBSP
-l+9k2fAUdchx1njlbdcbAgMBAAGjggFtMIIBaTAPBgNVHRMBAf8EBTADAQH/MIIBBAYDVR0gBIH8
-MIH5MIH2Bg0rBgEEAb4/AgEKAQEAMIHkMIGaBggrBgEFBQcCAjCBjRqBikNlcnR5ZmlrYXQgd3lz
-dGF3aW9ueSB6Z29kbmllIHogZG9rdW1lbnRlbTogIlBvbGl0eWthIENlcnR5ZmlrYWNqaSBkbGEg
-Um9vdENBIi4gQ2VydHlmaWthdCB3eXN0YXdpb255IHByemV6IFJvb3RDQSB3IGhpZXJhcmNoaWkg
-Q0MgU2lnbmV0LjBFBggrBgEFBQcCARY5aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVt
-L2Rva3VtZW50eS9wY19yb290Y2EudHh0MB0GA1UdDgQWBBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAf
-BgNVHSMEGDAWgBTAm8UjDQLhpk5Iax8A6eOaFBuxrzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN
-AQEFBQADggEBAGnY5QmYqnnO9OqFOWZxxb25UHRnaRF6IV9aaGit5BZufZj2Tq3v8L3SgE34GOoI
-cdRMMG5JEpEU4mN/Ef3oY6Eo+7HfqaPHI4KFmbDSPiK5s+wmf+bQSm0Yq5/h4ZOdcAESlLQeLSt1
-CQk2JoKQJ6pyAf6xJBgWEIlm4RXE4J3324PUiOp83kW6MDvaa1xY976WyInr4rwoLgxVl11LZeKW
-ha0RJJxJgw/NyWpKG7LWCm1fglF8JH51vZNndGYq1iKtfnrIOvLZq6bzaCiZm1EurD8HE6P7pmAB
-KK6o3C2OXlNfNIgwkDN/cDqk5TYsTkrpfriJPdxXBH8hQOkW89g=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIID/TCCA2agAwIBAgIEP4/gkTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJQTDEfMB0GA1UE
-ChMWVFAgSW50ZXJuZXQgU3AuIHogby5vLjEkMCIGA1UECxMbQ2VudHJ1bSBDZXJ0eWZpa2Fjamkg
-U2lnbmV0MR8wHQYDVQQDExZDQyBTaWduZXQgLSBDQSBLbGFzYSAxMB4XDTAzMTAxNzEyMjkwMloX
-DTExMDkyMzExMTgxN1owdjELMAkGA1UEBhMCUEwxHzAdBgNVBAoTFlRQIEludGVybmV0IFNwLiB6
-IG8uby4xJDAiBgNVBAsTG0NlbnRydW0gQ2VydHlmaWthY2ppIFNpZ25ldDEgMB4GA1UEAxMXQ0Mg
-U2lnbmV0IC0gVFNBIEtsYXNhIDEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJYrISEtSsd
-uHajROh5/n7NGrkpYTT9NEaPe9+ucuQ37KxIbfJwXJjgUc1dw4wCkcQ12FJarD1X6mSQ4cfN/60v
-LfKI5ZD4nhJTMKlAj1pX9ScQ/MuyvKStCbn5WTkjPhjRAM0tdwXSnzuTEunfw0Oup559y3Iqxg1c
-ExflB6cfAgMBAAGjggGXMIIBkzBBBgNVHR8EOjA4MDagNKAyhjBodHRwOi8vd3d3LnNpZ25ldC5w
-bC9yZXBvenl0b3JpdW0vY3JsL2tsYXNhMS5jcmwwDgYDVR0PAQH/BAQDAgeAMBYGA1UdJQEB/wQM
-MAoGCCsGAQUFBwMIMIHaBgNVHSAEgdIwgc8wgcwGDSsGAQQBvj8CZAoRAgEwgbowbwYIKwYBBQUH
-AgIwYxphQ2VydHlmaWthdCB3eXN0YXdpb255IHpnb2RuaWUgeiBkb2t1bWVudGVtICJQb2xpdHlr
-YSBDZXJ0eWZpa2FjamkgQ0MgU2lnbmV0IC0gWm5ha293YW5pZSBjemFzZW0iLjBHBggrBgEFBQcC
-ARY7aHR0cDovL3d3dy5zaWduZXQucGwvcmVwb3p5dG9yaXVtL2Rva3VtZW50eS9wY190c2ExXzJf
-MS5wZGYwHwYDVR0jBBgwFoAUw4Me1Vl3VPtN+1dH+cQjXNHnieMwHQYDVR0OBBYEFJdDwEqtcavO
-Yd9u9tej53vWXwNBMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADgYEAnpiQkqLCJQYXUrqMHUEz
-+z3rOqS0XzSFnVVLhkVssvXc8S3FkJIiQTUrkScjI4CToCzujj3EyfNxH6yiLlMbskF8I31JxIeB
-vueqV+s+o76CZm3ycu9hb0I4lswuxoT+q5ZzPR8Irrb51rZXlolR+7KtwMg4sFDJZ8RNgOf7tbA=
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIGFTCCBX6gAwIBAgIBEDANBgkqhkiG9w0BAQUFADCBvjELMAkGA1UEBhMCVVMx
-EDAOBgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UE
-ChMfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9z
-dG1hc3RlcjEgMB4GA1UEAxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkq
-hkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDYwODE2MjA0NjUy
-WhcNMTYwODEzMjA0NjUyWjCBvDELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0luZGlh
-bmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdhcmUgaW4g
-dGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKSG9zdG1hc3RlcjEeMBwGA1UE
-AxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZob3N0bWFz
-dGVyQHNwaS1pbmMub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
-uTlCOrOYvCe0Qszlz90rVIQkS2UDa7R+qCTkRE5ipKC+3OZXGgv2EOYk/IOuCE3D
-8+tlTAl8MwvmwOHgL0GWnjoluR95narhNiV9Px8xyL2Z8kctwrWXbEii0Ot48VcN
-IQMDW5GK8Ww5puMKZr8+bXF2HFzkt8gwaCtrojcF4fLGcm3//bR13CKWbOzacANZ
-gAi00pD70ppjJU/uNVOe5HX6x/Id+50G6jwasanEzhteYJdbbHaMqrL4J6XbTwgJ
-ZciB0ifOZkwTBvQiRJpTkTWPyn/HptMbJGOwwiNbcgtWV7QVLW1GB3HYVum47Zwp
-XcXVM4Fs4XLwfx1Ti87LGdAJJYDS5K1F2prHKW5MsmFLJg61Nd6dZPRDLJLaOPEq
-0Jxa1NdfDjJ8rXOIcuLRAozjBui23vUhfOW9z4kpVIg+c+ylV2Oh/7f+fO731P7E
-AqsTFmiU7svcvkm2OKslolpnQ+pqGFLM4laQE/Q0kjogm7LiOpRssBW/ZfZ7pPLZ
-Ru0/AXrgKwQIM8mLazwlD3wHKPRElhIkxSv4qZ95zgJo6ky/7BpzZ/OAlz3BICbN
-WQhW/MBQVFiC6ivhjDq3AzgyykLShB0eIMRN0SBfTy3/aNfIJbqLmTNookXPoSP7
-+mg5OVzVBvDv5ZskWSl8kJB1DzJbN+DOr/i8V3Ugl90CAwEAAaOCAZ0wggGZMB0G
-A1UdDgQWBBTON+buqfoMXkWdtvObUS11tnY77DCB6wYDVR0jBIHjMIHggBQHrehB
-HX+91r8bgXo/jEuI3gTS+qGBxKSBwTCBvjELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
-B0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdh
-cmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEg
-MB4GA1UEAxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkqhkiG9w0BCQEW
-Fmhvc3RtYXN0ZXJAc3BpLWluYy5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zARBglg
-hkgBhvhCAQEEBAMCAQYwCQYDVR0SBAIwADArBglghkgBhvhCAQ0EHhYcVGlueUNB
-IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAhBgNVHREEGjAYgRZob3N0bWFzdGVyQHNw
-aS1pbmMub3JnMAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQUFAAOBgQA5HQcqwPE/
-RaN8cb8H1G34rkvSEsj4l8UIivMFEWIKnF3SQT8KVcD7j/eJuhMazwRlTs8Rnu6V
-/uTC10w7SS6gELwDqAzR4PiXTzfkW8OJemyQn6JWXKfq2pR1n4fvwEn7htjeNS69
-iFKlFXyE9j2jhGaps1CKHfe1YX0MuwO4Jw==
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIEFTCCA36gAwIBAgIBADANBgkqhkiG9w0BAQQFADCBvjELMAkGA1UEBhMCVVMx
-EDAOBgNVBAgTB0luZGlhbmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UE
-ChMfU29mdHdhcmUgaW4gdGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9z
-dG1hc3RlcjEgMB4GA1UEAxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkq
-hkiG9w0BCQEWFmhvc3RtYXN0ZXJAc3BpLWluYy5vcmcwHhcNMDMwMTE1MTYyOTE3
-WhcNMDcwMTE0MTYyOTE3WjCBvjELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0luZGlh
-bmExFTATBgNVBAcTDEluZGlhbmFwb2xpczEoMCYGA1UEChMfU29mdHdhcmUgaW4g
-dGhlIFB1YmxpYyBJbnRlcmVzdDETMBEGA1UECxMKaG9zdG1hc3RlcjEgMB4GA1UE
-AxMXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxJTAjBgkqhkiG9w0BCQEWFmhvc3Rt
-YXN0ZXJAc3BpLWluYy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPB6
-rdoiLR3RodtM22LMcfwfqb5OrJNl7fwmvskgF7yP6sdD2bOfDIXhg9852jhY8/kL
-VOFe1ELAL2OyN4RAxk0rliZQVgeTgqvgkOVIBbNwgnjN6mqtuWzFiPL+NXQExq40
-I3whM+4lEiwSHaV+MYxWanMdhc+kImT50LKfkxcdAgMBAAGjggEfMIIBGzAdBgNV
-HQ4EFgQUB63oQR1/vda/G4F6P4xLiN4E0vowgesGA1UdIwSB4zCB4IAUB63oQR1/
-vda/G4F6P4xLiN4E0vqhgcSkgcEwgb4xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdJ
-bmRpYW5hMRUwEwYDVQQHEwxJbmRpYW5hcG9saXMxKDAmBgNVBAoTH1NvZnR3YXJl
-IGluIHRoZSBQdWJsaWMgSW50ZXJlc3QxEzARBgNVBAsTCmhvc3RtYXN0ZXIxIDAe
-BgNVBAMTF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MSUwIwYJKoZIhvcNAQkBFhZo
-b3N0bWFzdGVyQHNwaS1pbmMub3JnggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcN
-AQEEBQADgYEAm/Abn8c2y1nO3fgpAIslxvi9iNBZDhQtJ0VQZY6wgSfANyDOR4DW
-iexO/AlorB49KnkFS7TjCAoLOZhcg5FaNiKnlstMI5krQmau1Qnb/vGSNsE/UGms
-1ts+QYPUs0KmGEAFUri2XzLy+aQo9Kw74VBvqnxvaaMeY5yMcKNOieY=
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/cacert.org.pem b/pkix/tests/test-data/cacert.org.pem
deleted file mode 100644
index e7dfc829..00000000
--- a/pkix/tests/test-data/cacert.org.pem
+++ /dev/null
@@ -1,41 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290
-IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB
-IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA
-Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO
-BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi
-MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ
-ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ
-8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6
-zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y
-fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7
-w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc
-G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k
-epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q
-laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ
-QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU
-fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826
-YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w
-ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY
-gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe
-MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0
-IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy
-dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw
-czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0
-dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl
-aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC
-AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg
-b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB
-ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc
-nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg
-18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c
-gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl
-Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY
-sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T
-SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF
-CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum
-GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk
-zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW
-omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD
------END CERTIFICATE-----
diff --git a/pkix/tests/test-data/der-certificate.crt b/pkix/tests/test-data/der-certificate.crt
deleted file mode 100644
index 56fa8491..00000000
--- a/pkix/tests/test-data/der-certificate.crt
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-dsa-1024.key b/pkix/tests/test-data/der-dsa-1024.key
deleted file mode 100644
index 61af5251..00000000
--- a/pkix/tests/test-data/der-dsa-1024.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-PBE-MD5-DES.key b/pkix/tests/test-data/der-pkcs8-PBE-MD5-DES.key
deleted file mode 100644
index 71b7d61b..00000000
--- a/pkix/tests/test-data/der-pkcs8-PBE-MD5-DES.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-3DES.key b/pkix/tests/test-data/der-pkcs8-PBE-SHA1-3DES.key
deleted file mode 100644
index 1c37fe10..00000000
--- a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-3DES.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-DES.key b/pkix/tests/test-data/der-pkcs8-PBE-SHA1-DES.key
deleted file mode 100644
index 99896139..00000000
--- a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-DES.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC2-40.key b/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC2-40.key
deleted file mode 100644
index 820926cc..00000000
--- a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC2-40.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC4-128.key b/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC4-128.key
deleted file mode 100644
index 2888450c..00000000
--- a/pkix/tests/test-data/der-pkcs8-PBE-SHA1-RC4-128.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-dsa.key b/pkix/tests/test-data/der-pkcs8-dsa.key
deleted file mode 100644
index 8b61684e..00000000
--- a/pkix/tests/test-data/der-pkcs8-dsa.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-encrypted-pkcs5.key b/pkix/tests/test-data/der-pkcs8-encrypted-pkcs5.key
deleted file mode 100644
index 68c6b4a5..00000000
--- a/pkix/tests/test-data/der-pkcs8-encrypted-pkcs5.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-v2-des.key b/pkix/tests/test-data/der-pkcs8-v2-des.key
deleted file mode 100644
index 4cd80348..00000000
--- a/pkix/tests/test-data/der-pkcs8-v2-des.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8-v2-des3.key b/pkix/tests/test-data/der-pkcs8-v2-des3.key
deleted file mode 100644
index 9e2999c8..00000000
--- a/pkix/tests/test-data/der-pkcs8-v2-des3.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-pkcs8.key b/pkix/tests/test-data/der-pkcs8.key
deleted file mode 100644
index 16505632..00000000
--- a/pkix/tests/test-data/der-pkcs8.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/der-rsa-1024.key b/pkix/tests/test-data/der-rsa-1024.key
deleted file mode 100644
index 878fda5b..00000000
--- a/pkix/tests/test-data/der-rsa-1024.key
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/email.p12 b/pkix/tests/test-data/email.p12
deleted file mode 100644
index d45d0f8d..00000000
--- a/pkix/tests/test-data/email.p12
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/pem-dsa-1024.key b/pkix/tests/test-data/pem-dsa-1024.key
deleted file mode 100644
index ccb1e7b9..00000000
--- a/pkix/tests/test-data/pem-dsa-1024.key
+++ /dev/null
@@ -1,12 +0,0 @@
------BEGIN DSA PRIVATE KEY-----
-MIIBuwIBAAKBgQCQ7Atgc1g5x1Tq+PZLsD/DU5jWl3K/rlQAed6i06Yfr/snYwoD
-igGj0M1ioQdFpXSifstGL08IhbecYbvpVKYKKWaK1Uu6XAenL9ixEFJJZwsznfLF
-nmSkcGTvzwtyNsXHLNVc6zKRdDC+yaAD1OSE+6qE15Vxs41rWslbtz4/ewIVAPoh
-ShOFwhv+uq2rJAokMMYH1WJxAoGALeBXUfXa7pfz1DxUWVo+lKCAco8MZsmK6+1X
-YvarFVgC2DWerR3h7DakWfvu6kjlm55qjLT1KVk2s8yIGl2VfHM5F14s/+DzDTcR
-5DDbZkjC60dKoQpKMpdFBTH/LHxpUSIMnURra2sPACYuHr6zzIYUdqpRjMVVyav5
-5fOQI/wCgYBUc0RR23nU7t8LvOvUO7bLt7hYRgO5VwgAdd0xjrWwJm1LINxe/zdr
-38TqKYOx9/AqOe1MYZ7WhxJyn/87fGlq3RttdI9WpLS+xcQ4XlKEI6O4iuZebVUA
-+Xg556SGJVmCGJw7T6jZQzjHbw5cr8mjCh7XKLufIJHVlOMlCgnqAAIVAIdvhPcJ
-1REI37DL+h8cVpwJxBPs
------END DSA PRIVATE KEY-----
diff --git a/pkix/tests/test-data/pem-pkcs8.key b/pkix/tests/test-data/pem-pkcs8.key
deleted file mode 100644
index 1f0d5edb..00000000
--- a/pkix/tests/test-data/pem-pkcs8.key
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN ENCRYPTED PRIVATE KEY-----
-MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIf4lXzcHXqAICAggA
-MBQGCCqGSIb3DQMHBAhV8iKHmoUJDQSCAoDK4fY/dfIzOof1QlYV8mhr0OmhaIAe
-aaDz4rER6+OGwq7WQ32ErmHBiJRI8oQRrxy4oHTXx8TR+JxQT1io9V9jjXZCS8HT
-Ek0J69pgjPdIUnlZYV1GdJUJq7tWxTKJJFr1tsB0XzgugQLYcui4ikrZ6rHE9PVh
-SXFIEbns42xHIvtQ/j3c6ScS63UNpSsKe5pWRNgHUHpjSGPAaZogOdMfStmj3tdN
-nIH3mjIM8uisN9nyPV42aziZi5mO9F5JHlNp1H5pDAUWOKkKoXw27MgXnxvSkLAX
-HSgpPuK5ejqXu4nkciwHnr4eULV0biwqpmYEWxC4aNuog/t3DoL1gkC74J07jjUU
-3gZwxjKsAWfIKnNURsHlBAcYClug5ZWs9ru/4sc27bNV9qRKbHcgGD+nzfTXxZZ2
-BG5eSBVpYT2Jzdkpw8puSHwNW5mQcuY4E+ZEERFsW8q1raPSgYVk5rM8TiVdTD5x
-UwQG7ADidVSVTR5KGV8wmonbuDu9b61GgU7VBslEK9Lsd92FO0/u09FF6DgCcICD
-yRJ0nM0o9S9FI1lqKoxAdgWyFwrKkBVZ05IDHw+jS6r7D/2irYetPJmVO/dvi87r
-aaLvyvzU3nz4LiWHmSl2AgDanjDcxtjGoWR2cc+J0v3r/+VEOctrc5EuAnlhl9Yj
-kFcfZDfqthCNb49qNGDgQMGrKTt+Dvrka/ZZxXBN3v96L3K4O32j9c97sZ8LEFaI
-RHl91Mx2okjrT9q2+Gef2UR9XEzuFEBRBqxktltlrIQIncn6Xx/TjEvIhf2Dgo4W
-isaAwTazyZrzATTWR1JS6Hdm7Eb/nCEHAFmVUbQm0d5BDfKmnRsNaaZK
------END ENCRYPTED PRIVATE KEY-----
diff --git a/pkix/tests/test-data/pem-rsa-enc.key b/pkix/tests/test-data/pem-rsa-enc.key
deleted file mode 100644
index 65439fe6..00000000
--- a/pkix/tests/test-data/pem-rsa-enc.key
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,24522D4CE5F5CD7B
-
-2H/8j0HYUya7LWEUxpgjp/LVcCX7yZB7SoREdoJdcqJEBUMWVxU/2OfVB8EZupmy
-7YHcnn5v1JwwtmAXAtqM9JGlvNWaRr1m4zDrhJn1fY3tu8YGtMR49IOZmOUBK+X+
-IxWAwaFDqLntuGZZnAmRJtgFVYVABEs5yM9zgoCGDaU4WMK3caD7Jnw8jH5m0nqQ
-XiQ1y1dHxFJmAgG0b5h2z7zjQTmmXd3IhXqSqsE/9ryruCCYa0Z7aAN5oAmO89I9
-gOyy3J4h76mTNFfF5btV4Jllwd4LkgGOmm69UxAyUTGzwYJ5gxgB3xFzGBwpVlcu
-72PrQCrjZqZ6rj6cTPGUYzcyMtEw3Xd6mFhApqJpVRZwNWUAMMJwHl2oWwKcIxfV
-y+OftRX6kc+cunrxCkl9aKuHDoJPEq+/Uh+AEXqir+942Vull0WPyuWUjaPKR1xJ
-poYsNfHRWq+klKCggQQL6jwuVbDLhbaXfgaNBQO1XMracgfmnO1PQPw8JSQ5iOkm
-Ybt2oHAEnrEWxZGn1PfRq6Z8HAbBlQpfmG7SMJZdQjlndKA6GR+tN5krKfpj6uak
-0eklm0Nb0YcDzJ3qqHXxIimK3Kh/WRZ1hVTnX4mS9u3HNQMo5Ov6z8OQN+Q45ffi
-ZDFkVwUTEJ+iwmCG7XnxX0v8Bv5LZmAnPu95KQTp4Ds0AZ6Sp+RqxvhnCO25cgWj
-+N5jHGzsDk9/Jw7rAHz8pnl3sziNBWdAk5ASPA28HCQQo5peWnWajM3Pk98+/wHY
-blTh7gw77gTake6hpiegnhNUXwGm6BXEqmyu7mPW0z5XFRb9W7bpog==
------END RSA PRIVATE KEY-----
diff --git a/pkix/tests/test-data/test-x509-swiss.p7b b/pkix/tests/test-data/test-x509-swiss.p7b
deleted file mode 100755
index d45b9e0e..00000000
--- a/pkix/tests/test-data/test-x509-swiss.p7b
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test-data/unclient.p12 b/pkix/tests/test-data/unclient.p12
deleted file mode 100644
index 321b4475..00000000
--- a/pkix/tests/test-data/unclient.p12
+++ /dev/null
Binary files differ
diff --git a/pkix/tests/test.asn b/pkix/tests/test.asn
deleted file mode 100644
index 3dde78a8..00000000
--- a/pkix/tests/test.asn
+++ /dev/null
@@ -1,14 +0,0 @@
-TEST { }
-
-DEFINITIONS EXPLICIT TAGS ::=
-
-BEGIN
-
-TestIntegers ::= SEQUENCE {
- uint1 INTEGER,
- uint2 INTEGER,
- uint3 INTEGER,
- mpi INTEGER
-}
-
-END
diff --git a/pkix/tests/unit-test-gcrypt-setup.c b/pkix/tests/unit-test-gcrypt-setup.c
deleted file mode 100644
index e7c19f28..00000000
--- a/pkix/tests/unit-test-gcrypt-setup.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-gcrypt-setup.c: Setup gcrypt library
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-crypto.h"
-
-#include <gcrypt.h>
-
-#include <glib.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-void unit_setup_gcrypt (void)
-{
- gkr_crypto_setup ();
-}
diff --git a/pkix/tests/unit-test-pkix-asn1.c b/pkix/tests/unit-test-pkix-asn1.c
deleted file mode 100644
index 3d7e7ba9..00000000
--- a/pkix/tests/unit-test-pkix-asn1.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pkix-parser.c: Test PKIX parser
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "pkix/gkr-pkix-asn1.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-#define extern
-#include "asn1-def-test.h"
-#undef extern
-
-ASN1_TYPE asn1_test;
-
-void unit_setup_asn1 (void)
-{
- int res = asn1_array2tree (test_asn1_tab, &asn1_test, NULL);
- g_return_if_fail (res == ASN1_SUCCESS);
-}
-
-void unit_test_asn1_types (CuTest* cu)
-{
- ASN1_TYPE asn;
-
- asn = gkr_pkix_asn1_get_pk_asn1type ();
- CuAssert (cu, "pk asn type is null", asn != NULL);
-
- asn = gkr_pkix_asn1_get_pkix_asn1type ();
- CuAssert (cu, "pkix asn type is null", asn != NULL);
-}
-
-void unit_test_asn1_integers (CuTest* cu)
-{
- ASN1_TYPE asn;
- gcry_mpi_t mpi, mpt;
- guchar *data;
- gsize n_data;
- gboolean ret;
- guint val;
- int res;
-
- res = asn1_create_element (asn1_test, "TEST.TestIntegers", &asn);
- CuAssert (cu, "asn test structure is null", asn != NULL);
-
- ret = gkr_pkix_asn1_write_uint (asn, "uint1", 35);
- CuAssert (cu, "couldn't write integer", ret);
-
- ret = gkr_pkix_asn1_write_uint (asn, "uint2", 23456);
- CuAssert (cu, "couldn't write integer", ret);
-
- ret = gkr_pkix_asn1_write_uint (asn, "uint3", 209384022);
- CuAssert (cu, "couldn't write integer", ret);
-
- /* Make a random number */
- mpi = gcry_mpi_new (512);
- g_return_if_fail (mpi);
- gcry_mpi_randomize (mpi, 512, GCRY_WEAK_RANDOM);
-
- /* Write the mpi out */
- ret = gkr_pkix_asn1_write_mpi (asn, "mpi", mpi);
-
- /* Now encode the whole caboodle */
- data = gkr_pkix_asn1_encode (asn, "", &n_data, NULL);
- CuAssert (cu, "encoding asn1 didn't work", data != NULL);
-
- asn1_delete_structure (&asn);
-
- /* Now decode it all nicely */
- res = asn1_create_element (asn1_test, "TEST.TestIntegers", &asn);
- g_return_if_fail (res == ASN1_SUCCESS);
-
- res = asn1_der_decoding (&asn, data, n_data, NULL);
- CuAssert (cu, "decoding asn didn't work", res == ASN1_SUCCESS);
-
- /* And get out the values */
- ret = gkr_pkix_asn1_read_uint (asn, "uint1", &val);
- CuAssert (cu, "couldn't read integer from asn1", ret);
- CuAssert (cu, "integer is wrong value", val == 35);
-
- ret = gkr_pkix_asn1_read_uint (asn, "uint2", &val);
- CuAssert (cu, "couldn't read integer from asn1", ret);
- CuAssert (cu, "integer is wrong value", val == 23456);
-
- ret = gkr_pkix_asn1_read_uint (asn, "uint3", &val);
- CuAssert (cu, "couldn't read integer from asn1", ret);
- CuAssert (cu, "integer is wrong value", val == 209384022);
-
- ret = gkr_pkix_asn1_read_mpi (asn, "mpi", &mpt);
- CuAssert (cu, "couldn't read mpi from asn1", ret);
- CuAssert (cu, "mpi returned is null", mpt != NULL);
- CuAssert (cu, "mpi is wrong number", gcry_mpi_cmp (mpi, mpt) == 0);
-}
-
-typedef struct _TimeTestData {
- gchar *value;
- time_t ref;
-} TimeTestData;
-
-static const TimeTestData generalized_time_test_data[] = {
- { "20070725130528Z", 1185368728 },
- { "20070725130528.2134Z", 1185368728 },
- { "20070725140528-0100", 1185368728 },
- { "20070725040528+0900", 1185368728 },
- { "20070725013528+1130", 1185368728 },
- { "20070725Z", 1185321600 },
- { "20070725+0000", 1185321600 },
- { NULL, 0 }
-};
-
-static const TimeTestData utc_time_test_data[] = {
- /* Test the Y2K style wrap arounds */
- { "070725130528Z", 1185368728 }, /* The year 2007 */
- { "020725130528Z", 1027602328 }, /* The year 2002 */
- { "970725130528Z", 869835928 }, /* The year 1997 */
- { "370725130528Z", 2132139928 }, /* The year 2037 */
-
- /* Test the time zones and other formats */
- { "070725130528.2134Z", 1185368728 },
- { "070725140528-0100", 1185368728 },
- { "070725040528+0900", 1185368728 },
- { "070725013528+1130", 1185368728 },
- { "070725Z", 1185321600 },
- { "070725+0000", 1185321600 },
-
- { NULL, 0 }
-};
-
-void unit_test_asn1_general_time (CuTest* cu)
-{
- time_t when;
- const TimeTestData *data;
-
- for (data = generalized_time_test_data; data->value; ++data) {
- when = gkr_pkix_asn1_parse_general_time (data->value);
- if (data->ref != when) {
- printf ("%s", data->value);
- printf ("%s != ", ctime (&when));
- printf ("%s\n", ctime (&data->ref));
- fflush (stdout);
- }
-
- CuAssert (cu, "decoded time doesn't match reference", data->ref == when);
- }
-}
-
-void unit_test_asn1_utc_time (CuTest* cu)
-{
- time_t when;
- const TimeTestData *data;
-
- for (data = utc_time_test_data; data->value; ++data) {
- when = gkr_pkix_asn1_parse_utc_time (data->value);
- if (data->ref != when) {
- printf ("%s", data->value);
- printf ("%s != ", ctime (&when));
- printf ("%s\n", ctime (&data->ref));
- fflush (stdout);
- }
-
- CuAssert (cu, "decoded time doesn't match reference", data->ref == when);
- }
-}
diff --git a/pkix/tests/unit-test-pkix-der.c b/pkix/tests/unit-test-pkix-der.c
deleted file mode 100644
index 674e05f0..00000000
--- a/pkix/tests/unit-test-pkix-der.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pkix-parser.c: Test PKIX parser
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-crypto.h"
-
-#include "pkix/gkr-pkix-der.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void)
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void)
- *
- * Tests be run in the order specified here.
- */
-
-const gchar *rsapub = "(public-key (rsa" \
-" (n #00AE4B381CF43F7DC24CF90827325E2FB2EB57EDDE29562DF391C8942AA8E6423410E2D3FE26381F9DE0395E74BF2D17621AE46992C72CF895F6FA5FBE98054FBF#)" \
-" (e #010001#)))";
-
-const gchar *rsaprv = "(private-key (rsa" \
-" (n #00B78758D55EBFFAB61D07D0DC49B5309A6F1DA2AE51C275DFC2370959BB81AC0C39093B1C618E396161A0DECEB8768D0FFB14F197B96C3DA14190EE0F20D51315#)" \
-" (e #010001#)" \
-" (d #108BCAC5FDD35812981E6EC5957D98E2AB76E4064C47B861D27C2CC322C50792313C852B4164A035B42D261F1A09F9FFE8F477F9F78FF2EABBDA6BA875C671D7#)" \
-" (p #00C357F11B19A18C66573D25D1E466D9AB8BCDDCDFE0B2E80BD46712C4BEC18EB7#)" \
-" (q #00F0843B90A60EF7034CA4BE80414ED9497CABCC685143B388013FF989CBB0E093#)" \
-" (u #12F2555F52EB56329A991CF0404B51C68AC921AD370A797860F550415FF987BD#)))";
-
-const gchar *dsapub = "(public-key (dsa" \
-" (p #0090EC0B60735839C754EAF8F64BB03FC35398D69772BFAE540079DEA2D3A61FAFFB27630A038A01A3D0CD62A10745A574A27ECB462F4F0885B79C61BBE954A60A29668AD54BBA5C07A72FD8B1105249670B339DF2C59E64A47064EFCF0B7236C5C72CD55CEB32917430BEC9A003D4E484FBAA84D79571B38D6B5AC95BB73E3F7B#)" \
-" (q #00FA214A1385C21BFEBAADAB240A2430C607D56271#)" \
-" (g #2DE05751F5DAEE97F3D43C54595A3E94A080728F0C66C98AEBED5762F6AB155802D8359EAD1DE1EC36A459FBEEEA48E59B9E6A8CB4F5295936B3CC881A5D957C7339175E2CFFE0F30D3711E430DB6648C2EB474AA10A4A3297450531FF2C7C6951220C9D446B6B6B0F00262E1EBEB3CC861476AA518CC555C9ABF9E5F39023FC#)" \
-" (y #54734451DB79D4EEDF0BBCEBD43BB6CBB7B8584603B957080075DD318EB5B0266D4B20DC5EFF376BDFC4EA2983B1F7F02A39ED4C619ED68712729FFF3B7C696ADD1B6D748F56A4B4BEC5C4385E528423A3B88AE65E6D5500F97839E7A486255982189C3B4FA8D94338C76F0E5CAFC9A30A1ED728BB9F2091D594E3250A09EA00#)))";
-
-const gchar *dsaprv = "(private-key (dsa" \
-" (p #0090EC0B60735839C754EAF8F64BB03FC35398D69772BFAE540079DEA2D3A61FAFFB27630A038A01A3D0CD62A10745A574A27ECB462F4F0885B79C61BBE954A60A29668AD54BBA5C07A72FD8B1105249670B339DF2C59E64A47064EFCF0B7236C5C72CD55CEB32917430BEC9A003D4E484FBAA84D79571B38D6B5AC95BB73E3F7B#)" \
-" (q #00FA214A1385C21BFEBAADAB240A2430C607D56271#)" \
-" (g #2DE05751F5DAEE97F3D43C54595A3E94A080728F0C66C98AEBED5762F6AB155802D8359EAD1DE1EC36A459FBEEEA48E59B9E6A8CB4F5295936B3CC881A5D957C7339175E2CFFE0F30D3711E430DB6648C2EB474AA10A4A3297450531FF2C7C6951220C9D446B6B6B0F00262E1EBEB3CC861476AA518CC555C9ABF9E5F39023FC#)" \
-" (y #54734451DB79D4EEDF0BBCEBD43BB6CBB7B8584603B957080075DD318EB5B0266D4B20DC5EFF376BDFC4EA2983B1F7F02A39ED4C619ED68712729FFF3B7C696ADD1B6D748F56A4B4BEC5C4385E528423A3B88AE65E6D5500F97839E7A486255982189C3B4FA8D94338C76F0E5CAFC9A30A1ED728BB9F2091D594E3250A09EA00#)" \
-" (x #00876F84F709D51108DFB0CBFA1F1C569C09C413EC#)))";
-
-static gboolean
-compare_keys (CuTest *cu, gcry_sexp_t key, gcry_sexp_t sexp)
-{
- guchar hash1[20], hash2[20];
- guchar *p;
-
- /* Now compare them */
- p = gcry_pk_get_keygrip (key, hash1);
- CuAssert (cu, "couldn't get key id for private key", p == hash1);
- p = gcry_pk_get_keygrip (key, hash2);
- CuAssert (cu, "couldn't get key id for parsed private key", p == hash2);
-
- return memcmp (hash1, hash2, 20) == 0;
-}
-
-static void
-test_der_public (CuTest *cu, gcry_sexp_t key)
-{
- guchar *data;
- gsize n_data;
- GkrPkixResult ret;
- gcry_sexp_t sexp;
-
- /* Encode it */
- data = gkr_pkix_der_write_public_key (key, &n_data);
- CuAssert (cu, "couldn't encode public key", data != NULL);
- CuAssert (cu, "encoding is empty", n_data > 0);
-
- /* Now parse it */
- ret = gkr_pkix_der_read_public_key (data, n_data, &sexp);
- CuAssert (cu, "couldn't decode public key", ret == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed key is empty", sexp != NULL);
-
- /* Now compare them */
- CuAssert (cu, "key parsed differently", compare_keys (cu, key, sexp));
-}
-
-void unit_test_der_rsa_public (CuTest* cu)
-{
- gcry_sexp_t key;
- gcry_error_t gcry;
-
- gcry = gcry_sexp_sscan (&key, NULL, rsapub, strlen (rsapub));
- g_return_if_fail (gcry == 0);
-
- test_der_public (cu, key);
-}
-
-void unit_test_der_dsa_public (CuTest* cu)
-{
- gcry_sexp_t key;
- gcry_error_t gcry;
-
- gcry = gcry_sexp_sscan (&key, NULL, dsapub, strlen (dsapub));
- g_return_if_fail (gcry == 0);
-
- test_der_public (cu, key);
-}
-
-static void
-test_der_private (CuTest *cu, gcry_sexp_t key)
-{
- guchar *data;
- gsize n_data;
- GkrPkixResult ret;
- gcry_sexp_t sexp;
-
- /* Encode it */
- data = gkr_pkix_der_write_private_key (key, &n_data);
- CuAssert (cu, "couldn't encode private key", data != NULL);
- CuAssert (cu, "encoding is empty", n_data > 0);
-
- /* Now parse it */
- ret = gkr_pkix_der_read_private_key (data, n_data, &sexp);
- CuAssert (cu, "couldn't decode private key", ret == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed key is empty", sexp != NULL);
-
- /* Now compare them */
- CuAssert (cu, "key parsed differently", compare_keys (cu, key, sexp));
-}
-
-void unit_test_der_rsa_private (CuTest* cu)
-{
- gcry_sexp_t key;
- gcry_error_t gcry;
-
- gcry = gcry_sexp_sscan (&key, NULL, rsaprv, strlen (rsaprv));
- g_return_if_fail (gcry == 0);
-
- test_der_private (cu, key);
-}
-
-void unit_test_der_dsa_private (CuTest* cu)
-{
- gcry_sexp_t key;
- gcry_error_t gcry;
-
- gcry = gcry_sexp_sscan (&key, NULL, dsaprv, strlen (dsaprv));
- g_return_if_fail (gcry == 0);
-
- test_der_private (cu, key);
-}
-
-void unit_test_der_dsa_private_parts (CuTest* cu)
-{
- guchar *params, *key;
- gsize n_params, n_key;
- gcry_sexp_t skey, pkey;
- gcry_error_t gcry;
- GkrPkixResult result;
-
- gcry = gcry_sexp_sscan (&skey, NULL, dsaprv, strlen (dsaprv));
- g_return_if_fail (gcry == 0);
-
- /* Encode the the dsa key by parts */
- params = gkr_pkix_der_write_private_key_dsa_params (skey, &n_params);
- CuAssert (cu, "didn't encode dsa params", params != NULL);
- key = gkr_pkix_der_write_private_key_dsa_part (skey, &n_key);
- CuAssert (cu, "didn't encode dsa key", key != NULL);
-
- /* Parse the dsa key by parts */
- result = gkr_pkix_der_read_private_key_dsa_parts (key, n_key, params, n_params, &pkey);
- CuAssert (cu, "couldn't parse dsa parts", result == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsing dsa parts resulted in null key", pkey != NULL);
-
- /* Now compare them */
- CuAssert (cu, "key parsed differently", compare_keys (cu, skey, pkey));
-}
diff --git a/pkix/tests/unit-test-pkix-parser.c b/pkix/tests/unit-test-pkix-parser.c
deleted file mode 100644
index 5b75c154..00000000
--- a/pkix/tests/unit-test-pkix-parser.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pkix-parser.c: Test PKIX parser
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-location.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-secure-memory.h"
-
-#include "pkix/gkr-pkix-parser.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static GkrPkixParser *parser = NULL;
-
-static GQuark last_type_parsed = 0;
-static gcry_sexp_t last_sexp_parsed = NULL;
-static ASN1_TYPE last_asn1_parsed = NULL;
-static guint n_parsed = 0;
-
-static CuTest *the_cu = NULL;
-
-static gboolean
-parsed_partial (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, gpointer user_data)
-{
- CuTest *cu = the_cu;
- g_assert (cu);
-
- CuAssert (cu, "location is empty", location != 0);
- CuAssert (cu, "location is invalid", gkr_location_to_path (location) != NULL);
- CuAssert (cu, "digest is empty", digest != NULL);
- CuAssert (cu, "type is invalid", type != 0);
-
- g_print ("parsed partial at: %s\n", g_quark_to_string (location));
- last_sexp_parsed = NULL;
- last_type_parsed = type;
- ++n_parsed;
-
- return TRUE;
-}
-
-static gboolean
-parsed_sexp (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, gcry_sexp_t sexp, gpointer user_data)
-{
- CuTest *cu = the_cu;
- g_assert (cu);
-
- CuAssert (cu, "location is empty", location != 0);
- CuAssert (cu, "location is invalid", gkr_location_to_path (location) != NULL);
- CuAssert (cu, "digest is empty", digest != NULL);
- CuAssert (cu, "type is invalid", type != 0);
- CuAssert (cu, "sexp is invalid", sexp != NULL);
-
- g_print ("parsed sexp at: %s\n", g_quark_to_string (location));
-
- last_sexp_parsed = sexp;
- last_type_parsed = type;
- ++n_parsed;
-
- return TRUE;
-}
-
-static gboolean
-parsed_asn1 (GkrPkixParser *parser, GQuark location, gkrconstid digest,
- GQuark type, ASN1_TYPE asn1, gpointer user_data)
-{
- CuTest *cu = the_cu;
- g_assert (cu);
-
- CuAssert (cu, "location is empty", location != 0);
- CuAssert (cu, "location is invalid", gkr_location_to_path (location) != NULL);
- CuAssert (cu, "digest is empty", digest != NULL);
- CuAssert (cu, "type is invalid", type != 0);
- CuAssert (cu, "asn1 is invalid", asn1 != NULL);
-
- g_print ("parsed asn1 at: %s\n", g_quark_to_string (location));
-
- last_asn1_parsed = asn1;
- last_type_parsed = type;
- ++n_parsed;
-
- return TRUE;
-}
-
-static gchar*
-ask_password (GkrPkixParser *parser, GQuark loc, gkrconstid digest,
- GQuark type, const gchar *details, guint n_prompts,
- gpointer user_data)
-{
- CuTest *cu = the_cu;
- g_assert (cu);
-
- gchar *msg;
-
- /* Should only be asking once per location */
- if (n_prompts > 0) {
- msg = g_strdup_printf ("decryption didn't work for: %s", g_quark_to_string (loc));
- CuAssert (cu, msg, FALSE);
- return NULL;
- }
-
- CuAssert (cu, "location is empty", loc != 0);
- CuAssert (cu, "details is null", details != NULL);
-
- g_print ("getting password 'booo' for: %s\n", details);
-
- /* All our test encrypted stuff use this password */
- return gkr_secure_strdup ("booo");
-}
-
-static void
-read_file (CuTest *cu, const gchar *filename, GQuark *location, guchar **contents, gsize *len)
-{
- gchar *path;
- gboolean ret;
-
- the_cu = cu;
-
- path = g_build_filename (g_get_current_dir (), "test-data", filename, NULL);
- *location = gkr_location_from_path (path);
- CuAssert (cu, "location is empty", *location != 0);
-
- ret = g_file_get_contents (path, (gchar**)contents, len, NULL);
- CuAssert (cu, "couldn't read in file", ret);
-
- g_free (path);
-}
-
-
-void unit_test_start_parser (CuTest *cu)
-{
- parser = gkr_pkix_parser_new ();
- g_signal_connect (parser, "parsed-partial", G_CALLBACK (parsed_partial), NULL);
- g_signal_connect (parser, "parsed-sexp", G_CALLBACK (parsed_sexp), NULL);
- g_signal_connect (parser, "parsed-asn1", G_CALLBACK (parsed_asn1), NULL);
- g_signal_connect (parser, "ask-password", G_CALLBACK (ask_password), NULL);
-}
-
-void unit_test_pkix_parse_der_keys (CuTest* cu)
-{
- guchar *contents;
- GkrPkixResult result;
- GQuark location;
- gsize len;
-
- the_cu = cu;
-
- /* First an RSA key */
- read_file (cu, "der-rsa-1024.key", &location, &contents, &len);
-
- last_sexp_parsed = NULL;
- result = gkr_pkix_parser_der_private_key (parser, location, contents, len);
- CuAssert (cu, "couldn't parse RSA key", result == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed object is invalid", last_sexp_parsed != NULL);
-
- gkr_crypto_sexp_dump (last_sexp_parsed);
-
- /* Now a DSA key */
- read_file (cu, "der-dsa-1024.key", &location, &contents, &len);
-
- last_sexp_parsed = NULL;
- result = gkr_pkix_parser_der_private_key (parser, location, contents, len);
- CuAssert (cu, "couldn't parse DSA key", result == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed object is invalid", last_sexp_parsed != NULL);
-
- gkr_crypto_sexp_dump (last_sexp_parsed);
-}
-
-void unit_test_pkix_parse_der_pkcs8 (CuTest* cu)
-{
- guchar *contents;
- GkrPkixResult result;
- GQuark location;
- gsize len;
-
- the_cu = cu;
-
- /* First an DSA key */
- read_file (cu, "der-pkcs8-dsa.key", &location, &contents, &len);
-
- last_sexp_parsed = NULL;
- result = gkr_pkix_parser_der_pkcs8_plain (parser, location, contents, len);
- CuAssert (cu, "couldn't parse PKCS8 key", result == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed object is invalid", last_sexp_parsed != NULL);
-
- gkr_crypto_sexp_dump (last_sexp_parsed);
-
- /* Now an encrypted key */
- read_file (cu, "der-pkcs8-encrypted-pkcs5.key", &location, &contents, &len);
-
- last_sexp_parsed = NULL;
- result = gkr_pkix_parser_der_pkcs8_encrypted (parser, location, contents, len);
- CuAssert (cu, "couldn't parse PKCS8 key", result == GKR_PKIX_SUCCESS);
- CuAssert (cu, "parsed object is invalid", last_sexp_parsed != NULL);
-
- gkr_crypto_sexp_dump (last_sexp_parsed);
-}
-
-void unit_test_pkix_parse_pem (CuTest *cu)
-{
- guchar *contents;
- GkrPkixResult result;
- GQuark location;
- gsize len;
-
- the_cu = cu;
-
- /* First an RSA key */
- read_file (cu, "pem-dsa-1024.key", &location, &contents, &len);
-
- n_parsed = 0;
- result = gkr_pkix_parser_pem (parser, location, contents, len);
- CuAssert (cu, "couldn't parse PEM data", result == GKR_PKIX_SUCCESS);
-
- CuAssert (cu, "invalid number of items parsed", n_parsed == 1);
- CuAssert (cu, "invalid type of data parsed", last_sexp_parsed != NULL);
-
- gkr_crypto_sexp_dump (last_sexp_parsed);
-}
-
-void unit_test_pkix_parse_all (CuTest *cu)
-{
- gchar *path, *filepath, *msg;
- guchar *contents;
- GError *err = NULL;
- gboolean result;
- const gchar *filename;
- GQuark location;
- gsize len;
- GDir *dir;
-
- the_cu = cu;
- path = g_build_filename (g_get_current_dir (), "test-data", NULL);
-
- dir = g_dir_open (path, 0, NULL);
- CuAssert (cu, "couldn't open directory", dir != NULL);
-
- while (dir) {
- filename = g_dir_read_name (dir);
- if (!filename)
- break;
-
- filepath = g_build_filename (path, filename, NULL);
- if (!g_file_test (filepath, G_FILE_TEST_IS_REGULAR))
- continue;
-
- read_file (cu, filename, &location, &contents, &len);
-
- result = gkr_pkix_parser_parse (parser, location, contents, len, &err);
- if (!result) {
- msg = g_strdup_printf ("couldn't parse file data: %s: %s",
- filename, err && err->message ? err->message : "");
- g_error_free (err);
- err = NULL;
- CuAssert (cu, msg, FALSE);
- }
- }
-}
diff --git a/pkix/tests/unit-test-pkix-serialize.c b/pkix/tests/unit-test-pkix-serialize.c
deleted file mode 100644
index c36b71d3..00000000
--- a/pkix/tests/unit-test-pkix-serialize.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* unit-test-pkix-serialize.c: Test PKIX serialize
-
- Copyright (C) 2008 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "run-auto-test.h"
-
-#include "common/gkr-location.h"
-#include "common/gkr-crypto.h"
-#include "common/gkr-secure-memory.h"
-
-#include "pkix/gkr-pkix-der.h"
-#include "pkix/gkr-pkix-parser.h"
-#include "pkix/gkr-pkix-serialize.h"
-
-#include <glib.h>
-#include <gcrypt.h>
-#include <libtasn1.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/*
- * Each test looks like (on one line):
- * void unit_test_xxxxx (CuTest* cu)
- *
- * Each setup looks like (on one line):
- * void unit_setup_xxxxx (void);
- *
- * Each teardown looks like (on one line):
- * void unit_teardown_xxxxx (void);
- *
- * Tests be run in the order specified here.
- */
-
-static void
-read_file (CuTest *cu, const gchar *filename, guchar **contents, gsize *len)
-{
- gchar *path;
- gboolean ret;
-
- path = g_build_filename (g_get_current_dir (), "test-data", filename, NULL);
- ret = g_file_get_contents (path, (gchar**)contents, len, NULL);
- CuAssert (cu, "couldn't read in file", ret);
-
- g_free (path);
-}
-
-static gchar*
-ask_password (GkrPkixParser *parser, GQuark loc, gkrconstid unique,
- GQuark type, const gchar *details, guint n_prompts,
- gpointer user_data)
-{
- CuTest *cu = (CuTest*)user_data;
- gchar *msg;
-
- /* Should only be asking once per location */
- if (n_prompts > 0) {
- msg = g_strdup_printf ("decryption didn't work for: %s", g_quark_to_string (loc));
- CuAssert (cu, msg, FALSE);
- return NULL;
- }
-
- CuAssert (cu, "type is zero", type != 0);
- CuAssert (cu, "details is null", details != NULL);
-
- g_print ("getting password 'booo' for: %s\n", details);
-
- /* All our test encrypted stuff use this password */
- return gkr_secure_strdup ("booo");
-}
-
-void unit_test_serialize_certificate (CuTest* cu)
-{
- ASN1_TYPE asn, parsed;
- guchar *input, *output;
- gsize n_input, n_output;
- GkrPkixResult result;
-
- read_file (cu, "der-certificate.crt", &input, &n_input);
- result = gkr_pkix_der_read_certificate (input, n_input, &asn);
- CuAssert (cu, "couldn't parse certificate file", result == GKR_PKIX_SUCCESS);
-
- output = gkr_pkix_serialize_to_data (GKR_PKIX_CERTIFICATE, asn, "booo", &n_output);
-
- result = gkr_pkix_der_read_certificate (output, n_output, &parsed);
- CuAssert (cu, "couldn't parse encoded certificate", result == GKR_PKIX_SUCCESS);
-}
-
-void unit_test_serialize_pkcs8 (CuTest* cu)
-{
- gcry_sexp_t key;
- guchar *input, *output;
- gsize n_input, n_output;
- GkrPkixParser* parser;
- GkrPkixResult result;
-
- read_file (cu, "der-dsa-1024.key", &input, &n_input);
- result = gkr_pkix_der_read_private_key_dsa (input, n_input, &key);
- CuAssert (cu, "couldn't parse key file", result == GKR_PKIX_SUCCESS);
-
- /* Serializes as PKCS8 */
- output = gkr_pkix_serialize_to_data (GKR_PKIX_PRIVATE_KEY, key, "booo", &n_output);
-
- parser = gkr_pkix_parser_new ();
- g_signal_connect (parser, "ask-password", G_CALLBACK (ask_password), cu);
-
- result = gkr_pkix_parser_der_pkcs8 (parser, 0, output, n_output);
- CuAssert (cu, "couldn't parse encrypted certificate", result == GKR_PKIX_SUCCESS);
-}
diff --git a/po/.cvsignore b/po/.cvsignore
deleted file mode 100644
index 6c59253f..00000000
--- a/po/.cvsignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*.gmo
-*.mo
-*.pot
-Makefile
-Makefile.in
-Makefile.in.in
-POTFILES
-po2tbl.sed
-po2tbl.sed.in
-cat-id-tbl.c
-stamp-cat-id
-stamp-it
-messages
-missing
diff --git a/po/ChangeLog b/po/ChangeLog
deleted file mode 100644
index 6d96666f..00000000
--- a/po/ChangeLog
+++ /dev/null
@@ -1,1776 +0,0 @@
-2008-06-11 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-=== gnome-keyring 2.22.2 ===
-
-2008-05-22 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2008-05-19 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2008-04-15 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Yavor Doganov <yavor@gnu.org>
-
-=== gnome-keyring 2.22.1 ===
-
-2008-03-31 Eskild Hustvedt <eskildh@gnome.org>
-
- * nn.po: Updated Norwegian Nynorsk translation
-
-2008-03-26 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- * nl.po: Updated Dutch translation by Wouter Bolsterlee.
-
-2008-03-23 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-
- * vi.po: Update Vietnamese translation
-
-2008-03-10 Kostas Papadimas <pkst@gnome.org>
-
- * el.po: Updated Greek translation
-
-2008-03-09 Kenneth Nielsen <k.nielsen81@gmail.com>
-
- * da.po: Updated Danish translation
-
-2008-03-09 Yuri Kozlov <kozlov.y@gmail.com>
-
- * ru.po: Updated Russian translation.
-
-=== gnome-keyring 2.22.0 ===
-
-2008-03-09 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
- * zh_TW.po: Updated Traditional Chinese translation(Taiwan).
-
-2008-03-08 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2008-03-07 Maxim Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: Update Ukrainian translation.
-
-2008-03-05 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-03-05 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2008-03-03 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-03-03 Rahul Bhalerao <b.rahul.pm@gmail.com>
-
- * mr.po: Updated Marathi translations from Sandeep Shedmake.
-
-2008-03-02 Philip Withnall <pwithnall@svn.gnome.org>
-
- * en_GB.po: Updated British English translation.
-
-2008-03-02 Gintautas Miliauskas <gintas@akl.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2008-03-02 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation.
-
-2008-02-25 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Updated Korean translation.
-
-2008-02-25 Gil Forcada <gforcada@gnome.org>
-
- * ca.po: Updated Catalan translation.
-
-=== gnome-keyring 2.21.92 ===
-
-2008-02-24 Philipp Kerling <k.philipp@gmail.com>
-
- * de.po: Updated German translation.
-
-2008-02-24 Philipp Kerling <k.philipp@gmail.com>
-
- * de.po: Updated German translation.
-
-2008-02-24 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated by Daniel van Eeden.
-
-2008-02-23 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated
-
-2008-02-22 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR: Updated Brazilian Portuguese translation by Hugo Doria.
-
-2008-02-21 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated by Balint Laza
-
-2008-02-19 Arangel Angov <arangel@linux.net.mk>
-
- * mk.po: Updated Macedonian translation.
-
-2008-02-19 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2008-02-19 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2008-02-18 Baris Cicek <baris@teamforce.name.tr>
-
- * tr.po: Updated Turkish translation from Serdar Cicek
-
-2008-02-17 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-02-17 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-02-17 Takeshi AIHANA <takeshi.aihana@gmail.com>
-
- * ja.po: Updated Japanese translation.
-
-2007-02-17 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2008-02-16 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
-
- * eu.po: Updated Basque translation.
-
-2008-02-16 Petr Kovar <pknbe@volny.cz>
-
- * cs.po: Updated Czech translation by Kamil Paral.
-
-2008-02-16 Artur Flinta <aflinta@gmail.com>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-02-16 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2008-02-15 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation.
-
-2008-02-15 Claude Paroz <claude@2xlibre.net>
-
- * fr.po: Updated French translation by Robert-André Mauchin and Claude
- Paroz.
-
-2008-02-15 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-02-15 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-02-14 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2008-02-14 Pawan Chitrakar <chautari@gmail.com>
-
- * ne.po: Updated Nepali Translation.
-
-2008-02-13 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation by Hugo Doria.
-
-2008-02-13 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-=== gnome-keyring 2.21.91 ===
-
-2008-02-10 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-02-08 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation.
-
-2008-02-08 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
-
- * eu.po: Updated Basque translation.
-
-2008-02-07 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-02-07 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2008-02-07 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
- * zh_TW.po: Updated Traditional Chinese translation(Taiwan).
-
-2008-01-30 Arangel Angov <arangel@linux.net.mk>
-
- * mk.po: Updated Macedonian translation.
-
-2008-02-06 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2008-02-05 Jovan Naumovski <jovan@lugola.net>
-
- * mk.po: Fix for #514613.
-
-2008-02-05 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-02-02 Stefan Walter <stef@memberwebs.com>
-
- * POTFILES.in: Added gkr-pkix-serialize.c
-
-2008-02-02 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-02-02 Takeshi AIHANA <takeshi.aihana@gmail.com>
-
- * ja.po: Updated Japanese translation.
-
-2007-02-02 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2008-02-02 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2008-02-01 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2008-02-01 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2008-01-31 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2008-01-30 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2008-01-30 Jovan Naumovski <jovan@lugola.net>
-
- * mk.po: Updated Macedonian translation.
-
-=== gnome-keyring 2.21.90 ===
-
-2008-01-21 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2008-01-27 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2008-01-14 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-=== gnome-keyring 2.21.5 ===
-
-2008-01-14 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2008-01-12 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Djihed Afifi.
-
-2008-01-07 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
-
- * eu.po: Updated Basque translation.
-
-2008-01-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2008-01-05 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2008-01-03 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål transation.
-
-2007-12-31 Yannig Marchegay <yannig@marchegay.org>
-
- * oc.po: Updated Occitan translation.
-
-2007-12-31 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2007-12-31 Priit Laes <plaes at svn dot gnome dot org>
-
- * et.po: Translation updated by Ivar Smolin
-
-2007-12-29 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
-
- * pt_BR.po: Brazilian Portuguese translation updated by Hugo Doria.
-
-2007-12-28 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-12-23 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-12-19 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-12-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-12-19 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-=== gnome-keyring 2.21.4 ===
-
-2007-12-17 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-12-11 Urbančič Matej <mateju@svn.gnome.org>
-
- * sl.po: Updated Slovenian translation.
-
-2007-12-08 Kjartan Maraas <kmaraas@gnome.org>
-
- * LINGUAS: Add nn
- * nn.po: Added Norwegian nynorsk translation from
- Eskild Hustvedt <eskild at zerodogg org>
-
-2007-12-08 Ihar Hrachyshka <booxter@lacinka.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-12-07 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-12-06 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-=== gnome-keyring 2.21.3 ===
-
-2007-12-01 Stef Walter <stef@memberwebs.com>
-
- * POTFILES.in: Update translatable files
-
-2007-11-29 Yair Hershkovitz <yairhr@gmail.com>
-
- * he.po, LINGUAS: Added Hebrew translation.
-
-2007-11-27 Urbančič Matej <mateju@svn.gnome.org>
-
- * sl.po: Updated Slovenian translation.
-
-2007-11-25 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-11-14 Matej Urbančič <mateju@svn.gnome.org>
-
- * sl.po: Updated Slovenian translation.
-
-2007-11-13 Leonardo Ferreira Fontenelle <leonardof@svn.gnome.org>
-
- * pt_BR.po: Fix in Brazilian Portuguese translation, by Vladimir Melo.
- Thanks for N3RD3X for spotting the issue.
-
-2007-11-04 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2007-10-23 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Anas Husseini.
-
-2007-10-21 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Anas Husseini.
-
-2007-10-21 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Anas Husseini.
-
-=== gnome-keyring 2.20.1 ===
-
-2007-10-15 Matej Urbančič <mateju@svn.gnome.org>
-
- * sl.po: Updated Slovenian translation.
-
-2007-10-10 Jakub Friedl <jfriedl@suse.cz>
-
- * cs.po: Updated Czech translation.
-
-2007-09-25 Kostas Papadimas <pkst@gnome.org>
-
- * el.po: Updated Greek translation.
-
-2007-09-23 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Updated Korean translation.
-
-2007-09-17 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Alexander Shopov <ash@contact.bg>
-
-=== gnome-keyring 2.20 ===
-
-2007-09-17 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation by
- Francesco Marletta <francesco.marletta@tiscali.it>
-
-2007-09-16 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
-
- * ru.po: Updated Russian translation.
-
-2007-09-15 Andre Klapper <a9016009@gmx.de>
-
- * sk.po: Updated Slovak translation on behalf of Peter Tuharsky
- <tuharsky@misbb.sk>.
-
-2007-09-14 Gil Forcada <gforcada@svn.gnome.org>
-
- * ca.po: Update catalan translation.
-
-2007-09-13 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation by Anas Husseini.
-
-2007-09-12 Danilo Šegan <danilo@gnome.org>
-
- * sr.po, sr@Latn.po: Updated Serbian translation.
-
-2007-09-11 Maxim Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: Update Ukrainian translation.
-
-2007-09-09 Kenneth Nielsen <k.nielsen81@gmail.com>
-
- * da.po: Updated Danish translation
-
-2007-09-05 Jovan Naumovski <jovan@lugola.net>
-
- * mk.po: Updated Macedonian translation.
-
-2007-09-04 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated.
-
-2007-09-03 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2007-09-02 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation.
-
-2007-08-29 Stéphane Raimbault <stephane.raimbault@gmail.com>
-
- * fr.po: Updated French translation by Yann Simon and Claude
- Paroz.
-
-=== gnome-keyring 2.19.91 ===
-
-2007-08-20 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-08-19 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2007-08-16 Jonh Wendell <jwendell@gnome.org>
-
- * pt_BR.po: Brazilian Portuguese translation updated by Vladimir Melo
- <vladimirmelo@foresightlinux.org>.
-
-2007-08-15 Adam Weinberger <adamw@gnome.org>
-
- * en_CA.po: Updated Canadian English translation.
-
-2007-08-14 I. Felix <ifelix@svn.gnome.org>
-
- * ta.po: Tamil Translation updated by Tirumurthi Vasudevan
-
-2007-08-13 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-=== gnome-keyring 2.19.90 ===
-
-2007-08-06 Ankit Patel <ankit644@yahoo.com>
-
- * gu.po: Updated Gujarati Translation.
-
-2007-08-04 Inaki Larranaga Murgoitio <dooteo@zundan.com>
-
- * eu.po: Updated Basque translation.
-
-2007-08-03 Runa Bhattacharjee <runabh@gmail.com>
-
- * bn_IN.po: Updated Bengali India Translation.
-
-2007-08-03 Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-08-02 Hendrik Brandt <heb@gnome-de.org>
-
- * de.po: Updated German translation.
-
-2007-08-01 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-08-01 Žygimantas Beručka <zygis@gnome.org>
-
- * lt.po: Updated Lithuanian translation.
-
-2007-08-01 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Estonian translation update by Ivar Smolin.
-
-2007-07-30 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Estonian translation update by Ivar Smolin.
-
-=== gnome-keyring 2.19.6.1 ===
-
-2007-07-30 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-07-29 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-07-28 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- * nl.po: Translation updated by Wouter Bolsterlee.
-
-2007-07-28 Takeshi AIHANA <takeshi.aihana@gmail.com>
-
- * ja.po: Updated Japanese translation.
-
-=== gnome-keyring 2.19.6 ===
-
-2007-07-27 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-26 Stef Walter <stef@memberwebs.com>
-
- * POTFILES.in: Added common/gkr-location.c
-
-2007-07-25 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-07-24 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-24 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Estonian translation update by Ivar Smolin.
-
-2007-07-20 Jakub Friedl <jfriedl@suse.cz>
-
- * cs.po: Updated Czech translation (patch by Michal Čihař).
-
-2007-07-17 Wouter Bolsterlee <wbolster@svn.gnome.org>
-
- * nl.po: Dutch translation updated by Wouter Bolsterlee.
-
-2007-07-16 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2007-07-16 Sunil Mohan Adapa <sunil@atc.tcs.com>
-
- * te.po: Added Telugu translation done by
- Bharat Kumar <jonnalagaddabharat@gmail.com>.
-
-2007-07-16 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated.
-
-2007-07-13 I. Felix <ifelix@svn.gnome.org>
-
- * ta.po: Tamil Translation updated by Tirumurthi Vasudevan
-
-2007-07-10 Ankit Patel <ankit644@yahoo.com>
-
- * gu.po: Updated Gujarati Translation.
-
-2007-07-09 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-07-07 Takeshi AIHANA <takeshi.aihana@gmail.com>
-
- * ja.po: Updated Japanese translation.
-
-=== gnome-keyring 2.19.5 ===
-
-2007-07-04 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-07-01 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-
- * vi.po: Updated Vietnamese translation.
-
-2007-06-29 Artur Flinta <aflinta@svn.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2007-06-29 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-06-28 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-06-28 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2007-06-27 Stef Walter <stef@memberwebs.com>
-
- * POTFILES.in: Added library/gnome-keyring-utils.c
-
-2007-06-26 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2007-06-23 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2007-06-22 I. Felix <ifelix@svn.gnome.org>
-
- * si.po: Sinhala Translation updated by Danishka Navin
- * LINGUAS: Added Sinhala (si) to The List of Languages.
-
-=== gnome-keyring 2.19.4 ===
-
-2007-06-21 I Felix <ifelix25@gmail.com>
-
- * ta.po: Updated Tamil Translation.
-
-2007-06-17 Stef Walter <stef@memberwebs.com>
-
- * POTFILES.in: Added daemon/gnome-keyring-daemon-ops.c
-
-2007-06-13 Pema Geyleg <pema.geyleg@gmail.com>
-
- * dz.po: Updated dzongkha translation.
-
-2007-06-05 Jakub Friedl <jfriedl@suse.cz>
-
- * cs.po: Updated Czech Translation.
-
-2007-05-29 Ihar Hrachyshka <iharh@gnome.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-05-27 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-05-24 Priit Laes <plaes@svn.gnome.org>
-
- * et.po: Updated Estonian translation by Ivar Smolin <okul@linux.ee>.
-
-2007-05-23 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-05-22 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-05-18 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2007-05-15 David Lodge <dave@cirt.net>
-
- * en_GB.po: Updated British English translation
-
-2007-05-15 Ihar Hrachyshka <iharh@gnome.org>
-
- * be@latin.po: Updated Belarusian Latin translation.
-
-2007-05-14 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2007-05-13 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Alexander Shopov <ash@contact.bg>
-
-=== gnome-keyring 2.19.2 ===
-
-2007-05-11 Jorge Gonzalez <jorgegonz@svn.gnome.org>
-
- * es.po: Updated Spanish translation
-
-2007-04-12 Ihar Hrachyshka <iharh@gnome.org>
-
- * be@latin.po: Added Belarusian Latin translation.
-
-2007-03-25 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2007-03-10 Luca Ferretti <elle.uca@libero.it>
-
- * it.po: Updated Italian translation by Francesco Marletta
-
-2007-03-03 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu
- <elian@alblinux.net>.
-
-2007-03-01 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Updated Korean translation.
-
-2007-02-27 Gintautas Miliauskas <gintas@akl.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-=== gnome-keyring 0.8 ===
-
-=== gnome-keyring 0.7.92 ===
-
-2007-02-23 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
-
- * LINGUAS: Added vi to the list.
-
-2007-02-21 Maxim Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: Updated Ukrainian translation.
-
-2007-02-19 Lasse Bang Mikkelsen <lbm@fatalerror.dk>
-
- * da.po: Updated Danish translation by Peter Bach.
-
-=== gnome-keyring 0.7.91 ===
-
-2007-02-03 Ihar Hrachyshka <iharh@gnome.org>
-
- * be.po: Updated Belarusian Translation.
-
-=== gnome-keyring 0.7.3 ===
-
-=== gnome-keyring 0.7.2 ===
-
-2006-12-1 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation.
-
-2006-11-19 Wouter Bolsterlee <wbolster@cvs.gnome.org>
-
- * pl.po: Translation updated by Stanisław Małolepszy.
-
-2006-11-6 Djihed Afifi <djihed@gmail.com>
-
- * ar.po: Updated Arabic Translation.
-
-2006-11-05 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated by Ivar Smolin.
-
-2006-11-03 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated.
-
-2006-11-01 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated.
-
-2006-10-30 Djihed Afifi <djihed@gmail.com>
-
- * ar.po Updated Arabic Translation.
-
-2006-09-28 Alessio Frusciante <algol@firenze.linux.it>
-
- * it.po: Updated Italian translation by
- Francesco Marletta <francesco.marletta @ tiscali.it>.
-
-2006-09-10 David Lodge <dave@cirt.net>
-
- * en_GB.po: Updated English (British) translation.
-
-2006-09-04 Baris Cicek <baris@teamforce.name.tr>
-
- * tr.po: Updated Turkish Translation
-
-2006-09-03 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Updated Catalan translation.
-
-2006-09-01 Rajesh Ranjan <rajeshkajha@yahoo.com>
-
- * LINGUAS: Added "hi" in LINGUAS.
-
-2006-09-01 Ankit Patel <ankit644@yahoo.com>
-
- * LINGUAS: Added "gu" in LINGUAS.
-
-2006-09-01 I. Felix <ifelix25@gmail.com>
-
- * ta.po: Updated Tamil translation.
-
-2006-08-31 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated.
-
-2006-08-31 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation.
-
-2006-08-30 Lucas Rocha <lucasr@gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation
- by Leonardo Ferreira Fontenelle <leo.fontenelle@gmail.com>
-
-2006-08-29 Rajesh Ranjan <rajeshkajha@yahoo.com>
-
- * hi.po: Updated Hindi Translation.
-
-2006-08-25 Khandakar Mujahidul Islam <suzan@bengalinux.org>
-
- * bn.po: Updated Bengali translation
-
-2006-08-25 Rahul Bhalerao <b.rahul.pm@gmail.com>
-
- * LINGUAS: Added an entry for Marathi(mr).
- * mr.po: Added the file and Updated Marathi translation.
-
-2006-08-22 Wouter Bolsterlee <uws+gnome@xs4all.nl>
-
- * po/*: Fix "unkown" typo in all .po files and run
- "make update-po" to update all translations (to avoid
- breaking string freeze). See main ChangeLog for details.
-
-=== gnome-keyring 0.5.2 ===
-
-2006-08-18 Thierry Randrianiriana <randrianiriana@gmail.com>
-
- * mg.po: Added Malagasy translation.
- * LINGUAS: Added 'mg'.
-
-2006-08-18 Wouter Bolsterlee <uws+gnome@xs4all.nl>
-
- * nl.po: Translation updated by Wouter Bolsterlee.
-
-2006-08-17 Satoru SATOH <ss@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2006-08-17 Artur Flinta <aflinta@cvs.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2006-08-16 Leonid Kanter <leon@asplinux.ru>
-
- * ru.po: Updated Russian translation
-
-2006-08-16 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated.
-
-2006-08-14 Sanlig Badral <badral@openmn.org>
-
- * mn.po: Updated Mongolian translation.
-
-2006-08-14 Žygimantas Beručka <zygis@gnome.org>
-
- * lt.po: Updated Lithuanian translation.
-
-2006-08-14 Maxim Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: Update Ukrainian translation.
-
-2006-08-07 Inaki Larranaga <dooteo@euskalgnu.org>
-
- * eu.po: Fixed some typos.
-
-2006-08-06 Ani Peter <peter.ani@gmail.com>
-
- * ml.po: Added and updated Malayalam translation
- * LINGUAS: Added Malayalam (ml) to the list of Languages
-
-2006-08-03 Subhransu Behera <arya_subhransu@yahoo.co.in>
-
- * or.po: Added and Updated Oriya Translation.
- * LINGUAS: Added Oriya (or) to The List of Languages.
-
-2006-08-02 Runa Bhattacharjee <runabh@gmail.com>
-
- * bn_IN.po: Updated Bengali India Translation.
-
-2006-08-01 Arangel Angov <ufo@linux.net.mk>
-
- * sl.po: Added Slovenian translation.
-
-2006-07-30 Hendrik Richter <hendrikr@gnome.org>
-
- * de.po: Updated German translation, by
- Michael Kanis <mkanis@gmx.de>
-
-2006-07-19 Kostas Papadimas <pkst@gnome.org>
-
- * el.po: Updated Greek translation.
-
-2006-07-16 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2006-07-09 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Updated Korean translation.
-
-2006-07-09 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
- * zh_TW.po: Updated Traditional Chinese translation(Taiwan).
-
-2006-07-08 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Rostislav Raykov <zbrox@i-space.org>
-
-2006-07-08 Priit Laes <amd@store20.com>
-
- * et.po: Translation updated.
-
-2006-07-08 Raivis Dejus <orvils@gmail.com>
-
- * lv.po: Added Latvian translation.
- * LINGUAS: Added 'lv'
-
-2006-07-07 Inaki Larranaga <dooteo@euskalgnu.org>
-
- * eu.po: Updated Basque translation.
-
-2006-07-03 Runa Bhattacharjee <runabh@gmail.com>
-
- * bn_IN.po: Added Bengali India Translation
- * LINGUAS: Added Bengali India (bn_IN) to the list of languages.
-
-2006-07-03 Simos Xenitellis <simos@gnome.org>
-
- * ne.po: Removed ^M characters, bug #316750.
-
-2006-07-03 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2006-07-02 Benoît Dejean <benoit@placenet.org>
-
- * fr.po: Updated French translation.
-
-2006-07-01 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2006-06-29 Rajesh Ranjan <rajeshkajha@yahoo.com>
-
- * hi.po: Updated Hindi Translation.
-
-=== gnome-keyring 0.5.1 ===
-
-2006-05-28 Pema Geyleg <pema.geyleg@gmail.com>
-
- * dz.po: Updated Dzongkha translation.
-
-2006-05-26 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2006-05-25 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Translation updated.
-
-2006-05-23 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2006-05-21 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Updated Czech translation.
-
-2006-05-20 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated.
-
-2006-05-18 Priit Laes <amd@store20.com>
-
- * et.po: Translation updated by Ivar Smolin.
-
-2006-05-15 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2006-05-14 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_HK.po: Updated Traditional Chinese translation(Hong Kong).
- * zh_TW.po: Updated Traditional Chinese translation(Taiwan).
-
-2006-05-11 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2006-05-06 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2006-05-01 Funda Wang <fundawang@linux.net.cn>
-
- * zh_CN.po: Updated Simplified Chinese translation.
-
-2006-04-30 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
-
-2006-04-20 Ankit Patel <ankit644@yahoo.com>
-
- * gu.po: Updated Gujarati Translation.
-
-2006-04-18 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Update Norwegian bokmål translation
-
-2006-04-13 Pema Geyleg <pema.geyleg@gmail.com>
-
- * dz.po: Updated Dzongkha translation.
-
-2006-04-12 Žygimantas Beručka <zygis@gnome.org>
-
- * lt.po: Updated Lithuanian translation.
-
-2006-04-12 Hendrik Richter <hendrikr@gnome.org>
-
- * de.po: Updated German translation.
-
-2006-04-09 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2006-04-09 Kostas Papadimas <pkst@gnome.org>
-
- * el.po Updated Greek Translatio
-
-2006-04-08 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Updated Czech translation.
-
-2006-04-08 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Updated Czech translation.
-
-2006-04-08 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2006-04-07 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2006-04-06 Rhys Jones <rhys@sucs.org>
-
- * cy.po: Updated Welsh translation.
-
-2006-04-05 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2006-04-05 Priit Laes <amd@store20.com>
-
- * et.po: Translation updated by Ivar Smolin.
-
-2006-04-05 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated.
-
-2006-04-04 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Updated Catalan translation.
-
-2006-04-04 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2006-04-04 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Alexander Shopov <ash@contact.bg>
-
-2006-04-04 Ankit Patel <ankit644@yahoo.com>
-
- * gu.po: Updated Gujarati Translation.
-
-2006-04-04 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2006-03-24 Tommi Vainikainen <thv@iki.fi>
-
- * dz.po: Added Dzongkha translation from Pema Geyleg.
-
-=== gnome-keyring 0.4.9 ===
-
-2006-03-12 Alessio Frusciante <algol@firenze.linux.it>
-
- * it.po: Updated Italian translation by
- Francesco Marletta <francesco.marletta@tiscali.it>.
-
-2006-03-11 Runa Bhattacharjee <runa@bengalinux.org>
- * bn.po: Updated Bengali Translation.
-
-2006-03-06 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: Updated Swedish translation.
-
-2006-03-05 Mugurel Tudor <mugurelu@gnome.ro>
-
- * ro.po: Updated Romanian translation
-
-2006-03-05 Artur Flinta <aflinta@cvs.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2006-03-03 Maxim Dziumanenko <mvd@mylinux.ua>
-
- * uk.po: Updated Ukrainian translation.
-
-2006-03-03 Rhys Jones <rhys@sucs.org>
-
- * cy.po: Updated Welsh translation.
-
-2006-03-02 Hendrik Richter <hendrikr@gnome.org>
-
- * de.po: Updated German translation.
-
-2006-03-01 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Some fixes to Finnish translation.
-
-=== gnome-keyring 0.4.8 ===
-
-2006-02-27 Leonid Kanter <leon@asplinux.ru>
-
- * ru.po: Updated Russian translation
-
-2006-02-24 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Changed Evää -> Estä
-
-2006-02-23 Clytie Siddall <clytie@riverland.net.au>
-
- * ka.po: Added Georgian translation by Alexander Didebulidze <didebuli@in.tum.de>.
-
-2006-02-23 Žygimantas Beručka <zygis@gnome.org>
-
- * lt.po: Updated Lithuanian translation.
-
-2006-02-22 Kostas Papadimas <pkst@gnome.org>
-
- * el.po Updated Greek Translation
-
-2006-02-22 Inaki Larranaga <dooteo@euskalgnu.org>
-
- * eu.po: Updated Basque translation.
-
-2006-02-19 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
- * no.po: Same.
-
-2006-02-16 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2006-02-16 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated Portuguese translation.
-
-2006-02-15 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Hungarian translation updated by Mate ORY.
-
-=== gnome-keyring 0.4.7 ===
-
-2006-01-31 Slobodan D. Sredojevic <slobo@akrep.be>
-
- * sr.po, sr@Latn.po: Updated Serbian translation
-
-2006-01-07 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_TW.po: Updated Traditional Chinese Translation.(Taiwan)
- * zh_HK.po: Added Traditional Chinese Translation.(Hong Kong)
-
-2006-01-02 Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
-
- * ca.po: Updated Catalan translation.
-
-2005-12-29 Clytie Siddall <clytie@riverland.net.au>
-
- * vi.po: Updated Vietnamese translation.
-
-2005-12-25 Funda Wang <fundawang@linux.net.cn>
-
- * zh_CN.po: Updated Simplified Chinese translation.
-
-2005-12-11 Ankit Patel <ankit644@yahoo.com>
-
- * gu.po: Updated Gujarati Translation.
-
-2005-11-25 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu.
-
-2005-11-20 Ilkka Tuoela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2005-11-19 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2005-11-15 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Updated Norwegian bokmål translation.
- * no.po: Same.
-
-=== gnome-keyring 0.4.6 ===
-
-2005-11-14 Guilherme de S. Pastore <gpastore@gnome.org>
-
- * pt_BR.po: Updated Brazilian Portuguese translation.
-
-2005-11-06 Theppitak Karoonboonyanan <thep@linux.thai.net>
-
- * th.po: Updated Thai translation.
-
-2005-11-02 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Updated Czech translation.
-
-2005-10-31 Adam Weinberger <adamw@gnome.org>
-
- * en_CA.po: Updated Canadian English translation.
-
-2005-10-28 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2005-10-27 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated by Tino Meinen.
-
-2005-10-26 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated.
-
-2005-10-25 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation.
-
-2005-10-24 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician Translation.
-
-2005-10-24 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Alexander Shopov <ash@contact.bg>
-
-=== gnome-keyring 0.4.4 ===
-
-2005-08-23 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: Hungarian translation updated.
-
-2005-08-09 Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
-
- * zh_TW.po: Updated Traditional Chinese translation.
-
-2005-08-08 Danilo Šegan <danilo@gnome.org>
-
- * sr.po, sr@Latn.po: Updated by Igor Nestorović.
-
-2005-08-02 Kjartan Maraas <kmaraas@gnome.org>
-
- * ar.po: Make this build.
-
-2005-08-02 Fernando Herrera <fherrera@onirica.com>
-
- * ar.po: Fixed two more typos
-
-2005-08-01 Fernando Herrera <fernando.herrera@tecsidel.es>
-
- * ar.po: Fixed a typo
-
-2005-07-12 Tommi Vainikainen <thv@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
-2005-07-06 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Updated Bulgarian translation by
- Rostislav Raykov <zbrox@i-space.org>
-
-=== gnome-keyring 0.4.3 ===
-
-2005-06-27 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated by Ivar Smolin.
-
-2005-06-22 Abel Cheung <maddog@linuxhall.org>
-
- * zh_TW.po: Fix language team reference.
-
-2005-06-10 Ignacio Casal Quinteiro <nacho.resa@gmail.com>
-
- * gl.po: Updated Galician translation.
-
-2005-05-30 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation updated by Ivar Smolin.
-
-2005-04-25 Priit Laes <plaes@cvs.gnome.org>
-
- * et.po: Translation added by Ivar Smolin.
-
-2005-03-31 Steve Murphy <murf@e-tools.com>
-
- * rw.po: Added Kinyarwanda translation.
-
-2005-03-30 Wang Jian <lark@linux.net.cn>
-
- * zh_CN.po: Updated Simplified Chinese translation.
-
-2005-03-30 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2005-03-23 Adi Attar <aattar@cvs.gnome.org>
-
- * xh.po: Added Xhosa translation.
-
-2005-03-17 Adam Weinberger <adamw@gnome.org>
-
- * en_CA.po: Updated Canadian English translation.
-
-=== gnome-keyring 0.4.2 ===
-
-2005-03-05 Rajesh ranjan <rranjan@redhat.com>
-
- * hi.po: Updated Albanian translation by Rajesh Ranjan
-
-2005-01-31 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu.
-
-2005-01-29 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu.
-
-2005-01-14 Alexander Winston <alexander.winston@comcast.net>
-
- * en_CA.po: Updated Canadian English translation.
-
-2005-01-15 Pawan Chitrakar <pawan@nplinux.org>
-
- * ne.po: Added Nepali Translation
-
-=== gnome-keyring 0.4.1 ===
-
-2004-10-11 Roozbeh Pournader <roozbeh@farsiweb.info>
-
- * fa.po: Added Persian translation by Meelad Zakaria
- <meelad@bamdad.org>.
-
-2004-09-13 Arafat Medini <lumina@silverpen.de>
-
- * ar.po: Updated Arabic translation.
-
-=== gnome-keyring 0.4.0 ===
-
-2004-09-09 Mugurel Tudor <mugurelu@go.ro>
-
- * ro.po: Added Romanian translation
-
-2004-09-08 Adam Weinberger <adamw@gnome.org>
-
- * en_CA.po: Updated Canadian English translation.
-
-=== gnome-keyring 0.3.3 ===
-
-2004-08-28 Akagic Amila <bono@linux.org.ba>
-
- * bs.po: Added Bosnian translation.
-
-2004-08-26 Jayaradha <njaya@redhat.com>
-
- * ta.po: Updated Tamil translation.
-2004-08-25 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanih translation.
-
-2004-08-20 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu.
-
-2004-08-18 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by Elian Myftiu.
-
-2004-08-13 Kjartan Maraas <kmaraas@gnome.org>
-
- * nb.po: Added this here.
-
-=== gnome-keyring 0.3.1 ===
-2004-08-07 Runa Bhattacharjee <runab@redhat.com>
- * bn.po: Added Bengali(bn.po) Translation
-
-2004-06-28 Laurent Dhima <laurenti@alblinux.net>
-
- * sq.po: Translation updated by Elian Myftiu.
-
-2004-05-27 Mohammad DAMT <mdamt@bisnisweb.com>
-
- * id.po: Added Indonesian translation done by Ahmad Riza H Nst <rizahnst@eriagempita.co.id>
-
-2004-05-26 Alexander Shopov <ash@contact.bg>
-
- * bg.po: Added Bulgarian translation
- by Rostislav Raykov <zbrox@dir.bg>
-
-2004-05-21 Iñaki Larrañaga <dooteo@euskalgnu.org>
-
- * eu.po: Added Basque translation.
-
-2004-05-20 Andras Timar <timar@gnome.hu>
-
- * hu.po: Updated Hungarian translation.
-
-=== gnome-keyring 0.2.1 ===
-
-2004-04-10 Baris Cicek <baris@teamforce.name.tr>
-
- * tr.po: Fixed UTF8.
-
-2004-04-03 Samúel Jón Gunnarsson <sammi@techattack.nu>
-
- * is.po: Added Icelandic translation by
- Helgi Þormar Þorbjörnsson <helgi@trance.is>
-
-2004-03-24 Guntupalli Karunakar <karunakar@freedomink.org>
-
- * pa.po: Added Punjabi translation by
- Jaswinder Singh Phulewala <jaswinderlinux@netscape.net>.
-
-=== gnome-keyring 0.2.0 ===
-
-2004-03-21 Žygimantas Beručka <uid0@akl.lt>
-
- * lt.po: Updated Lithuanian translation.
-
-2004-03-21 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Updated Korean translation.
-
-2004-03-21 Abel Cheung <maddog@linux.org.hk>
-
- * ar.po, ko.po: Mark wrong entry as fuzzy (msgfmt check failed).
-
-2004-03-20 Gareth Owen <gowen72@yahoo.com>
-
- * en_GB.po: Added British translation
-
-2004-03-20 Abel Cheung <maddog@linux.org.hk>
-
- * zh_TW.po: New traditional Chinese translation from
- Woodman Tuen <woodman@culturecom.com.hk>.
-
-2004-03-19 Andras Timar <timar@gnome.hu>
-
- * hu.po: Added Hungarian translation.
-
-2004-03-17 Dafydd Harries <daf@muse.19inch.net>
-
- * cy.po: New Welsh translation by Bryn Salisbury, Chris M. Jackson,
- Rhys Jones and Dafydd Tomos.
-
-=== gnome-keyring 0.1.91 ===
-
-2004-03-13 Maxim Dziumanenko <mvd@mylinux.com.ua>
-
- * uk.po: Updated Ukrainian translation
-
-2004-03-11 Dmitry G. Mastrukov <dmitry@taurussoft.org>
-
- * ru.po: Added Russian translation
- from Russian team <gnome-cyr@gnome.org>.
-
-2004-03-10 Gustavo Maciel Dias Vieira <gdvieira@zaz.com.br>
-
- * pt_BR.po: Added Brazilian Portuguese translation done by
- Guilherme de S. Pastore <gpastore@colband.com.br>.
-
-2004-03-08 Alexander Winston <alexander.winston@comcast.net>
-
- * en_CA.po: Added Canadian English translation at "41 translated
- messages" status.
-
-=== gnome-keyring 0.1.90 ===
-
-2004-03-06 Mətin Əmirov <metin@karegen.com>
-
- * az.po: Translation updated.
-
-2004-02-27 Paisa Seeluangsawat <paisa@users.sf.net>
-
- * th.po: Added Thai translation.
-
-2004-02-25 Alessio Frusciante <algol@firenze.linux.it>
-
- * it.po: Added Italian translation by
- Francesco Marletta <francesco.marletta@tiscali.it>.
-
-2004-02-20 Laurent Dhiam <laurenti@alblinux.net>
-
- * sq.po: Updated Albanian translation by
- Elian Myftiu <elian@lycos.com>.
-
-2004-02-15 Mətin Əmirov <metin@karegen.com>
-
- * az.po: Translation updated.
-
-2004-02-11 Arafat Medini <lumina@silverpen.de>
-
- * ar.po: Added Arabic translation.
-
-2004-02-11 Pauli Virtanen <pauli.virtanen@hut.fi>
-
- * fi.po: Added Finnish translation from Tommi Vainikainen.
-
-=== gnome-keyring 0.1.4 ===
-
-2004-02-10 Funda Wang <fundawang@linux.net.cn>
-
- * zh_CN.po: Added Simplified Chinese translation.
-
-2004-02-06 Robert Sedak <robert.sedak@sk.htnet.hr>
-
- * hr.po: Updated Croatian translation.
-
-2004-02-04 Laurent Dhiam <laurenti@alblinux.net>
-
- * sq.po: Added Albanian translation by
- Elian Myftiu <elian@lycos.com>.
-
-2004-02-02 Hasbullah Bin Pit <sebol@my-penguin.org>
-
- * ms.po: Updated Malay translation.
-
-2004-01-31 Sanlig Badral <badral@openmn.org>
-
- * mn.po: Added Mongolian translation by Tamir.
-
-2004-01-31 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2004-01-31 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-2004-01-30 Ole Laursen <olau@hardworking.dk>
-
- * da.po: Updated Danish translation.
-
-2004-01-30 Metin Amiroff <metin@karegen.com>
-
- * az.po: Translation added by Mətin Əmirov.
-
-=== gnome-keyring 0.1.3 ===
-
-2004-01-28 Christophe Merlet <redfox@redfoxcenter.org>
-
- * fr.po: Updated French translation.
-
-2004-01-28 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Fixed Czech translation.
-
-2004-01-28 Artur Flinta <aflinta@cvs.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2004-01-27 Kostas Papadimas <pkst@gnome.org>
-
- * el.po: Updated Greek translation.
-
-2004-01-25 Jordi Mallach <jordi@sindominio.net>
-
- * ca.po: Added Catalan translation.
-
-2004-01-25 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Updated Slovak translation.
-
-2004-01-22 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Updated and revised Portuguese translation.
-
-2004-01-19 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation updated by Daniel van Eeden.
-
-2004-01-14 Christian Rose <menthos@menthos.com>
-
- * sv.po: Updated Swedish translation.
-
-2004-01-15 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: Added Korean translation.
-
-2004-01-14 Christian Neumair <chris@gnome-de.org>
-
- * de.po: Added German translation.
-
-2004-01-14 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Updated Spanish translation.
-
-2004-01-14 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Updated Czech translation.
-
-2004-01-14 Danilo Šegan <dsegan@gmx.net>
-
- * sr.po, sr@Latn.po: Updated Serbian translation.
-
-2004-01-13 Kjartan Maraas <kmaraas@gnome.org>
-
- * no.po: Updated Norwegian translation.
-
-2004-01-12 Žygimantas Beručka <uid0@tuxfamily.org>
-
- * lt.po: Added Lithuanian translation by Tomas Kuliavas.
-
-=== gnome-keyring 0.1.1 ===
-
-2004-01-11 Christophe Merlet <redfox@redfoxcenter.org>
-
- * fr.po: Added French translation from
- Sebastien Bacher <seb128@debian.org>.
-
-2004-01-07 Marcel Telka <marcel@telka.sk>
-
- * sk.po: Added Slovak translation.
-
-2004-01-06 Kostas Papadimas <pkst@gnome.org>
-
- * el.po: Added Greek translation.
-
-2004-01-05 Vincent van Adrighem <adrighem@gnome.org>
-
- * nl.po: Translation added by Daniel van Eeden.
-
-2004-01-05 Artur Flinta <aflinta@cvs.gnome.org>
-
- * pl.po: Updated Polish translation by GNOME PL Team.
-
-2003-12-29 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * ja.po: Updated Japanese translation.
-
-=== gnome-keyring 0.1.1 ===
-
-2003-12-27 Hasbullah Bin Pit <sebol@ikhlas.com>
-
- * ms.po: Added Malay Translation.
-
-2003-12-24 Duarte Loreto <happyguy_pt@hotmail.com>
-
- * pt.po: Added Portuguese translation.
-
-2003-12-21 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: Added Spanish translation.
-
-2003-12-19 Danilo Šegan <dsegan@gmx.net>
-
- * sr.po, sr@Latn.po: Updated Serbian translation.
-
-2003-12-17 Miloslav Trmac <mitr@volny.cz>
-
- * cs.po: Added Czech translation.
-
-2003-12-17 Christian Rose <menthos@menthos.com>
-
- * sv.po: Added Swedish translation.
-
-2003-12-15 Takeshi AIHANA <aihana@gnome.gr.jp>
-
- * ja.po: Added Japanese translation.
-
-=== gnome-keyring 0.1 ===
-
-2003-11-29 Danilo Šegan <dsegan@gmx.net>
-
- * POTFILES.in: Added comment.
- * sr.po, sr@Latn.po: Added Serbian translation.
diff --git a/po/LINGUAS b/po/LINGUAS
deleted file mode 100644
index 799039e1..00000000
--- a/po/LINGUAS
+++ /dev/null
@@ -1,75 +0,0 @@
-# please keep this list sorted alphabetically
-#
-ar
-az
-be
-be@latin
-bg
-bn
-bn_IN
-bs
-ca
-cs
-cy
-da
-de
-dz
-el
-en_CA
-en_GB
-es
-et
-eu
-fa
-fi
-fr
-gl
-gu
-he
-hi
-hr
-hu
-id
-it
-is
-ja
-ka
-ko
-lt
-lv
-mg
-mk
-ml
-mn
-mr
-ms
-nb
-ne
-nl
-nn
-oc
-or
-pa
-pl
-pt
-pt_BR
-ro
-ru
-rw
-si
-sk
-sl
-sq
-sr
-sr@Latn
-sv
-ta
-te
-th
-tr
-uk
-vi
-xh
-zh_CN
-zh_HK
-zh_TW
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644
index d8f14817..00000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# List of source files containing translatable strings.
-# Please keep this file sorted alphabetically.
-common/gkr-location.c
-daemon/gkr-daemon-ops.c
-data/gnome-keyring.schemas.in
-library/gnome-keyring-utils.c
-keyrings/gkr-keyring-login.c
-pk/gkr-pk-object-storage.c
-pkix/gkr-pkix-parser.c
-pkix/gkr-pkix-serialize.c
-ui/gkr-ask-tool.c
diff --git a/po/ar.po b/po/ar.po
deleted file mode 100644
index 5896bbb1..00000000
--- a/po/ar.po
+++ /dev/null
@@ -1,635 +0,0 @@
-# translation of gnome-keyring.HEAD.ar.po to Arabic
-# Arabic translation of gnome-keyring.
-# Copyright (C) 2004 THE gnome-keyring'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome-keyring package.
-#
-#
-# Arafat Medini <lumina@silverpen.de>, 2004.
-# Djihed Afifi <djihed@gmail.com>, 2006.
-# Khaled Hosny <khaledhosny@eglug.org>, 2006.
-# Anas Husseini <linux.anas@gmail.org>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.ar\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-08 18:57+0000\n"
-"PO-Revision-Date: 2008-03-08 18:28-0000\n"
-"Last-Translator: Djihed Afifi <djihed@gmail.com>\n"
-"Language-Team: Arabic <support@arabeyes.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==2 ? 1 : n>=3 && "
-"n<=10 ? 2 : 3\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "قرص قابل للإزالة: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "قرص قابل للإزالة"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "الموطن"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "الملف أو القرص الذي يحوي الملف غير موجود."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"يريد التطبيق '%s' (%s) الوصول إلى كلمة السر لـ '<object prop='name'/>' في "
-"حلقة المفاتيح الافتراضية."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"يريد التطبيق '%s' (%s) الوصول إلى كلمة السر لـ '<object prop='name'/>' في %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"يريد التطبيق '%s' الوصول إلى كلمة السر لـ '<object prop='name'/>' في حلقة "
-"المفاتيح الإفتراضية."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"يريد التطبيق (%s) الوصول إلى كلمة السر لـ '<object prop='name'/>' في %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"يريد تطبيق مجهول الوصول إلى كلمة السر لـ '<object prop='name'/>' في حلقة "
-"المفاتيح الإفتراضية."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"يريد تطبيق مجهول الوصول إلى كلمة السر لـ '<object prop='name'/>' في %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "اسمح بالوصول"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "هل تريد السماح للتطبيق بالوصول لحلقة المفاتيح؟"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "افتح كلمة السر لحلقة المفاتيح %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"يريد التطبيق '%s' (%s) الوصول إلى حلقة المفاتيح الإفتراضية لكن الحلقة مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"يريد التطبيق '%s' (%s) الوصول إلى حلقة المفاتيح الإفتراضية '%s' لكن الحلقة "
-"مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح الإفتراضية لكن الحلقة مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح '%s' لكن الحلقة مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى حلقة المفاتيح الإفتراضية لكن الحلقة مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى حلقة المفاتيح '%s' لكن الحلقة مقفلة"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "أدخل كلمة السر لفك قفل حلقة المفاتيح الإفتراضية"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "أدخل كلمة سر حلقة المفاتيح '%s' لفك قفلها"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "فك قفل حلقة المفاتيح"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "افتح تلقائياً حلقة المفاتيح هذه عندما أسجل دخولي."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' (%s) إنشاء حلقة مفاتيح جديدة باسم '%s'.يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' (%s) إنشاء حلقة مفاتيح إفتراضية جديدة. يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' إنشاء حلقة مفاتيح جديدة باسم '%s'.يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' إنشاء حلقة مفاتيح إفتراضية جديدة. يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"يريد تطبيق مجهول إنشاء حلقة مفاتيح جديدة باسم '%s'.يفترض أن تختار كلمة السر "
-"التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"يريد تطبيق مجهول إنشاء حلقة مفاتيح جديدة.يفترض أن تختار كلمة السر التي تريد "
-"استخدمها لهذا الغرض."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "كلمة سر حلقة المفاتيح الجديدة"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "إختر كلمة سر لحلقة المفاتيح الجديدة"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' (%s) تغيير كلمة السر لحلقة المفاتيح '%s'. يفترض أن تختار "
-"كلمة السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' (%s) إنشاء حلقة مفاتيح إفتراضية جديدة . يفترض أن تختار "
-"كلمة السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' تغيير كلمة السر لحلقة مفاتيح '%s'. يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"يريد التطبيق '%s' إنشاء حلقة مفاتيح إفتراضية جديدة. يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"يريد تطبيق مجهول تغيير كلمة السر لحلقة مفاتيح '%s'. يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"يريد تطبيق مجهول تغيير كلمة مرور حلقة المفتاح الإفتراضية.يفترض أن تختار كلمة "
-"السر التي تريد استخدمها لهذا الغرض."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "إختر كلمة سر جديدة لحلقة المفاتيح '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "إختر كلمة سر جديدة للحلقة الإفتراضية"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "غيّر كلمة سر حلقة المفاتيح"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"يريد التطبيق '%s' (%s) حفظ كلمة سر، لكنه لا يوجد حلقة مفاتيح إفتراضية لهذه "
-"العملية. لإنشاء حلقة يجب أن تختار كلمة سر تريد استخدامه معه."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"يريد التطبيق '%s' حفظ كلمة سر، لكنه لا يوجد حلقة مفاتيح إفتراضية لهذه "
-"العملية. لإنشاء حلقة يجب أن تختار كلمة سر تريد استخدامه معه."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"يريد تطبيق مجهول حفظ كلمة سر، لكنه لا يوجد حلقة مفاتيح إفتراضية لهذه "
-"العملية. لإنشاء حلقة يجب أن تختار كلمة سر تريد استخدامه معه."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "أنشئ حلقة مفاتيح إفتراضية"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "اختر كلمة سر للحلقة الإفتراضية"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "سيفعّل هذا الخيار مكون PKCS#11 لـ gnome-keyring. "
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "سيفعّل هذا الخيار مكون SSH لـ gnome-keyring. "
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "اذا كان عميل PKCS#11 لـ gnome-keyring مفعّلا."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "اذا كان عميل SSH لـ gnome-keyring مفعّلا."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "الوصول مرفوض"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "تطبيق gnome-keyring-daemon لا يعمل في الوقت الحالي."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "خطأ أثناء التواصل مع gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "هناك حلقة مفاتيح أخرى تحمل هذا الاسم"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "خطأ برمجي: التطبيق أرسل بيانات غير صالحة."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "لا نتائج مطابقة"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "لا حلقة مفاتيح بهذا الاسم"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "حلقة المفاتيح مفتوحة مسبقاً."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "فك قفل حلقة مفتاح تسجيل الدخول"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "ادخل كلمة السر لفك قفل حلقة المفاتيح"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"لم يتم انشاء حلقة مفاتيح تسجيل الدخول آليا عند تسجيل الدخول لهذا الحاسوب."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "أنشئ حلقة مفتاح تسجيل الدخول"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "ادخل كلمة سرّ ولوجك"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"لم يتم انشاء حلقة مفاتيح تسجيل الدخول آليا عند تسجيل الدخول لهذا الحاسوب. "
-"سيتم انشاؤها الآن."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "فكّ القفل مفتاح خاصّ"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "فكّ القفل شهادة"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "فك قفل المفتاح العام"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "فك القفل"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "أدخل كلمة سر لفكّ القفل المفتاح الخاص"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "أدخل كلمة سر لفكّ القفل الشهادة"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "أدخل كلمة سر لفكّ قفل المفتاح العام"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "أدخل كلمة سر لفكّ القفل"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "افتح هذا المفتاح الخاص تلقائياً عندما أسجل دخولي."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "افتح هذه الشهادة تلقائياً عندما أسجل دخولي."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "افتح هذه تلقائياً عندما أسجل دخولي."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "افتح هذه تلقائياً عندما أسجل دخولي."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى حلقة المفاتيح الخاصة '%s' لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى الشهادة '%s' لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى حلقة المفاتيح العامة '%s' لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "يريد تطبيق مجهول الوصول إلى '%s' ، لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح لكنها الحلقة مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "يريد التطبيق '%s' الوصول إلى حلقة المفاتيح لكنها مقفلة"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "افتح كلمة السّر لـ %s"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "ملف غير مدعوم أو غير معروف."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "لم تمكن قراءة الملف غير الصحيح."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "احفظ كلمات السر من دون تشفير؟"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "باختيار كلمة سر فارغة لا تكون كلمات السر المخبأة مشفّرة."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "استعمل التخزين غير الآمن"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "المو_قع:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "كلمة السّر ال_قديمة:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_كلمة السّر:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_أيّد كلمة السّر:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "قوة كلمة السر الجديدة"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "كلمتا السّر لا تتطابقان."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "كلمة السّر لا يمكن أن تكون فارغة"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "ا_رفض"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "اسمح مرة _واحدة"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "ا_سمح دائماً"
-
-#~ msgid "Unlock %s"
-#~ msgstr "فك قفل %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "أدخل كلمة سر لـ '%s' لفك القفل"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "كلمة السر القديمة لا يمكن أن تكون فارغة."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">مقياس قوة كلمة السر:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "يريد التطبيق '%s' (%s) الوصول إلى حلقة مفاتيح مجهولة لكن الحلقة مقفلة"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr "يريد التطبيق '%s' الوصول إلى حلقة مفاتيح مجهولة لكن الحلقة مقفلة"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "يريد تطبيق مجهول الوصول إلى حلقة مفاتيح مجهولة لكن الحلقة مقفلة"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "يريد التطبيق '%s' (%s) الوصول إلى كلمة السر لـ '%s'في حلقة مفاتيح مجهولة."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "يريدالتطبيق '%s' الوصول إلى كلمة السر لـ '%s' في حلقة مفاتيح مجهولة."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "يريد تطبيق مجهول الوصول إلى كلمة السر لـ '%s'في حلقة مفاتيح مجهولة."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "يجب أن تأكد نوع الطلب الذي تريد تشغيله\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "نوع الطلب مجهول\n"
diff --git a/po/az.po b/po/az.po
deleted file mode 100644
index 35721daf..00000000
--- a/po/az.po
+++ /dev/null
@@ -1,395 +0,0 @@
-# translation of gnome-keyring.HEAD.az.po to Azerbaijani Turkish
-# This file is distributed under the same license as the gnome-keyring package.
-# Copyright (C) 2004 Mətin Əmirov.
-# Mətin Əmirov <metin@karegen.com>, 2003, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.az\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-02-13 13:19+0200\n"
-"Last-Translator: Mətin Əmirov <metin@karegen.com>\n"
-"Language-Team: Azerbaijani Turkish <translation-team-az@lists.sourceforge."
-"net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) proqramı ön qurğulu şifrə kisəsinə yetişmək istəyir, amma o "
-"bağlıdır"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' (%s) proqramı '%s' şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) proqramı namə'lum şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"'%s' proqramı ön qurğulu şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "'%s' proqramı '%s' şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"'%s' proqramı namə'lum şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Namə'lum proqram ön qurğulu şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Namə'lum proqram '%s' şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Namə'lum proqram namə'lum şifrə kisəsinə yetişmək istəyir, amma o bağlıdır"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Ön qurğulu şifrə kisəsini açmaq üçün şifrəni bildirin"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Qıfılı açmaq üçün '%s' şifrə kisəsi şifrəsini bildirin"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Şifrə Kisəsinin Qıfılını Aç"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Rədd Et"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) proqramı '%s' adında yeni bir şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' proqramı '%s' adında yeni bir şifrə kisəsi yaratmaq istəyir. Onun üçün "
-"işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun üçün "
-"işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Namə'lum proqram '%s' adında yeni bir şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Namə'lum proqram yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Yeni Şifrə Kisəsi Şifrəsi"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Yeni şifrə kisəsi üçün şifrəni seçin"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun üçün "
-"işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' proqramı yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun üçün "
-"işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Namə'lum proqram yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Namə'lum proqram yeni bir ön qurğulu şifrə kisəsi yaratmaq istəyir. Onun "
-"üçün işlətmək istədiyiniz şifrəni seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Yeni şifrə kisəsi üçün şifrəni seçin"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Ön qurğulu şifrə kisəsi üçün şifrə seç"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Yeni Şifrə Kisəsi Şifrəsi"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) proqramı şifrə qeyd etmək istəyir, amma ön qurğulu şifrə kisəsi "
-"mövcud deyil. Birini yaratmaq üçün, onun üçün işlətmək istədiyiniz şifrəni "
-"seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' proqramı şifrə qeyd etmək istəyir, amma ön qurğulu şifrə kisəsi mövcud "
-"deyil. Birini yaratmaq üçün, onun üçün işlətmək istədiyiniz şifrəni "
-"seçməlisiniz."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Namə'lum proqram şifrə qeyd etmək istəyir, amma ön qurğulu şifrə kisəsi "
-"mövcud deyil. Birini yaratmaq üçün, onun üçün işlətmək istədiyiniz şifrəni "
-"seçməlisiniz."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Ön Qurğulu Şifrə Kisəsi Yarat"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Ön qurğulu şifrə kisəsi üçün şifrə seç"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Proqrama şifrə kisəsinə yetişmə səlahiyyəti verilsin?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "'%s' (%s) proqramı '%s' şifrəsinə %s içindən yetişmək istəyir."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"'%s' (%s) proqramı '%s' şifrəsinə ön qurğulu şifrə kisəsi içindən yetişmək "
-"istəyir."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"'%s' (%s) proqramı '%s' şifrəsinə namə'lum şifrə kisəsi içindən yetişmək "
-"istəyir."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "'%s' proqramı '%s' şifrəsinə %s içindən yetişmək istəyir."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"'%s' proqramı '%s' şifrəsinə ön qurğulu şifrə kisəsi içindən yetişmək "
-"istəyir."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"'%s' proqramı '%s' şifrəsinə namə'lum şifrə kisəsi içindən yetişmək istəyir."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Namə'lum proqram '%s' şifrəsinə %s içindən yetişmək istəyir."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Namə'lum proqram '%s' şifrəsinə ön qurğulu şifrə kisəsi içindən yetişmək "
-"istəyir."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Namə'lum proqram '%s' şifrəsinə namə'lum şifrə kisəsi içindən yetişmək "
-"istəyir."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Yetişmə icazəsi"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "_Bir Dəfəyə Məxsus İcazə Ver"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Həmişə İcazə Ver"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "İcra ediləcək istəyin növünü bildirməlisiniz\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Namə'lum istək növü\n"
diff --git a/po/be.po b/po/be.po
deleted file mode 100644
index 463bd29b..00000000
--- a/po/be.po
+++ /dev/null
@@ -1,296 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-03 13:54+0200\n"
-"PO-Revision-Date: 2007-02-03 13:54+0300\n"
-"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
-"Language-Team: Belarusian <i18n@mova.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Belarusian\n"
-"X-Poedit-Country: BELARUS\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "_Стары пароль:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Пароль:"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "_Пацьверджаньне новага пароля:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">Моцнасьць пароля:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "Стары пароль не можа быць пустым."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Пароль не можа быць пустым."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Паролі розьняцца."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid "The application '%s' (%s) wants access to the default keyring, but it is locked"
-msgstr "Праграма '%s' (%s) пытаецца дазволу на выкарыстаньне прадвызначанага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Праграма '%s' (%s) пытаецца дазволу на выкарыстаньне зьвязка ключоў '%s', але ён заблякаваны"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid "The application '%s' (%s) wants access to an unknown keyring, but it is locked"
-msgstr "Праграма '%s' (%s) пытаецца дазволу на выкарыстаньне невядомага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:422
-#: ../gnome-keyring-ask.c:436
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Праграма '%s' пытаецца дазволу на выкарыстаньне прадвызначанага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:426
-#: ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Праграма '%s' пытаецца дазволу на выкарыстаньне зьвязка ключоў '%s', але ён заблякаваны"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430
-#: ../gnome-keyring-ask.c:446
-#, c-format
-msgid "The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "Праграма '%s' пытаецца дазволу на выкарыстаньне невядомага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:452
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "Невядомая праграма пытаецца дазволу на выкарыстаньне прадвызначанага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Невядомая праграма пытаецца дазволу на выкарыстаньне зьвязка ключоў '%s', але ён заблякаваны"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid "An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "Невядомая праграма пытаецца дазволу на выкарыстаньне невядомага зьвязка ключоў, але ён заблякаваны"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Увядзіце пароль для разблякаваньня прадвызначанага зьвязка ключоў"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Увядзіце пароль для разблякаваньня зьвязка ключоў '%s'"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Разблякаваць зьвязак ключоў"
-
-#: ../gnome-keyring-ask.c:479
-#: ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655
-#: ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Адмовіць"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid "The application '%s' (%s) wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' (%s) хоча стварыць новы зьвязак ключоў, названы '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid "The application '%s' (%s) wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' (%s) хоча стварыць новы прадвызначаны зьвязак ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:527
-#: ../gnome-keyring-ask.c:537
-#, c-format
-msgid "The application '%s' wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' хоча стварыць новы зьвязак ключоў, названы '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:531
-#: ../gnome-keyring-ask.c:541
-#, c-format
-msgid "The application '%s' wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' хоча стварыць новы прадвызначаны зьвязак ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid "An unknown application wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Невядомая праграма хоча стварыць новы зьвязак ключоў, названы '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:551
-msgid "An unknown application wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Невядомая праграма хоча стварыць новы прадвызначаны зьвязак ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Новы пароль для зьвязка ключоў"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Вызначце пароль для новага зьвязка ключоў"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' (%s) хоча зьмяніць пароль для зьвязка ключоў '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' (%s) хоча зьмяніць пароль для прадвызначанага зьвязка ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:612
-#: ../gnome-keyring-ask.c:622
-#, c-format
-msgid "The application '%s' wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' хоча зьмяніць пароль для зьвязка ключоў '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:616
-#: ../gnome-keyring-ask.c:626
-#, c-format
-msgid "The application '%s' wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Праграма '%s' хоча зьмяніць пароль для прадвызначанага зьвязка ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid "An unknown application wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Невядомая праграма хоча зьмяніць пароль для зьвязка ключоў '%s'. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:636
-msgid "An unknown application wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Невядомая праграма хоча зьмяніць пароль для прадвызначанага зьвязка ключоў. Вы павінны вызначыць пароль для гэтага зьвязка."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Вызначце новы пароль для зьвязка ключоў '%s'. "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "Вызначце новы пароль для прадвызначанага зьвязка ключоў. "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Зьмяніць пароль для зьвязка ключоў"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid "The application '%s' (%s) wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Праграма '%s' (%s) хоча захаваць пароль, але няма прадвызначанага зьвязка ключоў. Каб яго стварыць, Вы павінны вызначыць для яго пароль."
-
-#: ../gnome-keyring-ask.c:693
-#: ../gnome-keyring-ask.c:697
-#, c-format
-msgid "The application '%s' wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Праграма '%s' хоча захаваць пароль, але няма прадвызначанага зьвязка ключоў. Каб яго стварыць, Вы павінны вызначыць для яго пароль."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid "An unknown application wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Невядомая праграма хоча захаваць пароль, але няма прадвызначанага зьвязка ключоў. Каб яго стварыць, Вы павінны вызначыць для яго пароль."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Стварыць прадвызначаны зьвязак ключоў"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Вызначце пароль для прадвызначанага зьвязка ключоў"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Дазволіць праграме доступ да зьвязка ключоў?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Праграма '%s' (%s) хоча атрымаць пароль для '%s' з %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in the default keyring."
-msgstr "Праграма '%s' (%s) хоча атрымаць пароль для '%s' з прадвызначанага зьвязка ключоў."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in an unknown keyring."
-msgstr "Праграма '%s' (%s) хоча атрымаць пароль для '%s' зь невядомага зьвязка ключоў."
-
-#: ../gnome-keyring-ask.c:761
-#: ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Праграма '%s' хоча атрымаць пароль для '%s' з %s."
-
-#: ../gnome-keyring-ask.c:764
-#: ../gnome-keyring-ask.c:775
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in the default keyring."
-msgstr "Праграма '%s' хоча атрымаць пароль для '%s' з прадвызначанага зьвязка ключоў."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767
-#: ../gnome-keyring-ask.c:778
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in an unknown keyring."
-msgstr "Праграма '%s' хоча атрымаць пароль для '%s' зь невядомага зьвязка ключоў."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Невядомая праграма хоча атрымаць пароль для '%s' з %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in the default keyring."
-msgstr "Невядомая праграма хоча атрымаць пароль для '%s' з прадвызначанага зьвязка ключоў."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in an unknown keyring."
-msgstr "Невядомая праграма хоча атрымаць пароль для '%s' зь невядомага зьвязка ключоў."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Дазволіць"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Дазволіць _аднойчы"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Заўсёды дазваляць"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Вы павінны вызначыць тып запыту\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Невядомы тып запыту\n"
-
diff --git a/po/be@latin.po b/po/be@latin.po
deleted file mode 100644
index fe87df1f..00000000
--- a/po/be@latin.po
+++ /dev/null
@@ -1,602 +0,0 @@
-# Biełaruski pierakład gnome-keyring
-# Copyright (C) 2007 FSF
-# This file is distributed under the same license as the gnome-keyring package.
-# Ihar Hrachyshka <iharh@gnome.org>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-17 00:11+0200\n"
-"PO-Revision-Date: 2008-02-17 00:15+0200\n"
-"Last-Translator: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>\n"
-"Language-Team: Belarusian Latin <i18n@mova.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Pieranosny dysk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Pieranosny dysk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Dadomu"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Dysk ci pryłada, dzie źmieščany hety fajł, nia ŭklučanaja"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Aplikacyja '%s' (%s) choča atrymać parol dla '<object prop='name'/>' sa "
-"zmoŭčanaha klučnika."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Aplikacyja '%s' (%s) choča atrymać parol dla '<object prop='name'/>' z "
-"klučnika %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Aplikacyja '%s' choča atrymać parol dla '<object prop='name'/>' sa "
-"zmoŭčanaha klučnika."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Aplikacyja '%s' choča atrymać parol dla '<object prop='name'/>' z klučnika %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Nieviadomaja aplikacyja choča atrymać parol dla '<object prop='name'/>' sa "
-"zmoŭčanaha klučnika."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Nieviadomaja aplikacyja choča atrymać parol dla '<object prop='name'/>' z "
-"klučnika %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Dazvol dostup"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Dazvolić dostup aplikacyi da klučnika?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Parol, kab adčynić klučnika %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikacyja '%s' (%s) choča dastupicca da zmoŭčanaha klučnika, ale jon "
-"zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikacyja '%s' (%s) choča dastupicca da klučnika '%s', ale jon zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikacyja '%s' choča dastupicca da zmoŭčanaha klučnika, ale jon zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplikacyja '%s' choča dastupicca da klučnika '%s', ale jon zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nieviadomaja aplikacyja choča dastupicca da zmoŭčanaha klučnika, ale jon "
-"zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Nieviadomaja aplikacyja choča dastupicca da klučnika '%s', ale jon "
-"zablakavany"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Uviadzi parol zmoŭčanaha klučnika, kab razblakavać"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Uviadzi parol klučnika '%s', kab razblakavać"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Razblakuj klučnika"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Aŭtamatyčna razblakuj hetaha klučnika pry ŭvachodzie."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' (%s) choča stvaryć novaha klučnika z nazvaj '%s'. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' (%s) choča stvaryć novaha zmoŭčanaha klučnika. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' choča stvaryć novaha klučnika z nazvaj '%s'. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' choča stvaryć novaha zmoŭčanaha klučnika. Ty musiš uvieści "
-"parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nieviadomaja aplikacyja choča stvaryć novaha klučnika z nazvaj '%s'. Ty "
-"musiš uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nieviadomaja aplikacyja choča stvaryć novaha zmoŭčanaha klučnika. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Parol dla novaha klučnika"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Abiary parol dla novaha klučnika"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' (%s) choča źmianić parol dla klučnika '%s'. Ty musiš uvieści "
-"parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' (%s) choča źmianić parol dla zmoŭčanaha klučnika. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' choča źmianić parol dla klučnika '%s'. Ty musiš uvieści "
-"parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacyja '%s' choča źmianić parol dla zmoŭčanaha klučnika. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nieviadomaja aplikacyja choča źmianić parol dla klučnika '%s'. Ty musiš "
-"uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nieviadomaja aplikacyja choča źmianić parol dla zmoŭčanaha klučnika. Ty "
-"musiš uvieści parol dla hetaha klučnika."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Abiary novy parol dla klučnika '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Abiary novy parol dla zmoŭčanaha klučnika. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Źmiani parol dla klučnika"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacyja '%s' (%s) choča zachavać parol, ale zmoŭčanaha klučnika niama. "
-"Kab stvaryć jaho, treba ŭvieści parol dla jaho."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacyja '%s' choča zachavać parol, ale zmoŭčanaha klučnika niama. Kab "
-"stvaryć jaho, treba ŭvieści parol dla jaho."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nieviadomaja aplikacyja choča zachavać parol, ale zmoŭčanaha klučnika niama. "
-"Kab stvaryć jaho, treba ŭvieści parol dla jaho."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Stvary zmoŭčanaha klučnika"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Abiary parol dla zmoŭčanaha klučnika"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Hetaja opcyja ŭklučaje kampanent PKCS#11 dla demana gnome-keyring. Opcyja "
-"ŭździejničaje tolki pry ŭruchamleńni demana gnome-keyring-daemon, h.zn. kali "
-"karystalnik uvachodzić u systemu. Hetaja nałada moža być źmieniena z "
-"dapamohaj peŭnych arhumentaŭ zahadnaha radka, pieradadzienych demanu."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Hetaja opcyja ŭklučaje agenta SSH dla demana gnome-keyring. Opcyja "
-"ŭździejničaje tolki pry ŭruchamleńni demana gnome-keyring-daemon, h.zn. kali "
-"karystalnik uvachodzić u systemu. Hetaja nałada moža być źmieniena z "
-"dapamohaj peŭnych arhumentaŭ zahadnaha radka, pieradadzienych demanu."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Ci ŭklučać kampanent PKCS#11 dla klučnika."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Ci ŭklučać agenta SSH dla klučnika."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Dostup zabaronieny"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Aplikacyja gnome-keyring-daemon nia dziejničaje."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Pamyłka suviazi z gnome-keyring-daemonam"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Klučnik z takoj nazvaj užo isnuje"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Pamyłka ŭ prahramie: aplikacyja dasłała niapravilnyja źviestki."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Niama adpaviednych vynikaŭ"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Klučnik z takoj nazvaj nie isnuje."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Klučnik užo razblakavany."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Razblakuj uvachodnaha klučnika"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Uviadzi ŭvachodny parol, kab adblakavać klučnika"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "Tvoj uvachodny klučnik nia byŭ aŭtamatyčna adčynieny, kali ty ŭvajšoŭ."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Stvary ŭvachodnaha klučnika"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Uviadzi svoj parol dziela ŭvachodu"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Tvoj uvachodny klučnik nia byŭ aŭtamatyčna stvorany, kali ty ŭvajšoŭ. Zaraz "
-"jon budzie stvorany."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Adblakuj pryvatny kluč"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Adblakuj sertyfikat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Adblakuj publičny kluč"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Razblakuj"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Uviadzi parol, kab adblakavać pryvatny kluč"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Uviadzi parol, kab adblakavać sertyfikat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Uviadzi parol, kab adblakavać publičny kluč"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Uviadzi parol, kab adblakavać"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Aŭtamatyčna razblakuj hety pryvatny kluč pry ŭvachodzie."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Aŭtamatyčna razblakuj hety sertyfikat pry ŭvachodzie."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Aŭtamatyčna razblakuj hety publičny kluč pry ŭvachodzie."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Aŭtamatyčna adblakuj heta pry ŭvachodzie."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Aplikacyja choča dastupicca da pryvatnaha kluča \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Aplikacyja choča dastupicca da sertyfikatu \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Aplikacyja choča dastupicca da publičnaha kluča \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Aplikacyja choča dastupicca da \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systema choča zimpartavać pryvatny kluč \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systema choča zimpartavać sertyfikat \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Systema choča zimpartavać publičny kluč \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systema choča zimpartavać \"%s\", ale jon zablakavany"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Adblakuj parol dla \"%s\""
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Nieviadomy ci niaŭzhodnieny fajł."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Niemahčyma razabrać niapravilny ci paškodžany fajł."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Zachoŭvać paroli niezašyfravanymi?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Kali ty abiareš pusty parol, tady ŭsie zachoŭvanyja klučnikam paroli nia "
-"buduć šyfravacca. Ich zmoža pračytać lubaja asoba, jakaja maje dostup da "
-"tvaich fajłaŭ."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Užyj niebiaśpiečnaje schovišča"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Pałažeńnie:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Stary parol:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Parol:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Paćvierdź parol:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Ličylnik mocy novaha parolu"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Paroli adroźnivajucca."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Parol nia moža być pustym"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Admaŭlaj"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Dazvol _raz"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Zaŭsiody dazvalaj"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Razblakuj %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Uviadzi parol dla %s, kab adblakavać"
-
-#~ msgid "key"
-#~ msgstr "kluč"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Stary parol nia moža być pustym."
diff --git a/po/bg.po b/po/bg.po
deleted file mode 100644
index bca006b8..00000000
--- a/po/bg.po
+++ /dev/null
@@ -1,595 +0,0 @@
-# Bulgarian translation of gnome-keyring po-file.
-# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Rostislav "zbrox" Raykov <zbrox@i-space.org>, 2004, 2005, 2006.
-# Alexander Shopov <ash@contact.bg>, 2007.
-# Yavor Doganov <yavor@gnu.org>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-04-15 22:42+0300\n"
-"PO-Revision-Date: 2008-04-15 18:15+0300\n"
-"Last-Translator: Yavor Doganov <yavor@gnu.org>\n"
-"Language-Team: Bulgarian <dict@fsa-bg.org>\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"
-
-#: ../common/gkr-location.c:317
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Преносим диск: %s"
-
-#: ../common/gkr-location.c:319
-msgid "Removable Disk"
-msgstr "Преносим диск"
-
-#: ../common/gkr-location.c:532 ../common/gkr-location.c:544
-msgid "Home"
-msgstr "Домашна папка"
-
-#: ../common/gkr-location.c:1072 ../common/gkr-location.c:1095
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Устройството, където се намира този файл, не е достъпно"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Програмата „%s“ (%s) иска достъп до паролата за „<object prop='name'/>“ в "
-"стандартния ключодържател."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Програмата „%s“ (%s) иска достъп до паролата за „<object prop='name'/>“ в %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Програмата „%s“ иска достъп до паролата за „<object prop='name'/>“ в "
-"стандартния ключодържател."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Програмата „%s“ иска достъп до паролата за „<object prop='name'/>“ в %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Непозната програма иска достъп до паролата за „<object prop='name'/>“ в "
-"стандартния ключодържател."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Непозната програма иска достъп до паролата за „<object prop='name'/>“ в %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Позволяване на достъп"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Да се позволи ли достъп на програмата до ключодържателя?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Парола за ключодържателя „%s“"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Програмата „%s“ (%s) иска достъп до стандартния ключодържател, но той е "
-"заключен"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Програмата „%s“ (%s) иска достъп до ключодържателя „%s“, но той е заключен"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Програмата „%s“ иска достъп до стандартния ключодържател, но той е заключен"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Програмата „%s“ иска достъп до ключодържателя „%s“, но той е заключен"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Непозната програма иска достъп до стандартния ключодържател, но той е "
-"заключен"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Непозната програма иска достъп до ключодържателя „%s“, но той е заключен"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Въведете парола за стандартния ключодържател, за да го отключите"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Въведете парола за ключодържателя „%s“, за да го отключите"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Отключване на ключодържател"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Автоматично отключване на ключодържателя при влизане."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ (%s) иска да създаде нов ключодържател наречен „%s“. Трябва "
-"да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ (%s) иска да създаде нов стандартен ключодържател. Трябва да "
-"изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ иска да създаде нов ключодържател наречен „%s“. Трябва да "
-"изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ иска да създаде нов стандартен ключодържател. Трябва да "
-"изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Непозната програма иска да създаде нов ключодържател наречен „%s“. Трябва да "
-"изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Непозната програма иска да създаде нов стандартен ключодържател. Трябва да "
-"изберете парола за него."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Нова парола за ключодържател"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Изберете паролата за новия ключодържател"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ (%s) иска да промени паролата за ключодържателя „%s“. Трябва "
-"да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ (%s) иска да промени паролата за стандартния ключодържател. "
-"Трябва да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ иска да промени паролата за ключодържателя „%s“. Трябва да "
-"изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програмата „%s“ иска да промени паролата за стандартния ключодържател. "
-"Трябва да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Непозната програма иска да промени паролата за ключодържателя „%s“. Трябва "
-"да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Непозната програма иска да промени паролата за стандартния ключодържател. "
-"Трябва да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Изберете нова парола за ключодържателя „%s“. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Изберете нова парола за стандартния ключодържател. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Нова парола за ключодържателя"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програмата „%s“ (%s) иска да запази парола, но няма стандартен "
-"ключодържател. За да създадете такъв, трябва да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програмата „%s“ иска да запази парола, но няма стандартен ключодържател.За "
-"да създадете такъв, трябва да изберете парола за него."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Непозната програма иска да запази парола, но няма стандартен ключодържател. "
-"За да създадете такъв, трябва да изберете парола за него."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Създаване на стандартен ключодържател"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Изберете парола за стандартния ключодържател"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Тази опция задейства компонента PKCS#11 в демона gnome-keyring и има ефект "
-"само при стартирането на gnome-keyring-daemon (т.е. когато потребителят "
-"влиза в системата). Тази настройка може да се заобиколи чрез определени "
-"опции на командния ред, зададени на демона."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Тази опция задейства агента на SSH в демона gnome-keyring и има ефект само "
-"при стартирането на gnome-keyring-daemon (т.е. когато потребителят влиза в "
-"системата). Тази настройка може да се заобиколи чрез определени опции на "
-"командния ред, зададени на демона."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Дали да се задейства компонентът на gnome-keyring PKCS#11."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Дали да се задейства агентът на SSH в gnome-keyring."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Достъпът е отказан"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Програмата gnome-keyring-daemon не е пусната."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Грешка в комуникацията с gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Вече съществува ключодържател с това име"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Програмна грешка: приложението изпрати неправилни данни."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Няма съвпадения"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Не съществува ключодържател с това име."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Ключодържателят вече е отключен."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Отключване на ключодържателя за влизане в системата"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Въведете паролата за влизане, за да отключите ключодържателя"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Ключодържателят за влизане не беше отключен автоматично при влизането ви в "
-"системата."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Създаване на ключодържател за влизане в системата"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Въведете паролата за влизане"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Ключодържателят за влизане не беше създаден автоматично при влизането ви в "
-"системата. Ще бъде създаден сега."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Отключване на частен ключ"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Отключване на сертификат"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Отключване на публичен ключ"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Отключване"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Въведете парола за отключване на частния ключ"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Въведете парола за отключване на сертификата"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Въведете парола за отключване на публичния ключ"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Въведете парола за отключване"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Автоматично отключване на този частен ключ при влизане."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Автоматично отключване на този сертификат при влизане."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Автоматично отключване на този публичен ключ при влизане."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Автоматично отключване при влизане."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Програма иска достъп до частния ключ „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Програма иска достъп до сертификата „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Програма иска достъп до публичния ключ „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Програма иска достъп до „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Системата иска да внесе частния ключ „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Системата иска да внесе сертификата „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Системата иска да внесе публичния ключ „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Системата иска да внесе „%s“, но той е заключен"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Парола за отключване на „%s“"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Непознат или неподдържан файл."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Неуспех при анализирането на невалиден или повреден файл."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Запазване на паролите нешифрирани?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Като избирате празна парола, запазените ви пароли няма да бъдат надеждно "
-"шифрирани. Ще бъдат достъпни за всеки, който има достъп до вашите файлове."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Използване на несигурно хранилище"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Местоположение:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Стара парола:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Парола:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "По_твърждаване на паролата:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Надеждност на новата парола"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Паролите не съвпадат."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Паролата не може да бъде празна"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Отказ"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Позволяване _веднъж"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Позволяване винаги"
diff --git a/po/bn.po b/po/bn.po
deleted file mode 100644
index ad822341..00000000
--- a/po/bn.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# translation of gnome-keyring.HEAD.po to bangla
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-# Runa Bhattacharjee <runa@bengalinux.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.bn\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-25 19:41+0600\n"
-"PO-Revision-Date: 2006-08-25 19:40+0600\n"
-"Last-Translator: Khandakar Mujahidul Islam <suzan@bengalinux.org>\n"
-"Language-Team: Bangla <gnome-translation@bengalinux.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "পুরোনো পাসওয়ার্ড:(_ও)"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "পাসওয়ার্ড:(_প)"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "নতুন পাসওয়ার্ড নিশ্চিত করুন:(_ন)"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">পাসওয়ার্ডের দৃঢ়তার মাপকাঠি:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "পাসওয়ার্ড ফাঁকা রাখা যাবে না।"
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "পাসওয়ার্ড ফাঁকা রাখা যাবে না।"
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "পাসওয়ার্ডে গরমিল।"
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি '%s' কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি একটি অজানা কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে "
-"লক করা আছে"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি '%s' কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি একটি অজানা কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন %s কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি অজানা কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক "
-"করা আছে"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "ডিফল্ট কি-রিং আনলক করতে পাসওয়ার্ড লিখুন"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' কি-রিং আনলক করতে পাসওয়ার্ড লিখুন"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "কি-রিং আনলক করুন"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "প্রত্যাখ্যান করা হবে (_খ)"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি একটি ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি একটি নতুন ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি নতুন ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "নতুন কি-রিং পাসওয়ার্ড"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "নতুন কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন। "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "ডিফল্ট কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন। "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "নতুন কি-রিং পাসওয়ার্ড"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-"
-"রিং উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা "
-"আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-রিং "
-"উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-রিং "
-"উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "ডিফল্ট কি-রিং তৈরি করুন"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "ডিফল্ট কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "অ্যাপ্লিকেশনকে কি-রিং ব্যবহারের অনুমতি প্রদান করা হবে কি?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি '%s'-র পাসওয়ার্ড, যা %s-এ অবস্থিত, ব্যবহার করতে ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি ডিফল্ট কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার করতে "
-"ইচ্ছুক।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশনটি একটি অজানা কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার "
-"করতে ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "'%s' অ্যাপ্লিকেশনটি '%s'-র পাসওয়ার্ড, %s-এ অবস্থিত, ব্যবহার করতে ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি ডিফল্ট কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার করতে ইচ্ছুক।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"'%s' অ্যাপ্লিকেশনটি একটি অজানা কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার করতে "
-"ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "একটি অজানা অ্যাপ্লিকেশন '%s'-এর পাসওয়ার্ড, %s-এ অবস্থিত, ব্যবহার করতে ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার করতে "
-"ইচ্ছুক।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি অজানা কি-রিং'এ অবস্থিত '%s'-র পাসওয়ার্ডটি ব্যবহার "
-"করতে ইচ্ছুক।"
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "ব্যবহারের অনুমতি প্রদান করা হবে"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "একবার ব্যবহারের অনুমতি প্রদান করা হবে (_এ)"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "সর্বদা ব্যবহারের অনুমতি প্রদান করা হবে (_স)"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "নির্বাহনের উদ্দেশ্যে অনুরোধের প্রকৃতি উল্লেখ করা আবশ্যক\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "অজানা অনুরোধের ধরন\n"
diff --git a/po/bn_IN.po b/po/bn_IN.po
deleted file mode 100644
index 9f0b5c1e..00000000
--- a/po/bn_IN.po
+++ /dev/null
@@ -1,397 +0,0 @@
-# translation of gnome-keyring.po to Bengali INDIA
-# This file is distributed under the same license as the gnome-keyring package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Runa Bhattacharjee <runa@bengalinux.org>, 2004.
-# Runa Bhattacharjee <runabh@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: bn_IN\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-27 04:01+0100\n"
-"PO-Revision-Date: 2007-08-03 17:41+0530\n"
-"Last-Translator: Runa Bhattacharjee <runabh@gmail.com>\n"
-"Language-Team: Bengali INDIA\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"\n"
-
-#: ../common/gkr-location.c:288
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "অপসারণযোগ্য ডিস্ক: %s"
-
-#: ../common/gkr-location.c:290
-msgid "Removable Disk"
-msgstr "অপসারণযোগ্য ডিস্ক"
-
-#: ../common/gkr-location.c:431
-msgid "Home"
-msgstr "ব্যক্তিগত ফোল্ডার"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gnome-keyring-daemon-ops.c:188
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s কি-রিং আন-লক করতে ব্যবহৃত পাসওয়ার্ড"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:414
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন, ডিফল্ট কি-রিং'এ অবস্থিত '<object prop='name'/>'-র পাসওয়ার্ডটি ব্যবহার "
-"করতে ইচ্ছুক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:417
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন, %s-এ অবস্থিত '<object prop='name'/>'-র পাসওয়ার্ডটি ব্যবহার "
-"করতে ইচ্ছুক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:422
-#: ../daemon/gnome-keyring-daemon-ops.c:430
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন, ডিফল্ট কি-রিং'এ অবস্থিত '<object prop='name'/"
-">'-র পাসওয়ার্ডটি ব্যবহার করতে ইচ্ছুক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:425
-#: ../daemon/gnome-keyring-daemon-ops.c:433
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "'%s' অ্যাপ্লিকেশন %s-এ অবস্থিত '<object prop='name'/>'-র পাসওয়ার্ড ব্যবহার করতে ইচ্ছুক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:438
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং'এ অবস্থিত '<object prop='name'/"
-">'-র পাসওয়ার্ড ব্যবহার করতে ইচ্ছুক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:440
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন %s-এ অবস্থিত '<object prop='name'/"
-">'-র পাসওয়ার্ড ব্যবহার করতে ইচ্ছুক।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow access"
-msgstr "ব্যবহারের অনুমতি প্রদান করা হবে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow application access to keyring?"
-msgstr "অ্যাপ্লিকেশনকে কি-রিং ব্যবহারের অনুমতি প্রদান করা হবে কি?"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:544
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:548
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "'%s' (%s) অ্যাপ্লিকেশন '%s' কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:554
-#: ../daemon/gnome-keyring-daemon-ops.c:564
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "'%s' অ্যাপ্লিকেশন ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:558
-#: ../daemon/gnome-keyring-daemon-ops.c:569
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "'%s' অ্যাপ্লিকেশন '%s' কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:575
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা "
-"আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:579
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "একটি অজানা অ্যাপ্লিকেশন %s কি-রিং ব্যবহার করতে ইচ্ছুক, কিন্তু তা বর্তমানে লক করা আছে"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:586
-msgid "Enter password for default keyring to unlock"
-msgstr "ডিফল্ট কি-রিং আনলক করতে পাসওয়ার্ড লিখুন"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:588
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' কি-রিং আনলক করতে পাসওয়ার্ড লিখুন"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:592
-msgid "Unlock Keyring"
-msgstr "কি-রিং আনলক করুন"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:604
-msgid "Automatically unlock this keyring when I log in."
-msgstr "লগ-ইন করার সময় স্বয়ংক্রিয়রূপে এই কি-রিং আন-লক করা হবে।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:640
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:644
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন একটি ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:650
-#: ../daemon/gnome-keyring-daemon-ops.c:660
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:654
-#: ../daemon/gnome-keyring-daemon-ops.c:664
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন একটি নতুন ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:670
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন '%s' নামক একটি নতুন কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:674
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি নতুন ডিফল্ট কি-রিং তৈরি করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:680
-msgid "New Keyring Password"
-msgstr "নতুন কি-রিং পাসওয়ার্ড"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:681
-msgid "Choose password for new keyring"
-msgstr "নতুন কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:728
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:732
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:738
-#: ../daemon/gnome-keyring-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে ব্যবহারযোগ্য "
-"পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:742
-#: ../daemon/gnome-keyring-daemon-ops.c:752
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:758
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন '%s' কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:762
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন ডিফল্ট কি-রিং'র পাসওয়ার্ড পরিবর্তন করতে ইচ্ছুক। এই কর্মে "
-"ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:772
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন. "
-
-#: ../daemon/gnome-keyring-daemon-ops.c:774
-msgid "Choose a new password for the default keyring. "
-msgstr "ডিফল্ট কি-রিং'র জন্য নতুন পাসওয়ার্ড নির্বাচন করুন। "
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:778
-msgid "Change Keyring Password"
-msgstr "কি-রিং'র পাসওয়ার্ড পরিবর্তন করুন"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:845
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) অ্যাপ্লিকেশন একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-রিং "
-"উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:849
-#: ../daemon/gnome-keyring-daemon-ops.c:853
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' অ্যাপ্লিকেশন একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-রিং "
-"উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:857
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"একটি অজানা অ্যাপ্লিকেশন একটি পাসওয়ার্ড সংরক্ষণ করতে ইচ্ছুক, কিন্তু কোনো ডিফল্ট কি-রিং "
-"উপস্থিত নেই। নতুন কি-রিং নির্মাণের জন্য ব্যবহারযোগ্য পাসওয়ার্ড নির্বাচন করা আবশ্যক।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Create Default Keyring"
-msgstr "ডিফল্ট কি-রিং তৈরি করুন"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Choose password for default keyring"
-msgstr "ডিফল্ট কি-রিং'র জন্য পাসওয়ার্ড নির্বাচন করুন"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "প্রবেশাধিকার প্রত্যাখ্যাত"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon অ্যাপ্লিকেশন বর্তমানে চলছে না।"
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "কি-রিং পূর্বে আন-লক করা হয়েছে।"
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "gnome-keyring-daemon-র সাথে যোগাযোগ করতে সমস্যা"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "এই নামের একটি কি-রং বর্তমানে উপস্থিত রয়েছে"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "প্রোগ্রামার ত্রুটি: অ্যাপ্লিকেশন দ্বারা অবৈধ তথ্য প্রেরিত হয়েছে।"
-
-#: ../ui/gkr-ask-tool.c:267
-msgid "_Location:"
-msgstr "অবস্থান: (_L)"
-
-#: ../ui/gkr-ask-tool.c:280
-msgid "_Old password:"
-msgstr "পুরোনো পাসওয়ার্ড:(_O)"
-
-#: ../ui/gkr-ask-tool.c:300
-msgid "_Password:"
-msgstr "পাসওয়ার্ড:(_P)"
-
-#: ../ui/gkr-ask-tool.c:322
-msgid "_Confirm password:"
-msgstr "পাসওয়ার্ড নিশ্চিত করুন:(_C)"
-
-#: ../ui/gkr-ask-tool.c:341
-msgid "New password strength"
-msgstr "নতুন পাসওয়ার্ডের দৃঢ়তা"
-
-#: ../ui/gkr-ask-tool.c:378
-msgid "Old password cannot be blank."
-msgstr "পাসওয়ার্ড ফাঁকা রাখা যাবে না।"
-
-#: ../ui/gkr-ask-tool.c:390
-msgid "Password cannot be blank."
-msgstr "পাসওয়ার্ড ফাঁকা রাখা যাবে না।"
-
-#: ../ui/gkr-ask-tool.c:399
-msgid "Passwords do not match."
-msgstr "পাসওয়ার্ডে গরমিল।"
-
-#: ../ui/gkr-ask-tool.c:448
-msgid "Deny"
-msgstr "প্রত্যাখ্যান করুন"
-
-#: ../ui/gkr-ask-tool.c:460
-msgid "Allow _Once"
-msgstr "একবার ব্যবহারের অনুমতি প্রদান করা হবে (_O)"
-
-#: ../ui/gkr-ask-tool.c:464
-msgid "_Always Allow"
-msgstr "সর্বদা ব্যবহারের অনুমতি প্রদান করা হবে (_A)"
-
diff --git a/po/bs.po b/po/bs.po
deleted file mode 100644
index 2badb0f3..00000000
--- a/po/bs.po
+++ /dev/null
@@ -1,383 +0,0 @@
-# translation of gnome-keyring.HEAD.bs.po to Bosnian
-# This file is distributed under the same license as the gnome-keyring package.
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Mehemed Sacirovic <mesa@tesanj.net>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.bs\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-08-21 13:26+0200\n"
-"Last-Translator: Mehemed Sacirovic <mesa@tesanj.net>\n"
-"Language-Team: Bosnian <lokal@linux.org.ba>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3.1\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "Program '%s' (%s)želi da pristupi glavnom privjesku ali je zaključan"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Program '%s' (%s) želi pristupiti privjesku '%s' ali je zaključan"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Program '%s' (%s) želi pristupiti nepoznatom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Program '%s' želi pristupiti uobičajenom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Program '%s' želi pristupiti privjesku '%s' ali je zaključan"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "Program '%s' želi pristupiti nepoznatom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nepoznatu program želi pristupiti uobičajenom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Nepoznati program želi pristupiti privjesku '%s', ali je zaključan"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Nepoznati program želi pristupiti nepoznatom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Unesi šifru za uobičajeni privjesak da bi ga otključali"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Unesi password za privjesak '%s' da bi ga otključali"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Otključaj privjesak"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Odbij"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Program '%s' (%s) želi kreirati novi privjesak sa nazivom '%s'. Odaberite "
-"šifru koju želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program '%s' (%s) želi kreirati novi uobičajeni privjesak. Odaberite šifru "
-"koju želite koristiti za njega"
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program '%s' želi kreirati novi privjesak sa nazivom '%s'. Odaberite šifru "
-"koju želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program '%s' želi kreirati novi uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nepoznata aplikacija želi kreirati novi privjesak sa nazivom '%s'. Odaberite "
-"šifru koju želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nepoznati program želi kreirati uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Nova šifra za privjesak."
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Odaberite šifru za novi privjesak"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Program '%s' (%s) želi kreirati novi uobičajeni privjesak. Odaberite šifru "
-"koju želite koristiti za njega"
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Program '%s' (%s) želi kreirati novi uobičajeni privjesak. Odaberite šifru "
-"koju želite koristiti za njega"
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Program '%s' želi kreirati novi uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Program '%s' želi kreirati novi uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nepoznati program želi kreirati uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nepoznati program želi kreirati uobičajeni privjesak. Odaberite šifru koju "
-"želite koristiti za njega."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Odaberite šifru za novi privjesak"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Odaberi šifru za uobičajeni privjesak"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Nova šifra za privjesak."
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Program '%s' (%s) želi pohraniti šifru, ali ne postoji uobičajeni privjesak. "
-"Da bi kreirali jedan, potrebno je da odabaret šifru koju želite koristiti za "
-"njega."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Program '%s' želi pohraniti šifru, ali ne postoji uobičajeni privjesak. Da "
-"bi kreirali jedan, potrebno je da odabaret šifru koju želite koristiti za "
-"njega."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nepoznati program želi pohraniti šifru, ali ne postoji uobičajeni privjesak. "
-"Da bi kreirali jedan, potrebno je da odabaret šifru koju želite koristiti za "
-"njega."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Kreiraj uobičajeni privjesak"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Odaberi šifru za uobičajeni privjesak"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Dozvoli pristup programu privjesku?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Program '%s' (%s) želi pristupiti šifri za '%s' u %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Program '%s' (%s) želi pristupiti šifri za '%s' u običajenom privjesku."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Program '%s' (%s) želi pristupiti žifri za '%s' u nepoznatom privjesku."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Program '%s' želi pristupiti šifri za '%s' u %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "Program '%s' želi pristupiti šifri za '%s' u običajenom privjesku."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "Program '%s' želi pristupiti šifri za '%s' u nepoznatom privjesku."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Nepoznati program želi pristupiti šifri za '%s' u %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Nepoznati program želi pristupiti šifri za '%s' u uobičajenom privjesku."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Nepoznati program želi pristupiti šifri za '%s' u nepoznatom privjesku."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Dozvoli pristup"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Dozvoli _Jedanput"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Dozvoli uvijek"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Morate navesti tip zs pokretanju\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Nepoznati tip zahtjeva\n"
diff --git a/po/ca.po b/po/ca.po
deleted file mode 100644
index b9e00728..00000000
--- a/po/ca.po
+++ /dev/null
@@ -1,656 +0,0 @@
-# Catalan translation of gnome-keyring.
-# Copyright © 2004, 2006 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Jordi Mallach <jordi@sindominio.net>, 2004, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-25 02:00+0100\n"
-"PO-Revision-Date: 2008-02-25 02:06+0100\n"
-"Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
-"Language-Team: Catalan <tradgnome@softcatala.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disc extraïble: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disc extraïble"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Inici"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "No hi ha el disc o la unitat a on hi ha aquest fitxer"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"L'aplicació «%s» (%s) vol accedir a la contrasenya per a «<object "
-"prop='name'/>» en l'anell de claus predeterminat."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"L'aplicació «%s» (%s) vol accedir a la contrasenya per a «<object "
-"prop='name'/>» en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"L'aplicació «%s» vol accedir a la contrasenya per a «<object prop='name'/>» "
-"de l'anell de claus predeterminat."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"L'aplicació «%s» vol accedir a la contrasenya per a «<object prop='name'/>» "
-"en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Una aplicació desconeguda vol accedir a la contrasenya per a «<object "
-"prop='name'/>» de l'anell de claus predeterminat."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Una aplicació desconeguda vol accedir a la contrasenya per a «<object "
-"prop='name'/>» en %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Permet l'accés"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Voleu permetre que l'aplicació accedeixi a l'anell de claus?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Contrasenya de desblocatge de l'anell de claus %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"L'aplicació «%s» (%s) vol accedir a l'anell de claus predeterminat, però "
-"està blocat"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"L'aplicació «%s» (%s) vol accedir a l'anell de claus «%s», però està blocat"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"L'aplicació «%s» vol accedir a l'anell de claus predeterminat, però està "
-"blocat"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "L'aplicació «%s» vol accedir a l'anell de claus «%s», però està blocat"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Una aplicació desconeguda vol accedir a l'anell de claus predeterminat, però "
-"està blocat"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Una aplicació desconeguda vol accedir a l'anell de claus «%s», però està "
-"blocat"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr ""
-"Introduïu la contrasenya per a desblocar l'anell de claus predeterminat"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Introduïu la contrasenya per a desblocar l'anell de claus «%s»"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Desbloca l'anell de claus"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Desbloca aquest anell de claus automàticament quan inici la sessió."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» (%s) vol crear un anell de claus nou anomenat «%s». Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» (%s) vol crear un anell de claus predeterminat nou. Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» vol crear un anell de claus nou anomenat «%s». Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» vol crear un anell de claus predeterminat nou. Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Una aplicació desconeguda vol crear un anell de claus nou anomenat «%s». Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Una aplicació desconeguda vol crear un anell de claus predeterminat nou. Heu "
-"d'establir la contrasenya que hi vulgueu utilitzar."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Contrasenya de l'anell de claus nou"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Seleccioneu una contrasenya per a l'anell de claus nou"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» (%s) vol canviar la contrasenya de l'anell de claus «%s». "
-"Heu d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» (%s) vol canviar la contrasenya de l'anell de claus "
-"predeterminat. Heu d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» vol canviar la contrasenya de l'anell de claus «%s». Heu "
-"d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"L'aplicació «%s» vol canviar la contrasenya de l'anell de claus "
-"predeterminat. Heu d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Una aplicació desconeguda vol canviar la contrasenya de l'anell de claus «%"
-"s». Heu d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Una aplicació desconeguda vol canviar l'anell de claus predeterminat. Heu "
-"d'escollir la contrasenya que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Escolliu una contrasenya per a l'anell de claus «%s». "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Escolliu una contrasenya per a l'anell de claus predeterminat. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Canvia la contrasenya de l'anell de claus"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'aplicació «%s» (%s) vol emmagatzemar una contrasenya, però no hi ha cap "
-"anell de claus predeterminat. Per crear-ne un, heu d'establir la contrasenya "
-"que hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'aplicació «%s» vol emmagatzemar una contrasenya, però no hi ha cap anell "
-"de claus predeterminat. Per crear-ne un, heu d'establir la contrasenya que "
-"hi vulgueu utilitzar."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Una aplicació desconeguda vol emmagatzemar una contrasenya, però no hi ha "
-"cap anell de claus predeterminat. Per crear-ne un, heu d'establir la "
-"contrasenya que hi vulgueu utilitzar."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Crea l'anell de claus predeterminat"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Estableix una contrasenya per a l'anell de claus predeterminat"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Aquesta opció habilita el component PKCS#11 en el dimoni del gnome-keyring. "
-"Només te efecte quan s'inicia el gnome-keyring-daemon, (per exemple, quan "
-"l'usuari entra a la sessió). Es pot sobreescriure aquest paràmetre si es "
-"passa una opció de línia d'ordres al dimoni."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Aquesta opció habilita l'agent SSH en el dimoni del gnome-keyring. Només te "
-"efecte quan s'inicia el gnome-keyring-daemon, (per exemple, quan l'usuari "
-"entra a la sessió). Es pot sobreescriure aquest paràmetre si es passa una "
-"opció de línia d'ordres al dimoni."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Si està habilitat el component PKCS#11 del gnome-keyring."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Si està habilitat l'agent SSH del gnome-keyring."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Accés denegat"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "No s'està executant l'aplicació gnome-keyring-daemon."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "S'ha produït un error en comunicar-se amb el gnome-keyring-daemon."
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Ja existeix un anell de claus amb aquest nom"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Error de programació: l'aplicació ha enviat dades errònies."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "No hi ha cap concordança"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "No existeix cap anell de claus amb aquest nom."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Ja s'ha desblocat l'anell de claus."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Desbloca l'anell de claus d'entrada"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Introduïu la contrasenya d'entrada per a desblocar l'anell de claus"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"El vostre anell de claus d'entrada no s'ha desblocat automàticament quan heu "
-"entrat a l'ordinador."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Crea un anell de claus d'entrada"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Introduïu la contrasenya d'entrada"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"No s'ha creat l'anell de claus d'entrada quan heu entrat a l'ordinador. Es "
-"crearà ara."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Desbloca la clau privada"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Desbloca l'anell de claus"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Desbloca la clau pública"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Desbloca"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Introduïu la contrasenya per a desblocar la clau privada"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Introduïu la contrasenya per a desblocar el certificat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Introduïu la contrasenya per a desblocar la clau pública"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Introduïu la contrasenya per a desblocar"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Desbloca aquesta clau privada quan inici la sessió."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Desbloca aquest certificat quan inici la sessió."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Desbloca aquesta clau pública quan inici la sessió."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Desbloca-ho quan inici la sessió"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Una aplicació vol accedir a la clau privada «%s», però està blocada"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Una aplicació vol accedir al certificat «%s», però està blocat"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Una aplicació vol accedir a la clau pública «%s», però està blocada"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Una aplicació vol accedir a «%s», però està blocat"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "El sistema vol importar la clau privada «%s», però està blocada"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "El sistema vol importar el certificat «%s», però està blocat"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "El sistema vol importar la clau pública «%s», però està blocada"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "El sistema vol importar «%s», però està blocat"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Desbloca la contrasenya per a «%s»"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Fitxer no reconegut o no implementat."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "No s'ha pogut analitzar el fitxer. No és vàlid o està malmès."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Voleu emmagatzemar les contrasenyes desxifrades?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Si escolliu utilitzar una contrasenya en blanc, les contrasenyes "
-"emmagatzemades no es xifraran amb seguretat. Aquestes seran accessibles per "
-"qualsevol que tingui accés als vostres fitxers."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Utilitza un emmagatzemament no segur"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Ubicació:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "C_ontrasenya antiga:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "Contrasen_ya:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirmeu la contrasenya:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Força de la contrasenya nova"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Les contrasenyes no coincideixen."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "La contrasenya no pot estar en blanc"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Denega"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Permet _una vegada"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Permet _sempre"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "La contrasenya antiga no pot ser buida."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr ""
-#~ "<span weight=\"bold\">Mesurador de la força de la contrasenya:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "L'aplicació «%s» (%s) vol accedir a un anell de claus desconegut, però "
-#~ "està blocat"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "L'aplicació «%s» vol accedir un anell de claus desconegut, però està "
-#~ "blocat"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Una aplicació desconeguda vol accedir a un anell de claus desconegut, "
-#~ "però està blocat"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "L'aplicació «%s» (%s) vol accedir a la contrasenya per a «%s» d'un anell "
-#~ "de claus desconegut."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "L'aplicació «%s» vol accedir a la contrasenya de «%s» d'un anell de claus "
-#~ "desconegut."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Una aplicació desconeguda vol accedir a la contrasenya per a «%s» d'un "
-#~ "anell de claus desconegut."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Heu d'especificar el tipus de petició a executar\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Es desconeix el tipus de petició\n"
diff --git a/po/cs.po b/po/cs.po
deleted file mode 100644
index 3580122e..00000000
--- a/po/cs.po
+++ /dev/null
@@ -1,585 +0,0 @@
-# Czech translation of gnome-keyring.
-# Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# Copyright (C) 2004, 2005, 2006 Miloslav Trmac <mitr@volny.cz>.
-# This file is distributed under the same license as the gnome-keyring package.
-# Miloslav Trmac <mitr@volny.cz>, 2003, 2004, 2005, 2006.
-# Jakub Friedl <jfriedl@suse.cz>, 2007.
-# Kamil Páral <ripper42@gmail.com>, 2008.
-# Petr Kovar <pknbe@volny.cz>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-16 16:30+0100\n"
-"PO-Revision-Date: 2008-02-16 13:39+0100\n"
-"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
-"Language-Team: Czech <gnome-cs-list@gnome.org>\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) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Výměnný disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Výměnný disk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Domov"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disk nebo jednotka, na které je umístěn tento soubor, nejsou dostupné"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Aplikace '%s' (%s) chce přístup k heslu pro '<object prop='name'/>' v "
-"implicitní klíčence."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Aplikace '%s' (%s) chce přístup k heslu pro '<object prop='name'/>' v %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Aplikace '%s' chce přístup k heslu pro '<object prop='name'/>' v implicitní "
-"klíčence."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Aplikace '%s' chce přístup k heslu pro '<object prop='name'/>' v %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Neznámá aplikace chce přístup k heslu pro '<object prop='name'/>' v "
-"implicitní klíčence."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Neznámá aplikace chce přístup k heslu pro '<object prop='name'/>' v %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Povolit přístup"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Povolit aplikaci přístup ke klíčence?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Odemykací heslo pro klíčenku %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikace '%s' (%s) chce přístup k implicitní klíčence, která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Aplikace '%s' (%s) chce přístup ke klíčence '%s', která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Aplikace '%s' chce přístup k implicitní klíčence, která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplikace '%s' chce přístup ke klíčence '%s', která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "Neznámá aplikace chce přístup k implicitní klíčence, která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Neznámá aplikace chce přístup ke klíčence '%s', která je zamčena"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Zadejte heslo pro odemčení implicitní klíčenky"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Zadejte heslo pro odemčení klíčenky '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Odemknout klíčenku"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Při přihlášení automaticky odemknout klíčenku."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' (%s) chce vytvořit novou klíčenku nazvanou '%s'. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' (%s) chce vytvořit novou implicitní klíčenku. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' chce vytvořit novou klíčenku nazvanou '%s'. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' chce vytvořit novou implicitní klíčenku. Musíte zvolit heslo, "
-"které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Neznámá aplikace chce vytvořit novou klíčenku nazvanou '%s'. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Neznámá aplikace chce vytvořit novou implicitní klíčenku. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Heslo nové klíčenky"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Zvolte heslo pro novou klíčenku"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' (%s) chce změnit heslo klíčenky '%s'. Musíte zvolit heslo, "
-"které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' (%s) chce změnit heslo implicitní klíčenky. Musíte zvolit "
-"heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' chce změnit heslo klíčenky '%s'. Musíte zvolit heslo, které "
-"pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikace '%s' chce změnit heslo implicitní klíčenky. Musíte zvolit heslo, "
-"které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Neznámá aplikace chce změnit heslo klíčenky '%s'. Musíte zvolit heslo, které "
-"pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Neznámá aplikace chce změnit heslo implicitní klíčenky. Musíte zvolit heslo, "
-"které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Zvolte nové heslo pro klíčenku '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Zvolte nové heslo pro implicitní klíčenku. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Změnit heslo klíčenky"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikace '%s' (%s) chce uložit heslo, ale neexistuje implicitní klíčenka. "
-"Před jejím vytvořením musíte zvolit heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikace '%s' chce uložit heslo, ale neexistuje implicitní klíčenka. Před "
-"jejím vytvořením musíte zvolit heslo, které pro ni chcete používat."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Neznámá aplikace chce uložit heslo, ale neexistuje implicitní klíčenka. Před "
-"jejím vytvořením musíte zvolit heslo, které pro ni chcete používat."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Vytvořit implicitní klíčenku"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Zvolte heslo pro implicitní klíčenku"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Tato volba aktivuje komponentu PKCS#11 v démonovi gnome-keyring. Změna se "
-"projeví pouze během spouštění gnome-keyring-daemon (např. když se uživatel "
-"přihlásí). Toto nastavení může být potlačeno, pokud jsou démonu předány "
-"jisté parametry příkazové řádky."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Tato volba aktivuje SSH agenta v démonovi gnome-keyring. Změna se projeví "
-"pouze během spouštění gnome-keyring-daemon (např. když se uživatel "
-"přihlásí). Toto nastavení může být potlačeno, pokud jsou démonu předány "
-"jisté parametry příkazové řádky."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Zda je komponenta PKCS#11 pro gnome-keyring aktivní."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Zda je agent SSH pro gnome-keyring aktivní."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Přístup odmítnut"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Aplikace gnome-keyring-daemon není spuštěna."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Chyba při komunikaci s aplikací gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Klíčenka s tímto názvem již existuje"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Chyba programátora: Aplikace poslala chybná data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Žádné odpovídající výsledky"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Klíčenka s tímto názvem neexistuje."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Klíčenka již byla odemčena."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Odemknout přihlašovací klíčenku"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Zadejte přihlašovací heslo k odemknutí klíčenky"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Vaše přihlašovací klíčenka nebyla během vašeho přihlášení k tomuto počítači "
-"automaticky odemčena."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Vytvořit přihlašovací klíčenku"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Zadejte své přihlašovací heslo"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Vaše přihlašovací klíčenka nebyla během vašeho přihlášení k tomuto počítači "
-"automaticky vytvořena. Bude vytvořena nyní."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Odemknout soukromý klíč"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Odemknout certifikát"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Odemknout veřejný klíč"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Odemknout"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Zadejte heslo k odemknutí soukromého klíče"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Zadejte heslo k odemknutí certifikátu"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Zadejte heslo k odemknutí veřejného klíče"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Zadejte heslo k odemknutí"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Tento soukromý klíč při přihlášení automaticky odemknout."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Tento certifikát při přihlášení automaticky odemknout."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Tento veřejný klíč při přihlášení automaticky odemknout."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Automaticky odemknout při přihlášení"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Aplikace požaduje přístup k soukromému klíči \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Aplikace požaduje přístup k certifikátu \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Aplikace požaduje přístup k veřejnému klíči \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Aplikace požaduje přístup k '%s', ale ta je zamčena"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systém chce importovat soukromý klíč \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systém chce importovat certifikát \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Systém chce importovat veřejný klíč \"%s\", ale ten je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systém chce importovat \"%s\", ale prvek je zamčen"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Odemykací heslo pro \"%s\""
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Nerozpoznaný nebo nepodporovaný soubor."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Nemohu analyzovat neplatný nebo poškozený soubor."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Ukládat hesla nešifrovaně?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Pokud zvolíte použití prázdného hesla, vaše uložená hesla nebudou bezpečně "
-"zašifrována. Budou přístupná každému, kdo bude mít přístup k vašim souborům."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Použít nezabezpečené úložiště"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "U_místění:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Staré heslo:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Heslo:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Potvrďte heslo:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Síla nového hesla"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Hesla nesouhlasí."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Heslo nesmí být prázdné"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Odepřít"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Povolit _jednou"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Vždy povolit"
diff --git a/po/cy.po b/po/cy.po
deleted file mode 100644
index 8a947272..00000000
--- a/po/cy.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# gnome-keyring yn Gymraeg.
-# Mae'r ffeil hon dan yr un drwydded a phecyn gnome-keyring.
-# Bryn Salisbury <bryn@randomlyevil.org.uk>, 2004.
-# Chris M. Jackson <chris@www.linux.org.uk>, 2004.
-# Rhys Jones <rhys@sucs.org>, 2004-2006.
-# Dafydd Tomos <l10n@da.fydd.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-04-06 21:03+0100\n"
-"Last-Translator: Rhys Jones <rhys@sucs.org>\n"
-"Language-Team: Welsh <gnome-cy@pengwyn.linux.org.uk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-#, fuzzy
-msgid "_Old password:"
-msgstr "_Cyfrinair:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Cyfrinair:"
-
-#: ../gnome-keyring-ask.c:284
-#, fuzzy
-msgid "_Confirm new password:"
-msgstr "C_adarnhau cyfrinair:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-#, fuzzy
-msgid "Old password cannot be blank."
-msgstr "Gall cyfrinair ddim bod yn wag."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Gall cyfrinair ddim bod yn wag."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Cyfrineiriau ddim yr un fath."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gyrchu'r cylch allweddi rhagosodedig, ond mae ar "
-"glo"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gyrchu'r cylch allweddi '%s', ond mae ar glo"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gyrchu cylch allweddi anhysbys, ond mae ar glo"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Mae'r rhaglen '%s' am gyrchu'r cylch allweddi ragosodedig, ond mae ar glo"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Mae'r rhaglen '%s' am gyrchu'r cylch allweddi '%s', ond mae ar glo"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "Mae'r rhaglen '%s' am gyrchu cylch allweddi anhysbys, ond mae ar glo"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Mae rhaglen anhysbys am gyrchu'r cylch allweddi ragosodedig, ond mae ar glo"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Mae rhaglen anhysbys am gyrchu'r cylch allweddi '%s', ond mae ar glo"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "Mae rhaglen anhysbys am gyrchu cylch allweddi anhysbys, ond mae ar glo"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Rhowch gyfrinair y cylch allweddi ragosodedig er mwyn ei datgloi"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Rhowch y cyfrinair i ddatgloi'r cylch allweddi '%s'"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Datgloi Cylch Allweddi"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Gwrthod"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am greu cylch allweddi newydd o'r enw '%s'. Rhaid i "
-"chi ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am greu cylch allweddi ragosodedig newydd. Rhaid i "
-"chi ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' am greu cylch allweddi newydd o'r enw '%s'. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Mae rhaglen anhysbys am greu cylch allweddi newydd o'r enw '%s'. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Mae rhaglen anhysbys am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Cyfrinair y Cylch Allweddi Newydd"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Dewiswch gyfrinair ar gyfer y cylch allweddi newydd"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am greu cylch allweddi ragosodedig newydd. Rhaid i "
-"chi ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am greu cylch allweddi ragosodedig newydd. Rhaid i "
-"chi ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Mae'r rhaglen '%s' am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Mae rhaglen anhysbys am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Mae rhaglen anhysbys am greu cylch allweddi ragosodedig newydd. Rhaid i chi "
-"ddewis y cyfrinair yr ydych am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Dewiswch gyfrinair ar gyfer y cylch allweddi newydd"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Dewiswch gyfrinair ar gyfer y cylch allweddi ragosodedig"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Cyfrinair y Cylch Allweddi Newydd"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gadw cyfrinair newydd, ond does yna ddim cylch "
-"allweddi ragosodedig. I greu cylch, rhaid i chi ddewis y cyfrinair yr ydych "
-"am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Mae'r rhaglen '%s' am gadw cyfrinair newydd, ond does yna ddim cylch "
-"allweddi ragosodedig. I greu cylch, rhaid i chi ddewis y cyfrinair yr ydych "
-"am ei ddefnyddio ar ei chyfer."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Mae rhaglen anhysbys am gadw cyfrinair newydd, ond does yna ddim cylch "
-"allweddi ragosodedig. I greu cylch, rhaid i chi ddewis y cyfrinair yr ydych "
-"am ei ddefnyddio ar ei chyfer."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Creu Cylch Allweddi Ragosodedig"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Dewiswch gyfrinair ar gyfer y cylch allweddi ragosodedig"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Caniatáu i raglenni gyrchu'r cylch allweddi?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Mae'r rhaglen '%s' (%s) am gyrchu'r cyfrinair ar gyfer '%s' yn %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gyrchu'r cyfrinair ar gyfer '%s' yn y cylch "
-"allweddi ragosodedig."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Mae'r rhaglen '%s' (%s) am gyrchu'r cyfrinair ar gyfer '%s' mewn cylch "
-"allweddi anhysbys."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Mae'r rhaglen '%s' am gyrchu'r cyfrinair ar gyfer '%s' yn %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Mae'r rhaglen '%s' am gyrchu'r cyfrinair ar gyfer '%s' yn y cylch allweddi "
-"ragosodedig."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Mae'r rhaglen '%s' am gyrchu'r cyfrinair ar gyfer '%s' mewn cylch allweddi "
-"anhysbys."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Mae rhaglen anhysbys am gyrchu'r cyfrinair ar gyfer '%s' yn %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Mae rhaglen anhysbys am gyrchu'r cyfrinair ar gyfer '%s' yn y cylch allweddi "
-"ragosodedig."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Mae rhaglen anhysbys am gyrchu'r cyfrinair ar gyfer '%s' mewn cylch allweddi "
-"anhysbys."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Caniatau mynediad"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Caniatau _Unwaith"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Caniatau o _Hyd"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Rhaid nodi pa fath o gais i'w redeg\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Math cais anhysbys\n"
diff --git a/po/da.po b/po/da.po
deleted file mode 100644
index a36b1e7c..00000000
--- a/po/da.po
+++ /dev/null
@@ -1,651 +0,0 @@
-# Danish translation of gnome-keyring.
-# Copyright (C) 2004-07 Free Software Foundation, Inc.
-# Ole Laursen <olau@hardworking.dk>, 2004.
-# Peter Bach <bach.peter@gmail.com>, 2007.
-# Ask Hjorth Larsen <asklarsen@gmail.com>, 2007.
-# Kenneth Nielsen <k.nielsen81@gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-09 22:54+0100\n"
-"PO-Revision-Date: 2008-03-09 21:43+0100\n"
-"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
-"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Flytbar disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Flytbar disk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Hjem"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disken eller drevet denne fil findes på er ikke tilgængelig"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at tilgå adgangskoden for \"<object "
-"prop='name'/>\" i standardnøgleringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at tilgå adgangskoden for \"<object "
-"prop='name'/>\" i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Programmet \"%s\" ønsker at tilgå adgangskoden for \"<object prop='name'/>\" "
-"i standardnøgleringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Programmet \"%s\" ønsker at tilgå adgangskoden for \"<object prop='name'/>\" "
-"i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Et ukendt program ønsker at tilgå adgangskoden for \"<object prop='name'/>\" "
-"i standardnøgleringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Et ukendt program ønsker at tilgå adgangskoden for\"<object prop='name'/>\" "
-"i %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Tillad adgang"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Tillad program at tilgå nøglering?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Lås adgangskoden for nøgleringen %s op"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at tilgå standardnøgleringen, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at tilgå nøgleringen \"%s\", men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Programmet \"%s\" ønsker at tilgå standardnøgleringen, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Programmet \"%s\" ønsker at tilgå nøgleringen \"%s\", men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "Et ukendt program ønsker at tilgå standardnøgleringen, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Et ukendt program ønsker at tilgå nøgleringen \"%s\", men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Indtast adgangskode for at låse standardnøgleringen op"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Indtast adgangskode for at låse nøgleringen \"%s\" op"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Lås nøglering op"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Lås automatisk denne nøglering op når jeg logger ind."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at oprette en ny nøglering med navnet \"%s\". "
-"Du skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at oprette en ny standardnøglering. Du skal "
-"vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" ønsker at oprette en ny nøglering med navnet \"%s\". Du "
-"skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" ønsker at oprette en ny standardnøglering. Du skal vælge "
-"en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Et ukendt program ønsker at oprette en ny nøglering med navnet \"%s\". Du "
-"skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Et ukendt program ønsker at oprette en ny standardnøglering. Du skal vælge "
-"en adgangskode du ønsker at bruge til nøgleringen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Ny nøgleringsadgangskode"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Vælg adgangskode til ny nøglering"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at ændre adgangskoden for \"%s\"-nøgleringen. "
-"Du skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at ændre adgangskoden for standardnøgleringen. "
-"Du skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" ønsker at ændre adgangskoden for \"%s\"-nøgleringen. Du "
-"skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet \"%s\" ønsker at ændre adgangskoden for standardnøgleringen. Du "
-"skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Et ukendt program ønsker at ændre adgangskoden for \"%s\"-nøgleringen. Du "
-"skal vælge en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Et ukendt program ønsker at oprette en ny standardnøglering. Du skal vælge "
-"en adgangskode du ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Vælg en ny adgangskode til \"%s\"-nøgleringen. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Vælg en ny adgangskode til standardnøgleringen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Ændre nøgleringsadgangskode"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet \"%s\" (%s) ønsker at gemme en adgangskode, men der er ingen "
-"standardnøglering. For at oprette en skal du vælge en adgangskode som du "
-"ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet \"%s\" ønsker at gemme en adgangskode, men der er ingen "
-"standardnøglering. For at oprette en skal du vælge en adgangskode som du "
-"ønsker at bruge til nøgleringen."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Et ukendt program ønsker at gemme en adgangskode, men der er ingen "
-"standardnøglering. For at oprette en skal du vælge en adgangskode som du "
-"ønsker at bruge til nøgleringen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Opret standardnøglering"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Vælg adgangskode til standardnøglering"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Dette aktiverer PKCS#11-komponenten i gnome-keyring-dæmonen. Dette træder "
-"kun i kraft når gnome-keyring-daemon startes (f.eks. når brugeren logger "
-"ind). Denne indstilling bliver måske overskrevet når visse kommandolinje-"
-"tilvalg gives til dæmonen."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"\"Dette aktiverer ssh-agenten i gnome-keyring-dæmonen. Dette træder kun i "
-"kraft når gnome-keyring-daemon startes (f.eks. når brugeren logger ind). "
-"Denne indstilling bliver måske overskrevet når visse kommandolinje-tilvalg "
-"gives til dæmonen."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Om PKCS#11-komponenten i gnome-keyring er aktiveret."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Om ssh-agenten i gnome-keyring er aktiveret."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Adgang nægtet"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Programmet gnome-keyring-daemon kører ikke."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Fejl under kommunikation med gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Der findes allerede en nøglering med det navn"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmørfejl: Programmet har sendt ugyldige data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Ingen træf fundet"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Der findes ingen nøglering med det navn."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Nøgleringen er allerede blevet låst op."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Lås logind-nøglering op"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Indtast logind-kodeord for at låse nøgleringen op"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Din logind-nøglering blev ikke automatisk låst op da du loggede ind på denne "
-"computer."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Opret logind-nøglering"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Indtast dit logind-kodeord"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Din logind-nøglering blev ikke automatisk oprettet da du loggede ind på "
-"denne computer. Den vil nu blive oprettet."
-
-# ???
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Lås privat nøgle op"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Lås certifikat op"
-
-# ???
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Lås offentlig nøgle op"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Lås op"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Indtast adgangskode for at låse den private nøgle op"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Indtast kodeord for at låse certifikatet op"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Indtast adgangskode for at låse den offentlige nøgle op"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Indtast adgangskode for at låse op"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Lås automatisk denne private nøgle op når jeg logger ind."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Lås automatisk dette certifikat op når jeg logger ind."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Lås automatisk denne offentlige nøgle op når jeg logger ind."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Lås automatisk op når jeg logger ind"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Et program ønsker at tilgå den private nøgle \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Et program ønsker at tilgå certifikatet \"%s\", men det er låst"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Et program ønsker at tilgå den offentlige nøgle \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Et program ønsker at tilgå \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systemet ønsker at importere den private nøgle \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systemet ønsker at importere certifikatet \"%s\", men det er låst"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"Systemet ønsker at importere den offentlige nøgle \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systemet ønsker at importere \"%s\", men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Lås kodeord for \"%s\" op"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ikke genkendt eller ikke understøttet fil."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Kunne ikke fortolke ugyldig eller ødelagt fil."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Opbevar kodeord ukrypteret?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Når du vælger et blankt kodeord vil dine kodeord ikke blive krypteret "
-"sikkert. De vil være tilgængelige for hvem som helst som har adgang til dine "
-"filer."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Brug usikker opbevaring"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Placering:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Gammel adgangskode:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Adgangskode:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Bekræft adgangskode:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Styrke af ny adgangskode"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Adgangskoder stemmer ikke overens."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Adgangskode kan ikke være tom"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Nægt"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Tillad _denne gang"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Tillad _altid"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Gammel adgangskode kan ikke være tom."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Adgangskode-styrkemeter:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) ønsker at tilgå en ukendt nøglering, men den er "
-#~ "låst"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Programmet \"%s\" ønsker at tilgå en ukendt nøglering, men den er låst"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Et ukendt program ønsker at tilgå en ukendt nøglering, men den er låst"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) ønsker at tilgå adgangskoden for \"%s\" i en "
-#~ "ukendt nøglering."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Programmet \"%s\" ønsker at tilgå adgangskoden for \"%s\" i en ukendt "
-#~ "nøglering."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Et ukendt program ønsker at tilgå adgangskoden for \"%s\" i en ukendt "
-#~ "nøglering."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Du skal angive den type forespørgsel der skal foretages\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Ukendt forespørgselstype\n"
diff --git a/po/de.po b/po/de.po
deleted file mode 100644
index e7ddf7bc..00000000
--- a/po/de.po
+++ /dev/null
@@ -1,687 +0,0 @@
-# German gnome-keyring translation.
-# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Christian Neumair <chris@gnome-de.org>, 2003, 2004.
-# Hendrik Richter <hendrikr@gnome.org>, 2006.
-# Philipp Kerling <k.philipp@gmail.com>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 0.1.2\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-24 14:50+0100\n"
-"PO-Revision-Date: 2008-02-24 15:09+0100\n"
-"Last-Translator: Philipp Kerling <k.philipp@gmail.com>\n"
-"Language-Team: German <gnome-de@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Wechseldatenträger: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Wechseldatenträger"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Persönlicher Ordner"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr ""
-"Das Medium oder Laufwerk, auf dem diese Datei gespeichert ist, ist nicht "
-"präsent."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, auf das Passwort für »<object·prop='name'/>« "
-"im Standardschlüsselbund zuzugreifen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, auf das Passwort für »<object·prop='name'/>« "
-"in %s zuzugreifen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/>' "
-"in the default keyring."
-msgstr ""
-"Die Anwendung »%s« versucht, auf das Passwort für »<object·prop='name'/>« im "
-"Standardschlüsselbund zuzugreifen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/>' "
-"in %s."
-msgstr ""
-"Die Anwendung »%s« versucht, auf das Passwort für »<object·prop='name'/>« in %s "
-"zuzugreifen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Eine unbekannte Anwendung versucht, auf das Passwort für »<object·prop='name'/"
-">« im Standardschlüsselbund zuzugreifen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Eine unbekannte Anwendung versucht, auf das Passwort für »<object·prop='name'/"
-">« in %s zuzugreifen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Zugriff gewähren"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Der Anwendung Zugriff auf den Schlüsselbund gewähren?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Freigabepasswort für Schlüsselbund %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, auf den Standardschlüsselbund zuzugreifen; "
-"dieser ist jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, auf den Schlüsselbund »%s« zuzugreifen; "
-"dieser ist jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Die Anwendung »%s« versucht, auf den Standardschlüsselbund zuzugreifen; dieser "
-"ist jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Die Anwendung »%s« versucht, auf den Schlüsselbund »%s« zuzugreifen; dieser ist "
-"jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Eine unbekannte Anwendung versucht, auf den Standardschlüsselbund "
-"zuzugreifen; dieser ist jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Eine unbekannte Anwendung versucht, auf den Schlüsselbund »%s« zuzugreifen; "
-"dieser ist jedoch gesperrt."
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr ""
-"Geben Sie das Passwort für den Standardschlüsselbund ein, um diesen "
-"freizugeben."
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr ""
-"Geben Sie das Passwort für den Schlüsselbund »%s« ein, um diesen freizugeben."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Schlüsselbund freigeben"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Diesen Schlüsselbund beim Anmelden automatisch freigeben."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, den neuen Schlüsselbund »%s« anzulegen. Sie "
-"müssen ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, einen neuen Standardschlüsselbund anzulegen. "
-"Sie müssen ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« versucht, den neuen Schlüsselbund »%s« anzulegen. Sie müssen "
-"ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« versucht, einen neuen Standardschlüsselbund anzulegen. Sie "
-"müssen ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Eine unbekannte Anwendung versucht, den neuen Schlüsselbund »%s« anzulegen. "
-"Sie müssen ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Eine unbekannte Anwendung versucht, einen neuen Standardschlüsselbund "
-"anzulegen. Sie müssen ein Passwort festlegen, das für diesen verwendet werden "
-"soll."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Passwort für neuen Schlüsselbund"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Legen Sie ein Passwort für den neuen Schlüsselbund fest"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, das Passwort für den Schlüsselbund »%s« zu "
-"ändern. Sie müssen ein Passwort festlegen, das für diesen verwendet werden "
-"soll."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, das Passwort für den Standardschlüsselbund "
-"zu ändern. Sie müssen ein Passwort festlegen, das für diesen verwendet werden "
-"soll."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« versucht, das Passwort für den Schlüsselbund »%s« zu ändern. "
-"Sie müssen ein Passwort festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Die Anwendung »%s« versucht, das Passwort für den Standardchlüsselbund zu "
-"ändern. Sie müssen ein Passwort festlegen, das für diesen verwendet werden "
-"soll."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Eine unbekannte Anwendung versucht, das Passwort für den Schlüsselbund »%s« zu "
-"ändern. Sie müssen ein Passwort festlegen, das für diesen verwendet werden "
-"soll."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Eine unbekannte Anwendung versucht, das Passwort für den "
-"Standardschlüsselbund zu ändern. Sie müssen ein Passwort festlegen, das für "
-"diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Legen Sie ein neues Passwort für den Schlüsselbund »%s« fest."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Legen Sie ein neues Passwort für den Standardschlüsselbund fest."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Passwort für Schlüsselbund ändern"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Die Anwendung »%s« (%s) versucht, ein Passwort zu speichern. Es existiert "
-"jedoch kein Standardschlüsselbund. Um einen anzulegen müssen Sie ein Passwort "
-"festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Die Anwendung »%s« versucht, ein Passwort zu speichern. Es existiert jedoch "
-"kein Standardschlüsselbund. Um einen anzulegen müssen Sie ein Passwort "
-"festlegen, das für diesen verwendet werden soll."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Eine unbekannte Anwendung versucht, ein Passwort zu speichern. Es existiert "
-"jedoch kein Standardschlüsselbund. Um einen anzulegen müssen Sie ein Passwort "
-"festlegen, das für diesen verwendet werden soll."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Standardschlüsselbund anlegen"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Legen Sie ein Passwort für den Standardschlüsselbund fest"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Diese Option aktiviert die PKCS #11-Komponente im GNOME-Schlüsselbunddienst. "
-"Sie tritt nur in Kraft, wenn der Schlüsselbunddienst gestartet wird (also der "
-"Benutzer sich anmeldet). Diese Einstellung kann von bestimmten "
-"Befehlszeilenargumenten, die dem Dienst übergeben werden, überschrieben "
-"werden."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Diese Option aktiviert den SSH-Agenten des GNOME-Schlüsselbunddienstes. Sie "
-"tritt nur in Kraft, wenn der Schlüsselbunddienst gestartet wird (also der "
-"Benutzer sich anmeldet). Diese Einstellung kann von bestimmten "
-"Befehlszeilenargumenten, die dem Dienst übergeben werden, überschrieben "
-"werden."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr ""
-"Legt fest, ob die PKCS #11-Komponente des GNOME-Schlüsselbunddienstes "
-"aktiviert ist."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr ""
-"Legt fest, ob der SSH-Agent des GNOME-Schlüsselbunddienstes aktiviert ist."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Zugriff verweigert"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Der GNOME-Schlüsselbunddienst ist nicht aktiv."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "GNOME-Schlüsselbunddienstkommunikationsfehler"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Ein gleichnamiger Schlüsselbund ist bereits vorhanden"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmierfehler: Die Anwendung sendet ungültige Daten."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Keine passenden Ergebnisse"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Ein Schlüsselbund mit diesem Namen existiert nicht."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Der Schlüsselbund wurde bereits freigegeben."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Anmeldeschlüsselbund freigeben"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Geben Sie das Passwort zum Freigeben des Schlüsselbundes ein"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Ihr Anmeldeschlüsselbund wurde nicht automatisch freigegeben, als Sie sich an "
-"diesem Rechner angemeldet haben."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Anmeldeschlüsselbund erstellen"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Geben Sie Ihr Anmeldepasswort ein"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Ihr Anmeldeschlüsselbund wurde nicht automatisch erstellt, als Sie sich an "
-"diesem Computer angemeldet haben. Er wird nun erstellt."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Privaten Schlüssel entsperren"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Zertifikat freigeben"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Öffentlichen Schlüssel entsperren"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Freigeben"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Geben Sie das Passwort zum Freigeben des privaten Schlüssels ein"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Geben Sie das Passwort zum Freigeben des Zertifikats ein"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Geben Sie das Passwort zum Freigeben des öffentlichen Schlüssels ein"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Geben Sie das Passwort zum Freigeben ein"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Diesen privaten Schlüssel beim Anmelden automatisch freigeben."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Dieses Zertifikat beim Anmelden automatisch freigeben."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Diesen öffentlichen Schlüssel beim Anmelden automatisch freigeben."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Dies beim Anmelden automatisch freigeben."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Eine Anwendung versucht, auf den privaten Schlüssel »%s« zuzugreifen; dieser "
-"ist jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Eine Anwendung versucht, auf das Zertifikat »%s« zuzugreifen; dieses ist "
-"jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Eine Anwendung versucht, auf den öffentlichen Schlüssel »%s« zuzugreifen; "
-"dieser ist jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr ""
-"Eine Anwendung versucht, auf »%s« zuzugreifen; dieses ist jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"Das System versucht, den privaten Schlüss »%s« zu importieren; dieser ist "
-"jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"Das System versucht, das Zertifikat »%s« zu importieren; dieses ist jedoch "
-"gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"Das System versucht, den öffentlichen Schlüssel »%s« zu importieren; dieser "
-"ist jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Das System versucht, »%s« zu importieren; dieses ist jedoch gesperrt"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Freigabepasswort für »%s«"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Unbekannte oder nicht unterstüzte Datei."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Ungültige oder defekte Datei konnte nicht eingelesen werden."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Passwörter unverschlüsselt speichern?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be safely "
-"encrypted. They will be accessible by anyone with access to your files."
-msgstr ""
-"Wenn Sie ein leeres Passwort auswählen, werden Ihre gespeicherten Passwörter "
-"nicht sicher verschlüsselt werden. Sie werden für jeden mit Zugriff auf Ihre "
-"Dateien zugreifbar sein."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Unsichere Speicherung verwenden"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Ort:"
-
-# CHECK
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Altes Passwort:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Passwort:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Passwort _bestätigen:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Neue Passwortstärke"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Die Passwörter stimmen nicht überein."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Das Passwort darf nicht leer sein"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Verweigern"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "_Einmal gewähren"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Immer gewähren"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Das alte Passwort darf nicht leer sein."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Passwortqualität:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Die Anwendung »%s« (%s) versucht, auf einen unbekannten Schlüsselbund "
-#~ "zuzugreifen. Dieser ist jedoch gesperrt."
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Die Anwendung »%s« versucht, auf einen unbekannten Schlüsselbund "
-#~ "zuzugreifen. Dieser ist jedoch gesperrt."
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Eine unbekannte Anwendung versucht, auf einen unbekannten Schlüsselbund "
-#~ "zuzugreifen. Dieser ist jedoch gesperrt."
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Die Anwendung »%s« (%s) versucht, auf das Passwort für »%s« in einem "
-#~ "unbekannten Schlüsselbund zuzugreifen."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Die Anwendung »%s« versucht, auf das Passwort für »%s« in einem unbekannten "
-#~ "Schlüsselbund zuzugreifen."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Eine unbekannte Anwendung versucht, auf das Passwort für »%s« in einem "
-#~ "unbekannten Schlüsselbund zuzugreifen."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Sie müssen den Typ der auszuführenden Abfrage angeben\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Unbekannter Abfragetyp\n"
diff --git a/po/dz.po b/po/dz.po
deleted file mode 100644
index ddaf1d3a..00000000
--- a/po/dz.po
+++ /dev/null
@@ -1,301 +0,0 @@
-# Dzongkha translation of gnome-keyring
-# Copyright @ Free Software Foundation, Inc.
-# Mindu Dorji
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.dz\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-19 03:52+0100\n"
-"PO-Revision-Date: 2007-06-06 02:28+0530\n"
-"Last-Translator: Tshewang Norbu <bumthap2006@hotmail.com>\n"
-"Language-Team: DZONGKHA <pgeyleg@dit.gov.bt>\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: Dzongkha\n"
-"X-Poedit-Country: BHUTAN\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: ../daemon/gnome-keyring-daemon.c:384
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "གློག་རིམ་'%s' (%s) དེ་གིས་%s ནང་'%s' གི་དོན་ལུ་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་པས།"
-
-#: ../daemon/gnome-keyring-daemon.c:387
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in the default keyring."
-msgstr "གློག་རིམ་'%s' (%s) དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་ནང་ %s' གི་དོན་ལུ་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་པས།"
-
-#: ../daemon/gnome-keyring-daemon.c:392
-#: ../daemon/gnome-keyring-daemon.c:400
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ %s ནང་ལུ་'%s' གི་དོན་ལས་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་པས།"
-
-#: ../daemon/gnome-keyring-daemon.c:395
-#: ../daemon/gnome-keyring-daemon.c:403
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in the default keyring."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་ནང་ '%s' གི་དོན་ལུ་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་པས།"
-
-#: ../daemon/gnome-keyring-daemon.c:408
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་%s གི་དོན་ལས་ %s' ནང་ལུ་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་པས།"
-
-#: ../daemon/gnome-keyring-daemon.c:411
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in the default keyring."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་ནང་'%s' གི་དོན་ལས་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་ཨིན་མས།"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon.c:417
-msgid "Allow access"
-msgstr "འཛུལ་སྤྱོད་འབད་བཅུག"
-
-#: ../daemon/gnome-keyring-daemon.c:417
-msgid "Allow application access to keyring?"
-msgstr "གློག་རིམ་གྱིས་ལྡེ་འཁོར་ལུ་ འཛུལ་སྤྱོད་འབད་བཅུག"
-
-#: ../daemon/gnome-keyring-daemon.c:490
-#, c-format
-msgid "The application '%s' (%s) wants access to the default keyring, but it is locked"
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:494
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ ལྡེ་འཁོར་'%s'ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:501
-#: ../daemon/gnome-keyring-daemon.c:511
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "གློག་རིམ་'%s' དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:505
-#: ../daemon/gnome-keyring-daemon.c:516
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "གློག་རིམ་'%s' དེ་གིས་ ལྡེ་འཁོར་'%s'དེ་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:522
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ སྔོན་སྒྲིག་འཁོར་ལྡེ་འཁོར་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:526
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ ལྡེ་འཁོར་'%s'དེ་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ལྡེ་མིག་བརྐྱབས་ནུག"
-
-#: ../daemon/gnome-keyring-daemon.c:533
-msgid "Enter password for default keyring to unlock"
-msgstr "སྔོན་སྒྲིག་ལྡེ་འཁོར་ ལྡེ་མིག་ཕྱེ་ནིའི་དོན་ལུ་ ཆོག་ཡིག་བཙུགས།"
-
-#: ../daemon/gnome-keyring-daemon.c:535
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "སྔོན་སྒྲིག་ལྡེ་འཁོར་'%s' ལྡེ་་མིག་ཕྱེ་ནིའི་དོན་ལུ་ ཆོག་ཡིག་བཙུགས།"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon.c:539
-msgid "Unlock Keyring"
-msgstr "ལྡེ་འཁོར་ལྡེ་མིག་ཕྱེ།"
-
-#: ../daemon/gnome-keyring-daemon.c:567
-#, c-format
-msgid "The application '%s' (%s) wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ ལྡེ་འཁོར་གསརཔ་'%s'ཟེར་མི་ཅིག་གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:571
-#, c-format
-msgid "The application '%s' (%s) wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གསརཔ་ཅིག་ གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:577
-#: ../daemon/gnome-keyring-daemon.c:587
-#, c-format
-msgid "The application '%s' wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ ལྡེ་འཁོར་གསརཔ་'%s'ཟེར་མི་ཅིག་ གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:581
-#: ../daemon/gnome-keyring-daemon.c:591
-#, c-format
-msgid "The application '%s' wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གསརཔ་ཅིག་ གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:597
-#, c-format
-msgid "An unknown application wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ ལྡེ་འཁོར་གསརཔ་'%s'ཟེར་མི་ཅིག་ གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:601
-msgid "An unknown application wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གསརཔ་ཅིག་ གསར་བསྐྲུན་འབད་ནི་ཨིན་པས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon.c:607
-msgid "New Keyring Password"
-msgstr "ལྡེ་འཁོར་གྱི་ཆོག་ཡིག་གསརཔ་"
-
-#: ../daemon/gnome-keyring-daemon.c:608
-msgid "Choose password for new keyring"
-msgstr "ལྡེ་འཁོར་གསར་པའི་དོན་ལུ་ ཆོག་ཡིག་གདམ་ཁ་རྐྱབས།"
-
-#: ../daemon/gnome-keyring-daemon.c:635
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ ལྡེ་འཁོར་'%s'གི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:639
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' (%s)དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གྱི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:645
-#: ../daemon/gnome-keyring-daemon.c:655
-#, c-format
-msgid "The application '%s' wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ ལྡེ་འཁོར་'%s'གི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:649
-#: ../daemon/gnome-keyring-daemon.c:659
-#, c-format
-msgid "The application '%s' wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གྱི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:665
-#, c-format
-msgid "An unknown application wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ ལྡེ་འཁོར་'%sགི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ།"
-
-#: ../daemon/gnome-keyring-daemon.c:669
-msgid "An unknown application wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ སྔོན་སྒྲིག་ལྡེ་འཁོར་གྱི་དོན་ལུ་ ཆོག་ཡིག་སོར་དགོ་མནོཝ་ཨིན་མས། ཁྱོད་ཀྱིས་དེ་གི་དོན་ལུ་ ལག་ལེན་འཐབ་ནིའི་ཆོག་ཡིག་དེ་ གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:679
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "ལྡེ་འཁོར་'%s'གི་དོན་ལུ་ ཆོག་ཡིག་ཅིག་གདམ་ཁ་རྐྱབས།"
-
-#: ../daemon/gnome-keyring-daemon.c:681
-msgid "Choose a new password for the default keyring. "
-msgstr "སྔོན་སྒྲིག་ལྡེ་འཁོར་གྱི་དོན་ལུ་ ཆོག་ཡིག་གསརཔ་ཅིག་གདམ་ཁ་རྐྱབས།"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon.c:685
-msgid "Change Keyring Password"
-msgstr "ལྡེ་འཁོར་གྱི་ཆོག་ཡིག་སོར།"
-
-#: ../daemon/gnome-keyring-daemon.c:732
-#, c-format
-msgid "The application '%s' (%s) wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "གློག་རིམ་'%s' (%s) དེ་གིས་ ཆོག་ཡིག་ཅིག་ གསོག་འཇོག་འབད་ནི་འབདཝ་ད་ སྔོན་སྒྲིག་ལྡེ་འཁོར་མིན་འདུག གཅིག་གསར་བསྐྲུན་འབད་ནི་ལུ་ ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་འདོད་ཡོད་པའི་ ཆོག་ཡིག་དེ་གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:736
-#: ../daemon/gnome-keyring-daemon.c:740
-#, c-format
-msgid "The application '%s' wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "གློག་རིམ་'%s' དེ་གིས་ ཆོག་ཡིག་ཅིག་ གསོག་འཇོག་འབད་ནི་འབདཝ་ད་ སྔོན་སྒྲིག་ལྡེ་འཁོར་མིན་འདུག གཅིག་གསར་བསྐྲུན་འབད་ནི་ལུ་ ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་འདོད་ཡོད་པའི་ ཆོག་ཡིག་དེ་གདམ་ཁ་བརྐྱབ་དགོ"
-
-#: ../daemon/gnome-keyring-daemon.c:744
-msgid "An unknown application wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ ཆོག་ཡིག་ཅིག་ གསོག་འཇོག་འབད་ནི་འབདཝ་ད་ སྔོན་སྒྲིག་ལྡེ་འཁོར་མིན་འདུག གཅིག་གསར་བསྐྲུན་འབད་ནི་ལུ་ ཁྱོད་ཀྱིས་ལག་ལེན་འཐབ་འདོད་ཡོད་པའི་ ཆོག་ཡིག་དེ་གདམ་ཁ་བརྐྱབ་དགོ"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon.c:749
-msgid "Create Default Keyring"
-msgstr "སྔོན་སྒྲིག་ལྡེ་འཁོར་གསར་བསྐྲུན་འབད།"
-
-#: ../daemon/gnome-keyring-daemon.c:749
-msgid "Choose password for default keyring"
-msgstr "སྔོན་སྒྲིག་ལྡེ་འཁོར་གྱི་དོན་ལུ་ ཆོག་ཡིག་གདམ་ཁ་རྐྱབས།"
-
-#: ../ui/gkr-ask-tool.c:224
-msgid "_Old password:"
-msgstr "ཆོག་ཡིག་རྙིངམ་:(_P)"
-
-#: ../ui/gkr-ask-tool.c:247
-msgid "_Password:"
-msgstr "ཆོག་ཡིག་:(_P)"
-
-#: ../ui/gkr-ask-tool.c:272
-msgid "_Confirm password:"
-msgstr "ཆོག་ཡིག་གསརཔ་་ངེས་དཔྱད་འབད:(_C)"
-
-#: ../ui/gkr-ask-tool.c:291
-msgid "New password strength"
-msgstr "ཆོག་ཡིག་གསརཔ་གི་ཤུགས་ཚད"
-
-#: ../ui/gkr-ask-tool.c:311
-msgid "Old password cannot be blank."
-msgstr "ཆོག་ཡིག་རྙིངམ་སྟོངམ་བཏོན་མི་བཏུབ་པས།"
-
-#: ../ui/gkr-ask-tool.c:323
-msgid "Password cannot be blank."
-msgstr "ཆོག་ཡིག་སྟོངམ་སྦེ་མི་བཏུབ།"
-
-#: ../ui/gkr-ask-tool.c:332
-msgid "Passwords do not match."
-msgstr "ཆོག་ཡིག་མི་མཐུན་པས།"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "Deny"
-msgstr "ཉན་མི་བཏུབ་པས"
-
-#: ../ui/gkr-ask-tool.c:381
-msgid "Allow _Once"
-msgstr "ཐེངས་གཅིག་འབད་བཅུག(_O)"
-
-#: ../ui/gkr-ask-tool.c:385
-msgid "_Always Allow"
-msgstr "ཨ་རྟག་ར་འབད་བཅུག(_A)"
-
-#: ../ui/gkr-ask-tool.c:439
-msgid "Must be run from gnome-keyring\n"
-msgstr "ཇི་ནོམ་ལྡེ་འཁོར་ནང་ལས་གཡོག་བཀོལ་དགོ་\n"
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">ཆོག་ཡིག་སྟོབས་ཤུགས་མི་ཊར</span>"
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "གློག་རིམ་'%s' (%s)དེ་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ "
-#~ "ལྡེ་མིག་བརྐྱབས་ནུག"
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "གློག་རིམ་'%s' དེ་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ལྡེ་མིག་"
-#~ "བརྐྱབས་ནུག"
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ལུ་ འཛུལ་སྤྱོད་འབད་འདོད་བསྐྱེད་རུང་ ལྡེ་འཁོར་དེ་ལྡེ་"
-#~ "མིག་བརྐྱབས་ནུག"
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "གློག་རིམ་'%s' (%s) དེ་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ནང་ '%s' གི་དོན་ལས་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་"
-#~ "སྤྱོད་འབད་ནི་ཨིན་པས།"
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "གློག་རིམ་'%s' དེ་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ནང་'%s' གི་དོན་ལུ་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་འབད་ནི་"
-#~ "ཨིན་པས།"
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "མ་ཤེས་པའི་གློག་རིམ་ཅིག་གིས་ མ་ཤེས་པའི་ལྡེ་འཁོར་ཅིག་ནང་'%s' གི་དོན་ལས་ ཆོག་ཡིག་དེ་ལུ་ འཛུལ་སྤྱོད་"
-#~ "འབད་ནི་ཨིན་མས།"
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "ཁྱོད་ཀྱིས་གཡོག་བཀོལ་ནིའི་དོན་ལུ་ ཞུ་བའི་དབྱེ་བ་དེ་ གསལ་བཀོད་འབད་དགོ།\n"
-#~ msgid "Unknown request type\n"
-#~ msgstr "མ་ཤེས་པའི་ཞུ་བའི་དབྱེ་བ།\n"
-
diff --git a/po/el.po b/po/el.po
deleted file mode 100644
index 7e04e1b8..00000000
--- a/po/el.po
+++ /dev/null
@@ -1,667 +0,0 @@
-# translation of el.po to Greek
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) 2006 THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Kostas Papadimas <pkst@gnome.org>, 2004, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: el\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-10 12:20+0200\n"
-"PO-Revision-Date: 2008-03-10 12:20+0200\n"
-"Last-Translator: Kostas Papadimas <pkst@gnome.org>\n"
-"Language-Team: Greek <team@gnome.gr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Αφαιρούμενος δίσκος: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Αφαιρούμενος δίσκος"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Αρχικός κατάλογος"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Ο δίσκος ή η τοποθεσία που βρίσκεται το αρχείο λείπουν"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση στον κωδικό για το '<object "
-"prop='name'/>' στο προεπιλεγμένο keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση στον κωδικό για το '<object "
-"prop='name'/>' στο %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί πρόσβαση στον κωδικό για το '<object prop='name'/>' "
-"στο προεπιλεγμένο keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί πρόσβαση στον κωδικό για το '<object prop='name'/"
-">' στο %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση στον κωδικό για το '<object "
-"prop='name'/>' στο προεπιλεγμένο keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση στον κωδικό για το '<object "
-"prop='name'/>' στο %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Να γίνεται έλεγχος πρόσβασης"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Να επιτρέπεται στην εφαρμογή η πρόσβαση στο keyring?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Κωδικός ξεκλειδώματος για το keyring %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση στο προεπιλεγμένο keyring, αλλά είναι "
-"κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση στο keyring %s, αλλά είναι "
-"κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Η εφαρμογή %s επιθυμεί πρόσβαση στο προεπιλεγμένο keyring, αλλά είναι "
-"κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί πρόσβαση στο keyring %s, αλλά είναι κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση στο προεπιλεγμένο keyring, αλλά είναι "
-"κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση στο keyring '%s', αλλά είναι "
-"κλειδωμένο."
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Εισάγετε κωδικό για το προεπιλεγμένο keyring για ξεκλείδωμα"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Εισάγετε κωδικό για το keyring '%s' για ξεκλείδωμα"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Ξεκλείδωμα Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Αυτόματο ξεκλείδωμα αυτού του keyring στην είσοδο μου."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί να δημιουργήσει ένα νέο keyring με το όνομα '%"
-"s'. Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί να δημιουργήσει ένα νέο προεπιλεγμένο keyring. "
-"Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί να δημιουργήσει ένα νέο keyring με το όνομα '%s'. "
-"Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί να δημιουργήσει νέο προεπιλεγμένο keyring. Θα "
-"πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί να δημιουργήσει ένα νέο keyring με το όνομα '%"
-"s'. Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί να δημιουργήσει ένα νέο προεπιλεγμένο keyring. "
-"Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Νέος κωδικός Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Επιλέξτε κωδικό για το νέο keyring"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί να αλλάξει το κωδικό για το keyring '%s'. Θα "
-"πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί να να αλλάξει το κωδικό για το keyring. Θα "
-"πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί να αλλάξει το κωδικό για το keyring '%s'. Θα πρέπει "
-"να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί να αλλάξει το κωδικό για το προεπιλεγμένο keyring. "
-"Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί να αλλάξει το κωδικό για το keyring '%s'. Θα "
-"πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί να αλλάξει το κωδικό για το προεπιλεγμένο "
-"keyring. Θα πρέπει να επιλέξετε τον κωδικό που θέλετε να χρησιμοποιήσετε για "
-"αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Επιλέξτε νέο κωδικό για το keyring '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Επιλέξτε νέο κωδικό για το προεπιλεγμένο keyring"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Αλλαγή κωδικού Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Η εφαρμογή '%s' (%s) επιθυμεί να αποθηκεύσει ένα κωδικό αλλά δεν υπάρχει "
-"προεπιλεγμένο keyring. Για να δημιουργήσετε ένα, θα χρειαστεί να επιλέξετε "
-"ένα κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Η εφαρμογή '%s' επιθυμεί να αποθηκεύσει ένα κωδικό αλλά δεν υπάρχει "
-"προεπιλεγμένο keyring. Για να δημιουργήσετε ένα, θα χρειαστεί να επιλέξετε "
-"ένα κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Μια άγνωστη εφαρμογή επιθυμεί να αποθηκεύσει ένα κωδικό αλλά δεν υπάρχει "
-"προεπιλεγμένο keyring. Για να δημιουργήσετε ένα, θα χρειαστεί να επιλέξετε "
-"ένα κωδικό που θέλετε να χρησιμοποιήσετε για αυτό."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Δημιουργία προεπιλεγμένου keyring"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Επιλέξτε κωδικό για το προεπιλεγμένο keyring"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Αυτή η επιλογή ενεργοποιεί το PKCS#11 component στο gnome-keyring daemon. "
-"Πραγματοποιείται μόνο όταν ξεκινάει ο gnome-keyring-daemon, (δηλ. όταν ο "
-"χρήστης συνδέεται). Αυτή η ρύθμιση μπορεί να παρακαμθεί με συγκεκριμένες "
-"εντολές στην γραμμή εντολών στο daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Αυτή η επιλογή ενεργοποιεί τον SSH agent στο gnome-keyring daemon. "
-"Πραγματοποιείται μόνο όταν ξεκινάει ο gnome-keyring-daemon, (δηλ. όταν ο "
-"χρήστης συνδέεται). Αυτή η ρύθμιση μπορεί να παρακαμθεί με συγκεκριμένες "
-"εντολές στην γραμμή εντολών στο daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Αν θα είναι ενεργοποιημένο το gnome-keyring PKCS#11 component"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Αν ο gnome-keyring SSH agent θα είναι ενεργοποιημένος."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Άρνηση πρόσβασης"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Η εφαρμογή gnome-keyring-daemon δεν εκτελείται"
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Σφάλμα επικοινωνίας με gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Ένα keyring με αυτό το όνομα υπάρχει ήδη"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Σφάλμα προγραμματιστή: Η εφαρμογή έστειλε μη έγκυρα δεδομένα."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Δεν βρέθηκαν ταιριάσματα"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Δεν υπάρχει keyring με αυτό το όνομα"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Το keyring έχει ήδη ξεκλειδωθεί"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Ξεκλείδωμα Keyring εισόδου"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Εισαγωγή κωδικού ξεκλειδώματος για το keyring"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Το keyring εισόδου σας δεν ξεκλειδώθηκε αυτόματα όταν συνδεθήκατε σε αυτόν "
-"τον υπολογιστή"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Δημιουργία keyring εισόδου"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Εισάγετε το κωδικό εισόδου σας"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Το keyring εισόδου σας δεν δημιουργήθηκε αυτόματα όταν συνδεθήκατε σε αυτόν "
-"τον υπολογιστή. Θα δημιουργηθεί τώρα."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Ξεκλείδωμα ιδιωτικού κλειδιού"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Ξεκλείδωμα πιστοποιητικού"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Ξεκλείδωμα δημοσίου κλειδιού"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Ξεκλείδωμα"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Εισάγετε κωδικό για το ξεκλείδωμα του ιδιωτικού κλειδιού"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Εισάγετε κωδικό για το ξεκλείδωμα του πιστοποιητικού"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Εισάγετε κωδικό για το ξεκλείδωμα του δημόσιου κλειδιού"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Εισάγετε κωδικό για ξεκλείδωμα"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Αυτόματο ξεκλείδωμα αυτού του ιδιωτικού κλειδιού κατά την είσοδο."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Αυτόματο ξεκλείδωμα αυτού του πιστοποιητικού κατά την είσοδο."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Αυτόματο ξεκλείδωμα αυτού του δημόσιου κλειδιού κατά την είσοδο."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Αυτόματο ξεκλείδωμα αυτού στην είσοδο μου."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Μια εφαρμογή επιθυμεί πρόσβαση στο ιδιωτικό κλειδί '%s', αλλά είναι "
-"κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Μια εφαρμογή επιθυμεί πρόσβαση στο πιστοποιητικό '%s', αλλά είναι κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Μια εφαρμογή επιθυμεί πρόσβαση στο δημόσιο κλειδί '%s', αλλά είναι "
-"κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Μια εφαρμογή επιθυμεί πρόσβαση στο '%s', αλλά είναι κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"Το σύστημα επιθυμεί εισαγωγή του ιδιωτικού κλειδιού '%s', αλλά είναι "
-"κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"Το σύστημα επιθυμεί εισαγωγή του πιστοποιητικού '%s', αλλά είναι κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"Το σύστημα επιθυμεί εισαγωγή του δημόσιου κλειδιού '%s', αλλά είναι "
-"κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Το σύστημα επιθυμεί εισαγωγή του '%s', αλλά είναι κλειδωμένο."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Ξεκλείδωμα κωδικού για %s"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Μη αναγνωρίσιμο ή μη υποστηριζόμενο αρχείο."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Αδυναμία ανάλυσης μη έγκυρου ή κατεστραμμένου αρχείου."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Αποθήκευση κωδικών χωρίς κρυπτογράφηση;"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Αν επιλέξετε την χρήση ενός κενού κωδικού, δεν θα κρυπτογραφηθούν με "
-"ασφάλεια οι αποθηκευμένοι σας κωδικοί. Θα είναι προσβάσιμοι στον καθένα που "
-"έχει πρόσβαση στα αρχεία σας."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Χρήση μη ασφαλούς αποθήκευσης"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Τοποθεσία"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Παλιός κωδικός:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Κωδικός:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Επι_βεβαίωση κωδικού:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Ισχύς νέου κωδικού"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Οι κωδικοί δεν ταιριάζουν."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Ο κωδικός δεν πρέπει να είναι κενός"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Άρνηση"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Να επιτρέπεται μια _φορά"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Να επιτρέπεται πά_ντα"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Ο παλιός κωδικός δεν μπορεί να είναι κενός."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Μέτρηση ποιότητας κωδικού:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση σε ένα άγνωστο keyring, αλλά "
-#~ "είναι κλειδωμένο."
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Η εφαρμογή '%s' επιθυμεί πρόσβαση σε ένα άγνωστο keyring, αλλά είναι "
-#~ "κλειδωμένο."
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση σε ένα άγνωστο keyring, αλλά είναι "
-#~ "κλειδωμένο."
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Η εφαρμογή '%s' (%s) επιθυμεί πρόσβαση στον κωδικό για το '%s' σε ένα "
-#~ "άγνωστο keyring."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Η εφαρμογή '%s' επιθυμεί πρόσβαση στον κωδικό για το '%s' σε ένα άγνωστο "
-#~ "keyring."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Μια άγνωστη εφαρμογή επιθυμεί πρόσβαση στον κωδικό για το '%s' σε ένα "
-#~ "άγνωστο keyring."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Θα πρέπει να καθορίσετε τον τύπο της αίτησης για εκτέλεση\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Άγνωστος τύπος αίτησης\n"
diff --git a/po/en_CA.po b/po/en_CA.po
deleted file mode 100644
index dd709ba5..00000000
--- a/po/en_CA.po
+++ /dev/null
@@ -1,401 +0,0 @@
-# Canadian English translation of gnome-keyring
-# Copyright (C) Adam Weinberger and the GNOME Foundation
-# This file is distributed under the same licence as the gnome-keyring package.
-# Adam Weinberger <adamw@gnome.org>, 2004.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 0.1.90\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-08-15 15:20-0400\n"
-"PO-Revision-Date: 2005-01-14 23:42-0500\n"
-"Last-Translator: Adam Weinberger <adamw@gnome.org>\n"
-"Language-Team: Canadian English <adamw@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:290
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Removable Disk: %s"
-
-#: ../common/gkr-location.c:292
-msgid "Removable Disk"
-msgstr "Removable Disk"
-
-#: ../common/gkr-location.c:436
-msgid "Home"
-msgstr "Home"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gkr-daemon-ops.c:83
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Unlock password for %s keyring"
-
-#: ../daemon/gkr-daemon-ops.c:309
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-
-#: ../daemon/gkr-daemon-ops.c:312
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-
-#: ../daemon/gkr-daemon-ops.c:317 ../daemon/gkr-daemon-ops.c:325
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-
-#: ../daemon/gkr-daemon-ops.c:320 ../daemon/gkr-daemon-ops.c:328
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-
-#: ../daemon/gkr-daemon-ops.c:333
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-
-#: ../daemon/gkr-daemon-ops.c:335
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:341
-msgid "Allow access"
-msgstr "Allow access"
-
-#: ../daemon/gkr-daemon-ops.c:341
-msgid "Allow application access to keyring?"
-msgstr "Allow application access to keyring?"
-
-#: ../daemon/gkr-daemon-ops.c:439
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-
-#: ../daemon/gkr-daemon-ops.c:443
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:449 ../daemon/gkr-daemon-ops.c:459
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"The application '%s' wants access to the default keyring, but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:453 ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"The application '%s' wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:470
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"An unknown application wants access to the default keyring, but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:474
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:481
-msgid "Enter password for default keyring to unlock"
-msgstr "Enter password for default keyring to unlock"
-
-#: ../daemon/gkr-daemon-ops.c:483
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Enter password for keyring '%s' to unlock"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:487
-msgid "Unlock Keyring"
-msgstr "Unlock Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:499
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Automatically unlock this keyring when I log in."
-
-#: ../daemon/gkr-daemon-ops.c:535
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:539
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:545 ../daemon/gkr-daemon-ops.c:555
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:549 ../daemon/gkr-daemon-ops.c:559
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:565
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:569
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:575
-msgid "New Keyring Password"
-msgstr "New Keyring Password"
-
-#: ../daemon/gkr-daemon-ops.c:576
-msgid "Choose password for new keyring"
-msgstr "Choose password for new keyring"
-
-#: ../daemon/gkr-daemon-ops.c:623
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:627
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:633 ../daemon/gkr-daemon-ops.c:643
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:637 ../daemon/gkr-daemon-ops.c:647
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:653
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:657
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:667
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Choose a new password for the '%s' keyring. "
-
-#: ../daemon/gkr-daemon-ops.c:669
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Choose a new password for the default keyring. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:673
-msgid "Change Keyring Password"
-msgstr "Change Keyring Password"
-
-#: ../daemon/gkr-daemon-ops.c:740
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#: ../daemon/gkr-daemon-ops.c:744 ../daemon/gkr-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#: ../daemon/gkr-daemon-ops.c:752
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:757
-msgid "Create Default Keyring"
-msgstr "Create Default Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:757
-msgid "Choose password for default keyring"
-msgstr "Choose password for default keyring"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "Access Denied"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "The gnome-keyring-daemon application is not running."
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "The keyring has already been unlocked."
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Error communicating with gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "A keyring with that name already exists"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programming error: The application sent invalid data."
-
-#: ../ui/gkr-ask-tool.c:314
-msgid "_Location:"
-msgstr "_Location:"
-
-#: ../ui/gkr-ask-tool.c:327
-msgid "_Old password:"
-msgstr "_Old password:"
-
-#: ../ui/gkr-ask-tool.c:347
-msgid "_Password:"
-msgstr "_Password:"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "_Confirm password:"
-msgstr "_Confirm password:"
-
-#: ../ui/gkr-ask-tool.c:388
-msgid "New password strength"
-msgstr "New password strength"
-
-#: ../ui/gkr-ask-tool.c:444
-msgid "Old password cannot be blank."
-msgstr "Old password cannot be blank."
-
-#: ../ui/gkr-ask-tool.c:456
-msgid "Password cannot be blank."
-msgstr "Password cannot be blank."
-
-#: ../ui/gkr-ask-tool.c:465
-msgid "Passwords do not match."
-msgstr "Passwords do not match."
-
-#: ../ui/gkr-ask-tool.c:514
-msgid "Deny"
-msgstr "Deny"
-
-#: ../ui/gkr-ask-tool.c:526
-msgid "Allow _Once"
-msgstr "Allow _Once"
-
-#: ../ui/gkr-ask-tool.c:530
-msgid "_Always Allow"
-msgstr "_Always Allow"
diff --git a/po/en_GB.po b/po/en_GB.po
deleted file mode 100644
index a1e1d4ca..00000000
--- a/po/en_GB.po
+++ /dev/null
@@ -1,649 +0,0 @@
-# English (British) translation.
-# Copyright (C) 2004 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome-keyring package.
-# Gareth Owen <gowen72@yahoo.com>, 2004.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-02 17:27+0000\n"
-"PO-Revision-Date: 2008-03-02 17:30+0000\n"
-"Last-Translator: David Lodge <dave@cirt.net>\n"
-"Language-Team: <en@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Removable Disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Removable Disk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Home"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "The disk or drive this file is located on is not present"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Allow access"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Allow application access to keyring?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Unlock password for %s keyring"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"The application '%s' wants access to the default keyring, but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"The application '%s' wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"An unknown application wants access to the default keyring, but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Enter password for default keyring to unlock"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Enter password for keyring '%s' to unlock"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Unlock Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Automatically unlock this keyring when I log in."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "New Keyring Password"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Choose password for new keyring"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Choose a new password for the '%s' keyring. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Choose a new password for the default keyring. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Change Keyring Password"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Create Default Keyring"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Choose password for default keyring"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (i.e.: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Whether the gnome-keyring PKCS#11 component is enabled."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Whether the gnome-keyring SSH agent is enabled."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Access Denied"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "The gnome-keyring-daemon application is not running."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Error communicating with gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "A keyring with that name already exists"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmer error: The application sent invalid data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "No matching results"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "A keyring with that name does not exist."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "The keyring has already been unlocked."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Unlock Login Keyring"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Enter login password to unlock keyring"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Create Login Keyring"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Enter your login password"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Unlock private key"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Unlock certificate"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Unlock public key"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Unlock"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Enter password to unlock the private key"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Enter password to unlock the certificate"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Enter password to unlock the public key"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Enter password to unlock"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Automatically unlock this private key when I log in."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Automatically unlock this certificate when I log in."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Automatically unlock this public key when I log in."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Automatically unlock this when I log in"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "An application wants access to the private key '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "An application wants access to the certificate '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "An application wants access to the public key '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "An application wants access to '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "The system wants to import the private key '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "The system wants to import the certificate '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "The system wants to import the public key '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "The system wants to import '%s', but it is locked"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Unlock password for '%s'"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Unrecognised or unsupported file."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Could not parse invalid or corrupted file."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Store passwords unencrypted?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Use Unsafe Storage"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Location:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Old password:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Password:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirm password:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "New password strength"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Passwords do not match."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Password cannot be blank"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Deny"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Allow _Once"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Always Allow"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Old password cannot be blank."
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "You must specify the type of request to run\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Unknown request type\n"
diff --git a/po/es.po b/po/es.po
deleted file mode 100644
index f6df2553..00000000
--- a/po/es.po
+++ /dev/null
@@ -1,601 +0,0 @@
-# translation of gnome-keyring.HEAD.po to Español
-# Translation of gnome-keyring to Spanish.
-# This file is distributed under the same license as the gnome-keyring package.
-# Copyright (C) 2006 The Free Software Foundation.
-#
-# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2003, 2004, 2006.
-# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-15 10:56+0000\n"
-"PO-Revision-Date: 2008-03-02 17:00+0100\n"
-"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
-"Language-Team: Español <gnome-es-list@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disco extraíble: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disco extraíble"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Inicio"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "El disco o la unidad en la que está ubicado este archivo no está presente"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"La aplicación «%s» (%s) quiere acceder a la contraseña para «<object "
-"prop='name'/>» en el depósito de claves predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"La aplicación «%s» (%s) quiere acceder a la contraseña para «<object "
-"prop='name'/>» en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"La aplicación «%s» quiere acceder a la contraseña para «<object prop='name'/"
-">» en el depósito predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"La aplicación «%s» quiere acceder a la contraseña para «<object prop='name'/"
-">» en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Una aplicación desconocida quiere acceder a la contraseña para «<object "
-"prop='name'/>» en el depósito de claves predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Una aplicación desconocida quiere acceder a la contraseña para «<object "
-"prop='name'/>» en %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Permitir acceso"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "¿Permitir a la aplicación acceder al depósito?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Contraseña de desbloqueo para el depósito de claves %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"La aplicación «%s» (%s) quiere acceder al depósito de claves predeterminado, "
-"pero está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"La aplicación «%s» (%s) quiere acceder al depósito de claves «%s», pero está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"La aplicación «%s» quiere acceder al depósito de claves predeterminado, "
-"pero está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"La aplicación «%s» quiere acceder al depósito de claves «%s», pero está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Una aplicación desconocida quiere acceder al depósito de claves "
-"predeterminado, pero está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Una aplicación desconocida quiere acceder al depósito de claves «%s», pero "
-"está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Introduzca la contraseña para desbloquear el depósito predeterminado"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Introduzca la contraseña para desbloquear el depósito «%s»"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Desbloquear depósito"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Desbloquear este depósito de claves automáticamente al iniciar sesión."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» (%s) quiere crear un depósito de claves nuevo llamado «%"
-"s». Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» (%s) quiere crear un depósito de claves predeterminado "
-"nuevo. Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» quiere crear un depósito de claves nuevo llamado «%s». "
-"Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» quiere crear un depósito de claves predeterminado nuevo. "
-"Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Una aplicación desconocida quiere crear un depósito de claves nuevo llamado "
-"«%s». Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Una aplicación desconocida quiere crear un depósito de claves predeterminado "
-"nuevo. Tiene que elegir la contraseña que quiere usar con él."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Contraseña nueva del depósito"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Elija la contraseña para el depósito"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» (%s) quiere cambiar la contraseña para el depósito de "
-"claves «%s». Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» (%s) quiere cambiar la contraseña para el depósito de "
-"claves predeterminado. Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» quiere cambiar la contraseña para el depósito de claves «%"
-"s». Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"La aplicación «%s» quiere cambiar la contraseña para el depósito de claves "
-"predeterminado. Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Una aplicación desconocida quiere cambiar la contraseña para el depósito de "
-"claves «%s».Tiene que elegir la contraseña que quiere usar con él."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Una aplicación desconocida quiere cambiar la contraseña del depósito de "
-"claves predeterminado nuevo. Tiene que elegir la contraseña que quiere usar "
-"con él."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Elija una contraseña nueva para el depósito «%s»."
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Elija una contraseña nueva para el depósito de claves predeterminado. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Cambia la contraseña del depósito"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"La aplicación «%s» (%s) desea almacenar una contraseña, pero no hay un "
-"depósito de claves predeterminado. Para crear uno debe elegir la contraseña "
-"que quiere usar en él."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"La aplicación %s desea almacenar una contraseña, pero no hay un depósito de "
-"claves predeterminado. Para crear uno debe elegir la contraseña que quiere "
-"usar en él."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Una aplicación desconocida desea almacenar una contraseña, pero no hay un "
-"depósito de claves predeterminado. Para crear uno debe elegir la contraseña "
-"que quiere usar en él."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Crear depósito predeterminado"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Elija una contraseña para el depósito de claves predeterminado"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Esta opción activa el componente PKCS#11 en el demonio del Depósito de "
-"claves. Sólo toma efecto cuando se inicia gnome-keyring-daemon, (ej: cuando "
-"el usuario entra en el sistema). Este ajuste se puede sobreescribir al pasar "
-"ciertos parámetros al demonio a través de la línea de comandos."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Esta opción activa el agente SSH en el demonio del Depósito de claves. Sólo "
-"toma efecto cuando se inicia gnome-keyring-daemon, (ej: cuando el usuario "
-"entra en el sistema). Este ajuste se puede sobreescribir al pasar ciertos "
-"parámetros al demonio a traes de la línea de comandos."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Indica si el componente PKCS#11 del depósito de claves está activado."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Indica si el agente SSH del depósito de claves está activado."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Acceso denegado"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "La aplicación gnome-keyring-daemon no se está ejecutando."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Error al comunicarse con gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Ya existe un depósito de claves con ese nombre"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Error de programación: La aplicación envió datos no válidos."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "No se encontró ningún resultado coincidente"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "No existe un depósito de claves con ese nombre."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "El depósito de claves ya se ha desbloqueado."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Desbloquear el depósito de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Introduzca la contraseña de inicio para desbloquear el depósito"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Al iniciar sesión en este equipo no se creó automáticamente su depósito de "
-"inicio."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Crear depósito de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Introduzca su contraseña de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Al iniciar sesión en este equipo no se creó automáticamente su depósito de "
-"inicio. Se creará ahora."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Desbloquear la clave privada"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Desbloquear el certificado"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Desbloquear la clave pública"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Desbloquear"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Introduzca la contraseña para desbloquear la clave privada"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Introduzca la contraseña para desbloquear el certificado"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Introduzca la contraseña para desbloquear la clave pública"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Introduzca la contraseña para desbloquearlo"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Desbloquear esta clave privada automáticamente al iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Desbloquear este certificado automáticamente al iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Desbloquear esta clave pública automáticamente al iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Desbloquear esto automáticamente al iniciar sesión"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Una aplicación quiere acceder a la clave privada «%s», pero está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Una aplicación quiere acceder al certificado «%s», pero está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Una aplicación quiere acceder a la clave pública «%s», pero está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Una aplicación quiere acceder «%s», pero está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "El sistema quiere importar la clave privada «%s», pero está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "El sistema quiere importar el certificado «%s», pero está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "El sistema quiere importar la clave privada «%s», pero está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "El sistema quiere importar «%s», pero está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Desbloquear contraseña para «%s»"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Archivo no reconocido o no soportado."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "No se pudo analizar el archivo inválido o corrupto."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "¿Almacenar sus contraseñan sin cifrarlas?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Al elegir usar una contraseña en blanco, sus contraseñas almacenadas no "
-"estarán cifradas de forma segura. Serán accesibles por cualquiera que tenga "
-"acceso a sus archivos."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Usar almacenamiento inseguro"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Lugar:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "Contraseña _antigua:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Contraseña:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Con_firmar contraseña:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Fortaleza de la nueva contraseña"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Las contraseñas no coinciden."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "La contraseña no puede estar vacía"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Denegar"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Permitir _una vez"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Permitir _siempre"
-
diff --git a/po/et.po b/po/et.po
deleted file mode 100644
index cdd97958..00000000
--- a/po/et.po
+++ /dev/null
@@ -1,597 +0,0 @@
-# GNOME võtmerõnga eesti keele tõlge.
-# Estonian translation of GNOME-keyring.
-#
-# Copyright (C) 2005, 2006 Free Software Foundation, Inc.
-# Copyright (C) 2007, 2008 The GNOME Project.
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Ivar Smolin <okul@linux.ee>, 2005-2008.
-# Priit Laes <amd@store20.com>, 2005, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-14 23:37+0000\n"
-"PO-Revision-Date: 2008-03-04 18:11+0200\n"
-"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
-"Language-Team: Estonian <gnome-et@linux.ee>\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"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Eemaldatav ketas: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Eemaldatav ketas"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Kodu"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:497 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Selle faili asukohaks määratud ketas või seade pole kättesaadav"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Rakendus '%s' (%s) soovib '<object prop='name'/>' jaoks kasutada parooli, "
-"mis asub vaikimisi võtmerõngas."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Rakendus '%s' (%s) soovib '<object prop='name'/>' jaoks kasutada parooli, "
-"mis asub võtmerõngas %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Rakendus '%s' soovib '<object prop='name'/>' jaoks kasutada vaikimisi "
-"võtmerõngas asuvat parooli."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Rakendus '%s' soovib '<object prop='name'/>' jaoks kasutada võtmerõngas %s "
-"asuvat parooli."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Tundmatu rakendus soovib '<object prop='name'/>' jaoks kasutada vaikimisi "
-"võtmerõngas asuvat parooli."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Tundmatu rakendus soovib '<object prop='name'/>' jaoks kasutada võtmerõngas %"
-"s asuvat parooli."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Ligipääsu lubamine"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Kas lubada rakendusel võtmerõngale ligi pääseda?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Võtmerõnga %s lukust lahtivõtmise parool"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Rakendus '%s' (%s) tahab kasutada vaikimisi võtmerõngast, kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Rakendus '%s' (%s) tahab kasutada võtmerõngast '%s', kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Rakendus '%s' tahab kasutada vaikimisi võtmerõngast, kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Rakendus '%s' tahab kasutada võtmerõngast '%s', kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Tundmatu rakendus tahab kasutada vaikimisi võtmerõngast, kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Tundmatu rakendus tahab kasutada võtmerõngast '%s', kuid see on lukus"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Sisesta parool vaikimisi võtmerõnga avamiseks"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Sisesta parool võtmerõnga '%s' avamiseks"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Võtmerõnga avamine"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Võtmerõngas võetakse sisselogimisel automaatselt lukust lahti."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' (%s) tahab luua uut võtmerõngast nimega '%s'. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' (%s) tahab luua uut vaikimisi võtmerõngast. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' tahab luua uut võtmerõngast nimega '%s'. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' tahab luua uut vaikimisi võtmerõngast. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Tundmatu rakendus tahab luua uut võtmerõngast nimega '%s'. Kui sa tahad seda "
-"võtmerõngast kasutada, siis pead sa selle jaoks parooli määrama."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Tundmatu rakendus tahab luua uut vaikimisi võtmerõngast. Kui sa tahad seda "
-"võtmerõngast kasutada, siis pead sa selle jaoks parooli määrama."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Uue võtmerõnga parool"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Sisesta uue võtmerõnga parool"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' (%s) tahab muuta võtmerõnga '%s' parooli. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' (%s) tahab muuta vaikimisi võtmerõnga parooli. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' tahab muuta võtmerõnga '%s' parooli. Sa pead selle võtmerõnga "
-"jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Rakendus '%s' tahab muuta vaikimisi võtmerõnga parooli. Sa pead selle "
-"võtmerõnga jaoks parooli sisestama."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Tundmatu rakendus tahab muuta võtmerõnga '%s' parooli. Kui sa tahad seda "
-"võtmerõngast kasutada, siis pead sa selle jaoks parooli määrama."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Tundmatu rakendus tahab muuta vaikimisi võtmerõnga parooli. Kui sa tahad "
-"seda võtmerõngast kasutada, siis pead sa selle jaoks parooli määrama."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Sisesta uus parool võtmerõngale '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Sisesta uus parool vaikimisi võtmerõngale."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Võtmerõnga parooli vahetamine"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Rakendus '%s' (%s) soovib salvestada parooli aga siin pole vaikimisi "
-"võtmerõngast. Rõnga loomiseks pead sa sellele parooli valima."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Rakendus '%s' soovib salvestada parooli aga siin pole vaikimisi "
-"võtmerõngast. Rõnga loomiseks pead sa sellele parooli valima."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Tundmatu rakendus soovib salvestada parooli aga siin pole vaikimisi "
-"võtmerõngast. Rõnga loomiseks pead sa sellele parooli valima."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Vaikimisi võtmerõnga loomine"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Sisesta vaikimisi võtmerõnga parool"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Selle võtme abil on võimalik lubada või keelata GNOME võtmerõnga deemonis "
-"PKCS#11 komponenti. See mõjub ainult gnome-keyring-daemon'i käivitamisel, "
-"(ehk siis, kui kasutaja sisse logib). Seda sätet on võimalik mõnede "
-"deemonile antud käsureaargumentidega eirata."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Selle võtme abil on võimalik lubada või keelata GNOME võtmerõnga deemonis "
-"SSH komponenti. See mõjub ainult gnome-keyring-daemon'i käivitamisel, (ehk "
-"siis, kui kasutaja sisse logib). Seda sätet on võimalik mõnede deemonile "
-"antud käsureaargumentidega eirata."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Kas gnome võtmerõnga PKCS#11 komponent on lubatud või mitte."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Kas gnome võtmerõnga SSH komponent on lubatud või mitte."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Ligipääs keelatud"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Rakendus gnome-keyring-daemon ei tööta."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Viga rakenduseg gnome-keyring-daemon suhtlemisel"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Selle nimega võtmerõngas on juba olemas"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmeerija viga: Rakendus saatis vigased andmed."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Vastavusi pole"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Selle nimega võtmerõngast pole olemas."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Võtmerõngas on juba lukust lahti võetud."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Sisselogimise võtmerõnga lukust lahtivõtmine"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Võtmerõnga lukust lahtivõtmiseks sisesta sisselogimise parool "
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Sinu sisselogimise võtmerõngast ei võetud automaatselt lukust lahti, kui sa "
-"sellesse arvutisse sisse logisid."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Sisselogimise võtmerõnga loomine"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Sisesta oma sisselogimise parool"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Sinu sisselogimise võtmerõngast ei loodud, kui sa sellesse arvutisse sisse "
-"logisid. See luuakse nüüd."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Võta salajane võti lukust lahti"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Võta sertifikaat lukust lahti"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Võta avalik võti lukust lahti"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Võta lukust lahti"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Sisesta salajase võtme lukust lahtivõtmise parool"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Sisesta sertifikaadi lukust lahtivõtmise parool"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Sisesta avaliku võtme lukust lahtivõtmise parool"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Sisesta lukust lahtivõtmise parool"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr ""
-"See salajane võti võetakse minu sisselogimisel automaatselt lukust lahti."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr ""
-"See sertifikaat võetakse minu sisselogimisel automaatselt lukust lahti."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr ""
-"See avalik võti võetakse minu sisselogimisel automaatselt lukust lahti."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr ""
-"See võetakse minu sisselogimisel automaatselt lukust lahti."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Rakendus tahab kasutada salajast võtit '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Rakendus tahab kasutada sertifikaati '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Rakendus tahab kasutada avalikku võtit '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Rakendus tahab kasutada '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Süsteem tahab importida salajast võtit '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Süsteem tahab importida sertifikaati '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Süsteem tahab importida avalikku võtit '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Süsteem tahab importida '%s', kuid see on lukus"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Lukust lahtivõtmise parool '%s' jaoks"
-
-#: ../pkix/gkr-pkix-parser.c:428
-msgid "Unrecognized or unsupported file."
-msgstr "Arusaamatu või toetamata fail."
-
-#: ../pkix/gkr-pkix-parser.c:432
-msgid "Could not parse invalid or corrupted file."
-msgstr "Vigast või rikutud faili pole võimalik analüüsida."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Kas salvestada paroolid krüptimata kujul?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Tühja parooli valimise korral pole sul võimalik salvestatud paroole ohtult "
-"kaitsta. Need jäävad avatuks igaühele, kel on sinu failidele ligipääs."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Kasuta mitteohutut hoidlat"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Asukoht:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Vana parool:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Parool:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Parooli _kinnitus:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Uue parooli tugevus"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Paroolid pole vastavuses."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Parool ei tohi olla tühi"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Keela"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Luba ainult _seekord"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Luba _alati"
diff --git a/po/eu.po b/po/eu.po
deleted file mode 100644
index 61e3ef16..00000000
--- a/po/eu.po
+++ /dev/null
@@ -1,593 +0,0 @@
-# translation of eu.po to Basque
-# translation of gnome-keyring.HEAD.po to Basque
-# Copyright (C) 2004 THE eu'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the eu package.
-#
-# Alberto Fernández <afernn@euskalnet.net>, 2004.
-# Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>, 2004, 2006, 2008.
-# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: eu\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-16 16:38+0100\n"
-"PO-Revision-Date: 2008-02-16 16:45+0100\n"
-"Last-Translator: Iñaki Larrañaga Murgoitio <dooteo@euskalgnu.org>\n"
-"Language-Team: Basque <itzulpena@euskalgnu.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disko aldagarria: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disko aldagarria"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Etxea"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Fitxategia kokatuta dagoen diskoa edo unitatea ez dago"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"'%s' (%s) aplikazioak '<object prop='name'/>'(r)en pasahitza atzitu nahi du "
-"gako-sorta lehentsian."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"'%s' (%s) aplikazioak '<object prop='name'/>'(r)en pasahitza atzitu nahi du %"
-"s-(e)an."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"'%s' aplikazioak '<object prop='name'/>'(r)en pasahitza atzitu nahi du gako-"
-"sorta lehentsian."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"'%s' aplikazioak '<object prop='name'/>'(r)en pasahitza atzitu nahi du %s(e)"
-"an."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Aplikazio ezezagun batek '<object prop='name'/>'(r)en pasahitza atzitu nahi "
-"du gako-sorta lehentsian."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Aplikazio ezezagun batek '<object prop='name'/>'(r)en pasahitza atzitu nahi "
-"du %s(e)an."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Baimendu atzipena"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Baimendu aplikazioa gako-sorta atzi dezan?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Desblokeatu %s gako-sortaren pasahitza"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) aplikazioak gako-sorta lehentsia atzitu nahi du, baina blokeatuta "
-"dago"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "'%s' (%s) aplikazioak '%s' gako-sorta atzitu nahi du, baina blokeatuta dago"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "'%s' aplikazioak gako-sorta lehentsia atzitu nahi du, baina blokeatuta dago"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "'%s' aplikazioak '%s' gako-sorta atzitu nahi du, baina blokeatuta dago"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikazio ezezagun batek gako-sorta lehentsia atzitu nahi du, baina "
-"blokeatuta dago"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikazio ezezagun batek '%s' gako-sorta atzitu nahi du, baina blokeatuta "
-"dago"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Idatzi pasahitza, gako-sorta lehentsia desblokeatzeko"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Idatzi pasahitza, '%s' gako-sorta desblokeatzeko"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Desblokeatu gako-sorta"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Desblokeatu automatikoki gako-sorta saioa hastean."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) aplikazioak '%s' izeneko gako-sorta berria sortu nahi du. Erabili "
-"nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) aplikazioak gako-sorta lehentsi berria sortu nahi du. Erabili nahi "
-"duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' aplikazioak '%s' izeneko gako-sorta berria sortu nahi du. Erabili nahi "
-"duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' aplikazioak gako-sorta lehentsi berria sortu nahi du. Erabili nahi "
-"duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Aplikazio ezezagun batek '%s' izeneko gako-sorta berria sortu nahi du. "
-"Erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikazio ezezagun batek gako-sorta lehentsi berria sortu nahi du. Erabili "
-"nahi duzun pasahitza aukeratu behar duzu."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Gako-sorta berriaren pasahitza"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Aukeratu gako-sorta berriaren pasahitza"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) aplikazioak '%s' gako-sortaren pasahitza aldatzea nahi du. Erabili "
-"nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) aplikazioak gako-sorta lehentsiaren pasahitza aldatzea nahi du. "
-"Erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' aplikazioak '%s' gako-sortaren pasahitza aldatzea nahi du. Erabili nahi "
-"duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' aplikazioak gako-sorta lehentsiaren pasahitza aldatzea nahi du. Erabili "
-"nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikazio ezezagun batek '%s' gako-sortaren pasahitza aldatzea nahi du. "
-"Erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikazio ezezagun batek gako-sorta lehentsiaren pasahitza aldatzea nahi du. "
-"Erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Aukeratu '%s' gako-sortaren pasahitz berria. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Aukeratu gako-sorta lehentsiaren pasahitz berria. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Aldatu gako-sortaren pasahitza"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) aplikazioak pasahitz bat gorde nahi du, baina ez dago gako-sorta "
-"lehenetsirik. Bat sortzeko, erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' aplikazioak pasahitz bat gorde nahi du, baina ez dago gako-sorta "
-"lehentsirik. Bat sortzeko, erabili nahi duzun pasahitza aukeratu behar duzu."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikazio ezezagun batek pasahitz bat gorde nahi du, baina ez dago gako-"
-"sorta lehentsirik. Bat sortzeko, erabili nahi duzun pasahitza aukeratu behar "
-"du."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Sortu gako-sorta lehentsia"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Aukeratu gako-sorta lehentsiaren pasahitza"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Aukera honek PKCS#11 osagaia gaitzen du gnome-keyring daemonean. gnome-"
-"keyring-daemon abiaraztean soilik hartzen da eragina (adib. erabiltzaileak "
-"saioa hastean). Ezarpen hau gainidatzi egingo da komando-lerroko argumentu "
-"batzuk daemonari ematean."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Aukera honek SSH agentea gaitzen du gnome-keyring daemonean. gnome-keyring-"
-"daemon abiaraztean soilik hartzen da eragina (adib. erabiltzaileak saioa "
-"hastean). Ezarpen hau gainidatzi egingo da komando-lerroko argumentu batzuk "
-"daemonari ematean."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "'Gnome-keyring'-en PKCS#11 osagaia gaitu behar den ala ez."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "'Gnome-keyring'-en SSH agentea gaitu behar den ala ez."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Sarbidea ukatuta"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon aplikazioa ez da exekutatzen ari."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Errorea gnome-keyring-daemon programarekin komunikatzean"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Izen bereko gako-sorta badago lehendik ere"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programatzailearen errorea: aplikazioak baliogabe datuak bidali ditu."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Ez dago bat datorren emaitzik"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Ez dago izen horretako gako-sortarik."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Gako-sorta jadanik desblokeatuta dago."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Desblokeatu saioaren gako-sorta"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Sartu saio-hasierako pasahitza gako-sorta desblokeatzeko"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Zure saioaren gako-sorta ez da automatikoki desblokeatu (ordenagailuan saioa "
-"hastean)."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Sortu saioaren gako-sorta"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Idatzi saioaren pasahitza"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Zure saioaren gako-sorta ez da automatikoki sortu ordenagailuan saioa "
-"hastean. Oraintxe sortuko da."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Desblokeatu gako pribatua"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Desblokeatu ziurtagiria"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Desblokeatu gako publikoa"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Desblokeatu"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Idatzi pasahitza gako pribatua desblokeatzeko"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Idatzi pasahitza ziurtagiria desblokeatzeko"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Idatzi pasahitza gako publikoa desblokeatzeko"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Idatzi pasahitza desblokeatzeko"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Desblokeatu automatikoki gako pribatu hau saioa hastean."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Desblokeatu automatikoki ziurtagiri hau saioa hastean."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Desblokeatu automatikoki gako publiko hau saioa hastean."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Desblokeatu automatikoki saioa hastean."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Aplikazio batek '%s' gako pribatua atzitu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Aplikazio batek '%s' ziurtagiria atzitu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Aplikazio batek '%s' gako publikoa atzitu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Aplikazio batek '%s' atzitu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Sistemak '%s' gako pribatua inportatu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Sistemak '%s' ziurtagiria inportatu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Sistemak '%s' gako publikoa inportatu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Sistemak '%s' inportatu nahi du, baina blokeatuta dago"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Desblokeatu %s(r)en pasahitza"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Fitxategi ezezaguna edo onartu gabea."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Ezin izan da hondatutako edo baliogabea den fitxategia."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Gorde pasahitzak enkriptatu gabe?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Pasahitz hutsa erabiltzea aukeratzean, gordetako pasahitzak ez dira "
-"segurtasunez enkriptatuko. Zure fitxategiak atzitu ditzakeen edonork "
-"pasahitz hauek atzi ditzake."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Erabili segurtasun gabeko biltegia"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Kokalekua:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Pasahitz zaharra:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Pasahitza:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Berretsi pasahitza:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Pasahitz berriaren indarra"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Pasahitzak ez datoz bat"
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Pasahitza ezin da hutsa izan"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Ukatu"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Baimend_u behin"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "B_aimendu beti"
-
diff --git a/po/fa.po b/po/fa.po
deleted file mode 100644
index a6c7a4f1..00000000
--- a/po/fa.po
+++ /dev/null
@@ -1,402 +0,0 @@
-# Persian translation of gnome-keyring.
-# Copyright (C) 2004 Sharif FarsiWeb, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Meelad Zakaria <meelad@bamdad.org>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-10-11 13:30+0330\n"
-"Last-Translator: Meelad Zakaria <meelad@bamdad.org>\n"
-"Language-Team: Persian <farsi@lists.sahrif.edu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد به جاکلیدی پیش‌فرض دسترسی پیدا کند، ولی جاکلیدی "
-"بسته است"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد به جاکلیدی '%s' دسترسی پیدا کند، ولی جاکلیدی بسته "
-"است"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد به یک جاکلیدی ناشناخته دسترسی پیدا کند، ولی "
-"جاکلیدی بسته است"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد به جاکلیدی پیش‌فرض دسترسی پیدا کند، ولی جاکلیدی بسته است"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد به جاکلیدی '%s' دسترسی پیدا کند، ولی جاکلیدی بسته است"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد به یک جاکلیدی ناشناخته دسترسی پیدا کند، ولی جاکلیدی قفل "
-"است"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد به جاکلیدی پیش‌فرض دسترسی پیدا کند، ولی جاکلیدی "
-"پسته است"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد به جاکلیدی '%s' دسترسی پیدا کند، ولی جاکلیدی "
-"بسته است"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد به یک جاکلیدی ناشناخته دسترسی پیدا کند، ولی "
-"جاکلیدی پسته است"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "کلمه‌ی عبور جاکلیدی پیش‌فرض را وارد کنید"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "کلمه‌ی عبور برای باز کردن جاکلیدی '%s' را وارد کنید"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "باز کردن جاکلیدی"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "اـنکار"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی %s (%s) می‌خواهد یک جاکلیدی جدید به نام '%s' ایجاد کند. شما باید "
-"کلمه‌ی عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد جاکلیدی جدیدی به نام '%s' ایجاد کند. شما باید کلمه‌ی "
-"عبور را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی عبوری "
-"را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد یک جاکلیدی جدید به منام '%s' ایجاد کند. شما باید "
-"کلمه‌ی عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "کلمه‌ی عبور جاکلیدی جدید"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "کلمه‌ی عبور جاکلیدی جدید را انتخاب کنید"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی عبوری "
-"را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی عبوری "
-"را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد یک جاکلیدی پیش‌فرض جدید ایجاد کند. شما باید کلمه‌ی "
-"عبوری را که می‌خواهید برای آن به کار برید انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "کلمه‌ی عبور جاکلیدی جدید را انتخاب کنید"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "کلمه‌ی عبوری برای جاکلیدی پیش‌فرض انتخاب کنید"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "کلمه‌ی عبور جاکلیدی جدید"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد یک کلمه‌ی عبور را حفظ کند، ولی جاکلیدی پیش‌فرضی وجود "
-"ندارد. برای ایجاد یک جاکلیدی پیش‌فرض، لازم است کلمه‌ی عبوری برای آن انتخاب "
-"کنید."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد یک کلمه‌ی عبور را حفظ کند، ولی جاکلیدی پیش‌فرضی وجود "
-"ندارد. برای ایجاد یک جاکلیدی پیش‌فرض، لازم است کلمه‌ی عبوری برای آن انتخاب "
-"کنید."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد یک کلمه‌ی عبور را حفظ کند، ولی جاکلیدی پیش‌فرضی "
-"وجود ندارد. برای ایجاد یک جاکلیدی پیش‌فرض، لازم است کلمه‌ی عبوری برای آن "
-"انتخاب کنید."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "ایجاد جاکلیدی پیش‌فرض"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "کلمه‌ی عبوری برای جاکلیدی پیش‌فرض انتخاب کنید"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "برنامه‌ها مجاز به دسترسی به جاکلیدی باشند؟"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "برنامه‌ی '%s' (%s) می‌خواهد به کلمه‌ی عبور '%s' در '%s' دسترسی پیدا کند."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد به کلمه‌ی عبور '%s' در جاکلیدی پیش‌فرض دسترسی پیدا "
-"کند."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"برنامه‌ی '%s' (%s) می‌خواهد به کلمه‌ی عبور '%s' در یک جاکلیدی ناشناخته دسترسی "
-"پیدا کند."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "برنامه‌ی '%s' می‌خواهد به کلمه‌ی عبور '%s' در '%s' دسترسی پیدا کند."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"برنامه‌ی '%s'می‌خواهد به کلمه‌ی عبور '%s' در جاکلیدی پیش‌فرض دسترسی پیدا کند."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"برنامه‌ی '%s' می‌خواهد به کلمه‌ی عبور '%s' در یک جاکلیدی ناشناخته دسترسی پیدا "
-"کند."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "یک برنامه‌ی ناشناخته می‌خواهد به کلمه‌ی عبور '%s' در %s دسترسی پیدا کند."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد به کلمه‌ی عبور '%s' در جاکلیدی پیش‌فرض دسترسی پیدا "
-"کند."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"یک برنامه‌ی ناشناخته می‌خواهد به کلمه‌ی عبور '%s' در یک جاکلیدی ناشناخته دسترسی "
-"پیدا کند."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "اجازه‌ی دسترسی"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "اجازه برای یک بار"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "اجازه برای همیشه"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "باید مشخص کنید چه نوع درخواستی اجرا شود\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "نوع درخواست ناشناخته است\n"
diff --git a/po/fi.po b/po/fi.po
deleted file mode 100644
index 030d3c9b..00000000
--- a/po/fi.po
+++ /dev/null
@@ -1,615 +0,0 @@
-# Finnish translation for gnome-keyring
-# Copyright (C) 2004-2005 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Tommi Vainikainen <Tommi.Vainikainen@iki.fi>, 2004-2006.
-# Ilkka Tuohela <hile@iki.fi>, 2005-2006.
-# Timo Jyrinki <timo.jyrinki@iki.fi>, 2008.
-#
-# Sanastoa:
-# keyring = avainnippu
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-16 09:10+0300\n"
-"PO-Revision-Date: 2008-02-29 12:34+0200\n"
-"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
-"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\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 ? 0 : 1;\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Irrotettava levy: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Irrotettava levy"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Koti"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Levy tai asema, jossa tämä tiedosto on, ei ole saatavilla"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo päästä käsiksi kohteeseen '<object prop='name'/"
-">' oletusavainnipussa."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo päästä käsiksi kohteeseen '<object prop='name'/"
-">' avainnipussa %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Sovellus \"%s\" tahtoo päästä käsiksi kohteeseen '<object prop='name'/>' "
-"oletusavainnipussa."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Sovellus \"%s\" tahtoo päästä käsiksi kohteeseen '<object prop='name'/>' "
-"avainnipussa %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Tuntematon sovellus tahtoo päästä käsiksi kohteeseen '<object prop='name'/>' "
-"oletusavainnipussa."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Tuntematon sovellus tahtoo päästä käsiksi kohteeseen '<object prop='name'/>' "
-"avainnipussa %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Salli päästä käsiksi"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Salli sovelluksien päästä käsiksi avainnippuun?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Avainrenkaan %s avaava salasana"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo päästä käsiksi oletusavainnippuun, mutta "
-"avainnippu on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo päästä käsiksi avainnippuun \"%s\", mutta "
-"avainnippu on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Sovellus \"%s\" tahtoo päästä käsiksi oletusavainnippuun, mutta avainnippu "
-"on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Sovellus \"%s\" tahtoo päästä käsiksi avainnippuun \"%s\", mutta avainnippu "
-"on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Tuntematon sovellus tahtoo päästä käsiksi oletusavainnippuun, mutta "
-"avainnippu on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Tuntematon sovellus tahtoo päästä käsiksi avainnippuun \"%s\", mutta "
-"avainnippu on lukittu"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Avaa oletusavainnipun lukitus syöttämällä salasana"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Avaa avainnipun \"%s\" lukitus syöttämällä salasana"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Avaa avainnippu"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Avaa tämä avainrengas automaattisesti sisäänkirjauduttaessa."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo luoda uuden avainnipun nimellä \"%s\". Sinun "
-"täytyy valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo luoda uuden oletusavainnipun. Sinun täytyy "
-"valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" tahtoo luoda uuden avainnipun nimellä \"%s\". Sinun täytyy "
-"valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" tahtoo luoda uuden oletusavainnipun. Sinun täytyy valita "
-"avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Tuntematon sovellus tahtoo luoda uuden avainnipun nimellä \"%s\". Sinun "
-"täytyy valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Tuntematon sovellus tahtoo luoda uuden oletusavainnipun. Sinun täytyy valita "
-"avainnipulle salasana."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Uuden avainnipun salasana"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Valitse uuden avainnipun salasana"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo vaihtaa avainrenkaan \"%s\" salasanan. Sinun "
-"täytyy valita avainnipulle käyttettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo vaihtaa oletusavainnipun salasanan. Sinun täytyy "
-"valita oletusavainnipulle käytettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" tahtoo vaihtaa avainnipun \"%s\" salasanan. Sinun täytyy "
-"valita avainnipulle käytettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Sovellus \"%s\" tahtoo vaihtaa oletusavainnipun salasanan. Sinun täytyy "
-"valita oletusavainnipulle käytettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Tuntematon sovellus tahtoo vaihtaa avainnipun \"%s\" salasanan. Sinun täytyy "
-"valita avainnipulle käytettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Tuntematon sovellus tahtoo vaihtaa oletusavainnipun salasanan. Sinun täytyy "
-"valita oletusavainnipulle käytettävä salasana."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Valitse uusi salasana avainnipulle \"%s\"."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Valitse uusi salasana oletusavainnipulle."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Vaihda avainnipun salasana"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Sovellus \"%s\" (%s) tahtoo tallentaa salasanan, mutta oletusavainnippua ei "
-"ole luotu. Luodaksesi sellaisen sinun täytyy valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Sovellus \"%s\" tahtoo tallentaa salasanan, mutta oletusavainnippua ei ole "
-"luotu. Luodaksesi sellaisen sinun täytyy valita avainnipulle salasana."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Tuntematon sovellus tahtoo tallentaa salasanan, mutta oletusavainnippua ei "
-"ole luotu. Luodaksesi sellaisen sinun täytyy valita avainnipulle salasana."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Luo oletusavainnippu"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Valitse oletusavainnipun salasana"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Tämä valinta ottaa käyttöön gnome-keyring-palvelimen PKCS#11-komponentin. "
-"Muutos tulee voimaan, kun gnome-keyring-palvelin käynnistetään uudestaan, "
-"esimerkiksi sisäänkirjauduttaessa. Tämä asetus voidaan ohittaa palvelimelle "
-"annetuilla komentorivivalitsimilla."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Tämä valinta ottaa käyttöön gnome-keyring-palvelimen SSH-agentin. Muutos "
-"tulee voimaan, kun gnome-keyring-palvelin käynnistetään uudestaan, "
-"esimerkiksi sisäänkirjauduttaessa. Tämä asetus voidaan ohittaa palvelimelle "
-"annetuilla komentorivivalitsimilla."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Onko gnome-keyring PKCS#11-komponentti käytössä."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Onko gnome-keyring SSH-agentti käytössä."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Pääsy evätty"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Prosessi gnome-keyring-daemon ei ole käynnissä."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Virhe yhteydessä prosessiin gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Tämänniminen avainrengas on jo olemassa"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Ohjelmointivirhe: sovellus lähetti virheellistä tietoa."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Ei täsmääviä tuloksia"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Tämännimistä avainrengasta ei ole olemassa."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Avainrenkaan lukitus on jo avattu."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Avaa oletusavainnippu"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Avaa avainnippu syöttämällä kirjautumissalasana"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Oletusavainnippua ei avattu automaattisesti kun kirjauduit sisään tälle "
-"tietokoneelle."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Luo oletusavainnippu"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Syötä kirjautumissalasanasi"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Oletusavainnippua ei luotu automaattisesti, kun kirjauduit tälle "
-"tietokoneelle. Se luodaan nyt."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Avaa salainen avain"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Avaa varmenne"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Avaa julkinen avain"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Avaa lukitus"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Avaa salaisen avaimen lukitus syöttämällä salasana"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Avaa varmenteen lukitus syöttämällä salasana"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Avaa julkisen avaimen lukitus syöttämällä salasana"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Avaa syöttämällä salasana"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Avaa tämä salainen avain automaattisesti sisäänkirjauduttaessa."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Avaa tämä varmenne automaattisesti sisäänkirjauduttaessa."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Avaa tämä julkinen avain automaattisesti sisäänkirjauduttaessa."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Avaa tämä automaattisesti sisäänkirjauduttaessa."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Sovellus tahtoo päästä käsiksi salaiseen avaimeen \"%s\", mutta se on lukittu"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Sovellus tahtoo päästä käsiksi varmenteeseen \"%s\", mutta se on lukittu"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Sovellus tahtoo päästä käsiksi julkiseen avaimeen \"%s\", mutta se on lukittu"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Sovellus tahtoo päästä käsiksi kohteeseen \"%s\", mutta se on lukittu"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Järjestelmä haluaa tuoda salaisen avaimen \"%s\", mutta se on lukittu."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Järjestelmä haluaa tuoda varmenteen \"%s\", mutta se on lukittu."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Järjestelmä haluaa tuoda julkisen avaimen \"%s\", mutta se on lukittu."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Järjestelmä haluaa tuoda kohteen \"%s\", mutta se on lukittu."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Kohteen \"%s\" salasana"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Tuntematon tai ei tuettu tiedosto."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Virheellistä tai viallista tiedostoa ei voi tulkita."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Tallennetaanko salasanat salaamattomassa muodossa?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Jos valitse tyhjän salasanan, tallennettuja salasanoja ei salata "
-"turvallisesti. Kuka tahansa, joka pääsee käsiksi tiedostoihisi, pääsee "
-"käsiksi myös salasanoihin."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Käytä turvatonta tallennusta"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Sijainti:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Vanha salasana:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Salasana:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Vahvista salasana:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Uuden salasanan vahvuus"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Salasanat eivät täsmää."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Salasana ei voi olla tyhjä"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Estä"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Salli _kerran"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Salli _aina"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Avaa %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Avaa \"%s\" syöttämällä salasana"
diff --git a/po/fr.po b/po/fr.po
deleted file mode 100644
index 00fa4d26..00000000
--- a/po/fr.po
+++ /dev/null
@@ -1,630 +0,0 @@
-# French translation of gnome-keyring.
-# Copyright (C) 2004-2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Sébastien Bacher <seb128@debian.org>, 2004.
-# Christophe Merlet <redfox@redfoxcenter.org>, 2004.
-# Laurent Richard <laurent.richard@ael.be>, 2006.
-# Jonathan Ernst <jonathan@ernstfamily.ch>, 2006.
-# Yann Simon <yann.simon.fr@gmail.com>, 2007.
-# Claude Paroz <claude@2xlibre.net>, 2007-2008.
-# Robert-André Mauchin <zebob.m@pengzone.org>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-15 17:26+0100\n"
-"PO-Revision-Date: 2008-02-15 17:25+0100\n"
-"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
-"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disque amovible : %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disque amovible"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Dossier personnel"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Le disque ou le lecteur où ce fichier est situé n'est pas présent."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"L'application « %s » (%s) veut accéder au mot de passe de « <object "
-"prop='name'/> » dans le trousseau de clés par défaut."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"L'application « %s » (%s) veut accéder au mot de passe de « <object "
-"prop='name'/> » dans %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"L'application « %s » veut accéder au mot de passe de « <object prop='name'/"
-"> » dans le trousseau de clés par défaut."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"L'application « %s » veut accéder au mot de passe de « <object prop='name'/"
-"> » dans %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Une application inconnue veut accéder au mot de passe de « <object "
-"prop='name'/> » dans le trousseau de clés par défaut."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Une application inconnue veut accéder au mot de passe de « <object "
-"prop='name'/> » dans %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Autoriser l'accès"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Autoriser l'application à accéder au trousseau de clés ?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Mot de passe pour déverrouiller le trousseau de clés %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"L'application « %s » (%s) veut accéder au trousseau de clés par défaut, mais "
-"il est verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"L'application « %s » (%s) veut accéder au trousseau de clés « %s », mais il "
-"est verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"L'application « %s » veut accéder au trousseau de clés par défaut, mais il "
-"est verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"L'application « %s » veut accéder au trousseau de clés « %s », mais il est "
-"verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Une application inconnue veut accéder au trousseau de clés par défaut, mais "
-"il est verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Une application inconnue veut accéder au trousseau de clés « %s », mais il "
-"est verrouillé"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr ""
-"Saisissez le mot de passe du trousseau de clés par défaut pour le "
-"déverrouiller"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr ""
-"Saisissez le mot de passe du trousseau de clés « %s » pour le déverrouiller"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Déverrouiller le trousseau de clés"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr ""
-"Déverrouiller automatiquement ce trousseau de clés quand je me connecte."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'application « %s » (%s) veut créer un nouveau trousseau de clés nommé « %"
-"s ». Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'application « %s » (%s) veut créer un nouveau trousseau de clés. "
-"Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'application « %s » veut créer un nouveau trousseau de clés nommé « %s ». "
-"Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'application « %s » veut créer un nouveau trousseau de clés par défaut. "
-"Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Une application inconnue veut créer un nouveau trousseau de clés nommé « %"
-"s ». Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Une application inconnue veut créer un nouveau trousseau de clés par défaut. "
-"Choisissez le mot de passe que vous voulez lui associer."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Mot de passe du nouveau trousseau de clés"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Choisissez le mot de passe du nouveau trousseau de clés"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"L'application « %s » (%s) veut modifier le mot de passe du trousseau de clés "
-"« %s ». Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"L'application « %s » (%s) veut modifier le mot de passe du trousseau de clés "
-"par défaut. Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'application « %s » veut modifier le mot de passe du trousseau de clés « %"
-"s ». Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"L'application « %s » veut modifier le mot de passe du trousseau de clés par "
-"défaut. Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Une application inconnue veut modifier le mot de passe du trousseau de clés "
-"« %s ». Choisissez le mot de passe que vous voulez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Une application inconnue veut modifier le mot de passe du trousseau "
-"de clés par défaut. Choisissez le mot de passe que vous voulez associer à "
-"ce trousseau."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Choisissez le nouveau mot de passe du trousseau de clés « %s »."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Choisissez le nouveau mot de passe du trousseau de clés par défaut."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Modifie le mot de passe du trousseau de clés"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'application « %s » (%s) veut enregistrer un mot de passe, mais il n'y a "
-"pas de trousseau de clés par défaut. Pour en créer un, vous avez besoin de "
-"choisir le mot de passe que vous désirez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'application « %s » veut enregistrer un mot de passe, mais il n'y a pas de "
-"trousseau de clés par défaut. Pour en créer un, vous avez besoin de choisir "
-"le mot de passe que vous désirez lui associer."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Une application inconnue veut enregistrer un mot de passe, mais il n'y a pas "
-"de trousseau de clés par défaut. Pour en créer un, vous avez besoin de "
-"choisir le mot de passe que vous désirez lui associer."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Créer le trousseau de clés par défaut"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Choisissez un mot de passe pour le trousseau de clés par défaut"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Cette option active le composant PKCS#11 du démon gnome-keyring. Il prend "
-"effet dès que gnome-keyring-daemon démarre (c-à-d : quand l'utilisateur "
-"s'identifie). Ce paramètre peut être outrepassé quand certains paramètres en "
-"ligne de commande sont indiqués au démon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Cette option active l'agent SSH du démon gnome-keyring. Il prend effet dès "
-"que gnome-keyring-daemon démarre (c-à-d : quand l'utilisateur s'identifie). "
-"Ce paramètre peut être outrepassé quand certains paramètres en ligne de "
-"commande sont indiqués au démon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Indique si le composant PKCS#11 de gnome-keyring est activé."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Indique si l'agent SSH de gnome-keyring est activé."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Accès refusé"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Le démon de gestion de trousseau de clés n'est pas lancé."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr ""
-"Erreur lors de la communication avec le démon de gestion de trousseau de clés"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Un trousseau de clés portant ce nom existe déjà"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Erreur programmeur : l'application a envoyé des données non valides."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Aucun résultat correspondant"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Aucun trousseau de clés correspondant à ce nom."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Le trousseau de clés a déjà été déverrouillé."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Déverrouiller le trousseau de connexion"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr ""
-"Saisissez votre mot de passe de connexion pour déverrouiller le trousseau"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Votre trousseau de connexion n'a pas été déverrouillé automatiquement quand "
-"vous vous êtes connecté à cet ordinateur."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Créer le trousseau de connexion"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Saisissez votre mot de passe de connexion"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Votre trousseau de connexion n'a pas été automatiquement créé quand vous "
-"vous êtes connecté sur cet ordinateur. Il va maintenant être créé."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Déverrouiller une clé privée"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Déverrouiller un certificat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Déverrouiller une clé publique"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Déverrouiller"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Saisissez le mot de passe pour déverrouiller la clé privée"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Saisissez le mot de passe pour déverrouiller le certificat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Saisissez le mot de passe pour déverrouiller la clé publique"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Saisissez le mot de passe pour déverrouiller"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Déverrouiller automatiquement cette clé privée quand je me connecte"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Déverrouiller automatiquement ce certificat quand je me connecte"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Déverrouiller automatiquement cette clé publique quand je me connecte"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Déverrouiller automatiquement cet objet quand je me connecte"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Une application veut accéder à la clé privée « %s », mais elle est "
-"verrouillée"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Une application veut accéder au certificat « %s », mais il est verrouillé"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Une application veut accéder à la clé publique « %s », mais elle est "
-"verrouillée"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Une application inconnue veut accéder à « %s », mais il est verrouillé"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"Le système souhaite importer la clé privée « %s », mais elle est verrouillée."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"Le système souhaite importer le certificat « %s », mais il est verrouillé."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"Le système souhaite importer la clé publique « %s », mais elle est "
-"verrouillée."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Le système souhaite importer « %s », mais il est verrouillé."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Mot de passe pour déverrouiller « %s »"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Fichier non reconnu ou non pris en charge."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Impossible d'analyser un fichier non valide ou corrompu."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Stocker les mots de passe de manière non chiffrée ?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"En choisissant d'utiliser un mot de passe vide, vos mots de passe stockés ne "
-"seront pas chiffrés de manière sûre. Ils seront accessibles par n'importe "
-"qui ayant un accès à vos fichiers."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Utiliser un stockage non sûr"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Emplacement :"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Ancien mot de passe :"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Mot de passe :"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirmation du mot de passe :"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Robustesse du nouveau mot de passe"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Les mots de passe ne sont pas identiques."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Le mot de passe ne peut pas être vide"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Refuser"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Autoriser _une seule fois"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Toujours autoriser"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Déverrouiller %s"
diff --git a/po/gl.po b/po/gl.po
deleted file mode 100644
index c7ff7c78..00000000
--- a/po/gl.po
+++ /dev/null
@@ -1,599 +0,0 @@
-# translation of gl.po to Galego
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Ignacio Casal Quinteiro <nacho.resa@gmail.com>, 2005, 2006.
-# Ignacio Casal Quinteiro <icq@svn.gnome.org>, 2007, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gl\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-19 23:35+0100\n"
-"PO-Revision-Date: 2008-02-19 23:39+0100\n"
-"Last-Translator: Ignacio Casal Quinteiro <icq@svn.gnome.org>\n"
-"Language-Team: Galego <proxecto@trasno.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disco extraíble: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disco extraíble"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Inicio"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "O disco ou a unidade na que está ubicado este ficheiro non está presente"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"A aplicación '%s' (%s) quere acceder ao contrasinal para '<object "
-"prop='name'/>' no anel de chaves predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"A aplicación '%s' (%s) quere acceder ao contrasinal para '<object "
-"prop='name'/>' en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"A aplicación '%s' quere acceder ao contrasinal para '<object prop='name'/>' "
-"no anel de chaves predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"A aplicación '%s' quere acceder ao contrasinal para '<object prop='name'/>' "
-"en %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Unha aplicación descoñecida quere acceder ao contrasinal para '<object "
-"prop='name'/>' no anel de chaves predeterminado."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Unha aplicación descoñecida quere acceder ao contrasinal para '<object "
-"prop='name'/>' en %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Permitir acceso"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Permitir á aplicación acceder ao anel de chaves?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Contrasinal de desbloqueo para o anel de chaves %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"A aplicación '%s' (%s) quere acceder ao anel de chaves predeterminado mais "
-"está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "A aplicación '%s' (%s) quere acceder ao anel de chaves %s mais está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"A aplicación '%s' quere acceder ao anel de chaves predeterminado mais está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "A aplicación '%s' quere acceder ao anel de chaves '%s' mais está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Unha aplicación descoñecida quere acceder ao anel de chaves predeterminado "
-"mais está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Unha aplicación descoñecida quere acceder ao anel de chaves %s mais está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Introduza o contrasinal para desbloquear o anel de chaves predeterminado"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Introduza o contrasinal para desbloquear o anel de chaves '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Desbloquear o anel de chaves"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Desbloquear automaticamente este anel de chaves ao iniciar sesión."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' (%s) quere crear un novo anel de chaves chamado '%s'. Ten "
-"que elixir o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' (%s) quere crear un anel de chaves predeterminado novo. "
-"Ten que elixir o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' quere crear un novo anel de chaves chamado '%s'. Ten que "
-"escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' quere crear un anel de chaves predeterminado novo. Ten que "
-"escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Unha aplicación descoñecida quere crear un novo anel de chaves chamado '%s'. "
-"Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Unha aplicación descoñecida quere crear un novo anel de chaves "
-"predeterminado. Ten que elixir o contrasinal que quere usar con el."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Contrasinal novo do anel de chaves"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Escolla o contrasinal para o novo anel de chaves"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' (%s) quere cambiar o contrasinal para o anel de chaves'%"
-"s'. Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' (%s) quere cambiar o contrasinal para o anel de chaves "
-"predeterminado. Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' quere cambiar o contrasinal para o anel de chaves '%s'. "
-"Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicación '%s' quere cambiar o contrasinal para o anel de chaves "
-"predeterminado. Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Unha aplicación descoñecida quere cambiar o contrasinal para o anel de "
-"chaves '%s'. Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Unha aplicación descoñecida quere cambiar o contrasinal para o anel de "
-"chaves predeterminado. Ten que escoller o contrasinal que quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Escolla o novo contrasinal para o anel de chaves '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Escoller un novo contrasinal para o anel de chaves predeterminado. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Cambiar o contrasinal do anel de chaves"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicación '%s' (%s) quere almacenar un contrasinal mais non hai un anel "
-"de chaves predeterminado. Para crear un, debe escoller o contrasinal que "
-"quere usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicación '%s' quere almacenar un contrasinal mais non hai un anel de "
-"chaves predeterminado. Para crear un, debe escoller o contrasinal que quere "
-"usar con el."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Unha aplicación descoñecida quere almacenar un contrasinal mais non hai un "
-"anel de chaves predeterminado. Para crear un, debe escoller o contrasinal "
-"que quere usar con el."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Crear un anel de chaves predeterminado"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Escoller un contrasinal para o anel de chaves predeterminado"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Esta opción activa a compoñente PKCS#11 no daemon gnome-keyring. Só é "
-"efectivo cando se inicia gnome-keyring-daemon, (ex: cando o usuario entra no "
-"sistema). Este axuste pódese substituír ao pasar certos parámetros ao daemon "
-"por medio da liña de comandos."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Esta opción activa o axente SSH no daemon do gnome-keyring. Só é efectivo "
-"cando se inicia gnome-keyring-daemon, (ex: cando o usuario entra no "
-"sistema). Este axuste pódese substituír ao pasar certos parámetros ao daemon "
-"por medio da liña de comandos."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Indica se a compoñente PKCS#11 do gnome-keyring está activado."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Indica se o axente SSH do gnome-keyring está activado."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Acceso denegado"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "A aplicación gnome-keyring-daemon non está en execución."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Erro ao comunicarse co gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Xa existe un anel de chaves con ese nome"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Erro de programación: A aplicación enviou datos non válidos."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Non hai resultados coincidintes"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Xa existe un anel de chaves con ese nome."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "O anel de chaves xa foi desbloqueado."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Desbloquear o anel de chaves de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Contrasinal de desbloqueo para o anel de chaves de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Ao iniciar sesión neste computado non se desbloqueou automaticamente o seu "
-"anel de chaves."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Crear anel de chaves de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Introduza o contrasinal de inicio"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Ao iniciar sesión neste computador non se creou automaticamente o seu anel "
-"de chaves. Crearase agora."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Desbloquear chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Desbloquear certificado"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Desbloquear chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Desbloquear"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Introduza o contrasinal para desbloquear a chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Introduza o contrasinal para desbloquear o certificado"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Introduza o contrasinal para desbloquear a chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Introduza o contrasinal para desbloquear"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Desbloquear automaticamente esta chave privada ao iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Desbloquear automaticamente este certificado ao iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Desbloquear automaticamente esta chave pública ao iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Desbloquear automaticamente isto ao iniciar sesión."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Unha aplicación quere acceder á chave privada '%s' mais está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Unha aplicación quere acceder ao certificado %s mais está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Unha aplicación quere acceder á chave pública '%s' mais está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Unha aplicación quere acceder ao %s mais está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "O sistema quere importar a chave privada '%s' mais está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "O sistema quere importar o certificado '%s' mais está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "O sistema quere importar a chave pública '%s' mais está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "O sistema quere importar '%s' mais está bloqueado."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Contrasinal de desbloqueo para o '%s'"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ficheiro non recoñecido ou non soportado."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Non se puido analizar o ficheiro inválido ou corrupto."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Quere almacenar contrasinais sen cifrar?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Ao escoller usar un contrasinal en branco, os seus contrasinais almacenados "
-"non estarán cifrados de maneira segura. Serán accesibles por calquera que "
-"teña acceso aos seus ficheiros."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Usar almacenamento inseguro"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Ubicación:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "Contrasinal anti_go:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Contrasinal:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirmar contrasinal:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Fortaleza do novo contrasinal"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Os contrasinais non coinciden."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "O contrasinal non pode estar en branco."
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Denegar"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Permitir _unha vez"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Permitir sempre"
-
diff --git a/po/gu.po b/po/gu.po
deleted file mode 100644
index 7c69c66f..00000000
--- a/po/gu.po
+++ /dev/null
@@ -1,390 +0,0 @@
-# translation of gnome-keyring.HEAD.gu.po to Gujarati
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Ankit Patel <ankit644@yahoo.com>, 2005, 2006.
-# Ankit Patel <ankit@redhat.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.gu\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-27 04:01+0100\n"
-"PO-Revision-Date: 2007-08-06 16:02+0530\n"
-"Last-Translator: Ankit Patel <ankit@redhat.com>\n"
-"Language-Team: Gujarati <fedora-trans-gu@redhat.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
-"\n"
-"\n"
-"\n"
-"\n"
-
-#: ../common/gkr-location.c:288
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "દૂર કરી શકાય તેવી ડિસ્ક: %s"
-
-#: ../common/gkr-location.c:290
-msgid "Removable Disk"
-msgstr "દૂર કરી શકાય તેવી ડિસ્ક"
-
-#: ../common/gkr-location.c:431
-msgid "Home"
-msgstr "ઘર"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gnome-keyring-daemon-ops.c:188
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s કીરીંગ માટેનો પાસવર્ડ ખોલો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:414
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) એ '<object prop='name'/>' માટે મૂળભૂત કીરીંગમાં પાસવર્ડ વાપરવા "
-"માંગે છે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:417
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "કાર્યક્રમ '%s' (%s) એ '<object prop='name'/>' માટેનો પાસવર્ડ %s માં વાપરવા માંગે છે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:422
-#: ../daemon/gnome-keyring-daemon-ops.c:430
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "કાર્યક્રમ '%s' એ '<object prop='name'/>' માટે મૂળભૂત કીરીંગમાં પાસવર્ડ વાપરવા માંગે છે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:425
-#: ../daemon/gnome-keyring-daemon-ops.c:433
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "કાર્યક્રમ '%s' એ '<object prop='name'/>' માટે %s માં પાસવર્ડ વાપરવા માંગે છે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:438
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"એક અજ્ઞાત કાર્યક્રમ '<object prop='name'/>' માટે મૂળભૂત કીરીંગમાં પાસવર્ડ વાપરવા માંગે "
-"છે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:440
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "એક અજ્ઞાત કાર્યક્રમ '<object prop='name'/>' માટે %s માં પાસવર્ડ વાપરવા માંગે છે."
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow access"
-msgstr "વાપરવા દો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow application access to keyring?"
-msgstr "કીરીંગને કાર્યક્રમ ચલાવવાની પરવાનગી આપવી છે?"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:544
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "કાર્યક્રમ '%s' (%s) મૂળભુત કીરીંગને ચલાવવા માંગે છે, પરંતુ તેને તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:548
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "કાર્યક્રમ '%s' (%s) એ કીરીંગ '%s' ને તાળુ લગાવવા માંગે છે, પરંતુ તેને તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:554
-#: ../daemon/gnome-keyring-daemon-ops.c:564
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "કાર્યક્રમ '%s' મૂળભુત કીરીંગને ચલાવવા માંગે છે, પરંતુ તેને તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:558
-#: ../daemon/gnome-keyring-daemon-ops.c:569
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "કાર્યક્રમ '%s' એ કીરીંગ '%s' ને ચલાવવા માંગે છે, પરંતુ તેને તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:575
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "એક અજ્ઞાત કાર્યક્રમ મૂળભુત કીરીંગને ચલાવવા માંગે છે, પરંતુ તે તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:579
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "એક અજ્ઞાત કાર્યક્રમ કીરીંગ '%s' ને ચલાવવા માંગે છે, પરંતુ તે તાળુ મરાયેલ છે"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:586
-msgid "Enter password for default keyring to unlock"
-msgstr "મૂળભુત કીરીંગનું તાળુ ખોલવા માટે પાસવર્ડ દાખલ કરો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:588
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "કીરીંગ '%s' નું તાળુ ખોલવા માટે પાસવર્ડ દાખલ કરો"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:592
-msgid "Unlock Keyring"
-msgstr "કીરીંગનું તાળુ ખોલો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:604
-msgid "Automatically unlock this keyring when I log in."
-msgstr "જ્યારે હું પ્રવેશ કરું ત્યારે આ કીરીંગ આપોઆપ ખોલો."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:640
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) એ '%s' તરીકે ઓળખાતી કીરીંગ બનાવવા માંગે છે. તેને વાપરવા માટે તમને જે "
-"પાસવર્ડ જોઈતો હોય તે તમારે પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:644
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) નવી મૂળભુત કીરીંગ બનાવવા માંગે છે. તમારે તેને વાપરવા માટે જો જોઈતો "
-"હોય તે પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:650
-#: ../daemon/gnome-keyring-daemon-ops.c:660
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' એ '%s' તરીકે ઓળખાતી નવી કીરીંગ બનાવવા માંગો છો. એને વાપરવા માટે તમારે "
-"પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:654
-#: ../daemon/gnome-keyring-daemon-ops.c:664
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' નવી મૂળભુત કીરીંગ બનાવવા માંગે છે. તમારે એને વાપરવા માટે પાસવર્ડ પસંદ કરવો "
-"પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:670
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"એક અજ્ઞાત કાર્યક્રમ '%s' તરીકે ઓળખાતી નવી કીરીંગ બનાવવા માંગે છે. તમારે એને વાપરવા માટે "
-"પાસવર્ડ દાખલ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:674
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"એક અજ્ઞાત કાર્યક્રમ નવી મૂળભુત કીરીંગ બનાવવા માંગે છે. તમારે તેને વાપરવા માટે પાસવર્ડ પસંદ "
-"કરવો પડશે."
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:680
-msgid "New Keyring Password"
-msgstr "નવો કીરીંગ પાસવર્ડ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:681
-msgid "Choose password for new keyring"
-msgstr "નવી કીરીંગ માટે પાસવર્ડ પસંદ કરો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:728
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) એ '%s' કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા "
-"માટે પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:732
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) એ મૂળભૂત કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા "
-"માટે પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:738
-#: ../daemon/gnome-keyring-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' એ '%s' કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા માટે "
-"પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:742
-#: ../daemon/gnome-keyring-daemon-ops.c:752
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"કાર્યક્રમ '%s' એ મૂળભૂક કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા માટેનો "
-"પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:758
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"અજ્ઞાત કાર્યક્રમ '%s' કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા માટે "
-"પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:762
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"અજ્ઞાત કાર્યક્રમ મૂળભૂત કીરીંગ માટે પાસવર્ડ બદલવા માંગે છે. તમારે તેની સાથે વાપરવા માટે "
-"પાસવર્ડ પસંદ કરવો પડશે."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:772
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' કીરીંગ માટે નવો પાસવર્ડ પસંદ કરો. "
-
-#: ../daemon/gnome-keyring-daemon-ops.c:774
-msgid "Choose a new password for the default keyring. "
-msgstr "મૂળભૂત કીરીંગ માટે નવો પાસવર્ડ પસંદ કરો. "
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:778
-msgid "Change Keyring Password"
-msgstr "કીરીંગ પાસવર્ડ બદલો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:845
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"કાર્યક્રમ '%s' (%s) પાસવર્ડ સંગ્રહવા માંગે છે, પરંતુ ત્યાં કોઈ મૂળભુત કીરીંગ નથી. એક બનાવવા "
-"માટે, તમારે પાસવર્ડ પસંદ કરવાની જરુર છે, કે જે તમે એના માટે વાપરવા માંગો છો."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:849
-#: ../daemon/gnome-keyring-daemon-ops.c:853
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"કાર્યક્રમ '%s' પાસવર્ડ સંગ્રહવા માંગે છે, પરંતુ ત્યાં કોઈ મૂળભુત કીરીંગ નથી. એક બનાવવા માટે, "
-"તમારે પાસવર્ડ પસંદ કરવાની જરુર છે, કે જે તમે એના માટે વાપરવા માંગો છો."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:857
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"એક અજ્ઞાત કાર્યક્રમ પાસવર્ડ સંગ્રહવા માંગે છે, પરંતુ ત્યાં કોઈ મૂળભુત કીરીંગ નથી. એક બનાવવા "
-"માટે, તમારે પાસવર્ડ પસંદ કરવાની જરુર છે, કે જે તમે એના માટે વાપરવા માંગો છો."
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Create Default Keyring"
-msgstr "મૂળભુત કીરીંગ બનાવો"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Choose password for default keyring"
-msgstr "મૂળભુત કીરીંગ માટે પાસવર્ડ પસંદ કરો"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "પરવાનગી નામંજૂર"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon કાર્યક્રમ ચાલી રહ્યો નથી."
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "કીરીંગનું તાળું પહેલાથી જ ખોલી દેવાયેલ છે."
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "gnome-keyring-daemon સાથે સંપર્કવ્યવહાર કરવામાં ભૂલ"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "તે નામ સાથેની કીરીંગ પહેલાથી જ હાજર છે"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "પ્રોગ્રામર ભૂલ: કાર્યક્રમે અયોગ્ય માહિતી મોકલી."
-
-#: ../ui/gkr-ask-tool.c:267
-msgid "_Location:"
-msgstr "સ્થાન (_L):"
-
-#: ../ui/gkr-ask-tool.c:280
-msgid "_Old password:"
-msgstr "જૂનો પાસવર્ડ (_O):"
-
-#: ../ui/gkr-ask-tool.c:300
-msgid "_Password:"
-msgstr "પાસવર્ડ (_P):"
-
-#: ../ui/gkr-ask-tool.c:322
-msgid "_Confirm password:"
-msgstr "ખાતરી પાસવર્ડ (_C):"
-
-#: ../ui/gkr-ask-tool.c:341
-msgid "New password strength"
-msgstr "નવા પાસવર્ડની મજબૂતાઈ"
-
-#: ../ui/gkr-ask-tool.c:378
-msgid "Old password cannot be blank."
-msgstr "જૂનો પાસવર્ડ ખાલી હોઈ શકે નહિં."
-
-#: ../ui/gkr-ask-tool.c:390
-msgid "Password cannot be blank."
-msgstr "પાસવર્ડ ખાલી હોઈ શકે નહિં."
-
-#: ../ui/gkr-ask-tool.c:399
-msgid "Passwords do not match."
-msgstr "પાસવર્ડો બંધબેસતા નથી."
-
-#: ../ui/gkr-ask-tool.c:448
-msgid "Deny"
-msgstr "પરવાનગી નથી"
-
-#: ../ui/gkr-ask-tool.c:460
-msgid "Allow _Once"
-msgstr "એક વાર પરવાનગી આપો (_O)"
-
-#: ../ui/gkr-ask-tool.c:464
-msgid "_Always Allow"
-msgstr "હંમેશા પરવાનગી આપો (_A)"
-
diff --git a/po/he.po b/po/he.po
deleted file mode 100644
index c51e8557..00000000
--- a/po/he.po
+++ /dev/null
@@ -1,404 +0,0 @@
-# Hebrew translation for gnome-keyring
-# Copyright (c) 2007 Rosetta Contributors and Canonical Ltd 2007
-# This file is distributed under the same license as the gnome-keyring package.
-# Yair Hershkovitz <yairhr@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-11-29 14:52+0200\n"
-"PO-Revision-Date: 2007-10-16 19:04+0000\n"
-"Last-Translator: unknown\n"
-"Language-Team: Hebrew <he@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2007-11-27 11:20+0000\n"
-"X-Generator: Launchpad (build Unknown)\n"
-
-#: ../common/gkr-location.c:290
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "דיסק נייד: %s"
-
-#: ../common/gkr-location.c:292
-msgid "Removable Disk"
-msgstr "דיסק נייד"
-
-#: ../common/gkr-location.c:436
-msgid "Home"
-msgstr "בית"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gkr-daemon-ops.c:83
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "סיסמת הפתיחה עבור קבוצת הסיסמאות %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:310
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"היישום '%s' (%s) מנסה לגשת לסיסמה עבור '<object prop='name'/>' בקבוצת "
-"הסיסמאות הפעילה."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:314
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "היישום '%s' (%s) מנסה לגשת לסיסמה עבור '<object prop='name'/>' ב- %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:320 ../daemon/gkr-daemon-ops.c:330
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"היישום '%s' מנסה לגשת לסיסמה עבור '<object prop='name'/>' בקבוצת הסיסמאות "
-"הפעילה."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:324 ../daemon/gkr-daemon-ops.c:334
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "היישום '%s' מנסה לגשת לסיסמה עבור '<object prop='name'/>' ב- %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:340
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"יישום בלתי מזוהה מנסה לגשת לסיסמה עבור '<object prop='name'/>' בקבוצת "
-"הסיסמאות הפעילה."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:343
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "יישום בלתי מזוהה מנסה לגשת לסיסמה עבור '<object prop='name'/>' ב- %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow access"
-msgstr "אפשר גישה"
-
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow application access to keyring?"
-msgstr "האם לאפשר ליישום לגשת לקבוצת הסיסמאות?"
-
-#: ../daemon/gkr-daemon-ops.c:447
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"היישום '%s' (%s) מנסה לגשת לקבוצת הסיסמאות הפעילה אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:451
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"היישום '%s' (%s) מנסה לגשת לקבוצת הסיסמאות '%s', אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:457 ../daemon/gkr-daemon-ops.c:467
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "היישום '%s' מנסה לגשת לקבוצת הסיסמאות הפעילה אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:461 ../daemon/gkr-daemon-ops.c:472
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "היישום '%s' מנסה לגשת לקבוצת הסיסמאות '%s', אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:478
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"יישום בלתי מזוהה מנסה לגשת לקבוצת הסיסמאות הפעילה אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:482
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"יישום בלתי מזוהה מנסה לגשת לקבוצת הסיסמאות '%s', אך קבוצה זו הינה נעולה"
-
-#: ../daemon/gkr-daemon-ops.c:489
-msgid "Enter password for default keyring to unlock"
-msgstr "הכנס סיסמה לפתיחת קבוצת הסיסמאות הפעילה"
-
-#: ../daemon/gkr-daemon-ops.c:491
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "הכנס סיסמה לפתיחת קבוצת הסיסמאות '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:495
-msgid "Unlock Keyring"
-msgstr "פתח את קבוצת הסיסמאות"
-
-#: ../daemon/gkr-daemon-ops.c:507
-msgid "Automatically unlock this keyring when I log in."
-msgstr "פתח את קבוצת הסיסמאות הזו באופן אוטומטי בזמן הכניסה למערכת."
-
-#: ../daemon/gkr-daemon-ops.c:543
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"היישום '%s' (%s) מנסה ליצור קבוצת סיסמאות חדשה בשם '%s'. עליך לקבוע סיסמה "
-"עבור קבוצה זו."
-
-#: ../daemon/gkr-daemon-ops.c:547
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"היישום '%s' (%s) מנסה ליצור קבוצת סיסמאות חדשה שתהיה הקבוצה הפעילה. עליך "
-"לקבוע סיסמה עבור קבוצה זו."
-
-#: ../daemon/gkr-daemon-ops.c:553 ../daemon/gkr-daemon-ops.c:563
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"היישום '%s' מנסה ליצור קבוצת סיסמאות חדשה בשם '%s'. עליך לקבוע סיסמה עבור "
-"קבוצה זו."
-
-#: ../daemon/gkr-daemon-ops.c:557 ../daemon/gkr-daemon-ops.c:567
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"היישום '%s' מנסה ליצור קבוצת סיסמאות חדשה שתהיה הקבוצה הפעילה. עליך לקבוע "
-"סיסמה עבור קבוצה זו."
-
-#: ../daemon/gkr-daemon-ops.c:573
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"יישום בלתי מזוהה מנסה ליצור קבוצה סיסמאות חדשה בשם '%s'. עליך לקבוע סיסמה "
-"עבור קבוצה זו."
-
-#: ../daemon/gkr-daemon-ops.c:577
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"יישום בלתי מזוהה מנסה ליצור קבוצת סיסמאות חדשה שתהיה הקבוצה הפעילה. עליך "
-"לקבוע סיסמה עבור קבוצה זו."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:583
-msgid "New Keyring Password"
-msgstr "סיסמה עבור קבוצת סיסמאות חדשה"
-
-#: ../daemon/gkr-daemon-ops.c:584
-msgid "Choose password for new keyring"
-msgstr "הכנס סיסמה עבור קבוצת הסיסמאות החדשה"
-
-#: ../daemon/gkr-daemon-ops.c:631
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"היישום '%s' (%s) מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות '%s'. עליך להכניס "
-"את הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:635
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"היישום '%s' (%s) מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות הפעילה. עליך "
-"להכניס את הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:641 ../daemon/gkr-daemon-ops.c:651
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"היישום '%s' מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות '%s'. עליך להכניס את "
-"הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:645 ../daemon/gkr-daemon-ops.c:655
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"היישום '%s' מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות הפעילה. עליך להכניס את "
-"הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:661
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"יישום בלתי מזוהה מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות '%s'. עליך להכניס "
-"את הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:665
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"יישום בלתי מזוהה מנסה לשנות את הסיסמה עבור קבוצת הסיסמאות הפעילה. עליך "
-"להכניס את הסיסמה עבורה."
-
-#: ../daemon/gkr-daemon-ops.c:675
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "הכנס סיסמה חדשה עבור קבוצת הסיסמאות '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:677
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "הכנס סיסמה חדשה עבור קבוצת הסיסמאות הפעילה. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:681
-msgid "Change Keyring Password"
-msgstr "שנה את הסיסמה של קבוצת הסיסמאות"
-
-#: ../daemon/gkr-daemon-ops.c:751
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"היישום '%s' (%s) מנסה לשמור סיסמה אך לא מוגדרת קבוצת סיסמאות פעילה. כדי "
-"ליצור קבוצת סיסמאות פעילה עליך לקבוע סיסמת גישה לקבוצה."
-
-#: ../daemon/gkr-daemon-ops.c:755 ../daemon/gkr-daemon-ops.c:759
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"היישום '%s' מנסה לשמור סיסמה אך לא מוגדרת קבוצת סיסמאות פעילה. כדי ליצור "
-"קבוצת סיסמאות פעילה עליך לקבוע סיסמת גישה לקבוצה."
-
-#: ../daemon/gkr-daemon-ops.c:763
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"יישום בלתי מזוהה מנסה לשמור סיסמה אך לא מוגדרת קבוצת סיסמאות פעילה. כדי "
-"ליצור קבוצת סיסמאות פעילה עליך לקבוע סיסמת גישה לקבוצה."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:768
-msgid "Create Default Keyring"
-msgstr "צור קבוצת סיסמאות פעילה"
-
-#: ../daemon/gkr-daemon-ops.c:768
-msgid "Choose password for default keyring"
-msgstr "בחר סיסמה עבור מקבוצת הסיסמאות הפעילה"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "Access Denied"
-msgstr "הגישה נחסמה"
-
-#: ../library/gnome-keyring-utils.c:113
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "היישום gnome-keyring-daemon אינו פעיל."
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "שגיאה בתקשורת עם gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "כבר קיימת קבוצת סיסמאות אחרת בעלת שם זהה"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmer error: The application sent invalid data."
-
-#: ../library/gnome-keyring-utils.c:121
-msgid "No matching results"
-msgstr "No matching results"
-
-#: ../library/gnome-keyring-utils.c:123
-msgid "A keyring with that name does not exist."
-msgstr "קבוצת סיסמאות בשם זה אינה קיימת."
-
-#: ../library/gnome-keyring-utils.c:130
-msgid "The keyring has already been unlocked."
-msgstr "קבוצת הסיסמאות כבר נפתחה."
-
-#: ../ui/gkr-ask-tool.c:314
-msgid "_Location:"
-msgstr "_מיקום:"
-
-#: ../ui/gkr-ask-tool.c:327
-msgid "_Old password:"
-msgstr "סיסמה _קודמת:"
-
-#: ../ui/gkr-ask-tool.c:347
-msgid "_Password:"
-msgstr "_סיסמה:"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "_Confirm password:"
-msgstr "_וידוא סיסמה:"
-
-#: ../ui/gkr-ask-tool.c:388
-msgid "New password strength"
-msgstr "חוזק הסיסמה החדשה"
-
-#: ../ui/gkr-ask-tool.c:444
-msgid "Old password cannot be blank."
-msgstr "שדה הסיסמה הקודמת אינו יכול לקבל ערך ריק"
-
-#: ../ui/gkr-ask-tool.c:456
-msgid "Password cannot be blank."
-msgstr "שדה הסיסמה אינו יכול לקבל ערך ריק"
-
-#: ../ui/gkr-ask-tool.c:465
-msgid "Passwords do not match."
-msgstr "הסיסמאות אינן תואמות."
-
-#: ../ui/gkr-ask-tool.c:514
-msgid "Deny"
-msgstr "דחה"
-
-#: ../ui/gkr-ask-tool.c:526
-msgid "Allow _Once"
-msgstr "אשר _בפעם זו בלבד"
-
-#: ../ui/gkr-ask-tool.c:530
-msgid "_Always Allow"
-msgstr "_אפשר תמיד"
diff --git a/po/hi.po b/po/hi.po
deleted file mode 100644
index 6c1a2ba3..00000000
--- a/po/hi.po
+++ /dev/null
@@ -1,370 +0,0 @@
-# translation of gnome-keyring.HEAD.hi.po to Hindi
-# translation of hi.po to Hindi
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-# Rajesh Ranjan <rranjan@redhat.com>, 2005, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.hi\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-29 08:27+0200\n"
-"PO-Revision-Date: 2006-08-29 16:29+0530\n"
-"Last-Translator: Rajesh Ranjan <rranjan@redhat.com>\n"
-"Language-Team: Hindi <fedora-trans-hi@redhat.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
-"\n"
-"\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "पुराना शब्दकूट (_O):"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "पासवर्ड: (_P)"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "नया शब्दकूट सुनिश्चित करें (_C):"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">Password strength meter:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "पुराना शब्दकूट नहीं खाली हो सकता है"
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "शब्दकूट नहीं खाली हो सकता है"
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "शब्दकूट मेल नहीं खाता है."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "अनुप्रयोग '%s' (%s) मूलभूत कुंजी में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' (%s) मूलभूत कुंजीरिंग '%s' में अभिगम चाहता है, लेकिन यह बंद है"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr "अनुप्रयोग '%s' (%s) अनजान कुंजीरिंग में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "अनुप्रयोग '%s' मूलभूत कुंजीरिंग में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' कुंजीरिंग '%s' में अभिगम चाहता है, लेकिन यह बंद है"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid "The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "अनुप्रयोग '%s' अनजान कुंजीरिंग में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:452
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "अनजान अनुप्रयोग मूलभूत कुंजीरिंग में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "अनजान अनुप्रयोग मूलभूत कुंजीरिंग '%s' में अभिगम चाहता है, लेकिन यह बंद है"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid "An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "अनजान अनुप्रयोग अनजान कुंजीरिंग में अभिगम चाहता है, लेकिन यह बंद है"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "मूलभूत कीरिंग को खोलने के लिये शब्दकूट डालें"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "कीरिंग '%s' को खोलने के लिये शब्दकूट डालें"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "कीरिंग खोलें"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "मना करें"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) '%s' नामक नये कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप "
-"इसके लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके "
-"लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' '%s' नामक नये कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके "
-"लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"एक अनजान अनुप्रयोग '%s' नामक नये कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप "
-"इसके लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनजान अनुप्रयोग नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "नया कीरिंग शब्दकूट"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "नये कीरिंग के लिये शब्दकूट चुनें"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके "
-"लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके "
-"लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनजान अनुप्रयोग नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनजान अनुप्रयोग नये मूलभूत कीरिंग बनाना चाहता है. आपको शब्दकूट चुनना है जिसे आप इसके लिये "
-"प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "कीरिंग '%s' के लिये शब्दकूट चुनें"
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "मूलभूत कीरिंग के लिये शब्दकूट बदलें."
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "कीरिंग शब्दकूट बदलें"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) एक शब्दकूट भंडारित करना चाहता है, लेकिन कोई मूलभूत कीरिंग नहीं है. "
-"ऐसा एक बनाने के लिये, आपको शब्दकूट चुनना होगा जिसे आप इसके लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' एक शब्दकूट भंडारित करना चाहता है, लेकिन कोई मूलभूत कीरिंग नहीं है. ऐसा एक "
-"बनाने के लिये, आपको शब्दकूट चुनना होगा जिसे आप इसके लिये प्रयोग करना चाहते हैं."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"एक अनजान अनुप्रयोग एक शब्दकूट भंडारित करना चाहता है, लेकिन कोई मूलभूत कीरिंग नहीं है. "
-"ऐसा एक बनाने के लिये, आपको शब्दकूट चुनना होगा जिसे आप इसके लिये प्रयोग करना चाहते हैं."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "बनाएँ डिफ़ॉल्ट कीरिंग"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "डिफ़ॉल्ट कीरिंग के लिये शब्दकूट बदलें"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "कीरिंग में अनुप्रयोग पहुंत स्वीकारें?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "अनुप्रयोग '%s' (%s) '%s' के लिये %s में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr "अनुप्रयोग '%s' (%s) '%s' के लिये मूलभूत कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr "अनुप्रयोग '%s' (%s) '%s' के लिये अनजान कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "अनुप्रयोग '%s' '%s' के लिये %s में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "अनुप्रयोग '%s' '%s' के लिये मूलभूत कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "अनुप्रयोग '%s' '%s' के लिये अनजान कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "अनजान अनुप्रयोग '%s' के लिये %s में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr "अनजान अनुप्रयोग '%s' के लिये मूलभूत कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "अनजान अनुप्रयोग '%s' के लिये अनजान कीरिंग में शब्दकूट का पहुंच चाहता है."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "अभिगम स्वीकारें"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "स्वीकारें एक बार"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "हमेशा स्वीकारें"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "आप आग्रह के प्रकार को चलाने के लिये जरूर निर्दिष्ट करें\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "अज्ञात आग्रह प्रकार\n"
-
diff --git a/po/hr.po b/po/hr.po
deleted file mode 100644
index b39b8a20..00000000
--- a/po/hr.po
+++ /dev/null
@@ -1,388 +0,0 @@
-# Translation of gnome-keyring to Croatiann
-# Copyright (C) Croatiann team
-# Translators: Automatski Prijevod <>,Danijel Studen <dstuden@vuka.hr>,Tomislav Cavrag <tcavrag@vuka.hr>,
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-02-05 23:48+CET\n"
-"Last-Translator: auto\n"
-"Language-Team: Croatian <lokalizacija@linux.hr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: TransDict server\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikacija '%s' (%s) želi pristupiti predefiniranom privjesku, ali je "
-"zaključan"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Aplikacija '%s' (%s) želi pristupiti privjesku '%s', ali je zaključan"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Aplikacija '%s' (%s) želi pristupiti nepoznatom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikacija '%s' želi pristupiti predefiniranom privjesku, ali je zaključan."
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplikacija '%s' želi pristupiti privjesku '%s', ali je zaključan."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Aplikacija '%s' želi pristupiti nepoznatom privjesku, ali je zaključan."
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nepoznata aplikacija želi pristup predodređenom privjesku, ali je zaključan"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Nepoznata aplikacija želi pristupiti privjesku '%s', ali taj je zaključan"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Nepoznata aplikacija želi pristupiti nepoznatom privjesku, ali je ali je "
-"zaključan"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Unesite lozinku za predodređeni privjesak da bi ga otključali."
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Unesite lozinku za privjesak '%s' da bi ga otključali."
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Otključaj privjesak"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Odbij"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' (%s) želi kreirati novi predefinirani privjesak koji se zove "
-"'%s'. Odaberite lozinku koju za njega. "
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' (%s) želi kreirati novi predefinirani privjesak. Odaberite "
-"lozinku koju za njega. "
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' želi kreirati novi privjesak koji se zove '%s'. Odaberite "
-"lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' želi kreirati novi predefinirani privjesak. Odabrite lozinku "
-"za njega. "
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nepoznata aplikacija želi kreirati novi privjesak koji se zove '%s'. "
-"Odaberite lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nepoznata aplikacija želi kreirati novi predodređeni privjesak. Odaberite "
-"lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Nova lozinka za privjesak"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Odaberite lozniku za novi privjesak. "
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' (%s) želi kreirati novi predefinirani privjesak. Odaberite "
-"lozinku koju za njega. "
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' (%s) želi kreirati novi predefinirani privjesak. Odaberite "
-"lozinku koju za njega. "
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' želi kreirati novi predefinirani privjesak. Odabrite lozinku "
-"za njega. "
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacija '%s' želi kreirati novi predefinirani privjesak. Odabrite lozinku "
-"za njega. "
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nepoznata aplikacija želi kreirati novi predodređeni privjesak. Odaberite "
-"lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nepoznata aplikacija želi kreirati novi predodređeni privjesak. Odaberite "
-"lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Odaberite lozniku za novi privjesak. "
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Odaberite lozinku za predodređeni privjesak.¸"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Nova lozinka za privjesak"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacija '%s' (%s) želi spremiti lozinku, ali nema predefiniranog "
-"privjeska. Da bi ga kreirali odaberite lozinku za njega. "
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacija '%s' želi spremiti lozinku, ali nema predefiniranog privjeska. Da "
-"bi ga kreirali, odaberite lozinku za njega. "
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nepoznata aplikacija želi spremiti lozinku, ali nema predodređenog "
-"privjeska. Za kreiranje privjeska potrebno je odabrati lozinku koju želite "
-"upotrijebiti za to. "
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Kreiraj predodređeni privjesak. "
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Odaberite lozinku za predodređeni privjesak.¸"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Dopusti pristup aplikaciji privjesku za ključeve?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Aplikacija '%s' (%s) želi pristupiti lozinki za '%s' u '%s'."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Aplikacija '%s' (%s) želi pristupiti lozinki za '%s' u predefiniranom "
-"privjesku. "
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Aplikacija '%s' (%s) želi pristupiti lozinki za '%s' u nepoznatom privjesku. "
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Aplikacija '%s' želi pristupiti lozinki za '%s' u '%s'. "
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplikacija '%s' želi pristupiti lozinki za '%s' u predefiniranom privjesku."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplikacija '%s' želi pristupiti lozinki za '%s' u nepoznatom privjesku."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Nepoznata aplikacija želi pristup lozinki za '%s' u '%s'. "
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Nepoznata aplikacija želi pristup lozinki za '%s' u nepoznatom privjesku. "
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Nepoznata aplikacija želi pristup lozinki za '%s' u nepoznatom privjesku. "
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Dopusti pristup"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Dopusti_jednom"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Uvijek dopusti"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Morate navesti tip zahtjeva za pokretanje\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Nepoznat tip zahtjeva\n"
diff --git a/po/hu.po b/po/hu.po
deleted file mode 100644
index cc67d41e..00000000
--- a/po/hu.po
+++ /dev/null
@@ -1,599 +0,0 @@
-# Hungarian translation of gnome-keyring.
-# Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Gergely Nagy <greg@gnome.hu>, 2004.
-# Laszlo Dvornik <dvornikl@mailbox.hu>, 2004.
-# Gabor Kelemen <kelemeng@gnome.hu>, 2005, 2006, 2007, 2008.
-# Mate ORY <orymate at gmail d0t com>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-21 04:03+0000\n"
-"PO-Revision-Date: 2008-02-23 22:50+0100\n"
-"Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
-"Language-Team: Hungarian <gnome@fsf.hu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Cserélhető lemez: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Cserélhető lemez"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Saját mappa"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Nem érhető el a lemez vagy meghajtó, amelyen a fájl található"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás hozzá akar férni az alapértelmezett kulcstartóban "
-"„<object prop='name'/>” jelszavához."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás hozzá akar férni „<object prop='name'/>” "
-"jelszavához ebben: %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"A(z) „%s” alkalmazás hozzá akar férni az alapértelmezett kulcstartóban "
-"„<object prop='name'/>” jelszavához."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"A(z) „%s” alkalmazás hozzá akar férni „<object prop='name'/>” jelszavához "
-"ebben: %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Egy ismeretlen alkalmazás hozzá akar férni az alapértelmezett kulcstartóban "
-"„<object prop='name'/>” jelszavához."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Egy ismeretlen alkalmazás hozzá akar férni „<object prop='name'/>” "
-"jelszavához ebben: %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Hozzáférés engedélyezése"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Az alkalmazás hozzáférhet a kulcstartóhoz?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s kulcstartó jelszavának feloldása"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"A(z) „%s” (%s) alkalmazás nem tud hozzáférni az alapértelmezett "
-"kulcstartóhoz, mert zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"A(z) „%s” (%s) alkalmazás nem tud hozzáférni a(z) „%s” kulcstartóhoz, mert "
-"zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"A(z) „%s” alkalmazás nem tud hozzáférni az alapértelmezett kulcstartóhoz, "
-"mert zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"A(z) „%s” alkalmazás nem tud hozzáférni a(z) „%s” kulcstartóhoz, mert "
-"zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Egy ismeretlen alkalmazás nem tud hozzáférni az alapértelmezett "
-"kulcstartóhoz, mert zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Egy ismeretlen alkalmazás nem tud hozzáférni a(z) „%s” kulcstartóhoz, mert "
-"zárolva van"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Adja meg a jelszót az alapértelmezett kulcstartó nyitásához"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Adja meg a jelszót a(z) „%s” kulcstartó nyitásához"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Kulcstartó nyitása"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Ezen kulcstartó automatikus feloldása bejelentkezéskor."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás új kulcstartót akar létrehozni „%s” néven. Ehhez "
-"meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás új alapértelmezett kulcstartót akar létrehozni. "
-"Ehhez meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” alkalmazás új kulcstartót akar létrehozni „%s” néven. Ehhez meg "
-"kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” alkalmazás új alapértelmezett kulcstartót akar létrehozni. Ehhez "
-"meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Egy ismeretlen alkalmazás új kulcstartót akar létrehozni „%s” néven. Ehhez "
-"meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Egy ismeretlen alkalmazás új alapértelmezett kulcstartót akar létrehozni. "
-"Ehhez meg kell adnia egy jelszót."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Új kulcstartójelszó"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Jelszó az új kulcstartóhoz"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás módosítani akarja a(z) „%s” kulcstartó "
-"jelszavát. Ki kell választania az ehhez használandó jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás módosítani akarja az alapértelmezett kulcstartó "
-"jelszavát. Ki kell választania az ehhez használandó jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” alkalmazás módosítani akarja a(z) „%s” kulcstartó jelszavát. Ki "
-"kell választania az ehhez használandó jelszót. "
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A(z) „%s” alkalmazás módosítani akarja az alapértelmezett kulcstartó "
-"jelszavát. Ki kell választania az ehhez használandó jelszót. "
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Egy ismeretlen alkalmazás módosítani akarja a(z) „%s” kulcstartó jelszavát. "
-"Ki kell választania az ehhez használandó jelszót. "
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Egy ismeretlen alkalmazás módosítani akarja az alapértelmezett kulcstartó "
-"jelszavát. Ki kell választania az ehhez használandó jelszót. "
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Válasszon új jelszót a(z) „%s” kulcstartóhoz. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Válasszon új jelszót az alapértelmezett kulcstartóhoz. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Kulcstartó jelszavának módosítása"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A(z) „%s” (%s) alkalmazás egy jelszót akar eltárolni, de nincs "
-"alapértelmezett kulcstartó. A létrehozásához meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A(z) „%s” alkalmazás egy jelszót akar eltárolni, de nincs alapértelmezett "
-"kulcstartó. A létrehozásához meg kell adnia egy jelszót."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Egy ismeretlen alkalmazás egy jelszót akar eltárolni, de nincs "
-"alapértelmezett kulcstartó. A létrehozásához meg kell adnia egy jelszót."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Alapértelmezett kulcstartó létrehozása"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Jelszó az alapértelmezett kulcstartóhoz"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Ez a lehetőség engedélyezi a PKCS#11 összetevőt a gnome-keyring démonban. "
-"Csak a gnome-keyring démonnal együtt indul el, például ha a felhasználó "
-"bejelentkezik. Ezt a beállítást felülbírálhatják a démonnak átadott bizonyos "
-"parancssori argumentumok."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Ez a lehetőség engedélyezi az SSH ügynököt a gnome-keyring démonban. Csak a "
-"gnome-keyring démonnal együtt indul el, például ha a felhasználó "
-"bejelentkezik. Ezt a beállítást felülbírálhatják a démonnak átadott bizonyos "
-"parancssori argumentumok."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "A gnome-keyring PKCS#11 összetevője engedélyezve van-e?"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "A gnome-keyring SSH ügynöke engedélyezve van-e."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Hozzáférés megtagadva"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "A gnome-keyring-daemon alkalmazás nem fut."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Hiba a gnome-keyring-daemon alkalmazással való kommunikáció során"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Már létezik ilyen nevű kulcstartó"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programhiba: Az alkalmazás érvénytelen adatokat küldött."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Nincs egyezés"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Nem létezik ilyen nevű kulcstartó."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "A kulcstartó már fel lett oldva."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Bejelentkezési kulcstartó nyitása"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Adja meg a bejelentkezési jelszót a kulcstartó feloldásához"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"A bejelentkezési kulcstartója nem lett automatikusa feloldva a számítógépre "
-"való bejelentkezéskor."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Bejelentkezési kulcstartó létrehozása"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Adja meg a bejelentkezési jelszavát"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"A bejelentkezési kulcstartója nem lett automatikusa létrehozva a "
-"számítógépre való bejelentkezéskor. Most kerül létrehozásra."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Magánkulcs feloldása"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Tanúsítvány feloldása"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Nyilvános kulcs feloldása"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Feloldás"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Adja meg a jelszót a magánkulcs feloldásához"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Adja meg a jelszót a tanúsítvány feloldásához"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Adja meg a jelszót a nyilvános kulcs feloldásához"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Adja meg a jelszót a feloldáshoz"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Ezen magánkulcs automatikus feloldása bejelentkezéskor."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Ezen tanúsítvány automatikus feloldása bejelentkezéskor."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Ezen nyilvános kulcs automatikus feloldása bejelentkezéskor."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Automatikus feloldás bejelentkezéskor"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Egy alkalmazás hozzá kíván férni a(z) „%s” magánkulcshoz, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Egy alkalmazás hozzá kíván férni a(z) „%s” tanúsítványhoz, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Egy alkalmazás hozzá kíván férni a(z) „%s” nyilvános kulcshoz, de az "
-"zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Egy alkalmazás hozzá kíván férni a(z) „%s” elemhez, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "A rendszer importálni kívánja a(z) „%s” magánkulcsot, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "A rendszer importálni kívánja a(z) „%s” tanúsítványt, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "A rendszer importálni kívánja a(z) „%s” nyilvános kulcsot, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "A rendszer importálni kívánja a(z) „%s” elemet, de az zárolva van"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "„%s” jelszavának feloldása"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ismeretlen vagy nem támogatott fájl."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Nem sikerült feldolgozni az érvénytelen vagy hibás fájlt."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "A jelszavak tárolása titkosítás nélkül?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Ha üres jelszót választ, az eltárolt jelszavai nem lesznek biztonságosan "
-"titkosítva. Bárki számára elérhetőek lesznek, aki hozzáfér a fájljaihoz."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Nem biztonságos tárolás használata"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "He_ly:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Régi jelszó:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Jelszó:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Jelszó _megerősítése:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Új jelszó erőssége"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Nem egyeznek a megadott jelszavak."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "A jelszó nem lehet üres"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Megtagadás"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Engedélyezés _egyszer"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Engedélyezés _mindig"
-
diff --git a/po/id.po b/po/id.po
deleted file mode 100644
index b3d27a5b..00000000
--- a/po/id.po
+++ /dev/null
@@ -1,401 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Ahmad Riza H Nst <ari@160c.afraid.org> 20040519
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring gnome-2-6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-05-19 18:46+0700\n"
-"Last-Translator: Ahmad Riza H Nst <ari@160c.afraid.org>\n"
-"Language-Team: Indonesia <sukarelawan@gnome.linux.or.id>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikasi '%s' (%s) menginginkan akses ke keyring default, tetapi keyring "
-"tersebut terkunci"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Aplikasi '%s' (%s) menginginkan akses ke keyring '%s', tetapi terkunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Aplikasi '%s' (%s) menginginkan akses ke keyring tidak dikenal, tetapi "
-"keyring tersebut terkunci"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikasi '%s' menginginkan akses ke keyring default, tetapi keyring tersebut "
-"terkunci"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikasi '%s' menginginkan akses ke keyring '%s', tetapi keyring tersebut "
-"terkunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Aplikasi '%s' menginginkan akses ke keyring tidak dikenal, tetapi keyring "
-"tersebut terkunci"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikasi tidak dikenal menginginkan akses ke keyring default, tetapi keyring "
-"tersebut terkunci"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikasi tidak dikenal menginginkan akse ke keyring '%s', tetapi keyring "
-"tersebut terkunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Aplikasi tidak dikenal menginginkan akse ke keyring tidak dikenal, tetapi "
-"keyring tersebut terkunci"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Masukkan password untuk keyring default untuk membukanya"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Masukkan password untuk keyring '%s' untuk membukanya"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Buka Keyring"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Tolak"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) ingin membuat keyring baru yang disebut '%s'. Anda harus "
-"memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' ingin membuat keyring baru yang disebut '%s'. Anda harus "
-"memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tidak dikenal ingin membuat keyring baru yang disebut '%s'. Anda "
-"harus memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi tidak dikenal ingin membuat keyring default baru . Anda harus "
-"memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Password Keyring yang Baru"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Pilih password untuk keyring baru"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' ingin membuat keyring default baru. Anda harus memilih "
-"password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tidak dikenal ingin membuat keyring default baru . Anda harus "
-"memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tidak dikenal ingin membuat keyring default baru . Anda harus "
-"memilih password yang ingin anda gunakan untuk keyring tersebut."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Pilih password untuk keyring baru"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Pilih password untuk keyring default"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Password Keyring yang Baru"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi '%s' ('%s') ingin menyimpan sebuah password, tetapi tidak ada "
-"keyring default. Untuk membuat sebuah, anda harus memilih password yang "
-"ingin digunakan untuk nya"
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi '%s' ingin menyimpan sebuah password, tetapi tidak ada keyring "
-"default. Untuk membuat sebuah, anda harus memilih password yang ingin "
-"digunakan untuk nya"
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi tidak dikenal ingin menyimpan sebuah password, tetapi tidak ada "
-"keyring default. Untuk membuat sebuah, anda harus memilih password yang "
-"ingin digunakan untuk nya"
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Buat Keyring Default"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Pilih password untuk keyring default"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Bolehkan aplikasi akses ke keyring?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Aplikasi '%s' (%s) ingin mengakses password untuk '%s' dalam %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Aplikasi '%s' (%s) ingin mengakses password untuk '%s' di dalam keyring "
-"default"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Aplikasi '%s' (%s) ingin mengakses password untuk '%s' di dalam keyring "
-"tidak dikenal"
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Aplikasi '%s' ingin mengakses password untuk '%s' dalam %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplikasi '%s' ingin mengakses password untuk '%s' dalam keyring default"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplikasi '%s' ingin mengakses password untuk '%s' dalam keyring tidak dikenal"
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Aplikasi tidak dikenal ingin mengakses password untuk '%s' dalam %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplikasi tidak dikenal ingin mengakses password untuk '%s' dalam keyring "
-"default."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplikasi tidak dikenal ingin mengakses password untuk '%s' dalam keyring "
-"tidak dikenal."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Bolehkan akses"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Bolehkan _sekali"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Sel_alu Bolehkan"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Anda harus menjelaskan tipe permintaan untuk dijalankan\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Type permintaan tidak dikenal\n"
diff --git a/po/is.po b/po/is.po
deleted file mode 100644
index 3d07fd70..00000000
--- a/po/is.po
+++ /dev/null
@@ -1,340 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-03-13 06:31-0000\n"
-"Last-Translator: helgi <helgi@trance.is>\n"
-"Language-Team: Icelandic <gnome@techattack.nu>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Neita"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr ""
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr ""
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-
-# keyring == KEYRING_NAME_UNKNOWN
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Leyfa aðgang"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Leyfa _Einu Sinni"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Ávallt Leyfa"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr ""
diff --git a/po/it.po b/po/it.po
deleted file mode 100644
index 77962bd8..00000000
--- a/po/it.po
+++ /dev/null
@@ -1,632 +0,0 @@
-# Italian Translation of gnome-keyring.
-# Copyright (C) 2004-2008 Free Software Foundation, Inc
-# This file is distributed under the same license as the gnome-keyring package.
-# Francesco Marletta <francesco.marletta @ tiscali.it>, 2004-2007.
-# Luca Ferretti <elle.uca@libero.it>, 2008.
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.22.x\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-02 11:16+0100\n"
-"PO-Revision-Date: 2008-03-05 14:18+0100\n"
-"Last-Translator: Luca Ferretti <elle.uca@libero.it>\n"
-"Language-Team: Italian <tp@lists.linux.it>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disco rimovibile: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disco rimovibile"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Home"
-
-# GNOME-2-22
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Non è presente il disco o l'unità su cui questo file è posizionato"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "L'applicazione \"%s\" (%s) vuole accedere alla password per \"<object prop='name'/>\" nel portachiavi predefinito."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "L'applicazione \"%s\" (%s) vuole accedere alla password per \"<object prop='name'/>\" in %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "L'applicazione \"%s\" vuole accedere alla password per \"<object prop='name'/>\" nel portachiavi predefinito."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "L'applicazione \"%s\" vuole accedere alla password per \"<object prop='name'/>\" in %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "Un'applicazione sconosciuta vuole accedere alla password per \"<object prop='name'/>\" nel portachiavi predefinito."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Un'applicazione sconosciuta vuole accedere alla password per \"<object prop='name'/>\" in %s."
-
-# titolo dialogo
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Consentire l'accesso"
-
-# testo primario (bold + big) dialogo
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Consentire all'applicazione di accedere al portachiavi?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Sblocca la password per il portachiavi %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "L'applicazione \"%s\" (%s) vuole accedere al portachiavi predefinito, ma questo è bloccato"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"L'applicazione \"%s\" (%s) vuole accedere al portachiavi \"%s\", ma questo è "
-"bloccato"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"L'applicazione \"%s\" vuole accedere al portachiavi predefinito, ma questo è "
-"bloccato"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"L'applicazione \"%s\" vuole accedere al portachiavi \"%s\", ma questo è "
-"bloccato"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Un'applicazione sconosciuta vuole accedere al portachiavi predefinito, ma "
-"questo è bloccato"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Un'applicazione sconosciuta vuole accedere al portachiavi \"%s\", ma questo "
-"è bloccato"
-
-# NdT: credo sia meglio cosi' che la traduzione letterale
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Inserire la password per sbloccare il portachiavi predefinito"
-
-# NdT: credo sia meglio cosi' che la traduzione letterale
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Inserire la password per sbloccare il portachiavi \"%s\""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Sblocca portachiavi"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Sblocca automaticamente questo portachiavi all'accesso."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" (%s) vuole creare un nuovo portachiavi di nome \"%s\". "
-"Bisogna impostare la password per poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" (%s) vuole creare un nuovo portachiavi predefinito. "
-"Bisogna impostare la password per poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" vuole creare un nuovo portachiavi di nome \"%s\". "
-"Bisogna impostare la password per poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" vuole creare un nuovo portachiavi predefinito. Bisogna "
-"impostare la password per poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Un'applicazione sconosciuta vuole creare un nuovo portachiavi di nome \"%s"
-"\". Bisogna impostare la password per poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Un'applicazione sconosciuta vuole creare un nuovo portachiavi predefinito. "
-"Bisogna impostare la password per poterlo usare."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Password del nuovo portachiavi"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Impostare la password per il nuovo portachiavi"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "L'applicazione \"%s\" (%s) vuole cambiare la password per il portachiavi \"%s\". Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" (%s) vuole cambiare la password per il portachiavi "
-"predefinito. Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" vuole cambiare la password per il portachiavi \"%s\". "
-"Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"L'applicazione \"%s\" vuole cambiare la password per il portachiavi "
-"predefinito. Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Un'applicazione sconosciuta vuole cambiare la password per il portachiavi \"%s\". Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Un'applicazione sconosciuta vuole cambiare la password per il portachiavi predefinito. Bisogna impostare la password da usare."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Impostare la nuova password per il portachiavi \"%s\". "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Impostare la nuova password per il portachiavi predefinito. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Cambio password portachiavi"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'applicazione \"%s\" (%s) vuole memorizzare una password, ma non c'è alcun "
-"portachiavi predefinito. Per crearne uno bisogna impostare la password per "
-"poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"L'applicazione \"%s\" vuole memorizzare una password, ma non c'è alcun "
-"portachiavi predefinito. Per crearne uno bisogna impostare la password per "
-"poterlo usare."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Un'applicazione sconosciuta vuole memorizzare una password, ma non c'è alcun "
-"portachiavi predefinito. Per crearne uno bisogna impostare la password per "
-"poterlo usare."
-
-# NdT: presumo sia il titolo di una finestra
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Creazione portachiavi predefinito"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Impostare la password per il portachiavi predefinito"
-
-# GNOME-2-22
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "Questa opzione abilita il componente PKCS#11 nel demone di gnome-keyring. Ha effetto solo all'avvio di gnome-keyring-daemon (cioè quando l'utente effettua l'accesso). Questa impostazione può essere scavalcata da certi argomenti da riga di comando passati al demone."
-
-# GNOME-2-22
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "Questa opzione abilita il componente SSH nel demone di gnome-keyring. Ha effetto solo all'avvio di gnome-keyring-daemon (cioè quando l'utente effettua l'accesso). Questa impostazione può essere scavalcata da certi argomenti da riga di comando passati al demone."
-
-# GNOME-2-22
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Indica se il componente PKCS#11 di gnome-keyring è abilitato."
-
-# GNOME-2-22
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Indica se il componente SSH di gnome-keyring è abilitato."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Accesso negato"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "L'applicazione gnome-keyring-daemon non è in esecuzione."
-
-# GNOME-2-22
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Errore nel comunicare con gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Esiste già un portachiavi con quel nome"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Errore di programmazione: l'applicazione ha inviato dati non validi."
-
-# GNOME-2-22
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Nessun risultato corrispondete"
-
-# GNOME-2-22
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Non esiste alcun portachiavi con quel nome."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Il portachiavi è già stato sbloccato."
-
-# GNOME-2-22
-# titolo dialogo
-# login è il nome del portachiavi
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Sblocca portachiavi login"
-
-# GNOME-2-22
-#
-# Avrei voluto mantenere login->accesso, ma mi sa
-# che diventava meno chiara --Luca
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Inserire la password di login per sbloccare il portachiavi"
-
-# GNOME-2-22
-# login è il nome del portachiavi
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "Il proprio portachiavi \"login\" non è stato sbloccato automaticamente quando si è effettuato l'accesso a questo computer."
-
-# GNOME-2-22
-# titolo dialogo
-# login è il nome del portachiavi
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Crea portachiavi login"
-
-# GNOME-2-22
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Inserire la propria password di login"
-
-# GNOME-2-22
-# login è il nome del portachiavi
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "Il proprio portachiavi \"login\" non è stato creato automaticamente quando si è effettuato l'accesso a questo computer. Verrà creato adesso."
-
-# GNOME-2-22
-# sarebbe titolo dialogo
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Sblocca chiave privata"
-
-# GNOME-2-22
-# sarebbe titolo dialogo
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Sblocca certificato"
-
-# GNOME-2-22
-# sarebbe titolo dialogo
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Sblocca chiave pubblica"
-
-# GNOME-2-22
-# sarebbe titolo dialogo
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Sblocca"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Inserire la password per sbloccare la chiave privata"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Inserire la password per sbloccare il certificato"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Inserire la password per sbloccare la chiave pubblica"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Inserire la password per sbloccare"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Sblocca automaticamente questa chiave privata all'accesso."
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Sblocca automaticamente questo certificato all'accesso."
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Sblocca automaticamente questa chiave pubblica all'accesso."
-
-# GNOME-2-22
-# aggiunto elemento e punto in fondo per omogeneità
-# con tre precedenti
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Sblocca automaticamente questo elemento all'accesso."
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Un'applicazione vuole accedere alla chiave privata \"%s\", ma la chiave è bloccata"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Un'applicazione vuole accedere al certificato \"%s\", ma il certificato è bloccato"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Un'applicazione vuole accedere alla chiave pubblica \"%s\", ma la chiave è bloccata"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Un'applicazione vuole accedere a \"%s\", ma tale elemento è bloccato"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Il sistema vuole importare la chiave privata \"%s\", ma la chiave è bloccata"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Il sistema vuole importare il certificato \"%s\", ma il certificato è bloccato"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Il sistema vuole importare la chiave pubblica \"%s\", ma la chiave è bloccata"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Il sistema vuole importare \"%s\", ma tale elemento è bloccato"
-
-# GNOME-2-22
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Sblocca la password per \"%s\""
-
-# GNOME-2-22
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "File non riconosciuto o non supportato."
-
-# GNOME-2-22
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Impossibile analizzare il file non valido o corrotto."
-
-# GNOME-2-22
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Memorizzare le password senza cifrarle?"
-
-# GNOME-2-22
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "Scegliendo di usare una password vuota, le proprie password memorizzate non saranno cifrate in modo sicuro. Chiunque può accedere al proprio computer potrà accedere anche alle password."
-
-# GNOME-2-22
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Usa memorizzazione non sicura"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Posizione:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Vecchia password:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Password:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Conferma password:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Robustezza della nuova password"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Le password non corrispondono."
-
-# GNOME-2-22
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "La password non può essere vuota"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Nega"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Consenti sta_volta"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Consenti _sempre"
diff --git a/po/ja.po b/po/ja.po
deleted file mode 100644
index 02a31b4c..00000000
--- a/po/ja.po
+++ /dev/null
@@ -1,619 +0,0 @@
-# gnome-keyring ja.po.
-# Copyright (C) 2003-2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Takeshi AIHANA <takeshi.aihana@gmail.com>, 2003-2008.
-# Satoru SATOH <ss@gnome.gr.jp>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-17 10:54+0900\n"
-"PO-Revision-Date: 2008-02-17 10:14+0900\n"
-"Last-Translator: Takeshi AIHANA <takeshi.aihana@gmail.com>\n"
-"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "リムーバブルなディスク: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "リムーバブルなディスク"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "ホーム"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "このファイルが格納されているディスクまたはドライブが存在しません"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"アプリケーション '%s' (%s) がデフォルトのキーリングにある '<object "
-"prop='name'/>' のパスワードにアクセスしようとしています。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"アプリケーション '%s' (%s) が %s にある '<object prop='name'/>' のパスワード"
-"にアクセスしようとしています。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"アプリケーション '%s' がデフォルトのキーリングにある '<object prop='name'/>' "
-"のパスワードにアクセスしようとしています。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"アプリケーション '%s' が %s にある '<object prop='name'/>' のパスワードにアク"
-"セスしようとしています。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"不明なアプリケーションがデフォルトのキーリングにある '<object prop='name'/>' "
-"のパスワードにアクセスしようとしています。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"不明なアプリケーションが %s にある '<object prop='name'/>' のパスワードにアク"
-"セスしようとしています。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "アクセスの許可"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "アプリケーションにキーリングへのアクセスを許可しますか?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "キーリング %s のロックを解除するパスワード"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"アプリケーション '%s' (%s) がデフォルトのキーリングへアクセスしようとしました"
-"が、ロックがかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"アプリケーション '%s' (%s) がキーリングの '%s' へアクセスしようとしましたが、"
-"ロックがかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"アプリケーション '%s' がデフォルトのキーリングへアクセスしようとしましたが、"
-"ロックがかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"アプリケーション '%s' がキーリングの '%s' へアクセスしようとしましたが、ロッ"
-"クがかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"不明なアプリケーションがデフォルトのキーリングへアクセスしようとしましたが、"
-"ロックがかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"不明なアプリケーションがキーリング '%s' へアクセスしようとしましたが、ロック"
-"がかかっていました。"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "キーリング (デフォルト) のロックを解除するパスワードを入力して下さい"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "キーリング '%s' のロックを解除するパスワードを入力して下さい"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "キーリングのロック解除"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "ログインしたら、このキーリングのロックを自動的に解除する"
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' (%s) が '%s' という新しいキーリングを生成しようとしてい"
-"ます。このキーリングのパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' (%s) が新しいデフォルトのキーリングを生成しようとしてい"
-"ます。このキーリングのパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' が '%s' という新しいキーリングを生成しようとしていま"
-"す。このキーリングのパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' が新しいキーリングを生成しようとしています。このキーリ"
-"ングのパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"不明なアプリケーションが '%s' という新しいキーリングを生成しようとしていま"
-"す。このキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"不明なアプリケーションが新しいデフォルトのキーリングを生成しようとしていま"
-"す。このキーリングで使用するパスワードを選択して下さい。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "新しいキーリングのパスワード"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "新しいキーリングのパスワードの選択"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' (%s) がキーリング '%s' のパスワードを変更しようとしてい"
-"ます。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' (%s) がデフォルトのキーリングのパスワードを変更しようと"
-"しています。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' がキーリング '%s' のパスワードを生成しようとしていま"
-"す。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"アプリケーション '%s' がデフォルトのキーリングのパスワードを変更しようとして"
-"います。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"不明なアプリケーションが '%s' というキーリングのパスワードを変更しようとして"
-"います。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"不明なアプリケーションが新しいデフォルト・キーリングのパスワードを変更しよう"
-"としています。そのキーリングで使用するパスワードを選択して下さい。"
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "キーリング '%s' の新しいパスワードを選択して下さい"
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "デフォルトのキーリングの新しいパスワードを選択して下さい"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "キーリングのパスワードの変更"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"アプリケーション '%s' (%s) がパスワードを保存しようとしていますが、デフォルト"
-"のキーリングがありません。デフォルトのキーリングを生成する場合はパスワードを"
-"選択する必要があります。"
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"アプリケーション '%s' がパスワードを保存しようとしていますが、デフォルトの"
-"キーリングがありません。デフォルトのキーリングを生成する場合はパスワードを選"
-"択する必要があります。"
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"不明なアプリケーションがパスワードを保存しようとしていますが、デフォルトの"
-"キーリングがありません。デフォルトのキーリングを生成する場合はパスワードを選"
-"択する必要があります。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "キーリング (デフォルト) の生成"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "キーリング (デフォルト) のパスワードの選択"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"このオプションは gnome-keyring デーモンの PKCS#11 コンポーネントを有効にしま"
-"す。gnome-keyring デーモンを起動した時 (すなわちユーザがログインしている場"
-"合) にのみ効果があります。ここで設定した内容はコマンドラインから上書きするこ"
-"とができます。"
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"このオプションは gnome-keyring デーモンの SSH コンポーネントを有効にします。"
-"gnome-keyring デーモンを起動した時 (すなわちユーザがログインしている場合) に"
-"のみ効果があります。ここで設定した内容はコマンドラインから上書きすることがで"
-"きます。"
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "PKCS#11 コンポーネントを有効にするかどうか"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "SSH エージェントを有効にするかどうか"
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "アクセスが拒否されました"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "'gnome-keyring-daemon' が起動されていません"
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "gnome-keyring-daemon への接続に失敗しました"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "その名前のキーリングが既に存在します"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "致命的なエラー: アプリケーションがおかしなデータを送信しました"
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "一致する結果はありません"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "その名前のキーリングは存在しません"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "キーリングは既にロックがかかっています"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "ログイン用キーリングのロック解除"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "ログイン・パスワードを入力して、キーリングのロックを解除して下さい"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"このコンピュータにログインした際に、ログイン用キーリングのロックを自動的には"
-"解除できませんでした。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "ログイン用キーリングの生成"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "ログイン・パスワードを入力して下さい"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"このコンピュータにログインした際にログイン用キーリングが自動的には生成されな"
-"かったので、今から生成します。"
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "秘密鍵の解除"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "証明書の解除"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "公開鍵の解除"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "ロックの解除"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "パスワードを入力して秘密鍵を解除して下さい"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "パスワードを入力して証明書によるロックを解除して下さい"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "パスワードを入力して公開鍵を解除して下さい"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "パスワードを入力してロックを解除して下さい"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "ログインしたら、この秘密鍵を自動的に解除する"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "ログインしたら、この証明書によるロックを自動的に解除する"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "ログインしたら、この公開鍵を自動的に解除する"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "ログインしたら、このロックを自動的に解除する"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"アプリケーションが秘密鍵の '%s' にアクセスしようとしましたが、ロックがかかっ"
-"ていました。"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"アプリケーションが証明書の '%s' にアクセスしようとしましたが、ロックがかかっ"
-"ていました。"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"アプリケーションが公開鍵の '%s' にアクセスしようとしましたが、ロックがかかっ"
-"ていました。"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr ""
-"アプリケーションが '%s' にアクセスしようとしましたが、ロックがかかっていまし"
-"た。"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"システムが秘密鍵の '%s' をインポートしようとしましたが、ロックがかかっていま"
-"した。"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"システムが証明書の '%s' をインポートしようとしましたが、ロックがかかっていま"
-"した。"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"システムが公開鍵の '%s' をインポートしようとしましたが、ロックがかかっていま"
-"した。"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr ""
-"システムが '%s' をインポートしようとしましたが、ロックがかかっていました。"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "'%s' のロックを解除するパスワード"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "認識できないファイルかサポートしていないファイルです"
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "不正なファイルまたはファイルが壊れているようなので解析できませんでした"
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "暗号化していないパスワードを保存しますか?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"空のパスワードを利用する場合、保存しておいたパスワードは完全には暗号化されま"
-"せん。他の人達がこれらのパスワードを利用する可能性があります。"
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "安全ではないストレージを使う"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "場所(_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "古いパスワード(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "パスワード(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "パスワードの確認(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "新しいパスワードの強度"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "パスワードが一致しません。"
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "パスワードを空にしないで下さい"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "拒否する"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "一度だけ許可する(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "常に許可する(_A)"
diff --git a/po/ka.po b/po/ka.po
deleted file mode 100644
index 93a19597..00000000
--- a/po/ka.po
+++ /dev/null
@@ -1,363 +0,0 @@
-# Georgian translation for Gnome Keyring.
-# Copyright © 2006 Ubuntu Georgian Translators.
-# Alexander Didebulidze <didebuli@in.tum.de>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-02-21 14:31+0100\n"
-"Last-Translator: Alexander Didebulidze <didebuli@in.tum.de>\n"
-"Language-Team: Georgian <ka@li.org>\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"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-#, fuzzy
-msgid "Old password cannot be blank."
-msgstr "ცარიელი პაროლი არ არის დაშვებული."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "ცარიელი პაროლი არ არის დაშვებული."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "პაროლები არ ემთხვევა ერთმანეთს."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "შეიყვანე პაროლი სტანდარტული keyring–ის გასახსნელად"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "შეიყვანე პაროლი keyring '%s' –ის გასახსნელად"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "გახსენი Keyring–ი"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "აკრძალე"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' (%s)სურს გააკეთოს ახალი keyring შეერთება '%s'. მის "
-"გამოსაყენებლად საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' (%s)სურს შექმნას ახალი სტანდარტული keyring–ი. მის "
-"გამოსაყენებლად საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს გააკეთოს ახალი keyring შეერთება '%s'. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს შექმნას ახალი სტანდარტული keyring–ი. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "ახალი Keyring პაროლი"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' (%s)სურს შექმნას ახალი სტანდარტული keyring–ი. მის "
-"გამოსაყენებლად საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' (%s)სურს შექმნას ახალი სტანდარტული keyring–ი. მის "
-"გამოსაყენებლად საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს შექმნას ახალი სტანდარტული keyring–ი. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს შექმნას ახალი სტანდარტული keyring–ი. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს შექმნას ახალი სტანდარტული keyring–ი. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"პროგრამა '%s' სურს შექმნას ახალი სტანდარტული keyring–ი. მის გამოსაყენებლად "
-"საჭიროა პაროლის არჩევა."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr ""
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "შეიყვანე პაროლი სტანდარტული keyring–ის გასახსნელად"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "ახალი Keyring პაროლი"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "დაუშვი მხოლოდ _ერთხელ"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_ყოველთვის დაუშვი"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr ""
diff --git a/po/ko.po b/po/ko.po
deleted file mode 100644
index 4b75a833..00000000
--- a/po/ko.po
+++ /dev/null
@@ -1,585 +0,0 @@
-# This file is distributed under the same license as the PACKAGE package.
-# Changwoo Ryu <cwryu@debian.org>, 2004, 2006, 2007, 2008.
-# Young-Ho Cha <ganadist@gmail.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-25 04:30+0900\n"
-"PO-Revision-Date: 2008-02-25 11:28+0900\n"
-"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
-"Language-Team: GNOME Korea <gnome-kr-hackers@lists.kldp.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "이동식 디스크: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "이동식 디스크"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "홈"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "파일이 들어 있는 디스크나 드라이브가 없습니다"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"'%s' (%s) 프로그램에서 '<object prop='name'/>'에 대한 암호를 기본 키 모음에"
-"서 접근하려 합니다."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"'%s' (%s) 프로그램에서 '<object prop='name'/>'에 대한 암호를 %s에서 접근하려 "
-"합니다."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"'%s' 프로그램에서 '<object prop='name'/>'에 대한 암호를 기본 키 모음에서 접근"
-"하려 합니다."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"'%s' 프로그램에서 '<object prop='name'/>'에 대한 암호를 %s에서 접근하려 합니"
-"다."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"알 수 없는 프로그램에서 '<object prop='name'/>'에 대한 암호를 기본 키 모음에"
-"서 접근하려 합니다."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"알 수 없는 프로그램에서 '<object prop='name'/>'에 대한 암호를 %s에서 접근하"
-"려 합니다."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "접근 허용"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "프로그램에 키 모음 접근을 허용합니까?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s 키 모음의 잠금 풀기 암호"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"프로그램 '%s'(%s)에서 기본 키 모음에 접근하려 합니다. 하지만 키 모음이 잠겨 "
-"있습니다"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"프로그램 '%s'(%s)에서 키 모음 '%s'에 접근하려 합니다. 하지만 키 모음이 잠겨 "
-"있습니다"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"프로그램 '%s'에서 기본 키 모음에 접근하려 합니다. 하지만 키 모음이 잠겨 있습"
-"니다"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"프로그램 '%s'에서 키 모음 '%s'에 접근하려 합니다. 하지만 키 모음이 잠겨 있습"
-"니다"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"알 수 없는 프로그램에서 기본 키 모음에 접근하려 합니다. 하지만 키 모음이 잠"
-"겨 있습니다"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"알 수 없는 프로그램에서 키 모음 '%s'에 접근하려 합니다. 하지만 키 모음이 잠"
-"겨 있습니다"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "기본 키 모음의 잠금을 풀 암호를 입력하십시오"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "키 모음 '%s'의 잠금을 풀 암호를 입력하십시오"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "키 모음 잠금 풀기"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "로그인할 때 자동으로 이 키 모음 잠금 풉니다."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) 프로그램에서 '%s' 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) 프로그램에서 기본 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"홀흘 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' 프로그램에서 '%s' 키 모음을 새로 만드려고 합니다. 여기에 사용할 암호를 "
-"지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' 프로그램에서 기본 키 모음을 새로 만드려고 합니다. 여기에 사용할 암호를 "
-"지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"알 수 없는 프로그램에서 '%s' 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"알 수 없는 프로그램에서 기본 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"호를 지정해야 합니다."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "새 키 모음 암호"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "새 키 모음에 대한 암호를 지정하십시오"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) 프로그램에서 '%s' 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) 프로그램에서 기본 키 모음을 새로 만드려고 합니다. 여기에 사용할 암"
-"호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' 프로그램에서 '%s' 키 모음에 대한 암호를 바꾸려고 합니다. 여기에 사용할 "
-"암호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' 프로그램에서 기본 키 모음을 암호를 바꾸려고 합니다. 여기에 사용할 열쇠글"
-"을 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"알 수 없는 프로그램에서 '%s' 키 모음의 암호를 바꾸려고 합니다. 여기에 사용할 "
-"암호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"알 수 없는 프로그램에서 기본 키 모음을 암호를 바꾸려고 합니다. 여기에 사용할 "
-"암호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' 키 모음에 대한 암호를 지정하십시오"
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "기본 키 모음에 대한 암호를 지정하십시오"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "키 모음 암호 바꾸기"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) 프로그램에서 암호를 저장하려 하지만, 기본 키 모음이 없습니다. 기본 "
-"키 모음을 만드려면 여기에 사용할 암호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' 프로그램에서 암호를 저장하려 하지만, 기본 키 모음이 없습니다. 기본 키 모"
-"음을 만드려면 여기에 사용할 암호를 지정해야 합니다."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"알 수 없는 프로그램에서 암호를 저장하려 하지만, 기본 키 모음이 없습니다. 기"
-"본 키 모음을 만드려면 여기에 사용할 암호를 지정해야 합니다."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "기본 키 모음 만들기"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "기본 키 모음에 대한 암호를 지정하십시오"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "이 옵션은 gnome-keyring 데몬에서 PKCS#11 컴포넌트를 사용합니다. 이 옵션은 gnome-keyring-daemon이 시작했을 경우에만, 즉 사용자가 로그인했을 경우에만 효과가 있습니다. 데몬에 특정 명령행 인자를 넘겼을 경우에 이 설정보다 우선할 수 있습니다."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "이 옵션은 gnome-keyring 데몬에서 SSH 에이전트를 사용합니다. 이 옵션은 gnome-keyring-daemon이 시작했을 경우에만, 즉 사용자가 로그인했을 경우에만 효과가 있습니다. 데몬에 특정 명령행 인자를 넘겼을 경우에 이 설정보다 우선할 수 있습니다."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "그놈 키 모음의 PKCS#11 컴포넌트를 사용할 지 여부."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "그놈 키 모음의 SSH 에이전트를 사용할 지 여부."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "접근이 거부되었습니다"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon 프로그램이 동작하는 중이 아닙니다."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "gnome-keyring-daemon과 통신하는 데 오류가 발생했습니다"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "그 이름의 키 모음이 이미 있습니다"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "프로그램 오류: 응용 프로그램에서 잘못된 데이터를 보냈습니다."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "해당하는 사항 없음"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "그 이름의 키 모음이 없습니다."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "키 모음의 잠금이 이미 풀려 있습니다."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "로그인 키 모음 잠금 풀기"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "키 모음의 잠금을 푸는 로그인 암호 입력"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "전에 이 컴퓨터에 로그인했을 때 로그인 키 모음을 자동으로 만들지 않았습니다."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "로그인 키 모음 만들기"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "로그인 암호 입력"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "전에 이 컴퓨터에 로그인했을 때 로그인 키 모음을 자동으로 만들지 않았습니다. 지금 만듭니다."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "개인 키 잠금 풀기"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "인증서 잠금 풀기"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "공개 키 잠금 풀기"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "잠금 풀기"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "개인 키의 잠금을 풀 암호를 입력하십시오"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "인증서의 잠금을 풀 암호를 입력하십시오"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "공개 키의 잠금을 풀 암호를 입력하십시오"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "잠금을 풀 암호를 입력하십시오"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "로그인할 때 자동으로 이 개인 키의 잠금을 풉니다."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "로그인할 때 자동으로 이 인증서의 잠금을 풉니다."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "로그인할 때 자동으로 이 공개 키의 잠금을 풉니다."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "로그인할 때 자동으로 잠금을 풉니다"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "어떤 프로그램에서 개인 키 '%s'에 접근하려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "어떤 프로그램에서 인증서 '%s'에 접근하려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "어떤 프로그램에서 공개 키 '%s'에 접근하려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "어떤 프로그램에서 '%s'에 접근하려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "시스템에서 '%s' 개인 키를 가져오려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "시스템에서 '%s' 인증서를 가져오려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "시스템에서 '%s' 공개 키를 가져오려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "시스템에서 '%s'을(를) 가져오려 합니다. 하지만 잠겨 있습니다"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "%s의 잠금 풀기 암호"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "알지 못하거나 지원하지 않는 파일."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "잘못되었거나 손상된 파일을 파싱할 수 없습니다."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "암호를 압호화하지 않은 상태로 저장하시겠습니까?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "암호를 비워 놓으면 암호화하지 않은 상태로 암호를 저장합니다. 그러면 파일을 볼 수 있는 사람이면 암호를 알아낼 수 있습니다."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "안전하지 않은 저장소 사용"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "위치(_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "과거 암호(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "암호(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "암호 확인(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "새 암호 품질"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "암호가 맞지 않습니다."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "암호는 비워져 있으면 안 됩니다"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "거부"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "한 번만 허용(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "항상 허용(_A)"
diff --git a/po/lt.po b/po/lt.po
deleted file mode 100644
index 5fe4cf2e..00000000
--- a/po/lt.po
+++ /dev/null
@@ -1,607 +0,0 @@
-# translation of lt.po to Lithuanian
-# Lithuanian translation of gnome-keyring.
-# Copyright (C) 2004-2007, 2008 Free Software Foundation, Inc.
-#
-# Tomas Kuliavas <tokul@users.sourceforge.net>, 2004.
-# Žygimantas Beručka <zygis@gnome.org>, 2004-2007.
-# Gintautas Miliauskas <gintas@akl.lt>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-02 16:48+0200\n"
-"PO-Revision-Date: 2008-03-02 16:47+0200\n"
-"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\n"
-"Language-Team: Lithuanian <gnome-lt@lists.akl.lt>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Išimamas diskas: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Išimamas diskas"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Namai"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Nerastas diskas, kuriame yra šis failas"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Programa „%s“ (%s) nori gauti prieigą prie „<object prop='name'/>“ "
-"slaptažodžio numatytoje raktinėje."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Programa „%s“ (%s) nori gauti prieigą prie „<object prop='name'/>“ "
-"slaptažodžio, esančio %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Programa „%s“ nori gauti prieigą prie „<object prop='name'/>“ slaptažodžio "
-"numatytoje raktinėje."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Programa „%s“ nori gauti prieigą prie „<object prop='name'/>“ slaptažodžio, "
-"esančio %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie „<object prop='name'/>“ "
-"slaptažodžio numatytoje raktinėje."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie „<object prop='name'/>“ "
-"slaptažodžio, esančio %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Suteikti prieigą"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Ar suteikti programai prieigą prie raktinės?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Raktinės %s atrakinimo slaptažodis"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programa „%s“ (%s) nori gauti prieigą prie numatytosios raktinės, tačiau ji "
-"užrakinta"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programa „%s“ (%s) nori gauti prieigą prie raktinės „%s“, tačiau ji "
-"užrakinta."
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Programa „%s“ nori gauti prieigą prie numatytosios raktinės, tačiau ji "
-"užrakinta."
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programa „%s“ nori gauti prieigą prie raktinės „%s“, tačiau ji yra užrakinta"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie numatytosios raktinės, tačiau ji "
-"užrakinta"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie raktinės „%s“, tačiau ji užrakinta"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Įveskite numatytosios raktinės atrakinimo slaptažodį"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Įveskite raktinės „%s“ atrakinimo slaptažodį"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Atrakinti raktinę"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Kai prisijungiu, automatiškai atrakinti šią raktinę."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ (%s) nori sukurti naują raktinę pavadinimu „%s“. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ (%s) nori sukurti naują numatytąją raktinę. Turite pasirinkti "
-"jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ nori sukurti naują raktinę pavadinimu „%s“. Turite pasirinkti "
-"jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ nori sukurti naują numatytąją raktinę. Turite pasirinkti jai "
-"naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nežinoma programa nori sukurti naują raktinę pavadinimu „%s“. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nežinoma programa nori sukurti naują numatytąją raktinę. Turite pasirinkti "
-"jai naudotiną slaptažodį."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Naujas raktinės slaptažodis"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Pasirinkite naujos raktinės slaptažodį"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ (%s) ketina pakeisti raktinės „%s“ slaptažodį. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ (%s) ketina pakeisti numatytosios raktinės slaptažodį. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ ketina pakeisti raktinės „%s“ slaptažodį. Turite pasirinkti "
-"jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programa „%s“ ketina pakeisti numatytosios raktinės slaptažodį. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nežinoma programa ketina pakeisti raktinės „%s“ slaptažodį. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nežinoma programa ketina pakeisti numatytosios raktinės slaptažodį. Turite "
-"pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Pasirinkite naują raktinės „%s“ slaptažodį. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Pasirinkite naują numatytosios raktinės slaptažodį. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Pakeiskite raktinės slaptažodį"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programa „%s“ (%s) nori išsaugoti slaptažodį, tačiau nėra numatytosios "
-"raktinės. Norėdami ją sukurti, turite pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programa „%s“ nori išsaugoti slaptažodį, tačiau nėra numatytosios raktinės. "
-"Norėdami ją sukurti, turite pasirinkti jai naudotiną slaptažodį."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nežinoma programa nori išsaugoti slaptažodį, tačiau nėra numatytosios "
-"raktinės. Norėdami ją sukurti, turite pasirinkti jai naudotiną slaptažodį."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Sukurti numatytąją raktinę"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Pasirinkite numatytosios raktinės slaptažodį"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Ši parinktis įjungia PKCS#11 komponentą gnome-keyring tarnyboje. Ji svarbi "
-"tik startuojant gnome-keyring tarnybą, t.y., kai naudotojas prisijungia. Šis "
-"nustatymas gali būti pakeistas komandinės eilutės parametrais."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Ši parinktis įjungia SSH agentą gnome-keyring tarnyboje. Ji svarbi tik "
-"startuojant gnome-keyring tarnybą, t.y., kai naudotojas prisijungia. Šis "
-"nustatymas gali būti pakeistas komandinės eilutės parametrais."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Ar gnome-keyring PKCS#11 komponentas įjungtas."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Ar gnome-keyring SSH agentas įjungtas."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Prieiga uždrausta"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Nepaleista gnome-keyring-daemon programa."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Ryšio su gnome-keyring-manager klaida"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Raktinė tokiu pavadinimu jau yra"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programavimo klaida: programa perdavė netinkamus duomenis."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Nerasta tinkamų rezultatų"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Raktinė tokiu pavadinimu neegzistuoja."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Raktinė jau buvo atrakinta."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Atrakinti prisijungimo raktinę"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Įveskite prisijungimo slaptažodį, kad atrakintumėte raktinę"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Prisijungimo raktinė nebuvo automatiškai atverta kai pradėjote dirbti prie "
-"šio kompiuterio."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Sukurti prisijungimo raktinę"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Pakeiskite prisijungimo slaptažodį"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Prisijungimo raktinė nebuvo automatiškai sukurta, kai prisijungėte. Ji bus "
-"sukurta dabar."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Atrakinti privatų raktą"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Atrakinti sertifikatą"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Atrakinti viešąjį raktą"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Atrakinti"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Įveskite slaptažodį, kad atrakintumėte privatų raktą"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Įveskite slaptažodį, kad atrakintumėte sertifikatą"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Įveskite slaptažodį, kad atrakintumėte viešajį raktą"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Įveskite atrakinimo slaptažodį"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Kai prisijungiu, automatiškai atrakinti šį privatų raktą."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Kai prisijungiu, automatiškai atrakinti šį sertifikatą."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Kai prisijungiu, automatiškai atrakinti šį viešąjį raktą."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Kai prisijungiu, automatiškai atrakinti."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie privataus rakto „%s“, tačiau jis "
-"užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie sertifikato „%s“, tačiau jis "
-"užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Nežinoma programa nori gauti prieigą prie viešojo rakto „%s“, tačiau jis "
-"užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Nežinoma programa nori gauti prieigą prie „%s“, tačiau jis užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Sistema nori importuoti privatų raktą „%s“, bet jis užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Sistema nori importuoti sertifikatą „%s“, bet jis užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Sistema nori importuoti viešąjį raktą „%s“, bet jis užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Sistema nori importuoti „%s“, bet jis užrakintas"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "„%s“ atrakinimo slaptažodis"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Neatpažintas arba nepalaikomas failas."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Nepavyko apdoroti netaisyklingo arba sugadinto failo."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Saugoti nešifruotus slaptažodžius?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Jei pasirinksite tuščią slaptažodį, saugomi slaptažodžiai nebus saugiai "
-"užšifruoti. Jie bus prieinami visiems, kas gali skaityti Jūsų failus."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Naudoti nesaugią saugyklą"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Vieta:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "S_enas slaptažodis:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Slaptažodis:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Patvirtinkite slaptažodį:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Naujo slaptažodžio stiprumas"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Slaptažodžiai nesutampa."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Slaptažodis negali būti tuščias"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Uždrausti"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Leisti _tik šį kartą"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Visada leisti"
diff --git a/po/lv.po b/po/lv.po
deleted file mode 100644
index d78a7ae7..00000000
--- a/po/lv.po
+++ /dev/null
@@ -1,405 +0,0 @@
-# translation of lv.po to Latvian
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Linux Centrs <info@linux.edu.lv>, 2006.
-# Raivis Dejus <orvils@gmail.com>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: lv\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-07-08 13:05+0300\n"
-"Last-Translator: Raivis Dejus <orvils@gmail.com>\n"
-"Language-Team: Latvian <locale@laka.lv>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "_Iepriekšējā parole:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Parole:"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "_Apstiprināt jauno paroli:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">Paroles stipruma mērītājs:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "Iepriekšējai parolei jāsatur vismaz viens simbols."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Parolei jāsatur vismaz viens simbols."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Paroles nesakrīt."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt noklusētajam atslēgu saišķim, bet tas ir "
-"aizslēgts"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt atslēgu saišķim '%s', bet tas ir aizslēgts"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt nezināmam atslēgu saišķim, bet tas ir "
-"aizslēgts"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Programma '%s' vēlas piekļūt noklusētajam atslēgu saišķim, bet tas ir "
-"aizslēgts"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programma '%s' vēlas piekļūt atslēgu saišķim '%s', bet tas ir aizslēgts"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Programma '%s' vēlas piekļūt nezināmam atslēgu saišķim, bet tas ir aizslēgts"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nezināma programma vēlas piekļūt noklusētajam atslēgu saišķim, bet tas ir "
-"aizslēgts"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Nezināma programma vēlas piekļūt atslēgu saišķim '%s', bet tas ir aizslēgts"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Nezināma programma vēlas piekļūt nezināmam atslēgu saišķim, bet tas ir "
-"aizslēgts"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Ievadiet paroli lai atslēgtu noklusēto atslēgu saišķi"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Ievadiet paroli lai atslēgtu atslēgu saišķi '%s'"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Atslēgt atslēgu saišķi"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Liegt"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programma '%s' (%s) vēlas izveidot jaunu atslēgu saišķi ar nosaukumu '%s'. "
-"Lūdzu izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programma '%s' (%s) vēlas izveidot jaunu noklusēto atslēgu saišķi. Lūdzu "
-"izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programma '%s' vēlas izveidot jaunu atslēgu saišķi ar nosaukumu '%s'. Lūdzu "
-"izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programma '%s' vēlas izveidot jaunu noklusēto atslēgu saišķi. Lūdzu "
-"izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nezināma programma vēlas izveidot jaunu atslēgu saišķi ar nosaukumu '%s'. "
-"Lūdzu izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nezināma programma vēlas izveidot jaunu noklusēto atslēgu saišķi. Lūdzu "
-"izvēlieties tam paroli."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Ievadiet atslēgu saišķa jauno paroli"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Izvēlieties jaunu paroli atslēgu saišķim"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programma '%s' (%s) vēlas mainīt atslēgu saišķa '%s' paroli. Lūdzu "
-"izvēlieties paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programma '%s' (%s) vēlas mainīt noklusētā atslēgu saišķa paroli. Lūdzu "
-"izvēlieties paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programma '%s' vēlas mainīt atslēgu saišķa '%s' paroli. Lūdzu izvēlieties "
-"paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programma '%s' vēlas mainīt noklusētā atslēgu saišķa paroli. Lūdzu "
-"izvēlieties paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nezināma programma vēlas mainīt atslēgu saišķa '%s' paroli. Lūdzu "
-"izvēlieties paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nezināma programma vēlas mainīt noklusētā atslēgu saišķa paroli. Lūdzu "
-"izvēlieties paroli šim nolūkam."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Izvēlieties jaunu paroli atslēgu saišķim '%s'. "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "Izvēlēties paroli noklusētajam atslēgu saišķim. "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Mainīt atslēgu saisķa paroli"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programma '%s' (%s) vēlas saglabāt paroli noklusētajā atslēgu saišķī, bet "
-"tāds neeskistē. Lai izveidotu jaunu noklusēto atslēgu saišķi, izvēlieties "
-"tam paroli."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programma '%s' vēlas saglabāt paroli noklusētajā atslēgu saišķī, bet tāds "
-"neeskistē. Lai izveidotu jaunu noklusēto atslēgu saišķi, izvēlieties tam "
-"paroli."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nezināma programma vēlas saglabāt paroli noklusētajā atslēgu saišķī, bet "
-"tāds neeskistē. Lai izveidotu jaunu noklusēto atslēgu saišķi, izvēlieties "
-"tam paroli."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Izveidot noklusēto atslēgu saišķi"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Izvēlēties paroli noklusētajam atslēgu saišķi"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Atļaut programmai pieeju atslēgu saišķim?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt parolei priekš '%s', kura tiek glabāta %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt parolei priekš '%s', kura tiek glabāta "
-"noklusētajā atslēgu saišķī."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Programma '%s' (%s) vēlas piekļūt parolei priekš '%s', kura tiek glabāta "
-"nezināmā atslēgu saišķī."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr ""
-"Programma '%s' vēlas piekļūt parolei priekš '%s', kura tiek glabāta %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Programma '%s' vēlas piekļūt parolei priekš '%s', kura tiek glabāta "
-"noklusētajā atslēgu saišķī."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Programma '%s' vēlas piekļūt parolei priekš '%s', kura tiek glabāta nezināmā "
-"atslēgu saišķī."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-"Nezināma programma vēlas piekļūt parolei priekš '%s', kura tiek glabāta %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Nezināma programma vēlas piekļūt parolei priekš '%s', kura tiek glabāta "
-"noklusētajā atslēgu saišķī."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Nezināma programma vēlas piekļūt parolei priekš '%s', kura tiek glabāta "
-"nezināmā atslēgu saišķī."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Atļaut pieeju"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Atļaut _vienreiz"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Atļaut vienmēr"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Lūdzu norādiet pieprasījuma veidu, lai palaistu\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Nezināms pieprasījuma veids\n"
diff --git a/po/mg.po b/po/mg.po
deleted file mode 100644
index 22531793..00000000
--- a/po/mg.po
+++ /dev/null
@@ -1,410 +0,0 @@
-# Translation of gnome-keyring to Malagasy.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# Thierry Randrianiriana <randrianiriana@gmail.com>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: GNOME-KEYRING VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-08-18 23:15+0300\n"
-"Last-Translator: Fano Rajaonarisoa <rajfanhar@yahoo.fr>\n"
-"Language-Team: MALAGASY <i18n-malagasy-gnome@gna.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "_Teny fanalahidy taloha:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Teny fanalahidy:"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "_Amarino ny teny fanalahidy vaovao:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">Mpandrefy herin-teny fanalahidy :</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "Tsy azo atao foana ny teny fanalahidy taloha."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Tsy azo atao foana ny teny fanalihidy."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Tsy mifanaraka ireo teny fanalahidy roa."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa ny rojom-panalahidy lasitra nefa "
-"voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa ny rojom-panalahidy '%s' , nefa "
-"voageja ilay izy"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa rojom-panalahidy tsy fantatra , "
-"nefa voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa ny rojom-panalahidy lasitra , nefa "
-"voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa ny rojom-panalahidy '%s' , nefa voageja "
-"ilay izy"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa rojom-panalahidy tsy fantatra , nefa "
-"voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa ny rojom-panalahidy lasitra, nefa "
-"voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa ny rojom-panalahidy '%s', nefa "
-"voageja ilay izy"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa rojom-panalahidy tsy fantatra, nefa "
-"voageja ilay izy"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Soraty ny teny fanalahidy hanafahana ny rojom-panalahidy lasitra"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Soraty ny teny fanalahidy hanafahana ny rojom-panalahidy '%s'"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Manafaka ilay rojom-panalahidy"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Lavo"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hamorona rojom-panalahidy vaovao antsoina hoe "
-"'%s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hamorona rojom-panalahidy lasitra vaovao. "
-"Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' dia te hamorona rojom-panalahidy vaovao antsoina hoe '%"
-"s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' dia te hamorona rojom-panalahidy lasitra vaovao. Mila "
-"milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Misy rindranasa tsy fantatra te hamorona rojom-panalahidy vaovao antsoina "
-"hoe '%s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Misy rindranasa tsy fantatra te hamorona rojom-panalahidy lasitra vaovao. "
-"Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Teny fanalahidin'ilay rojom-panalahidy vaovao"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Lazao ny teny fanalahidin'ilay rojom-panalahidy vaovao"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hanova ny teny fanalahidin'ny rojom-"
-"panalahidy '%s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hanova ny teny fanalahidin'ny rojom-"
-"panalahidy lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' dia te hanova ny teny fanalahidin'ny rojom-panalahidy '%"
-"s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ny rindranasa '%s' dia te hanova ny teny fanalahidin'ny rojom-panalahidy "
-"lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io ianao."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Misy rindranasa tsy fantatra te hanova ny teny fanalahidin'ny rojom-"
-"panalahidy '%s'. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao."
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Misy rindranasa tsy fantatra te hanova ny teny fanalahidin'ny rojom-"
-"panalahidy lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Milazà teny fanalahidy vaovao ho an'ny rojom-panalahidy '%s'."
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "Milazà teny fanalahidy vaovao ho an'ny rojom-panalahidy lasitra."
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Hanova ny teny fanalahidin'ilay rojom-panalahidy"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Te hitahiry teny fanalahidy ny rindranasa '%s' (%s), saingy tsy misy rojom-"
-"panalahidy lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao raha hamorona rojo iray."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Te hitahiry teny fanalahidy ny rindranasa '%s', saingy tsy misy rojom-"
-"panalahidy lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina amin'io "
-"ianao raha hamorona rojo iray."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Misy ny rindranasa tsy fantatra te hitahiry teny fanalahidy, saingy tsy misy "
-"rojom-panalahidy lasitra. Mila milaza ny teny fanalahidy tianao ampiasaina "
-"amin'io ianao raha hamorona rojo iray."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Hamorona rojom-panalahidy lasitra"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Lazao ny teny fanalahidy ho an'ny rojom-panalahidy lasitra"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Avela hampiasa ny rojom-panalahidy ilay rindranasa?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa ny teny fanalahidin'ny '%s' amin'ny %"
-"s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa ny teny fanalahidin'ny '%s' amin'ny "
-"rojom-panalahidy lasitra."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Ny rindranasa '%s' (%s) dia te hampiasa ny teny fanalahidin'ny '%s' amina "
-"rojom-panalahidy tsy fantatra."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa ny teny fanalahidin'ny '%s' amin'ny %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa ny teny fanalahidin'ny '%s' amin'ny rojom-"
-"panalahidy lasitra."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Ny rindranasa '%s' dia te hampiasa ny teny fanalahidin'ny '%s' amina rojom-"
-"panalahidy tsy fantatra."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa ny teny fanalahidin'ny '%s' amin'ny "
-"%s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa ny teny fanalahidin'ny '%s' amin'ny "
-"rojom-panalahidy lasitra."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Misy rindranasa tsy fantatra te hampiasa ny teny fanalahidin'ny '%s' amina "
-"rojom-panalahidy tsy fantatra."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Avelao"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Avelao _indray mandeha"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Avelao foana"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Tsy maintsy milaza ny karazam-pangatahana hotanterahina ianao\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Karazam-pagatahana tsy fantatra\n"
diff --git a/po/mk.po b/po/mk.po
deleted file mode 100644
index 388650aa..00000000
--- a/po/mk.po
+++ /dev/null
@@ -1,589 +0,0 @@
-# translation of mk.po to Macedonian
-# Macedonian translation for gnome-keyring
-# Copyright (c) (c) 2005 Canonical Ltd, and Rosetta Contributors 2005
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Арангел Ангов <ufo@linux.net.mk>, 2005.
-# Arangel Angov <ufo@linux.net.mk>, 2006, 2008.
-# Arangel Angov <arangel@linux.net.mk>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: mk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-14 23:37+0000\n"
-"PO-Revision-Date: 2008-02-19 21:51+0100\n"
-"Last-Translator: Arangel Angov <ufo@linux.net.mk>\n"
-"Language-Team: Macedonian <ossm-members@hedona.on.net.mk>\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 % 10 == 1 && n % 100 != 11) ? 0 : 1\n"
-"X-Generator: KBabel 1.11.4\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Пренослив диск: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Пренослив диск"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Дома"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:497 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Дискот или уредот на кој што се наоѓа оваа датотека не е присутен"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да и пристапи на лозинката за „<object "
-"prop='name'/>“ во стандардниот привезок."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Апликацијата „%s“(%s) сака да и пристапи на лозинката за „<object "
-"prop='name'/>“ во „%s“."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Апликацијата „%s“ сака да и пристапи на лозинката за „<object prop='name'/>“ "
-"во стандардниот привезок."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Апликацијата „%s“ сака да и пристапи на лозинката за „<object prop='name'/>“ "
-"во %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Непозната апликација сака да и пристапи на лозинката за „<object prop='name'/"
-">“ во стандардниот привезок."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Непознатата апликација сака да и пристапи на лозинката за '<object "
-"prop='name'/>' во %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Дозволи"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Да дозволам пристап на апликациите до привезокот?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Изберете лозинка за новиот привезок за %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Апликацијата „%s“ (%s) бара пристап до стандардниот привезок но тој е "
-"заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Апликацијата „%s“ (%s) бара пристап до привезокот „%s“ но тој е заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Апликацијата „%s“ бара пристап до стандардниот привезок но тој е заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Апликацијата „%s“ бара пристап до привезокот „%s“ но тој е заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "Непозната апликација бара пристап до стандардниот привезок но тој е заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Непозната апликација бара пристап до привезокот „%s“ но тој е заклучен"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Внесете лозинка за да го отклучите стандардниот привезок"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Внесете лозинка за отклучување на привезокот „%s“"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Отклучи привезок"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Автоматски отклучи го привезокот кога ќе се најавам."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да креира нов привезок кој што ќе се вика „%s“. "
-"Треба да ја изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да креира нов стандарден привезок. Треба да ја "
-"изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ сака да креира нов привезок кој што ќе се вика „%s“. Треба "
-"да ја одберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ сака да креира нов стандарден привезок. Треба да ја "
-"изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Непозната апликација сака да креира нов привезок кој што ќе се вика „%s“. "
-"Треба да ја изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Непозната апликација сака да креиран нов стандарден привезок. Треба да "
-"изберете лозинка која што сакате да ја користите."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Нова лозинка за привезок"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Изберете лозинка за новиот привезок"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да ја смени лозинката за привезокот „%s“. Треба "
-"да ја изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да ја смени лозинката за стандардниот привезок. "
-"Треба да ја изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ сака да ја смени лозинката за привезокот „%s“. Треба да ја "
-"изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Апликацијата „%s“ сака да ја смени лозинката за стандардниот привезок. Треба "
-"да ја изберете лозинката која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Непозната апликација сака да ја смени лозинката за привезокот „%s“. Треба да "
-"изберете лозинка која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Непозната апликација сака да ја смени лозинката за стандардниот привезок. "
-"Треба да изберете лозинка која што сакате да ја користите."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Изберете нова лозинка за привезокот „%s“. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Изберете нова лозинка за стандардниот привезок. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Смени ја лозинката за привезокот"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Апликацијата „%s“ (%s) сака да складира лозинка но не постои стандарден "
-"привезок. За да креирате треба да изберете лозинка која што сакате да ја "
-"користите за истиот."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Апликацијата „%s“ сака да складира лозинка но не постои стандарден привезок. "
-"За да креирате треба да изберете лозинка која што сакате да ја користите за "
-"истиот."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Непозната апликација сака да складира лозинка но не пости стандарден "
-"привезок. За да креирате треба да изберете лозинка која што сакате да ја "
-"користите за истиот."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Креирај стандарден привезок"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Изберете лозинка за стандардниот привезок"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Оваа опција ја вклучува компонентата PKCS#11 во даемонот за gnome-keyring. "
-"Се применува само при подигнувањето на даемонот за gnome-keyring, (пр. при "
-"најава на корисникот). Ова поставување може да се избегне со додавање на "
-"одредени команди преку командната линија."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Оваа опција го вклучува SSH агентот во gnome-keyring даемонот. Се применува "
-"само кога при подигнувањето на даемонот за gnome-keyring, (пр. кога се "
-"најавува корисник). Ова поставување може да се избегне со додавање на "
-"одредени команди преку командната линија."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Дали е вклучена компонетата PKCS#11 за gnome-keyring."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Дали е вклучен SSH агентот за gnome-keyring."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Пристапот е одбиен"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon-от не работи."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Грешка при комуницирањето со gnome-keyring даемонот"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Привезок со тоа име веќе постои"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Програмерска грешка: Апликацијата испрати невалидни податоци."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Нема резултати кои што се совпаѓаат"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Привезок со тоа име веќе постои."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Привезокот е веќе отклучен."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Отклучи привезок за најава."
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Изберете лозинка за отклучување на привезокот"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "Вашиот привезок не беше автоматски отклучен кога се најавивте."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Креирај привезок за најава"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Внесете ја лозинката за најава"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Вашиот привезок не беше креиран автоматски кога се најавивте. Ќе биде "
-"креиран сега."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Отклучи приватен клуч"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Отклучи сертификат"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Отклучи јавен клуч"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Отклучи"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Внесете лозинка за отклучување на приватниот клуч"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Внесете лозинка за отклучување на сертификатот"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Внесете лозинка за отклучување на јавниот клуч"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Внесете лозинка за отклучување"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Автоматски отклучи го приватниот клуч кога ќе се најавам."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Автоматски отклучи го сертификатот кога ќе се најавам."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Автоматски отклучи го јавниот клуч кога ќе се најавам."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Автоматски отклучи го ова кога ќе се најавам."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Апликација бара пристап до приватниот клуч %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Апликација бара пристап до сертификатот %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Апликација бара пристап до јавниот клуч %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Апликација бара пристап до %s, но тој е заклучен."
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Системот сака да го увезе приватниот клуч %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Системот сака да го увезе сертификатот %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Системот сака да го увезе јавниот клуч %s, но тој е заклучен."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Системот сака да увезе %s, но тој е заклучен"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Отклучи ја лозинката за %s"
-
-#: ../pkix/gkr-pkix-parser.c:428
-msgid "Unrecognized or unsupported file."
-msgstr "Непозната и неподдржана датотека."
-
-#: ../pkix/gkr-pkix-parser.c:432
-msgid "Could not parse invalid or corrupted file."
-msgstr "Не можам да го ја парсирам невалидната расипана датотека."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Да ги зачувувам лозинките не-енкриптирани?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Со избирање на празна лозинка, Вашите зачувани лозинки нема да бидат "
-"енкриптирани. Тие ќе му бидат достапни на секој кој што има пристап до "
-"Вашите датотеки."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Користи несигурен склад"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Локација:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Стара лозинка:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Лозинка:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Потврди лозинка:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Нова јачина на лозинка"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Лозинките не се совпаѓаат."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Лозинката не може да биде празна"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Одбиј"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Само _еднаш"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Секогаш"
-
diff --git a/po/ml.po b/po/ml.po
deleted file mode 100644
index c0919624..00000000
--- a/po/ml.po
+++ /dev/null
@@ -1,389 +0,0 @@
-# translation of gnome-keyring.HEAD.ml.po to Malayalam
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-# Ani Peter <apeter@redhat.com>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.ml\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-08-06 17:28+0530\n"
-"Last-Translator: Ani Peter <apeter@redhat.com>\n"
-"Language-Team: Malayalam\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "പഴയ പാസ്‍വേര്‍ഡ്: (_O)"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "പാസ്‍വേര്‍ഡ്: (_P)"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "പുതിയ പാസ്‍വേര്‍ഡ് ഉറപ്പാക്കുക: (_C)"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">പാസ്‍വേര്‍ഡ് സ്ട്രെങ്ഥ് മീറ്റര്‍:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "പഴയ പാസ്‍വേര്‍ഡ് എഴുതേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "പാസ്‍വേര്‍ഡ് എഴുതേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "പാസ്‍വേര്‍ഡുകള്‍ തമ്മില്‍ പൊരുത്തക്കേട്."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് ഡീഫോള്‍ട്ട് കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് കീ റിങ് '%s'-ലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് പൂട്ടിയിരിക്കുന്നു "
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് അപരിചിതമായ ഒരു കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് "
-"പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"പ്രയോഗം '%s'-ന് ഡീഫോള്‍ട്ട് കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "പ്രയോഗം '%s'-ന് കീ റിങ് '%s'-ലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് പൂട്ടിയിരിക്കുന്നു "
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"പ്രയോഗം '%s'-ന് അപരിചിതമായ ഒരു കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് "
-"പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് ഡീഫോള്‍ട്ട് കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് "
-"പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് കീ റിങ് '%s-'ലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് "
-"പൂട്ടിയിരിക്കുന്നു "
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് അപരിചിതമായ ഒരു കീ റിങിലേക്ക് പ്രവേഷനം ആവശ്യമാണ്, പക്ഷേ അത് "
-"പൂട്ടിയിരിക്കുന്നു "
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "ഡീഫോള്‍ട്ടായ കീറിങ് തുറക്കുന്നതിനായി പാസ്‍വേര്‍ഡ് എന്‍റര്‍ ചെയ്യുക"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "കീ റിങ് '%s' തുറക്കുന്നതിനായി പാസ്‍വേര്‍ഡ് എന്‍റര്‍ ചെയ്യുക"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "കീ റിങ് തുറക്കുക"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "നിഷേധിക്കുക (_D)"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് '%s' എന്ന പുതിയ കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് ഒരു പുതിയ ഡീഫോള്‍ട്ട് കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് "
-"നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s'-ന് '%s' എന്ന പുതിയ കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s'-ന് ഒരു പുതിയ ഡീഫോള്‍ട്ട് കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് '%s' എന്ന പുതിയ കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് "
-"നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് ഒരു പുതിയ കീറിങ് ഉണ്ടാക്കണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "പുതിയ കീറിങ് പാസ്‍വേര്‍ഡ്"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "പുതിയ കീറിങിനായി പാസ്‍വേര്‍ഡ് തിരഞ്ഞെടുക്കുക"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് '%s' എന്ന കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് "
-"നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് ഡീഫോള്‍ട്ട് കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് "
-"നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s'-ന് '%s' എന്ന കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"പ്രയോഗം '%s'-ന് ഡീഫോള്‍ട്ട് കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് '%s' എന്ന കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള "
-"പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് ഡീഫോള്‍ട്ട് കീറിങിനുളള പാസ്‍വേര്‍ഡ് മാറ്റണം. ഇതിന് ആവശ്യമുളള "
-"പാസ്‍വേര്‍ഡ് നിങ്ങള്‍ തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' കീറിങിനായി പുതിയ ഒരു പാസ്‍വേര്‍ഡ് തിരഞ്ഞെടുക്കുക. "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "ഡീഫോള്‍ട്ട് കീറിങിനായി പുതിയ ഒരു പാസ്‍വേര്‍ഡ് തിരഞ്ഞെടുക്കുക. "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "കീറിങ് പാസ്‍വേര്‍ഡ് മാറ്റുക"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"പ്രയോഗം '%s' (%s)-ന് ഒരു പാസ്‍വേര്‍ഡ് സംരക്ഷിക്കണം, പക്ഷേ ഡീഫോള്‍ട്ടായ കീറിങ് ലഭ്യമല്ല. "
-"ഒരെണ്ണം ഉണ്ടാക്കുന്നതിനായി, അതിന് വേണ്ടി നിങ്ങള്‍ ഉപയോഗിക്കുവാന്‍ ആഗ്രഹിക്കുന്ന പാസ്‍വേര്‍ഡ് "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"പ്രയോഗം '%s'-ന് ഒരു പാസ്‍വേര്‍ഡ് സംരക്ഷിക്കണം, പക്ഷേ ഡീഫോള്‍ട്ടായ കീറിങ് ലഭ്യമല്ല. ഒരെണ്ണം "
-"ഉണ്ടാക്കുന്നതിനായി, അതിന് വേണ്ടി നിങ്ങള്‍ ഉപയോഗിക്കുവാന്‍ ആഗ്രഹിക്കുന്ന പാസ്‍വേര്‍ഡ് "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് ഒരു പാസ്‍വേര്‍ഡ് സംരക്ഷിക്കണം, പക്ഷേ ഡീഫോള്‍ട്ടായ കീറിങ് ലഭ്യമല്ല. "
-"ഒരെണ്ണം ഉണ്ടാക്കുന്നതിനായി, അതിന് വേണ്ടി നിങ്ങള്‍ ഉപയോഗിക്കുവാന്‍ ആഗ്രഹിക്കുന്ന പാസ്‍വേര്‍ഡ് "
-"തിരഞ്ഞെടുക്കേണ്ടതാണ്."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "ഡീഫോള്‍ട്ട് കീറിങ് ഉണ്ടാക്കുക"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "ഡീഫോള്‍ട്ട് കീറിങിനായി പാസ്‍വേര്‍ഡ് തിരഞ്ഞെടുക്കുക"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "പ്രയോഗത്തിന് കീറിങിലേക്ക് പ്രവേശനം അനുവദിക്കണമോ?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "പ്രയോഗം '%s' (%s)-ന് %s-ലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr "പ്രയോഗം '%s' (%s)-ന് ഡീഫോള്‍ട്ട് കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr "പ്രയോഗം '%s' (%s)-ന് അപരിചിതമായ ഒരു കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "പ്രയോഗം '%s'-ന് %s-ലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "പ്രയോഗം '%s'-ന് ഡീഫോള്‍ട്ട് കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "പ്രയോഗം '%s'-ന് അപരിചിതമായ ഒരു കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "അപരിചിതമായ ഒരു പ്രയോഗത്തിന് %s-ലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr "അപരിചിതമായ ഒരു പ്രയോഗത്തിന് ഡീഫോള്‍ട്ട് കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"അപരിചിതമായ ഒരു പ്രയോഗത്തിന് അപരിചിതമായ ഒരു കീറിങിലുളള '%s'-ന്‍റെ പാസ്‍വേര്‍ഡ് ആവശ്യമുണ്ട്."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "പ്രവേശനം അനുവദിക്കുക"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "ഒരിക്കല്‍ മാത്രം അനുവദിക്കുക (_O)"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "എപ്പോഴും അനുവദിക്കുക (_A)"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "ഏത് തരത്തിലുളള ആവശ്യമാണ് പ്രവര്‍ത്തിക്കേണ്ടത് എന്ന് നിങ്ങള്‍ വ്യക്തമാക്കേണ്ടതാണ്\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "അപരിചിതമായ തരത്തിനലുളള ആവശ്യം\n"
diff --git a/po/mn.po b/po/mn.po
deleted file mode 100644
index 6ca6944d..00000000
--- a/po/mn.po
+++ /dev/null
@@ -1,391 +0,0 @@
-# translation of gnome-keyring.HEAD.po to Mongolian
-# Mongolian translation gnome-keyring.
-# Copyright (C) 2004
-# This file is distributed under the same license as the PACKAGE package.
-# Jargalsaikhan Tamir <tamir@pmis.gov.mn>, 2004.
-# Munkhtugs <munkhtugs@newcomsystems.mn>/ 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-06-07 18:34+0900\n"
-"Last-Translator: tamir <tamir@pmis.gov.mn>\n"
-"Language-Team: Mongolian <openmn-translation@lists.sf.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "_Хуучин нэвтрэх үг:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Нэвтрэх үг:"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "Шинэ нэвтрэх үгээ _баталгаажуулах:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"Тодруулах\">Password strength meter:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "Хуучин нэвтрэх үгийн тэмдэгтийн зай байхгүй байна"
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Нэвтрэх үгийн тэмдэгтийн зай байхгүй байна."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Нэвтрэх үгнүүд тохирохгүй байна."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Програм '%s' (%s) стандарт киринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' (%s) програм '%s' кейринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) програм үл мэдэгдэх киринг руу хандахыг хүссэн боловч түгжээтэй "
-"байна."
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Програм '%s' стандарт киринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Програм '%s' '%s' киринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Програм '%s' үл мэдэгдэх кейринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Үл мэдэгдэх програм стандарт кейринг руу хандахыг хүссэн боловч түгжээтэй "
-"байна."
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Үл мэдэгдэх програм '%s' кейринг руу хандахыг хүссэн боловч түгжээтэй байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Үл мэдэгдэх програм үл мэдэгдэх кейринг руу хандахыг хүссэн боловч түгжээтэй "
-"байна."
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Стандарт киринг түгжээг тайлах нууц үг оруул"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "киринг '%s' түгжээг тайлах нууц үг оруул"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Кейринг түгжээг тайлах"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Татгалзах"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програм '%s' (%s) шинэ '%s' гэсэн кейринг үүсгэхийг хүссэн юм. Иймээс та "
-"үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм '%s' (%s) шинэ стандарт кейринг үүсгэхийг хүссэн юм. Иймээс та үүнд "
-"хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм '%s' шинэ '%s' гэсэн кейринг үүсгэхийг хүссэн юм. Иймээс та үүнд "
-"хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм '%s' шинэ стандарт кейринг үүсгэхийг хүссэн юм. Иймээс та үүнд "
-"хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Үл мэдэгдэх програм '%s' гэсэн шинэ кейринг үүсгэхийг хүссэн юм. Иймээс та "
-"үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Үл мэдэгдэх програм шинэ стандарт кейринг үүсгэхийг хүссэн юм. Иймээс та "
-"үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Шинэ Кейринг Нэвтрэх үг"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Шинэ кейринг-ийн нэвтрэх үгийг сонго"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програм '%s' (%s) '%s' кейрингийн нэвтрэх үгийг өөрчлөхийг хүсч байна. "
-"Иймээс та үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Програм '%s' (%s) шинэ стандарт кейринг өөрчлөхийг хүссэн юм. Иймээс та үүнд "
-"хэрэглэхийг хүссэн нууц үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програм '%s' '%s' кейрингийн нэвтрэх үгийг өөрчлөхийг хүсч байна. Иймээс та "
-"үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програм '%s' стандарт киринг өөрчлөхийг хүссэн юм. Иймээс та үүнд "
-"хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Үл мэдэгдэх програм '%s'кейрингийн нэвтрэх үгийг өөрчлөхийг хүсч байна. "
-"Иймээс та үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Үл мэдэгдэх програм стандарт кейрингийн нэвтрэх үгийг өөрчлөхийг хүсч байна. "
-"Иймээс та үүнд хэрэглэхийг хүссэн нэвтрэх үгээ сонгох ёстой."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' кейринг-ийн нэвтрэх үгийг сонго. "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "Стандарт кейринг-ийн шинэ нэвтрэх үгийг сонго"
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Кейринг Нэвтрэх үгийн өөрчлөлт"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програм '%s' (%s) нэвтрэх үгийг хадгалахыг хүссэн боловч стандарт кейринг "
-"байхгүй байна. Үүнийг үүсгэхэд цаашид ашиглах нууц үгээ сонгох хэрэгтэй."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програм '%s' нэвтрэх үгийг хадгалахыг хүссэн боловч стандарт кейринг байхгүй "
-"байна. Үүнийг үүсгэхэд цаашид ашиглах нууц үгээ сонгох хэрэгтэй."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Үл мэдэгдэх програм нэвтрэх үгийг хадгалахыг хүссэн боловч стандарт кейринг "
-"байхгүй байна. Үүнийг үүсгэхэд цаашид ашиглах нууц үгээ сонгох хэрэгтэй."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Стандарт Кейринг үүсгэх"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Стандарт кейринг-ийн нэвтрэх үгийг сонго"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Кейринг рүү хандах програмыг зөвшөөрөх үү?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "'%s' (%s) програм %s дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж байна."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Програм '%s' (%s) стандарт кейринг дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж "
-"байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Програм '%s' (%s) үл мэдэгдэх кейринг дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж "
-"байна."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "'%s' програм %s дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж байна."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Програм '%s' стандарт кейринг дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Програм '%s' үл мэдэгдэх кейринг дэх '%s'-ий нууц үгт хандахыг хүсэж байна."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Үл мэдэгдэх програм %s дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж байна."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Үл мэдэгдэх програм стандарт кейринг дэх '%s'-ий нэвтрэх үгт хандахыг хүсэж "
-"байна."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Үл мэдэгдэх програм үл мэдэгдэх кейринг дэх '%s'-ий нэвтрэх үгт хандахыг "
-"хүсэж байна."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Хандалтыг зөвшөөрөх"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "_Нэг удаа зөвшөөрнө"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "_Байнга зөвшөөрнө"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Та уншигдах хүсэлтийн төрлийг тодорхойлох ёстой\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Үл мэдэгдэх хүсэлтийн төрөл\n"
diff --git a/po/mr.po b/po/mr.po
deleted file mode 100644
index 66d2f793..00000000
--- a/po/mr.po
+++ /dev/null
@@ -1,559 +0,0 @@
-# translation of gnome-keyring.HEAD.mr.po to marathi
-# Marathi Translation for gnome-keyring.
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER,2006.
-#
-# First Author: Sameer N. Ingole <strike@proscrutiny.com>, 2006.
-# Rahul Bhalerao <b.rahul.pm@gmail.com>, 2006.
-# sandeep shedmake <sandeep.shedmake@gmail.com>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.mr\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-14 23:37+0000\n"
-"PO-Revision-Date: 2008-02-28 00:15+0530\n"
-"Last-Translator: sandeep shedmake <sandeep.shedmake@gmail.com>\n"
-"Language-Team: marathi\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "काढूण टाकण्याजोगी डीस्क: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "काढूण टाकण्याजोगी डीस्क"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "मुख्य"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:497 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "डीस्क किंवा ड्राइव्ह वरील स्थापीत फाइल अस्तित्वात नाही"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "अनुप्रयोग '%s' (%s) मुलभूत कीरिंगमधील '<object prop='name'/>' करीता परवलीच्या शब्दाचा वापर करु इच्छितो."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "अनुप्रयोग '%s' (%s) ला %s मधील '<object prop='name'/>' करीता परवली शब्दाचा वापर करायचा आहे."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "अनुप्रयोग '%s' ला मुलभूत किरींग मधील '<object prop='name'/>' करीता परवली शब्दाचा वापर करायचा आहे."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "अनुप्रयोग '%s' ला %s मधील '<object prop='name'/>' करीता परवली शब्दाचा वापर करायचा आहे."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "अपरिचित अनुप्रयोगास मुलभूत किरींग मधील '<object prop='name'/>' करीता परवली शब्दचा वापर करायचा आहे."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "अपरिचित अनुप्रयोगास '%s' मधील '<object prop='name'/>' करीता परवली शब्दचा वापर करायचा आहे."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "वापरु द्या"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "अनुप्रयोगास कीरिंगच्या वापराची परवानगी द्यायची?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s किरींग करीता गुप्तशब्दाचे कुलूप उघडा"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "अनुप्रयोग '%s' (%s) मुलभुत कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' (%s) '%s' कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "अनुप्रयोग '%s' मुलभुत कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' '%s' कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "एक अपरिचित अनुप्रयोग मुलभुत कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "एक अपरिचित अनुप्रयोग '%s' कीरिंगचा वापर करु इच्छितो, पण ती कुलूपबंद आहे"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "मुलभुत कीरिंगचे कुलूप उघडण्यास परवलिचा शब्द दाखल करा"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' कीरिंगचे कुलूप उघडण्यास परवलिचा शब्द दाखल करा"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "कीरिंगचे कुलूप उघडा"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "दाखलन केल्यावर आपोआप ही कीरींग विनाकुलूप करा."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) नवी कीरिंग '%s' या नावाने तयार करु इच्छितो, त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) नवी मुलभुत कीरिंग तयार करु इच्छितो, त्याकरीता तुम्हाला नवा परवलीचा "
-"शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' नवी कीरिंग '%s' या नावाने तयार करु इच्छितो, त्याकरीता तुम्हाला नवा "
-"परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' नवी मुलभुत कीरिंग तयार करु इच्छितो, त्याकरीता तुम्हाला नवा परवलीचा शब्द "
-"निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"एक अपरिचित अनुप्रयोग नवी कीरिंग '%s' या नावाने तयार करु इच्छितो, त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"एक अपरिचित अनुप्रयोग नवी मुलभुत कीरिंग तयार करु इच्छितो, त्याकरीता तुम्हाला नवा "
-"परवलीचा शब्द निवडावा लागेल."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "नवा परवलीचा शब्द"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "परवलीचा शब्द नव्या कीरिंगकरीता निवडा"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) '%s' कीरिंग करीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) मुलभुत कीरिंग करीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' '%s' कीरिंग करीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला नवा "
-"परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' मुलभुत कीरिंग करीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला नवा "
-"परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"एक अपरिचित अनुप्रयोग '%s' कीरिंगकरीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"एक अपरिचित अनुप्रयोग मुलभुत कीरिंग करीता परवलीचा शब्द बदलू इच्छितो. त्याकरीता तुम्हाला "
-"नवा परवलीचा शब्द निवडावा लागेल."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' कीरिंगकरीता नवा परवलीचा शब्द निवडा. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "मुलभुत कीरिंगकरीता नवा परवलीचा शब्द निवडा. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "कीरिंग परवलीचा शब्द बदला"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) एक परवलीचा शब्द साठवू इच्छितो पण त्याकरीता मुलभुत कीरिंग नाही. "
-"नवी कीरिंग तयार करण्याकरीता तुम्हाला हवा असलेला परवलीचा शब्द निवडा."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' एक परवलीचा शब्द साठवू इच्छितो पण त्याकरीता मुलभुत कीरिंग नाही. नवी "
-"कीरिंग तयार करण्याकरीता तुम्हाला हवा असलेला परवलीचा शब्द निवडा."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"एक अपरिचीत अनुप्रयोग परवलीचा शब्द साठवू इच्छितो पण त्याकरीता मुलभुत कीरिंग नाही. नवी "
-"कीरिंग तयार करण्याकरीता तुम्हाला हवा असलेला परवलीचा शब्द निवडा."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "मुलभुत कीरिंग तयार करा"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "मुलभुत कीरिंग करीता परवलीचा शब्द निवडा"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "हा पर्याय gnome-keyring डीमन मध्ये PKCS#11 घटक कार्यान्वीत करतो. gnome-keyring-daemon पुन्हा सुरू होताच त्याचा प्रभाव दृश्यास पडतो, (म्हणजेच: वापरकर्ता दाखलन करतो तेव्हा). ही संयोजना ठराविक डीमन करीता आदेश ओळ बाब पाठविल्यास खोडून पुन्हा लिहीले जाते."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "हा पर्याय SSH घटक gnome-keyring डीमन कार्यान्वीत करतो. gnome-keyring-daemon पुन्हा सुरू केल्यावरच त्याचे प्रभाव दिसून पडते, (म्हणजे: जेव्हा वापरकर्ता दाखलन करतो). ही संयोजना ठराविक डीमन करीता आदेश ओळ बाब पाठविल्यास खोडून पुन्हा लिहीले जाते."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "gnome-keyring PKCS#11 घटक कार्यान्वीत आहे का."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "gnome-keyring SSH घटक कार्यान्वीत करायचे का."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "प्रवेश नाही"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon अनुप्रयोग कार्यरत नाही."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "gnome-keyring-daemon शी संपर्क साधतेवेळी त्रुटी आढळली"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "त्या नावाची किरींग आधिपासूनच अस्तित्वात आहे"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "प्रोग्रामर त्रुटी: अनुप्रोयगने अवैध माहिती पाठविली."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "जुळते परिणाम नाही"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "त्यानावाची कीरींग अस्तित्वात नाही."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "किरींग आधिपासूनच विनाकुलूप केले गेले."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "दाखलन कीरिंग कुलूप उघडा"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "कीरिंगचे कुलूप उघडण्यास परवलीचा शब्द प्रविष्ट करा"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "या संगणकावर दाखलन केल्यास तुमचे दाखलन किरींग आपोआप विनाकुलूप बंद केले गेले नाही."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "दाखलन कीरिंग तयार करा"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "दाखलन परवलीचा शब्द प्रविष्ट करा"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "या संगणकावर दाखलन केल्यावर दाखलन किरींग आपोआप बनविले गेले नाही. ते आता बनविले झाईल."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "व्यक्तिगत किल्ली उघडा"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "प्रमाणपत्र उघडा"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "सार्वजनीक किल्ली उघडा"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "कुलूप उघडा"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "व्यक्तिगत किल्ली उघडण्याकरीता गुप्तशब्द प्रविष्ट करा"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "प्रमाणपत्र उघडण्याकरीता गुप्तशब्द प्रविष्ट करा"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "सार्वजनीक किल्ली उडण्याकरीता गुप्तशब्द प्रविष्ट करा"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "उघडण्याकरीता गुप्तशब्द प्रविष्ट करा"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "दाखलन झालल्यावर आपोआप ही व्यक्तिगत किल्ली उघडा."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "दाखलन झाल्यावर आपोआप हे प्रमाणपत्र उघडा."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "दाखलन झाल्यावर आपोआप व्यक्तिगत किल्ली उघडा."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "दाखलन झाल्यासआपोआप यास उघडा"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "प्रणालीला व्यक्तिगत किल्ली '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "प्रणालीला प्रमाणपत्र '%s' वापरायचे आहे, पण ते कुलूप बंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "प्रणालीला सार्वजनीक किल्ली '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "प्रणालीला '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "प्रणालीला व्यक्तिगत किल्ली '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "प्रणालीला प्रमाणपत्र '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "प्रणालीला सार्वजनीक किल्ली '%s' वापरायचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "प्रणालीला '%s' चा वापर कराचे आहे, पण ते कुलूपबंद आहे"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "'%s' करीता गुप्तशब्द कुलूपबंद करू नका"
-
-#: ../pkix/gkr-pkix-parser.c:428
-msgid "Unrecognized or unsupported file."
-msgstr "अपरिचीत किंवा असमर्थीत फाइल."
-
-#: ../pkix/gkr-pkix-parser.c:432
-msgid "Could not parse invalid or corrupted file."
-msgstr "अवैध किंवा सदोषीत फाइल वाचू शकत नाही."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "गुप्तशब्द विनाऐंक्रीप्टरीत्या संचयीत करा?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "रिकामे गुप्तशब्द वापरण्याचे निवडल्यास, तुमचे संचयीत गुप्तशब्द सुरक्षीतरित्या ऐंक्रीप्ट केले जाणार नाही. तुमच्या फाइल करीता प्रवेश प्राप्य कोणत्याही वापरकर्त्यास प्रवेश मिळू शकतो."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "असुरक्षीत संचयन"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "स्थान (_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "जुना परवलीचा शब्द(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "परवलीचा शब्द(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "परवलीचा शब्द पक्का करा(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "नविन गुप्तशब्द प्रकार"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "परवलीचे शब्द जुळत नाहीत."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "परवलीचा शब्द रिकामा असू शकत नाही"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "नकार"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "एकदा वापरु द्या(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "नेहमी वापरु द्या(_A)"
-
diff --git a/po/ms.po b/po/ms.po
deleted file mode 100644
index 35ecb49f..00000000
--- a/po/ms.po
+++ /dev/null
@@ -1,391 +0,0 @@
-# Malay message of gnome-keyring
-# Copyright (C) 2003 Free Software Foundation, Inc.
-# Hasbullah Bin Pit (sebol) <sebol@ikhlas.com>, 2003.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2004-02-02 18:59+0730\n"
-"Last-Translator: Hasbullah Bin Pit <sebol@my-penguin.org>\n"
-"Language-Team: Projek Gabai <gabai-penyumbang@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikasi '%s' (%s) hendak mengakses keyring default, tetapi ianya dikunci"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Aplikasi '%s' (%s) hendak mengakses keyring '%s', tetapi ianya dikunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Aplikasi '%s' (%s) hendak mengakses keyring tak dikenali, tetapi ianya "
-"dikunci"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Aplikasi '%s' hendak mengakses keyring default, tetapi ianya dikunci"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplikasi '%s' hendak mengakses keyring '%s', tetapi ianya dikunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Aplikasi '%s' hendak mengakses keyring tak dikenali, tetapi ianya dikunci"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikasi tak dikenali mahu mengakses keyring default, tetapi ianya dikunci"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikasi tak diketahui hendak mengakses keyring '%s', tetapi ianya dikunci"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Aplikasi tak dikenali mahu mengakses ke keyring tak dikenali, tetapi ia "
-"dikunci"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Masukkan katalaluan bagi keyring default untuk dibuka"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Masukkan katalaluan bagi keyring '%s' untuk dibuka"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Buka Keyring"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Nafikan"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mencipta keyring baru dipanggil '%s'. Anda hendaklah "
-"memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mencipta keyring default. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' mahu mencipta keyring baru dipanggil '%s'. Anda hendaklah "
-"memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' mahu mencipta keyring default baru. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tak dikenali mahu mencipta keyring baru dipanggil '%s'. Anda "
-"hendaklah memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikasi tak dikenali mahu mencipta keyring default baru. Anda hendaklah "
-"memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Katalaluan Keyring Baru"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Pilih katalaluan bagi keyring baru"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mencipta keyring default. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mencipta keyring default. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' mahu mencipta keyring default baru. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi '%s' mahu mencipta keyring default baru. Anda hendaklah memilih "
-"katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tak dikenali mahu mencipta keyring default baru. Anda hendaklah "
-"memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikasi tak dikenali mahu mencipta keyring default baru. Anda hendaklah "
-"memilih katalaluan yang anda ingin gunakan untuknya."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Pilih katalaluan bagi keyring baru"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Pilih katalaluan bagi keyring default"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Katalaluan Keyring Baru"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi '%s' (%s) mahu menyimpan katalaluan, tapi tiada keyring default. "
-"Untuk menciptanya, anda hendaklah memilih katalaluan yang anda ingin gunakan "
-"untuknya."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi '%s' mahu menyimpan katalaluan, tapi tiada keyring default. Untuk "
-"menciptanya, anda hendaklah memilih katalaluan yang anda ingin gunakan "
-"untuknya."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikasi tak dikenali mahu menyimpan katalaluan, tapi tiada keyring default. "
-"Untuk menciptanya, anda hendaklah memilih katalaluan yang anda ingin gunakan "
-"untuknya."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Cipta Keyring Default"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Pilih katalaluan bagi keyring default"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Izinkan aplikasi mengakses keyring?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Aplikasi '%s' (%s) mahu mengakses katalaluan bagi '%s' pada %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mengakses katalaluan bagi '%s' pada keyring default."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Aplikasi '%s' (%s) mahu mengakses katalaluan bagi '%s' pada keyring tak "
-"dikenali."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Aplikasi '%s' mahu mengakses katalaluan bagi '%s' pada %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplikasi '%s' mahu mengakses katalaluan bagi '%s' pada keyring default."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplikasi '%s' mahu mengakses katalaluan bagi '%s' pada keyring tak dikenali."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Aplikasi tak dikenali mahu mengakses katalaluan bagi '%s' pada %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplikasi tak dikenali mahu mengakses katalaluan bagi '%s' pada keyring "
-"default."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplikasi tak dikenali mahu mengakses katalaluan bagi '%s' pada keyring tak "
-"dikenali."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Izin akses"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Izin _Sekali"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Sentiasa _Izin"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Anda mesti nyatakan jenis permintaan untuk dilaksana\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Jenis permintaan tidak diketahui\n"
diff --git a/po/nb.po b/po/nb.po
deleted file mode 100644
index 96ac8ec5..00000000
--- a/po/nb.po
+++ /dev/null
@@ -1,594 +0,0 @@
-# Norwegian translations for gnome-keyring.
-# Copyright (C) 2003 Red Hat Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2003-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.21.5\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-17 16:08+0100\n"
-"PO-Revision-Date: 2008-02-17 16:10+0100\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\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"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Avtagbar disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Avtagbar disk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Hjem"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disken eller stasjonen denne filen er plassert på er ikke tilstede"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Programmet «%s» (%s) ønsker tilgang til passordet for «<object prop='name'/>» "
-"på forvalgt nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Programmet «%s» (%s) ønsker tilgang til passordet for «<object prop='name'/>» "
-"i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Programmet «%s» ønsker tilgang til passordet for «<object prop='name'/>» på "
-"forvalgt nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Programmet «%s» ønsker tilgang til passordet for «<object prop='name'/>» på %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Et ukjent program ønsker tilgang til passordet for «<object prop='name'/>» på "
-"forvalgt nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Et ukjent program ønsker tilgang til passordet for «<object prop='name'» på %"
-"s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Gi tilgang"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Gi program tilgang til nøkkelring?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Lås opp passord for %s nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programmet «%s» (%s) ønsker tilgang til forvalgt nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Programmet «%s» (%s) ønsker tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Programmet «%s» ønsker tilgang til forvalgt nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Programmet «%s» ønsker tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Et ukjent program ønsker tilgang til forvalgt nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Et ukjent program ønsker tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Oppgi passord for forvalgt nøkkelring for å låse opp"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Oppgi passord for nøkkelring «%s» for å låse opp"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Lås opp nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Lås opp denne nøkkelringen automatisk når jeg logger inn."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ønsker å opprette en ny nøkkelring kalt «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ønsker å opprette en ny forvalgt nøkkelring. Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ønsker å opprette en ny nøkkelring kalt «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ønsker å opprette en ny forvalgt nøkkelring. Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Et ukjent program ønsker å opprette en ny nøkkelring kalt «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Et ukjent program ønsker å opprette en ny forvalgt nøkkelring. Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Nytt passord for nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Oppgi passord for ny nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ønsker å bytte passord for nøkkelring «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ønsker å bytte passord for forvalgt nøkkelring. Du må "
-"velge passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ønsker å bytte passord for nøkkelring «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ønsker å bytte passord for forvalgt nøkkelring. Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Et ukjent program ønsker å bytte passord for nøkkelring «%s». Du må velge "
-"passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Et ukjent program ønsker å bytte passord for forvalgt nøkkelring. Du må "
-"velge passordet du ønsker å bruke for denne."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Velg et nytt passord for nøkkelring «%s». "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Velg et nytt passord for forvalgt nøkkelring. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Endre passord for nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet «%s» (%s) ønsker å lagre et passord, men det finnes ingen forvalgt "
-"nøkkelring. For å opprette en må du lagre passordet du ønsker å bruke for "
-"den."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet «%s» ønsker å lagre et passord, men det finnes ingen forvalgt "
-"nøkkelring. For å opprette en må du lagre passordet du ønsker å bruke for "
-"den."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Et ukjent program ønsker å lagre et passord, men det finnes ingen forvalgt "
-"nøkkelring. For å opprette en må du lagre passordet du ønsker å bruke for "
-"den."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Opprett forvalgt nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Oppgi passord for forvalgt nøkkelring"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Dette alternativet aktiverer PKCS#11-komponenten for gnome-keyring-"
-"tjenesten. Dette trer kun i kraft når gnome-keyring-daemon starter. Altså "
-"når brukeren logger inn. Denne innstillingen kan overstyres med spesifikke "
-"kommandolinjeargumenter gis til tjenesten."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Dette alternativet aktiverer SSH-komponenten for gnome-keyring-tjenesten. "
-"Dette trer kun i kraft når gnome-keyring-daemon starter. Altså når brukeren "
-"logger inn. Denne innstillingen kan overstyres med spesifikke "
-"kommandolinjeargumenter gis til tjenesten."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Om PKCS#11-komponenten for gnome-keyring er aktivert."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Om SSH-agenten for gnome-keyring er aktivert."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Tilgang nektet"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Programmet gnome-keyring-daemon kjører ikke."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Feil ved kommunikasjon med gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "En nøkkelring med dette navnet eksisterer allerede"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programfeil: Programmet sendte ugyldige data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Ingen treff"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Det finnes ingen nøkkelring med dette navnet."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Nøkkelringen er allerede låst opp."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Lås opp nøkkelring for pålogging"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Oppgi påloggingspassord for å låse opp nøkkelring"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Din påloggingsnøkkelring ble ikke låst opp automatisk når du logget på denne "
-"datamaskinen."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Opprett nøkkelring for pålogging"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Oppgi påloggingspassord"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Din påloggingsnøkkelring ble ikke opprettet automatisk når du logget på "
-"denne datamaskinen. Den vil bli opprettet nå."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Lås opp privat nøkkel"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Lås opp sertifikat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Lås opp offentlig nøkkel"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Lås opp"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Oppgi passord for for å låse opp privat nøkkel"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Oppgi passord for for å låse opp sertifikat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Oppgi passord for for å låse opp offentlig nøkkel"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Oppgi passord for for å låse opp"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Lås opp denne private nøkkelringen automatisk når jeg logger inn."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Lås opp dette sertifikatet automatisk når jeg logger inn."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Lås opp denne offentlige nøkkelringen automatisk når jeg logger inn."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Lås denne opp automatisk når jeg logger inn."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Et program ønsker tilgang til privat nøkkel «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Et program ønsker tilgang til sertifikat «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Et program ønsker tilgang til offentlignøkkel «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Et program ønsker tilgang til «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systemet ønsker å importere privat nøkkel «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systemet ønsker å importere sertifikat «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Systemet ønsker å importere offentlig nøkkel «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systemet ønsker å importere «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Lås opp passord for «%s»"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ikke gjenkjent eller støttet fil."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Kunne ikke lese ugyldig eller korrupt fil."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Lagre passord ukryptert?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Hvis du velger å bruke et tomt passord kan ikke dine lagrede passord "
-"krypteres på en trygg måte. De vil være tilgjengelig for alle som har "
-"tilgang til dine filer."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Bruk utrygg lagring"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Lokasjon:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Gammelt passord:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Passord:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Bekreft passord:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Styrke for nytt passord"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Passordene er ikke like."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Passordet kan ikke være tomt"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Nekt"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Tillat én gang"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Tillat _alltid"
diff --git a/po/ne.po b/po/ne.po
deleted file mode 100644
index 37b884cb..00000000
--- a/po/ne.po
+++ /dev/null
@@ -1,395 +0,0 @@
-# translation of gnome-keyring.HEAD.ne.po to Nepali
-# Nepali Translation Project.
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Shiva Pokharel <pokharelshiva@hotmail.com>, 2005.
-# Jaydeep Bhusal <zaydeep@hotmail.com>, 2005.
-# Mahesh subedi <submanesh@hotmail.com>, 2006.
-# Nabin Gautam <nabin@mpp.org.np>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.ne\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-27 04:01+0100\n"
-"PO-Revision-Date: 2007-10-11 14:32+0545\n"
-"Last-Translator: Nabin Gautam <nabin@mpp.org.np>\n"
-"Language-Team: Nepali <info@mpp.org.np>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Nepali\n"
-"X-Poedit-Country: NEPAL\n"
-"X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=n !=1\n"
-
-#: ../common/gkr-location.c:288
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "हटाउन सकिने डिस्क: %s"
-
-#: ../common/gkr-location.c:290
-msgid "Removable Disk"
-msgstr "हटाउन सकिने डिस्क"
-
-#: ../common/gkr-location.c:431
-msgid "Home"
-msgstr "गृह"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gnome-keyring-daemon-ops.c:188
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "किरिङ %s का लागि पासवर्ड ताल्चा खोल्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:414
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"अनुप्रयोग '%s' (%s) ले पूर्वनिर्धारित किरिङमा '<object "
-"prop='name'/>' का लागि पासवर्ड पहुँच प्राप्त गर्न चाहन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:417
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"अनुप्रयोग '%s' (%s) ले %s को '<object "
-"prop='name'/>' का लागि पासवर्ड पहुँच प्राप्त गर्न चाहन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:422
-#: ../daemon/gnome-keyring-daemon-ops.c:430
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"अनुप्रयोग '%s' ले पूर्वनिर्धारित किरिङमा '<object prop='name'/"
-">' का लागि पासवर्ड पहुँच प्राप्त गर्न चाहन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:425
-#: ../daemon/gnome-keyring-daemon-ops.c:433
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"अनुप्रयोग '%s' ले %s मा '<object prop='name'/"
-">' का लागि पासवर्ड पहुँच प्राप्त गर्न चाहन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:438
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"अज्ञात अनुप्रयोगले पूर्वनिर्धारित किरिङमा '<object prop='name'/"
-">' का लागि पासवर्ड पहुँच गर्न चाहन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:440
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"अज्ञात अनुप्रयोगले %s मा '<object prop='name'/"
-">' का लागि पासवर्ड पहुँच प्राप्त गर्न चाहन् ।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow access"
-msgstr "पहुँच अनुमति दिनुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow application access to keyring?"
-msgstr "किरिङमा अनुप्रयोग पहुँचलाई अनुमति दिनुहुन्छ ?"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:544
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "अनुप्रयोग '%s' (%s) ले पूर्वनिर्धारित किरिङमा पहुँच प्राप्त गर्न चाहन्छ, तर यसलाई ताल्चा लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:548
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' (%s) ले किरिङ '%s' मा पहुँच प्राप्त गर्न चाहेको छ, तर यसलाई ताल्चा लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:554
-#: ../daemon/gnome-keyring-daemon-ops.c:564
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"अनुप्रयोग '%s' ले पूर्वनिर्धारित किरिङमा पहुँच प्राप्त गर्न चाहेको छ, तर यसलाई ताल्चा "
-"लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:558
-#: ../daemon/gnome-keyring-daemon-ops.c:569
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "अनुप्रयोग '%s' ले किरिङ '%s' मा पहुँच प्राप्त गर्न चाहेको छ, तर यसलाई ताल्चा लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:575
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "एउटा अज्ञात अनुप्रयोगले पूर्व‍निर्धारित किरिङमा पहुँच प्राप्त गर्न चाहेको छ, तर यसलाई ताल्चा लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:579
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "एउटा अज्ञात अनुप्रयोगले '%s' किरिङमा पहुँच प्राप्त गर्न चाहेको छ, तर यसलाई ताल्चा लगाइएको छ"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:586
-msgid "Enter password for default keyring to unlock"
-msgstr "पूर्वनिर्धारित किरिङको ताल्चा खोल्नका लागि पासवर्ड प्रविष्ट गर्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:588
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "किरिङ '%s'को ताल्चा खोल्नका लागि पासवर्ड प्रविष्ट गर्नुहोस्"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:592
-msgid "Unlock Keyring"
-msgstr "किरिङको ताल्चा खोल्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:604
-msgid "Automatically unlock this keyring when I log in."
-msgstr "मैले लगइन गर्दा यस किरिङको स्वचालित रूपले ताल्चा खोल्नुहोस् ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:640
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) ले '%s' नामको एउटा नयाँ किरिङ सिर्जना गर्न चाहेको छ । तपाईँले "
-"यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:644
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "अनुप्रयोग '%s' (%s) ले एउटा नयाँ पूर्वनिर्धारित किरिङ सिर्जना गर्न चाहन्छ । तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:650
-#: ../daemon/gnome-keyring-daemon-ops.c:660
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' ले '%s' नामको एउटा नयाँ किरिङ सिर्जना गर्न चाहन्छ । तपाईँले यसका लागि"
-"प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:654
-#: ../daemon/gnome-keyring-daemon-ops.c:664
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' ले एउटा नयाँ पूर्वनिर्धारित किरिङ सिर्जना गर्न चाहन्छ । तपाईँले यसका लागि"
-"प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:670
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"एउटा अज्ञात अनुप्रयोगले '%s' नामको एउटा नयाँ किरिङ सिर्जना गर्न चाहन्छ । तपाईँले यसका लागि"
-"प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:674
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"एउटा अज्ञात अनुप्रयोगले एउटा नयाँ पूर्व‍निर्धारित किरिङ सिर्जना गर्न चाहन्छ । तपाईँले यसका लागि"
-"प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:680
-msgid "New Keyring Password"
-msgstr "नयाँ किरिङ पासवर्ड"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:681
-msgid "Choose password for new keyring"
-msgstr "नयाँ किरिङका लागि पासवर्ड रोज्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:728
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) ले किरिङ '%s' का लागि पासवर्ड परिवर्तन गर्न चाहन्छ ।"
-"तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:732
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr "अनुप्रयोग '%s' (%s) ले पूर्वनिर्धारित किरिङका लागि पासवर्ड परिवर्तन गर्न चाहन्छ । तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:738
-#: ../daemon/gnome-keyring-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "अनुप्रयोग '%s' ले किरिङ '%s' का लागि पासवर्ड परिवर्तन गर्न चाहन्छ । तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:742
-#: ../daemon/gnome-keyring-daemon-ops.c:752
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"अनुप्रयोग '%s' ले पूर्वनिर्धारित किरिङका लागि पासवर्ड परिवर्तन गर्न चाहन्छ । "
-"तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:758
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "अज्ञात अनुप्रयोगले '%s' किरिङका लागि पासवर्ड परिवर्तन गर्न चाहन् । तपाईँले यसका लागि प्र्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछt."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:762
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "अज्ञात अनुप्रयोगले पूर्व‍निर्धारित किरिङका लागि पासवर्ड परिवर्तन गर्न चाहन्छ । तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु पर्दछ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:772
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "किरिङ '%s' का लागि नयाँ पासवर्ड रोज्नुहोस् ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:774
-msgid "Choose a new password for the default keyring. "
-msgstr "पूर्वनिर्धारित किरिङका लागि नयाँ पासवर्ड रोज्नुहोस् । "
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:778
-msgid "Change Keyring Password"
-msgstr "किरिङ पासवर्ड परिवर्तन गर्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:845
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' (%s) ले पासवर्ड सङ्ग्रह गर्न चाहन्छ, तर कुनै पूर्वनिर्धारित किरिङ छैन । एउटा किरिङ सिर्जना गर्नका लागि, तपाईँले यसका लगि प्रयोग गर्न चाहेको पासवर्ड रोज्नु आवश्यक "
-"हुन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:849
-#: ../daemon/gnome-keyring-daemon-ops.c:853
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अनुप्रयोग '%s' ले पासवर्ड सङ्ग्रह गर्न चाहन्छ, तर कुनै पूर्वनिर्धारित किरिङ छैन । "
-"एउटा किरिङ सिर्जना गर्नका लागि तपाईँले यसका लागि प्रयोग गर्न चाहेको पासवर्ड रोज्नु आवश्यक "
-"हुन्छ ।"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:857
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"अज्ञात अनुप्रयोगले पासवर्ड सङ्ग्रह गर्न चाहन्छ, तर कुनै पूर्वनिर्धारित "
-"किरिङ छैन । एउटा किरिङ सिर्जना गर्न तपाईँले यसका लागि प्रयोग गर्न चाहेको "
-"पासवर्ड रोज्न आवश्यक "
-"हुन्छ ।"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Create Default Keyring"
-msgstr "पूर्वनिर्धारित किरिङ सिर्जना गर्नुहोस्"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Choose password for default keyring"
-msgstr "पूर्वनिर्धारित किरिङका लागि पासवर्ड रोज्नुहोस्"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "पहुँच अस्वीकार गरियो"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "जिनोम किरिङ डेइमोन अनुप्रयोग चलिरहेको छैन ।"
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "किरिङको पहिला नै तल्चा खोलिएको छ ।"
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "जिनोम किरिङ डेइमोनसँग सञ्चार गर्दा त्रुटि"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "त्यस नामको किरिङ पहिला नै अवस्थित छ"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "कार्यक्रम त्रुटि: अनुप्रयोगले अवैध डेटा पठायो ।"
-
-#: ../ui/gkr-ask-tool.c:267
-msgid "_Location:"
-msgstr "स्थान:"
-
-#: ../ui/gkr-ask-tool.c:280
-msgid "_Old password:"
-msgstr "पुरानो पासवर्ड:"
-
-#: ../ui/gkr-ask-tool.c:300
-msgid "_Password:"
-msgstr "पासवर्ड:"
-
-#: ../ui/gkr-ask-tool.c:322
-msgid "_Confirm password:"
-msgstr "पासवर्ड यकीन गर्नुहोस्:"
-
-#: ../ui/gkr-ask-tool.c:341
-msgid "New password strength"
-msgstr "नयाँ पासवर्डको सक्षमता"
-
-#: ../ui/gkr-ask-tool.c:378
-msgid "Old password cannot be blank."
-msgstr "पुरानो पासवर्ड खाली राख्न सकिँदैन ।"
-
-#: ../ui/gkr-ask-tool.c:390
-msgid "Password cannot be blank."
-msgstr "पासवर्ड खाली राख्न सकिँदैन ।"
-
-#: ../ui/gkr-ask-tool.c:399
-msgid "Passwords do not match."
-msgstr "पासवर्ड मिलेन ।"
-
-#: ../ui/gkr-ask-tool.c:448
-msgid "Deny"
-msgstr "अस्वीकार गर्नुहोस्"
-
-#: ../ui/gkr-ask-tool.c:460
-msgid "Allow _Once"
-msgstr "एक पटक अनुमति दिनुहोस्"
-
-#: ../ui/gkr-ask-tool.c:464
-msgid "_Always Allow"
-msgstr "सधैँ अनुमति दिनुहोस्"
-
diff --git a/po/nl.po b/po/nl.po
deleted file mode 100644
index 8793ce6f..00000000
--- a/po/nl.po
+++ /dev/null
@@ -1,616 +0,0 @@
-# Dutch translation for gnome-keyring
-#
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Daniel van Eeden <daniel_e@dds.nl>, 2004, 2008.
-# Tino Meinen <a.t.meinen@chello.nl>, 2005.
-# Wouter Bolsterlee <wbolster@gnome.org>, 2006–2008
-#
-# Keyring vertalen we als sleutelbos (Wouter Bolsterlee, Tino Meinen)
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-26 11:36+0100\n"
-"PO-Revision-Date: 2008-03-26 11:36+0100\n"
-"Last-Translator: Wouter Bolsterlee <wbolster@gnome.org>\n"
-"Language-Team: Dutch <vertaling@nl.linux.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:317
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Loskoppelbare schijf: %s"
-
-#: ../common/gkr-location.c:319
-msgid "Removable Disk"
-msgstr "Loskoppelbare schijf"
-
-#: ../common/gkr-location.c:532 ../common/gkr-location.c:544
-msgid "Home"
-msgstr "Persoonlijke map"
-
-#: ../common/gkr-location.c:1072 ../common/gkr-location.c:1095
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr ""
-"De schijf of het station waar dit bestand zich bevindt is niet aanwezig"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Het programma ‘%s’ (%s) wil toegang tot het wachtwoord voor ‘<object "
-"prop='name'/>’ uit de standaardsleutelbos."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Het programma ‘%s’ (%s) wil toegang tot het wachtwoord voor ‘<object "
-"prop='name'/>’ in %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Het programma ‘%s’ wil toegang tot het wachtwoord voor ‘<object prop='name'/"
-">’ uit de standaard sleutelbos."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Het programma ‘%s’ wil toegang tot het wachtwoord voor ‘<object prop='name'/"
-">’ uit %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Een onbekend programma wil toegang tot het wachtwoord voor ‘<object "
-"prop='name'/>’ uit de standaard sleutelbos."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Een onbekend programma wil toegang tot het wachtwoord voor ‘<object "
-"prop='name'/>’ uit %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Toegang toestaan"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Programma toegang tot sleutelbos verlenen?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Wachtwoord voor ontgrendelen van sleutelbos ‘%s’"
-
-# besloten/gesloten/beveiligd
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Het programma ‘%s’ (%s) wil toegang tot de standaard sleutelbos maar deze is "
-"gesloten."
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Het programma ‘%s’ (%s) wil toegang tot de sleutelbos ‘%s’, maar deze is "
-"gesloten"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Het programma ‘%s’ wil toegang tot de standaard sleutelbos, maar deze is "
-"gesloten"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Het programma ‘%s’ wil toegang tot de sleutelbos ‘%s’, maar deze is gesloten."
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Een onbekend programma wil toegang tot de standaard sleutelbos, maar deze is "
-"gesloten."
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Een onbekend programma wil toegang tot de sleutelbos ‘%s’, maar deze is "
-"gesloten"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Voer wachtwoord in voor het ontgrendelen van de standaard sleutelbos"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Voer wachtwoord in voor het ontgrendelen van sleutelbos ‘%s’"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Sleutelbos ontgrendelen"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Deze sleutelbos automatisch ontgrendelen bij inloggen"
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ (%s) wil een nieuwe sleutelbos aanmaken genaamd ‘%s’. U "
-"kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ (%s) wil een nieuwe standaard sleutelbos aanmaken. U kunt "
-"het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ wil een nieuwe sleutelbos aanmaken genaamd ‘%s’ U kunt "
-"het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ wil een nieuwe standaard sleutelbos aanmaken. U kunt het "
-"wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Een onbekend programma wil een nieuwe sleutelbos aanmaken genaamd ‘%s’. U "
-"kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Een onbekend programma wil een nieuwe standaard sleutelbos aanmaken.U kunt "
-"het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Nieuw sleutelbos-wachtwoord"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Kies wachtwoord voor de nieuwe sleutelbos"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ (%s) wil het wachtwoord voor de sleutelbos ‘%s’ wijzigen. "
-"U kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ (%s) wil het wachtwoord voor de standaard sleutelbos "
-"wijzigen. U kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ wil het wachtwoord voor de sleutelbos ‘%s’ wijzigen. U "
-"kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Het programma ‘%s’ wil het wachtwoord voor de standaard sleutelbos wijzigen. "
-"U kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Een onbekend programma wil het wachtwoord voor de sleutelbos ‘%s’ wijzigen.U "
-"kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Een onbekend programma wil het wachtwoord voor de standaard sleutelbos "
-"wijzigen.U kunt het wachtwoord kiezen wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Kies wachtwoord voor de sleutelbos ‘%s’."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Kies nieuw wachtwoord voor standaard sleutelbos."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Sleutelbos-wachtwoord wijzigen"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Het programma ‘%s’ (%s) wil een wachtwoord opslaan, maar er is geen "
-"standaard sleutelbos. Om er een te creëren, zal een wachtwoord gekozen "
-"moeten worden wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Het programma ‘%s’ wil een wachtwoord opslaan, maar er is geen standaard "
-"sleutelbos. Om er een te creëren, zal een wachtwoord gekozen moeten worden "
-"wat u er voor wilt gebruiken."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Een onbekend programma wil een wachtwoord opslaan, maar er is geen standaard "
-"sleutelbos. Om er een te creëren, zal een wachtwoord gekozen moeten worden "
-"wat u er voor wilt gebruiken."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Aanmaken standaard-sleutelbos"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Kies wachtwoord voor standaard sleutelbos"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Deze optie schakelt de PKCS#11-component van gnome-keyring daemon in. Dit "
-"heeft alleen effect als gnome-keyring-daemon start, bijvoorbeeld als de "
-"gebruiker zich aanmeldt. Deze instelling kan worden overschreven door "
-"parameters op de opdrachtregel mee te geven aan de daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Deze optie schakelt de SSH-agent van gnome-keyring daemon in. Dit heeft "
-"alleen effect als gnome-keyring-daemon start, bijvoorbeeld als de gebruiker "
-"zich aanmeldt. Deze instelling kan worden overschreven door parameters op de "
-"opdrachtregel mee te geven aan de daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Of de PKCS#11-component van gnome-keyring ingeschakeld is."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Of de SSH-agent van gnome-keyring ingeschakeld is."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Geen toegang"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "De toepassing ‘gnome-keyring-daemon’ is niet actief."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Fout bij communicatie met ‘gnome-keyring-daemon’"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Er bestaat al een sleutelbos met deze naam"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programeerfout: de toepassing stuurde ongeldige gegevens."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Geen resultaten"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Er bestaat geen sleutelbos met deze naam."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "De sleutelbos is al geopend."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Aanmeldsleutelbos ontgrendelen"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Voer uw aanmeldwachtwoord in om de sleutelbos te ontgrendelen"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Uw aanmeldsleutelbos was niet automatisch ontgrendeld bij het aanmelden op "
-"deze computer."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Aanmaken aanmeldsleutelbos"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Voer uw aanmeldwachtwoord in"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Uw aanmeldsleutelbos is niet automatisch aangemaakt bij het aanmelden op "
-"deze computer. Deze zal nu alsnog aangemaakt worden."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Privé-sleutel ontgrendelen"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Certificaat ontgrendelen"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Publieke sleutel ontgrendelen"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Ontgrendelen"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Voer uw wachtwoord in voor ontgrendeling van de privé-sleutel"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Voer uw wachtwoord in voor ontgrendeling van het certificaat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Voer uw wachtwoord in voor ontgrendeling van de publieke sleutel"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Voer wachtwoord in voor ontgrendeling"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Deze privé-sleutel automatisch ontgrendelen bij aanmelden"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Dit certificaat automatisch ontgrendelen bij aanmelden"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Deze publieke sleutel automatisch ontgrendelen bij aanmelden"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Deze sleutelbos automatisch ontgrendelen bij aanmelden"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Een programma wil toegang tot de sleutelbos ‘%s’, maar deze is gesloten"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Een programma wil toegang tot het certificaat ‘%s’, maar dit certificaat is "
-"gesloten"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Een programma wil toegang tot de publieke sleutel ‘%s’, maar deze is gesloten"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Een programma wil toegang tot ‘%s’, maar deze is gesloten"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"De computer wil de privé-sleutel ‘%s’ importeren, maar deze is gesloten."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "De computer wil het certificaat ‘%s’ importeren, maar dit is gesloten."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"De computer wil de publieke sleutel ‘%s’ importeren, maar deze is gesloten."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "De computer wil ‘%s’ importeren, maar deze is gesloten."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Wachtwoord voor ontgrendelen van ‘%s’"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Bestand is niet herkend of niet ondersteund."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Kon ongeldig of kapot bestand niet verwerken."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Wachtwoorden zonder versleuteling opslaan?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Door een leeg wachtwoord te gebruiken worden de opgeslagen wachtwoorden niet "
-"veilig bewaard. Iedereen met toegang tot uw bestanden kan deze wachtwoorden "
-"acherhalen."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Onveilige opslag gebruiken"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Locatie:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Oud wachtwoord:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Wachtwoord:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Wachtwoord be_vestigen:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Veiligheid wachtwoord"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Wachtwoorden komen niet overeen."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Wachtwoord mag niet leeg zijn"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Niet toestaan"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "_Eenmalig toestaan"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Altijd toestaan"
diff --git a/po/nn.po b/po/nn.po
deleted file mode 100644
index 6fda7a87..00000000
--- a/po/nn.po
+++ /dev/null
@@ -1,623 +0,0 @@
-# Norwegian translations for gnome-keyring.
-# Copyright (C) 2003 Red Hat Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2003-2006.
-# Eskild Hustvedt <i18n@zerodogg.org>, 2007-2008
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 0.4.6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-31 14:56+0200\n"
-"PO-Revision-Date: 2008-03-31 14:56+0200\n"
-"Last-Translator: Eskild Hustvedt <eskildh@gnome.org>\n"
-"Language-Team: Norwegian <i18n-nn@lister.ping.uio.no>\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"
-
-#: ../common/gkr-location.c:317
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Avtagbar disk: %s"
-
-#: ../common/gkr-location.c:319
-msgid "Removable Disk"
-msgstr "Avtagbar disk"
-
-#: ../common/gkr-location.c:532 ../common/gkr-location.c:544
-msgid "Home"
-msgstr "Heim"
-
-#: ../common/gkr-location.c:1072 ../common/gkr-location.c:1095
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disken eller stasjonen denne fila er plassert på er ikkje tilstades"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Programmet «%s» (%s) ynskjer tilgang til passordet for «<object prop='name'/>» "
-"på forvald nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Programmet «%s» (%s) ynskjer tilgang til passordet for «<object prop='name'/>» "
-"i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Programmet «%s» ynskjer tilgang til passordet for «<object prop='name'/>» på "
-"forvald nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Programmet «%s» ynskjer tilgang til passordet for «<object prop='name'/>» på %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Eit ukjent program ynskjer tilgang til passordet for «<object prop='name'/>» "
-"på forvald nøkkelring."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Eit ukjent program ynskjer tilgang til passordet for «<object prop='name'» på "
-"%s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Gje tilgang"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Gje program tilgang til nøkkelring?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Lås opp passord for %s nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programmet «%s» (%s) ynskjer tilgang til forvald nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programmet «%s» (%s) ynskjer tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Programmet «%s» ynskjer tilgang til forvald nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Programmet «%s» ynskjer tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Eit ukjent program ynskjer tilgang til forvald nøkkelring, men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Eit ukjent program ynskjer tilgang til nøkkelring «%s», men den er låst"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Oppgje passord for forvald nøkkelring for å låse opp"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Oppgje passord for nøkkelring «%s» for å låse opp"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Lås opp nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Lås opp denne nøkkelringa automatisk når eg loggar inn."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ynskjer å oppretta ein ny nøkkelring kalla «%s». Du må "
-"velja passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ynskjer å oppretta ein ny forvald nøkkelring. Du må "
-"velja passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ynskjer å oppretta ein ny nøkkelring kalla «%s». Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ynskjer å oppretta ein ny forvald nøkkelring. Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Eit ukjent program ynskjer å oppretta ein ny nøkkelring kalla «%s». Du må "
-"velja passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Eit ukjent program ynskjer å oppretta ein ny forvald nøkkelring. Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Nytt passord for nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Oppgje passord for ny nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ynskjer å byte passord for nøkkelring «%s». Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» (%s) ynskjer å byte passord for forvald nøkkelring. Du må "
-"velja passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ynskjer å byte passord for nøkkelring «%s». Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programmet «%s» ynskjer å byte passord for forvald nøkkelring. Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Eit ukjent program ynskjer å byte passord for nøkkelring «%s». Du må velja "
-"passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Eit ukjent program ynskjer å byte passord for forvald nøkkelring. Du må "
-"velja passordet du ynskjer å bruka for denne."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Vel eit nytt passord for nøkkelring «%s». "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Vel eit nytt passord for forvald nøkkelring. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Endra passord for nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet «%s» (%s) ynskjer å lagra eit passord, men det finst inga forvald "
-"nøkkelring. For å oppretta ein må du lagra passordet du ynskjer å bruka for "
-"den."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programmet «%s» ynskjer å lagra eit passord, men det finst inga forvald "
-"nøkkelring. For å oppretta ein må du lagra passordet du ynskjer å bruka for "
-"den."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Eit ukjent program ynskjer å lagra eit passord, men det finst inga forvald "
-"nøkkelring. For å oppretta ein må du lagra passordet du ynskjer å bruka for "
-"den."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Opprett forvald nøkkelring"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Oppgje passord for forvald nøkkelring"
-
-#
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Dette alternativet slår på PKCS#11-delen av gnome-keyring-tenesten. Dette "
-"trer berre i kraft når gnome-keyring-daemon startar. Altså når brukaren "
-"loggar inn. Denne innstillinga kan overstyrast med spesifikke "
-"kommandolinjeargumenter givast til tenesten."
-
-#
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Dette alternativet slår på SSH-delen av gnome-keyring-tenesten. Dette trer "
-"berre i kraft når gnome-keyring-daemon startar. Altså når brukaren loggar "
-"inn. Denne innstillinga kan overstyrast med spesifikke "
-"kommandolinjeargumenter givast til tenesten."
-
-#
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Om PKCS#11-delen av gnome-keyring er slått på."
-
-#
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Om SSH-agenten for gnome-keyring er slått på."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Tilgang nekta"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Programmet gnome-keyring-daemon køyrer ikkje."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Feil ved kommunikasjon med gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Ein nøkkelring med dette namnet eksisterer allereie"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programfeil: Programmet sendte ugyldige data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Inga treff"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Det finst inga nøkkelring med dette namnet."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Nøkkelringa er allereie låst opp."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Lås opp nøkkelring for pålogging"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Oppgje påloggingspassord for å låse opp nøkkelring"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Din påloggingsnøkkelring vart ikkje låst opp automatisk når du logga på "
-"denne datamaskinen."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Opprett nøkkelring for pålogging"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Oppgje påloggingspassord"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Din påloggingsnøkkelring vart ikkje oppretta automatisk når du logga på "
-"denne datamaskinen. Den vil verta oppretta no."
-
-#
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Lås opp privat nøkkel"
-
-#
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Lås opp sertifikat"
-
-#
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Lås opp offentlig nøkkel"
-
-#
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Lås opp"
-
-#
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Oppgi passord for for å låse opp privat nøkkel"
-
-#
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Oppgi passord for for å låse opp sertifikat"
-
-#
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Oppgi passord for for å låse opp offentlig nøkkel"
-
-#
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Oppgi passord for for å låse opp"
-
-#
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Lås opp denne private nøkkelringa automatisk når eg loggar inn."
-
-#
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Lås opp dette sertifikatet automatisk når eg loggar inn."
-
-#
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Lås opp denne offentlige nøkkelringa automatisk når eg loggar inn."
-
-#
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Lås denne opp automatisk når eg loggar inn."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Eit program ynskjer tilgang til privat nøkkel «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Eit program ynskjer tilgang til sertifikat «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Eit program ynskjer tilgang til offentlignøkkel «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Eit program ynskjer tilgang til «%s», men den er låst"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systemet ynskjer å importere privat nøkkel «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systemet ynskjer å importere sertifikat «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Systemet ynskjer å importere offentlig nøkkel «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systemet ynskjer å importere «%s», men den er låst."
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Lås opp passord for «%s»"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ikkje gjenkjent eller støtta fil."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Kunne ikkje lesa ugyldig eller korrupt fil."
-
-#
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Lagra passord ukryptert?"
-
-#
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Viss du vel å bruka eit tomt passord kan ikkje dine lagrede passord "
-"krypterast på ein trygg måte. Dei vil vera tilgjengeleg for alle som har "
-"tilgang til dine filer."
-
-#
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Bruk utrygg lagring"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Stad:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Gammalt passord:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Passord:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Stadfest passord:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Styrke for nytt passord"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Passorda er ikkje like."
-
-#
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Passordet kan ikkje vera tomt"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Nekt"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Tillat éin gong"
-
-#
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Tillat _alltid"
-
-#~ msgid "key"
-#~ msgstr "nøkkel"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Gammalt passord kan ikkje vera tomt."
diff --git a/po/oc.po b/po/oc.po
deleted file mode 100644
index 7950213f..00000000
--- a/po/oc.po
+++ /dev/null
@@ -1,534 +0,0 @@
-# Translation of oc.po to Occitan
-# Occitan translation of gnomekeyring.
-# Copyright (C) 2004-2006, 2007 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>, 2006-2008
-msgid ""
-msgstr ""
-"Project-Id-Version: oc\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-07 10:21+0100\n"
-"PO-Revision-Date: 2007-12-27 01:08+0100\n"
-"Last-Translator: Yannig Marchegay (Kokoyaya) <yannig@marchegay.org>\n"
-"Language-Team: Occitan <ubuntu-l10n-oci@lists.ubuntu.com>\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"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr ""
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr ""
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Ostal"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr ""
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr ""
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr ""
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr ""
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr ""
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr ""
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr ""
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr ""
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr ""
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr ""
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr ""
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr ""
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Emplaçament :"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "Mot de _pas :"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Los mots de pas son pas los meteisses."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Lo mot de pas pòt pas èsser void"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr ""
diff --git a/po/or.po b/po/or.po
deleted file mode 100644
index ce743341..00000000
--- a/po/or.po
+++ /dev/null
@@ -1,387 +0,0 @@
-# translation of or.po to Oriya
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-# Subhransu Behera <arya_subhransu@yahoo.co.in>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: or\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-08-03 11:27+0530\n"
-"Last-Translator: Subhransu Behera <arya_subhransu@yahoo.co.in>\n"
-"Language-Team: Oriya <oriya-group@lists.sarovar.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "ପୁରୁଣା ପ୍ରବଶ ସଙ୍କେତ (_O):"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "ପ୍ରବଶ ସଙ୍କେତ (_P):"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "ପ୍ରବଶ ସଙ୍କେତକୁ ନିଶ୍ଚିତ କରନ୍ତୁ (_C):"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">ପ୍ରବେଶସଙ୍କେତ ଶକ୍ତିମତ୍ତା ମାପକାଠି:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "ପୁରୁଣା ପ୍ରବେଶ ସଙ୍କେତଟି ଖାଲି ହୋଇ ପାରିବ ନାହିଁ।"
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "ପ୍ରବେଶ ସଙ୍କେତଟି ଖାଲି ହୋଇ ପାରିବ ନାହିଁ।"
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "ପ୍ରବେଶ ସଙ୍କେତ ଦ୍ବୟ ମିଶୁ ନାହାଁନ୍ତି।"
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "'%s' (%s) ପ୍ରୟୋଗ, '%s' କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "'%s' ପ୍ରୟୋଗ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "'%s' ପ୍ରୟୋଗ, '%s' କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "'%s' ପ୍ରୟୋଗ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ, '%s' କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ଏହା ତାଳକିତ ଅଟେ"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ଅାନଲକ କରିବା ପାଇଁ ଗୋଟିଏ ପ୍ରବଶ ସଙ୍କେତ ଭରଣ କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' କି-ରିଙ୍ଗକୁ ଅାନଲକ କରିବା ପାଇଁ ଗୋଟିଏ ପ୍ରବଶ ସଙ୍କେତ ଭରଣ କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "କି-ରିଙ୍ଗକୁ ଅାନଲକ କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "ପ୍ରତ୍ଯାଖ୍ଯାନ କରନ୍ତୁ (_D)"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ '%s' ନାମ ବିଶିଷ୍ଟ ଗୋଟିଏ ନୂତନ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ "
-"ବ୍ଯବହାର କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ ଗୋଟିଏ ନୂତନ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' ପ୍ରୟୋଗଟି %s ନାମ ବିଶିଷ୍ଟ ଗୋଟିଏ ନୂତନ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' ପ୍ରୟୋଗ ଗୋଟିଏ ନୂତନ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର କରିବା "
-"ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ %s ନାମ ବିଶିଷ୍ଟ ଗୋଟିଏ ନୂତନ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ ଗୋଟିଏ ନୂତନ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "ନୂତନ କି-ରିଙ୍ଗ ପ୍ରବେଶ ସଙ୍କେତ"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "ନୂତନ କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତ ଚୟନ କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗଟି '%s' କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗଟି ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ "
-"ବ୍ଯବହାର କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' ପ୍ରୟୋଗଟି '%s' କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର କରିବା "
-"ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' ପ୍ରୟୋଗଟି ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ '%s' କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ ବ୍ଯବହାର "
-"କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ପାଇଁ ପ୍ରବେଶ ସଙ୍କେତକୁ ବଦଳାଇ ପାଇଁ ଚାହୁଁଅଛି। ଏଥିରେ "
-"ବ୍ଯବହାର କରିବା ପାଇଁ ଚାହୁଁଥିବା ପ୍ରବେଶ ସଙ୍କେତକୁ ଆପଣ ଚୟନ କରିବା ଉଚିତ।"
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' କି-ରିଙ୍ଗ ପାଇଁ ଗୋଟିଏ ନୂତନ ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରନ୍ତୁ।"
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ପାଇଁ ଗୋଟିଏ ନୂତନ ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରନ୍ତୁ।"
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "କି-ରିଙ୍ଗ ପ୍ରବଶ ସଙ୍କେତକୁ ବଦଳାନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତକୁ ସଂରକ୍ଷିତ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ସେଠାରେ କୌଣସି ପୂର୍ବ "
-"ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ନାହିଁ। ଗୋଟିଏ କି-ରିଙ୍ଗ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ, ଆପଣ ଏଥିପାଇଁ ବ୍ଯବହାର କରିବାକୁ ଚାହୁଥିବା "
-"ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରିବା ଦରକାର।"
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' ପ୍ରୟୋଗ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତକୁ ସଂରକ୍ଷିତ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ସେଠାରେ କୌଣସି ପୂର୍ବ "
-"ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ନାହିଁ। ଗୋଟିଏ କି-ରିଙ୍ଗ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ, ଆପଣ ଏଥିପାଇଁ ବ୍ଯବହାର କରିବାକୁ ଚାହୁଥିବା "
-"ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରିବା ଦରକାର।"
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତକୁ ସଂରକ୍ଷିତ କରିବା ପାଇଁ ଚାହୁଁଅଛି, କିନ୍ତୁ ସେଠାରେ କୌଣସି ପୂର୍ବ "
-"ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ନାହିଁ। ଗୋଟିଏ କି-ରିଙ୍ଗ ସ୍ରୁଷ୍ଟି କରିବା ପାଇଁ, ଆପଣ ଏଥିପାଇଁ ବ୍ଯବହାର କରିବାକୁ ଚାହୁଥିବା "
-"ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରିବା ଦରକାର।"
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗକୁ ସ୍ରୁଷ୍ଟି କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗ ପାଇଁ ଗୋଟିଏ ପ୍ରବେଶ ସଙ୍କେତକୁ ଚୟନ କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "କି-ରିଙ୍ଗରେ ପ୍ରୟୋଗ ଅଭିଗମକୁ ସ୍ବୀକାର କରବ କି?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "'%s' (%s) ପ୍ରୟୋଗ '%s' ପାଇଁ '%s' ରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ '%s' ପାଇଁ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ "
-"ଚାହୁଁଅଛି।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"'%s' (%s) ପ୍ରୟୋଗ '%s' ପାଇଁ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "'%s' ପ୍ରୟୋଗ '%s' ପାଇଁ '%s' ରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"'%s' ପ୍ରୟୋଗ '%s' ପାଇଁ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"'%s' ପ୍ରୟୋଗ '%s' ପାଇଁ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ '%s' ପାଇଁ '%s' ରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ '%s' ପାଇଁ ପୂର୍ବ ନିର୍ଦ୍ଧାରିତ କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ "
-"ଚାହୁଁଅଛି।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"ଗୋଟିଏ ଅଜଣା ପ୍ରୟୋଗ '%s' ପାଇଁ ଗୋଟିଏ ଅଜଣା କି-ରିଙ୍ଗରେ ପ୍ରବେଶ ସଙ୍କେତକୁ ଅଭିଗମ କରିବା ପାଇଁ ଚାହୁଁଅଛି।"
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "ଅଭିଗମକୁ ସ୍ବୀକାର କରନ୍ତୁ"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "ଥରେ ସ୍ବୀକାର କରନ୍ତୁ (_O)"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "ସର୍ବଦା ସ୍ବୀକାର କରନ୍ତୁ (_A)"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "ଚଳାଇବା ପାଇଁ ଆପଣ ନିବେଦନର ପ୍ରକାରକୁ ଉଲ୍ଲେଖ କରିବା ଉଚିତ\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "ଅଜଣା ନିବେଦନ ପ୍ରକାର\n"
diff --git a/po/pa.po b/po/pa.po
deleted file mode 100644
index 46b51204..00000000
--- a/po/pa.po
+++ /dev/null
@@ -1,369 +0,0 @@
-# translation of gnome-keyring.HEAD.po to Punjabi
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Amanpreet Singh Alam <aalam@redhat.com>, 2004.
-# Amanpreet Singh Alam <amanpreetalam@yahoo.com>, 2005.
-# A S Alam <apbrar@gmail.com>, 2006.
-# A S Alam <aalam@users.sf.net>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-01-02 04:17+0000\n"
-"PO-Revision-Date: 2007-03-12 07:55+0530\n"
-"Last-Translator: A S Alam <aalam@users.sf.net>\n"
-"Language-Team: Punjabi <punjabi-l10n@lists.sf.net>\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: KBabel 1.11.4\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "ਪੁਰਾਣਾ ਗੁਪਤ-ਕੋਡ(_O):"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "ਗੁਪਤ-ਕੋਡ(_P):"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "ਨਵਾਂ ਗੁਪਤ-ਕੋਡ ਪੁਸ਼ਟੀ(_C):"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">ਗੁਪਤ-ਕੋਡ ਤਾਕਤ ਮੀਟਰ:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "ਪੁਰਾਣਾ ਗੁਪਤ-ਕੋਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "ਗੁਪਤ-ਕੋਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "ਗੁਪਤ-ਕੋਡ ਮਿਲਦਾ ਨਹੀਂ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "ਕਾਰਜ '%s' (%s) ਮੂਲ ਕੀਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "ਕਾਰਜ '%s' (%s) ਕੀਰਿੰਗ '%s'ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr "ਕਾਰਜ '%s' (%s) ਅਣਜਾਣ ਕੀਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "ਕਾਰਜ '%s' ਮੂਲ ਕੀਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "ਕਾਰਜ '%s' ਕੀਰਿੰਗ '%s'ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid "The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "ਕਾਰਜ '%s' ਅਣਜਾਣ ਕੀਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:452
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "ਮੂਲ ਕੀਰਿੰਗ ਨੂੰ ਅਣਜਾਣ ਕਾਰਜ ਵਰਤਣ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਕੀਰਿੰਗ '%s' ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹਨ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid "An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "ਅਣਜਾਣ ਕਾਰਜ ਇੱਕ ਅਣਜਾਣ ਕੀਰਿੰਗ ਨੂੰ ਵਰਤਣਾ ਚਾਹੁੰਦਾ ਹੈ, ਪਰ ਇਹ ਤਾਲਾਬੰਦ ਹੈ"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "ਮੂਲ ਕੀਰਿੰਗ ਦਾ ਤਾਲਾ ਖੋਲਣ ਲਈ ਗੁਪਤ-ਕੋਡ ਦਿਓ"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "ਕੀਰਿੰਗ '%s' ਦਾ ਤਾਲਾ ਖੋਲਣ ਲਈ ਗੁਪਤ-ਕੋਡ ਦਿਓ"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "ਕੀਰਿੰਗ ਤਾਲਾ ਖੋਲੋ"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "ਪਾਬੰਦੀ(_D)"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' (%s) ਇੱਕ ਨਵੀਂ ਕੀਰਿੰਗ, ਜਿਸ ਨੂੰ '%s' ਕਿਹਾ ਹੈ, ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ "
-"ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' (%s) ਇੱਕ ਨਵੀਂ ਮੂਲ ਕੀਰਿੰਗ ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ "
-"ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' ਇੱਕ ਨਵੀਂ ਕੀਰਿੰਗ, ਜਿਸ ਨੂੰ '%s' ਕਿਹਾ ਹੈ, ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ "
-"ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' ਇੱਕ ਨਵੀਂ ਮੂਲ ਕੀਰਿੰਗ ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-"
-"ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਇੱਕ ਨਵੀਂ ਕੀਰਿੰਗ, ਜਿਸ ਨੂੰ '%s' ਕਿਹਾ ਹੈ, ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ "
-"ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਇੱਕ ਨਵੀਂ ਮੂਲ ਕੀਰਿੰਗ ਬਣਾਉਣੀ ਚਾਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ "
-"ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "ਨਵਾਂ ਕੀਰਿੰਗ ਗੁਪਤ-ਕੋਡ"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "ਨਵੇਂ ਕੀਰਿੰਗ ਲਈ ਗੁਪਤ-ਕੋਡ ਚੁਣੋ"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' (%s) ਕੀਰਿੰਗ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' (%s) ਮੂਲ ਕੀਰਿੰਗ ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' ਕੀਰਿੰਗ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ਕਾਰਜ '%s' ਮੂਲ ਕੀਰਿੰਗ ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ"
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਕੀਰਿੰਗ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ"
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਮੂਲ ਕੀਰਿੰਗ ਲਈ ਗੁਪਤ-ਕੋਡ ਬਦਲਣਾ ਚਾਹੁੰਦਾ ਹੈ। "
-"ਤੁਹਾਨੂੰ ਇਸ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ"
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' ਕੀਰਿੰਗ ਲਈ ਨਵਾਂ ਗੁਪਤ-ਕੋਡ ਚੁਣੋ। "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "ਮੂਲ ਕੀਰਿੰਗ ਲਈ ਇੱਕ ਨਵਾਂ ਗੁਪਤ-ਕੋਡ ਚੁਣੋ। "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "ਕੀਰਿੰਗ ਗੁਪਤ-ਕੋਡ ਬਦਲੋ"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"ਕਾਰਜ '%s' (%s) ਇੱਕ ਗੁਪਤ-ਕੋਡ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦਾ ਹੈ, ਕੋਈ ਮੂਲ ਕੀਰਿੰਗ ਨਹੀਂ ਹੈ। ਇੱਕ ਨਵਾਂ ਬਣਾਉਣ ਲਈ "
-"ਤੁਹਾਨੂੰ ਉਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"ਕਾਰਜ '%s' ਇੱਕ ਗੁਪਤ-ਕੋਡ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦਾ ਹੈ, ਕੋਈ ਮੂਲ ਕੀਰਿੰਗ ਨਹੀਂ ਹੈ। ਇੱਕ ਨਵਾਂ ਬਣਾਉਣ ਲਈ ਤੁਹਾਨੂੰ "
-"ਉਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਇੱਕ ਗੁਪਤ-ਕੋਡ ਸੰਭਾਲਣਾ ਚਾਹੁੰਦਾ ਹੈ, ਕੋਈ ਮੂਲ ਕੀਰਿੰਗ ਨਹੀਂ ਹੈ। ਇੱਕ ਨਵਾਂ ਬਣਾਉਣ ਲਈ "
-"ਤੁਹਾਨੂੰ ਉਸ ਦੀ ਵਰਤੋਂ ਸਮੇਂ ਇਸਤੇਮਾਲ ਹੋਣ ਵਾਲੇ ਗੁਪਤ-ਕੋਡ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।"
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "ਮੂਲ ਕੀਰਿੰਗ ਬਣਾਓ"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "ਮੂਲ ਕੀਰਿੰਗ ਲਈ ਗੁਪਤ-ਕੋਡ ਚੁਣੋ"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "ਕੀ ਕਾਰਜਾਂ ਨੂੰ ਕੀਰਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੇਣੀ ਹੈ?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "ਕਾਰਜ '%s' (%s) %s ਵਿੱਚ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr "ਕਾਰਜ '%s' (%s) ਮੂਲ ਕੀਰਿੰਗ ਵਿੱਚ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr "ਕਾਰਜ '%s' (%s) ਅਣਜਾਣ ਕੀਰਿੰਗ ਵਿੱਚ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "ਕਾਰਜ '%s' %s ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "ਕਾਰਜ '%s' ਮੂਲ ਕੀਰਿੰਗ ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "ਕਾਰਜ '%s' ਅਣਜਾਣ ਕੀਰਿੰਗ ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ %s ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr "ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਮੂਲ ਕੀਰਿੰਗ ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "ਇੱਕ ਅਣਜਾਣ ਕਾਰਜ ਇੱਕ ਅਣਜਾਣ ਕੀਰਿੰਗ ਵਿੱਚੋਂ '%s' ਲਈ ਗੁਪਤ-ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦਾ ਹੈ।"
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "ਪਹੁੰਚ ਮਨਜ਼ੂਰ"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "ਇੱਕ ਵਾਰ ਪਹੁੰਚ(_O)"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ(_A)"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "ਤੁਹਾਨੂੰ ਚਲਾਉਣ ਲਈ ਮੰਗ ਦੀ ਕਿਸਮ ਦੱਸਣੀ ਪਵੇਗੀ\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "ਅਣਜਾਣ ਬੇਨਤੀ ਕਿਸਮ\n"
-
diff --git a/po/pl.po b/po/pl.po
deleted file mode 100644
index ef8dd5b3..00000000
--- a/po/pl.po
+++ /dev/null
@@ -1,690 +0,0 @@
-# translation of gnome-keyring.HEAD.pl.po to Polish
-# Artur Flinta <aflinta@at.kernel.pl>, 2006.
-# Copyright (C) 2001-2003, 2006 Free Software Foundation, Inc.
-# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-# Aktualną wersję tego pliku możesz odnaleźć w repozytorium cvs.gnome.pl
-# (:pserver:anonymous@cvs.gnome.pl:/gnomepl, puste hasło)
-# Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz
-# pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas na adres:
-# translators@gnome.pl
-# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-16 15:16+0100\n"
-"PO-Revision-Date: 2008-02-16 15:13+0100\n"
-"Last-Translator: Tomasz Dominikowski <dominikowski@gmail.com>\n"
-"Language-Team: Tomasz Dominikowski (Aviary.pl) <dominikowski@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.2\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
-"X-Poedit-Language: Polish\n"
-"X-Poedit-Country: Poland\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Dysk wymienny: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Dysk wymienny"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Dom"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Dysk lub napęd na którym znajduje się ten plik jest niedostępny"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga hasła dostępu dla \"<object prop='name'/>\" w "
-"domyślnej bazie kluczy."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga hasła dostępu dla \"<object prop='name'/>\" w %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Aplikacja \"%s\" wymaga hasła dostępu dla \"<object prop='name'/>\" w "
-"domyślnej bazie kluczy."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Aplikacja \"%s\" wymaga hasła dostępu dla \"<object prop='name'/>\" w %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Nieznana aplikacja wymaga hasła dostępu dla \"<object prop='name'/>\" w "
-"domyślnej bazie kluczy."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Nieznana aplikacja wymaga hasła dostępu dla \"<object prop='name'/>\" w %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Zezwolenie na dostęp"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Zezwolić aplikacji na dostęp do bazy kluczy?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Hasło odblokowywujące bazę kluczy %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga dostępu do domyślnej bazy kluczy, ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga dostępu do bazy kluczy \"%s\", ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikacja \"%s\" wymaga dostępu do domyślnej bazy kluczy, ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikacja \"%s\" wymaga dostępu do bazy kluczy \"%s\", ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nieznana aplikacja wymaga dostępu do domyślnej bazy kluczy, ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Nieznana aplikacja wymaga dostępu do bazy kluczy \"%s\", ale baza jest "
-"zablokowana"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Podaj hasło do domyślnej bazy kluczy aby ją odblokować"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Podaj hasło do bazy kluczy \"%s\" aby ją odblokować"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Odblokowanie bazy kluczy"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Automatyczne odblokowywanie tej bazy kluczy po zalogowaniu."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga utworzenia nowej bazy kluczy o nazwie \"%s\". "
-"Należy podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" (%s) wymaga utworzenia nowej domyślnej bazy kluczy. Należy "
-"podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" wymaga utworzenia nowej bazy kluczy o nazwie \"%s\". Należy "
-"podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" wymaga utworzenia nowej domyślnej bazy kluczy. Należy podać "
-"hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nieznana aplikacja wymaga utworzenia nowej bazy kluczy o nazwie \"%s\". "
-"Należy podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nieznana aplikacja wymaga utworzenia nowej domyślnej bazy kluczy. Należy "
-"podać hasło jakie będzie z nią używane."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Hasło nowej bazy kluczy"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Podaj hasło dla nowej bazy kluczy"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" (%s) chce zmienić hasło dla bazy kluczy \"%s\". Należy "
-"podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" (%s) chce zmienić hasło dla domyślnej bazy kluczy. Należy "
-"podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" chce zmienić hasło dla bazy kluczy \"%s\". Należy podać "
-"hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikacja \"%s\" chce zmienić hasło dla domyślnej bazy kluczy. Należy podać "
-"hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nieznana aplikacja chce zmienić hasło dla bazy kluczy \"%s\". Należy podać "
-"hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Nieznana aplikacja chce zmienić hasło dla domyślnej bazy kluczy. Należy "
-"podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Podaj nowe hasło dla bazy kluczy \"%s\". "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Podaj nowe hasło dla domyślnej bazy kluczy. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Zmiana hasła bazy kluczy"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacja \"%s\" (%s) potrzebuje zachować hasło, ale brak domyślnej bazy "
-"kluczy. Aby ją utworzyć, należy podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikacja \"%s\" potrzebuje zachować hasło, ale brak domyślnej bazy kluczy. "
-"Aby ją utworzyć, należy podać hasło jakie będzie z nią używane."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nieznana aplikacja potrzebuje zachować hasło, ale brak domyślnej bazy "
-"kluczy. Aby ją utworzyć, należy podać hasło jakie będzie z nią używane."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Tworzenie domyślnej bazy kluczy"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Podaj hasło dla domyślnej bazy kluczy"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Ta opcja włącza komponent PKCS#11 usługi gnome-keyring. Działa tylko podczas "
-"uruchamiania usługi gnome-keyring (np. kiedy użytkownik się loguje). Te "
-"ustawienie może zostać unieważnione poprzez odpowiednie argumenty wiersza "
-"poleceń przekazane usłudze."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Ta opcja uruchamia agenta SSH w usłudze gnome-keyring. Działa tylko podczas "
-"uruchamiania usługi gnome-keyring (np. kiedy użytkownik się loguje). Te "
-"ustawienie może zostać unieważnione poprzez odpowiednie argumenty wiersza "
-"poleceń przekazane usłudze."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Określa czy komponent PKCS#11 gnome-keyring jest włączony."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Określa czy agent SSH gnome-keyring jest włączony."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Dostęp zabroniony"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Aplikacja gnome-keyring-deamon nie jest uruchomiona."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Błąd podczas komunikacji z gnome-keyring-deamon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Baza kluczy o takiej nazwie już istnieje"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Błąd programisty: aplikacja wysłała błędne dane."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Brak pasujących wyników"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Baza kluczy o takiej nazwie nie istnieje."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Baza kluczy jest już odblokowana"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Odblokowanie bazy kluczy konta"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Proszę wprowadzić hasło konta, aby odblokować bazę kluczy"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Baza kluczy konta nie została automatycznie odblokowana podczas zalogowania "
-"się do tego komputera."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Tworzenie bazy kluczy konta"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Proszę wprowadzić hasło konta"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Baza kluczy konta nie została poprawnie utworzona podczas zalogowania się do "
-"tego komputera. Zostanie utworzona teraz."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Odblokuj klucz prywatny"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Odblokuj certyfikat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Odblokuj klucz publiczny"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Odblokowanie"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Proszę wprowadzić hasło, aby odblokować klucz prywatny"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Proszę wprowadzić hasło, aby odblokować certyfikat"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Proszę wprowadzić hasło, aby odblokować klucz publiczny"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Proszę wprowadzić hasło, aby odblokować"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Automatyczne odblokowywanie tego klucza prywatnego po zalogowaniu"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Automatyczne odblokowywanie tego certyfikatu po zalogowaniu."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Automatyczne odblokowywanie tego klucza publicznego po zalogowaniu."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Automatyczne odblokowywanie po zalogowaniu"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Aplikacja wymaga dostępu do klucza prywatnego \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Aplikacja wymaga dostępu do certyfikatu \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Aplikacja wymaga dostępu do klucza publicznego \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Aplikacja wymaga dostępu do \"%s\", ale baza jest zablokowana"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"System wymaga zaimportowania klucza prywatnego \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "System wymaga zaimportowania certyfikatu \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"System wymaga zaimportowania klucza publicznego \"%s\", ale jest zablokowany"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "System wymaga zaimportowania \"%s\", ale baza jest zablokowana"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Hasło odblokowywujące dla \"%s\""
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Plik nie został rozpoznany lub nie jest obsługiwany."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Nie można przetworzyć niepoprawnego lub uszkodzonego pliku."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Przechowywać hasła bez szyfrowania?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Puste hasło oznacza niezabezpieczone przechowywanie haseł. Będą dostępne dla "
-"każdego, kto będzie miał dostęp do plików tego konta."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Użycie niezabezpieczonego przechowywania"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Położenie:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Stare hasło:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Hasło:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Potwierdź hasło:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Nowa siła hasła"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Hasła nie są zgodne."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Hasło nie może być puste"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Odmowa"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Zezwolenie jedn_okrotne"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Zezwolenie st_ałe"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Odblokowanie %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Proszę wprowadzić hasło dla \"%s\" aby odblokować"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Stare hasło nie może być puste."
-
-#~ msgid "Must be run from gnome-keyring\n"
-#~ msgstr "Musi być uruchomione z gnome-keyring\n"
-
-#~ msgid "_Confirm new password:"
-#~ msgstr "_Potwierdź nowe hasło:"
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Miernik siły hasła:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Aplikacja \"%s\" (%s) wymaga dostępu do nieznanej bazy kluczy, ale baza "
-#~ "jest zablokowana"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Aplikacja \"%s\" wymaga dostępu do nieznanej bazy kluczy, ale baza jest "
-#~ "zablokowana"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Nieznana aplikacja wymaga dostępu do nieznanej bazy kluczy, ale baza jest "
-#~ "zablokowana"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Aplikacja \"%s\" (%s) wymaga hasła dostępu dla \"%s\" w nieznanej bazie "
-#~ "kluczy."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Aplikacja \"%s\" wymaga hasła dostępu dla \"%s\" w nieznanej bazie kluczy."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Nieznana aplikacja wymaga hasła dostępu dla \"%s\" w nieznanej bazie "
-#~ "kluczy."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Należy podać rodzaj żądania do uruchomienia\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Nieznany typ żądania\n"
-
-#~ msgid ""
-#~ "An unkown application wants to create a new keyring called '%s'. You have "
-#~ "to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Nieznana aplikacja wymaga utworzenia nowej bazy kluczy o nazwie \"%s\". "
-#~ "Należy utworzyć hasło, które będzie z nią używane."
-
-#~ msgid ""
-#~ "An unkown application wants to create a new default keyring. You have to "
-#~ "choose the password you want to use for it."
-#~ msgstr ""
-#~ "Nieznana aplikacja wymaga utworzenia nowej domyślnej bazy kluczy. Należy "
-#~ "utworzyć hasło, które będzie z nią używane."
diff --git a/po/pt.po b/po/pt.po
deleted file mode 100644
index 3f775826..00000000
--- a/po/pt.po
+++ /dev/null
@@ -1,655 +0,0 @@
-# gnome-keyring's Portuguese translation.
-# Copyright © 2003, 2004, 2006, 2007, 2008 gnome-keyring
-# This file is distributed under the same license as the gnome-keyring package.
-# Duarte Loreto <happyguy_pt@hotmail.com>, 2003, 2004, 2006, 2007, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: 2.22\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-15 20:30+0000\n"
-"PO-Revision-Date: 2008-02-15 20:35+0000\n"
-"Last-Translator: Duarte Loreto <happyguy_pt@hotmail.com>\n"
-"Language-Team: Portuguese <gnome_pt@yahoogroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disco Removível: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disco Removível"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Pasta Pessoal"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr ""
-"O disco ou dispositivo onde este ficheiro se encontra já não está presente"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"A aplicação '%s' (%s) deseja aceder à senha de '<object prop='name'/>' no "
-"chaveiro por omissão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"A aplicação '%s' (%s) deseja aceder à senha de '<object prop='name'/>' em %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"A aplicação '%s' deseja aceder à senha de '<object prop='name'/>' no "
-"chaveiro por omissão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"A aplicação '%s' deseja aceder à senha de '<object prop='name'/>' em %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Uma aplicação desconhecida deseja aceder à senha de '<object prop='name'/>' "
-"no chaveiro por omissão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Uma aplicação desconhecida deseja aceder à senha de '<object prop='name'/>' "
-"em %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Permitir o acesso"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Permitir à aplicação o acesso ao chaveiro?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Destranque a senha do chaveiro %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"A aplicação '%s' (%s) deseja aceder ao chaveiro por omissão, mas este está "
-"trancado."
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"A aplicação '%s' (%s) deseja aceder ao chaveiro '%s', mas este está trancado."
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"A aplicação '%s' deseja aceder ao chaveiro por omissão, mas este está "
-"trancado"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"A aplicação '%s' deseja aceder ao chaveiro '%s', mas este está trancado"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Uma aplicação desconhecida deseja aceder ao chaveiro por omissão, mas este "
-"está trancado"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Uma aplicação desconhecida deseja aceder ao chaveiro '%s', mas este está "
-"trancado"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Introduza a senha para destracar o chaveiro por omissão"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Introduza a senha para destrancar o chaveiro '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Destrancar Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Destrancar automaticamente este chaveiro ao iniciar sessão."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) deseja criar um novo chaveiro denominado '%s'. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) deseja criar um novo chaveiro por omissão. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' deseja criar um novo chaveiro denominado '%s'. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' deseja criar um novo chaveiro por omissão. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida deseja criar um novo chaveiro denominado '%s'. "
-"Terá de seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida deseja criar um novo chaveiro por omissão. Terá "
-"de seleccionar a senha que deseja utilizar no chaveiro."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Senha de Novo Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Seleccione a senha para o novo chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) deseja alterar a senha do chaveiro '%s'. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) deseja alterar a senha do chaveiro por omissão. Terá "
-"de seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' deseja alterar a senha do chaveiro '%s'. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' deseja alterar a senha do chaveiro por omissão. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida deseja alterar a senha do chaveiro '%s'. Terá de "
-"seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida deseja alterar a senha do chaveiro por omissão. "
-"Terá de seleccionar a senha que deseja utilizar no chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Seleccione uma nova senha para o chaveiro '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Seleccione uma nova senha para o chaveiro por omissão. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Alterar a Senha do Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicação '%s' (%s) deseja armazenar uma senha mas não existe chaveiro por "
-"omissão. Para criar um, tem de seleccionar a senha que deseja utilizar no "
-"chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicação '%s' deseja armazenar uma senha mas não existe chaveiro por "
-"omissão. Para criar um, tem de seleccionar a senha que deseja utilizar no "
-"chaveiro."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Uma aplicação desconhecida deseja armazenar uma senha mas não existe "
-"chaveiro por omissão. Para criar um, tem de seleccionar a senha que deseja "
-"utilizar no chaveiro."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Criar um Chaveiro por Omissão"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Seleccione a senha para o chaveiro por omissão"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Esta opção activa o componente PKCS#11 no daemon gnome-keyring. Apenas tem "
-"efeito quando o gnome-keyring-daemon é iniciado, (por ex: quando o "
-"utilizador inicia uma sessão). Esta definição pode ser sobreposta quando "
-"determinados argumentos de linha de comando forem passados para o daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Esta opção activa o agente SSH no daemon gnome-keyring. Apenas tem efeito "
-"quando o gnome-keyring-daemon é iniciado, (por ex: quando o utilizador "
-"inicia uma sessão). Esta definição pode ser sobreposta quando determinados "
-"argumentos de linha de comando forem passados para o daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Se o componente PKCS#11 do gnome-keyring está ou não activo."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Se o agente SSH do gnome-keyring está ou não activo."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Acesso Negado"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "A aplicação gnome-keyring-daemon não se encontra em execução."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Erro ao comunicar com o gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Já existe um chaveiro com esse nome"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Erro de programação: A aplicação enviou dados inválidos."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Nenhum resultado coincidente"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Não existe um chaveiro com esse nome"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "O chaveiro já foi destrancado."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Destrancar o Chaveiro de Início de Sessão"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Introduza a senha de início de sessão para destrancar o chaveiro"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"O seu chaveiro de início de sessão não foi destrancado automaticamente "
-"quando iniciou a sessão neste computador."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Criar um Chaveiro de Início de Sessão"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Introduza a sua senha de início de sessão"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"O seu chaveiro de início de sessão não foi criado automaticamente quando "
-"iniciou a sua sessão neste computador. Irá agora ser criado."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Destrancar a chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Destrancar o certificado"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Destrancar a chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Destrancar"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Introduza a senha para destrancar a chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Introduza a senha para destrancar o certificado"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Introduza a senha para destrancar a chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Introduza a senha para destrancar"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Destrancar automaticamente esta chave privada ao iniciar sessão."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Destrancar automaticamente este certificado ao iniciar sessão."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Destrancar automaticamente esta chave pública ao iniciar sessão."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Destrancar este automaticamente ao iniciar sessão."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Uma aplicação deseja aceder à chave privada '%s', mas esta está trancada"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Uma aplicação deseja aceder ao certificado '%s', mas este está trancado"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Uma aplicação deseja aceder à chave pública '%s', mas esta está trancada"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Uma aplicação deseja aceder a '%s', mas este está trancado"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "O sistema deseja importar a chave privada '%s', mas esta está trancada"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "O sistema deseja importar o certificado '%s', mas este está trancado"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "O sistema deseja importar a chave pública '%s', mas esta está trancada"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "O sistema deseja importar '%s', mas este está trancado"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Senha para destrancar '%s'"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Ficheiro desconhecido ou não suportado."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Incapaz de parsear ficheiro inválido ou corrompido."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Armazenar as senhas sem encriptação?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Ao seleccionar utilizar uma senha vazia, as suas senhas armazenadas não "
-"serão encriptadas com segurança. Poderão ser acedidas por qualquer pessoa "
-"com acesso aos seus ficheiros."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Utilizar Armazenamento Inseguro"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Localização:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "Senha _antiga:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Senha:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirme a senha:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Resistência da nova senha"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Senhas não coincidem."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "A senha não pode ser vazia"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Negar"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Permitir _Uma Vez"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Permitir _Sempre"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Destrancar %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Introduza a senha de %s para o destrancar"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "A senha antiga não pode ser vazia."
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Medidor de resistência da senha:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "A aplicação '%s' (%s) deseja aceder a um chaveiro desconhecido, mas este "
-#~ "está trancado"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "A aplicação '%s' deseja aceder a um chaveiro desconhecido, mas este está "
-#~ "trancado"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Uma aplicação desconhecida deseja aceder a um chaveiro desconhecido, mas "
-#~ "este está trancado"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "A aplicação '%s' (%s) deseja aceder à senha para '%s' num chaveiro "
-#~ "desconhecido."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "A aplicação '%s' deseja aceder à senha para '%s' num chaveiro "
-#~ "desconhecido."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Uma aplicação desconhecida deseja aceder à senha para '%s' num chaveiro "
-#~ "desconhecido."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Tem de especificar o tipo de pedido a executar\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Tipo de pedido desconhecido\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
deleted file mode 100644
index 7b2d9503..00000000
--- a/po/pt_BR.po
+++ /dev/null
@@ -1,605 +0,0 @@
-# gnome-keyring: translation to Brazilian Portuguese (pt_BR)
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Guilherme de S. Pastore <gpastore@gnome.org>, 2004-2005.
-# Leonardo Ferreira Fontenelle <leo.fontenelle@gmail.com>, 2006.
-# Vladimir Melo <vladimirmelo@foresightlinux.org>, 2007.
-# Hugo Doria <hugodoria@gmail.com>, 2007-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-22 18:40-0300\n"
-"PO-Revision-Date: 2008-02-18 13:16+0000\n"
-"Last-Translator: Hugo Doria <hugodoria@gmail.com>\n"
-"Language-Team: GNOME-BR <gnome-l10n-br@listas.cipsga.org.br>\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"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Disco Removível: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Disco Removível"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Início"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr ""
-"O disco ou dispositivo onde este arquivo está localizado não está presente"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"A aplicação '%s' (%s) quer acessar a senha para '<object prop='name'/>' no "
-"chaveiro padrão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"A aplicação '%s' (%s) quer acessar a senha para '<object prop='name'/>' em %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"A aplicação '%s' quer acessar a senha para '<object prop='name'/>' no "
-"chaveiro padrão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"A aplicação '%s' quer acessar a senha para '<object prop='name'/>' em %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Uma aplicação desconhecida quer acessar a senha para '<object prop='name'/>' "
-"no chaveiro padrão."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Uma aplicação desconhecida quer acessar a senha para '<object prop='name'/>' "
-"em %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Autorizar acesso"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Autorizar acesso da aplicação ao chaveiro?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Senha para desbloquear o chaveiro %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"A aplicação '%s' (%s) quer acesso ao chaveiro padrão, mas ele está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"A aplicação '%s' (%s) quer acesso ao chaveiro '%s', mas ele está travado"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"A aplicação '%s' quer acesso ao chaveiro padrão, mas ele está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "A aplicação '%s' quer acesso ao chaveiro '%s', mas ele está bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Uma aplicação desconhecida quer acesso ao chaveiro padrão, mas ele está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Uma aplicação desconhecida quer acesso ao chaveiro '%s', mas ele está "
-"bloqueado"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Digite a senha do chaveiro padrão para desbloqueá-lo"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Digite a senha do chaveiro '%s' para desbloqueá-lo"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Desbloquear Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Desbloquear este chaveiro automaticamente quando eu efetuar o login."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) quer criar um novo chaveiro chamado '%s'. Você deve "
-"escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) quer criar um novo chaveiro padrão. Você deve escolher "
-"uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' quer criar um novo chaveiro chamado '%s'. Você deve "
-"escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' quer criar um novo chaveiro padrão. Você deve escolher uma "
-"senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida quer criar um novo chaveiro chamado '%s'. Você "
-"deve escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida quer criar um novo chaveiro padrão. Você deve "
-"escolher uma senha para ele."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Senha do Novo Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Escolha uma senha para o novo chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) quer mudar a senha para o chaveiro '%s'. Você deve "
-"escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' (%s) quer mudar a senha para o chaveiro padrão. Você deve "
-"escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' quer mudar a senha para o chaveiro '%s'. Você deve escolher "
-"uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"A aplicação '%s' quer mudar a senha para o chaveiro padrão. Você deve "
-"escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida quer mudar a senha para o chaveiro '%s'. Você "
-"deve escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Uma aplicação desconhecida quer mudar a senha para o chaveiro padrão. Você "
-"deve escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Escolha uma nova senha para o chaveiro '%s'. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Escolha uma nova senha para o chaveiro padrão. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Mudar Senha do Chaveiro"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicação '%s' (%s) quer gravar uma senha, mas não existe um chaveiro "
-"padrão. Para criar um, você precisa escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"A aplicação '%s' quer gravar uma senha, mas não existe um chaveiro padrão. "
-"Para criar um, você precisa escolher uma senha para ele."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Uma aplicação desconhecida quer gravar uma senha, mas não existe um chaveiro "
-"padrão. Para criar um, você precisa escolher uma senha para ele."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Criar Chaveiro Padrão"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Escolha a senha para o chaveiro padrão"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Esta opção ativa o componente PKCS#11 no daemon do gnome-keyring. Ela só tem "
-"efeito quando o gnome-keyring-daemon inicia (ex: quando o usuário faz "
-"login). Esta configuração pode ser substituída quando certos argumentos de "
-"linha de comando são passados para o daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Esta opção ativa o agente SSH no daemon do gnome-keyring. Ela só tem efeito "
-"quando o gnome-keyring-daemon inicia (ex: quando o usuário faz login). Esta "
-"configuração pode ser substituída quando certos argumentos de linha de "
-"comando são passados para o daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Se o component PCKS#11 do gnome-keyring está ativado."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Se o agente SSH do gnome-keyring está ativado."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Acesso Negado"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "A aplicação gnome-keyring-daemon não está sendo executada."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Erro de comunicação com gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Um chaveiro com aquele nome já existe"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Erro de programador: A aplicação enviou dados inválidos."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Nenhum resultado encontrado"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Um chaveiro com este nome não existe."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "O chaveiro já foi desbloqueado."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Destravar Chaveiro Login"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Digite a senha de login para desbloquear o chaveiro"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Seu chaveiro login não foi desbloqueado automaticamente quando você efetuou "
-"login neste computador."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Criar o Chaveiro Login"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Digite a senha de login"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"O chaveiro login não foi criado automaticamente quando você efetuou login "
-"neste computador. Ele será criado agora."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Desbloquear chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Desbloquear certificado"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Desbloquear chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Desbloquear"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Digite a senha para desbloquear a chave privada"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Digite a senha para desbloquear o certificado"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Digite a senha para desbloquear a chave pública"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Digite a senha para desbloquear"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr ""
-"Desbloquear esta chave privada automaticamente quando eu efetuar login."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Desbloquear este certificado automaticamente quando eu efetuar login."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr ""
-"Desbloquear esta chave pública automaticamente quando eu efetuar o login."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Desbloquear isto automaticamente quando eu efetuar o login."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Uma aplicação deseja acesso a chave privada '%s', mas ela está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Uma aplicação deseja acesso ao certificado '%s', mas ele está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Uma aplicação deseja acesso a chave pública '%s', mas ela está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Uma aplicação deseja acesso para '%s', mas ele está travado"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "O sistema deseja importa a chave privada '%s\", mas ela está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "O sistema deseja importar o certificado '%s', mas ele está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "O sistema deseja importa a chave pública '%s', mas ela está bloqueada"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "O sistema deseja importar '%s', mas ele está bloqueado"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Senha para desbloquear %s"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Arquivo não reconhecido ou não suportado."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Não possível analisar arquivo inválido ou corrompido."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Armazenar senhas sem criptografia?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Escolhendo usar uma senha em branco, suas senhas armazenadas não estarão "
-"seguramente criptografadas. Elas estarão acessíveis para qualquer pessoa com "
-"acesso a seus arquivos."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Usar armazenamento não-seguro"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Localização:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "Senha _antiga:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Senha:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Confirmar senha:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Força da nova senha"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "As senhas diferem."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "A senha não pode ser em branco"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Negar"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Autorizar _Uma Vez"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Sempre _Autorizar"
diff --git a/po/ro.po b/po/ro.po
deleted file mode 100644
index 90efc6bc..00000000
--- a/po/ro.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# translation of gnome-keyring.HEAD.ro.po to Română
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Mugurel Tudor <mugurelu@go.ro>, 2004.
-# Mugurel Tudor <mugurelu@gnome.ro>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.ro\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2006-03-05 15:58+0200\n"
-"Last-Translator: Mugurel Tudor <mugurelu@gnome.ro>\n"
-"Language-Team: Română <gnomero@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.1\n"
-"Plural-Forms: nplurals=3;plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1))\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-#, fuzzy
-msgid "Old password cannot be blank."
-msgstr "Parola nu poate fi goală."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Parola nu poate fi goală."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Parolele nu se potrivesc."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să acceseze keyring-ul implicit, dar este blocat"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să acceseze keyring-ul „%s”, dar este blocat"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să acceseze un keyring necunoscut, dar este "
-"blocat"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Aplicaţia „%s” doreşte acces la keyring-ul implicit, dar este blocat"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplicaţia „%s” doreşte acces la keyring-ul „%s”, dar este blocat"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "Aplicaţia „%s” doreşte acces la un keyring necunoscut, dar este blocat"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"O aplicaţie necunoscută doreşte acces la keyring-ul implicit, dar este blocat"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"O aplicaţie necunoscută doreşte acces la keyring-ul „%s”, dar este blocat"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"O aplicaţie necunoscută doreşte acces la un keyring necunoscut, dar este "
-"blocat"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Introduceţi parola pentru pentru deblocarea keyring-ului implicit"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Introduceţi parola pentru pentru deblocarea keyring-ului „%s”"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Deblocare keyring"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Refuză"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să creeze un nou keyring numit „%s”. Va trebui "
-"să alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” doreşte să creeze un nou keyring numit „%s”. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"O aplicaţie necunoscută doreşte să creeze un nou keyring numit „%s”. Va "
-"trebui să alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"O aplicaţie necunoscută doreşte să creeze un nou keyring implicit. Va trebui "
-"să alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Noua parolă pentru keyring"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Alegeţi parola pentru noul keyring"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplicaţia „%s” doreşte să creeze un nou keyring implicit. Va trebui să "
-"alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"O aplicaţie necunoscută doreşte să creeze un nou keyring implicit. Va trebui "
-"să alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"O aplicaţie necunoscută doreşte să creeze un nou keyring implicit. Va trebui "
-"să alegeţi pentru acesta o parolă cu care să îl puteţi folosi."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Alegeţi parola pentru noul keyring"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Alegeţi parola pentru keyring-ul implicit"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "Noua parolă pentru keyring"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să stocheze o parolă, dar nu există nici un "
-"keyring implicit. Pentru a crea unul, va trebui să alegeţi o parolă cu care "
-"să îl puteţi utiliza."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplicaţia „%s” doreşte să stocheze o parolă, dar nu există nici un keyring "
-"implicit. Pentru a crea unul, va trebui să alegeţi o parolă cu care să îl "
-"puteţi utiliza."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"O aplicaţie necunoscută doreşte să stocheze o parolă, dar nu există nici un "
-"keyring implicit. Pentru a crea unul, va trebui să alegeţi o parolă cu care "
-"să îl puteţi utiliza."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Creează keyring implicit"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Alegeţi parola pentru keyring-ul implicit"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Permiteţi accesul aplicaţiei la keyring?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Aplicaţia „%s” (%s) doreşte să acceseze parola pentru „%s” în %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să acceseze parola pentru „%s” în keyring-ul "
-"implicit."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Aplicaţia „%s” (%s) doreşte să acceseze parola pentru „%s” într-un keyring "
-"necunoscut."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Aplicaţia „%s” doreşte să acceseze parola pentru „%s” în %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Aplicaţia „%s” doreşte să acceseze parola pentru „%s” în keyring-ul implicit."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Aplicaţia „%s” doreşte să acceseze parola pentru „%s” într-un keyring "
-"necunoscut."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "O aplicaţie necunoscută doreşte să acceseze parola pentru „%s” în %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"O aplicaţie necunoscută doreşte să acceseze parola pentru „%s” în keyring-ul "
-"implicit."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"O aplicaţie necunoscută doreşte să acceseze parola pentru „%s” într-un "
-"keyring necunoscut."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Permite accesul"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Permite doar _o dată"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Permite în mod _permanent"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Trebuie să specificaţi tipul cererii pentru rulare\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Tip de cerere necunoscut\n"
diff --git a/po/ru.po b/po/ru.po
deleted file mode 100644
index 133ba0d1..00000000
--- a/po/ru.po
+++ /dev/null
@@ -1,594 +0,0 @@
-# translation of gnome-keyring to Russian
-# Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc.
-#
-# Dmitry G. Mastrukov <dmitry@taurussoft.org>, 2004.
-# Leonid Kanter <leon@asplinux.ru>, 2006.
-# Nickolay V. Shmyrev <nshmyrev@yandex.ru>, 2006.
-# Yuri Kozlov <kozlov.y@gmail.com>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring trunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-10 00:03+0300\n"
-"PO-Revision-Date: 2008-03-09 18:28+0300\n"
-"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
-"Language-Team: Russian <gnome-cyr@gnome.org>\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%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Отключаемый диск: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Отключаемый диск"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Домашний каталог"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Диск или устройство, на котором расположен этот файл, отсутствует"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Приложение «%s» (%s) хочет получить доступ к паролю для '<object prop='name'/"
-">' в основном брелоке."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Приложение «%s» (%s) хочет получить доступ к паролю для '<object prop='name'/"
-">' в брелоке %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Приложение «%s» хочет получить доступ к паролю для '<object prop='name'/>' в "
-"основном брелоке."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Приложение «%s» хочет получить доступ к паролю для '<object prop='name'/>' в "
-"брелоке %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Приложение хочет получить доступ к паролю для '<object prop='name'/>' в "
-"основном брелоке."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Приложение хочет получить доступ к '<object prop='name'/>' в %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Разрешить доступ"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Разрешать приложениям доступ к брелоку?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Пароль разблокирования брелока %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Приложение «%s» (%s) хочет получить доступ к основному брелоку, но он "
-"заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Приложение «%s» (%s) хочет получить доступ к брелоку «%s», но он заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Приложение «%s» хочет получить доступ к основному брелоку, но он заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Приложение «%s» хочет получить доступ к брелоку «%s», но он заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Приложение хочет получить доступ к основному брелоку, но он заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Приложение хочет получить доступ к брелоку «%s», но он заблокирован"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Введите пароль для разблокирования основного брелока"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Введите пароль для разблокирования брелока «%s»"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Разблокирование брелока"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Автоматически разблокировать брелок после входа в систему."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» (%s) хочет создать новый брелок с именем «%s». Необходимо "
-"выбрать пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» (%s) хочет создать новый основной брелок. Необходимо выбрать "
-"пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» хочет создать новый брелок с именем «%s». Необходимо выбрать "
-"пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» хочет создать новый основной брелок. Необходимо выбрать "
-"пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Приложение хочет создать новый брелок с именем «%s». Необходимо выбрать "
-"пароль для брелока."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Неизвестное приложение хочет создать новый брелок по умолчанию. Необходимо "
-"выбрать пароль для этого брелока."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Пароль для нового брелока"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Выберите пароль для нового брелока"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» (%s) хочет изменить пароль брелока «%s». Необходимо выбрать "
-"пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» (%s) хочет изменить пароль для основного брелока. Необходимо "
-"выбрать пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» хочет изменить пароль для брелока «%s». Необходимо выбрать "
-"пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Приложение «%s» хочет изменить пароль для основного брелока. Необходимо "
-"выбрать пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Неизвестное приложение хочет изменить пароль для брелока «%s». Необходимо "
-"выбрать пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Неизвестное приложение хочет изменить пароль для основного брелока. "
-"Необходимо выбрать пароль для этого брелока."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Выберите новый пароль для брелока «%s»: "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Выберите пароль для основного брелока: "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Смена пароля брелока"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Приложение «%s» (%s) хочет сохранить пароль, но основной брелок отсутствует. "
-"Для создания брелока необходимо выбрать пароль."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Приложение «%s» хочет сохранить пароль, но основной брелок отсутствует. Для "
-"создания брелока необходимо выбрать пароль."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Приложение хочет сохранить пароль, но основной брелок отсутствует. Для "
-"создания брелока необходимо выбрать пароль."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Создание основного брелока"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Выберите пароль для основного брелока"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Этот параметр активирует компонент PKCS#11 в сервисе брелоков GNOME. Он "
-"обрабатывается только при запуске gnome-keyring-daemon, (то есть когда "
-"пользователь входит в систему). Данный параметр может быть изменён с помощью "
-"аргументов командной строки, передаваемых сервису."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Этот параметр активирует SSH-агент в сервисе брелоков GNOME. Он "
-"обрабатывается только при запуске gnome-keyring-daemon, (то есть когда "
-"пользователь входит в систему). Данный параметр может быть изменён с помощью "
-"аргументов командной строки, передаваемых сервису."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Будет ли активирован компонент сервиса брелоков GNOME PKCS#11."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Будет ли активирован SSH-агент сервиса брелоков GNOME."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Доступ запрещён"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Сервис брелоков GNOME не запущен."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Ошибка взаимодействия с сервисом брелоков GNOME"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Брелок с таким именем уже существует"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Программная ошибка: приложение послало некорректные данные."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Нет подходящих результатов"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Брелок с таким именем не существует."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Брелок уже разблокирован."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Разблокирование брелока входа в систему"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Пароль разблокирования брелока входа в систему"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Ваш брелок входа в систему не был автоматически разблокирован, когда вы "
-"вошли в компьютер."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Создание брелока входа в систему"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Смена пароля брелока входа в систему"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Ваш брелок входа в систему не был автоматически создан, когда вы вошли в "
-"компьютер. Он будет создан прямо сейчас."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Разблокирование личного ключа"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Разблокирование сертификата"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Разблокирование открытого ключа"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Разблокирование"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Введите пароль для разблокирования личного ключа"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Введите пароль для разблокирования сертификата"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Введите пароль для разблокирования открытого ключа"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Введите пароль для разблокирования"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Автоматически разблокировать личный ключ после входа в систему."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Автоматически разблокировать сертификат после входа в систему."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Автоматически разблокировать открытый ключ после входа в систему."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Автоматически разблокировать после входа в систему"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Приложение хочет получить доступ к личному ключу «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Приложение хочет получить доступ к сертификату «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Приложение хочет получить доступ к открытому ключу «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Приложение хочет получить доступ к «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Система хочет импортировать личный ключ «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Система хочет импортировать сертификат «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Система хочет импортировать открытый ключ «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Система хочет импортировать «%s», но он заблокирован"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Пароль разблокирования для %s"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Нераспознанный или неподдерживаемый файл."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Не удалось разобрать неверный или повреждённый файл."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Хранить пароли нешифрованными?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Если ввести пустой пароль, то ваши хранимые пароли не будут надёжно "
-"зашифрованы. Они будут доступны любому, кто имеет доступ к вашим файлам."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Использовать небезопасное хранилище"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Расположение:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Старый пароль:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Пароль:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "По_дтвердите пароль:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Стойкость нового пароля"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Пароли не совпадают."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Пароль не может быть пустым"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Запретить"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Разрешить _однократно"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Разрешить _навсегда"
diff --git a/po/rw.po b/po/rw.po
deleted file mode 100644
index 2ba0e54e..00000000
--- a/po/rw.po
+++ /dev/null
@@ -1,390 +0,0 @@
-# translation of gnome-keyring to Kinyarwanda.
-# Copyright (C) 2005 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Steve Murphy <murf@e-tools.com>, 2005
-# Steve performed initial rough translation from compendium built from translations provided by the following translators:
-# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
-# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
-# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
-# Carole Karema <karemacarole@hotmail.com>, 2005.
-# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
-# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
-# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005..
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.12\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2005-03-28 19:35-0700\n"
-"Last-Translator: Steve Murphy <murf@e-tools.com>\n"
-"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "Porogaramu Kuri Mburabuzi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:411
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Porogaramu Kuri ni Gifunze"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr "Porogaramu Kuri Kitazwi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Porogaramu Kuri Mburabuzi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, fuzzy, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Porogaramu Kuri ni Gifunze"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "Porogaramu Kuri Kitazwi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:452
-#, fuzzy
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "Kitazwi Porogaramu Kuri Mburabuzi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:456
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Kitazwi Porogaramu Kuri ni Gifunze"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-#, fuzzy
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "Kitazwi Porogaramu Kuri Kitazwi ni Gifunze"
-
-#: ../gnome-keyring-ask.c:468
-#, fuzzy
-msgid "Enter password for default keyring to unlock"
-msgstr "Ijambobanga... kugirango Mburabuzi Kuri"
-
-#: ../gnome-keyring-ask.c:470
-#, fuzzy, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Ijambobanga... kugirango Kuri"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-#, fuzzy
-msgid "_Deny"
-msgstr "Anga"
-
-#: ../gnome-keyring-ask.c:517
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Kuri Guhitamo Ijambobanga... Kuri Gukoresha "
-"kugirango"
-
-#: ../gnome-keyring-ask.c:521
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Kuri Guhitamo Ijambobanga... Kuri Gukoresha "
-"kugirango"
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:547
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Kuri Guhitamo Ijambobanga... Kuri Gukoresha "
-"kugirango"
-
-#: ../gnome-keyring-ask.c:551
-#, fuzzy
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:559
-#, fuzzy
-msgid "Choose password for new keyring"
-msgstr "Ijambobanga... kugirango Gishya"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Porogaramu Kuri Kurema a Gishya Mburabuzi Kuri Guhitamo Ijambobanga... Kuri "
-"Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Ijambobanga... kugirango Gishya"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Ijambobanga... kugirango Mburabuzi"
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:689
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Porogaramu Kuri a Ijambobanga... ni Oya Mburabuzi Kurema Kuri Guhitamo "
-"Ijambobanga... Kuri Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Porogaramu Kuri a Ijambobanga... ni Oya Mburabuzi Kurema Kuri Guhitamo "
-"Ijambobanga... Kuri Gukoresha kugirango"
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-#, fuzzy
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Kitazwi Porogaramu Kuri a Ijambobanga... ni Oya Mburabuzi Kurema Kuri "
-"Guhitamo Ijambobanga... Kuri Gukoresha kugirango"
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:707
-#, fuzzy
-msgid "Choose password for default keyring"
-msgstr "Ijambobanga... kugirango Mburabuzi"
-
-#: ../gnome-keyring-ask.c:747
-#, fuzzy
-msgid "Allow application access to keyring?"
-msgstr "Porogaramu Kuri"
-
-#: ../gnome-keyring-ask.c:750
-#, fuzzy, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in"
-
-#: ../gnome-keyring-ask.c:753
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in Mburabuzi"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in Kitazwi"
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, fuzzy, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in"
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in Mburabuzi"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "Porogaramu Kuri Ijambobanga... kugirango in Kitazwi"
-
-#: ../gnome-keyring-ask.c:783
-#, fuzzy, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "Kitazwi Porogaramu Kuri Ijambobanga... kugirango in"
-
-#: ../gnome-keyring-ask.c:786
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr "Kitazwi Porogaramu Kuri Ijambobanga... kugirango in Mburabuzi"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "Kitazwi Porogaramu Kuri Ijambobanga... kugirango in Kitazwi"
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:840
-#, fuzzy
-msgid "You must specify the type of request to run\n"
-msgstr "Ubwoko Bya Kubaza... Kuri"
-
-#: ../gnome-keyring-ask.c:857
-#, fuzzy
-msgid "Unknown request type\n"
-msgstr "Kubaza..."
diff --git a/po/si.po b/po/si.po
deleted file mode 100644
index 8984901c..00000000
--- a/po/si.po
+++ /dev/null
@@ -1,336 +0,0 @@
-# translation of gnome-keyring.si.po to Sinhala
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Danishka Navin <snavin@redhat.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.si\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-07 03:28+0100\n"
-"PO-Revision-Date: 2007-05-29 15:53+0530\n"
-"Last-Translator: Danishka Navin <snavin@redhat.com>\n"
-"Language-Team: Sinhala <en@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../daemon/gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "පැරණි රහස්පදය: (_O)"
-
-#: ../daemon/gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "රහස්පදය: (__P)"
-
-#: ../daemon/gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "නව රහස්පදය ස්ථිර කරන්න: (_C)"
-
-#. Strength bar:
-#: ../daemon/gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">රහස්පදයේ ශක්තිමත් බවේ දර්ශකය:</span>"
-
-#: ../daemon/gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "පරණ රහස්පදය හිස්ව තැබිය නොහැක."
-
-#: ../daemon/gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "රහස්පදය හිස්ව තැබිය නොහැක."
-
-#: ../daemon/gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "රහස්පද ගැල පෙන්නේ නැත."
-
-#: ../daemon/gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "%s' (%s) යෙදුමට keyring ප්‍රකෘතිය භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:411
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "%s' (%s) යෙදුමට '%s' keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr "%s' (%s) යෙදුමට නොදන්නා keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:422 ../daemon/gnome-keyring-ask.c:436
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "%s' යෙදුමට keyring ප්‍රකෘතිය භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:426 ../daemon/gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "%s' යෙදුමට '%s' keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:430 ../daemon/gnome-keyring-ask.c:446
-#, c-format
-msgid "The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr "%s' යෙදුමට නොදන්නා keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:452
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "නොදන්නා යෙදුමකට keyring ප්‍රකෘතිය භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:456
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "නොදන්නා යෙදුමකට '%s' keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:461
-msgid "An unknown application wants access to an unknown keyring, but it is locked"
-msgstr "නොදන්නා යෙදුමකට නොදන්නා keyring භාවිතා කිරීමට අවශ්‍යව ඇත, නමුත් එය අගුලු දමා ඇත"
-
-#: ../daemon/gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "අගුලු විවෘත කිරීම සඳහා keyring ප්‍රකෘතිය සඳහා රහස්පදය ඇතුලත් කරන්න"
-
-#: ../daemon/gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "අගුලු විවෘත කිරීම සඳහා '%s' keyring සඳහා රහස්පදය ඇතුලත් කරන්න"
-
-#: ../daemon/gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Keyring අගුලු අරින්න"
-
-#: ../daemon/gnome-keyring-ask.c:479 ../daemon/gnome-keyring-ask.c:563
-#: ../daemon/gnome-keyring-ask.c:655 ../daemon/gnome-keyring-ask.c:711
-#: ../daemon/gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "අත්හිටු වීම (_D)"
-
-#: ../daemon/gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:527 ../daemon/gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:531 ../daemon/gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "නව Keyring රහස්පදය"
-
-#: ../daemon/gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "නව Keyring සඳහා රහස්පදයක් තෝරා ගන්න"
-
-#: ../daemon/gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:612 ../daemon/gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:616 ../daemon/gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' keyring සඳහා නව රහස්පදයක් තොරන්න."
-
-#: ../daemon/gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "keyring ප්‍රකෘතිය සඳහා නව රහස්පදයක් තොරන්න."
-
-#: ../daemon/gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Keyring රහස්පදය වෙනස් කරන්න"
-
-#: ../daemon/gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:693 ../daemon/gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Keyring ප්‍රකෘතිය නිර්මාණය කරන්න"
-
-#: ../daemon/gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "keyring ප්‍රකෘතිය සඳහා රහස්පදයක් තෝරාගන්න"
-
-#: ../daemon/gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "යෙදුම් සඳහා keyring භාවිතය ඉඩ දෙන්නට?"
-
-#: ../daemon/gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "'%s' (%s) යෙදුමට %s සඳහා %s තුල ඇති රහස්පදය ලබා ගැනීමට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr "keyring ප්‍රකෘතිය තුළ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට '%s' (%s) යෙදුමට අවශ්‍යව ඇත."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr "නොදන්නා keyring තුළ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට '%s' (%s) යෙදුමට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:761 ../daemon/gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "'%s' යෙදුමට %s සඳහා %s තුල ඇති රහස්පදය ලබා ගැනීමට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:764 ../daemon/gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr "keyring ප්‍රකෘතිය තුළ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට '%s' යෙදුමට අවශ්‍යව ඇත."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:767 ../daemon/gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "නොදන්නා keyring තුළ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට '%s' යෙදුමට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr "නොදන්නා යෙදුමකට '%s'සඳහා %s තුල ඇති රහස්පදය ලබා ගැනීමට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr "keyring ප්‍රකෘතියේ තුළ ූ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට නොදන්නා යෙදුමකට අවශ්‍යව ඇත."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../daemon/gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr "නොදන්නා keyring තුළ'%s' සඳහා වූ රහස්පදය ලබා ගැනීමට සනොදන්නා යෙදුමකට අවශ්‍යව ඇත."
-
-#: ../daemon/gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "පිවිසීමට ඉඩදෙන්න"
-
-#: ../daemon/gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "එක් වරක් ඉඩදෙන්න (_O)"
-
-#: ../daemon/gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "සැමවිටම ඉඩදෙන්න (_A)"
-
-#: ../daemon/gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "ක්‍රියාත්මක කිරිමට ඔබ ඉල්ලීම් ආකාරය දැක්විය යුතුම වේ\n"
-
-#: ../daemon/gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "නොදන්නා ඉල්ලීම් ආකාරයක්\n"
-
diff --git a/po/sk.po b/po/sk.po
deleted file mode 100644
index 8cace764..00000000
--- a/po/sk.po
+++ /dev/null
@@ -1,407 +0,0 @@
-# translation of sk.po to Slovak
-# Slovak translations for gnome-keyring package.
-# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# $Id: sk.po,v 1.14 2006/08/22 08:34:29 wbolster Exp $
-#
-# Marcel Telka <marcel@telka.sk>, 2004, 2005.
-# Peter Tuharsky <tuharsky@misbb.sk>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: sk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-15 16:53+0200\n"
-"PO-Revision-Date: 2007-09-09 21:55+0100\n"
-"Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
-"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural= (n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Poedit-Language: Slovak\n"
-"X-Poedit-Country: SLOVAKIA\n"
-
-#: ../common/gkr-location.c:290
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Vymeniteľný disk: %s"
-
-#: ../common/gkr-location.c:292
-msgid "Removable Disk"
-msgstr "Vymeniteľný disk"
-
-#: ../common/gkr-location.c:436
-msgid "Home"
-msgstr "Domov"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gkr-daemon-ops.c:83
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Odomknúť heslo pre zväzok kľúčov %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:310
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Aplikácia '%s' (%s) chce pristupovať k heslu pre '<object prop='name'/>' v "
-"predvolenom zväzku kľúčov."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:314
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Aplikácia '%s' (%s) chce pristupovať k heslu pre '<object prop='name'/>' v %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:320 ../daemon/gkr-daemon-ops.c:330
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Aplikácia '%s' chce pristupovať k heslu pre '<object prop='name'/>' v "
-"predvolenom zväzku kľúčov."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:324 ../daemon/gkr-daemon-ops.c:334
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Aplikácia '%s' chce pristupovať k heslu pre '<object prop='name'/>' v %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:340
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Neznáma aplikácia chce pristupovať k heslu pre '<object prop='name'/>' v "
-"predvolenom zväzku kľúčov."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:343
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Neznáma aplikácia chce pristupovať k heslu pre '<object prop='name'/>' v %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow access"
-msgstr "Povoliť prístup"
-
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow application access to keyring?"
-msgstr "Povoliť aplikácii prístup ku zväzku kľúčov?"
-
-#: ../daemon/gkr-daemon-ops.c:447
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Aplikácia '%s' (%s) chce pristupovať k štandardnému zväzku kľúčov, ale je "
-"zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:451
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Aplikácia '%s' (%s) chce pristupovať k zväzku kľúčov '%s', ale je zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:457 ../daemon/gkr-daemon-ops.c:467
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Aplikácia '%s' chce pristupovať k štandardnému zväzku kľúčov, ale je zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:461 ../daemon/gkr-daemon-ops.c:472
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Aplikácia '%s' chce pristupovať k zväzku kľúčov '%s', ale je zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:478
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Neznáma aplikácia chce pristupovať k štandardnému zväzku kľúčov, ale je "
-"zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:482
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Neznáma aplikácia chce pristupovať k zväzku kľúčov '%s', ale je zamknutý"
-
-#: ../daemon/gkr-daemon-ops.c:489
-msgid "Enter password for default keyring to unlock"
-msgstr "Zadajte heslo pre odomknutie štandardného zväzku kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:491
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Zadajte heslo pre odomknutie zväzku kľúčov '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:495
-msgid "Unlock Keyring"
-msgstr "Odomknúť zväzok kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:507
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Automaticky odomknúť zväzok kľúčov keď sa prihlásim."
-
-#: ../daemon/gkr-daemon-ops.c:543
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' (%s) chce vytvoriť nový zväzok kľúčov nazvaný '%s'. Musíte si "
-"vybrať heslo, ktoré chcete používať pri prístupe k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:547
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' (%s) chce vytvoriť nový štandardný zväzok kľúčov. Musíte si "
-"vybrať heslo, ktoré chcete používať pri prístupe k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:553 ../daemon/gkr-daemon-ops.c:563
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' chce vytvoriť nový zväzok kľúčov nazvaný '%s'. Musíte si "
-"vybrať heslo, ktoré chcete používať pri prístupe k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:557 ../daemon/gkr-daemon-ops.c:567
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' chce vytvoriť nový štandardný zväzok kľúčov. Musíte si vybrať "
-"heslo, ktoré chcete používať pri prístupe k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:573
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Neznáma aplikácia chce vytvoriť nový zväzok kľúčov nazvaný '%s'. Musíte si "
-"vybrať heslo, ktoré chcete používať pri prístupe k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:577
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Neznáma aplikácia chce vytvoriť nový štandardný zväzok kľúčov. Musíte si "
-"vybrať heslo, ktoré chcete používať pri prístupe k nemu."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:583
-msgid "New Keyring Password"
-msgstr "Nové heslo zväzku kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:584
-msgid "Choose password for new keyring"
-msgstr "Vybrať heslo pre nový zväzok kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:631
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' (%s) chce zmeniť heslo pre zväzok kľúčov '%s'. Musíte si "
-"vybrať heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:635
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' (%s) chce zmeniť heslo pre predvolený zväzok kľúčov. Musíte "
-"si vybrať heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:641 ../daemon/gkr-daemon-ops.c:651
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' chce zmeniť heslo pre zväzok kľúčov '%s'. Musíte si vybrať "
-"heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:645 ../daemon/gkr-daemon-ops.c:655
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Aplikácia '%s' chce zmeniť heslo pre predvolený zväzok kľúčov. Musíte si "
-"vybrať heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:661
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Neznáma aplikácia chce zmeniť heslo pre zväzok kľúčov '%s'. Musíte si "
-"vybrať heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:665
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Neznáma aplikácia chce zmeniť heslo pre predvolený zväzok kľúčov. Musíte si "
-"vybrať heslo, ktoré chcete používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:675
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Vybrať nové heslo pre zväzok kľúčov '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:677
-msgid "Choose a new password for the default keyring. "
-msgstr "Vybrať nové heslo pre predvolený zväzok kľúčov"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:681
-msgid "Change Keyring Password"
-msgstr "Zmena hesla k zväzku kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikácia '%s' (%s) chce uložiť heslo, ale predvolený zväzok kľúčov "
-"neexistuje. Ak ho chcete vytvoriť, musíte si vybrať heslo, ktoré chcete "
-"používať pre prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:752 ../daemon/gkr-daemon-ops.c:756
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Aplikácia '%s' chce uložiť heslo, ale predvolený zväzok kľúčov neexistuje. "
-"Ak ho chcete vytvoriť, musíte si vybrať heslo, ktoré chcete používať pre "
-"prístup k nemu."
-
-#: ../daemon/gkr-daemon-ops.c:760
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Neznáma aplikácia chce uložiť heslo, ale predvolený zväzok kľúčov "
-"neexistuje. Ak ho chcete vytvoriť, musíte si vybrať heslo, ktoré chcete "
-"používať pre prístup k nemu."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Create Default Keyring"
-msgstr "Vytvoriť predvolený zväzok kľúčov"
-
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Choose password for default keyring"
-msgstr "Vybrať heslo pre predvolený zväzok kľúčov"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "Access Denied"
-msgstr "Prístup bol odmietnutý"
-
-#: ../library/gnome-keyring-utils.c:113
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Aplikácia gnome-keyring-daemon nebeží."
-
-#: ../library/gnome-keyring-utils.c:115 ../library/gnome-keyring-utils.c:128
-msgid "The keyring has already been unlocked."
-msgstr "Zväzok kľúčov už bol odomknutý."
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Chyba pri komunikácii s gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "A keyring with that name already exists"
-msgstr "Zväzok s takýmto názvom už existuje"
-
-#: ../library/gnome-keyring-utils.c:121
-msgid "Programmer error: The application sent invalid data."
-msgstr "Chyba programu: aplikácia poslala chybné údaje."
-
-#: ../ui/gkr-ask-tool.c:314
-msgid "_Location:"
-msgstr "_Umiestnenie:"
-
-#: ../ui/gkr-ask-tool.c:327
-msgid "_Old password:"
-msgstr "_Staré heslo:"
-
-#: ../ui/gkr-ask-tool.c:347
-msgid "_Password:"
-msgstr "_Heslo:"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "_Confirm password:"
-msgstr "_Potvrdiť nové heslo:"
-
-#: ../ui/gkr-ask-tool.c:388
-msgid "New password strength"
-msgstr "Sila nového hesla"
-
-#: ../ui/gkr-ask-tool.c:444
-msgid "Old password cannot be blank."
-msgstr "Staré heslo nemôže byť prázdne."
-
-#: ../ui/gkr-ask-tool.c:456
-msgid "Password cannot be blank."
-msgstr "Heslo nemôže byť prázdne."
-
-#: ../ui/gkr-ask-tool.c:465
-msgid "Passwords do not match."
-msgstr "Heslá nie sú rovnaké."
-
-#: ../ui/gkr-ask-tool.c:514
-msgid "Deny"
-msgstr "Odmietnuť"
-
-#: ../ui/gkr-ask-tool.c:526
-msgid "Allow _Once"
-msgstr "Povoliť _raz"
-
-#: ../ui/gkr-ask-tool.c:530
-msgid "_Always Allow"
-msgstr "Povoliť _vždy"
diff --git a/po/sl.po b/po/sl.po
deleted file mode 100644
index b62975e8..00000000
--- a/po/sl.po
+++ /dev/null
@@ -1,483 +0,0 @@
-# This file is distributed under the same license as the program package.
-#
-# Matic Zgur <mr.zgur@gmail.com>, 2006.
-# Matej Urbančič <mateju@svn.gnome.org>, 2005 - 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-10-17 04:14+0100\n"
-"PO-Revision-Date: 2008-02-25 18:52+0100\n"
-"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
-"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\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-Language: Slovenian\n"
-"X-Poedit-Country: SLOVENIA\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Odstranljiva naprava: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Odstranljiva naprava"
-
-#: ../common/gkr-location.c:446
-#: ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Domov"
-
-#: ../common/gkr-location.c:980
-#: ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514
-#: ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disk ali pogon na katerem je ta datoteka, ni na voljo"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Program '%s' (%s) želi dostop do gesla za'<object prop='name'/>'' v privzeti zbirki ključev."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Program '%s' (%s) želi dostop do gesla za '<object prop='name'/>' v %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232
-#: ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid "The application '%s' wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Program '%s' želi dostop do gesla za '<object prop='name'/>' v privzeti zbirki ključev."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236
-#: ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid "The application '%s' wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Program '%s' želi dostop do gesla za '<object prop='name'/>' v %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid "An unknown application wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Neznan program želi dostop do gesla za '<object prop='name'/>' v privzeti zbirki ključev."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid "An unknown application wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Neznan program želi dostop do gesla za '<object prop='name'/>' v %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Dovoli dostop"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Naj dovolim programom dostop do zbirke ključev?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Izberite geslo za zbirko ključev %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid "The application '%s' (%s) wants access to the default keyring, but it is locked"
-msgstr "Program '%s' (%s) želi dostop do privzete zbirke ključev, vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Program '%s' (%s) želi dostop do zbirke ključev '%s', vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:378
-#: ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Program '%s' želi dostop do privzete zbirke ključev, vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:382
-#: ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Program '%s' želi dostop do zbirke ključev '%s', vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "Neznani program želi dostop do privzete zbirke ključev, vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Neznan program želi dostop do zbirke ključev '%s',vendar je zaklenjena"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Vnesite geslo za dostop do privzete zbirke ključev"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Vnesite geslo za dostop do '%s' zbirke ključev"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Odklenite zbirko ključev"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Samodejno odkleni zbirko ključev ob prijavi."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid "The application '%s' (%s) wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Program '%s' (%s) želi ustvariti novo zbirko ključev z imenom '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid "The application '%s' (%s) wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' (%s) želi ustvariti novo privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:474
-#: ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid "The application '%s' wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Program '%s' želi ustvariti novo zbirko ključev z imenom '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:478
-#: ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid "The application '%s' wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' želi ustvariti novo privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid "An unknown application wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Program želi ustvariti novo zbirko ključev z imenom '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid "An unknown application wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Neznan program želi ustvariti novo privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Novo geslo za zbirko ključev"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Izberite geslo za novo zbirko ključev"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' (%s) želi spremeniti geslo za zbirko ključev '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' (%s) želi spremeniti geslo za privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:562
-#: ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid "The application '%s' wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' želi spremeniti geslo za zbirko ključev '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:566
-#: ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid "The application '%s' wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Program '%s' želi spremeniti geslo za privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid "An unknown application wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Neznan program želi spremeniti geslo za zbirko ključev '%s'. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid "An unknown application wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Neznan program želi spremeniti geslo za privzeto zbirko ključev. Izbrati morate geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Izberite novo geslo za zbirko ključev '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Izberite novo geslo za privzeto zbirko ključev."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Spremeni geslo zbirke ključev"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid "The application '%s' (%s) wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Program '%s' (%s) želi shraniti geslo, vendar ni privzete zbirke ključev. Da jo ustvarite, morate izbrati geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:676
-#: ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid "The application '%s' wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Program '%s' želi shraniti geslo, vendar ni privzete zbirke ključev. Da jo ustvarite, morate izbrati geslo za to zbirko."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid "An unknown application wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Neznan program želi shraniti geslo, vendar ni privzete zbirke ključev. Da jo ustvarite, morate izbrati geslo za to zbirko."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Ustvari privzeto zbirko ključev"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Izberite geslo za privzeto zbirko ključev"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid "This option enables the PKCS#11 component in the gnome-keyring daemon. It only takes effect as gnome-keyring-daemon starts, (ie: when the user logs in). This setting may be overridden when certain command line arguments are passed to the daemon."
-msgstr "Možnost omogoča zagon PKCS#11 enote v gnome-keyring demonu. Uporablja se le ob zagonu demona gnome-keyring-daemon, (primer: ko se uporabnik prijavi). Možnost lahko s posebnimi argumenti med zagonom demona prekličete."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid "This option enables the SSH agent in the gnome-keyring daemon. It only takes effect as gnome-keyring-daemon starts, (ie: when the user logs in). This setting may be overridden when certain command line arguments are passed to the daemon."
-msgstr "Možnost omogoča podporo SSH agenta v gnome-keyring demonu. Uporablja se le ob zagonu demona gnome-keyring-daemon, (primer: ko se uporabnik prijavi). Možnost lahko s posebnimi argumenti med zagonom demona prekličete."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Ali je gnome-keyring PKCS#11 enota omogočena."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Ali je gnome-keyring SSH agent omogočen."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Dostop zavrnjen"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Demn zbirke ključev ne teče."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Napaka med povezovanjem z demonom zbirke ključev"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Zbirka ključev s tem imenom že obstaja"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programska napaka: Program je poslal neveljavne podatke."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Ni zadetkov iskanja"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Zbirka ključev s tem imenom ne obstaja."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Zbirka ključev je že odklenjena."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Odklenite prijavno zbirko ključev"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Vnesite prijavno geslo za odklepanje zbirke ključev"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid "Your login keyring was not automatically unlocked when you logged into this computer."
-msgstr "Prijavna zbirka ključev ni bila samodejno odklenjena ob prijavi na ta računalnik."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Ustvari zbirko ključev prijave"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Vnesite geslo za prijavo"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid "Your login keyring was not automatically created when you logged into this computer. It will now be created."
-msgstr "Prijavna zbirka ključev ni bila samodejno ustvarjena ob prijavi na ta računalnik. Sedaj bo ustvarjena."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Odkleni osebni ključ"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Odkleni certifikat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Odkleni javni ključ"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Odkleni"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Vnesite geslo za odklepanje osebnega ključa"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Vnesite geslo za odklepanje certifikata"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Vnesite geslo za odklepanje javnega ključa"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Vnesite geslo za odklepanje"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Samodejno odkleni osebni ključ ob prijavi."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Samodejno odkleni certifikat ob prijavi."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Samodejno odkleni javni ključ ob prijavi."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Samodejno odkleni prijavi."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Program želi dostop do osebnega ključa '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Program želi dostop do certifikata '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Program želi dostop do javnega ključa '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Program želi dostop do '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Sistem želi uvoziti osebni ključ '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Sistem želi uvoziti certifikat '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Sistem želi uvoziti javni ključ '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Sistem želi uvoziti '%s', vendar je ta zaklenjen"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Geslo za odklepanje '%s'"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Neznana ali nepodprta datoteka."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Ni mogoče razčleniti neveljavne ali pokvarjene datoteke."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Shranim gesla nešifrirana?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid "By choosing to use a blank password, your stored passwords will not be safely encrypted. They will be accessible by anyone with access to your files."
-msgstr "Z uporabo praznega polja gesla, onemogočite šifriranje ostalih gesel. Dostop to takih gesel ima vsak, ki ima tudi dostop do računalnika."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Uporabi nevarno shranjevanje"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Položaj:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Staro geslo:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Geslo:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Potrdi geslo:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Varnost novega gesla"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Gesli se ne ujemata."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Geslo ne sme biti prazno."
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Zavrni"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Dovoli enkrat"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Vedno dovoli"
-
diff --git a/po/sq.po b/po/sq.po
deleted file mode 100644
index 3bbd4e16..00000000
--- a/po/sq.po
+++ /dev/null
@@ -1,408 +0,0 @@
-# Albanian translation of gnome-keyring.
-# Copyright (C) 2004, 2007 THE gnome-keyring'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome-keyring package.
-# Elian Myftiu <elian@alblinux.net>, 2004-2007
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-03 19:34+0100\n"
-"PO-Revision-Date: 2007-02-28 16:30+0100\n"
-"Last-Translator: Elian Myftiu <elian.myftiu@gmail.com>\n"
-"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr "Fjalëkalimi i _vjetër:"
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr "_Fjalëkalimi:"
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr "_Konfirmo fjalëkalimin e ri:"
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr "<span weight=\"bold\">Matës fuqie fjalëkalimi:</span>"
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr "Fjalëkalimi i vjetër nuk mund të jetë bosh."
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr "Fjalëkalimi nuk mund të jetë bosh."
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr "Fjalëkalimet nuk përkojnë."
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Programi '%s'·(%s) po kërkon të punojë me organizuesin e parazgjedhur, por "
-"ky është i kyçur"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programi '%s' (%s) po kërkon të punojë me organizuesin '%s', por ky është i "
-"kyçur"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Programi '%s' (%s) kërkon të punojë me një organizues të panjohur, por ky "
-"është i kyçur"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Programi '%s' kërkon të punojë me organizuesin e parazgjedhur, por ky është "
-"i kyçur"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Programi '%s' kërkon të punojë me organizuesin '%s', por ky është i kyçur"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Programi '%s' kërkon të punojë me një organizues të panjohur, por ky është "
-"i kyçur"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Një program i panjohur kërkon të punojë me organizuesin e parazgjedhur, por "
-"ky është i kyçur"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Një program i panjohur kërkon të punojë me organizuesin '%s', por ky është i "
-"kyçur"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Një program i panjohur kërkon të punojë me një organizues të panjohur, por "
-"ky është i kyçur"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Fut fjalëkalimin për zhbllokimin e organizuesit të parazgjedhur"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Fut fjalëkalimin për zhbllokimin e organizuesit '%s'"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Zhblloko Organizuesin"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Moho"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programi '%s' (%s) po kërkon të krijojë një organizues të ri të quajtur '%"
-"s'. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për të."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programi '%s' (%s) po kërkon të krijojë një organizues të ri të "
-"parazgjedhur. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për "
-"të."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programi '%s' po kërkon të krijojë një organizues të ri të quajtur '%s'. "
-"Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për të."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Programi '%s' po kërkon të krijojë një organizues të ri të parazgjedhur. "
-"Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për të."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Një program i panjohur po kërkon të krijojë një organizues të ri të quajtur "
-"'%s'. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për të."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Një program i panjohur po kërkon të krijojë një organizues të ri të "
-"parazgjedhur. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për "
-"të."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "Fjalëkalim Organizuesi të Ri"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Zgjidh fjalëkalim organizuesi të ri"
-
-#: ../gnome-keyring-ask.c:602
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programi '%s' (%s) kërkon të ndryshojë fjalëkalimin për organizuesin '%s'. "
-"Duhet të zgjedhësh fjalëkalimin që dëshiron ta përdorësh për të."
-
-#: ../gnome-keyring-ask.c:606
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Programi '%s' (%s) kërkon të ndryshojë fjalëkalimin për organizuesin e "
-"parazgjedhur. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për "
-"të."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Programi '%s' kërkon të ndryshojë fjalëkalimin për organizuesin '%s'. Duhet "
-"të zgjedhësh fjalëkalimin që dëshiron ta përdorësh për të."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Programi '%s' kërkon të ndryshojë fjalëkalimin për organizuesin e "
-"parazgjedhur. Duhet të zgjedhësh fjalëkalimin që dëshiron të përdorësh për "
-"të."
-
-#: ../gnome-keyring-ask.c:632
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Një program i panjohur po kërkon të ndryshojë fjalëkalimin për organizuesin "
-"'%s'. Duhet të zgjedhësh fjalëkalimin që dëshiron ta përdorësh për të."
-
-#: ../gnome-keyring-ask.c:636
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Një program i panjohur po kërkon të ndryshojë fjalëkalimin për organizuesin "
-"e parazgjedhur. Duhet të zgjedhësh fjalëkalimin që dëshiron ta përdorësh për "
-"të."
-
-#: ../gnome-keyring-ask.c:643
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Zgjidh një fjalëkalim të ri për organizuesin '%s'. "
-
-#: ../gnome-keyring-ask.c:645
-msgid "Choose a new password for the default keyring. "
-msgstr "Zgjidh një fjalëkalim të ri për organizuesin e parazgjedhur. "
-
-#: ../gnome-keyring-ask.c:650
-msgid "Change Keyring Password"
-msgstr "Ndrysho Fjalëkalimin e Organizuesit"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programi '%s' (%s) po kërkon të ruajë një fjalëkalim, por nuk ekziston një "
-"organizues i parazgjedhur. Për të krijuar një të tillë, duhet të zgjedhësh "
-"fjalëkalimin për përdorim."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Programi '%s' po kërkon të ruajë një fjalëkalim, por nuk ekziston një "
-"organizues i parazgjedhur. Për të krijuar një të tillë, duhet të zgjedhësh "
-"fjalëkalimin për përdorim."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Një program i panjohur po kërkon të ruajë një fjalëkalim, por nuk ekziston "
-"një organizues i parazgjedhur. Për të krijuar një të tillë, duhet të "
-"zgjedhësh fjalëkalimin për përdorim."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Krijo Organizuesin e Prezgjedhur"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Zgjidh fjalëkalimin për organizuesin e parazgjedhur"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "A t'i lejoj programit përdorimin e organizuesit?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr "Programi '%s' (%s) po kërkon të përdorë fjalëkalimin për '%s' në %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Programi '%s' (%s) po kërkon të përdorë fjalëkalimin për '%s' në "
-"organizuesin e parazgjedhur."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Programi '%s' (%s) po kërkon të përdorë fjalëkalimin për '%s' në një "
-"organizues të panjohur."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Programi '%s' po kërkon të përdorë fjalëkalimin për '%s' në %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Programi '%s' po kërkon të përdorë fjalëkalimin për '%s' në organizuesin e "
-"parazgjedhur."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Programi '%s' po kërkon të përdorë fjalëkalimin për '%s' në një organizues "
-"të panjohur."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-"Një program i panjohur po kërkon të përdorë fjalëkalimin për '%s' në %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Një programi i panjohur po kërkon të përdorë fjalëkalimin për '%s' në "
-"organizuesin e parazgjedhur."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Një program i panjohur po kërkon të përdorë fjalëkalimin për '%s' në një "
-"organizues të panjohur."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Lejo përdorimin"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Lejo _Një Herë"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Lejo _Përherë"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Duhet të përcaktosh një lloj kërkese për ekzekutim\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Lloj i panjohur kërkese\n"
diff --git a/po/sr.po b/po/sr.po
deleted file mode 100644
index f6616aa3..00000000
--- a/po/sr.po
+++ /dev/null
@@ -1,471 +0,0 @@
-# Serbian translation of gnome-keyring
-# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004, 2005, 2006.
-#
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Maintainer: Данило Шеган <danilo@gnome.org>
-# Reviewed on 2005-08-08 by: Игор Несторовић <igor@prevod.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-12 01:12+0200\n"
-"PO-Revision-Date: 2007-09-12 01:19+0200\n"
-"Last-Translator: Данило Шеган <danilo@gnome.org>\n"
-"Language-Team: Serbian (sr) <gnom@prevod.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:290
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Уклоњиви диск: %s"
-
-#: ../common/gkr-location.c:292
-msgid "Removable Disk"
-msgstr "Уклоњиви диск"
-
-#: ../common/gkr-location.c:436
-msgid "Home"
-msgstr "Лично"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gkr-daemon-ops.c:83
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Откључај лозинку за привезак %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:310
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "Програм „%s“ (%s) жели да користи лозинку за „<object prop='name'/>“ у подразумеваном привеску."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:314
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "Програм „%s“ (%s) жели да користи лозинку за „<object prop='name'/>“ у %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:320 ../daemon/gkr-daemon-ops.c:330
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "Програм „%s“ жели да користи лозинку за „<object prop='name'/>“ у подразумеваном привеску."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:324 ../daemon/gkr-daemon-ops.c:334
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Програм „%s“ жели да користи лозинку за „<object prop='name'/>“ у %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:340
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "Непознат програм жели да користи лозинку за „<object prop='name'/>“ у подразумеваном привеску."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:343
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Непознат програм жели да користи лозинку за „<object prop='name'/>“ у %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow access"
-msgstr "Дозволи приступ"
-
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow application access to keyring?"
-msgstr "Дозволи програму приступ привеску?"
-
-#: ../daemon/gkr-daemon-ops.c:447
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Програм „%s“ (%s) жели да приступи подразумеваном привеску, али је он "
-"закључан"
-
-#: ../daemon/gkr-daemon-ops.c:451
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Програм „%s“ (%s) жели да приступи привеску „%s“, али је он закључан"
-
-#: ../daemon/gkr-daemon-ops.c:457 ../daemon/gkr-daemon-ops.c:467
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Програм „%s“ жели да приступи подразумеваном привеску, али је он закључан"
-
-#: ../daemon/gkr-daemon-ops.c:461 ../daemon/gkr-daemon-ops.c:472
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Програм „%s“ жели да приступи привеску „%s“, али је он закључан"
-
-#: ../daemon/gkr-daemon-ops.c:478
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Непознати програм жели да приступи подразумеваном привеску, али је он "
-"закључан"
-
-#: ../daemon/gkr-daemon-ops.c:482
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Непознати програм жели да приступи привеску „%s“, али је он закључан"
-
-#: ../daemon/gkr-daemon-ops.c:489
-msgid "Enter password for default keyring to unlock"
-msgstr "Унесите лозинку за подразумевани привезак ради откључавања"
-
-#: ../daemon/gkr-daemon-ops.c:491
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Унесите лозинку за привезак „%s“ ради откључавања"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:495
-msgid "Unlock Keyring"
-msgstr "Откључај привезак"
-
-#: ../daemon/gkr-daemon-ops.c:507
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Сам откључај овај привезак када се пријавим."
-
-#: ../daemon/gkr-daemon-ops.c:543
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програм „%s“ (%s) жели да направи нови привезак имена „%s“. Морате изабрати "
-"лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:547
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм „%s“ (%s) жели да направи нови подразумевани привезак. Морате "
-"изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:553 ../daemon/gkr-daemon-ops.c:563
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм „%s“ жели да направи нови привезак имена „%s“. Морате изабрати "
-"лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:557 ../daemon/gkr-daemon-ops.c:567
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програм „%s“ жели да направи нови подразумевани привезак. Морате изабрати "
-"лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:573
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Непознати програм жели да направи нови привезак имена „%s“. Морате изабрати "
-"лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:577
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Непознати програм жели да направи нови подразумевани привезак. Морате "
-"изабрати лозинку коју желите да користите за њега."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:583
-msgid "New Keyring Password"
-msgstr "Нова лозинка за привезак"
-
-#: ../daemon/gkr-daemon-ops.c:584
-msgid "Choose password for new keyring"
-msgstr "Унесите лозинку за нови привезак"
-
-#: ../daemon/gkr-daemon-ops.c:631
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Програм „%s“ (%s) жели да промени лозинку за привезак „%s“. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:635
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr "Програм „%s“ (%s) жели да промени лозинку за подразумевани привезак. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:641 ../daemon/gkr-daemon-ops.c:651
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "Програм „%s“ жели да промени лозинку за привезак „%s“. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:645 ../daemon/gkr-daemon-ops.c:655
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Програм „%s“ жели да промени лозинку за подразумевани привезак. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:661
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Непознат програм жели да промени лозинку за привезак „%s“. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:665
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Непознат програм жели да промени лозинку за подразумевани привезак. Морате изабрати лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:675
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Унесите лозинку за привезак „%s“."
-
-#: ../daemon/gkr-daemon-ops.c:677
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Унесите лозинку за подразумевани привезак."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:681
-msgid "Change Keyring Password"
-msgstr "Промени лозинку привеска"
-
-#: ../daemon/gkr-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програм „%s“ (%s) жели да ускладишти лозинку, али нема подразумеваног "
-"привеска. Да бисте направили један, изаберите лозинку коју желите да "
-"користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:752 ../daemon/gkr-daemon-ops.c:756
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програм „%s“ жели да ускладишти лозинку, али нема подразумеваног привеска. "
-"Да бисте направили један, изаберите лозинку коју желите да користите за њега."
-
-#: ../daemon/gkr-daemon-ops.c:760
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Непознати програм жели да ускладишти лозинку, али нема подразумеваног "
-"привеска. Да бисте направили један, изаберите лозинку коју желите да "
-"користите за њега."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Create Default Keyring"
-msgstr "Направи подразумевани привезак за кључеве"
-
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Choose password for default keyring"
-msgstr "Унесите лозинку за подразумевани привезак за кључеве"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "Access Denied"
-msgstr "Одбијен приступ"
-
-#: ../library/gnome-keyring-utils.c:113
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Програм gnome-keyring-daemon није покренут."
-
-#: ../library/gnome-keyring-utils.c:115 ../library/gnome-keyring-utils.c:128
-msgid "The keyring has already been unlocked."
-msgstr "Привезак је већ откључан."
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Грешка при комуникацији са gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "A keyring with that name already exists"
-msgstr "Привезак тог имена већ постоји"
-
-#: ../library/gnome-keyring-utils.c:121
-msgid "Programmer error: The application sent invalid data."
-msgstr "Грешка програмера: програм је послао неисправне податке."
-
-#: ../ui/gkr-ask-tool.c:314
-msgid "_Location:"
-msgstr "_Место:"
-
-#: ../ui/gkr-ask-tool.c:327
-msgid "_Old password:"
-msgstr "С_тара лозинка:"
-
-#: ../ui/gkr-ask-tool.c:347
-msgid "_Password:"
-msgstr "_Лозинка:"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "_Confirm password:"
-msgstr "_Потврди лозинку:"
-
-#: ../ui/gkr-ask-tool.c:388
-msgid "New password strength"
-msgstr "Тежина нове лозинке"
-
-#: ../ui/gkr-ask-tool.c:444
-msgid "Old password cannot be blank."
-msgstr "Старе лозинке не могу бити празне."
-
-#: ../ui/gkr-ask-tool.c:456
-msgid "Password cannot be blank."
-msgstr "Лозинка не може бити остављена празна."
-
-#: ../ui/gkr-ask-tool.c:465
-msgid "Passwords do not match."
-msgstr "Лозинке се не подударају."
-
-#: ../ui/gkr-ask-tool.c:514
-msgid "Deny"
-msgstr "Одбиј"
-
-#: ../ui/gkr-ask-tool.c:526
-msgid "Allow _Once"
-msgstr "Дозволи _једном"
-
-#: ../ui/gkr-ask-tool.c:530
-msgid "_Always Allow"
-msgstr "_Увек дозволи"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Програм „%s“ (%s) жели да приступи непознатом привеску, али је он закључан"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Програм „%s“ жели да приступи непознатом привеску, али је он закључан"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Непознати програм жели да приступи непознатом привеску, али је он закључан"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Програм „%s“ (%s) жели да користи лозинку за „%s“ у непознатом привеску."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr "Програм „%s“ жели да користи лозинку за „%s“ у непознатом привеску."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Непознати програм жели да користи лозинку за „%s“ у непознатом привеску."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Морате навести врсту захтева за покретање\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Непозната врста захтева\n"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to create a new keyring with an unknown "
-#~ "name. You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Програм „%s“ (%s) жели да направи нови прстен непознатог имена. Морате "
-#~ "изабрати лозинку коју желите да користите за њега."
-
-#~ msgid ""
-#~ "The application '%s' wants to create a new keyring with an unknown name. "
-#~ "You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Програм „%s“ жели да направи нови прстен непознатог имена. Морате "
-#~ "изабрати лозинку коју желите да користите за њега."
-
-#~ msgid ""
-#~ "An unknown application wants to create a new keyring with an unknown "
-#~ "name. You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Непознати програм жели да направи нови прстен непознатог имена. Морате "
-#~ "изабрати лозинку коју желите да користите за њега."
-
-#~ msgid "The application '%s' (%s)"
-#~ msgstr "Програм „%s“ (%s)"
-
-#~ msgid "The application '%s'"
-#~ msgstr "Програм „%s“"
-
-#~ msgid "The application %s"
-#~ msgstr "Програм %s"
-
-#~ msgid "the default keyring"
-#~ msgstr "подразумевани прстен"
-
-#~ msgid "the keyring '%s'"
-#~ msgstr "прстен „%s“"
-
-#~ msgid "an unknown keyring"
-#~ msgstr "непознат прстен"
-
-#~ msgid ""
-#~ "There is no default keyring, and one is needed. Please enter the password "
-#~ "for the new default keyring."
-#~ msgstr ""
-#~ "Нема подразумеваног прстена, а један је неопходан. Унесите лозинку за "
-#~ "нови подразумевани прстен."
-
-#~ msgid "Enter password to unlock keyring %s"
-#~ msgstr "Унесите лозинку за откључавање прстена %s"
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
deleted file mode 100644
index ada168ba..00000000
--- a/po/sr@Latn.po
+++ /dev/null
@@ -1,471 +0,0 @@
-# Serbian translation of gnome-keyring
-# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004, 2005, 2006.
-#
-# This file is distributed under the same license as the gnome-keyring package.
-#
-# Maintainer: Danilo Šegan <danilo@gnome.org>
-# Reviewed on 2005-08-08 by: Igor Nestorović <igor@prevod.org>
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-12 01:12+0200\n"
-"PO-Revision-Date: 2007-09-12 01:19+0200\n"
-"Last-Translator: Danilo Šegan <danilo@gnome.org>\n"
-"Language-Team: Serbian (sr) <gnom@prevod.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:290
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Uklonjivi disk: %s"
-
-#: ../common/gkr-location.c:292
-msgid "Removable Disk"
-msgstr "Uklonjivi disk"
-
-#: ../common/gkr-location.c:436
-msgid "Home"
-msgstr "Lično"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gkr-daemon-ops.c:83
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Otključaj lozinku za privezak %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:310
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "Program „%s“ (%s) želi da koristi lozinku za „<object prop='name'/>“ u podrazumevanom privesku."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:314
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "Program „%s“ (%s) želi da koristi lozinku za „<object prop='name'/>“ u %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:320 ../daemon/gkr-daemon-ops.c:330
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "Program „%s“ želi da koristi lozinku za „<object prop='name'/>“ u podrazumevanom privesku."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:324 ../daemon/gkr-daemon-ops.c:334
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Program „%s“ želi da koristi lozinku za „<object prop='name'/>“ u %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:340
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "Nepoznat program želi da koristi lozinku za „<object prop='name'/>“ u podrazumevanom privesku."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:343
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "Nepoznat program želi da koristi lozinku za „<object prop='name'/>“ u %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow access"
-msgstr "Dozvoli pristup"
-
-#: ../daemon/gkr-daemon-ops.c:349
-msgid "Allow application access to keyring?"
-msgstr "Dozvoli programu pristup privesku?"
-
-#: ../daemon/gkr-daemon-ops.c:447
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Program „%s“ (%s) želi da pristupi podrazumevanom privesku, ali je on "
-"zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:451
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Program „%s“ (%s) želi da pristupi privesku „%s“, ali je on zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:457 ../daemon/gkr-daemon-ops.c:467
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Program „%s“ želi da pristupi podrazumevanom privesku, ali je on zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:461 ../daemon/gkr-daemon-ops.c:472
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Program „%s“ želi da pristupi privesku „%s“, ali je on zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:478
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Nepoznati program želi da pristupi podrazumevanom privesku, ali je on "
-"zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:482
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Nepoznati program želi da pristupi privesku „%s“, ali je on zaključan"
-
-#: ../daemon/gkr-daemon-ops.c:489
-msgid "Enter password for default keyring to unlock"
-msgstr "Unesite lozinku za podrazumevani privezak radi otključavanja"
-
-#: ../daemon/gkr-daemon-ops.c:491
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Unesite lozinku za privezak „%s“ radi otključavanja"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:495
-msgid "Unlock Keyring"
-msgstr "Otključaj privezak"
-
-#: ../daemon/gkr-daemon-ops.c:507
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Sam otključaj ovaj privezak kada se prijavim."
-
-#: ../daemon/gkr-daemon-ops.c:543
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Program „%s“ (%s) želi da napravi novi privezak imena „%s“. Morate izabrati "
-"lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:547
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program „%s“ (%s) želi da napravi novi podrazumevani privezak. Morate "
-"izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:553 ../daemon/gkr-daemon-ops.c:563
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program „%s“ želi da napravi novi privezak imena „%s“. Morate izabrati "
-"lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:557 ../daemon/gkr-daemon-ops.c:567
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Program „%s“ želi da napravi novi podrazumevani privezak. Morate izabrati "
-"lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:573
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Nepoznati program želi da napravi novi privezak imena „%s“. Morate izabrati "
-"lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:577
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Nepoznati program želi da napravi novi podrazumevani privezak. Morate "
-"izabrati lozinku koju želite da koristite za njega."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:583
-msgid "New Keyring Password"
-msgstr "Nova lozinka za privezak"
-
-#: ../daemon/gkr-daemon-ops.c:584
-msgid "Choose password for new keyring"
-msgstr "Unesite lozinku za novi privezak"
-
-#: ../daemon/gkr-daemon-ops.c:631
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Program „%s“ (%s) želi da promeni lozinku za privezak „%s“. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:635
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr "Program „%s“ (%s) želi da promeni lozinku za podrazumevani privezak. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:641 ../daemon/gkr-daemon-ops.c:651
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "Program „%s“ želi da promeni lozinku za privezak „%s“. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:645 ../daemon/gkr-daemon-ops.c:655
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Program „%s“ želi da promeni lozinku za podrazumevani privezak. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:661
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Nepoznat program želi da promeni lozinku za privezak „%s“. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:665
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "Nepoznat program želi da promeni lozinku za podrazumevani privezak. Morate izabrati lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:675
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Unesite lozinku za privezak „%s“."
-
-#: ../daemon/gkr-daemon-ops.c:677
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Unesite lozinku za podrazumevani privezak."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:681
-msgid "Change Keyring Password"
-msgstr "Promeni lozinku priveska"
-
-#: ../daemon/gkr-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Program „%s“ (%s) želi da uskladišti lozinku, ali nema podrazumevanog "
-"priveska. Da biste napravili jedan, izaberite lozinku koju želite da "
-"koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:752 ../daemon/gkr-daemon-ops.c:756
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Program „%s“ želi da uskladišti lozinku, ali nema podrazumevanog priveska. "
-"Da biste napravili jedan, izaberite lozinku koju želite da koristite za njega."
-
-#: ../daemon/gkr-daemon-ops.c:760
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Nepoznati program želi da uskladišti lozinku, ali nema podrazumevanog "
-"priveska. Da biste napravili jedan, izaberite lozinku koju želite da "
-"koristite za njega."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Create Default Keyring"
-msgstr "Napravi podrazumevani privezak za ključeve"
-
-#: ../daemon/gkr-daemon-ops.c:765
-msgid "Choose password for default keyring"
-msgstr "Unesite lozinku za podrazumevani privezak za ključeve"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "Access Denied"
-msgstr "Odbijen pristup"
-
-#: ../library/gnome-keyring-utils.c:113
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Program gnome-keyring-daemon nije pokrenut."
-
-#: ../library/gnome-keyring-utils.c:115 ../library/gnome-keyring-utils.c:128
-msgid "The keyring has already been unlocked."
-msgstr "Privezak je već otključan."
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Greška pri komunikaciji sa gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "A keyring with that name already exists"
-msgstr "Privezak tog imena već postoji"
-
-#: ../library/gnome-keyring-utils.c:121
-msgid "Programmer error: The application sent invalid data."
-msgstr "Greška programera: program je poslao neispravne podatke."
-
-#: ../ui/gkr-ask-tool.c:314
-msgid "_Location:"
-msgstr "_Mesto:"
-
-#: ../ui/gkr-ask-tool.c:327
-msgid "_Old password:"
-msgstr "S_tara lozinka:"
-
-#: ../ui/gkr-ask-tool.c:347
-msgid "_Password:"
-msgstr "_Lozinka:"
-
-#: ../ui/gkr-ask-tool.c:369
-msgid "_Confirm password:"
-msgstr "_Potvrdi lozinku:"
-
-#: ../ui/gkr-ask-tool.c:388
-msgid "New password strength"
-msgstr "Težina nove lozinke"
-
-#: ../ui/gkr-ask-tool.c:444
-msgid "Old password cannot be blank."
-msgstr "Stare lozinke ne mogu biti prazne."
-
-#: ../ui/gkr-ask-tool.c:456
-msgid "Password cannot be blank."
-msgstr "Lozinka ne može biti ostavljena prazna."
-
-#: ../ui/gkr-ask-tool.c:465
-msgid "Passwords do not match."
-msgstr "Lozinke se ne podudaraju."
-
-#: ../ui/gkr-ask-tool.c:514
-msgid "Deny"
-msgstr "Odbij"
-
-#: ../ui/gkr-ask-tool.c:526
-msgid "Allow _Once"
-msgstr "Dozvoli _jednom"
-
-#: ../ui/gkr-ask-tool.c:530
-msgid "_Always Allow"
-msgstr "_Uvek dozvoli"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Program „%s“ (%s) želi da pristupi nepoznatom privesku, ali je on zaključan"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Program „%s“ želi da pristupi nepoznatom privesku, ali je on zaključan"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Nepoznati program želi da pristupi nepoznatom privesku, ali je on zaključan"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Program „%s“ (%s) želi da koristi lozinku za „%s“ u nepoznatom privesku."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr "Program „%s“ želi da koristi lozinku za „%s“ u nepoznatom privesku."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Nepoznati program želi da koristi lozinku za „%s“ u nepoznatom privesku."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Morate navesti vrstu zahteva za pokretanje\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Nepoznata vrsta zahteva\n"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to create a new keyring with an unknown "
-#~ "name. You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Program „%s“ (%s) želi da napravi novi prsten nepoznatog imena. Morate "
-#~ "izabrati lozinku koju želite da koristite za njega."
-
-#~ msgid ""
-#~ "The application '%s' wants to create a new keyring with an unknown name. "
-#~ "You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Program „%s“ želi da napravi novi prsten nepoznatog imena. Morate "
-#~ "izabrati lozinku koju želite da koristite za njega."
-
-#~ msgid ""
-#~ "An unknown application wants to create a new keyring with an unknown "
-#~ "name. You have to choose the password you want to use for it."
-#~ msgstr ""
-#~ "Nepoznati program želi da napravi novi prsten nepoznatog imena. Morate "
-#~ "izabrati lozinku koju želite da koristite za njega."
-
-#~ msgid "The application '%s' (%s)"
-#~ msgstr "Program „%s“ (%s)"
-
-#~ msgid "The application '%s'"
-#~ msgstr "Program „%s“"
-
-#~ msgid "The application %s"
-#~ msgstr "Program %s"
-
-#~ msgid "the default keyring"
-#~ msgstr "podrazumevani prsten"
-
-#~ msgid "the keyring '%s'"
-#~ msgstr "prsten „%s“"
-
-#~ msgid "an unknown keyring"
-#~ msgstr "nepoznat prsten"
-
-#~ msgid ""
-#~ "There is no default keyring, and one is needed. Please enter the password "
-#~ "for the new default keyring."
-#~ msgstr ""
-#~ "Nema podrazumevanog prstena, a jedan je neophodan. Unesite lozinku za "
-#~ "novi podrazumevani prsten."
-
-#~ msgid "Enter password to unlock keyring %s"
-#~ msgstr "Unesite lozinku za otključavanje prstena %s"
diff --git a/po/sv.po b/po/sv.po
deleted file mode 100644
index 2817823b..00000000
--- a/po/sv.po
+++ /dev/null
@@ -1,589 +0,0 @@
-# Swedish messages for gnome-keyring.
-# Copyright (C) 2003-2008 Free Software Foundation, Inc.
-# Daniel Nylander <po@danielnylander.se>, 2006, 2007, 2008.
-# Christian Rose <menthos@menthos.com>, 2003, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-15 16:15+0100\n"
-"PO-Revision-Date: 2008-02-15 16:18+0100\n"
-"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
-"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Flyttbar disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Flyttbar disk"
-
-#: ../common/gkr-location.c:446
-#: ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Hem"
-
-#: ../common/gkr-location.c:980
-#: ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514
-#: ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Disken eller enheten som den här filen finns på är inte tillgänglig"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Programmet \"%s\" (%s) vill komma åt lösenordet för \"<object prop='name'/>\" i standardnyckelringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Programmet \"%s\" (%s) vill komma åt lösenordet för \"<object prop='name'/>\" i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232
-#: ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid "The application '%s' wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Programmet \"%s\" vill komma åt lösenordet för \"<object prop='name'/>\" i standardnyckelringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236
-#: ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid "The application '%s' wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Programmet \"%s\" vill komma åt lösenordet för \"<object prop='name'/>\" i %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid "An unknown application wants to access the password for '<object prop='name'/>' in the default keyring."
-msgstr "Ett okänt program vill komma åt lösenordet för \"<object prop='name'/>\" i standardnyckelringen."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid "An unknown application wants to access the password for '<object prop='name'/>' in %s."
-msgstr "Ett okänt program vill komma åt lösenordet för \"<object prop='name'/>\" i %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Tillåt åtkomst"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Tillåt åtkomst till nyckelringen för programmet?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Upplåsningslösenord för nyckelringen %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid "The application '%s' (%s) wants access to the default keyring, but it is locked"
-msgstr "Programmet \"%s\" (%s) vill komma åt standardnyckelringen, men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "Programmet \"%s\" (%s) vill komma åt nyckelringen \"%s\", men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:378
-#: ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "Programmet \"%s\" vill komma åt standardnyckelringen, men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:382
-#: ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "Programmet \"%s\" vill komma åt nyckelringen \"%s\", men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "Ett okänt program vill komma åt standardnyckelringen, men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Ett okänt program vill komma åt nyckelringen \"%s\", men den är låst"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Ange lösenord för att låsa upp standardnyckelringen"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Ange lösenord för att låsa upp nyckelringen \"%s\""
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Lås upp nyckelringen"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Lås automatiskt upp den här nyckelringen när jag loggar in."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid "The application '%s' (%s) wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" (%s) vill skapa en ny nyckelring med namnet \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid "The application '%s' (%s) wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" (%s) vill skapa en ny standardnyckelring. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:474
-#: ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid "The application '%s' wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" vill skapa en ny nyckelring med namnet \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:478
-#: ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid "The application '%s' wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" vill skapa en ny standardnyckelring. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid "An unknown application wants to create a new keyring called '%s'. You have to choose the password you want to use for it."
-msgstr "Ett okänt program vill skapa en ny nyckelring med namnet \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid "An unknown application wants to create a new default keyring. You have to choose the password you want to use for it."
-msgstr "Ett okänt program vill skapa en ny standardnyckelring. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Lösenord för ny nyckelring"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Välj lösenord för den nya nyckelringen"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" (%s) vill ändra lösenordet för nyckelringen \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid "The application '%s' (%s) wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" (%s) vill ändra lösenordet för standardnyckelringen. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:562
-#: ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid "The application '%s' wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" vill ändra lösenordet för nyckelringen \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:566
-#: ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid "The application '%s' wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Programmet \"%s\" vill ändra lösenordet för standardnyckelringen. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid "An unknown application wants to change the password for the '%s' keyring. You have to choose the password you want to use for it."
-msgstr "Ett okänt program vill ändra lösenordet för nyckelringen \"%s\". Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid "An unknown application wants to change the password for the default keyring. You have to choose the password you want to use for it."
-msgstr "Ett okänt program vill ändra lösenordet för standardnyckelringen. Du måste välja det lösenord som du vill använda för den nyckelringen."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Välj ett nytt lösenord för nyckelringen \"%s\"."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Välj ett nytt lösenord för standardnyckelringen."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Ändra lösenord för nyckelring"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid "The application '%s' (%s) wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Programmet \"%s\" (%s) vill lagra ett lösenord, men det finns ingen standardnyckelring. För att skapa en måste du välja det lösenord som du vill använda för den."
-
-#: ../daemon/gkr-daemon-ops.c:676
-#: ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid "The application '%s' wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Programmet \"%s\" vill lagra ett lösenord, men det finns ingen standardnyckelring. För att skapa en måste du välja det lösenord som du vill använda för den."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid "An unknown application wants to store a password, but there is no default keyring. To create one, you need to choose the password you wish to use for it."
-msgstr "Ett okänt program vill lagra ett lösenord, men det finns ingen standardnyckelring. För att skapa en måste du välja det lösenord som du vill använda för den."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Skapa standardnyckelring"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Välj lösenord för standardnyckelringen"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid "This option enables the PKCS#11 component in the gnome-keyring daemon. It only takes effect as gnome-keyring-daemon starts, (ie: when the user logs in). This setting may be overridden when certain command line arguments are passed to the daemon."
-msgstr "Detta alternativ aktiverar PKCS#11-komponenten i gnome-keyring-demonen. Den blir endast aktiverad när gnome-keyring-daemon startar, (alltså när användaren loggar in). Denna inställning kan åsidosättas när vissa kommandoradsflaggor skickas till demonen."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid "This option enables the SSH agent in the gnome-keyring daemon. It only takes effect as gnome-keyring-daemon starts, (ie: when the user logs in). This setting may be overridden when certain command line arguments are passed to the daemon."
-msgstr "Detta alternativ aktiverar SSH-agenten i gnome-keyring-demonen. Den blir endast aktiverad när gnome-keyring-daemon startar, (alltså när användaren loggar in). Denna inställning kan åsidosättas när vissa kommandoradsflaggor skickas till demonen."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Huruvida PKCS#11-komponenten i gnome-keyring är aktiverad."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Huruvida SSH-agenten i gnome-keyring är aktiverad."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Åtkomst nekad"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Programmet gnome-keyring-daemon kör inte."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Fel vid kommunikation med gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "En nyckelring med det namnet finns redan"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programmeringsfel: Programmet skickade ogiltigt data."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Inga matchande resultat"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "En nyckelring med det namnet finns inte."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Nyckelringen har redan låsts upp."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Lås upp inloggningsnyckelring"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Ange inloggningslösenordet för att låsa upp nyckelringen"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid "Your login keyring was not automatically unlocked when you logged into this computer."
-msgstr "Din inloggningsnyckelring låstes inte upp automatiskt när du loggade in på denna dator."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Skapa nyckelring för inloggning"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Ange ditt inloggningslösenord"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid "Your login keyring was not automatically created when you logged into this computer. It will now be created."
-msgstr "Din inloggningsnyckelring skapades inte automatiskt när du loggade in på denna dator. Den kommer nu att skapas."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Lås upp privat nyckel"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Lås upp certifikat"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Lås upp publik nyckel"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Lås upp"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Ange lösenordet för att låsa upp privata nyckeln"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Ange lösenordet för att låsa upp certifikatet"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Ange lösenordet för att låsa upp publika nyckeln"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Ange lösenordet för att låsa upp"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Lås automatiskt upp den här privata nyckeln när jag loggar in."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Lås automatiskt upp det här certifikatet när jag loggar in."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Lås automatiskt upp den här publika nyckeln när jag loggar in."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Lås automatiskt upp denna när jag loggar in"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Ett program vill komma åt privata nyckeln \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Ett program vill komma åt certifikatet \"%s\", men det är låst"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Ett program vill komma åt den publika nyckeln \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Ett program vill komma åt \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Systemet vill importera publika nyckeln \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Systemet vill importera certifikatet \"%s\", men det är låst"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Systemet vill importera publika nyckeln \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Systemet vill importera \"%s\", men den är låst"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Lösenord för att låsa upp \"%s\""
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Filen är okänd eller stöds inte."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Kunde inte tolka ogiltig eller skadad fil."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Lagra lösenord okrypterade?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid "By choosing to use a blank password, your stored passwords will not be safely encrypted. They will be accessible by anyone with access to your files."
-msgstr "Genom att välja att använda ett blankt lösenord kommer dina lagrade lösenord inte att vara krypterade på ett säkert sätt. De kommer att vara åtkomliga för alla som har tillgång till dina filer."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Använd osäker lagring"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Plats:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Gammalt lösenord:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Lösenord:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Bekräfta lösenordet:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Styrka för nytt lösenord"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Lösenorden stämde inte överens."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Lösenord får inte vara blanka"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Neka"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Tillåt _denna gång"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Tillåt _alltid"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Lås upp %s"
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Ange lösenordet för %s för att låsa upp"
-#~ msgid "key"
-#~ msgstr "nyckel"
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Gamla lösenord får inte vara blanka."
-#~ msgid "Must be run from gnome-keyring\n"
-#~ msgstr "Måste köras från gnome-keyring\n"
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) vill komma åt en okänd nyckelring, men den är låst"
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Programmet \"%s\" vill komma åt en okänd nyckelring, men den är låst"
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Ett okänt program vill komma åt en okänd nyckelring, men den är låst"
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) vill komma åt lösenordet för \"%s\" i en okänd "
-#~ "nyckelring."
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Programmet \"%s\" vill komma åt lösenordet för \"%s\" i en okänd "
-#~ "nyckelring."
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Ett okänt program vill komma åt lösenordet för \"%s\" i en okänd "
-#~ "nyckelring."
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Du måste ange typen av begäran att köra\n"
-#~ msgid "Unknown request type\n"
-#~ msgstr "Okänd begäranstyp\n"
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to the default keyring, but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) vill komma åt standardnyckelringen, men den är "
-#~ "låst."
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to the keyring '%s', but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) vill komma åt nyckelringen \"%s\", men den är låst."
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Programmet \"%s\" (%s) vill komma åt en okänd nyckelring, men den är låst."
-#~ msgid ""
-#~ "The application '%s' wants access to the default keyring, but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Programmet \"%s\" vill komma åt standardnyckelringen, men den är låst."
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked."
-#~ msgstr ""
-#~ "Programmet \"%s\" vill komma åt en okänd nyckelring, men den är låst."
-#~ msgid ""
-#~ "An unknown application wants access to the default keyring, but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Ett okänt program vill komma åt standardnyckelringen, men den är låst."
-#~ msgid ""
-#~ "An unknown application wants access to the keyring '%s', but it is locked."
-#~ msgstr ""
-#~ "Ett okänt program vill komma åt nyckelringen \"%s\", men den är låst."
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked."
-#~ msgstr ""
-#~ "Ett okänt program vill komma åt en okänd nyckelring, men den är låst."
-#~ msgid "The application '%s' (%s)"
-#~ msgstr "Programmet \"%s\" (%s)"
-#~ msgid "The application '%s'"
-#~ msgstr "Programmet \"%s\""
-#~ msgid "The application %s"
-#~ msgstr "Programmet %s"
-#~ msgid "the default keyring"
-#~ msgstr "standardnyckelringen"
-#~ msgid "the keyring '%s'"
-#~ msgstr "nyckelringen \"%s\""
-#~ msgid "an unknown keyring"
-#~ msgstr "en okänd nyckelring"
-#~ msgid "Allow application access to keyring"
-#~ msgstr "Tillåt åtkomst till nyckelringen för programmet"
-#~ msgid "You must specify the type of request to run"
-#~ msgstr "Du måste ange typen av begäran att köra"
-#~ msgid "Unknown request type"
-#~ msgstr "Okänd begäranstyp"
-#~ msgid "*"
-#~ msgstr "*"
-#~ msgid "Password"
-#~ msgstr "Lösenord"
-#~ msgid "_Name:"
-#~ msgstr "_Namn:"
-
diff --git a/po/ta.po b/po/ta.po
deleted file mode 100644
index a79b292a..00000000
--- a/po/ta.po
+++ /dev/null
@@ -1,401 +0,0 @@
-# translation of gnome-keyring.HEAD.po to TAMIL
-# This file is distributed under the same license as the PACKAGE package.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
-#
-# Jayaradha N <jaya@pune.redhat.com>, 2004.
-# Felix <ifelix@redhat.com>, 2006.
-# Dr.T.Vasudevan <agnihot3@gmail.com>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-27 04:01+0100\n"
-"PO-Revision-Date: 2007-08-14 12:47+0530\n"
-"Last-Translator: Dr.T.Vasudevan <agnihot3@gmail.com>\n"
-"Language-Team: TAMIL <ubuntu-l10n-tam@lists.ubuntu.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../common/gkr-location.c:288
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "நீக்கக்கூடிய வட்டு: %s"
-
-#: ../common/gkr-location.c:290
-msgid "Removable Disk"
-msgstr "நீக்கக்கூடிய வட்டு"
-
-#: ../common/gkr-location.c:431
-msgid "Home"
-msgstr "இல்லம்"
-
-#. TRANSLATORS: this is the title for an item
-#: ../daemon/gnome-keyring-daemon-ops.c:188
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s விசை வளையத்தை திறக்க கடவுச்சொல்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:414
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"பயன்பாடு '%s' (%s) இயல்பான விசை வளையத்தில் '<object prop='name'/>' க்கான "
-"கடவுச்சொல்லை அணுக விரும்புகிறது"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:417
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"பயன்பாடு '%s' (%s) '%s' இல் உள்ள '<object prop='name'/>' இன் கடவுச்சொல்லை அணுக "
-"விரும்புகிறது"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:422
-#: ../daemon/gnome-keyring-daemon-ops.c:430
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"பயன்பாடு '%s' இயல்பான விசை வளையத்தில் '<object prop='name'/>' இன் கடவுச்சொல்லை "
-"அணுக விரும்புகிறது"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:425
-#: ../daemon/gnome-keyring-daemon-ops.c:433
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"பயன்பாடு '%s' '%s' இல் உள்ள '<object prop='name'/>' இன் கடவுச்சொல்லை அணுக "
-"விரும்புகிறது"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:438
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"தெரியாத பயன்பாடு '<object prop='name'/>' க்கு கடவுச்சொல்லை இயல்பான விசை "
-"வளையத்திலிருந்து அணுக விரும்புகிறது"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:440
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"தெரியாத பயன்பாடு '<object prop='name'/>' க்கு %s இல் உள்ள கடவுச்சொல்லை அணுக "
-"விரும்புகிறது"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow access"
-msgstr "அணுக அனுமதிக்கவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:446
-msgid "Allow application access to keyring?"
-msgstr "பயன்பாடுகள் விசை வளையத்தை அணுக அனுமதிக்கவா?"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:544
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"பயன்பாடு '%s' (%s) இயல்பான விசை வளையத்தை அணுக முயற்சிக்கிறது, ஆனால் அது "
-"பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:548
-#, c-format
-msgid "The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"பயன்பாடு '%s' (%s) விசை வளையம் '%s', ஐ அணுக முயற்சிக்கிறது, ஆனால் அது "
-"பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:554
-#: ../daemon/gnome-keyring-daemon-ops.c:564
-#, c-format
-msgid "The application '%s' wants access to the default keyring, but it is locked"
-msgstr "பயன்பாடு '%s' இயல்பான விசை வளையத்தை அணுக முயற்சிக்கிறது, ஆனால் அது பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:558
-#: ../daemon/gnome-keyring-daemon-ops.c:569
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "பயன்பாடு '%s' விசை வளையம் '%s' ஐ அணுக முயற்சிக்கிறது, ஆனால் அது பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:575
-msgid "An unknown application wants access to the default keyring, but it is locked"
-msgstr "தெரியாத பயன்பாடு இயல்பான விசை வளையத்தை அணுக முயற்சிக்கிறது ஆனால் அது பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:579
-#, c-format
-msgid "An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"தெரியாத பயன்பாடு இயல்பான விசை வளையம் '%s', ஐ அணுக முயற்சிக்கிறது ஆனால் அது "
-"பூட்டப்பட்டுள்ளது."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:586
-msgid "Enter password for default keyring to unlock"
-msgstr "விசை வளையத்தின் பூட்டைத்திறக்க கடவுச்சொல்லை உள்ளிடவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:588
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "பூட்டைத்திறக்க '%s' விசை வளையத்தின் கடவுச்சொல்லை உள்ளிடவும்"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:592
-msgid "Unlock Keyring"
-msgstr "விசை வளையத்தின் பூட்டை திற"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:604
-msgid "Automatically unlock this keyring when I log in."
-msgstr "நான் உள்நுழையும்போது தானியங்கியாக இந்த விசை வளையத்தை பூட்டு திறக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:640
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' (%s) புதிய விசை வளையம் '%s' ஐ உருவாக்க முயற்சிக்கிறது. நீங்கள் "
-"பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:644
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' (%s) புதிய இயல்பான விசை வளையத்தை உருவாக்க முயற்சிக்கிறது. நீங்கள் "
-"பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:650
-#: ../daemon/gnome-keyring-daemon-ops.c:660
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' புதிய விசை வளையம் '%s' ஐ உருவாக்க முயற்சிக்கிறது. நீங்கள் பயன்படுத்த "
-"விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:654
-#: ../daemon/gnome-keyring-daemon-ops.c:664
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' புதிய இயல்பான விசை ஐ உருவாக்க முயற்சிக்கிறது. நீங்கள் பயன்படுத்த "
-"விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:670
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"தெரியாத பயன்பாடு புதிய விசை வளையம் '%s' ஐ உருவாக்க முயற்சிக்கிறது. நீங்கள் பயன்படுத்த "
-"விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:674
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"தெரியாத பயன்பாடு புதிய இயல்பான விசை வளையத்தை உருவாக்க முயற்சிக்கிறது. நீங்கள் "
-"பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்."
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:680
-msgid "New Keyring Password"
-msgstr "புதிய விசை வளைய கடவுச்சொல்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:681
-msgid "Choose password for new keyring"
-msgstr "புதிய விசை வளையத்திற்கான கடவுச்சொல்லை தேர்வு செய்யவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:728
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' (%s) '%s' விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. அதற்கான "
-"கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:732
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' (%s) முன்னிருப்பு விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. "
-"அதற்கான கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:738
-#: ../daemon/gnome-keyring-daemon-ops.c:748
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' '%s' விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. அதற்கான "
-"கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:742
-#: ../daemon/gnome-keyring-daemon-ops.c:752
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"பயன்பாடு '%s' முன்னிருப்பு விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. அதற்கான "
-"கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:758
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"தெரியாத பயன்பாடு '%s' விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. அதற்கான "
-"கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:762
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"தெரியாத பயன்பாடு முன்னிருப்பு விசை வளையத்திற்கு கடவுச்சொல்லை மாற்ற விரும்புகிறது. "
-"அதற்கான கடவுச்சொல்லை தேர்ந்தெடுக்கவும்."
-
-#: ../daemon/gnome-keyring-daemon-ops.c:772
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' விசை வளையத்திற்கு ஒரு புதிய கடவுச்சொல்லை தேர்ந்தெடுக்கவும். "
-
-#: ../daemon/gnome-keyring-daemon-ops.c:774
-msgid "Choose a new password for the default keyring. "
-msgstr "முன்னிருப்பு விசை வளையத்திற்கு ஒரு புதிய கடவுச்சொல்லை தேர்ந்தெடுக்கவும். "
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:778
-msgid "Change Keyring Password"
-msgstr "விசை வளைய கடவுச்சொல்லை மாற்றவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:845
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"பயன்பாடு '%s' (%s) கடவுச்சொல்லை சேமிக்க விரும்புகிறது ஆனால் இயல்பான விசை வளையம் "
-"இல்லை. அதை உருவாக்க நீங்கள் பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:849
-#: ../daemon/gnome-keyring-daemon-ops.c:853
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"பயன்பாடு '%s' கடவுச்சொல்லை சேமிக்க விரும்புகிறது ஆனால் இயல்பான கடவுச்சொல் இல்லை. "
-"உருவாக்க நீங்கள் பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:857
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"தெரியாத பயன்பாடு கடவுச்சொல்லை சேமிக்க விரும்புகிறதும் ஆனால் இயல்பான கடவுச்சொல் இல்லை. "
-"அதை உருவாக்க நீங்கள் பயன்படுத்த விரும்பும் கடவுச்சொல்லை உள்ளிடவும்"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Create Default Keyring"
-msgstr "புதிய இயல்பான விசை வளையத்தை உருவாக்கவும்"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:862
-msgid "Choose password for default keyring"
-msgstr "இயல்பான விசை வளையத்திற்கான கடவுச்சொல்லை தேர்வு செய்யவும்"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "அணுகல் மறுக்கப்பட்டது"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "க்னோம் விசை வளைய கிங்கரன் இயங்கவில்லை"
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "விசைவளைய ஏற்கெனவே பூட்டு திறக்கப்பட்டு விட்டது."
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "க்னோம் விசை வளைய கிங்கரன் உடன் தொடர்பு கொள்வதில் பிழை"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "அந்த பெயருடன் விசை வளையம் ஏற்கெனவே இருப்பில் உள்ளது."
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "நிரல் பிழை: நிரல் பிழையான தரவை அனுப்பியது."
-
-#: ../ui/gkr-ask-tool.c:267
-msgid "_Location:"
-msgstr "(_L)இடம்:"
-
-#: ../ui/gkr-ask-tool.c:280
-msgid "_Old password:"
-msgstr "பழைய கடவுச்சொல் (_O):"
-
-#: ../ui/gkr-ask-tool.c:300
-msgid "_Password:"
-msgstr "கடவுச்சொல் (_P):"
-
-#: ../ui/gkr-ask-tool.c:322
-msgid "_Confirm password:"
-msgstr "கடவுச்சொல்லை _உறுதிபடுத்துக:"
-
-#: ../ui/gkr-ask-tool.c:341
-msgid "New password strength"
-msgstr "புதிய கடவுச்சொல்லின் பலம்"
-
-#: ../ui/gkr-ask-tool.c:378
-msgid "Old password cannot be blank."
-msgstr "பழைய கடவுச்சொல் வெறுமையாக இருக்க முடியாது"
-
-#: ../ui/gkr-ask-tool.c:390
-msgid "Password cannot be blank."
-msgstr "கடவுச்சொல் வெறுமையாக இருக்க முடியாது"
-
-#: ../ui/gkr-ask-tool.c:399
-msgid "Passwords do not match."
-msgstr "கடவுச்சொற்கள் பொருந்தவில்லை"
-
-#: ../ui/gkr-ask-tool.c:448
-msgid "Deny"
-msgstr "மறுக்கவும்"
-
-#: ../ui/gkr-ask-tool.c:460
-msgid "Allow _Once"
-msgstr "(_O) ஒரு முறை அனுமதி"
-
-#: ../ui/gkr-ask-tool.c:464
-msgid "_Always Allow"
-msgstr "(_A)எப்போதும் அனுமதி"
-
diff --git a/po/te.po b/po/te.po
deleted file mode 100644
index 46ca80dc..00000000
--- a/po/te.po
+++ /dev/null
@@ -1,348 +0,0 @@
-# Telugu translation of gnome-keyring.
-# Copyright (C) 2007, Swecha Telugu Localisation Team <localisation@swecha.org>
-# This file is distributed under the same license as the gnome-keyring package.
-# Bharat Kumar <jonnalagaddabharat@gmail.com>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-07-16 16:11+0530\n"
-"PO-Revision-Date: 2007-07-16 16:14+0530\n"
-"Last-Translator: Bharat Kumar <jonnalagaddabharat@gmail.com>\n"
-"Language-Team: Swecha Telugu Localisation Team <localisation@swecha.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:380
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:383
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:388
-#: ../daemon/gnome-keyring-daemon-ops.c:396
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:391
-#: ../daemon/gnome-keyring-daemon-ops.c:399
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:404
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:406
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:412
-msgid "Allow access"
-msgstr "సాంగత్యాన్ని అనుమతించు"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:412
-msgid "Allow application access to keyring?"
-msgstr "కీలకవలయానికి కార్యక్షేత్ర సాంగత్యాన్ని అనుమతించు?"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:481
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:485
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:491
-#: ../daemon/gnome-keyring-daemon-ops.c:501
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"'%s' కార్యక్షేత్రం అప్రమేయ కీలకవలయము తో సాంగత్యం కోరుచున్నది, కాని కీలకవలయానికి తాళంవేసియున్నది"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:495
-#: ../daemon/gnome-keyring-daemon-ops.c:506
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "'%s' కార్యక్షేత్రం '%s' కీలకవలయము తో సాంగత్యం కోరుచున్నది, కాని కీలకవలయానికి తాళంవేసియున్నది"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:512
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"ఒక అపరిచిత కార్యక్షేత్రం అప్రమేయ కీలకవలయము తో సాంగత్యం కోరుచున్నది, కాని కీలకవలయానికి తాళంవేసియున్నది"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:516
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"ఒక అపరిచిత కార్యక్షేత్రం '%s' కీలకవలయము తో సాంగత్యం కోరుచున్నది, కాని కీలకవలయానికి తాళంవేసియున్నది"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:523
-msgid "Enter password for default keyring to unlock"
-msgstr "అప్రమేయ కీలకవలయం తెరుచుటకు రహస్యపదాన్ని ప్రవేశపెట్టండి"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:525
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' కీలకవలయం తెరుచుటకు రహస్యపదాన్ని ప్రవేశపెట్టండి"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:529
-msgid "Unlock Keyring"
-msgstr "కీలకవలయం తెరవండి"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:569
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:573
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:579
-#: ../daemon/gnome-keyring-daemon-ops.c:589
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s'కార్యక్షేత్రం కొత్త '%s' కీలకవలయాన్ని సృష్టించాలనుకుంటుంది. కీలకవలయానికి ఉపయోగించాలనుకుంటున్న "
-"రహస్యపదాన్ని ఎంచుకున్నాము "
-
-#: ../daemon/gnome-keyring-daemon-ops.c:583
-#: ../daemon/gnome-keyring-daemon-ops.c:593
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s'కార్యక్షేత్రం కొత్త అప్రమేయ కీలకవలయాన్ని సృష్టించాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:599
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"ఒక అపరిచిత కార్యక్షేత్రం కొత్త '%s' కీలకవలయాన్ని సృష్టించాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:603
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"ఒక అపరిచిత కార్యక్షేత్రం కొత్త అప్రమేయ కీలకవలయాన్ని సృష్టించాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:609
-msgid "New Keyring Password"
-msgstr "కొత్త కీలకవలయానికి రహస్యపదం"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:610
-msgid "Choose password for new keyring"
-msgstr "కొత్త కీలకవలయానికి రహస్యపదాన్ని ఎంచుకొనుము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:655
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:659
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:665
-#: ../daemon/gnome-keyring-daemon-ops.c:675
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s'కార్యక్షేత్రం '%s' కీలకవలయానికి రహస్యపదాన్ని మార్చాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:669
-#: ../daemon/gnome-keyring-daemon-ops.c:679
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s'కార్యక్షేత్రం అప్రమేయ కీలకవలయానికి రహస్యపదాన్ని మార్చాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:685
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-" ఒక అపరిచిత కార్యక్షేత్రం '%s' కీలకవలయానికి రహస్యపదాన్ని మార్చాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:689
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"ఒక అపరిచిత కార్యక్షేత్రం అప్రమేయ కీలకవలయానికి రహస్యపదాన్ని మార్చాలనుకుంటుంది. కీలకవలయానికి "
-"ఉపయోగించాలనుకుంటున్న రహస్యపదాన్ని ఎంచుకున్నాము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:699
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "%s కీలకవలయానికి కొత్త రహస్యపదాన్ని ఎంచుకొనుము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:701
-msgid "Choose a new password for the default keyring. "
-msgstr "అప్రమేయ కీలకవలయానికి కొత్త రహస్యపదాన్ని ఎంచుకొనుము"
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:705
-msgid "Change Keyring Password"
-msgstr "కీలకవలయ రహస్యపదాన్ని మార్చుము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:771
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:775
-#: ../daemon/gnome-keyring-daemon-ops.c:779
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#: ../daemon/gnome-keyring-daemon-ops.c:783
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-
-#. And put together the ask request
-#: ../daemon/gnome-keyring-daemon-ops.c:788
-msgid "Create Default Keyring"
-msgstr "అప్రమేయ కీలకవలయాన్ని సృష్టించుము"
-
-#: ../daemon/gnome-keyring-daemon-ops.c:788
-msgid "Choose password for default keyring"
-msgstr "అప్రమేయ కీలకవలయానికి రహస్యపదాన్ని ఎంచుకొనుము"
-
-#: ../library/gnome-keyring-utils.c:109
-msgid "Access Denied"
-msgstr "సాంగత్యం కుదరలేదు"
-
-#: ../library/gnome-keyring-utils.c:111
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "గ్నోమ్ -కీలకవలయ-సూత్రధారి కార్యక్షేత్రము నడవటంలేదు"
-
-#: ../library/gnome-keyring-utils.c:113 ../library/gnome-keyring-utils.c:126
-msgid "The keyring has already been unlocked."
-msgstr "కీలకవలయం ఇంతకు ముందే తాళంవేయబడింది"
-
-#: ../library/gnome-keyring-utils.c:115
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "గ్నోమ్ -కీలకవలయ-సూత్రధారి ని సంప్రదించటంలో దోషము"
-
-#: ../library/gnome-keyring-utils.c:117
-msgid "A keyring with that name already exists"
-msgstr "ఆ పేరుతో ఒక కీలకవలయం మునుపే ఉన్నది"
-
-#: ../library/gnome-keyring-utils.c:119
-msgid "Programmer error: The application sent invalid data."
-msgstr "కార్యక్రమ నిర్వాహకి దోషము: కార్యక్షేత్రం నిస్సారమైన దత్తాంశాన్ని పంపినది"
-
-#: ../ui/gkr-ask-tool.c:257
-msgid "_Old password:"
-msgstr "_పాత రహస్యపదం:"
-
-#: ../ui/gkr-ask-tool.c:280
-msgid "_Password:"
-msgstr "_రహస్యపదం:"
-
-#: ../ui/gkr-ask-tool.c:305
-msgid "_Confirm password:"
-msgstr "_రహస్యపదాన్ని ధృవీకరించుము:"
-
-#: ../ui/gkr-ask-tool.c:324
-msgid "New password strength"
-msgstr "కొత్త రహస్యపదం ధృడత్వం"
-
-#: ../ui/gkr-ask-tool.c:350
-msgid "Old password cannot be blank."
-msgstr "పాత రహస్యపదంగా ఖాళీని పెట్టరాదు"
-
-#: ../ui/gkr-ask-tool.c:362
-msgid "Password cannot be blank."
-msgstr "రహస్యపదంగా ఖాళీని పెట్టరాదు "
-
-#: ../ui/gkr-ask-tool.c:371
-msgid "Passwords do not match."
-msgstr "రహస్యపదాలు సరితూగటంలేదు"
-
-#: ../ui/gkr-ask-tool.c:408
-msgid "Deny"
-msgstr ""
-
-#: ../ui/gkr-ask-tool.c:420
-msgid "Allow _Once"
-msgstr "_ఒకసారే అనుమతించు"
-
-#: ../ui/gkr-ask-tool.c:424
-msgid "_Always Allow"
-msgstr "_ఎల్లప్పుడు అనుమతించు"
-
-#: ../ui/gkr-ask-tool.c:478
-msgid "Must be run from gnome-keyring\n"
-msgstr "గ్నోమ్ కీలకవలయం నుండి తప్పనిసరిగా నడిపించుము\n"
diff --git a/po/th.po b/po/th.po
deleted file mode 100644
index 96791e41..00000000
--- a/po/th.po
+++ /dev/null
@@ -1,610 +0,0 @@
-# Thai translation for gnome-keyring.
-# Copyright (C) 2004-2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Paisa Seeluangsawat <paisa@users.sf.net>, 2004.
-# Theppitak Karoonboonyanan <thep@linux.thai.net>, 2005-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-17 08:53+0700\n"
-"PO-Revision-Date: 2008-02-17 09:12+0700\n"
-"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
-"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "ดิสก์ถอดเสียบ: %s"
-
-#: common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "ดิสก์ถอดเสียบ"
-
-#: common/gkr-location.c:446 common/gkr-location.c:458
-msgid "Home"
-msgstr "บ้าน"
-
-#: common/gkr-location.c:980 common/gkr-location.c:1003
-#: pkix/gkr-pkix-parser.c:514 pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "ดิสก์หรือไดรว์ที่เก็บแฟ้มนี้ไม่มีอยู่"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จากพวงกุญแจปริยาย"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "โปรแกรม '%s' (%s) ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จาก %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:232 daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"โปรแกรม '%s' ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จากพวงกุญแจปริยาย"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:236 daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "โปรแกรม '%s' ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จาก %s"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"โปรแกรมไม่ทราบชื่อ ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จากพวงกุญแจปริยาย"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "โปรแกรมไม่ทราบชื่อ ต้องการใช้รหัสผ่านสำหรับ '<object prop='name'/>' จาก %s"
-
-#. And put together the ask request
-#: daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "ยอมให้ใช้"
-
-#: daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "ยอมให้โปรแกรมใช้พวงกุญแจนี้ไหม?"
-
-#: daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "ปลดรหัสผ่านสำหรับพวงกุญแจ %s"
-
-#: daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "โปรแกรม '%s' (%s) ต้องการจะใช้พวงกุญแจปริยายซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "โปรแกรม '%s' (%s) ต้องการจะใช้พวงกุญแจ %s ซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:378 daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "โปรแกรม '%s' ต้องการจะใช้พวงกุญแจปริยายซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:382 daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "โปรแกรม '%s' ต้องการจะใช้พวงกุญแจ %s ซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "โปรแกรมไม่ทราบชื่อ ต้องการจะใช้พวงกุญแจปริยายซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "โปรแกรมที่ไม่ทราบชื่อ ต้องการจะใช้พวงกุญแจ '%s' ซึ่งถูกล็อคอยู่"
-
-#: daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "ป้อนรหัสผ่านสำหรับปลดล็อคพวงกุญแจปริยาย"
-
-#: daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "ป้อนรหัสผ่านสำหรับปลดล็อคพวงกุญแจ '%s'"
-
-#. And put together the ask request
-#: daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "ปลดล็อคพวงกุญแจ"
-
-#: daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "ปลดล็อคพวงกุญแจนี้โดยอัตโนมัติเมื่อข้าพเจ้าเข้าระบบ"
-
-#: daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการจะสร้างพวงกุญแจใหม่ชื่อ '%s' คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการจะสร้างพวงกุญแจปริยายใหม่ คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:474 daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr "โปรแกรม '%s' ต้องการจะสร้างพวงกุญแจใหม่ชื่อ '%s' คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:478 daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "โปรแกรม '%s' ต้องการจะสร้างพวงกุญแจปริยายใหม่ คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"โปรแกรมไม่ทราบชื่อ ต้องการจะสร้างพวงกุญแจใหม่ชื่อ '%s' คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "โปรแกรมไม่ทราบชื่อ ต้องการจะสร้างพวงกุญแจปริยายใหม่ คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#. And put together the ask request
-#: daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "รหัสผ่านพวงกุญแจใหม่"
-
-#: daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "ตั้งรหัสผ่านสำหรับพวงกุญแจใหม่"
-
-#: daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจ '%s' "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจปริยาย "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:562 daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจ '%s' คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:566 daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรม '%s' ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจปริยาย คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรมไม่ทราบชื่อ ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจ '%s' "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"โปรแกรมไม่ทราบชื่อ ต้องการจะเปลี่ยนรหัสผ่านสำหรับพวงกุญแจปริยาย "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจนี้"
-
-#: daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "ตั้งรหัสผ่านใหม่สำหรับพวงกุญแจ '%s'"
-
-#: daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "ตั้งรหัสผ่านใหม่สำหรับพวงกุญแจปริยาย"
-
-#. And put together the ask request
-#: daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "เปลี่ยนรหัสผ่านพวงกุญแจ"
-
-#: daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"โปรแกรม '%s' (%s) ต้องการเก็บรหัสผ่าน แต่คุณไม่มีพวงกุญแจปริยาย ถ้าจะสร้างพวงกุญแจดังกล่าว "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจด้วย"
-
-#: daemon/gkr-daemon-ops.c:676 daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"โปรแกรม '%s' ต้องการเก็บรหัสผ่าน แต่คุณไม่มีพวงกุญแจปริยาย ถ้าจะสร้างพวงกุญแจดังกล่าว "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจด้วย"
-
-#: daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"โปรแกรมไม่ทราบชื่อ ต้องการเก็บรหัสผ่าน แต่คุณไม่มีพวงกุญแจปริยาย ถ้าจะสร้างพวงกุญแจดังกล่าว "
-"คุณต้องตั้งรหัสผ่านสำหรับพวงกุญแจด้วย"
-
-#. And put together the ask request
-#: daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "สร้างพวงกุญแจปริยาย"
-
-#: daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "ตั้งรหัสผ่านสำหรับพวงกุญแจปริยาย"
-
-#: data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"ตัวเลือกนี้จะเปิดใช้องค์ประกอบ PKCS#11 ในดีมอน gnome-keyring ซึ่งจะมีผลเมื่อดีมอน gnome-"
-"keyring ทำงานเท่านั้น (กล่าวคือ เมื่อผู้ใช้เข้าระบบ) "
-"ค่าตั้งนี้อาจถูกแทนที่โดยอาร์กิวเมนต์บางอย่างในบรรทัดคำสั่งที่ใช้เรียกดีมอน"
-
-#: data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"ตัวเลือกนี้จะเปิดใช้ SSH agent ในดีมอน gnome-keyring ซึ่งจะมีผลเมื่อดีมอน gnome-keyring "
-"ทำงานเท่านั้น (กล่าวคือ เมื่อผู้ใช้เข้าระบบ) "
-"ค่าตั้งนี้อาจถูกแทนที่โดยอาร์กิวเมนต์บางอย่างในบรรทัดคำสั่งที่ใช้เรียกดีมอน"
-
-#: data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "จะเปิดใช้องค์ประกอบ PKCS#11 ของ gnome-keyring หรือไม่"
-
-#: data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "จะเปิดใช้ SSH agent ของ gnome-keyring หรือไม่"
-
-#: library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "ปฏิเสธการใช้งาน"
-
-#: library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "โปรแกรม gnome-keyring-daemon ไม่ได้ทำงานอยู่"
-
-#: library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "เกิดข้อผิดพลาดขณะติดต่อกับ gnome-keyring-daemon"
-
-#: library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "มีพวงกุญแจชื่อนี้อยู่ก่อนแล้ว"
-
-#: library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "ข้อผิดพลาดของผู้เขียนโปรแกรม: โปรแกรมส่งข้อมูลผิดพลาด"
-
-#: library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "ไม่มีรายการที่ตรง"
-
-#: library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "ไม่มีพวงกุญแจชื่อนี้"
-
-#: library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "พวงกุญแจถูกปลดล็อคเรียบร้อยแล้ว"
-
-#. And put together the ask request
-#: keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "ปลดล็อคพวงกุญแจเข้าระบบ"
-
-#: keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "ป้อนรหัสผ่านเข้าระบบเพื่อปลดล็อคพวงกุญแจ"
-
-#: keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "พวงกุญแจเข้าระบบของคุณไม่ได้ถูกปลดล็อคโดยอัตโนมัติเมื่อคุณเข้าระบบ"
-
-#. And put together the ask request
-#: keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "สร้างพวงกุญแจเข้าระบบ"
-
-#: keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "ป้อนรหัสผ่านเข้าระบบของคุณ"
-
-#: keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "ยังไม่มีการสร้างพวงกุญแจเข้าระบบของคุณโดยอัตโนมัติเมื่อคุณเข้าสู่ระบบนี้ และจะสร้างเดี๋ยวนี้"
-
-#: pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "ปลดล็อคกุญแจส่วนตัว"
-
-#: pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "ปลดล็อคใบรับรอง"
-
-#: pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "ปลดล็อคกุญแจสาธารณะ"
-
-#: pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "ปลดล็อค"
-
-#: pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "ป้อนรหัสผ่านเพื่อปลดล็อคกุญแจส่วนตัว"
-
-#: pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "ป้อนรหัสผ่านเพื่อปลดล็อคใบรับรอง"
-
-#: pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "ป้อนรหัสผ่านเพื่อปลดล็อคกุญแจสาธารณะ"
-
-#: pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "ป้อนรหัสผ่านเพื่อปลดล็อค"
-
-#: pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "ปลดล็อคกุญแจส่วนตัวนี้โดยอัตโนมัติเมื่อข้าพเจ้าเข้าระบบ"
-
-#: pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "ปลดล็อคใบรับรองนี้โดยอัตโนมัติเมื่อข้าพเจ้าเข้าระบบ"
-
-#: pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "ปลดล็อคกุญแจสาธารณะนี้โดยอัตโนมัติเมื่อข้าพเจ้าเข้าระบบ"
-
-#: pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "ปลดล็อครายการนี้โดยอัตโนมัติเมื่อข้าพเจ้าเข้าระบบ"
-
-#: pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "มีโปรแกรมต้องการจะใช้กุญแจส่วนตัว '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "มีโปรแกรมต้องการจะใช้ใบรับรอง '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "มีโปรแกรมต้องการจะใช้กุญแจสาธารณะ '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "มีโปรแกรมต้องการจะใช้ '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "ระบบต้องการจะนำเข้ากุญแจส่วนตัว '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "ระบบต้องการจะนำเข้าใบรับรอง '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "ระบบต้องการจะนำเข้ากุญแจสาธารณะ '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "ระบบต้องการจะนำเข้า '%s' ซึ่งถูกล็อคอยู่"
-
-#: pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "รหัสผ่านสำหรับปลดล็อค '%s'"
-
-#: pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "แฟ้มที่ไม่รู้จักหรือไม่รองรับ"
-
-#: pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "ไม่สามารถแจงแฟ้มที่ผิดรูปแบบหรือข้อมูลเสียหาย"
-
-#: ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "จะเก็บรหัสผ่านโดยไม่เข้ารหัสลับจริงหรือ?"
-
-#: ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"การใช้รหัสผ่านว่างเปล่า จะทำให้รหัสผ่านไม่มีการเข้ารหัสลับอย่างปลอดภัย "
-"และใครก็ตามที่เข้าถึงแฟ้มของคุณได้ก็จะได้รหัสผ่านของคุณไป"
-
-#: ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "เก็บแบบไม่ปลอดภัย"
-
-#: ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_ตำแหน่งเก็บ:"
-
-#: ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "รหัสผ่านเ_ดิม:"
-
-#: ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_รหัสผ่าน:"
-
-#: ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_ยืนยันรหัสผ่าน:"
-
-#: ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "ความแน่นหนาของรหัสผ่าน"
-
-#: ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "รหัสผ่านไม่ตรงกัน"
-
-#: ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "รหัสผ่านเป็นค่าว่างเปล่าไม่ได้"
-
-#: ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "ปฏิเสธ"
-
-#: ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "ยอมแ_ค่ครั้งนี้"
-
-#: ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "ยอม_ตลอดไป"
-
-#~ msgid "Unlock %s"
-#~ msgstr "ปลดล็อค %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "ป้อนรหัสผ่านเพื่อปลดล็อค '%s'"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "รหัสผ่านเดิมเป็นค่าว่างเปล่าไม่ได้"
-
-#~ msgid "Must be run from gnome-keyring\n"
-#~ msgstr "ต้องเรียกจาก gnome-keyring\n"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "โปรแกรม '%s' (%s) ต้องการจะใช้พวงกุญแจไม่ทราบชื่อซึ่งถูกล็อคอยู่"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr "โปรแกรม '%s' ต้องการจะใช้พวงกุญแจไม่ทราบชื่อซึ่งถูกล็อคอยู่"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "โปรแกรมไม่ทราบชื่อ ต้องการจะใช้พวงกุญแจไม่ทราบชื่อซึ่งถูกล็อคอยู่"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "โปรแกรม '%s' (%s) ต้องการใช้รหัสผ่านสำหรับ '%s' จากพวงกุญแจไม่ทราบชื่อ"
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr "โปรแกรม '%s' ต้องการใช้รหัสผ่านสำหรับ '%s' จากพวงกุญแจไม่ทราบชื่อ"
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "โปรแกรมไม่ทราบชื่อ ต้องการใช้รหัสผ่านสำหรับ '%s' จากพวงกุญแจไม่ทราบชื่อ"
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "คุณต้องบอกชนิดข้อร้องขอที่จะเรียกใช้\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "ไม่รู้จักชนิดข้อร้องขอ\n"
diff --git a/po/tr.po b/po/tr.po
deleted file mode 100644
index d0eedf38..00000000
--- a/po/tr.po
+++ /dev/null
@@ -1,621 +0,0 @@
-# translation of gnome-keyring.HEAD.tr.po to Turkish
-# Turkish translation of gnome-keyring.
-# Copyright (C) 2004 THE gnome-keyring'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome-keyring package.
-#
-#
-# Gorkem Cetin <gorkem@bahcesehir.edu.tr>, 2004.
-# Görkem Çetin <gorkem@gorkemcetin.com>, 2004.
-# Serdar CICEK <serdar@nerd.com.tr>, 2008.
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring.HEAD.tr\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-18 19:29+0200\n"
-"PO-Revision-Date: 2008-02-18 20:47+0200\n"
-"Last-Translator: Serdar CICEK <serdar@nerd.com.tr>\n"
-"Language-Team: Turkish <gnome-turk@gnome.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Taşınabilir Disk: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Taşınabilir Disk"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Ana Sayfa"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Bu dosyanın bulunduğu disk ya da sürücü mevcut değil"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"'%s' (%s) uygulaması '<object prop='name'/>' için öntanımlı anahtarlıktaki "
-"parolaya ulaşmak istiyor."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"'%s' (%s) uygulaması ''<object prop='name'/>' için %s içindeki parolaya "
-"ulaşmak istiyor."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"'%s' uygulaması '<object prop='name'/>' için öntanımlı anahtarlıktaki "
-"parolaya ulaşmak istiyor."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"'%s' uygulaması '<object prop='name'/>' için %s içindeki parolaya ulaşmak "
-"istiyor."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Bilinmeyen bir uygulama '<object prop='name'/>' için öntanımlı "
-"anahtarlıktaki parolaya ulaşmak istiyor."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Bilinmeyen bir uygulama '<object prop='name'/>' için %s içindeki parolaya "
-"ulaşmak istiyor."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Erişime izin ver"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Uygulamanın anahtarlığa erişebilmesine izin verilsin mi?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s anahtarlığı için parolayı girin "
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"'%s' (%s) uygulaması öntanımlı anahtarlığa ulaşmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' (%s) uygulaması '%s' anahtarlığına ulaşmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"'%s' uygulaması öntanımlı anahtarlığa ulaşmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"'%s' uygulaması '%s' anahtarlığına ulaşmak istiyor, fakat anahtarlık kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama öntanımlı anahtarlığa ulaşmak istiyor, fakat "
-"anahtarlık kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama '%s' anahtarlığına ulaşmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Öntanımlı anahtarlık kilidini açmak için parola girin"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "'%s' anahtarlık kilidini açmak için parola girin"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Anahtarlık Kilidini Aç"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Giriş yaptığımda anahtarlığı kendiliğinden aç."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) uygulaması '%s' adında yeni bir anahtarlık oluşturmak istiyor. "
-"Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) uygulaması yeni bir öntanımlı anahtarlık oluşturmak istiyor. Onun "
-"için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' uygulaması '%s' adında yeni bir anahtarlık oluşturmak istiyor. Onun "
-"için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"'%s' uygulaması yeni bir öntanımlı anahtarlık oluşturmak istiyor. Onun için "
-"kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Bilinmeyen bir uygulama '%s' adında yeni bir anahtarlık oluşturmak istiyor. "
-"Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Bilinmeyen bir uygulama yeni bir öntanımlı anahtarlık oluşturmak istiyor. "
-"Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Yeni Anahtarlık Parolası"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Yeni anahtarlık için parola seçin"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) uygulaması '%s' anahtarlığının parolasını değiştirmek istiyor. "
-"Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"'%s' (%s) uygulaması yeni bir öntanımlı anahtarlığın parolasını değiştirmek "
-"istiyor. Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"'%s' uygulaması '%s' anahtarlığının parolasını değiştirmek istiyor. Onun "
-"için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"'%s' uygulaması öntanımlı anahtarlığın parolasını değiştirmek istiyor. Onun "
-"için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Bilinmeyen bir uygulama '%s' anahtarlığının parolasını değiştirmek istiyor. "
-"Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Bilinmeyen bir uygulama öntanımlı anahtarlığın parolasını değiştirmek "
-"istiyor. Onun için kullanacağınız parolayı seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "'%s' anahtarlığı için yeni bir parola seçin. "
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Öntanımlı anahtarlık için yeni bir parola seçin."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Anahtarlık Parolası Değiştir"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' (%s) uygulaması parola saklamak istiyor, ancak öntanımlı anahtarlık "
-"yok. Bir tane oluşturmak için, anahtarlık için kullanacağınız parolayı "
-"seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"'%s' uygulaması parola saklamak istiyor, ancak öntanımlı anahtarlık yok. Bir "
-"tane oluşturmak istiyorsanız, anahtarlık için kullanacağınız parolayı "
-"seçmeniz gerekiyor."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Bilinmeyen bir uygulama parola saklamak istiyor, ancak öntanımlı anahtarlık "
-"yok. Bir tane oluşturmak istiyorsanız, anahtarlık için kullanacağınız "
-"parolayı seçmeniz gerekiyor."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Öntanımlı Anahtarlık Oluştur"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Öntanımlı anahtarlık için parola seçin"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Bu özellik gnome-keyring servisi içindeki PKCS#11 eklentisini etkinleştirir. "
-"Bu sadece gnome-keyring-daemon başladığında etkili olur, (örn: kullanıcı "
-"giriş yaptığında). Kesin komut parametleri servise geçildiğinde bu ayarın "
-"yerine geçer."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Bu özellik gnome-keyring servisi içindeki SSH aracını etkinleştirir. Bu "
-"sadece gnome-keyring-daemon başladığında etkili olur, (örn: kullanıcı giriş "
-"yaptığında). Kesin komut parametleri servise geçildiğinde bu ayarın yerine "
-"geçer."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Gnome-keyring PKCS#11 bileşeninin etkin olmaması."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Gnome-keyring SSH aracının etkin olmaması."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Giriş Reddedildi"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Gnome-keyring-daemon uygulaması çalışmıyor."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Gnome-keyring-daemon ile iletişim hatası"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Bu isimdeki anahtarlık zaten mevcut"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Programcı hatası. Uygulama geçersiz veri gönderdi."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Uyumsuz sonuç"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Bu isimde bir anahtarlık yok."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Anahtarlığın kilidi zaten açılmış."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Giriş Anahtarlık Kilidini Kaldır"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Anahtarlığı açmak için giriş parolasını gir"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Bu bilgisayarda giriş yaptığınızda giriş anahtarlığınız kendiliğinden "
-"açılmadı."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Giriş Anahtarlığı Oluştur"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Giriş parolanızı girin"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Giriş anahtarlığınız bu bilgisayarda girdiğinizde kendiliğinden "
-"oluşturulamadı. Şimdi oluşturulacak."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Özel anahtarın kilidini kaldır"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Sertifikanın kilidini kaldır"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Genel anahtarın kilidini kaldır"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Kilidini kaldır"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Özel anahtarlık kilidini açmak için parola girin"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Sertifikanın kilidini açmak için parola girin"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Genel anahtarlık kilidini açmak için parola girin"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Kilidini açmak için parola girin"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Giriş yaptığımda özel anahtarın kendiliğinden kilidini aç."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Giriş yaptığımda sertifikanın kendiliğinden kilidini aç."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Giriş yaptığımda genel anahtarın kilidini aç."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Giriş yaptığımda bunun kendiliğinden kilidini aç"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama '%s' özel anahtarlığına ulaşmak istiyor, fakat "
-"anahtarlık kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama '%s' sertifikasına ulaşmak istiyor, fakat sertifika "
-"kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama '%s' genel anahtarlığın ulaşmak istiyor, fakat "
-"anahtarlık kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr ""
-"Bilinmeyen bir uygulama '%s' anahtarlığa ulaşmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr ""
-"Sistem '%s' özel anahtarlığını içeri aktarmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"Sistem '%s' sertifikasını içeri aktarmak istiyor, fakat sertifika kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr ""
-"Sistem '%s' genel anahtarlığını içeri aktarmak istiyor, fakat anahtarlık "
-"kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Sistem '%s' için içe aktarım istiyor, fakat o kilitli"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "'%s' için parolanın kilidini kaldır"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Tanınmamış ya da desteklenmeyen dosya."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Geçersiz yada bozuk dosya ayrıştırılamadı."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Parolalar şifrelenmeden depolansın mı?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Parolayı boş kullanmak seçildiğinde, depolanan parolalarınız güvenli olarak "
-"şifrelenmeyecek. Parolalarınıza dosyalarınıza erişebilen kişiler erişecek."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Güvenliksiz Depolama Kullan"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Konum:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Eski parola:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Parola:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "Parolayı _onayla:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Yeni parola gücü"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Parolalar eşleşmedi."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Parola boş olamaz"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Reddet"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Bir _Kereliğine İzin ver"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Herzaman İzin ver"
diff --git a/po/uk.po b/po/uk.po
deleted file mode 100644
index 24e35497..00000000
--- a/po/uk.po
+++ /dev/null
@@ -1,602 +0,0 @@
-# Ukrainian translation for gnome-keyring
-# Copyright (C) 2003 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Maxim Dzumanenko <dziumanenko@gmail.com>, 2004-2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-07 15:12+0200\n"
-"PO-Revision-Date: 2008-03-07 14:34+0200\n"
-"Last-Translator: Maxim Dzumanenko <dziumanenko@gmail.com>\n"
-"Language-Team: Ukrainian <uk@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Змінний диск: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Змінний диск"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Домашній каталог"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Відсутній диск чи пристрій, на якому зберігається цей файл"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Програма \"%s\" (%s) бажає отримати доступ до паролю для '<object "
-"prop='name'/>' у типовій в'язці ключів."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Програма \"%s\" (%s) бажає отримати доступ до паролю для '<object "
-"prop='name'/>' у в'язці ключів %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Програма \"%s\" бажає отримати доступ до паролю для '<object prop='name'/>' "
-"у типовій в'язці ключів."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Програма \"%s\" бажає отримати доступ до паролю для '<object prop='name'/>' "
-"у в'язці ключів %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Невідома програма бажає отримати доступ до паролю для '<object prop='name'/"
-">' у типовій в'язці ключів."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Невідома програма бажає отримати доступ до паролю для '<object prop='name'/"
-">' у в'язці ключів %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Дозволити доступ"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Дозволити програмам доступ до в'язки ключів?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Розблокуйте пароль для в'язки ключів %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Програма \"%s\" (%s) бажає отримати доступ до типової в'язки ключів, але "
-"вона заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Програма \"%s\" (%s) бажає отримати доступ до в'язки ключів \"%s\", але вона "
-"заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Програма \"%s\" бажає отримати доступ до типової в'язки ключів, але вона "
-"заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Програма \"%s\" бажає отримати доступ до в'язки ключів \"%s\", але вона "
-"заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Програма бажає отримати доступ до типової в'язки ключів, але вона заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Програма бажає отримати доступ до в'язки ключів \"%s\", але вона заблокована"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Введіть пароль для розблокування типової в'язки ключів"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Введіть пароль для розблокування в'язки ключів '%s'"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Розблокувати в'язку ключів"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Автоматично розблоковувати цю в'язку ключів, коли я входжу у сеанс."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" (%s) бажає створити нову в'язку ключів з назвою '%s'. "
-"Необхідно вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" (%s) бажає створити нову типову в'язку ключів. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" бажає створити нову в'язку ключів з назвою '%s'. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" бажає створити нову типову в'язку ключів. Необхідно вибрати "
-"пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Невідома програма бажає створити нову в'язку ключів з назвою '%s'. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Невідома програма бажає створити нову типову в'язку ключів. Необхідно "
-"вибрати пароль для в'язки."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Пароль для нової в'язки ключів"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Виберіть пароль для нової в'язки ключів"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" (%s) хоче змінити пароль в'язки ключів '%s'. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" (%s) бажає змінити пароль типової в'язки ключів. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" бажає змінити пароль в'язки ключів '%s'. Необхідно вибрати "
-"пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Програма \"%s\" бажає змінити пароль типової в'язки ключів. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Невідома програма бажає змінити пароль в'язки ключів '%s'. Необхідно вибрати "
-"пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Невідома програма бажає змінити пароль типової в'язки ключів. Необхідно "
-"вибрати пароль для в'язки."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Виберіть пароль для в'язки ключів '%s'."
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "Виберіть новий пароль для типової в'язки ключів."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Зміна паролю в'язки ключів"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програма \"%s\" (%s) бажає зберегти пароль, але типова в'язка ключів "
-"відсутня. Для створення в'язки необхідно вибрати пароль."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Програма \"%s\" бажає зберегти пароль, але типова в'язка ключів відсутня. "
-"Для створення в'язки необхідно вибрати пароль."
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Невідома програма бажає зберегти пароль, але типова в'язка ключів відсутня. "
-"Для створення в'язки необхідно вибрати пароль."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Створення типової в'язки ключів"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Виберіть пароль для типової в'язки ключів"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"Цей параметр вмикає компонент PKCS#11 служби gnome-keyring. Він діє "
-"лише при запущеному gnome-keyring-daemon, (наприклад: коли користувач "
-"входить у сеанс). Цей параметр можна перевизначити передаванням певних аргументів "
-"команді запуску служби."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"Цей параметр вмикає агента SSH служби gnome-keyring. Він діє "
-"лише при запущеному gnome-keyring-daemon, (наприклад: коли користувач "
-"входить у сеанс). Цей параметр можна перевизначити передаванням певних аргументів "
-"команді запуску служби."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Чи увімкнено компонент PKCS#11 служби gnome-keyring."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Чи увімкнено агента SSH служби gnome-keyring."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Доступ заборонено"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Не запущено програму The gnome-keyring-daemon."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Помилка при обміні з gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "В'язка з цією назвою вже існує"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Помилка програми: програма надіслала некоректні дані."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Немає відповідностей"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "В'язка з цією назвою не існує."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "В'язку ключів вже розблоковано."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Розблокувати в'язку ключів для входу"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Введіть реєстраційне ім'я для розблокування в'язки ключів"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"В'язку ключів для входу не було автоматично розблоковано при вашому вході у сеанс на цьому копм'ютері."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Створити в'язку ключів для входу"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Введіть пароль до в'язки ключів для входу"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"В'язку ключів для входу не було автоматично створено при вашому вході у сеанс на цьому копм'ютері. Тепер її створено."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Розблокувати приватний ключ"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Розблокувати сертифікат"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Розблокувати публічний ключ"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Розблокувати"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Введіть пароль для розблокування приватної в'язки ключів"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Введіть пароль для розблокування сертифікату"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Введіть пароль для розблокування публічного ключа"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Введіть пароль для розблокування"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Автоматично розблоковувати цю приватну в'язку ключів, коли я входжу у сеанс."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Автоматично розблоковувати цей сертифікат, коли я входжу у сеанс."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Автоматично розблоковувати цю публічну в'язку ключів, коли я входжу у сеанс."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Автоматично розблоковувати, коли я входжу у сеанс."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Програма бажає отримати доступ до приватної в'язки ключів \"%s\", але вона заблокована"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Програма бажає отримати доступ до сертифікату\"%s\", але він заблокований"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Програма бажає отримати доступ до публічної в'язки ключів \"%s\", але вона заблокована"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Програма бажає отримати доступ \"%s\", але він заблокований"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Система бажає імпортувати приватну в'язку ключів \"%s\", але вона заблокована"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr ""
-"Система бажає імпортувати сертифікат \"%s\", але він "
-"заблокований"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Система бажає імпортувати публічну в'язку ключів \"%s\", але вона "
-"заблокована"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Система бажає імпортувати \"%s\", але він "
-"заблокований"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Розблокуйте пароль для в'язки ключів %s"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "Нерозпізнаний чи непідтримуваний файл."
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "Не вдається розібрати некоректний чи пошкоджений файл."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Зберігати паролі незашифрованими?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"Використовуючи порожні паролі, ви зберігаєте паролі які неможливо зашифрувати безпечним чином. "
-"Вони будуть доступні будь-кому, хто має доступ до ваших файлів."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Використовувати небезпечне сховище"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Розташування:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "_Старий пароль:"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Пароль:"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "П_ідтвердження паролю:"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Міцність нового паролю"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Паролі не збігаються."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Пароль не може бути порожнім"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Заборонити"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Дозволити _одноразово"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "Дозволити _назавжди"
-
-
diff --git a/po/vi.po b/po/vi.po
deleted file mode 100644
index 0f0ce630..00000000
--- a/po/vi.po
+++ /dev/null
@@ -1,635 +0,0 @@
-# Vietnamese translation of Gnome Keyring.
-# Copyright © 2008 Gnome i18n Project for Vietnamese.
-# Nguyễn Thái Ngọc Duy <pclouds@vnlinux.org>, 2004,2008.
-# Clytie Siddall <clytie@riverland.net.au>, 2005-2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.21.4 TRUNK\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-14 23:37+0000\n"
-"PO-Revision-Date: 2008-03-23 16:41+0700\n"
-"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
-"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\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-Generator: LocFactoryEditor 1.7b1\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "Đĩa rời: %s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "Đĩa rời"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "Nhà"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:497 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "Tập tin này nằm trên một đĩa hay ổ không có"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn truy cập mật khẩu cho « <object prop='name'/> » "
-"trong vòng khóa mặc định."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn truy cập mật khẩu cho « <object prop='name'/> » "
-"trong %s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Ứng dụng « %s » muốn truy cập mật khẩu cho « <object prop='name'/> » trong "
-"vòng khóa mặc định."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Ứng dụng « %s » muốn truy cập mật khẩu cho « <object prop='name'/> » trong %"
-"s."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr ""
-"Ứng dụng lạ muốn truy cập mật khẩu cho « <object prop='name'/> » trong vòng "
-"khóa mặc định."
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr ""
-"Ứng dụng lạ muốn truy cập mật khẩu cho « <object prop='name'/> » trong %s."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "Cho phép truy xuất"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "Cho phép ứng dụng truy xuất vòng khóa chứ?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "Mở khoá mật khẩu cho vòng khóa %s"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Ứng dụng « %s » (%s) muốn truy cập vào vòng khóa mặc định, nhưng vòng đã bị "
-"khóa"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Ứng dụng « %s » (%s) muốn truy cập vào vòng khóa « %s », nhưng vòng đã bị "
-"khóa"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Ứng dụng « %s » muốn truy cập vào vòng khóa mặc định, nhưng vòng đã bị khóa"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Ứng dụng « %s » muốn truy cập vào vòng khóa « %s », nhưng vòng đã bị khóa"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Ứng dụng lạ muốn truy cập vào vòng khóa mặc định, nhưng vòng đã bị khóa"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "Ứng dụng lạ muốn truy cập vào vòng khóa « %s », nhưng vòng đã bị khóa"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "Hãy nhập mật khẩu cho vòng khóa mặc định để mở vòng khóa"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Hãy nhập mật khẩu cho vòng khóa « %s » để mở vòng khóa"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "Mở vòng"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "Tự động mở khoá vòng khoá này khi tôi đăng nhập."
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn tạo vòng khóa mới tên « %s ». Bạn phải chọn mật "
-"khẩu bạn muốn dùng để mở vòng khóa này."
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn tạo vòng khóa mặc định mới. Bạn phải chọn mật khẩu "
-"bạn muốn dùng để mở vòng khóa này."
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » muốn tạo vòng khóa mới tên « %s ». Bạn phải chọn mật khẩu "
-"bạn muốn dùng để mở vòng khóa này."
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » muốn tạo vòng khóa mặc định mới. Bạn phải chọn mật khẩu bạn "
-"muốn dùng để mở vòng khóa này."
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng lạ muốn tạo vòng khóa mới tên « %s ». Bạn phải chọn mật khẩu bạn "
-"muốn dùng để mở vòng khóa này."
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Ứng dụng lạ muốn tạo vòng khóa mặc định mới. Bạn phải chọn mật khẩu bạn muốn "
-"dùng để mở vòng khóa này."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "Mật khẩu vòng khóa mới"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "Hãy chọn mật khẩu cho vòng khóa mới"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn thay đổi mật khẫu cho vòng khoá « %s ». Bạn cần "
-"phải chọn mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn thay đổi mật khẫu cho vòng khoá mặc định. Bạn cần "
-"phải chọn mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » muốn thay đổi mật khẫu cho vòng khoá « %s ». Bạn cần phải "
-"chọn mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng « %s » muốn thay đổi mật khẫu cho vòng khoá mặc định. Bạn cần phải "
-"chọn mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng lạ muốn thay đổi mật khẫu cho vòng khoá « %s ». Bạn cần phải chọn "
-"mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Ứng dụng lạ muốn thay đổi mật khẫu cho vòng khoá mặc định. Bạn cần phải chọn "
-"mật khẩu cho nó."
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Chọn mật khẩu mới cho vòng khóa « %s ». "
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "Chọn mật khẩu mới cho vòng khóa mặc định. "
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "Đổi mật khẩu vòng khóa"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Ứng dụng « %s » (%s) muốn lưu mật khẩu, nhưng không có vòng khóa mặc định. "
-"Để tạo vòng, bạn cần chọn mật khẩu dùng để mở vòng khoá."
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Ứng dụng « %s » muốn lưu mật khẩu, nhưng không có vòng khóa mặc định. Để tạo "
-"vòng, bạn cần chọn mật khẩu dùng để mở vòng khoá."
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Ứng dụng lạ muốn lưu mật khẩu, nhưng không có vòng khóa mặc định. Để tạo "
-"vòng, bạn cần chọn mật khẩu dùng để mở vòng khoá."
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "Tạo vòng khoá mặc định"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "Chọn mật khẩu cho vòng khóa mặc định"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "Tuỳ chọn này bật thành phần PKCS#11 trong gnome-keyring daemon. Nó chỉ có tác dụng khi gnome-keyring-daemon hoạt động, (ví dụ: khi người dùng đăng nhập). Thiết lập này có thể bị ghi đè bằng đối số dòng lệnh truyền cho daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "Tuỳ chọn này bật SSH agent trong gnome-keyring daemon. Nó chỉ có tác dụng khi gnome-keyring-daemon hoạt động, (ví dụ: khi người dùng đăng nhập). Thiết lập này có thể bị ghi đè bằng đối số dòng lệnh truyền cho daemon."
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "Có bật thành phần gnome-keyring PKCS#11 hay không."
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "Có bật gnome-keyring SSH agent hay không."
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "Truy cập bị từ chối"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "Trình nền gnome-keyring-daemon chưa chạy."
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "Gặp lỗi khi liên lạc với trình nền gnome-keyring-daemon"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "Một vòng khoá tên đó đã có"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "Lỗi nhà lập trình: ứng dụng đã gửi dữ liệu không hợp lệ."
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "Không tìm thấy"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "Không có vòng khoá tên đó."
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "Vòng khoá đã được bỏ khoá."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "Gỡ khoá vòng khoá đăng nhập"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "Gõ mật khẩu đăng nhập để gỡ khoá vòng khoá"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"Vòng khoá đăng nhập của bạn đã không được gỡ khoá khi bạn đăng nhập vào máy "
-"tính này."
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "Tạo vòng khoá đăng nhập"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "Gõ mật khẩu đăng nhập"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"Vòng khoá đăng nhập của bạn đã không được tạo tự động khi bạn đăng nhập vào "
-"máy tính này. Nó sẽ được tạo ngay bây giờ."
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "Mở khoá cá nhân"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "Mở chứng nhận"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "Mở khoá công khai"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "Mở khoá"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "Gõ mật khẩu để mở khoá cá nhân"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "Gõ mật khẩu để mở chứng nhận"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "Gõ mật khẩu để mở khoá công khai"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "Gõ mật khẩu để gỡ khoá"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "Tự động mở khoá cá nhân này khi tôi đăng nhập."
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "Tự động mở chứng nhận này khi tôi đăng nhập."
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "Tự động mở khoá công khai này khi tôi đăng nhập."
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "Tự động mở khoá này khi tôi đăng nhập."
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "Ứng dụng muốn truy cập đến khoá cá nhân %s, nhưng nó đang bị khóa"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "Ứng dụng muốn truy cập đến chứng nhận %s, nhưng nó đang bị khóa"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "Ứng dụng muốn truy cập đến khoá công khai %s, nhưng nó đang bị khóa"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "Ứng dụng muốn truy cập đến « %s », nhưng nó bị khóa"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "Hệ thống muốn nhập khẩu khoá cá nhân '%s', nhưng nó đang bị khoá"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "Hệ thống muốn nhập khẩu khoá chứng nhận '%s', nhưng nó đang bị khoá"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "Hệ thống muốn nhập khẩu khoá công khai '%s', nhưng nó đang bị khoá"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "Hệ thống muốn nhập khẩu '%s', nhưng nó đang bị khoá"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "Mật khẩu mở khoá cho '%s'"
-
-#: ../pkix/gkr-pkix-parser.c:428
-msgid "Unrecognized or unsupported file."
-msgstr "Tập tin không được nhận dạng hay không được hỗ trợ."
-
-#: ../pkix/gkr-pkix-parser.c:432
-msgid "Could not parse invalid or corrupted file."
-msgstr "Không thể phân tích tập tin không hợp lệ hay tập tin bị hỏng."
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "Lưu mật khẩu không mật mã không?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "Dùng một mật khẩu trắng thì mật khẩu đã lưu sẽ không thể được mã hoá an toàn. Mọi người đều có thể truy cập vào tập tin của bạn."
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "Lưu không an toàn"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "_Vị trí:"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "Mật khẩu _cũ :"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "_Mật khẩu :"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "_Xác nhận mật khẩu :"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "Độ mạnh của mật khẩu mới"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "Hai mật khẩu không trùng."
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "Không cho phép mật khẩu trắng"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "Từ chối"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "Cho phép _một lần"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "_Luôn cho phép"
-
-#~ msgid "Unlock %s"
-#~ msgstr "Gỡ khoá %s"
-
-#~ msgid "Enter password for the %s to unlock"
-#~ msgstr "Hãy nhập mật khẩu cho %s để gỡ khoá"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "Không cho phép mật khẩu cũ rỗng."
-
-#~ msgid "Must be run from gnome-keyring\n"
-#~ msgstr "Phải chạy từ gnome-keyring\n"
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">Cái đo độ mạnh mật khẩu :</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr ""
-#~ "Ứng dụng « %s » (%s) muốn truy cập vào vòng khóa lạ, nhưng vòng đã bị khóa"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr ""
-#~ "Ứng dụng « %s » muốn truy cập vào vòng khóa lạ, nhưng vòng đã bị khóa"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "Ứng dụng lạ muốn truy cập vào vòng khóa lạ, nhưng vòng đã bị khóa"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr ""
-#~ "Ứng dụng « %s » (%s) muốn truy cập mật khẩu cho « %s » trong vòng khóa lạ."
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr ""
-#~ "Ứng dụng « %s » muốn truy cập mật khẩu cho « %s » trong vòng khóa lạ."
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "Ứng dụng lạ muốn truy cập mật khẩu cho « %s » trong vòng khóa lạ."
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "Bạn phải xác định kiểu yêu cầu cần chạy\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "Kiểu yêu cầu lạ\n"
diff --git a/po/xh.po b/po/xh.po
deleted file mode 100644
index ac1a5021..00000000
--- a/po/xh.po
+++ /dev/null
@@ -1,407 +0,0 @@
-# Xhosa translation of gnome-keyring
-# Copyright (C) 2005 Canonical Ltd.
-# This file is distributed under the same license as the gnome-keyring package.
-# Translation by Canonical Ltd <translations@canonical.com> with thanks to
-# Translation World CC in South Africa, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-08-18 20:49+0200\n"
-"PO-Revision-Date: 2005-02-22 20:36+0200\n"
-"Last-Translator: Canonical Ltd <translations@canonical.com>\n"
-"Language-Team: Xhosa <xh-translate@ubuntu.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../gnome-keyring-ask.c:241
-msgid "_Old password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:262
-msgid "_Password:"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:284
-msgid "_Confirm new password:"
-msgstr ""
-
-#. Strength bar:
-#: ../gnome-keyring-ask.c:303
-msgid "<span weight=\"bold\">Password strength meter:</span>"
-msgstr ""
-
-#: ../gnome-keyring-ask.c:329
-msgid "Old password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:340
-msgid "Password cannot be blank."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:348
-msgid "Passwords do not match."
-msgstr ""
-
-#: ../gnome-keyring-ask.c:407
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ufikelelo kumsesane wesitshixo wokumisela, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:411
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ufikelelo kumsesane wesitshixo we '%s', kodwa "
-"utshixiwe"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:416
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to an unknown keyring, but it is "
-"locked"
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ufikelelo kumsesane wesitshixo ongaziwayo, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:422 ../gnome-keyring-ask.c:436
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr ""
-"Inkqubo i '%s' ifuna ufikelelo kumsesane wesitshixo wokumisela, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:426 ../gnome-keyring-ask.c:441
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Inkqubo i '%s' ifuna ufikelelo kumsesane wesitshixo we '%s', kodwa utshixiwe"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:430 ../gnome-keyring-ask.c:446
-#, c-format
-msgid ""
-"The application '%s' wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Inkqubo i '%s' ifuna ufikelelo kumsesane wesitshixo ongaziwayo, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:452
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr ""
-"Inkqubo engaziwayo ifuna ufikelelo kumsesane wesitshixo wokumisela, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:456
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr ""
-"Inkqubo engaziwayo ifuna ufikelelo kumsesane wesitshixo we '%s', kodwa "
-"utshixiwe"
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:461
-msgid ""
-"An unknown application wants access to an unknown keyring, but it is locked"
-msgstr ""
-"Inkqubo engaziwayo ifuna ufikelelo kumsesane wesitshixo ongaziwayo, kodwa "
-"utshixiwe"
-
-#: ../gnome-keyring-ask.c:468
-msgid "Enter password for default keyring to unlock"
-msgstr "Ngenisa i-password ukwenzela ukuba umsesane wesitshixo uvuleke"
-
-#: ../gnome-keyring-ask.c:470
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "Ngenisa i-password ukwenzela ukuba umsesane wesitshixo we '%s' uvuleke"
-
-#: ../gnome-keyring-ask.c:474
-msgid "Unlock Keyring"
-msgstr "Vula Umsesane wesitshixo"
-
-#: ../gnome-keyring-ask.c:479 ../gnome-keyring-ask.c:563
-#: ../gnome-keyring-ask.c:655 ../gnome-keyring-ask.c:711
-#: ../gnome-keyring-ask.c:798
-msgid "_Deny"
-msgstr "_Yala"
-
-#: ../gnome-keyring-ask.c:517
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukudala umsesane omtsha wesitshixo obizwa ngokuba "
-"yi '%s'. Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:521
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:527 ../gnome-keyring-ask.c:537
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' ifuna ukudala umsesane omtsha wesitshixo obizwa ngokuba yi '%"
-"s'. Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:531 ../gnome-keyring-ask.c:541
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' ifuna ukudala umsesane omtsha wesitshixo wokumisela. Kufuneka "
-"ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:547
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukudala umsesane omtsha wesitshixo obizwa ngokuba "
-"yi '%s'. Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:551
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:558
-msgid "New Keyring Password"
-msgstr "i-Password Entsha Yomsesane wesitshixo"
-
-#: ../gnome-keyring-ask.c:559
-msgid "Choose password for new keyring"
-msgstr "Khetha i-password usenzela umsesane omtsha wesitshixo"
-
-#: ../gnome-keyring-ask.c:602
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:606
-#, fuzzy, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:612 ../gnome-keyring-ask.c:622
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' ifuna ukudala umsesane omtsha wesitshixo wokumisela. Kufuneka "
-"ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:616 ../gnome-keyring-ask.c:626
-#, fuzzy, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo i '%s' ifuna ukudala umsesane omtsha wesitshixo wokumisela. Kufuneka "
-"ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:632
-#, fuzzy, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:636
-#, fuzzy
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukudala umsesane omtsha wesitshixo wokumisela. "
-"Kufuneka ukhethe i-password ofuna ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:643
-#, fuzzy, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "Khetha i-password usenzela umsesane omtsha wesitshixo"
-
-#: ../gnome-keyring-ask.c:645
-#, fuzzy
-msgid "Choose a new password for the default keyring. "
-msgstr "Khetha i-password yomsesane wesitshixo wokumisela"
-
-#: ../gnome-keyring-ask.c:650
-#, fuzzy
-msgid "Change Keyring Password"
-msgstr "i-Password Entsha Yomsesane wesitshixo"
-
-#: ../gnome-keyring-ask.c:689
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukugcina i-password, kodwa awukho umsesane "
-"wesitshixo wokumisela. Ukudala omnye, kufuneka ukhethe i-password onqwenela "
-"ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:693 ../gnome-keyring-ask.c:697
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Inkqubo i '%s' ifuna ukugcina i-password, kodwa akukho msesane wesitshixo "
-"wokumisela. Ukudala omnye, kufuneka ukhethe i-password onqwenela "
-"ukuyisebenzela wona."
-
-#. app == APPLICATION_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:701
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukugcina i-password, koda akukho msesane wesitshixo "
-"wokumisela. Ukudala omnye, kufuneka ukhethe i-password onqwenela "
-"ukuyisebenzisela wona."
-
-#: ../gnome-keyring-ask.c:706
-msgid "Create Default Keyring"
-msgstr "Dala Umsesane wesitshixo Wokumisela"
-
-#: ../gnome-keyring-ask.c:707
-msgid "Choose password for default keyring"
-msgstr "Khetha i-password yomsesane wesitshixo wokumisela"
-
-#: ../gnome-keyring-ask.c:747
-msgid "Allow application access to keyring?"
-msgstr "Uvumela ufikelelo lwenkqubo ukuya kumsesane wesitshixo?"
-
-#: ../gnome-keyring-ask.c:750
-#, c-format
-msgid "The application '%s' (%s) wants to access the password for '%s' in %s."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukufikelela kwi-password isenzela i '%s' kwi %s."
-
-#: ../gnome-keyring-ask.c:753
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in the "
-"default keyring."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"wesitshixo wokumisela."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:756
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '%s' in an "
-"unknown keyring."
-msgstr ""
-"Inkqubo i '%s' (%s) ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"wesitshixo ongaziwayo."
-
-#: ../gnome-keyring-ask.c:761 ../gnome-keyring-ask.c:772
-#, c-format
-msgid "The application '%s' wants to access the password for '%s' in %s."
-msgstr "Inkqubo i '%s' ifuna ukufikelela kwi-password isenzela i '%s' kwi %s."
-
-#: ../gnome-keyring-ask.c:764 ../gnome-keyring-ask.c:775
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Inkqubo i '%s' ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"wesitshixo wokumisela."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:767 ../gnome-keyring-ask.c:778
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Inkqubo i '%s' ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"westshixo ongaziwayo."
-
-#: ../gnome-keyring-ask.c:783
-#, c-format
-msgid "An unknown application wants to access the password for '%s' in %s."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukufikelela kwi-password isenzela i '%s' kwi %s."
-
-#: ../gnome-keyring-ask.c:786
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in the default "
-"keyring."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"wesitshixo wokumisela."
-
-#. keyring == KEYRING_NAME_UNKNOWN
-#: ../gnome-keyring-ask.c:789
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '%s' in an unknown "
-"keyring."
-msgstr ""
-"Inkqubo engaziwayo ifuna ukufikelela kwi-password isenzela i '%s' kumsesane "
-"wesitshixo ongaziwayo."
-
-#: ../gnome-keyring-ask.c:794
-msgid "Allow access"
-msgstr "Vumela ufikelelo"
-
-#: ../gnome-keyring-ask.c:799
-msgid "Allow _Once"
-msgstr "Vumela _Kanye"
-
-#: ../gnome-keyring-ask.c:800
-msgid "_Always Allow"
-msgstr "Vumela _Rhoqo"
-
-#: ../gnome-keyring-ask.c:840
-msgid "You must specify the type of request to run\n"
-msgstr "Kufuneka ubalule uhlobo lwesicelo lokuphumeza\n"
-
-#: ../gnome-keyring-ask.c:857
-msgid "Unknown request type\n"
-msgstr "Uhlobo lwesicelo olungaziwayo\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
deleted file mode 100644
index 5f57aed6..00000000
--- a/po/zh_CN.po
+++ /dev/null
@@ -1,591 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2003 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnome-keyring package.
-# Neo Willis <willis@linux.net>, 2003.
-# QA and Edited by Funda Wang <fundawang@linux.net.cn>, 2004
-# Wang Jian <lark@linux.net.cn>, 2005.
-# YangZhang <zyangmath@gmail.com>, 2008
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-02-14 23:37+0000\n"
-"PO-Revision-Date: 2008-02-26 18:46+0800\n"
-"Last-Translator: YangZhang <zyangmath@gmail.com>\n"
-"Language-Team: zh_CN <i18n-translation@lists.linux.net.cn>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "可移动磁盘:%s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "可移动磁盘"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "家目录"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:497 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "此文件所在的磁盘或驱动器不存在"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "应用程序“%s”(%s)想要访问默认密钥环中的“<object prop='name'/>”的密码。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "应用程序“%s”(%s)想要访问 %s 中“<object prop='name'/>”的密码。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "应用程序“%s”想要访问默认密钥环中“<object prop='name'/>”的密码。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "应用程序“%s”想要访问 %s 中“<object prop='name'/>”的密码。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "一个未知程序想要访问默认密钥环中“<object prop='name'/>”的密码。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "一个未知程序想要访问 %s 中“<object prop='name'/>”的密码。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "允许访问"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "允许应用程序访问密钥环吗?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "%s 密钥环的解锁密码"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "应用程序“%s”(%s)想要访问默认密钥环,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "应用程序“%s”(%s)想要访问密钥环“%s”,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "应用程序“%s”想要访问默认密钥环,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "应用程序“%s”想要访问密钥环“%s”,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:399
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "未知应用程序想要访问默认密钥环,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "未知应用程序想要访问密钥环“%s”,但该密钥环已上锁"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "要解锁,请输入默认密钥环的密码"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "要解锁,请输入密钥环“%s”的密码"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "解锁密钥环"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "当我登入时自动解锁此密钥环。"
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr ""
-"应用程序“%s”(%s)想要创建名为“%s”的新密钥环。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "应用程序“%s”(%s)想要创建新的默认密钥环。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr "应用程序“%s”想要创建名为“%s”的新密钥环。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "应用程序“%s”想要创建新的默认密钥环。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr "未知应用程序想要创建名为“%s”的新密钥环。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:498
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "未知应用程序想要创建新的默认密钥环。您必须为该密钥环选择一个密码。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "新密钥环的密码"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "选择新密钥环的密码"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr ""
-"应用程序“%s”(%s)想要更改“%s”密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr ""
-"应用程序“%s”(%s)想要更改默认密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "应用程序“%s”想要更改“%s”密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "应用程序“%s”想要更改默认密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "未知应用程序想要更改“%s”密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:586
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "未知应用程序想要更改默认密钥环的密码。您必须为该密钥环选择一个密码。"
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "为“%s”密钥环选择新密码。"
-
-#: ../daemon/gkr-daemon-ops.c:598
-msgid "Choose a new password for the default keyring. "
-msgstr "为默认密钥环选择新密码。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "更改密钥环密码"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"应用程序“%s”(%s)想要存储密码,但尚没有默认的密钥环。若要创建默认的密钥环,请"
-"为其输入密码。"
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"应用程序“%s”想要存储密码,但尚没有默认的密钥环。若要创建默认的密钥环,请为其"
-"输入密码。"
-
-#: ../daemon/gkr-daemon-ops.c:684
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"未知应用程序想要存储密码,但尚没有默认的密钥环。若要创建默认的密钥环,请为其"
-"输入密码。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "创建默认密钥环"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "选择默认密钥环的密码"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"此选项启用 gnome-keyring 守护进程的 PKCS#11 组件。它仅在"
-" gnome-keyring-daemon 启动时生效(即用户登入时)。当一些特"
-"定的命令行参数传给守护进程时,此设定可以被覆盖。"
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"此选项启用 gnome-keyring 守护进程的 SSH 代理。它仅在"
-" gnome-keyring-daemon 启动时生效(即用户登入时)。当一些特"
-"定的命令行参数传给守护进程时,此设定可以被覆盖。"
-
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "是否启用 gnome-keyring PKCS#11 组件"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "是否启用 gnome-keyring SSH 代理"
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "访问被拒绝"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon 应用程序没有运行。"
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "与 gnome-keyring-daemon 通信出错"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "已存在一个同名的密钥环"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "程序员错误:应用程序发送了非法数据。"
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "无匹配结果"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "不存在此名称对应的密钥环"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "密钥环已被解锁。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "解锁登录密钥环"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "输入登录密码以解锁密钥环"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr ""
-"您登录到此计算机时,您的登录密钥环未被自动解锁。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "创建登录密钥环"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "输入您的登录密码"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr ""
-"您登录到此计算机时,您的登录密钥环未被自动创建。现在创建它。"
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "解锁私钥"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "解锁证书"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "解锁公钥"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "解锁"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "输入密码以解锁私钥"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "输入密码以解锁证书"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "输入密码以解锁公钥"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "输入密锁以解除锁定"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "当我登入时自动解锁此私钥。"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "当我登入时自动解锁此证书。"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "当我登入时自动解锁此公钥。"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "当我登入时自动解除此锁定。"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "一个应用程序想要访问私钥‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "一个应用程序想要访问证书‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "一个应用程序想要访问公钥‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "一个应用程序获取对‘%s’的访问,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "系统想要导入私钥‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "系统想要导入证书‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "系统想要导入公钥‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "系统想要导入‘%s’,但它已被锁定"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "‘%s’的解锁密码"
-
-#: ../pkix/gkr-pkix-parser.c:428
-msgid "Unrecognized or unsupported file."
-msgstr "未识别的或不被支持的文件。"
-
-#: ../pkix/gkr-pkix-parser.c:432
-msgid "Could not parse invalid or corrupted file."
-msgstr "无法解析非法的或已损坏的文件。"
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "以不加密方式储存密码吗?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"使用空白密码,您所储存的密码将不会被安全地加密。它们可由"
-"能访问您的文件的任何人访问到。"
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "使用不安全的存储器"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "位置(_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "旧密码(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "密码(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "确认密码(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "新密码强度"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "密码不匹配。"
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "密码不能为空"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "禁止"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "允许一次(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "总是允许(_A)"
-
-#~ msgid "Old password cannot be blank."
-#~ msgstr "旧密码不能为空。"
-
-#~ msgid "<span weight=\"bold\">Password strength meter:</span>"
-#~ msgstr "<span weight=\"bold\">密码长度测量:</span>"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "应用程序“%s”(%s)想要访问未知密钥环,但该密钥环已上锁"
-
-#~ msgid ""
-#~ "The application '%s' wants access to an unknown keyring, but it is locked"
-#~ msgstr "应用程序“%s”想要访问未知密钥环,但该密钥环已上锁"
-
-#~ msgid ""
-#~ "An unknown application wants access to an unknown keyring, but it is "
-#~ "locked"
-#~ msgstr "未知应用程序想要访问未知密钥环,但该密钥环已上锁"
-
-#~ msgid ""
-#~ "The application '%s' (%s) wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "应用程序“%s”(%s)想要访问未知密钥环中“%s”的密码。"
-
-#~ msgid ""
-#~ "The application '%s' wants to access the password for '%s' in an unknown "
-#~ "keyring."
-#~ msgstr "应用程序“%s”想要访问未知密钥环中“%s”的密码。"
-
-#~ msgid ""
-#~ "An unknown application wants to access the password for '%s' in an "
-#~ "unknown keyring."
-#~ msgstr "一个未知程序想要访问未知密钥环中“%s”的密码。"
-
-#~ msgid "You must specify the type of request to run\n"
-#~ msgstr "您必须指定要执行的请求类型\n"
-
-#~ msgid "Unknown request type\n"
-#~ msgstr "未知的请求类型\n"
diff --git a/po/zh_HK.po b/po/zh_HK.po
deleted file mode 100644
index 6eda96ae..00000000
--- a/po/zh_HK.po
+++ /dev/null
@@ -1,533 +0,0 @@
-# Chinese (Hong Kong) translation of gnome-keyring.
-# Copyright (C) 2004-06 Free Software Foundation, Inc.
-# Woodman Tuen <wmtuen@gmail.com>, 2004-2006
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.21.91\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-09 20:00+0800\n"
-"PO-Revision-Date: 2008-03-09 20:07+0800\n"
-"Last-Translator: Woodman Tuen <wmtuen@gmail.com>\n"
-"Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "可攜式磁碟:%s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "可攜式磁碟"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "家"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "這個檔案所在的磁碟或裝置尚未掛載"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "程式‘%s’(%s) 要求存取在預設密碼匙圈中的‘<object prop='name'/>’密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "程式 ‘%s’(%s) 要求存取在‘%s’中‘<object prop='name'/>’的密碼 。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "程式‘%s’要求存取在預設密碼匙圈中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "程式‘%s’要求存取在‘%s’中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "一個不明的程式要求存取在預設密碼匙圈中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "一個不明的程式要求存取在‘%s’中‘<object prop='name'/>’的密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "允許存取"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "允許程式存取密碼匙圈?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "解鎖 %s 密碼匙圈的密碼"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "程式‘%s’(%s) 要求存取預設密碼匙圈,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "程式‘%s’(%s) 要求存取密碼匙圈‘%s’,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "程式‘%s’要求存取預設密碼匙圈,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "程式 ‘%s’要求存取密碼匙圈‘%s’,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "一個不明的程式要求存取預設密碼匙圈,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "一個不明的程式要求存取密碼匙圈‘%s’,但該密碼匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "輸入預設密碼匙圈的密碼,作為開鎖之用"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "輸入密碼匙圈‘%s’的密碼,作為開鎖之用"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "解開密碼匙圈"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "當我登入時自動解鎖密碼匙圈。"
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求新增一個密碼匙圈,名為:‘%s’。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求新增一個預設密碼匙圈。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr "程式‘%s’要求新增一個密碼匙圈,名為:‘%s’。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "程式 ‘%s’要求新增一個預設密碼匙圈。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr "不明的程式要求建立一個新的密碼匙圈,名為:‘%s’。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "不明的程式要求建立一個預設密碼匙圈。你需要給它選用一個密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "新增密碼匙圈密碼"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "輸入新密碼匙圈的密碼"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求更改密碼匙圈‘%s’的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求更改預設密碼匙圈的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "程式 ‘%s’要求更改密碼匙圈‘%s’的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "程式 ‘%s’要求更改預設密碼匙圈的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "一個不明的程式要求更改密碼匙圈‘%s’的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "一個不明的程式要求更改預設密碼匙圈的密碼。你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "給‘%s’匙圈選用一個新的密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "給預設密碼匙圈選用一個新的密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "更改密碼匙圈密碼"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr "程式‘%s’(%s) 要求儲存一個密碼,但是這裏並沒有預設密碼匙圈。要新增一個預設密碼匙圈,你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr "程式‘%s’要求儲存一個密碼,但是這裏並沒有預設密碼匙圈。要新增一個預設密碼匙圈,你需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr "不明的程式要求儲存一個密碼,但是這裏並沒有預設密碼匙圈。要新增一個預設密碼匙圈,你需要給它選用一個密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "建立預設密碼匙圈"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "輸入預設密碼匙圈的密碼"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr "這個選項會啟用 gnome-keyring 伺服程式中的 PKCS#11 元件。它只會在 gnome-keyring-daemon 啟動時生效,(例如使用者登入時)。這個設定值在傳送某些命令列引數給伺服程式時可能會被覆蓋。"
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr "這個選項會啟用 gnome-keyring 伺服程式中的 SSH 代理程式。它只會在 gnome-keyring-daemon 啟動時生效,(例如使用者登入時)。這個設定值在傳送某些命令列引數給伺服程式時可能會被覆蓋。"
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "是否啟用 gnome-keyring PKCS#11 元件。"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "是否啟用 gnome-keyring SSH 代理程式。"
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "拒絕存取"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon 程式尚未執行。"
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "與 gnome-keyring-daemon 溝通發生錯誤"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "以該名稱為名的密碼匙圈已經存在"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "程式設計師的錯誤:該應用程式送出無效的資料。"
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "沒有相符的結果"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "以此為名的密碼匙圈並不存在。"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "此密碼匙圈已經被解鎖了。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "解開登入密碼匙圈"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "輸入解鎖密碼匙圈的登入密碼"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "你的登入密碼匙圈並未在登入這台電腦時自動解鎖。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "建立登入密碼匙圈"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "輸入你的登入密碼"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "你的登入密碼匙圈並未在登入這台電腦時自動建立。現在將會建立它。"
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "解鎖私密密碼匙"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "解鎖證書"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "解鎖公開密碼匙"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "解鎖"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "輸入解鎖私密密碼匙的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "輸入解鎖證書的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "輸入解鎖公開密碼匙的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "輸入解鎖的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "當我登入時自動解鎖私密密碼匙。"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "當我登入時自動解鎖證書。"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "當我登入時自動解鎖公開密碼匙。"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "當我登入時自動解鎖此項"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "一個程式要求存取私密密碼匙‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "一個程式要求存取證書‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "一個程式要求存取公開密碼匙‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "一個不明的程式要求存取‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "系統要求匯入私密密碼匙‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "系統要求匯入證書‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "系統要求匯入公開密碼匙‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "系統要求匯入‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "‘%s’的解鎖密碼"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "無法辨識或不支援的檔案。"
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "無法解析無效或損毀的檔案。"
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "是否儲存不加密的密碼?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr "若選擇使用空白密碼,你所儲存的密碼將不會被安全的加密。任何能存取你的檔案的人都將能看到這些密碼。"
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "使用不安全的儲存"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "位置(_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "舊密碼(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "密碼(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "確認新密碼(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "新密碼的強度"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "密碼不相符。"
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "密碼不能空白"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "禁止"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "只允許一次(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "永遠允許(_A)"
-
diff --git a/po/zh_TW.po b/po/zh_TW.po
deleted file mode 100644
index 5d63e129..00000000
--- a/po/zh_TW.po
+++ /dev/null
@@ -1,547 +0,0 @@
-# Chinese (Taiwan) translation of gnome-keyring.
-# Copyright (C) 2004-06 Free Software Foundation, Inc.
-# Woodman Tuen <wmtuen@gmail.com>, 2004-2006
-#
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-keyring 2.21.91\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-09 20:00+0800\n"
-"PO-Revision-Date: 2008-03-09 20:07+0800\n"
-"Last-Translator: Woodman Tuen <wmtuen@gmail.com>\n"
-"Language-Team: Chinese (Taiwan) <community@linuxhall.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit"
-
-#: ../common/gkr-location.c:306
-#, c-format
-msgid "Removable Disk: %s"
-msgstr "可攜式磁碟:%s"
-
-#: ../common/gkr-location.c:308
-msgid "Removable Disk"
-msgstr "可攜式磁碟"
-
-#: ../common/gkr-location.c:446 ../common/gkr-location.c:458
-msgid "Home"
-msgstr "家"
-
-#: ../common/gkr-location.c:980 ../common/gkr-location.c:1003
-#: ../pkix/gkr-pkix-parser.c:514 ../pkix/gkr-pkix-serialize.c:58
-msgid "The disk or drive this file is located on is not present"
-msgstr "這個檔案所在的磁碟或裝置尚未掛載"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:222
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in the default keyring."
-msgstr "程式‘%s’(%s) 要求存取在預設鑰匙圈中的‘<object prop='name'/>’密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:226
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to access the password for '<object "
-"prop='name'/>' in %s."
-msgstr "程式 ‘%s’(%s) 要求存取在‘%s’中‘<object prop='name'/>’的密碼 。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:232 ../daemon/gkr-daemon-ops.c:242
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "程式‘%s’要求存取在預設鑰匙圈中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:236 ../daemon/gkr-daemon-ops.c:246
-#, c-format
-msgid ""
-"The application '%s' wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "程式‘%s’要求存取在‘%s’中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:252
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in the default keyring."
-msgstr "一個不明的程式要求存取在預設鑰匙圈中‘<object prop='name'/>’的密碼。"
-
-#. TRANSLATORS: Don't translate text in markup (ie: HTML or XML tags)
-#: ../daemon/gkr-daemon-ops.c:255
-#, c-format
-msgid ""
-"An unknown application wants to access the password for '<object prop='name'/"
-">' in %s."
-msgstr "一個不明的程式要求存取在‘%s’中‘<object prop='name'/>’的密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow access"
-msgstr "允許存取"
-
-#: ../daemon/gkr-daemon-ops.c:261
-msgid "Allow application access to keyring?"
-msgstr "允許程式存取鑰匙圈?"
-
-#: ../daemon/gkr-daemon-ops.c:311
-#, c-format
-msgid "Unlock password for %s keyring"
-msgstr "解鎖 %s 鑰匙圈的密碼"
-
-#: ../daemon/gkr-daemon-ops.c:368
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the default keyring, but it is "
-"locked"
-msgstr "程式‘%s’(%s) 要求存取預設鑰匙圈,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:372
-#, c-format
-msgid ""
-"The application '%s' (%s) wants access to the keyring '%s', but it is locked"
-msgstr "程式‘%s’(%s) 要求存取鑰匙圈‘%s’,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:378 ../daemon/gkr-daemon-ops.c:388
-#, c-format
-msgid ""
-"The application '%s' wants access to the default keyring, but it is locked"
-msgstr "程式‘%s’要求存取預設鑰匙圈,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:382 ../daemon/gkr-daemon-ops.c:393
-#, c-format
-msgid "The application '%s' wants access to the keyring '%s', but it is locked"
-msgstr "程式 ‘%s’要求存取鑰匙圈‘%s’,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:399
-#, c-format
-msgid ""
-"An unknown application wants access to the default keyring, but it is locked"
-msgstr "一個不明的程式要求存取預設鑰匙圈,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:403
-#, c-format
-msgid ""
-"An unknown application wants access to the keyring '%s', but it is locked"
-msgstr "一個不明的程式要求存取鑰匙圈‘%s’,但該鑰匙圈已被鎖上"
-
-#: ../daemon/gkr-daemon-ops.c:410
-msgid "Enter password for default keyring to unlock"
-msgstr "輸入預設鑰匙圈的密碼,作為開鎖之用"
-
-#: ../daemon/gkr-daemon-ops.c:412
-#, c-format
-msgid "Enter password for keyring '%s' to unlock"
-msgstr "輸入鑰匙圈‘%s’的密碼,作為開鎖之用"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:416
-msgid "Unlock Keyring"
-msgstr "解開鑰匙圈"
-
-#: ../daemon/gkr-daemon-ops.c:428
-msgid "Automatically unlock this keyring when I log in."
-msgstr "當我登入時自動解鎖鑰匙圈。"
-
-#: ../daemon/gkr-daemon-ops.c:464
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new keyring called '%s'. You "
-"have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求新增一個鑰匙圈,名為:‘%s’。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:468
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求新增一個預設鑰匙圈。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:474 ../daemon/gkr-daemon-ops.c:484
-#, c-format
-msgid ""
-"The application '%s' wants to create a new keyring called '%s'. You have to "
-"choose the password you want to use for it."
-msgstr "程式‘%s’要求新增一個鑰匙圈,名為:‘%s’。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:478 ../daemon/gkr-daemon-ops.c:488
-#, c-format
-msgid ""
-"The application '%s' wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "程式 ‘%s’要求新增一個預設鑰匙圈。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:494
-#, c-format
-msgid ""
-"An unknown application wants to create a new keyring called '%s'. You have "
-"to choose the password you want to use for it."
-msgstr "不明的程式要求建立一個新的鑰匙圈,名為:‘%s’。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:498
-#, c-format
-msgid ""
-"An unknown application wants to create a new default keyring. You have to "
-"choose the password you want to use for it."
-msgstr "不明的程式要求建立一個預設鑰匙圈。您需要給它選用一個密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:504
-msgid "New Keyring Password"
-msgstr "新增鑰匙圈密碼"
-
-#: ../daemon/gkr-daemon-ops.c:505
-msgid "Choose password for new keyring"
-msgstr "輸入新鑰匙圈的密碼"
-
-#: ../daemon/gkr-daemon-ops.c:552
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求更改鑰匙圈‘%s’的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:556
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to change the password for the default "
-"keyring. You have to choose the password you want to use for it."
-msgstr "程式‘%s’(%s) 要求更改預設鑰匙圈的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:562 ../daemon/gkr-daemon-ops.c:572
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the '%s' keyring. You "
-"have to choose the password you want to use for it."
-msgstr "程式 ‘%s’要求更改鑰匙圈‘%s’的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:566 ../daemon/gkr-daemon-ops.c:576
-#, c-format
-msgid ""
-"The application '%s' wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "程式 ‘%s’要求更改預設鑰匙圈的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:582
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the '%s' keyring. "
-"You have to choose the password you want to use for it."
-msgstr "一個不明的程式要求更改鑰匙圈‘%s’的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:586
-#, c-format
-msgid ""
-"An unknown application wants to change the password for the default keyring. "
-"You have to choose the password you want to use for it."
-msgstr "一個不明的程式要求更改預設鑰匙圈的密碼。您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:596
-#, c-format
-msgid "Choose a new password for the '%s' keyring. "
-msgstr "給‘%s’匙圈選用一個新的密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:598
-#, c-format
-msgid "Choose a new password for the default keyring. "
-msgstr "給預設鑰匙圈選用一個新的密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:602
-msgid "Change Keyring Password"
-msgstr "更改鑰匙圈密碼"
-
-#: ../daemon/gkr-daemon-ops.c:672
-#, c-format
-msgid ""
-"The application '%s' (%s) wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"程式‘%s’(%s) 要求儲存一個密碼,但是這裡並沒有預設鑰匙圈。要新增一個預設鑰匙"
-"圈,您需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:676 ../daemon/gkr-daemon-ops.c:680
-#, c-format
-msgid ""
-"The application '%s' wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"程式‘%s’要求儲存一個密碼,但是這裡並沒有預設鑰匙圈。要新增一個預設鑰匙圈,您"
-"需要給它選用一個密碼。"
-
-#: ../daemon/gkr-daemon-ops.c:684
-#, c-format
-msgid ""
-"An unknown application wants to store a password, but there is no default "
-"keyring. To create one, you need to choose the password you wish to use for "
-"it."
-msgstr ""
-"不明的程式要求儲存一個密碼,但是這裡並沒有預設鑰匙圈。要新增一個預設鑰匙圈,"
-"您需要給它選用一個密碼。"
-
-#. And put together the ask request
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Create Default Keyring"
-msgstr "建立預設鑰匙圈"
-
-#: ../daemon/gkr-daemon-ops.c:689
-msgid "Choose password for default keyring"
-msgstr "輸入預設鑰匙圈的密碼"
-
-#: ../data/gnome-keyring.schemas.in.h:1
-msgid ""
-"This option enables the PKCS#11 component in the gnome-keyring daemon. It "
-"only takes effect as gnome-keyring-daemon starts, (ie: when the user logs "
-"in). This setting may be overridden when certain command line arguments are "
-"passed to the daemon."
-msgstr ""
-"這個選項會啟用 gnome-keyring 伺服程式中的 PKCS#11 元件。它只會在 gnome-"
-"keyring-daemon 啟動時生效,(例如使用者登入時)。這個設定值在傳送某些命令列引數"
-"給伺服程式時可能會被覆蓋。"
-
-#: ../data/gnome-keyring.schemas.in.h:2
-msgid ""
-"This option enables the SSH agent in the gnome-keyring daemon. It only takes "
-"effect as gnome-keyring-daemon starts, (ie: when the user logs in). This "
-"setting may be overridden when certain command line arguments are passed to "
-"the daemon."
-msgstr ""
-"這個選項會啟用 gnome-keyring 伺服程式中的 SSH 代理程式。它只會在 gnome-"
-"keyring-daemon 啟動時生效,(例如使用者登入時)。這個設定值在傳送某些命令列引數"
-"給伺服程式時可能會被覆蓋。"
-
-#: ../data/gnome-keyring.schemas.in.h:3
-msgid "Whether the gnome-keyring PKCS#11 component is enabled."
-msgstr "是否啟用 gnome-keyring PKCS#11 元件。"
-
-#: ../data/gnome-keyring.schemas.in.h:4
-msgid "Whether the gnome-keyring SSH agent is enabled."
-msgstr "是否啟用 gnome-keyring SSH 代理程式。"
-
-#: ../library/gnome-keyring-utils.c:91
-msgid "Access Denied"
-msgstr "拒絕存取"
-
-#: ../library/gnome-keyring-utils.c:93
-msgid "The gnome-keyring-daemon application is not running."
-msgstr "gnome-keyring-daemon 程式尚未執行。"
-
-#: ../library/gnome-keyring-utils.c:95
-msgid "Error communicating with gnome-keyring-daemon"
-msgstr "與 gnome-keyring-daemon 溝通發生錯誤"
-
-#: ../library/gnome-keyring-utils.c:97
-msgid "A keyring with that name already exists"
-msgstr "以該名稱為名的鑰匙圈已經存在"
-
-#: ../library/gnome-keyring-utils.c:99
-msgid "Programmer error: The application sent invalid data."
-msgstr "程式設計師的錯誤:該應用程式送出無效的資料。"
-
-#: ../library/gnome-keyring-utils.c:101
-msgid "No matching results"
-msgstr "沒有相符的結果"
-
-#: ../library/gnome-keyring-utils.c:103
-msgid "A keyring with that name does not exist."
-msgstr "以此為名的鑰匙圈並不存在。"
-
-#: ../library/gnome-keyring-utils.c:110
-msgid "The keyring has already been unlocked."
-msgstr "此鑰匙圈已經被解鎖了。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Unlock Login Keyring"
-msgstr "解開登入鑰匙圈"
-
-#: ../keyrings/gkr-keyring-login.c:98
-msgid "Enter login password to unlock keyring"
-msgstr "輸入解鎖鑰匙圈的登入密碼"
-
-#: ../keyrings/gkr-keyring-login.c:100
-msgid ""
-"Your login keyring was not automatically unlocked when you logged into this "
-"computer."
-msgstr "您的登入鑰匙圈並未在登入這台電腦時自動解鎖。"
-
-#. And put together the ask request
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Create Login Keyring"
-msgstr "建立登入鑰匙圈"
-
-#: ../keyrings/gkr-keyring-login.c:124
-msgid "Enter your login password"
-msgstr "輸入您的登入密碼"
-
-#: ../keyrings/gkr-keyring-login.c:126
-msgid ""
-"Your login keyring was not automatically created when you logged into this "
-"computer. It will now be created."
-msgstr "您的登入鑰匙圈並未在登入這台電腦時自動建立。現在將會建立它。"
-
-#: ../pk/gkr-pk-object-storage.c:99
-msgid "Unlock private key"
-msgstr "解鎖私密金鑰"
-
-#: ../pk/gkr-pk-object-storage.c:101
-msgid "Unlock certificate"
-msgstr "解鎖憑證"
-
-#: ../pk/gkr-pk-object-storage.c:103
-msgid "Unlock public key"
-msgstr "解鎖公開金鑰"
-
-#: ../pk/gkr-pk-object-storage.c:105
-msgid "Unlock"
-msgstr "解鎖"
-
-#: ../pk/gkr-pk-object-storage.c:116
-msgid "Enter password to unlock the private key"
-msgstr "輸入解鎖私密金鑰的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:118
-msgid "Enter password to unlock the certificate"
-msgstr "輸入解鎖憑證的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:120
-msgid "Enter password to unlock the public key"
-msgstr "輸入解鎖公開金鑰的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:122
-msgid "Enter password to unlock"
-msgstr "輸入解鎖的密碼"
-
-#: ../pk/gkr-pk-object-storage.c:133
-msgid "Automatically unlock this private key when I log in."
-msgstr "當我登入時自動解鎖私密金鑰。"
-
-#: ../pk/gkr-pk-object-storage.c:135
-msgid "Automatically unlock this certificate when I log in."
-msgstr "當我登入時自動解鎖憑證。"
-
-#: ../pk/gkr-pk-object-storage.c:137
-msgid "Automatically unlock this public key when I log in."
-msgstr "當我登入時自動解鎖公開金鑰。"
-
-#: ../pk/gkr-pk-object-storage.c:139
-msgid "Automatically unlock this when I log in"
-msgstr "當我登入時自動解鎖此項"
-
-#: ../pk/gkr-pk-object-storage.c:154
-#, c-format
-msgid "An application wants access to the private key '%s', but it is locked"
-msgstr "一個程式要求存取私密金鑰‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:156
-#, c-format
-msgid "An application wants access to the certificate '%s', but it is locked"
-msgstr "一個程式要求存取憑證‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:158
-#, c-format
-msgid "An application wants access to the public key '%s', but it is locked"
-msgstr "一個程式要求存取公開金鑰‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:160
-#, c-format
-msgid "An application wants access to '%s', but it is locked"
-msgstr "一個不明的程式要求存取‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:166
-#, c-format
-msgid "The system wants to import the private key '%s', but it is locked"
-msgstr "系統要求匯入私密金鑰‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:168
-#, c-format
-msgid "The system wants to import the certificate '%s', but it is locked"
-msgstr "系統要求匯入憑證‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:170
-#, c-format
-msgid "The system wants to import the public key '%s', but it is locked"
-msgstr "系統要求匯入公開金鑰‘%s’,但它已被鎖上。"
-
-#: ../pk/gkr-pk-object-storage.c:172
-#, c-format
-msgid "The system wants to import '%s', but it is locked"
-msgstr "系統要求匯入‘%s’,但它已被鎖上"
-
-#: ../pk/gkr-pk-object-storage.c:258
-#, c-format
-msgid "Unlock password for '%s'"
-msgstr "‘%s’的解鎖密碼"
-
-#: ../pkix/gkr-pkix-parser.c:445
-msgid "Unrecognized or unsupported file."
-msgstr "無法辨識或不支援的檔案。"
-
-#: ../pkix/gkr-pkix-parser.c:449
-msgid "Could not parse invalid or corrupted file."
-msgstr "無法解析無效或損毀的檔案。"
-
-#: ../ui/gkr-ask-tool.c:182
-msgid "Store passwords unencrypted?"
-msgstr "是否儲存不加密的密碼?"
-
-#: ../ui/gkr-ask-tool.c:183
-msgid ""
-"By choosing to use a blank password, your stored passwords will not be "
-"safely encrypted. They will be accessible by anyone with access to your "
-"files."
-msgstr ""
-"若選擇使用空白密碼,您所儲存的密碼將不會被安全的加密。任何能存取您的檔案的人"
-"都將能看到這些密碼。"
-
-#: ../ui/gkr-ask-tool.c:190
-msgid "Use Unsafe Storage"
-msgstr "使用不安全的儲存"
-
-#: ../ui/gkr-ask-tool.c:413
-msgid "_Location:"
-msgstr "位置(_L):"
-
-#: ../ui/gkr-ask-tool.c:426
-msgid "_Old password:"
-msgstr "舊密碼(_O):"
-
-#: ../ui/gkr-ask-tool.c:446
-msgid "_Password:"
-msgstr "密碼(_P):"
-
-#: ../ui/gkr-ask-tool.c:468
-msgid "_Confirm password:"
-msgstr "確認新密碼(_C):"
-
-#: ../ui/gkr-ask-tool.c:488
-msgid "New password strength"
-msgstr "新密碼的強度"
-
-#: ../ui/gkr-ask-tool.c:546
-msgid "Passwords do not match."
-msgstr "密碼不相符。"
-
-#: ../ui/gkr-ask-tool.c:562
-msgid "Password cannot be blank"
-msgstr "密碼不能空白"
-
-#: ../ui/gkr-ask-tool.c:613
-msgid "Deny"
-msgstr "禁止"
-
-#: ../ui/gkr-ask-tool.c:625
-msgid "Allow _Once"
-msgstr "只允許一次(_O)"
-
-#: ../ui/gkr-ask-tool.c:629
-msgid "_Always Allow"
-msgstr "永遠允許(_A)"
-
diff --git a/reference/.cvsignore b/reference/.cvsignore
deleted file mode 100644
index 8e6e462d..00000000
--- a/reference/.cvsignore
+++ /dev/null
@@ -1,14 +0,0 @@
-Makefile
-Makefile.in
-gnome-keyring.args
-gnome-keyring.hierarchy
-gnome-keyring.interfaces
-gnome-keyring.prerequisites
-gnome-keyring.signals
-gnome-keyring-decl.txt
-gnome-keyring-decl-list.txt
-gnome-keyring-overrides.txt
-gnome-keyring-undocumented.txt
-gnome-keyring-unused.txt
-*.stamp
-xml
diff --git a/reference/Makefile.am b/reference/Makefile.am
deleted file mode 100644
index c245b632..00000000
--- a/reference/Makefile.am
+++ /dev/null
@@ -1,92 +0,0 @@
-## Process this file with automake to produce Makefile.in
-NULL=
-
-all-recursive: all
-
-# all: tmpl.stamp
-
-# This is a blank Makefile.am for using gtk-doc.
-# Copy this to your project's API docs directory and modify the variables to
-# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
-# of using the various options.
-
-# The name of the module, e.g. 'glib'.
-DOC_MODULE=gnome-keyring
-
-# The top-level SGML file. You can change this if you want to.
-DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
-
-# The directory containing the source code. Relative to $(srcdir).
-# gtk-doc will search all .c & .h files beneath here for inline comments
-# documenting the functions and macros.
-# e.g. DOC_SOURCE_DIR=../../../gtk
-DOC_SOURCE_DIR=../library
-
-# Extra options to pass to gtkdoc-scangobj. Not normally needed.
-SCANGOBJ_OPTIONS=--type-init-func="g_type_init()"
-
-# Extra options to supply to gtkdoc-scan.
-# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
-SCAN_OPTIONS=
-
-# Extra options to supply to gtkdoc-mkdb.
-# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS=--sgml-mode --output-format=xml
-
-# Extra options to supply to gtkdoc-mktmpl
-# e.g. MKTMPL_OPTIONS=--only-section-tmpl
-MKTMPL_OPTIONS=
-
-# Extra options to supply to gtkdoc-fixref. Not normally needed.
-# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
-
-# Used for dependencies. The docs will be rebuilt if any of these change.
-# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
-# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
-HFILE_GLOB=$(top_srcdir)/library/*.h
-CFILE_GLOB=$(top_srcdir)/library/*.c
-
-# Header files to ignore when scanning.
-# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
-IGNORE_HFILES=\
- gnome-keyring-private.h \
- gnome-keyring-proto.h \
- $(NULL)
-
-# Images to copy into HTML directory.
-# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
-HTML_IMAGES=\
- $(NULL)
-
-# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files=\
- $(NULL)
-
-# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
-# These files must be listed here *and* in content_files
-# e.g. expand_content_files=running.sgml
-expand_content_files=
-
-# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
-# Only needed if you are using gtkdoc-scangobj to dynamically query widget
-# signals and properties.
-# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
-# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
-INCLUDES=\
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(GOBJECT_CFLAGS) \
- $(NULL)
-GTKDOC_LIBS=\
- $(top_builddir)/libgnome-keyring.la \
- $(GOBJECT_LIBS) \
- $(NULL)
-
-# This includes the standard gtk-doc make rules, copied by gtkdocize.
-include $(top_srcdir)/gtk-doc.make
-
-# Other files to distribute
-# e.g. EXTRA_DIST += version.xml.in
-EXTRA_DIST +=
diff --git a/reference/gnome-keyring-docs.sgml b/reference/gnome-keyring-docs.sgml
deleted file mode 100644
index 309308a7..00000000
--- a/reference/gnome-keyring-docs.sgml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
-<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
- <bookinfo>
- <title>gnome-keyring Reference Manual</title>
- </bookinfo>
-
- <chapter>
- <title>gnome-keyring API Reference</title>
- <xi:include href="xml/gnome-keyring-password.xml"/>
- <xi:include href="xml/gnome-keyring-keyrings.xml"/>
- <xi:include href="xml/gnome-keyring-keyring-info.xml"/>
- <xi:include href="xml/gnome-keyring-items.xml"/>
- <xi:include href="xml/gnome-keyring-item-info.xml"/>
- <xi:include href="xml/gnome-keyring-attributes.xml"/>
- <xi:include href="xml/gnome-keyring-acl.xml"/>
- <xi:include href="xml/gnome-keyring-find.xml"/>
- <xi:include href="xml/gnome-keyring-network.xml"/>
- <xi:include href="xml/gnome-keyring-memory.xml"/>
- <xi:include href="xml/gnome-keyring-result.xml"/>
- <xi:include href="xml/gnome-keyring-misc.xml"/>
- <xi:include href="xml/gnome-keyring-daemon.xml"/>
- <xi:include href="xml/gnome-keyring-generic-callbacks.xml"/>
- </chapter>
-</book>
diff --git a/reference/gnome-keyring-sections.txt b/reference/gnome-keyring-sections.txt
deleted file mode 100644
index 0b904ecb..00000000
--- a/reference/gnome-keyring-sections.txt
+++ /dev/null
@@ -1,183 +0,0 @@
-<SECTION>
-<FILE>gnome-keyring-password</FILE>
-GnomeKeyringPasswordSchema
-GNOME_KEYRING_NETWORK_PASSWORD
-GNOME_KEYRING_DEFAULT
-GNOME_KEYRING_SESSION
-gnome_keyring_store_password
-gnome_keyring_store_password_sync
-gnome_keyring_find_password
-gnome_keyring_find_password_sync
-gnome_keyring_delete_password
-gnome_keyring_delete_password_sync
-gnome_keyring_free_password
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-keyrings</FILE>
-GnomeKeyringOperationGetKeyringInfoCallback
-gnome_keyring_set_default_keyring
-gnome_keyring_set_default_keyring_sync
-gnome_keyring_get_default_keyring
-gnome_keyring_get_default_keyring_sync
-gnome_keyring_list_keyring_names
-gnome_keyring_list_keyring_names_sync
-gnome_keyring_lock_all
-gnome_keyring_lock_all_sync
-gnome_keyring_create
-gnome_keyring_create_sync
-gnome_keyring_unlock
-gnome_keyring_unlock_sync
-gnome_keyring_lock
-gnome_keyring_lock_sync
-gnome_keyring_delete
-gnome_keyring_delete_sync
-gnome_keyring_get_info
-gnome_keyring_get_info_sync
-gnome_keyring_set_info
-gnome_keyring_set_info_sync
-gnome_keyring_change_password
-gnome_keyring_change_password_sync
-gnome_keyring_list_item_ids
-gnome_keyring_list_item_ids_sync
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-keyring-info</FILE>
-GnomeKeyringInfo
-gnome_keyring_info_free
-gnome_keyring_info_copy
-gnome_keyring_info_set_lock_on_idle
-gnome_keyring_info_get_lock_on_idle
-gnome_keyring_info_set_lock_timeout
-gnome_keyring_info_get_lock_timeout
-gnome_keyring_info_get_mtime
-gnome_keyring_info_get_ctime
-gnome_keyring_info_get_is_locked
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-items</FILE>
-GnomeKeyringItemInfoFlags
-GnomeKeyringOperationGetItemInfoCallback
-GnomeKeyringOperationGetAttributesCallback
-gnome_keyring_item_create
-gnome_keyring_item_create_sync
-gnome_keyring_item_delete
-gnome_keyring_item_delete_sync
-gnome_keyring_item_get_info
-gnome_keyring_item_get_info_full
-gnome_keyring_item_get_info_full_sync
-gnome_keyring_item_get_info_sync
-gnome_keyring_item_set_info
-gnome_keyring_item_set_info_sync
-gnome_keyring_item_get_attributes
-gnome_keyring_item_get_attributes_sync
-gnome_keyring_item_set_attributes
-gnome_keyring_item_set_attributes_sync
-gnome_keyring_item_get_acl
-gnome_keyring_item_get_acl_sync
-gnome_keyring_item_set_acl
-gnome_keyring_item_set_acl_sync
-gnome_keyring_item_grant_access_rights
-gnome_keyring_item_grant_access_rights_sync
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-item-info</FILE>
-GnomeKeyringItemType
-GnomeKeyringItemInfo
-gnome_keyring_item_info_free
-gnome_keyring_item_info_new
-gnome_keyring_item_info_copy
-gnome_keyring_item_info_get_type
-gnome_keyring_item_info_set_type
-gnome_keyring_item_info_get_secret
-gnome_keyring_item_info_set_secret
-gnome_keyring_item_info_get_display_name
-gnome_keyring_item_info_set_display_name
-gnome_keyring_item_info_get_mtime
-gnome_keyring_item_info_get_ctime
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-find</FILE>
-GnomeKeyringFound
-gnome_keyring_found_free
-gnome_keyring_found_list_free
-gnome_keyring_find_items
-gnome_keyring_find_itemsv
-gnome_keyring_find_items_sync
-gnome_keyring_find_itemsv_sync
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-attributes</FILE>
-GnomeKeyringAttributeType
-GnomeKeyringAttributeList
-GnomeKeyringAttribute
-gnome_keyring_attribute_list_index
-gnome_keyring_attribute_list_new
-gnome_keyring_attribute_list_append_string
-gnome_keyring_attribute_list_append_uint32
-gnome_keyring_attribute_list_free
-gnome_keyring_attribute_list_copy
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-acl</FILE>
-GnomeKeyringAccessControl
-GnomeKeyringApplicationRef
-GnomeKeyringAccessType
-gnome_keyring_application_ref_new
-gnome_keyring_application_ref_copy
-gnome_keyring_application_ref_free
-gnome_keyring_access_control_new
-gnome_keyring_access_control_copy
-gnome_keyring_access_control_free
-gnome_keyring_acl_copy
-gnome_keyring_acl_free
-gnome_keyring_item_ac_get_display_name
-gnome_keyring_item_ac_set_display_name
-gnome_keyring_item_ac_get_path_name
-gnome_keyring_item_ac_set_path_name
-gnome_keyring_item_ac_get_access_type
-gnome_keyring_item_ac_set_access_type
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-network</FILE>
-GnomeKeyringNetworkPasswordData
-gnome_keyring_network_password_free
-gnome_keyring_network_password_list_free
-gnome_keyring_find_network_password
-gnome_keyring_find_network_password_sync
-gnome_keyring_set_network_password
-gnome_keyring_set_network_password_sync
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-misc</FILE>
-gnome_keyring_is_available
-gnome_keyring_cancel_request
-gnome_keyring_string_list_free
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-daemon</FILE>
-gnome_keyring_daemon_set_display_sync
-gnome_keyring_daemon_prepare_environment_sync
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-memory</FILE>
-gnome_keyring_memory_new
-gnome_keyring_memory_alloc
-gnome_keyring_memory_try_alloc
-gnome_keyring_memory_realloc
-gnome_keyring_memory_try_realloc
-gnome_keyring_memory_free
-gnome_keyring_memory_is_secure
-gnome_keyring_memory_strdup
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-result</FILE>
-gnome_keyring_result_to_message
-GnomeKeyringResult
-</SECTION>
-<SECTION>
-<FILE>gnome-keyring-generic-callbacks</FILE>
-GnomeKeyringOperationDoneCallback
-GnomeKeyringOperationGetIntCallback
-GnomeKeyringOperationGetListCallback
-GnomeKeyringOperationGetStringCallback
-</SECTION> \ No newline at end of file
diff --git a/reference/tmpl/.cvsignore b/reference/tmpl/.cvsignore
deleted file mode 100644
index 078ee879..00000000
--- a/reference/tmpl/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.sgml
diff --git a/reference/tmpl/empty.sgml b/reference/tmpl/empty.sgml
deleted file mode 100644
index e69de29b..00000000
--- a/reference/tmpl/empty.sgml
+++ /dev/null
diff --git a/reference/tmpl/gnome-keyring-acl.sgml b/reference/tmpl/gnome-keyring-acl.sgml
deleted file mode 100644
index aaafb890..00000000
--- a/reference/tmpl/gnome-keyring-acl.sgml
+++ /dev/null
@@ -1,164 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-acl
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyring Item ACLs
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>Each item has an access control list, which specifies the applications that
-can read, write or delete an item. The read access applies only to reading the secret.
-All applications can read other parts of the item. ACLs are accessed and changed
-gnome_keyring_item_get_acl() and gnome_keyring_item_set_acl().</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### TYPEDEF GnomeKeyringAccessControl ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### TYPEDEF GnomeKeyringApplicationRef ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### ENUM GnomeKeyringAccessType ##### -->
-<para>
-
-</para>
-
-@GNOME_KEYRING_ACCESS_READ:
-@GNOME_KEYRING_ACCESS_WRITE:
-@GNOME_KEYRING_ACCESS_REMOVE:
-
-<!-- ##### FUNCTION gnome_keyring_application_ref_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_application_ref_copy ##### -->
-<para>
-
-</para>
-
-@app:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_application_ref_free ##### -->
-<para>
-
-</para>
-
-@app:
-
-
-<!-- ##### FUNCTION gnome_keyring_access_control_new ##### -->
-<para>
-
-</para>
-
-@application:
-@types_allowed:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_access_control_copy ##### -->
-<para>
-
-</para>
-
-@ac:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_access_control_free ##### -->
-<para>
-
-</para>
-
-@ac:
-
-
-<!-- ##### FUNCTION gnome_keyring_acl_copy ##### -->
-<para>
-
-</para>
-
-@list:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_acl_free ##### -->
-<para>
-
-</para>
-
-@acl:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_get_display_name ##### -->
-<para>
-
-</para>
-
-@ac:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_set_display_name ##### -->
-<para>
-
-</para>
-
-@ac:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_get_path_name ##### -->
-<para>
-
-</para>
-
-@ac:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_set_path_name ##### -->
-<para>
-
-</para>
-
-@ac:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_get_access_type ##### -->
-<para>
-
-</para>
-
-@ac:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_ac_set_access_type ##### -->
-<para>
-
-</para>
-
-@ac:
-@value:
-
-
diff --git a/reference/tmpl/gnome-keyring-attributes.sgml b/reference/tmpl/gnome-keyring-attributes.sgml
deleted file mode 100644
index daff4631..00000000
--- a/reference/tmpl/gnome-keyring-attributes.sgml
+++ /dev/null
@@ -1,96 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-attributes
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyring Item Attributes
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>Attributes allow various other pieces of information to be associated with an item.
-These can also be used to search for relevant items. Use gnome_keyring_item_get_attributes()
-or gnome_keyring_item_set_attributes().</para>
-
-<para>Each attribute has either a string, or unsigned integer value.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM GnomeKeyringAttributeType ##### -->
-<para>
-
-</para>
-
-@GNOME_KEYRING_ATTRIBUTE_TYPE_STRING:
-@GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32:
-
-<!-- ##### TYPEDEF GnomeKeyringAttributeList ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### STRUCT GnomeKeyringAttribute ##### -->
-<para>
-
-</para>
-
-@name:
-@type:
-
-<!-- ##### MACRO gnome_keyring_attribute_list_index ##### -->
-<para>
-
-</para>
-
-@a:
-@i:
-
-
-<!-- ##### MACRO gnome_keyring_attribute_list_new ##### -->
-<para>
-
-</para>
-
-
-
-<!-- ##### FUNCTION gnome_keyring_attribute_list_append_string ##### -->
-<para>
-
-</para>
-
-@attributes:
-@name:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_attribute_list_append_uint32 ##### -->
-<para>
-
-</para>
-
-@attributes:
-@name:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_attribute_list_free ##### -->
-<para>
-
-</para>
-
-@attributes:
-
-
-<!-- ##### FUNCTION gnome_keyring_attribute_list_copy ##### -->
-<para>
-
-</para>
-
-@attributes:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-daemon.sgml b/reference/tmpl/gnome-keyring-daemon.sgml
deleted file mode 100644
index 217b1d3f..00000000
--- a/reference/tmpl/gnome-keyring-daemon.sgml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-Daemon Management Functions
-
-<!-- ##### SECTION Short_Description ##### -->
-Functions used by session managers to manage the Gnome Keyring Daemon.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-These functions are not used by most applications using Gnome Keyring.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION gnome_keyring_daemon_set_display_sync ##### -->
-<para>
-
-</para>
-
-@display:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_daemon_prepare_environment_sync ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-find.sgml b/reference/tmpl/gnome-keyring-find.sgml
deleted file mode 100644
index 86d2ef22..00000000
--- a/reference/tmpl/gnome-keyring-find.sgml
+++ /dev/null
@@ -1,95 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-find
-
-<!-- ##### SECTION Short_Description ##### -->
-Find Keyring Items
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>A find operation searches through all keyrings for items that match the
-attributes. The user may have been prompted to unlock necessary keyrings, and
-user will have been prompted for access to the items if needed.</para>
-
-<para>A find operation may return multiple or zero results.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT GnomeKeyringFound ##### -->
-<para>
-
-</para>
-
-@keyring:
-@item_id:
-@attributes:
-@secret:
-
-<!-- ##### FUNCTION gnome_keyring_found_free ##### -->
-<para>
-
-</para>
-
-@found:
-
-
-<!-- ##### FUNCTION gnome_keyring_found_list_free ##### -->
-<para>
-
-</para>
-
-@found_list:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_items ##### -->
-<para>
-
-</para>
-
-@type:
-@attributes:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_itemsv ##### -->
-<para>
-
-</para>
-
-@type:
-@callback:
-@data:
-@destroy_data:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_items_sync ##### -->
-<para>
-
-</para>
-
-@type:
-@attributes:
-@found:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_itemsv_sync ##### -->
-<para>
-
-</para>
-
-@type:
-@found:
-@Varargs:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-generic-callbacks.sgml b/reference/tmpl/gnome-keyring-generic-callbacks.sgml
deleted file mode 100644
index 0357915c..00000000
--- a/reference/tmpl/gnome-keyring-generic-callbacks.sgml
+++ /dev/null
@@ -1,58 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-generic-callbacks
-
-<!-- ##### SECTION Short_Description ##### -->
-
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationDoneCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@data:
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetIntCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@val:
-@data:
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetListCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@list:
-@data:
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetStringCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@string:
-@data:
-
-
diff --git a/reference/tmpl/gnome-keyring-item-info.sgml b/reference/tmpl/gnome-keyring-item-info.sgml
deleted file mode 100644
index 9a659557..00000000
--- a/reference/tmpl/gnome-keyring-item-info.sgml
+++ /dev/null
@@ -1,133 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-item-info
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyring Item Info
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>#GnomeKeyringItemInfo represents the basic information about a keyring item.
-Use gnome_keyring_item_get_info() or gnome_keyring_item_set_info().</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM GnomeKeyringItemType ##### -->
-<para>
-
-</para>
-
-@GNOME_KEYRING_ITEM_GENERIC_SECRET:
-@GNOME_KEYRING_ITEM_NETWORK_PASSWORD:
-@GNOME_KEYRING_ITEM_NOTE:
-@GNOME_KEYRING_ITEM_CHAINED_KEYRING_PASSWORD:
-@GNOME_KEYRING_ITEM_ENCRYPTION_KEY_PASSWORD:
-@GNOME_KEYRING_ITEM_LAST_TYPE:
-
-<!-- ##### TYPEDEF GnomeKeyringItemInfo ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_free ##### -->
-<para>
-
-</para>
-
-@item_info:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_new ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_copy ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_get_type ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_set_type ##### -->
-<para>
-
-</para>
-
-@item_info:
-@type:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_get_secret ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_set_secret ##### -->
-<para>
-
-</para>
-
-@item_info:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_get_display_name ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_set_display_name ##### -->
-<para>
-
-</para>
-
-@item_info:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_get_mtime ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_info_get_ctime ##### -->
-<para>
-
-</para>
-
-@item_info:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-items.sgml b/reference/tmpl/gnome-keyring-items.sgml
deleted file mode 100644
index ae862300..00000000
--- a/reference/tmpl/gnome-keyring-items.sgml
+++ /dev/null
@@ -1,318 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-items
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyring Items
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>A keyring contains multiple items. Each item has a secret, attributes and access
-information associated with it. </para>
-
-<para>An item is identified by an unsigned integer unique to the keyring in which it
-exists. An item's name is for displaying to the user. Each item has a single secret,
-which is a null-terminated string. This secret is stored in non-pageable memory, and
-encrypted on disk. All of this information is exposed via #GnomeKeyringItemInfo
-pointers</para>
-
-<para>Attributes allow various other pieces of information to be associated with an item.
-These can also be used to search for relevant items. Attributes are accessed with
-#GnomeKeyringAttribute structures and built into lists using #GnomeKeyringAttributeList.</para>
-
-<para>Each item has an access control list, which specifies the applications that
-can read, write or delete an item. The read access applies only to reading the secret.
-All applications can read other parts of the item. ACLs are accessed and changed
-through #GnomeKeyringAccessControl pointers.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### ENUM GnomeKeyringItemInfoFlags ##### -->
-<para>
-
-</para>
-
-@GNOME_KEYRING_ITEM_INFO_BASICS:
-@GNOME_KEYRING_ITEM_INFO_SECRET:
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetItemInfoCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@info:
-@data:
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetAttributesCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@attributes:
-@data:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_create ##### -->
-<para>
-
-</para>
-
-@keyring:
-@type:
-@display_name:
-@attributes:
-@secret:
-@update_if_exists:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_create_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@type:
-@display_name:
-@attributes:
-@secret:
-@update_if_exists:
-@item_id:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_delete ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_delete_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_info ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_info_full ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@flags:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_info_full_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@flags:
-@info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_info_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_info ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@info:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_info_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_attributes ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_attributes_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@attributes:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_attributes ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@attributes:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_attributes_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@attributes:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_acl ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_get_acl_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@acl:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_acl ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@acl:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_set_acl_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@id:
-@acl:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_grant_access_rights ##### -->
-<para>
-
-</para>
-
-@keyring:
-@display_name:
-@full_path:
-@id:
-@rights:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_item_grant_access_rights_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@display_name:
-@full_path:
-@id:
-@rights:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-keyring-info.sgml b/reference/tmpl/gnome-keyring-keyring-info.sgml
deleted file mode 100644
index 6280bf70..00000000
--- a/reference/tmpl/gnome-keyring-keyring-info.sgml
+++ /dev/null
@@ -1,104 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-keyring-info
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyring Information
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>Use gnome_keyring_get_info() or gnome_keyring_get_info_sync() to get a #GnomeKeyringInfo
-pointer to use with these functions.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### TYPEDEF GnomeKeyringInfo ##### -->
-<para>
-
-</para>
-
-
-<!-- ##### FUNCTION gnome_keyring_info_free ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_copy ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_set_lock_on_idle ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_get_lock_on_idle ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_set_lock_timeout ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@value:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_get_lock_timeout ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_get_mtime ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_get_ctime ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_info_get_is_locked ##### -->
-<para>
-
-</para>
-
-@keyring_info:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-keyrings.sgml b/reference/tmpl/gnome-keyring-keyrings.sgml
deleted file mode 100644
index 3b7e500d..00000000
--- a/reference/tmpl/gnome-keyring-keyrings.sgml
+++ /dev/null
@@ -1,291 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-keyrings
-
-<!-- ##### SECTION Short_Description ##### -->
-Keyrings
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>%gnome-keyring-daemon manages multiple keyrings. Each keyring can store one or more items containing secrets.</para>
-
-<para>One of the keyrings is the default keyring, which can in many cases be used by specifying %NULL for a keyring name.</para>
-
-<para>Each keyring can be in a locked or unlocked state. A password must be specified, either by the user or the calling application, to unlock the keyring.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### USER_FUNCTION GnomeKeyringOperationGetKeyringInfoCallback ##### -->
-<para>
-
-</para>
-
-@result:
-@info:
-@data:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_default_keyring ##### -->
-<para>
-
-</para>
-
-@keyring:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_default_keyring_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_get_default_keyring ##### -->
-<para>
-
-</para>
-
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_get_default_keyring_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_list_keyring_names ##### -->
-<para>
-
-</para>
-
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_list_keyring_names_sync ##### -->
-<para>
-
-</para>
-
-@keyrings:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_lock_all ##### -->
-<para>
-
-</para>
-
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_lock_all_sync ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_create ##### -->
-<para>
-
-</para>
-
-@keyring_name:
-@password:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_create_sync ##### -->
-<para>
-
-</para>
-
-@keyring_name:
-@password:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_unlock ##### -->
-<para>
-
-</para>
-
-@keyring:
-@password:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_unlock_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@password:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_lock ##### -->
-<para>
-
-</para>
-
-@keyring:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_lock_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_delete ##### -->
-<para>
-
-</para>
-
-@keyring:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_delete_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_get_info ##### -->
-<para>
-
-</para>
-
-@keyring:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_get_info_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_info ##### -->
-<para>
-
-</para>
-
-@keyring:
-@info:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_info_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@info:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_change_password ##### -->
-<para>
-
-</para>
-
-@keyring:
-@original:
-@password:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_change_password_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@original:
-@password:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_list_item_ids ##### -->
-<para>
-
-</para>
-
-@keyring:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_list_item_ids_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@ids:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-memory.sgml b/reference/tmpl/gnome-keyring-memory.sgml
deleted file mode 100644
index e454b3e3..00000000
--- a/reference/tmpl/gnome-keyring-memory.sgml
+++ /dev/null
@@ -1,100 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-memory
-
-<!-- ##### SECTION Short_Description ##### -->
-Secure Non-pageable Memory
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Normal allocated memory can be paged to disk at the whim of the operating system.
-This is a serious problems for sensitive information like passwords, keys and secrets.
-</para>
-
-<para>GNOME Keyring holds passwords in non-pageable, or locked memory. This happens
-both in the daemon and in the library. This is only possible if the OS contains
-support for it.</para>
-
-<para>These functions allow applications to use to hold passwords and other
-sensitive information.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### MACRO gnome_keyring_memory_new ##### -->
-<para>
-
-</para>
-
-@type:
-@n_objects:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_alloc ##### -->
-<para>
-
-</para>
-
-@sz:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_try_alloc ##### -->
-<para>
-
-</para>
-
-@sz:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_realloc ##### -->
-<para>
-
-</para>
-
-@p:
-@sz:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_try_realloc ##### -->
-<para>
-
-</para>
-
-@p:
-@sz:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_free ##### -->
-<para>
-
-</para>
-
-@p:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_is_secure ##### -->
-<para>
-
-</para>
-
-@p:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_memory_strdup ##### -->
-<para>
-
-</para>
-
-@str:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-misc.sgml b/reference/tmpl/gnome-keyring-misc.sgml
deleted file mode 100644
index 411efd16..00000000
--- a/reference/tmpl/gnome-keyring-misc.sgml
+++ /dev/null
@@ -1,43 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-misc
-
-<!-- ##### SECTION Short_Description ##### -->
-Miscellaneous Functions
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION gnome_keyring_is_available ##### -->
-<para>
-
-</para>
-
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_cancel_request ##### -->
-<para>
-
-</para>
-
-@request:
-
-
-<!-- ##### FUNCTION gnome_keyring_string_list_free ##### -->
-<para>
-
-</para>
-
-@strings:
-
-
diff --git a/reference/tmpl/gnome-keyring-network.sgml b/reference/tmpl/gnome-keyring-network.sgml
deleted file mode 100644
index dee77e54..00000000
--- a/reference/tmpl/gnome-keyring-network.sgml
+++ /dev/null
@@ -1,122 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-network
-
-<!-- ##### SECTION Short_Description ##### -->
-Network Passwords
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>Networks passwords are a simple way of saving passwords associated with a
-certain user/server/protocol and other fields.</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT GnomeKeyringNetworkPasswordData ##### -->
-<para>
-
-</para>
-
-@keyring:
-@item_id:
-@protocol:
-@server:
-@object:
-@authtype:
-@port:
-@user:
-@domain:
-@password:
-
-<!-- ##### FUNCTION gnome_keyring_network_password_free ##### -->
-<para>
-
-</para>
-
-@data:
-
-
-<!-- ##### FUNCTION gnome_keyring_network_password_list_free ##### -->
-<para>
-
-</para>
-
-@list:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_network_password ##### -->
-<para>
-
-</para>
-
-@user:
-@domain:
-@server:
-@object:
-@protocol:
-@authtype:
-@port:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_network_password_sync ##### -->
-<para>
-
-</para>
-
-@user:
-@domain:
-@server:
-@object:
-@protocol:
-@authtype:
-@port:
-@results:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_network_password ##### -->
-<para>
-
-</para>
-
-@keyring:
-@user:
-@domain:
-@server:
-@object:
-@protocol:
-@authtype:
-@port:
-@password:
-@callback:
-@data:
-@destroy_data:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_set_network_password_sync ##### -->
-<para>
-
-</para>
-
-@keyring:
-@user:
-@domain:
-@server:
-@object:
-@protocol:
-@authtype:
-@port:
-@password:
-@item_id:
-@Returns:
-
-
diff --git a/reference/tmpl/gnome-keyring-password.sgml b/reference/tmpl/gnome-keyring-password.sgml
deleted file mode 100644
index cba8b008..00000000
--- a/reference/tmpl/gnome-keyring-password.sgml
+++ /dev/null
@@ -1,173 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-Simple Password Storage
-
-<!-- ##### SECTION Short_Description ##### -->
-Store and lookup passwords with a set of attributes.
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-This is a simple API for storing passwords and retrieving passwords in the keyring.
-</para>
-<para>
-Each password is associated with a set of attributes. Attribute values can be either
-strings or unsigned integers.
-The names and types of allowed attributes for a given password are defined with a
-schema. Certain schemas are predefined such as %GNOME_KEYRING_NETWORK_PASSWORD.
-Additional schemas can be defined via the %GnomeKeyringPasswordSchema structure.
-</para>
-<para>
-Each function accepts a variable list of attributes names and their values.
-Include a %NULL to terminate the list of attributes.
-</para>
-<example>
-<title>Passing attributes to the functions</title>
-<programlisting>
- res = gnome_keyring_delete_password_sync (GNOME_KEYRING_NETWORK_PASSWORD,
- "user", "me", /* A string attribute */
- "server, "example.gnome.org",
- "port", "8080", /* An integer attribute */
- NULL);
-</programlisting></example>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### STRUCT GnomeKeyringPasswordSchema ##### -->
-<para>
-Describes a password schema. Often you'll want to use a predefined schema such
-as %GNOME_KEYRING_NETWORK_PASSWORD.
-</para>
-
-<para>
-The last attribute name in a schema must be %NULL.
-
-<programlisting>
- GnomeKeyringPasswordSchema my_schema = {
- GNOME_KEYRING_ITEM_GENERIC_SECRET,
- {
- { "string-attr", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING },
- { "uint-attr", GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32 },
- { NULL, 0 }
- }
- };
-</programlisting>
-</para>
-
-@item_type:
-
-<!-- ##### VARIABLE GNOME_KEYRING_NETWORK_PASSWORD ##### -->
-<para>
-A predefined schema for network paswsords. It contains the following attributes:
-</para>
-<itemizedlist>
-<listitem>user: A string for the user login.</listitem>
-<listitem>server: The server being connected to.</listitem>
-<listitem>protocol: The protocol used to access the server, such as 'http' or 'smb'</listitem>
-<listitem>domain: A realm or domain, such as a Windows login domain.</listitem>
-<listitem>port: The network port to used to connect to the server.</listitem>
-</itemizedlist>
-
-
-<!-- ##### MACRO GNOME_KEYRING_DEFAULT ##### -->
-<para>
-The default keyring.
-</para>
-
-
-
-<!-- ##### MACRO GNOME_KEYRING_SESSION ##### -->
-<para>
-A keyring only stored in memory.
-</para>
-
-
-
-<!-- ##### FUNCTION gnome_keyring_store_password ##### -->
-<para>
-
-</para>
-
-@schema:
-@keyring:
-@display_name:
-@password:
-@callback:
-@data:
-@destroy_data:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_store_password_sync ##### -->
-<para>
-
-</para>
-
-@schema:
-@keyring:
-@display_name:
-@password:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_password ##### -->
-<para>
-
-</para>
-
-@schema:
-@callback:
-@data:
-@destroy_data:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_find_password_sync ##### -->
-<para>
-
-</para>
-
-@schema:
-@password:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_delete_password ##### -->
-<para>
-
-</para>
-
-@schema:
-@callback:
-@data:
-@destroy_data:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_delete_password_sync ##### -->
-<para>
-
-</para>
-
-@schema:
-@Varargs:
-@Returns:
-
-
-<!-- ##### FUNCTION gnome_keyring_free_password ##### -->
-<para>
-
-</para>
-
-@password:
-
-
diff --git a/reference/tmpl/gnome-keyring-result.sgml b/reference/tmpl/gnome-keyring-result.sgml
deleted file mode 100644
index 3ead2a66..00000000
--- a/reference/tmpl/gnome-keyring-result.sgml
+++ /dev/null
@@ -1,45 +0,0 @@
-<!-- ##### SECTION Title ##### -->
-gnome-keyring-result
-
-<!-- ##### SECTION Short_Description ##### -->
-Result Codes
-
-<!-- ##### SECTION Long_Description ##### -->
-<para>
-Result codes used through out GNOME Keyring. Additional result codes may be
-added from time to time and these should be handled gracefully.
-</para>
-
-<!-- ##### SECTION See_Also ##### -->
-<para>
-
-</para>
-
-<!-- ##### SECTION Stability_Level ##### -->
-
-
-<!-- ##### FUNCTION gnome_keyring_result_to_message ##### -->
-<para>
-
-</para>
-
-@res:
-@Returns:
-
-
-<!-- ##### ENUM GnomeKeyringResult ##### -->
-<para>
-
-</para>
-
-@GNOME_KEYRING_RESULT_OK:
-@GNOME_KEYRING_RESULT_DENIED:
-@GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON:
-@GNOME_KEYRING_RESULT_ALREADY_UNLOCKED:
-@GNOME_KEYRING_RESULT_NO_SUCH_KEYRING:
-@GNOME_KEYRING_RESULT_BAD_ARGUMENTS:
-@GNOME_KEYRING_RESULT_IO_ERROR:
-@GNOME_KEYRING_RESULT_CANCELLED:
-@GNOME_KEYRING_RESULT_KEYRING_ALREADY_EXISTS:
-@GNOME_KEYRING_RESULT_NO_MATCH:
-
diff --git a/ssh/Makefile.am b/ssh/Makefile.am
deleted file mode 100644
index 2aace067..00000000
--- a/ssh/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-noinst_LTLIBRARIES=libgkr-ssh.la
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS)
-
-libgkr_ssh_la_SOURCES = \
- gkr-ssh-daemon.h \
- gkr-ssh-daemon-io.c \
- gkr-ssh-daemon-ops.c \
- gkr-ssh-private.h \
- gkr-ssh-proto.c
-
-libgkr_ssh_la_LIBADD = \
- $(GLIB_LIBS) \
- $(GOBJECT_LIBS)
diff --git a/ssh/gkr-ssh-daemon-io.c b/ssh/gkr-ssh-daemon-io.c
deleted file mode 100644
index 7a706bcf..00000000
--- a/ssh/gkr-ssh-daemon-io.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ssh-daemon-io.c - handles SSH i/o from the clients
-
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "gkr-ssh-daemon.h"
-#include "gkr-ssh-private.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-buffer.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-daemon-util.h"
-#include "common/gkr-secure-memory.h"
-
-#include "pk/gkr-pk-object-storage.h"
-
-#ifndef HAVE_SOCKLEN_T
-#define socklen_t int
-#endif
-
-typedef struct {
- GkrAsyncWorker *worker;
- int sock;
-
- GkrBuffer input_buffer;
- GkrBuffer output_buffer;
-} SshClient;
-
-static char socket_path[1024] = { 0, };
-
-static gboolean
-yield_and_read_all (int fd, guchar *buf, int len)
-{
- int all = len;
- int res;
-
- while (len > 0) {
-
- /* Is this worker stopping? */
- if (gkr_async_is_stopping ())
- return FALSE;
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- res = read (fd, buf, len);
-
- gkr_async_end_concurrent ();
-
- if (res <= 0) {
- if (errno == EAGAIN && errno == EINTR)
- continue;
- if (res < 0)
- g_warning ("couldn't read %u bytes from client: %s", all,
- g_strerror (errno));
- return FALSE;
- } else {
- len -= res;
- buf += res;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-yield_and_write_all (int fd, const guchar *buf, int len)
-{
- int all = len;
- int res;
-
- while (len > 0) {
-
- /* Is this worker stopping? */
- if (gkr_async_is_stopping ())
- return FALSE;
-
- /* Don't block other threads during the read */
- gkr_async_begin_concurrent ();
-
- res = write (fd, buf, len);
-
- gkr_async_end_concurrent ();
-
- if (res <= 0) {
- if (errno == EAGAIN && errno == EINTR)
- continue;
- g_warning ("couldn't write %u bytes to client: %s", all,
- res < 0 ? g_strerror (errno) : "");
- return FALSE;
- } else {
- len -= res;
- buf += res;
- }
- }
-
- return TRUE;
-}
-
-static gboolean
-read_packet_with_size (SshClient *client)
-{
- int fd;
- guint32 packet_size;
-
- fd = client->sock;
-
- gkr_buffer_resize (&client->input_buffer, 4);
- if (!yield_and_read_all (fd, client->input_buffer.buf, 4))
- return FALSE;
-
- if (!gkr_buffer_get_uint32 (&client->input_buffer, 0, NULL, &packet_size) ||
- packet_size < 1) {
- g_warning ("invalid packet size from client");
- return FALSE;
- }
-
- gkr_buffer_resize (&client->input_buffer, packet_size + 4);
- if (!yield_and_read_all (fd, client->input_buffer.buf + 4, packet_size))
- return FALSE;
-
- return TRUE;
-}
-
-static void
-close_fd (gpointer data)
-{
- int *fd = (int*)data;
- g_assert (fd);
-
- /* If we're waiting anywhere this makes the thread stop */
- shutdown (*fd, SHUT_RDWR);
-}
-
-static gpointer
-client_worker_main (gpointer user_data)
-{
- SshClient *client = (SshClient*)user_data;
- guchar op;
-
- /* This array needs to be laid out properly */
- g_assert ((sizeof (gkr_ssh_operations) / sizeof (gkr_ssh_operations[0])) == GKR_SSH_OP_MAX);
-
- /* This helps any reads wakeup when this worker is stopping */
- gkr_async_register_cancel (close_fd, &client->sock);
-
- /* Make sure everything is in sync for this connection */
- gkr_pk_object_storage_refresh (NULL);
-
- while (!gkr_async_is_stopping ()) {
-
- /* 1. Read in the request */
- if (!read_packet_with_size (client))
- break;
-
- /* 2. Now decode the operation */
- if (!gkr_buffer_get_byte (&client->input_buffer, 4, NULL, &op))
- break;
- if (op >= GKR_SSH_OP_MAX)
- break;
- g_assert (gkr_ssh_operations[op]);
-
- /* 3. Execute the right operation */
- gkr_buffer_reset (&client->output_buffer);
- gkr_buffer_add_uint32 (&client->output_buffer, 0);
- if (!(gkr_ssh_operations[op]) (&client->input_buffer, &client->output_buffer))
- break;
- if (!gkr_buffer_set_uint32 (&client->output_buffer, 0,
- client->output_buffer.len - 4))
- break;
-
- /* 4. Write the reply back out */
- if (!yield_and_write_all (client->sock, client->output_buffer.buf,
- client->output_buffer.len))
- break;
- }
-
- /* All done */
- shutdown (client->sock, SHUT_RDWR);
- return NULL;
-}
-
-static void
-client_worker_done (GkrAsyncWorker *worker, gpointer result, gpointer user_data)
-{
- SshClient *client = (SshClient*)user_data;
-
- gkr_buffer_uninit (&client->input_buffer);
- gkr_buffer_uninit (&client->output_buffer);
-
- if (client->sock != -1)
- close (client->sock);
- g_free (client);
-}
-
-static void
-client_new (int fd)
-{
- SshClient *client;
-
- client = g_new0 (SshClient, 1);
- client->sock = fd;
-
- /*
- * We really have no idea what operation the client will send,
- * so we err on the side of caution and use secure memory in case
- * keys are involved.
- */
- /* TODO: Switch to gkr_secure_memory */
- gkr_buffer_init_full (&client->input_buffer, 128, gkr_secure_realloc);
- gkr_buffer_init_full (&client->output_buffer, 128, (GkrBufferAllocator)g_realloc);
-
- client->worker = gkr_async_worker_start (client_worker_main,
- client_worker_done, client);
- g_assert (client->worker);
-
- /*
- * The worker thread is tracked in a global list, and is guaranteed to
- * be cleaned up, either when it exits, or when the application closes.
- */
-}
-
-static gboolean
-accept_client (GIOChannel *channel, GIOCondition cond,
- gpointer callback_data)
-{
- int fd;
- int new_fd;
- struct sockaddr_un addr;
- socklen_t addrlen;
-
- fd = g_io_channel_unix_get_fd (channel);
-
- addrlen = sizeof (addr);
- new_fd = accept (fd, (struct sockaddr *) &addr, &addrlen);
-
- if (new_fd >= 0)
- client_new (new_fd);
- return TRUE;
-}
-
-static void
-cleanup_socket_dir (gpointer data)
-{
- if(*socket_path)
- unlink (socket_path);
-}
-
-gboolean
-gkr_daemon_ssh_io_initialize (void)
-{
- const gchar *tmp_dir;
- int sock;
- struct sockaddr_un addr;
- GIOChannel *channel;
-
- tmp_dir = gkr_daemon_util_get_master_directory ();
- g_return_val_if_fail (tmp_dir, FALSE);
-
- snprintf (socket_path, sizeof (socket_path), "%s/ssh", tmp_dir);
-
-#ifdef WITH_TESTS
- if (g_getenv ("GNOME_KEYRING_TEST_PATH"))
- unlink (socket_path);
-#endif
-
- gkr_cleanup_register (cleanup_socket_dir, NULL);
-
- sock = socket (AF_UNIX, SOCK_STREAM, 0);
- if (sock < 0) {
- g_warning ("couldn't create socket: %s", g_strerror (errno));
- return FALSE;
- }
-
- memset(&addr, 0, sizeof(addr));
- addr.sun_family = AF_UNIX;
- strncpy (addr.sun_path, socket_path, sizeof (addr.sun_path));
- if (bind (sock, (struct sockaddr *) & addr, sizeof (addr)) < 0) {
- g_warning ("couldn't bind to socket: %s", g_strerror (errno));
- return FALSE;
- }
-
- if (listen (sock, 128) < 0) {
- g_warning ("couldn't listen on socket: %s", g_strerror (errno));
- return FALSE;
- }
-
- channel = g_io_channel_unix_new (sock);
- g_io_add_watch (channel, G_IO_IN | G_IO_HUP, accept_client, NULL);
- g_io_channel_unref (channel);
-
- if (g_getenv ("SSH_AUTH_SOCK"))
- g_message ("another SSH agent is running at: %s", g_getenv ("SSH_AUTH_SOCK"));
-
- /* TODO: Do we need to push SSH_AGENT_PID? */
- gkr_daemon_util_push_environment ("SSH_AUTH_SOCK", socket_path);
-
- return TRUE;
-}
diff --git a/ssh/gkr-ssh-daemon-ops.c b/ssh/gkr-ssh-daemon-ops.c
deleted file mode 100644
index 4cefd242..00000000
--- a/ssh/gkr-ssh-daemon-ops.c
+++ /dev/null
@@ -1,789 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ssh-daemon-ops.h - SSH agent operations
-
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ssh-private.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-cleanup.h"
-#include "common/gkr-crypto.h"
-
-#include "pk/gkr-pk-object-manager.h"
-#include "pk/gkr-pk-privkey.h"
-#include "pk/gkr-pk-pubkey.h"
-
-#include "pkcs11/pkcs11.h"
-#include "pkcs11/pkcs11g.h"
-
-#include <gcrypt.h>
-
-#include <glib.h>
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <string.h>
-#include <stdio.h>
-
-/* -----------------------------------------------------------------------------
- * SESSION KEYS
- */
-
-static GkrPkObjectManager *session_manager = NULL;
-
-static void
-mark_v1_key (GkrPkPrivkey *key)
-{
- /* Track the version of the SSH protocol that this came in on */
- g_object_set_data (G_OBJECT (key), "ssh-protocol-version", GUINT_TO_POINTER (1));
-}
-
-static gboolean
-check_v1_key (GkrPkPrivkey *key)
-{
- return g_object_get_data (G_OBJECT (key), "ssh-protocol-version") == GUINT_TO_POINTER (1);
-}
-
-static void
-cleanup_session_manager (gpointer unused)
-{
- g_return_if_fail (session_manager);
- g_object_unref (session_manager);
- session_manager = NULL;
-}
-
-static GkrPkPrivkey*
-find_private_key_in_manager (GkrPkObjectManager *manager, const gkrid keyid, guint version)
-{
- GkrPkPrivkey *key = NULL;
- GList *l, *objects;
- const guchar *data;
- gsize n_data;
-
- data = gkr_id_get_raw (keyid, &n_data);
- g_assert (data && n_data);
-
- objects = gkr_pk_object_manager_findv (manager, GKR_TYPE_PK_PRIVKEY,
- CKA_ID, data, n_data, NULL);
-
- for (l = objects; l; l = g_list_next (l)) {
- key = GKR_PK_PRIVKEY (objects->data);
- if ((version == 1) != check_v1_key (key))
- continue;
- break;
- }
-
- g_list_free (objects);
-
- if (l == NULL)
- key = NULL;
-
- return key;
-}
-
-static GkrPkPrivkey*
-find_private_key (gcry_sexp_t skey, gboolean global, guint version)
-{
- GkrPkPrivkey *key = NULL;
- gkrid keyid;
-
- keyid = gkr_crypto_skey_make_id (skey);
- g_return_val_if_fail (keyid != NULL, NULL);
-
- /* Search through the session keys */
- if (session_manager)
- key = find_private_key_in_manager (session_manager, keyid, version);
-
- /* Search through the global keys */
- if (!key && global)
- key = find_private_key_in_manager (gkr_pk_object_manager_for_token (), keyid, version);
-
- gkr_id_free (keyid);
- return key;
-}
-
-static void
-remove_session_key (GkrPkPrivkey *key)
-{
- if (session_manager)
- gkr_pk_object_manager_unregister (session_manager, GKR_PK_OBJECT (key));
-}
-
-static void
-add_session_key (gcry_sexp_t skey, const gchar *comment, guint version)
-{
- GkrPkPrivkey *key, *prev;
-
- if (!session_manager) {
- session_manager = gkr_pk_object_manager_new ();
- gkr_cleanup_register (cleanup_session_manager, NULL);
- }
-
- prev = find_private_key (skey, FALSE, version);
- if (prev)
- remove_session_key (prev);
-
- key = GKR_PK_PRIVKEY (gkr_pk_privkey_new (session_manager, 0, skey));
- g_return_if_fail (key != NULL);
-
- if (comment)
- g_object_set (key, "label", comment, NULL);
-
- if (version == 1)
- mark_v1_key (key);
-}
-
-static void
-get_public_keys (GList *objects, GList** publics, guint version)
-{
- GkrPkPrivkey *key;
- GkrPkPubkey *pub;
-
- for (; objects; objects = g_list_next (objects)) {
-
- if (!GKR_IS_PK_PRIVKEY (objects->data))
- continue;
- key = GKR_PK_PRIVKEY (objects->data);
-
- /* When getting version one keys skip over any that aren't marked that way. */
- if ((version == 1) != check_v1_key (key))
- continue;
-
- pub = GKR_PK_PUBKEY (gkr_pk_privkey_get_public (key));
- if (!pub) {
- g_message ("couldn't find or load public key for private key");
- continue;
- }
-
- *publics = g_list_prepend (*publics, pub);
- }
-}
-
-/* -----------------------------------------------------------------------------
- * OPERATIONS
- */
-
-static gboolean
-op_add_identity (GkrBuffer *req, GkrBuffer *resp)
-{
- gchar *stype = NULL;
- gchar *comment = NULL;
- gcry_sexp_t key;
- gboolean ret;
- int algo;
- gsize offset;
-
- if (!gkr_buffer_get_string (req, 5, &offset, &stype, (GkrBufferAllocator)g_realloc))
- return FALSE;
-
- algo = gkr_ssh_proto_keytype_to_algo (stype);
- g_free (stype);
-
- if (!algo) {
- g_warning ("unsupported algorithm from SSH: %s", stype);
- return FALSE;
- }
-
- switch (algo) {
- case GCRY_PK_RSA:
- ret = gkr_ssh_proto_read_private_rsa (req, &offset, &key);
- break;
- case GCRY_PK_DSA:
- ret = gkr_ssh_proto_read_private_dsa (req, &offset, &key);
- break;
- default:
- g_assert_not_reached ();
- return FALSE;
- }
-
- if (!ret || !key) {
- g_warning ("couldn't read incoming SSH private key");
- return FALSE;
- }
-
-
- /* TODO: Blinding? See ssh-agent.c */
-
- /* Get the comment */
- if (!gkr_buffer_get_string (req, offset, &offset, &comment, (GkrBufferAllocator)g_realloc)) {
- gcry_sexp_release (key);
- return FALSE;
- }
-
- add_session_key (key, comment, 2);
- g_free (comment);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
- return TRUE;
-}
-
-static gboolean
-op_v1_add_identity (GkrBuffer *req, GkrBuffer *resp)
-{
- gcry_sexp_t key;
- gboolean ret;
- gsize offset = 5;
- guint32 unused;
-
- if (!gkr_buffer_get_uint32 (req, offset, &offset, &unused))
- return FALSE;
-
- ret = gkr_ssh_proto_read_private_v1 (req, &offset, &key);
- if (!ret || !key) {
- g_warning ("couldn't read incoming SSH private key");
- return FALSE;
- }
-
- add_session_key (key, "SSH1 RSA key", 1);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
- return TRUE;
-}
-
-static gboolean
-op_request_identities (GkrBuffer *req, GkrBuffer *resp)
-{
- GList *objects, *pubkeys, *l;
- GkrPkPubkey *pub;
- const gchar *label;
-
- /* Only find the keys that have usage = ssh */
- objects = gkr_pk_object_manager_findv (gkr_pk_object_manager_for_token (), GKR_TYPE_PK_PRIVKEY,
- CKA_GNOME_PURPOSE_SSH_AUTH, CK_TRUE, 0, NULL);
-
- pubkeys = NULL;
- if (session_manager)
- get_public_keys (session_manager->objects, &pubkeys, 2);
- get_public_keys (objects, &pubkeys, 2);
-
- g_list_free (objects);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_IDENTITIES_ANSWER);
- gkr_buffer_add_uint32 (resp, g_list_length (pubkeys));
-
- for (l = pubkeys; l; l = g_list_next (l)) {
-
- pub = GKR_PK_PUBKEY (l->data);
- g_return_val_if_fail (GKR_IS_PK_PUBKEY (pub), FALSE);
-
- if (!gkr_ssh_proto_write_public (resp, gkr_pk_pubkey_get_algorithm (pub),
- gkr_pk_pubkey_get_key (pub)))
- return FALSE;
-
- /* And now a per key comment */
- label = gkr_pk_object_get_label (GKR_PK_OBJECT (pub));
- gkr_buffer_add_string (resp, label ? label : "");
- }
-
- g_list_free (pubkeys);
-
- return TRUE;
-}
-
-static gboolean
-op_v1_request_identities (GkrBuffer *req, GkrBuffer *resp)
-{
- GList *l, *pubkeys = NULL;
- GkrPkPubkey *pub;
- const gchar *label;
-
- if (session_manager)
- get_public_keys (session_manager->objects, &pubkeys, 1);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_RSA_IDENTITIES_ANSWER);
- gkr_buffer_add_uint32 (resp, g_list_length (pubkeys));
-
- for (l = pubkeys; l; l = g_list_next (l)) {
-
- pub = GKR_PK_PUBKEY (l->data);
- g_return_val_if_fail (GKR_IS_PK_PUBKEY (pub), FALSE);
-
- if (!gkr_ssh_proto_write_public_v1 (resp, gkr_pk_pubkey_get_key (pub)))
- return FALSE;
-
- /* And now a per key comment */
- label = gkr_pk_object_get_label (GKR_PK_OBJECT (pub));
- gkr_buffer_add_string (resp, label ? label : "");
- }
-
- g_list_free (pubkeys);
- return TRUE;
-}
-
-static gboolean
-make_pkcs1_sign_sexp (int algo, const guchar *hash, gcry_sexp_t *sexp)
-{
- gchar *salgo;
- const char *s;
- int i, nalgo;
- gcry_error_t gcry;
-
- nalgo = gcry_md_get_algo_dlen (algo);
- g_return_val_if_fail (nalgo > 0, FALSE);
-
- s = gcry_md_algo_name (algo);
- g_return_val_if_fail (s, FALSE);
-
- salgo = g_alloca (strlen (s) + 1);
- for (i = 0; i < strlen (s); i++)
- salgo[i] = tolower (s[i]);
- salgo[i] = '\0';
-
- gcry = gcry_sexp_build (sexp, NULL, "(data (flags pkcs1) (hash %s %b))",
- salgo, nalgo, hash);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- return TRUE;
-}
-
-static gboolean
-make_raw_sign_exp (int algo, const guchar *hash, gcry_sexp_t *sexp)
-{
- int nalgo;
- gcry_mpi_t mpi;
- gcry_error_t gcry;
-
- nalgo = gcry_md_get_algo_dlen (algo);
- g_return_val_if_fail (nalgo > 0, FALSE);
-
- gcry = gcry_mpi_scan (&mpi, GCRYMPI_FMT_USG, hash, nalgo, NULL);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- gcry = gcry_sexp_build (sexp, NULL, "(data (flags raw) (value %m))", mpi);
- gcry_mpi_release (mpi);
-
- g_return_val_if_fail (gcry == 0, FALSE);
- return TRUE;
-}
-
-static gboolean
-op_sign_request (GkrBuffer *req, GkrBuffer *resp)
-{
- GkrPkPrivkey *key;
- const guchar *data;
- const gchar *salgo;
- gcry_sexp_t s_key, sdata, ssig;
- gsize n_data;
- guint32 flags;
- gsize offset;
- gcry_error_t gcry;
- gboolean ret;
- guint blobpos;
- guchar *hash;
- int algo;
- int halgo, n_algo;
-
- offset = 5;
- if (!gkr_ssh_proto_read_public (req, &offset, &s_key, &algo))
- return FALSE;
-
- if (!gkr_buffer_get_byte_array (req, offset, &offset, &data, &n_data) ||
- !gkr_buffer_get_uint32 (req, offset, &offset, &flags)) {
- gcry_sexp_release (s_key);
- return FALSE;
- }
-
- /* Lookup the key */
- key = find_private_key (s_key, TRUE, 2);
- gcry_sexp_release (s_key);
-
- if (!key) {
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- return TRUE;
- }
-
- /* Usually we hash the data with SHA1 */
- if (flags & GKR_SSH_FLAG_OLD_SIGNATURE)
- halgo = GCRY_MD_MD5;
- else
- halgo = GCRY_MD_SHA1;
-
- n_algo = gcry_md_get_algo_dlen (halgo);
- g_return_val_if_fail (n_algo > 0, FALSE);
-
- hash = g_alloca (n_algo);
- g_assert (hash);
-
- gcry_md_hash_buffer (halgo, hash, data, n_data);
-
- /* Make our data sexpression */
- if (algo == GCRY_PK_RSA)
- ret = make_pkcs1_sign_sexp (halgo, hash, &sdata);
- else
- ret = make_raw_sign_exp (halgo, hash, &sdata);
- if (!ret)
- return FALSE;
-
- s_key = gkr_pk_privkey_get_key (key);
- if (!s_key) {
- g_message ("couldn't get private signing key");
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- return TRUE;
- }
-
- /* Do the magic */
- gcry = gcry_pk_sign (&ssig, sdata, s_key);
- gcry_sexp_release (sdata);
-
- if (gcry) {
- g_warning ("signing of the data failed: %s", gcry_strerror (gcry));
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- return TRUE;
- }
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SIGN_RESPONSE);
-
- /* Add a space for the sig blob length */
- blobpos = resp->len;
- gkr_buffer_add_uint32 (resp, 0);
-
- salgo = gkr_ssh_proto_algo_to_keytype (algo);
- g_assert (salgo);
- gkr_buffer_add_string (resp, salgo);
-
- switch (algo) {
- case GCRY_PK_RSA:
- ret = gkr_ssh_proto_write_signature_rsa (resp, ssig);
- break;
-
- case GCRY_PK_DSA:
- ret = gkr_ssh_proto_write_signature_dsa (resp, ssig);
- break;
-
- default:
- g_assert_not_reached ();
- }
-
- gcry_sexp_release (ssig);
- g_return_val_if_fail (ret, FALSE);
-
- /* Write back the blob length */
- gkr_buffer_set_uint32 (resp, blobpos, (resp->len - blobpos) - 4);
-
- return TRUE;
-}
-
-static gboolean
-make_decrypt_sexp (gcry_mpi_t mpi, gcry_sexp_t *sexp)
-{
- gcry_error_t gcry;
-
- gcry = gcry_sexp_build (sexp, NULL, "(enc-val (flags) (rsa (a %m)))", mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- return TRUE;
-}
-
-static gboolean
-op_v1_challenge (GkrBuffer *req, GkrBuffer *resp)
-{
- guchar session_id[16];
- gcry_error_t gcry;
- gcry_md_hd_t hd = NULL;
- gcry_sexp_t skey;
- gcry_sexp_t splain = NULL;
- gcry_sexp_t sdata = NULL;
- GkrPkPrivkey *key;
- const guchar *hash;
- gcry_mpi_t challenge = NULL;
- guchar *raw = NULL;
- gsize offset, n_raw;
- guint32 resp_type;
- gboolean ret;
- guint i, bits;
- guchar b;
-
- ret = FALSE;
- offset = 5;
-
- if (!gkr_ssh_proto_read_public_v1 (req, &offset, &skey))
- return FALSE;
-
- /* Lookup the key */
- key = find_private_key (skey, TRUE, 1);
- gcry_sexp_release (skey);
-
- /* Read the entire challenge */
- if (!gkr_ssh_proto_read_mpi_v1 (req, &offset, &challenge))
- goto cleanup;
-
- /* Only protocol 1.1 is supported */
- if (req->len <= offset) {
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- ret = TRUE;
- goto cleanup;
- }
-
- /* Read out the session id, raw, unbounded */
- for (i = 0; i < 16; ++i) {
- if (!gkr_buffer_get_byte (req, offset, &offset, &b))
- goto cleanup;
- session_id[i] = b;
- }
-
- /* And the response type */
- if (!gkr_buffer_get_uint32 (req, offset, &offset, &resp_type))
- goto cleanup;
-
- /* Not supported request type */
- if (resp_type != 1) {
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- ret = TRUE;
- goto cleanup;
- }
-
- /* Didn't find a key earlier */
- if (!key) {
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- ret = TRUE;
- goto cleanup;
- }
-
- skey = gkr_pk_privkey_get_key (key);
- if (!skey) {
- g_message ("couldn't get private decryption key");
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- ret = TRUE;
- goto cleanup;
- }
-
- /* Make our data sexpression */
- if (!make_decrypt_sexp (challenge, &sdata))
- return FALSE;
-
- /* Do the magic */
- gcry = gcry_pk_decrypt (&splain, sdata, skey);
-
- if (gcry) {
- g_warning ("decryption of the data failed: %s", gcry_strerror (gcry));
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- ret = TRUE;
- goto cleanup;
- }
-
- /* Number of bits in the key */
- bits = gcry_pk_get_nbits (skey);
- g_return_val_if_fail (bits, FALSE);
-
- /* Get out the value */
- raw = gkr_crypto_sexp_extract_mpi_padded (splain, bits, &n_raw,
- gkr_crypto_rsa_unpad_pkcs1, "value", NULL);
- g_return_val_if_fail (raw, FALSE);
-
- /* Now build up a hash of this and the session_id */
- gcry = gcry_md_open (&hd, GCRY_MD_MD5, 0);
- g_return_val_if_fail (gcry == 0, FALSE);
- gcry_md_write (hd, raw, n_raw);
- gcry_md_write (hd, session_id, sizeof (session_id));
- hash = gcry_md_read (hd, 0);
- g_return_val_if_fail (hash, FALSE);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_RSA_RESPONSE);
- gkr_buffer_append (resp, hash, 16);
-
- ret = TRUE;
-
-cleanup:
- if (hd)
- gcry_md_close (hd);
- if (challenge)
- gcry_mpi_release (challenge);
- if (sdata)
- gcry_sexp_release (sdata);
- if (splain)
- gcry_sexp_release (splain);
- if (raw)
- g_free (raw);
-
- return ret;
-}
-
-static gboolean
-op_remove_identity (GkrBuffer *req, GkrBuffer *resp)
-{
- GkrPkPrivkey *key;
- GkrPkObject *obj;
- gcry_sexp_t skey;
- gsize offset;
-
- offset = 5;
- if (!gkr_ssh_proto_read_public (req, &offset, &skey, NULL))
- return FALSE;
-
- key = find_private_key (skey, TRUE, 2);
- gcry_sexp_release (skey);
-
- if (key) {
- obj = GKR_PK_OBJECT (key);
-
- /*
- * When the key is just a session key, then remove it
- * completely.
- */
- if (obj->manager == session_manager)
- remove_session_key (key);
-
- /*
- * Otherwise lock it so the user gets prompted for
- * any passwords again.
- */
- else
- gkr_pk_object_lock (obj);
- }
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
-
- return TRUE;
-}
-
-static gboolean
-op_v1_remove_identity (GkrBuffer *req, GkrBuffer *resp)
-{
- GkrPkPrivkey *key;
- gcry_sexp_t skey;
- gsize offset;
-
- offset = 5;
- if (!gkr_ssh_proto_read_public_v1 (req, &offset, &skey))
- return FALSE;
-
- key = find_private_key (skey, FALSE, 1);
- gcry_sexp_release (skey);
-
- if (key)
- remove_session_key (key);
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
-
- return TRUE;
-}
-
-static gboolean
-op_remove_all_identities (GkrBuffer *req, GkrBuffer *resp)
-{
- GkrPkPrivkey *key;
- GList *objects, *l, *removes = NULL;
-
- /* Remove all session keys */
- if (session_manager) {
- for (l = session_manager->objects; l; l = g_list_next (l)) {
- if (!GKR_IS_PK_PRIVKEY (l->data))
- continue;
- key = GKR_PK_PRIVKEY (l->data);
- if (!check_v1_key (key))
- removes = g_list_prepend (removes, key);
- }
-
- for (l = removes; l; l = g_list_next (l))
- remove_session_key (GKR_PK_PRIVKEY (l->data));
- g_list_free (removes);
- }
-
- /* And now we lock all private keys with usage = SSH */
- objects = gkr_pk_object_manager_findv (gkr_pk_object_manager_for_token (), GKR_TYPE_PK_PRIVKEY,
- CKA_GNOME_PURPOSE_SSH_AUTH, CK_TRUE, 0, NULL);
-
- for (l = objects; l; l = g_list_next (l)) {
- g_return_val_if_fail (GKR_IS_PK_OBJECT (l->data), FALSE);
- gkr_pk_object_lock (GKR_PK_OBJECT (l->data));
- }
-
- g_list_free (objects);
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
- return TRUE;
-}
-
-static gboolean
-op_v1_remove_all_identities (GkrBuffer *req, GkrBuffer *resp)
-{
- GkrPkPrivkey *key;
- GList *l, *removes = NULL;
-
- if (session_manager) {
- for (l = session_manager->objects; l; l = g_list_next (l)) {
- if (!GKR_IS_PK_PRIVKEY (l->data))
- continue;
- key = GKR_PK_PRIVKEY (l->data);
- if (check_v1_key (key))
- removes = g_list_prepend (removes, key);
- }
-
- for (l = removes; l; l = g_list_next (l))
- remove_session_key (GKR_PK_PRIVKEY (l->data));
- g_list_free (removes);
- }
-
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
- return TRUE;
-}
-
-static gboolean
-op_not_implemented_success (GkrBuffer *req, GkrBuffer *resp)
-{
- gkr_buffer_add_byte (resp, GKR_SSH_RES_SUCCESS);
- return TRUE;
-}
-
-static gboolean
-op_not_implemented_failure (GkrBuffer *req, GkrBuffer *resp)
-{
- gkr_buffer_add_byte (resp, GKR_SSH_RES_FAILURE);
- return TRUE;
-
-}
-
-static gboolean
-op_invalid (GkrBuffer *req, GkrBuffer *resp)
-{
- /* Invalid request, disconnect immediately */
- return FALSE;
-}
-
-const GkrSshOperation gkr_ssh_operations[GKR_SSH_OP_MAX] = {
- op_invalid, /* 0 */
- op_v1_request_identities, /* GKR_SSH_OP_REQUEST_RSA_IDENTITIES */
- op_invalid, /* 2 */
- op_v1_challenge, /* GKR_SSH_OP_RSA_CHALLENGE */
- op_invalid, /* 4 */
- op_invalid, /* 5 */
- op_invalid, /* 6 */
- op_v1_add_identity, /* GKR_SSH_OP_ADD_RSA_IDENTITY */
- op_v1_remove_identity, /* GKR_SSH_OP_REMOVE_RSA_IDENTITY */
- op_v1_remove_all_identities, /* GKR_SSH_OP_REMOVE_ALL_RSA_IDENTITIES */
- op_invalid, /* 10 */
- op_request_identities, /* GKR_SSH_OP_REQUEST_IDENTITIES */
- op_invalid, /* 12 */
- op_sign_request, /* GKR_SSH_OP_SIGN_REQUEST */
- op_invalid, /* 14 */
- op_invalid, /* 15 */
- op_invalid, /* 16 */
- op_add_identity, /* GKR_SSH_OP_ADD_IDENTITY */
- op_remove_identity, /* GKR_SSH_OP_REMOVE_IDENTITY */
- op_remove_all_identities, /* GKR_SSH_OP_REMOVE_ALL_IDENTITIES */
- op_not_implemented_failure, /* GKR_SSH_OP_ADD_SMARTCARD_KEY */
- op_not_implemented_failure, /* GKR_SSH_OP_REMOVE_SMARTCARD_KEY */
- op_not_implemented_success, /* GKR_SSH_OP_LOCK */
- op_not_implemented_success, /* GKR_SSH_OP_UNLOCK */
- op_v1_add_identity, /* GKR_SSH_OP_ADD_RSA_ID_CONSTRAINED */
- op_not_implemented_failure, /* GKR_SSH_OP_ADD_ID_CONSTRAINED */
- op_not_implemented_failure, /* GKR_SSH_OP_ADD_SMARTCARD_KEY_CONSTRAINED */
-};
diff --git a/ssh/gkr-ssh-daemon.h b/ssh/gkr-ssh-daemon.h
deleted file mode 100644
index d68020ee..00000000
--- a/ssh/gkr-ssh-daemon.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ssh-daemon.h - Public SSH agent functions
-
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRSSHDAEMON_H_
-#define GKRSSHDAEMON_H_
-
-#include <glib.h>
-
-gboolean gkr_daemon_ssh_io_initialize (void);
-
-#endif /*GKRSSHDAEMON_H_*/
diff --git a/ssh/gkr-ssh-private.h b/ssh/gkr-ssh-private.h
deleted file mode 100644
index bbd1f2fd..00000000
--- a/ssh/gkr-ssh-private.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ssh-private.h - Private SSH agent declarations
-
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRSSHPRIVATE_H_
-#define GKRSSHPRIVATE_H_
-
-#include "common/gkr-buffer.h"
-
-#include <gcrypt.h>
-
-#include <glib.h>
-
-/* -----------------------------------------------------------------------------
- * SSH OPERATIONS and CONSTANTS
- */
-
-/* Requests from client to daemon */
-#define GKR_SSH_OP_REQUEST_RSA_IDENTITIES 1
-#define GKR_SSH_OP_RSA_CHALLENGE 3
-#define GKR_SSH_OP_ADD_RSA_IDENTITY 7
-#define GKR_SSH_OP_REMOVE_RSA_IDENTITY 8
-#define GKR_SSH_OP_REMOVE_ALL_RSA_IDENTITIES 9
-#define GKR_SSH_OP_REQUEST_IDENTITIES 11
-#define GKR_SSH_OP_SIGN_REQUEST 13
-#define GKR_SSH_OP_ADD_IDENTITY 17
-#define GKR_SSH_OP_REMOVE_IDENTITY 18
-#define GKR_SSH_OP_REMOVE_ALL_IDENTITIES 19
-#define GKR_SSH_OP_ADD_SMARTCARD_KEY 20
-#define GKR_SSH_OP_REMOVE_SMARTCARD_KEY 21
-#define GKR_SSH_OP_LOCK 22
-#define GKR_SSH_OP_UNLOCK 23
-#define GKR_SSH_OP_ADD_RSA_ID_CONSTRAINED 24
-#define GKR_SSH_OP_ADD_ID_CONSTRAINED 25
-#define GKR_SSH_OP_ADD_SMARTCARD_KEY_CONSTRAINED 26
-
-#define GKR_SSH_OP_MAX 27
-
-/* Responses from daemon to client */
-#define GKR_SSH_RES_RSA_IDENTITIES_ANSWER 2
-#define GKR_SSH_RES_RSA_RESPONSE 4
-#define GKR_SSH_RES_FAILURE 5
-#define GKR_SSH_RES_SUCCESS 6
-#define GKR_SSH_RES_IDENTITIES_ANSWER 12
-#define GKR_SSH_RES_SIGN_RESPONSE 14
-#define GKR_SSH_RES_EXTENDED_FAILURE 30
-#define GKR_SSH_RES_SSHCOM_FAILURE 102
-
-
-#define GKR_SSH_FLAG_CONSTRAIN_LIFETIME 1
-#define GKR_SSH_FLAG_CONSTRAIN_CONFIRM 2
-
-#define GKR_SSH_DSA_SIGNATURE_PADDING 20
-#define GKR_SSH_FLAG_OLD_SIGNATURE 0x01
-
-/* -----------------------------------------------------------------------------
- * gkr-ssh-daemon-io.c
- */
-
-typedef gboolean (*GkrSshOperation) (GkrBuffer *req, GkrBuffer *resp);
-extern const GkrSshOperation gkr_ssh_operations[GKR_SSH_OP_MAX];
-
-/* -----------------------------------------------------------------------------
- * gkr-ssh-proto.c
- */
-
-int gkr_ssh_proto_keytype_to_algo (const gchar *salgo);
-
-const gchar* gkr_ssh_proto_algo_to_keytype (int algo);
-
-gboolean gkr_ssh_proto_read_mpi (GkrBuffer *req, gsize *offset, gcry_mpi_t *mpi);
-
-gboolean gkr_ssh_proto_read_mpi_v1 (GkrBuffer *req, gsize *offset, gcry_mpi_t *mpi);
-
-gboolean gkr_ssh_proto_write_mpi (GkrBuffer *resp, gcry_mpi_t mpi, int format);
-
-gboolean gkr_ssh_proto_write_mpi_v1 (GkrBuffer *resp, gcry_mpi_t mpi);
-
-gboolean gkr_ssh_proto_read_public (GkrBuffer *req, gsize *offset, gcry_sexp_t *key, int *algo);
-
-gboolean gkr_ssh_proto_read_public_rsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_read_public_dsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_read_public_v1 (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_read_private_rsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_read_private_dsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_read_private_v1 (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp);
-
-gboolean gkr_ssh_proto_write_public (GkrBuffer *resp, int algorithm, gcry_sexp_t key);
-
-gboolean gkr_ssh_proto_write_public_rsa (GkrBuffer *resp, gcry_sexp_t key);
-
-gboolean gkr_ssh_proto_write_public_dsa (GkrBuffer *resp, gcry_sexp_t key);
-
-gboolean gkr_ssh_proto_write_public_v1 (GkrBuffer *resp, gcry_sexp_t key);
-
-gboolean gkr_ssh_proto_write_signature_rsa (GkrBuffer *resp, gcry_sexp_t ssig);
-
-gboolean gkr_ssh_proto_write_signature_dsa (GkrBuffer *resp, gcry_sexp_t ssig);
-
-
-#endif /*GKRSSHPRIVATE_H_*/
diff --git a/ssh/gkr-ssh-proto.c b/ssh/gkr-ssh-proto.c
deleted file mode 100644
index 0c29d377..00000000
--- a/ssh/gkr-ssh-proto.c
+++ /dev/null
@@ -1,588 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ssh-proto.c - SSH agent protocol helpers
-
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ssh-private.h"
-
-#include "common/gkr-buffer.h"
-#include "common/gkr-crypto.h"
-
-#include <gcrypt.h>
-
-#include <glib.h>
-
-int
-gkr_ssh_proto_keytype_to_algo (const gchar *salgo)
-{
- g_return_val_if_fail (salgo, 0);
- if (strcmp (salgo, "ssh-rsa") == 0)
- return GCRY_PK_RSA;
- else if (strcmp (salgo, "ssh-dss") == 0)
- return GCRY_PK_DSA;
- return 0;
-}
-
-const gchar*
-gkr_ssh_proto_algo_to_keytype (int algo)
-{
- g_return_val_if_fail (algo, NULL);
- if (algo == GCRY_PK_RSA)
- return "ssh-rsa";
- else if (algo == GCRY_PK_DSA)
- return "ssh-dss";
- return NULL;
-}
-
-gboolean
-gkr_ssh_proto_read_mpi (GkrBuffer *req, gsize *offset, gcry_mpi_t *mpi)
-{
- const guchar *data;
- gsize len;
- gcry_error_t gcry;
-
- if (!gkr_buffer_get_byte_array (req, *offset, offset, &data, &len))
- return FALSE;
-
- gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_USG, data, len, NULL);
- if (gcry)
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_read_mpi_v1 (GkrBuffer *req, gsize *offset, gcry_mpi_t *mpi)
-{
- const guchar *data;
- gsize bytes;
- gcry_error_t gcry;
- guint16 bits;
-
- /* Get the number of bits */
- if (!gkr_buffer_get_uint16 (req, *offset, offset, &bits))
- return FALSE;
-
- /* Figure out the number of binary bytes following */
- bytes = (bits + 7) / 8;
- if (bytes > 8 * 1024)
- return FALSE;
-
- /* Pull these out directly */
- if (req->len < *offset + bytes)
- return FALSE;
- data = req->buf + *offset;
- *offset += bytes;
-
- gcry = gcry_mpi_scan (mpi, GCRYMPI_FMT_USG, data, bytes, NULL);
- if (gcry)
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_write_mpi (GkrBuffer *resp, gcry_mpi_t mpi, int format)
-{
- guchar *buf;
- size_t len;
- gcry_error_t gcry;
-
- /* Get the size */
- gcry = gcry_mpi_print (format, NULL, 0, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- /* Make a space for it in the buffer */
- buf = gkr_buffer_add_byte_array_empty (resp, len);
- if (!buf)
- return FALSE;
-
- /* Write in directly to buffer */
- gcry = gcry_mpi_print (format, buf, len, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_write_mpi_v1 (GkrBuffer *resp, gcry_mpi_t mpi)
-{
- gcry_error_t gcry;
- guchar *buf;
- gsize bits;
- gsize bytes, len;
-
- bits = gcry_mpi_get_nbits (mpi);
- g_return_val_if_fail (bits <= G_MAXUSHORT, FALSE);
-
- bytes = (bits + 7) / 8;
-
- /* Get the size */
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, NULL, 0, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
- g_return_val_if_fail (bytes == len, FALSE);
-
- if (!gkr_buffer_add_uint16 (resp, bits))
- return FALSE;
-
- /* Make a space for it in the buffer */
- buf = gkr_buffer_add_empty (resp, len);
- if (!buf)
- return FALSE;
-
- /* Write in directly to buffer */
- gcry = gcry_mpi_print (GCRYMPI_FMT_USG, buf, bytes, &len, mpi);
- g_return_val_if_fail (gcry == 0, FALSE);
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_read_public (GkrBuffer *req, gsize *offset, gcry_sexp_t *key, int *algo)
-{
- gboolean ret;
- gchar *stype;
- guint sz;
- int alg;
-
- /* The key packet size */
- if (!gkr_buffer_get_uint32 (req, *offset, offset, &sz))
- return FALSE;
-
- /* The string algorithm */
- if (!gkr_buffer_get_string (req, *offset, offset, &stype, (GkrBufferAllocator)g_realloc))
- return FALSE;
-
- alg = gkr_ssh_proto_keytype_to_algo (stype);
- g_free (stype);
-
- if (!alg) {
- g_warning ("unsupported algorithm from SSH: %s", stype);
- return FALSE;
- }
-
- switch (alg) {
- case GCRY_PK_RSA:
- ret = gkr_ssh_proto_read_public_rsa (req, offset, key);
- break;
- case GCRY_PK_DSA:
- ret = gkr_ssh_proto_read_public_dsa (req, offset, key);
- break;
- default:
- g_assert_not_reached ();
- return FALSE;
- }
-
- if (!ret) {
- g_warning ("couldn't read incoming SSH private key");
- return FALSE;
- }
-
- if (algo)
- *algo = alg;
- return TRUE;
-}
-
-#define SEXP_PRIVATE_RSA \
- "(private-key" \
- " (rsa" \
- " (n %m)" \
- " (e %m)" \
- " (d %m)" \
- " (p %m)" \
- " (q %m)" \
- " (u %m)))"
-
-gboolean
-gkr_ssh_proto_read_private_rsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t n, e, d, p, q, u;
- gcry_mpi_t tmp;
- int gcry;
-
- if (!gkr_ssh_proto_read_mpi (req, offset, &n) ||
- !gkr_ssh_proto_read_mpi (req, offset, &e) ||
- !gkr_ssh_proto_read_mpi (req, offset, &d) ||
- !gkr_ssh_proto_read_mpi (req, offset, &u) ||
- !gkr_ssh_proto_read_mpi (req, offset, &p) ||
- !gkr_ssh_proto_read_mpi (req, offset, &q))
- return FALSE;
-
- /* Fix up the incoming key so gcrypt likes it */
- if (gcry_mpi_cmp (p, q) > 0) {
- /* P shall be smaller then Q! Swap primes. iqmp becomes u. */
- tmp = p;
- p = q;
- q = tmp;
- } else {
- /* U needs to be recomputed. */
- gcry_mpi_invm (u, p, q);
- }
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PRIVATE_RSA, n, e, d, p, q, u);
- if (gcry) {
- g_warning ("couldn't parse incoming private RSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- gcry_mpi_release (d);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (u);
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_read_private_v1 (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t n, e, d, p, q, u;
- gcry_mpi_t tmp;
- int gcry;
-
- if (!gkr_ssh_proto_read_mpi_v1 (req, offset, &n) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &e) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &d) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &u) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &p) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &q))
- return FALSE;
-
- /* Fix up the incoming key so gcrypt likes it */
- if (gcry_mpi_cmp (p, q) > 0) {
- /* P shall be smaller then Q! Swap primes. iqmp becomes u. */
- tmp = p;
- p = q;
- q = tmp;
- } else {
- /* U needs to be recomputed. */
- gcry_mpi_invm (u, p, q);
- }
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PRIVATE_RSA, n, e, d, p, q, u);
- if (gcry) {
- g_warning ("couldn't parse incoming private RSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (n);
- gcry_mpi_release (e);
- gcry_mpi_release (d);
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (u);
-
- return TRUE;
-}
-
-#define SEXP_PUBLIC_RSA \
- "(public-key" \
- " (rsa" \
- " (n %m)" \
- " (e %m)))"
-
-gboolean
-gkr_ssh_proto_read_public_rsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t n, e;
- int gcry;
-
- if (!gkr_ssh_proto_read_mpi (req, offset, &e) ||
- !gkr_ssh_proto_read_mpi (req, offset, &n))
- return FALSE;
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PUBLIC_RSA, n, e);
- if (gcry) {
- g_warning ("couldn't parse incoming public RSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (n);
- gcry_mpi_release (e);
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_read_public_v1 (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t n, e;
- guint32 bits;
- int gcry;
-
- if (!gkr_buffer_get_uint32 (req, *offset, offset, &bits))
- return FALSE;
-
- if (!gkr_ssh_proto_read_mpi_v1 (req, offset, &e) ||
- !gkr_ssh_proto_read_mpi_v1 (req, offset, &n))
- return FALSE;
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PUBLIC_RSA, n, e);
- if (gcry) {
- g_warning ("couldn't parse incoming public RSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (n);
- gcry_mpi_release (e);
-
- return TRUE;
-}
-
-#define SEXP_PRIVATE_DSA \
- "(private-key" \
- " (dsa" \
- " (p %m)" \
- " (q %m)" \
- " (g %m)" \
- " (y %m)" \
- " (x %m)))"
-
-gboolean
-gkr_ssh_proto_read_private_dsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t p, q, g, y, x;
- int gcry;
-
- if (!gkr_ssh_proto_read_mpi (req, offset, &p) ||
- !gkr_ssh_proto_read_mpi (req, offset, &q) ||
- !gkr_ssh_proto_read_mpi (req, offset, &g) ||
- !gkr_ssh_proto_read_mpi (req, offset, &y) ||
- !gkr_ssh_proto_read_mpi (req, offset, &x))
- return FALSE;
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PRIVATE_DSA, p, q, g, y, x);
- if (gcry) {
- g_warning ("couldn't parse incoming DSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
- gcry_mpi_release (x);
-
- return TRUE;
-}
-
-#define SEXP_PUBLIC_DSA \
- "(public-key" \
- " (dsa" \
- " (p %m)" \
- " (q %m)" \
- " (g %m)" \
- " (y %m)))"
-
-gboolean
-gkr_ssh_proto_read_public_dsa (GkrBuffer *req, gsize *offset, gcry_sexp_t *sexp)
-{
- gcry_mpi_t p, q, g, y;
- int gcry;
-
- if (!gkr_ssh_proto_read_mpi (req, offset, &p) ||
- !gkr_ssh_proto_read_mpi (req, offset, &q) ||
- !gkr_ssh_proto_read_mpi (req, offset, &g) ||
- !gkr_ssh_proto_read_mpi (req, offset, &y))
- return FALSE;
-
- gcry = gcry_sexp_build (sexp, NULL, SEXP_PUBLIC_DSA, p, q, g, y);
- if (gcry) {
- g_warning ("couldn't parse incoming public DSA key: %s", gcry_strerror (gcry));
- return FALSE;
- }
-
- gcry_mpi_release (p);
- gcry_mpi_release (q);
- gcry_mpi_release (g);
- gcry_mpi_release (y);
-
- return TRUE;
-}
-
-gboolean
-gkr_ssh_proto_write_public (GkrBuffer *resp, int algo, gcry_sexp_t key)
-{
- gboolean ret = FALSE;
- gsize blobpos;
- const gchar *salgo;
-
- /* Add a space for the key blob length */
- blobpos = resp->len;
- gkr_buffer_add_uint32 (resp, 0);
-
- salgo = gkr_ssh_proto_algo_to_keytype (algo);
- g_assert (salgo);
- gkr_buffer_add_string (resp, salgo);
-
- switch (algo) {
- case GCRY_PK_RSA:
- ret = gkr_ssh_proto_write_public_rsa (resp, key);
- break;
-
- case GCRY_PK_DSA:
- ret = gkr_ssh_proto_write_public_dsa (resp, key);
- break;
-
- default:
- g_return_val_if_reached (FALSE);
- break;
- }
-
- /* Write back the blob length */
- gkr_buffer_set_uint32 (resp, blobpos, (resp->len - blobpos) - 4);
-
- return ret;
-}
-
-gboolean
-gkr_ssh_proto_write_public_rsa (GkrBuffer *resp, gcry_sexp_t key)
-{
- gcry_mpi_t mpi;
- gboolean ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "rsa", "e", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- if (!ret)
- return ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "rsa", "n", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- return ret;
-}
-
-gboolean
-gkr_ssh_proto_write_public_dsa (GkrBuffer *resp, gcry_sexp_t key)
-{
- gcry_mpi_t mpi;
- gboolean ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "dsa", "p", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- if (!ret)
- return ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "dsa", "q", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- if (!ret)
- return ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "dsa", "g", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- if (!ret)
- return ret;
-
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "dsa", "y", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_STD);
- gcry_mpi_release (mpi);
-
- return ret;
-}
-
-gboolean
-gkr_ssh_proto_write_public_v1 (GkrBuffer *resp, gcry_sexp_t key)
-{
- gboolean ret = FALSE;
- gcry_mpi_t mpi;
- unsigned int bits;
-
- /* This is always an RSA key. */
-
- /* Write out the number of bits of the key */
- bits = gcry_pk_get_nbits (key);
- g_return_val_if_fail (bits > 0, FALSE);
- gkr_buffer_add_uint32 (resp, bits);
-
- /* Write out the exponent */
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "rsa", "e", NULL);
- g_return_val_if_fail (ret, FALSE);
- ret = gkr_ssh_proto_write_mpi_v1 (resp, mpi);
- gcry_mpi_release (mpi);
-
- if (!ret)
- return ret;
-
- /* Write out the public value */
- ret = gkr_crypto_sexp_extract_mpi (key, &mpi, "rsa", "n", NULL);
- g_return_val_if_fail (ret, FALSE);
- ret = gkr_ssh_proto_write_mpi_v1 (resp, mpi);
- gcry_mpi_release (mpi);
-
- return ret;
-}
-
-gboolean
-gkr_ssh_proto_write_signature_rsa (GkrBuffer *resp, gcry_sexp_t ssig)
-{
- gboolean ret;
- gcry_mpi_t mpi;
-
- ret = gkr_crypto_sexp_extract_mpi (ssig, &mpi, "rsa", "s", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_ssh_proto_write_mpi (resp, mpi, GCRYMPI_FMT_USG);
- gcry_mpi_release (mpi);
-
- return ret;
-}
-
-gboolean
-gkr_ssh_proto_write_signature_dsa (GkrBuffer *resp, gcry_sexp_t ssig)
-{
- guchar buffer[GKR_SSH_DSA_SIGNATURE_PADDING * 2];
- gboolean ret;
-
- ret = gkr_crypto_sexp_extract_mpi_aligned (ssig, buffer, GKR_SSH_DSA_SIGNATURE_PADDING,
- "dsa", "r", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- ret = gkr_crypto_sexp_extract_mpi_aligned (ssig, buffer + GKR_SSH_DSA_SIGNATURE_PADDING,
- GKR_SSH_DSA_SIGNATURE_PADDING, "dsa", "s", NULL);
- g_return_val_if_fail (ret, FALSE);
-
- return gkr_buffer_add_byte_array (resp, buffer, sizeof (buffer));
-}
-
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index 64aad1d2..00000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,60 +0,0 @@
-
-EXTRA_DIST = \
- ca-example \
- cu-test \
- test-helpers.c test-helpers.h \
- prep-tests.sh \
- run-tests.sh \
- test.make
-
-INCLUDES= \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(GTK_CFLAGS) \
- $(GLIB_CFLAGS)
-
-LIBS = \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(GTHREAD_LIBS)
-
-noinst_PROGRAMS= \
- list-keyrings \
- test-keyring \
- test-keyring-two
-
-# ------------------------------------------------------------------------------
-# Simply list all the keyrings and whatever they have access to
-
-list_keyrings_SOURCES = \
- list-keyrings.c
-
-list_keyrings_LDADD = \
- $(top_builddir)/library/libgnome-keyring.la
-
-# ------------------------------------------------------------------------------
-# A generic testing program
-
-test_keyring_SOURCES = \
- test-keyrings.c
-
-test_keyring_LDADD = \
- $(top_builddir)/library/libgnome-keyring.la
-
-test_keyring_two_SOURCES = \
- test-keyrings.c
-
-test_keyring_two_LDADD = \
- $(top_builddir)/library/libgnome-keyring.la
-
-
-# ------------------------------------------------------------------------------
-# Run the tests
-
-run: run-auto
-
-run-auto:
- sh run-tests.sh $(top_srcdir) run-auto-test
-
-run-prompt:
- sh run-tests.sh $(top_srcdir) run-prompt-test
diff --git a/tests/ca-example/certs/ca.crt b/tests/ca-example/certs/ca.crt
deleted file mode 100644
index b8d60081..00000000
--- a/tests/ca-example/certs/ca.crt
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDxjCCAy+gAwIBAgIJAOpd4Em2fjp3MA0GCSqGSIb3DQEBBQUAMIGGMRMwEQYK
-CZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPyLGQBGRYHRVhBTVBMRTEeMBwGA1UE
-CxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
-bTEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBsZS5jb20wHhcNMDcxMjIwMTc1NjA2
-WhcNMzUwNTA4MTc1NjA2WjCBhjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmS
-JomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0
-eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkqhkiG9w0BCQEWDmNhQGV4
-YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5OjHuXXN2LG3s
-FHISaZZ6L1RSYgRdTenu1nvqkMn/xvzOz385oede1z/7f6BoXyM0kNWCf4SOXtXr
-EIGmQoeURhFfLCnoK8NHfNcel3IPyMPhdJUMJlc3gfpWm+QxjkyqVyMhyYxC9Pmg
-QC7zx4ZKcQrL3zVGYtg8wxmaKY2HwQIDAQABo4IBODCCATQwHQYDVR0OBBYEFNSE
-nYhMCPaaFynFeQ2R5y25+AcFMIG7BgNVHSMEgbMwgbCAFNSEnYhMCPaaFynFeQ2R
-5y25+AcFoYGMpIGJMIGGMRMwEQYKCZImiZPyLGQBGRYDQ09NMRcwFQYKCZImiZPy
-LGQBGRYHRVhBTVBMRTEeMBwGA1UECxMVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRcw
-FQYDVQQDEw5jYS5leGFtcGxlLmNvbTEdMBsGCSqGSIb3DQEJARYOY2FAZXhhbXBs
-ZS5jb22CCQDqXeBJtn46dzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB
-BjAZBgNVHREEEjAQgQ5jYUBleGFtcGxlLmNvbTAZBgNVHRIEEjAQgQ5jYUBleGFt
-cGxlLmNvbTANBgkqhkiG9w0BAQUFAAOBgQA6xjU2aPgMOh2yyz2KCb6d5gNNvfr4
-pLGpZWilbRkA36OOG43zxeRZoumh1ybyOvhm73cMvNihDUyOf7vQe75Qtp5koGPS
-V3mSruhsRGvOZxcV+SJnBj1exKyH3mdaZA74Xg4y5qkUkywPqnP5Y+E6UMJM7Nmw
-kHk2bKJC5vjxoA==
------END CERTIFICATE-----
diff --git a/tests/ca-example/certs/client.crt b/tests/ca-example/certs/client.crt
deleted file mode 100644
index ddd4a9a6..00000000
--- a/tests/ca-example/certs/client.crt
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDBTCCAm6gAwIBAgIBAzANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
-ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
-ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4MTMwOFoXDTA4MDEx
-OTE4MTMwOFowYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
-B0VYQU1QTEUxDzANBgNVBAMTBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xpZW50
-QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwSA0
-Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYScp/Rv2WRPlxpe7kYAzzh
-qFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhCJwf3afPvyTGaOVuLO93d
-8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d5T0/B8aZYcpVzUiC9EUw
-fTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzVPZqy9j8/f4943rL6V4Ud
-K0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJeKY06RiLl+DCykweLx8la
-ZjIHKlSZAFHPB+bvsQIDAQABoyIwIDAJBgNVHRMEAjAAMBMGA1UdJQQMMAoGCCsG
-AQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBAGxG+re2c/gVEai91X3RrvpjgfsNIrvW
-xx37s4QOBrJn41xaSKN+qznaNbrBm072Ca8L222e5Bi9xdfopTdZyfYMTHL6XTFU
-ELtdTwWoRl8Uhd/vnM2iVqR8k/iyo6ozUJfg/LEe3jX38wRK2xGufzS5YjEAaVjU
-EVAMfd96036K
------END CERTIFICATE-----
diff --git a/tests/ca-example/certs/email.crt b/tests/ca-example/certs/email.crt
deleted file mode 100644
index 5e26d926..00000000
--- a/tests/ca-example/certs/email.crt
+++ /dev/null
@@ -1,19 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDEDCCAnmgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
-ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
-ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4MTAyOVoXDTA4MDEx
-OTE4MTAyOVowYDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
-B0VYQU1QTEUxDjAMBgNVBAMTBWVtYWlsMSAwHgYJKoZIhvcNAQkBFhFlbWFpbEBl
-eGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALGKZRrb
-s6E1i+J0P8bpj2I1nxl/hDkezTgIs0V9SGGEFdwLwG2QqsGu9eD58KCA8pJ65tKG
-XI5XuIozlyw18SfgEL/P4CWWdG99k8Ihyf9UyFP6JE0G0M/8/YDrA1wXaw24adOH
-+CkrZMFgS0DzN39gPu8kggYpyv1re7O4Ls+D2zbELu19j4uDWOAzUY9nRPuIXUQD
-/gKpQMlBi8oVH+ts7rLjc2yiTBTqUMU1ioKW7++LFD/CnZLSwg8SDTUsDf3HYr8F
-ejAZGEgpBiy00COOIzxjMiDr5XgJHm4iCmh/rt4F2IsmpCFlBRJm4hCTKGSDyTCR
-mDY5v27F6SgsbckCAwEAAaMvMC0wCQYDVR0TBAIwADALBgNVHQ8EBAMCBJAwEwYD
-VR0lBAwwCgYIKwYBBQUHAwQwDQYJKoZIhvcNAQEFBQADgYEAeLL/CxUM8BWu2lSs
-CweOyGyU3vjYM4K2wmO0ClDfoSGFkUxjBfuRP92arJ+fQurS9dwKLMz8yr+/X+NT
-K+47rns2hpG5B+YSgGYrIxfKPLFkXRJmDQEhxVe5fGvPAIJeaRKa+cjndyK/taol
-0FOZxhQa+8qBocTde6111xGQn3c=
------END CERTIFICATE-----
diff --git a/tests/ca-example/certs/generic-dsa.crt b/tests/ca-example/certs/generic-dsa.crt
deleted file mode 100644
index 0d81ef21..00000000
--- a/tests/ca-example/certs/generic-dsa.crt
+++ /dev/null
@@ -1,22 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDkjCCAvugAwIBAgIBBDANBgkqhkiG9w0BAQUFADCBhjETMBEGCgmSJomT8ixk
-ARkWA0NPTTEXMBUGCgmSJomT8ixkARkWB0VYQU1QTEUxHjAcBgNVBAsTFUNlcnRp
-ZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5jb20xHTAbBgkq
-hkiG9w0BCQEWDmNhQGV4YW1wbGUuY29tMB4XDTA3MTIyMDE4NDc0N1oXDTA4MDEx
-OTE4NDc0N1owbDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixkARkW
-B0VYQU1QTEUxFDASBgNVBAMTC0dlbmVyaWMgRFNBMSYwJAYJKoZIhvcNAQkBFhdn
-ZW5lcmljLWRzYUBleGFtcGxlLmNvbTCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQCd
-LeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06OI4XXmEHCVdU
-xykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2Yn8wj8y2VYSO
-veFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUetENlaaH+QeAO3
-IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC747afIasS0Q/+
-pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7QdD06pg1BbdaAz
-SxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuMi/w7A4GEAAKB
-gH1y5aPJgkIABsu8t9pP9jp7/C1wC+YXEFBDO1kIR5FNkGl4Ie7KpjpeL7zPe2GY
-uSSJUdMIz+/nWYiSZ2EmOTzGhqQCJO4SxrD2yVuk56MwF8Aj5YtV7qHLm76w1o2f
-80nrJzt7IhjwiLj/eyKlWwShkBv7yVMBS9HsG//hVGu/oxAwDjAMBgNVHRMBAf8E
-AjAAMA0GCSqGSIb3DQEBBQUAA4GBAPRyHCHjWKKVHZ7wSJQOS/Ve8e4DWFiuP9J8
-X4/sXEg59yWjScy9EovZVj5iELZI6OqUArvwVV6w6tewK0BAed4UGp+TyTHjPuJG
-WGxBm2AhtZUlYmpHQ+gA+E9weeFNQWP1QOATmFQ+r18eNH0rUONnR3G0XUYQTgd1
-LgEYxM4t
------END CERTIFICATE-----
diff --git a/tests/ca-example/database.txt b/tests/ca-example/database.txt
deleted file mode 100644
index e69de29b..00000000
--- a/tests/ca-example/database.txt
+++ /dev/null
diff --git a/tests/ca-example/keys/ca.key b/tests/ca-example/keys/ca.key
deleted file mode 100644
index 451f2b18..00000000
--- a/tests/ca-example/keys/ca.key
+++ /dev/null
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQD5OjHuXXN2LG3sFHISaZZ6L1RSYgRdTenu1nvqkMn/xvzOz385
-oede1z/7f6BoXyM0kNWCf4SOXtXrEIGmQoeURhFfLCnoK8NHfNcel3IPyMPhdJUM
-Jlc3gfpWm+QxjkyqVyMhyYxC9PmgQC7zx4ZKcQrL3zVGYtg8wxmaKY2HwQIDAQAB
-AoGBAJv0cJ5KWCAQuVBLkv42mHUo/Mj4kOaaBNLx4GTt6ZlmuXfonCJCT/gnFeCZ
-ApWNQwh3wUOB7D7y1UXc9GRHqXJBLhBWEoqCvRhz7aRAWtwfQ7QI7DaepP5+IiG8
-C3aEh+b2Jqd6bEM4M1Rdywl+Hrs2BZYXarGqdqi126D8HXZpAkEA/W6hGLCOto/k
-qdE9JWMfiolBij6xqfW4HVl+dpGZGRb1IUctnxBUVMcTbLKy4o0KKGr5rnbPjnTG
-gRo1pMetMwJBAPvAqLOJIGT8SImZeW9eAF9jvcmZyVhdXtz9bp+dqbMIHd6rBA1l
-b9PhhT2o1BuEpcrl1brVQSznR/xuMIvS7zsCQC5EzVqRmWyRNsEeN1ilETQcvP99
-VLhf6R5KoYEKMfZXr6dEtHqO46aatdwpf+lGsK0SYsVMYbZzcW5Ol66e2esCQQDD
-CNqpXE6wbZJ0p2WglZ6MR+U8TdvijVN0uRH+rlJN1LfvTWXySud7qndi8WyBdR5M
-NgqCl7vKYdMvCN6rNFsJAkA9cTwm8M1cY0OZfMAlH1CCDzwpo0i5jN2JzwMf//cx
-RWqaOLG1RQOqB2S7yKiiiawI47d5fH4kaMsvLwTnLkN6
------END RSA PRIVATE KEY-----
diff --git a/tests/ca-example/keys/client.key b/tests/ca-example/keys/client.key
deleted file mode 100644
index 206f5272..00000000
--- a/tests/ca-example/keys/client.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEAwSA0Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYS
-cp/Rv2WRPlxpe7kYAzzhqFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhC
-Jwf3afPvyTGaOVuLO93d8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d
-5T0/B8aZYcpVzUiC9EUwfTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzV
-PZqy9j8/f4943rL6V4UdK0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJe
-KY06RiLl+DCykweLx8laZjIHKlSZAFHPB+bvsQIDAQABAoIBAQCQUI1RYnHIdPFO
-qZ+8bvDQ+g8tR30ApjM8QZsBrDRyjg579bhhWVY2jSJdFFdqseTkvoDt9KZzgGQy
-Kj9MYOZru3xRbSfmiWsaLbiUFJJPPaIvpa+BVS2oSjX8BYn2pJbF9MRfclc5CsIS
-qMNl3XUbj8mx2hKdIpJ5EvLD1adKE4Se6peqSZAmEHONNCsrMrQ0GSQqV3viInJr
-tc3kp3HcPffSROWqmc6jAJ77Cs3ApgJavL5RGjx30Kd+dKVq4PXZ+IhWM8dOSput
-wcyxEosiP/W2g0rDgNW2mGOVOwa/D5SnOolicHifdV7idjwLAjkyYgvmBMNSsECj
-yKBkE0gxAoGBAN8iHMumyvriHuj9bSLZ1bcyYFz7jIwUxpHTT7VqN/j/Y1BoBIBy
-ZZLDGMa+ID/brpRHzJQAKSNtbFQ0S1HTSKcFud5OWE8Rp3pQJU+sdeO3pCMWAD1z
-Q4ggF07JjTSSnK+4fcXgEN9P2OdfXy7Rj3HFpSahql55Kp5udoUdzUVFAoGBAN2S
-krlcEuqsEYjqsCJw5pctIwPMvCM51JgirrdETwSGquMklSrobH0PHMlR67gsA/9I
-UGShT0LL4UWYpBn/4xLrLbua5aHIBfQQZp9K6jDZddWS+EFL5JkO/Up4/qM6fUbH
-CuweVv1gd6i2Ti35K60mgx6MqVunaB1k8Q9P3Pl9AoGALSVtxha9Qv21W1bLWh3R
-C/v5W1baHQ2nD6I9omsXYB3sLjydjI+Y1ZT70lptk/4S2JWeYuOVb0GYhYD/LFMf
-hAu4i642V+kuhaTpp7ExOR3S6/ZrngNQSp6TmLFXDKgNY9BkQkEPqN8y971oOMTV
-zSM8QxC6s9q4MM4Q1OYuvjECgYEAsO2V1AW95T45Ukd1FktpFlaomyQlJ0vKgyFO
-unEFV+vhETfpFTY7SzGCHxAXVh1vo62u5Gwayo/a9qQIhepa/IRnJGNv8luyxU1D
-ZPeBQjija0PMkPd1NvNNNuafDuBpoNbX1ev0MqeRZVsN2pAZXE5gbUiNA+8NqEsu
-Yre3EFECgYEA13rXE76zZgsefx+2spjqJDUWEmTDd1460xTtxCCgL9dy4rW5bgwo
-MvINphSUXOwSkn8Oja/IvpN28zSj9W/ci5wU52P5w4blkBmuj8UoCjP2FN1b1OBa
-86mkwVsCYUyyI2apuwrHP77yeb8jXZb+reqSns3hU+HyO/nUTVmnews=
------END RSA PRIVATE KEY-----
diff --git a/tests/ca-example/keys/dsa.params b/tests/ca-example/keys/dsa.params
deleted file mode 100644
index bf5d9f3a..00000000
--- a/tests/ca-example/keys/dsa.params
+++ /dev/null
@@ -1,9 +0,0 @@
------BEGIN DSA PARAMETERS-----
-MIIBHwKBgQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06
-OI4XXmEHCVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2
-Yn8wj8y2VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUet
-ENlaaH+QeAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC7
-47afIasS0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7Qd
-D06pg1BbdaAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuM
-i/w7
------END DSA PARAMETERS-----
diff --git a/tests/ca-example/keys/email.key b/tests/ca-example/keys/email.key
deleted file mode 100644
index 54ae2de5..00000000
--- a/tests/ca-example/keys/email.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAsYplGtuzoTWL4nQ/xumPYjWfGX+EOR7NOAizRX1IYYQV3AvA
-bZCqwa714PnwoIDyknrm0oZcjle4ijOXLDXxJ+AQv8/gJZZ0b32TwiHJ/1TIU/ok
-TQbQz/z9gOsDXBdrDbhp04f4KStkwWBLQPM3f2A+7ySCBinK/Wt7s7guz4PbNsQu
-7X2Pi4NY4DNRj2dE+4hdRAP+AqlAyUGLyhUf62zusuNzbKJMFOpQxTWKgpbv74sU
-P8KdktLCDxINNSwN/cdivwV6MBkYSCkGLLTQI44jPGMyIOvleAkebiIKaH+u3gXY
-iyakIWUFEmbiEJMoZIPJMJGYNjm/bsXpKCxtyQIDAQABAoIBAHJ7n36WNVq6wJ0i
-AQ4vBXp6wUEb7RM4PXToh1FD3Cylk8L1APyl0LZcL8kG4pddDw5NmhIe+gf/oMvd
-QJoNnpfr8GD/lrYmMqbB/0mrqCmxbgxYvJe+0V+M75r18JCtuSZ7yCHTB77kcHAR
-u/UB4MOOOIbUr9Nxl6eaa4YUOnsso3KctxpIVUcl8MNXQ7f9HKDZimkqCkQBHDKJ
-mWIzacFE0OmuuhLNKp0fC0PSt+GhLLclBm7Lwq8nPKY4gCNc0GBYnxddWlm58KLW
-dEjTv1KTXr+9wztBrCh+2rhCHgOfEGexSymvFOXg8eykPpSRRCwsnlGN2Yd5evtW
-0NSO31ECgYEA6GPc9aDtLQOIwLlQbHJLvqE2julI3FhV9sttR/DXgtZuRcMMN6gY
-qHt4cg6g2SchGu8un+aZeMLHCNstS1bj2Szh/RxXxILLkPmZVPi68WMF+sIflNtY
-gVZeU0mADFizMOkFRaGBw31zjkC2k8ZZsLpRoausc2Y4eNhOA/QqzvsCgYEAw5P5
-dZd9UVrExyb1diopuG0iRPkHcC96a7kfn69jlXH0Dsnls2kxCskAB9cJzYLzSSNv
-4M6efD6ZmMwOlwErOkkAu6GV4VjCYU7bildHxY/iUD73xxaWIf37H7bo83yKcDOO
-Z5HXevYlzd8NEQ2sGX6fti2Ea11ycZGJ36h2SwsCgYBjW275RdihykUJwTF1bFie
-JGcjKvKP4uS+I7ORcpNxySRUh1QN57zDLCcO/Nogfe5VibWxf/JWA1D9pFf1Qi0g
-iWQFx7xutE08qrq37bBfzCqeT6kZB78LbVXe3in1HWdfngE3CBpm7pgdVeW5wLBQ
-Mxj7ul586FN0t2aDoj07SQKBgQCLu+W3xoya26dMQuGNk4JLam3ZqbNOzB1DafjW
-NpGH7OraxhV/oeCQPBvxfgpa8vyvfMoqbHV/f5puOR0TdppUAmSrqj9Tyf7XV2gz
-5zg4Rx0DCHovnEuX7cbGWgEGNi0TDULpbKHwEH3iIUNMs+AKNxYVK2A49YMW8Uz4
-p3wdEQKBgQCUPublorKW6KmnobFL0iVWkM8hZL1xVDB4Yj8Xr7/Vpjs/Jb1dX/Hc
-u1fkc6p4d8zmueTfDchEkIrmt49ZqtwvWlH55a8nfPvdrOq8sbcEhRVAzre075R4
-s/yD9FBk1FQSJHhy0IcHSWyf4bq9+kt9t4BaxfMP2d+YPphiUa72OQ==
------END RSA PRIVATE KEY-----
diff --git a/tests/ca-example/keys/generic-dsa.key b/tests/ca-example/keys/generic-dsa.key
deleted file mode 100644
index cdd7ca54..00000000
--- a/tests/ca-example/keys/generic-dsa.key
+++ /dev/null
@@ -1,12 +0,0 @@
------BEGIN DSA PRIVATE KEY-----
-MIIBuwIBAAKBgQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtu
-TI06OI4XXmEHCVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpd
-XFP2Yn8wj8y2VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1D
-KUetENlaaH+QeAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+
-srC747afIasS0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyR
-L7QdD06pg1BbdaAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83
-ymuMi/w7AoGAfXLlo8mCQgAGy7y32k/2Onv8LXAL5hcQUEM7WQhHkU2QaXgh7sqm
-Ol4vvM97YZi5JIlR0wjP7+dZiJJnYSY5PMaGpAIk7hLGsPbJW6TnozAXwCPli1Xu
-ocubvrDWjZ/zSesnO3siGPCIuP97IqVbBKGQG/vJUwFL0ewb/+FUa78CFHgQdcw2
-4vVlnuMrqdmrfXMvzbrw
------END DSA PRIVATE KEY-----
diff --git a/tests/ca-example/profiles/ca.conf b/tests/ca-example/profiles/ca.conf
deleted file mode 100644
index 2bb1987c..00000000
--- a/tests/ca-example/profiles/ca.conf
+++ /dev/null
@@ -1,32 +0,0 @@
-[ req ]
-distinguished_name = req_distinguished_name
-x509_extensions = v3_ca
-string_mask = nombstr
-
-
-[ req_distinguished_name ]
-0.domainComponent = Domain Component
-0.domainComponent_default = COM
-
-1.domainComponent = Second Domain Component
-1.domainComponent_default = EXAMPLE
-
-organizationalUnitName = Organizational Unit Name (eg, section)
-organizationalUnitName_default = Certificate Authority
-
-commonName = Common Name (eg, YOUR name)
-commonName_max = 64
-
-emailAddress = Email Address
-emailAddress_max = 64
-
-[ v3_ca ]
-
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid:always,issuer:always
-
-basicConstraints = critical,CA:true
-keyUsage = critical,cRLSign, keyCertSign
-
-subjectAltName=email:copy
-issuerAltName=issuer:copy
diff --git a/tests/ca-example/profiles/extensions.conf b/tests/ca-example/profiles/extensions.conf
deleted file mode 100644
index 5978d1b3..00000000
--- a/tests/ca-example/profiles/extensions.conf
+++ /dev/null
@@ -1,16 +0,0 @@
-
-[ email ]
-basicConstraints = CA:FALSE
-keyUsage = digitalSignature, dataEncipherment
-extendedKeyUsage = emailProtection
-
-[ server ]
-basicConstraints = CA:FALSE
-extendedKeyUsage = serverAuth
-
-[ client ]
-basicConstraints = CA:FALSE
-extendedKeyUsage = clientAuth
-
-[ generic ]
-basicConstraints = critical,CA:FALSE
diff --git a/tests/ca-example/profiles/request.conf b/tests/ca-example/profiles/request.conf
deleted file mode 100644
index 0a49508f..00000000
--- a/tests/ca-example/profiles/request.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-[ req ]
-distinguished_name = req_distinguished_name
-string_mask = nombstr
-
-
-[ req_distinguished_name ]
-
-0.domainComponent = Domain Component
-0.domainComponent_default = COM
-
-1.domainComponent = Second Domain Component
-1.domainComponent_default = EXAMPLE
-
-commonName = Common Name
-commonName_max = 64
-
-emailAddress = Email Address (again)
-emailAddress_max = 64
diff --git a/tests/ca-example/requests/client.req b/tests/ca-example/requests/client.req
deleted file mode 100644
index 80245700..00000000
--- a/tests/ca-example/requests/client.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICpzCCAY8CAQAwYjETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
-ARkWB0VYQU1QTEUxDzANBgNVBAMTBkNsaWVudDEhMB8GCSqGSIb3DQEJARYSY2xp
-ZW50QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-wSA0Mz92De30Mc0A/P9vzstLERoqGhnwBw0HKbcsQ50KdcYScp/Rv2WRPlxpe7kY
-AzzhqFMInufv1FU2uoYozuNsF1Jf5lR+SolA+E5cPb7SeJhCJwf3afPvyTGaOVuL
-O93d8zUGU74L/741Z/YQCE5FUCO8msc2iQmnc9M1EnVZa14d5T0/B8aZYcpVzUiC
-9EUwfTzrTghnNfkJzEiD9vnqDbsDsIE+H8o7+opMMsUU0ZzVPZqy9j8/f4943rL6
-V4UdK0JO7tEGL+XiFzNl2fCrcEZPqaeMQ3vBq7azukDTrtJeKY06RiLl+DCykweL
-x8laZjIHKlSZAFHPB+bvsQIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAEEfK+a4
-yCsQEfVTVhJnJ519UeX6AaW4dtt1/w02DB2Ntn/O/SoJCtsREWkZTJW1RcqA6hcD
-KWqRu6G5QOOdEDq1OulbI5dPISqjQ+INcgSyo4PznARsx3pzBZ3mfl+WLBypj2wn
-IpNLhF6mKb6dS7rkYywi1kNLXX4U0UtSNx3Hl39xjcKNoNyaPW3P8Lw9ftycjOZf
-HspIXjfcLFBJMnXTV8wZ8LmyhmKt0d0rOlU/OreOo6JfXVSypUaAhFSMdD5ENDxT
-ld9dzQx1FzHNH4Miqf7rKxxhgqIQ+yeaJnaVIqxsX6gvIjtCKj5L5jU/jHArnCGo
-XFlV4rO8nPyAGRE=
------END CERTIFICATE REQUEST-----
diff --git a/tests/ca-example/requests/email.req b/tests/ca-example/requests/email.req
deleted file mode 100644
index 71bd130f..00000000
--- a/tests/ca-example/requests/email.req
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICpTCCAY0CAQAwYDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
-ARkWB0VYQU1QTEUxDjAMBgNVBAMTBWVtYWlsMSAwHgYJKoZIhvcNAQkBFhFlbWFp
-bEBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALGK
-ZRrbs6E1i+J0P8bpj2I1nxl/hDkezTgIs0V9SGGEFdwLwG2QqsGu9eD58KCA8pJ6
-5tKGXI5XuIozlyw18SfgEL/P4CWWdG99k8Ihyf9UyFP6JE0G0M/8/YDrA1wXaw24
-adOH+CkrZMFgS0DzN39gPu8kggYpyv1re7O4Ls+D2zbELu19j4uDWOAzUY9nRPuI
-XUQD/gKpQMlBi8oVH+ts7rLjc2yiTBTqUMU1ioKW7++LFD/CnZLSwg8SDTUsDf3H
-Yr8FejAZGEgpBiy00COOIzxjMiDr5XgJHm4iCmh/rt4F2IsmpCFlBRJm4hCTKGSD
-yTCRmDY5v27F6SgsbckCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4IBAQB312vpA1P4
-Jb35YVmNBtLlUL8OlBLj6hr48NBjkRigHSBeUiKMgUFjbWmTSK1DRddD6hZFTjBm
-S1yquCXxh+JMXi957NVHVk8w3fS1ySFpOxXMmZCjT5edgae7VTDBveDBQfAVtTP+
-02VUhdnwZGQAH7mBM8Ml9iHB5rcgS5BsMexu0YH3p7Qi5DBHeVo6CqbguST1Wczm
-Faql7m329stKQHf1nCOsSroLWb4qugtZ9rxpQJVIqOxVPxP3tBK1GQg/nM/VwI0l
-jMZ8lpn7J77XEYgb+Q642RoXxV8PRLtG4GKeZ13/5LssAsTvS4EkzuhxD+bPAcYu
-WXklJECG6mpw
------END CERTIFICATE REQUEST-----
diff --git a/tests/ca-example/requests/generic-dsa.req b/tests/ca-example/requests/generic-dsa.req
deleted file mode 100644
index f59b5da8..00000000
--- a/tests/ca-example/requests/generic-dsa.req
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN CERTIFICATE REQUEST-----
-MIICcDCCAi4CAQAwbDETMBEGCgmSJomT8ixkARkWA0NPTTEXMBUGCgmSJomT8ixk
-ARkWB0VYQU1QTEUxFDASBgNVBAMTC0dlbmVyaWMgRFNBMSYwJAYJKoZIhvcNAQkB
-FhdnZW5lcmljLWRzYUBleGFtcGxlLmNvbTCCAbcwggEsBgcqhkjOOAQBMIIBHwKB
-gQCdLeaVVA8HNMKFr0UUQe/bj6mJvO+I67hxn/KzCWnMjw9h6vtuTI06OI4XXmEH
-CVdUxykTkp1NSaTanoV8seEbJyyUgFQFBVaFOE8xDHp5RZghAKpdXFP2Yn8wj8y2
-VYSOveFKXj9ySj9A38nbG8mF0imBXNg/nL/EPCynR7JBVwIVAM1DKUetENlaaH+Q
-eAO3IwcENMSZAoGBAJFujxH2WB5bU+sjjePwBTRev6qtYzPAXPd+srC747afIasS
-0Q/+pE0Q40bjdGNipf3fs5Cq8s0tYTYeNzAqUej1X5YI7TP+uJyRL7QdD06pg1Bb
-daAzSxnnGjf2b25IvPRdxgy1XetgOmT+qA8nXeLROgTLNOQqxG83ymuMi/w7A4GE
-AAKBgH1y5aPJgkIABsu8t9pP9jp7/C1wC+YXEFBDO1kIR5FNkGl4Ie7KpjpeL7zP
-e2GYuSSJUdMIz+/nWYiSZ2EmOTzGhqQCJO4SxrD2yVuk56MwF8Aj5YtV7qHLm76w
-1o2f80nrJzt7IhjwiLj/eyKlWwShkBv7yVMBS9HsG//hVGu/oAAwCQYHKoZIzjgE
-AwMxADAuAhUAhUtGgWACqrKIYMG9t2Bjv94s6oMCFQCtjGF1voWxW4HaBofgmbfJ
-cIJkVA==
------END CERTIFICATE REQUEST-----
diff --git a/tests/ca-example/serial.txt b/tests/ca-example/serial.txt
deleted file mode 100644
index 64969239..00000000
--- a/tests/ca-example/serial.txt
+++ /dev/null
@@ -1 +0,0 @@
-04
diff --git a/tests/cu-test/AllTests.c b/tests/cu-test/AllTests.c
deleted file mode 100644
index 5c849ef8..00000000
--- a/tests/cu-test/AllTests.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <stdio.h>
-
-#include "CuTest.h"
-
-CuSuite* CuGetSuite();
-CuSuite* CuStringGetSuite();
-
-void RunAllTests(void)
-{
- CuString *output = CuStringNew();
- CuSuite* suite = CuSuiteNew();
-
- CuSuiteAddSuite(suite, CuGetSuite());
- CuSuiteAddSuite(suite, CuStringGetSuite());
-
- CuSuiteRun(suite);
- CuSuiteSummary(suite, output);
- CuSuiteDetails(suite, output);
- printf("%s\n", output->buffer);
-}
-
-int main(void)
-{
- RunAllTests();
-}
diff --git a/tests/cu-test/CuTest.c b/tests/cu-test/CuTest.c
deleted file mode 100644
index fb4950d6..00000000
--- a/tests/cu-test/CuTest.c
+++ /dev/null
@@ -1,309 +0,0 @@
-#include <assert.h>
-#include <setjmp.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "CuTest.h"
-
-/*-------------------------------------------------------------------------*
- * CuStr
- *-------------------------------------------------------------------------*/
-
-char* CuStrAlloc(int size)
-{
- char* newStr = (char*) malloc( sizeof(char) * (size) );
- return newStr;
-}
-
-char* CuStrCopy(const char* old)
-{
- int len = strlen(old);
- char* newStr = CuStrAlloc(len + 1);
- strcpy(newStr, old);
- return newStr;
-}
-
-/*-------------------------------------------------------------------------*
- * CuString
- *-------------------------------------------------------------------------*/
-
-void CuStringInit(CuString* str)
-{
- str->length = 0;
- str->size = STRING_MAX;
- str->buffer = (char*) malloc(sizeof(char) * str->size);
- str->buffer[0] = '\0';
-}
-
-CuString* CuStringNew(void)
-{
- CuString* str = (CuString*) malloc(sizeof(CuString));
- str->length = 0;
- str->size = STRING_MAX;
- str->buffer = (char*) malloc(sizeof(char) * str->size);
- str->buffer[0] = '\0';
- return str;
-}
-
-void CuStringResize(CuString* str, int newSize)
-{
- str->buffer = (char*) realloc(str->buffer, sizeof(char) * newSize);
- str->size = newSize;
-}
-
-void CuStringAppend(CuString* str, const char* text)
-{
- int length;
-
- if (text == NULL) {
- text = "NULL";
- }
-
- length = strlen(text);
- if (str->length + length + 1 >= str->size)
- CuStringResize(str, str->length + length + 1 + STRING_INC);
- str->length += length;
- strcat(str->buffer, text);
-}
-
-void CuStringAppendChar(CuString* str, char ch)
-{
- char text[2];
- text[0] = ch;
- text[1] = '\0';
- CuStringAppend(str, text);
-}
-
-void CuStringAppendFormat(CuString* str, const char* format, ...)
-{
- va_list argp;
- char buf[HUGE_STRING_LEN];
- va_start(argp, format);
- vsprintf(buf, format, argp);
- va_end(argp);
- CuStringAppend(str, buf);
-}
-
-void CuStringInsert(CuString* str, const char* text, int pos)
-{
- int length = strlen(text);
- if (pos > str->length)
- pos = str->length;
- if (str->length + length + 1 >= str->size)
- CuStringResize(str, str->length + length + 1 + STRING_INC);
- memmove(str->buffer + pos + length, str->buffer + pos, (str->length - pos) + 1);
- str->length += length;
- memcpy(str->buffer + pos, text, length);
-}
-
-/*-------------------------------------------------------------------------*
- * CuTest
- *-------------------------------------------------------------------------*/
-
-void CuTestInit(CuTest* t, const char* name, TestFunction function)
-{
- t->name = CuStrCopy(name);
- t->failed = 0;
- t->ran = 0;
- t->message = NULL;
- t->function = function;
- t->jumpBuf = NULL;
-}
-
-CuTest* CuTestNew(const char* name, TestFunction function)
-{
- CuTest* tc = CU_ALLOC(CuTest);
- CuTestInit(tc, name, function);
- return tc;
-}
-
-void CuTestRun(CuTest* tc)
-{
- jmp_buf buf;
- tc->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- tc->ran = 1;
- (tc->function)(tc);
- }
- tc->jumpBuf = 0;
-}
-
-static void CuFailInternal(CuTest* tc, const char* file, int line, CuString* string)
-{
- char buf[HUGE_STRING_LEN];
-
- sprintf(buf, "%s:%d: ", file, line);
- CuStringInsert(string, buf, 0);
-
- tc->failed = 1;
- tc->message = string->buffer;
- if (tc->jumpBuf != 0) longjmp(*(tc->jumpBuf), 0);
-}
-
-void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message)
-{
- CuString string;
-
- CuStringInit(&string);
- if (message2 != NULL)
- {
- CuStringAppend(&string, message2);
- CuStringAppend(&string, ": ");
- }
- CuStringAppend(&string, message);
- CuFailInternal(tc, file, line, &string);
-}
-
-void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition)
-{
- if (condition) return;
- CuFail_Line(tc, file, line, NULL, message);
-}
-
-void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
- const char* expected, const char* actual)
-{
- CuString string;
- if ((expected == NULL && actual == NULL) ||
- (expected != NULL && actual != NULL &&
- strcmp(expected, actual) == 0))
- {
- return;
- }
-
- CuStringInit(&string);
- if (message != NULL)
- {
- CuStringAppend(&string, message);
- CuStringAppend(&string, ": ");
- }
- CuStringAppend(&string, "expected <");
- CuStringAppend(&string, expected);
- CuStringAppend(&string, "> but was <");
- CuStringAppend(&string, actual);
- CuStringAppend(&string, ">");
- CuFailInternal(tc, file, line, &string);
-}
-
-void CuAssertIntEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
- int expected, int actual)
-{
- char buf[STRING_MAX];
- if (expected == actual) return;
- sprintf(buf, "expected <%d> but was <%d>", expected, actual);
- CuFail_Line(tc, file, line, message, buf);
-}
-
-void CuAssertDblEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
- double expected, double actual, double delta)
-{
- char buf[STRING_MAX];
- if (fabs(expected - actual) <= delta) return;
- sprintf(buf, "expected <%lf> but was <%lf>", expected, actual);
- CuFail_Line(tc, file, line, message, buf);
-}
-
-void CuAssertPtrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
- void* expected, void* actual)
-{
- char buf[STRING_MAX];
- if (expected == actual) return;
- sprintf(buf, "expected pointer <0x%p> but was <0x%p>", expected, actual);
- CuFail_Line(tc, file, line, message, buf);
-}
-
-
-/*-------------------------------------------------------------------------*
- * CuSuite
- *-------------------------------------------------------------------------*/
-
-void CuSuiteInit(CuSuite* testSuite)
-{
- testSuite->count = 0;
- testSuite->failCount = 0;
-}
-
-CuSuite* CuSuiteNew(void)
-{
- CuSuite* testSuite = CU_ALLOC(CuSuite);
- CuSuiteInit(testSuite);
- return testSuite;
-}
-
-void CuSuiteAdd(CuSuite* testSuite, CuTest *testCase)
-{
- assert(testSuite->count < MAX_TEST_CASES);
- testSuite->list[testSuite->count] = testCase;
- testSuite->count++;
-}
-
-void CuSuiteAddSuite(CuSuite* testSuite, CuSuite* testSuite2)
-{
- int i;
- for (i = 0 ; i < testSuite2->count ; ++i)
- {
- CuTest* testCase = testSuite2->list[i];
- CuSuiteAdd(testSuite, testCase);
- }
-}
-
-void CuSuiteRun(CuSuite* testSuite)
-{
- int i;
- for (i = 0 ; i < testSuite->count ; ++i)
- {
- CuTest* testCase = testSuite->list[i];
- CuTestRun(testCase);
- if (testCase->failed) { testSuite->failCount += 1; }
- }
-}
-
-void CuSuiteSummary(CuSuite* testSuite, CuString* summary)
-{
- int i;
- for (i = 0 ; i < testSuite->count ; ++i)
- {
- CuTest* testCase = testSuite->list[i];
- CuStringAppend(summary, testCase->failed ? "F" : ".");
- }
- CuStringAppend(summary, "\n\n");
-}
-
-void CuSuiteDetails(CuSuite* testSuite, CuString* details)
-{
- int i;
- int failCount = 0;
-
- if (testSuite->failCount == 0)
- {
- int passCount = testSuite->count - testSuite->failCount;
- const char* testWord = passCount == 1 ? "test" : "tests";
- CuStringAppendFormat(details, "OK (%d %s)\n", passCount, testWord);
- }
- else
- {
- if (testSuite->failCount == 1)
- CuStringAppend(details, "There was 1 failure:\n");
- else
- CuStringAppendFormat(details, "There were %d failures:\n", testSuite->failCount);
-
- for (i = 0 ; i < testSuite->count ; ++i)
- {
- CuTest* testCase = testSuite->list[i];
- if (testCase->failed)
- {
- failCount++;
- CuStringAppendFormat(details, "%d) %s: %s\n",
- failCount, testCase->name, testCase->message);
- }
- }
- CuStringAppend(details, "\n!!!FAILURES!!!\n");
-
- CuStringAppendFormat(details, "Runs: %d ", testSuite->count);
- CuStringAppendFormat(details, "Passes: %d ", testSuite->count - testSuite->failCount);
- CuStringAppendFormat(details, "Fails: %d\n", testSuite->failCount);
- }
-}
diff --git a/tests/cu-test/CuTest.h b/tests/cu-test/CuTest.h
deleted file mode 100644
index 78c41468..00000000
--- a/tests/cu-test/CuTest.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef CU_TEST_H
-#define CU_TEST_H
-
-#include <setjmp.h>
-#include <stdarg.h>
-
-/* CuString */
-
-char* CuStrAlloc(int size);
-char* CuStrCopy(const char* old);
-
-#define CU_ALLOC(TYPE) ((TYPE*) malloc(sizeof(TYPE)))
-
-#define HUGE_STRING_LEN 8192
-#define STRING_MAX 256
-#define STRING_INC 256
-
-typedef struct
-{
- int length;
- int size;
- char* buffer;
-} CuString;
-
-void CuStringInit(CuString* str);
-CuString* CuStringNew(void);
-void CuStringRead(CuString* str, const char* path);
-void CuStringAppend(CuString* str, const char* text);
-void CuStringAppendChar(CuString* str, char ch);
-void CuStringAppendFormat(CuString* str, const char* format, ...);
-void CuStringInsert(CuString* str, const char* text, int pos);
-void CuStringResize(CuString* str, int newSize);
-
-/* CuTest */
-
-typedef struct CuTest CuTest;
-
-typedef void (*TestFunction)(CuTest *);
-
-struct CuTest
-{
- const char* name;
- TestFunction function;
- int failed;
- int ran;
- const char* message;
- jmp_buf *jumpBuf;
-};
-
-void CuTestInit(CuTest* t, const char* name, TestFunction function);
-CuTest* CuTestNew(const char* name, TestFunction function);
-void CuTestRun(CuTest* tc);
-
-/* Internal versions of assert functions -- use the public versions */
-void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message);
-void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition);
-void CuAssertStrEquals_LineMsg(CuTest* tc,
- const char* file, int line, const char* message,
- const char* expected, const char* actual);
-void CuAssertIntEquals_LineMsg(CuTest* tc,
- const char* file, int line, const char* message,
- int expected, int actual);
-void CuAssertDblEquals_LineMsg(CuTest* tc,
- const char* file, int line, const char* message,
- double expected, double actual, double delta);
-void CuAssertPtrEquals_LineMsg(CuTest* tc,
- const char* file, int line, const char* message,
- void* expected, void* actual);
-
-/* public assert functions */
-
-#define CuFail(tc, ms) CuFail_Line( (tc), __FILE__, __LINE__, NULL, (ms))
-#define CuAssert(tc, ms, cond) CuAssert_Line((tc), __FILE__, __LINE__, (ms), (cond))
-#define CuAssertTrue(tc, cond) CuAssert_Line((tc), __FILE__, __LINE__, "assert failed", (cond))
-
-#define CuAssertStrEquals(tc,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
-#define CuAssertStrEquals_Msg(tc,ms,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
-#define CuAssertIntEquals(tc,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
-#define CuAssertIntEquals_Msg(tc,ms,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
-#define CuAssertDblEquals(tc,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac),(dl))
-#define CuAssertDblEquals_Msg(tc,ms,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac),(dl))
-#define CuAssertPtrEquals(tc,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
-#define CuAssertPtrEquals_Msg(tc,ms,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
-
-#define CuAssertPtrNotNull(tc,p) CuAssert_Line((tc),__FILE__,__LINE__,"null pointer unexpected",(p != NULL))
-#define CuAssertPtrNotNullMsg(tc,msg,p) CuAssert_Line((tc),__FILE__,__LINE__,(msg),(p != NULL))
-
-/* CuSuite */
-
-#define MAX_TEST_CASES 1024
-
-#define SUITE_ADD_TEST(SUITE,TEST) CuSuiteAdd(SUITE, CuTestNew(#TEST, TEST))
-
-typedef struct
-{
- int count;
- CuTest* list[MAX_TEST_CASES];
- int failCount;
-
-} CuSuite;
-
-
-void CuSuiteInit(CuSuite* testSuite);
-CuSuite* CuSuiteNew(void);
-void CuSuiteAdd(CuSuite* testSuite, CuTest *testCase);
-void CuSuiteAddSuite(CuSuite* testSuite, CuSuite* testSuite2);
-void CuSuiteRun(CuSuite* testSuite);
-void CuSuiteSummary(CuSuite* testSuite, CuString* summary);
-void CuSuiteDetails(CuSuite* testSuite, CuString* details);
-
-#endif /* CU_TEST_H */
diff --git a/tests/cu-test/CuTestTest.c b/tests/cu-test/CuTestTest.c
deleted file mode 100644
index 547f1195..00000000
--- a/tests/cu-test/CuTestTest.c
+++ /dev/null
@@ -1,709 +0,0 @@
-#include <assert.h>
-#include <setjmp.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "CuTest.h"
-
-/*-------------------------------------------------------------------------*
- * Helper functions
- *-------------------------------------------------------------------------*/
-
-#define CompareAsserts(tc, message, expected, actual) X_CompareAsserts((tc), __FILE__, __LINE__, (message), (expected), (actual))
-
-static void X_CompareAsserts(CuTest* tc, const char *file, int line, const char* message, const char* expected, const char* actual)
-{
- int mismatch;
- if (expected == NULL || actual == NULL) {
- mismatch = (expected != NULL || actual != NULL);
- } else {
- const char *front = __FILE__ ":";
- const size_t frontLen = strlen(front);
- const size_t expectedLen = strlen(expected);
-
- const char *matchStr = actual;
-
- mismatch = (strncmp(matchStr, front, frontLen) != 0);
- if (!mismatch) {
- matchStr = strchr(matchStr + frontLen, ':');
- mismatch |= (matchStr == NULL || strncmp(matchStr, ": ", 2));
- if (!mismatch) {
- matchStr += 2;
- mismatch |= (strncmp(matchStr, expected, expectedLen) != 0);
- }
- }
- }
-
- CuAssert_Line(tc, file, line, message, !mismatch);
-}
-
-/*-------------------------------------------------------------------------*
- * CuString Test
- *-------------------------------------------------------------------------*/
-
-void TestCuStringNew(CuTest* tc)
-{
- CuString* str = CuStringNew();
- CuAssertTrue(tc, 0 == str->length);
- CuAssertTrue(tc, 0 != str->size);
- CuAssertStrEquals(tc, "", str->buffer);
-}
-
-
-void TestCuStringAppend(CuTest* tc)
-{
- CuString* str = CuStringNew();
- CuStringAppend(str, "hello");
- CuAssertIntEquals(tc, 5, str->length);
- CuAssertStrEquals(tc, "hello", str->buffer);
- CuStringAppend(str, " world");
- CuAssertIntEquals(tc, 11, str->length);
- CuAssertStrEquals(tc, "hello world", str->buffer);
-}
-
-
-void TestCuStringAppendNULL(CuTest* tc)
-{
- CuString* str = CuStringNew();
- CuStringAppend(str, NULL);
- CuAssertIntEquals(tc, 4, str->length);
- CuAssertStrEquals(tc, "NULL", str->buffer);
-}
-
-
-void TestCuStringAppendChar(CuTest* tc)
-{
- CuString* str = CuStringNew();
- CuStringAppendChar(str, 'a');
- CuStringAppendChar(str, 'b');
- CuStringAppendChar(str, 'c');
- CuStringAppendChar(str, 'd');
- CuAssertIntEquals(tc, 4, str->length);
- CuAssertStrEquals(tc, "abcd", str->buffer);
-}
-
-
-void TestCuStringInserts(CuTest* tc)
-{
- CuString* str = CuStringNew();
- CuStringAppend(str, "world");
- CuAssertIntEquals(tc, 5, str->length);
- CuAssertStrEquals(tc, "world", str->buffer);
- CuStringInsert(str, "hell", 0);
- CuAssertIntEquals(tc, 9, str->length);
- CuAssertStrEquals(tc, "hellworld", str->buffer);
- CuStringInsert(str, "o ", 4);
- CuAssertIntEquals(tc, 11, str->length);
- CuAssertStrEquals(tc, "hello world", str->buffer);
- CuStringInsert(str, "!", 11);
- CuAssertIntEquals(tc, 12, str->length);
- CuAssertStrEquals(tc, "hello world!", str->buffer);
-}
-
-
-void TestCuStringResizes(CuTest* tc)
-{
- CuString* str = CuStringNew();
- int i;
- for(i = 0 ; i < STRING_MAX ; ++i)
- {
- CuStringAppend(str, "aa");
- }
- CuAssertTrue(tc, STRING_MAX * 2 == str->length);
- CuAssertTrue(tc, STRING_MAX * 2 <= str->size);
-}
-
-CuSuite* CuStringGetSuite(void)
-{
- CuSuite* suite = CuSuiteNew();
-
- SUITE_ADD_TEST(suite, TestCuStringNew);
- SUITE_ADD_TEST(suite, TestCuStringAppend);
- SUITE_ADD_TEST(suite, TestCuStringAppendNULL);
- SUITE_ADD_TEST(suite, TestCuStringAppendChar);
- SUITE_ADD_TEST(suite, TestCuStringInserts);
- SUITE_ADD_TEST(suite, TestCuStringResizes);
-
- return suite;
-}
-
-/*-------------------------------------------------------------------------*
- * CuTest Test
- *-------------------------------------------------------------------------*/
-
-void TestPasses(CuTest* tc)
-{
- CuAssert(tc, "test should pass", 1 == 0 + 1);
-}
-
-void zTestFails(CuTest* tc)
-{
- CuAssert(tc, "test should fail", 1 == 1 + 1);
-}
-
-
-void TestCuTestNew(CuTest* tc)
-{
- CuTest* tc2 = CuTestNew("MyTest", TestPasses);
- CuAssertStrEquals(tc, "MyTest", tc2->name);
- CuAssertTrue(tc, !tc2->failed);
- CuAssertTrue(tc, tc2->message == NULL);
- CuAssertTrue(tc, tc2->function == TestPasses);
- CuAssertTrue(tc, tc2->ran == 0);
- CuAssertTrue(tc, tc2->jumpBuf == NULL);
-}
-
-
-void TestCuTestInit(CuTest *tc)
-{
- CuTest tc2;
- CuTestInit(&tc2, "MyTest", TestPasses);
- CuAssertStrEquals(tc, "MyTest", tc2.name);
- CuAssertTrue(tc, !tc2.failed);
- CuAssertTrue(tc, tc2.message == NULL);
- CuAssertTrue(tc, tc2.function == TestPasses);
- CuAssertTrue(tc, tc2.ran == 0);
- CuAssertTrue(tc, tc2.jumpBuf == NULL);
-}
-
-void TestCuAssert(CuTest* tc)
-{
- CuTest tc2;
- CuTestInit(&tc2, "MyTest", TestPasses);
-
- CuAssert(&tc2, "test 1", 5 == 4 + 1);
- CuAssertTrue(tc, !tc2.failed);
- CuAssertTrue(tc, tc2.message == NULL);
-
- CuAssert(&tc2, "test 2", 0);
- CuAssertTrue(tc, tc2.failed);
- CompareAsserts(tc, "CuAssert didn't fail", "test 2", tc2.message);
-
- CuAssert(&tc2, "test 3", 1);
- CuAssertTrue(tc, tc2.failed);
- CompareAsserts(tc, "CuAssert didn't fail", "test 2", tc2.message);
-
- CuAssert(&tc2, "test 4", 0);
- CuAssertTrue(tc, tc2.failed);
- CompareAsserts(tc, "CuAssert didn't fail", "test 4", tc2.message);
-
-}
-
-void TestCuAssertPtrEquals_Success(CuTest* tc)
-{
- CuTest tc2;
- int x;
-
- CuTestInit(&tc2, "MyTest", TestPasses);
-
- /* test success case */
- CuAssertPtrEquals(&tc2, &x, &x);
- CuAssertTrue(tc, ! tc2.failed);
- CuAssertTrue(tc, NULL == tc2.message);
-}
-
-void TestCuAssertPtrEquals_Failure(CuTest* tc)
-{
- CuTest tc2;
- int x;
- int* nullPtr = NULL;
- char expected_message[STRING_MAX];
-
- CuTestInit(&tc2, "MyTest", TestPasses);
-
- /* test failing case */
- sprintf(expected_message, "expected pointer <0x%p> but was <0x%p>", nullPtr, &x);
- CuAssertPtrEquals(&tc2, NULL, &x);
- CuAssertTrue(tc, tc2.failed);
- CompareAsserts(tc, "CuAssertPtrEquals failed", expected_message, tc2.message);
-}
-
-void TestCuAssertPtrNotNull_Success(CuTest* tc)
-{
- CuTest tc2;
- int x;
-
- CuTestInit(&tc2, "MyTest", TestPasses);
-
- /* test success case */
- CuAssertPtrNotNull(&tc2, &x);
- CuAssertTrue(tc, ! tc2.failed);
- CuAssertTrue(tc, NULL == tc2.message);
-}
-
-void TestCuAssertPtrNotNull_Failure(CuTest* tc)
-{
- CuTest tc2;
-
- CuTestInit(&tc2, "MyTest", TestPasses);
-
- /* test failing case */
- CuAssertPtrNotNull(&tc2, NULL);
- CuAssertTrue(tc, tc2.failed);
- CompareAsserts(tc, "CuAssertPtrNotNull failed", "null pointer unexpected", tc2.message);
-}
-
-void TestCuTestRun(CuTest* tc)
-{
- CuTest tc2;
- CuTestInit(&tc2, "MyTest", zTestFails);
- CuTestRun(&tc2);
-
- CuAssertStrEquals(tc, "MyTest", tc2.name);
- CuAssertTrue(tc, tc2.failed);
- CuAssertTrue(tc, tc2.ran);
- CompareAsserts(tc, "TestRun failed", "test should fail", tc2.message);
-}
-
-/*-------------------------------------------------------------------------*
- * CuSuite Test
- *-------------------------------------------------------------------------*/
-
-void TestCuSuiteInit(CuTest* tc)
-{
- CuSuite ts;
- CuSuiteInit(&ts);
- CuAssertTrue(tc, ts.count == 0);
- CuAssertTrue(tc, ts.failCount == 0);
-}
-
-void TestCuSuiteNew(CuTest* tc)
-{
- CuSuite* ts = CuSuiteNew();
- CuAssertTrue(tc, ts->count == 0);
- CuAssertTrue(tc, ts->failCount == 0);
-}
-
-void TestCuSuiteAddTest(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc2;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc2, "MyTest", zTestFails);
-
- CuSuiteAdd(&ts, &tc2);
- CuAssertTrue(tc, ts.count == 1);
-
- CuAssertStrEquals(tc, "MyTest", ts.list[0]->name);
-}
-
-void TestCuSuiteAddSuite(CuTest* tc)
-{
- CuSuite* ts1 = CuSuiteNew();
- CuSuite* ts2 = CuSuiteNew();
-
- CuSuiteAdd(ts1, CuTestNew("TestFails1", zTestFails));
- CuSuiteAdd(ts1, CuTestNew("TestFails2", zTestFails));
-
- CuSuiteAdd(ts2, CuTestNew("TestFails3", zTestFails));
- CuSuiteAdd(ts2, CuTestNew("TestFails4", zTestFails));
-
- CuSuiteAddSuite(ts1, ts2);
- CuAssertIntEquals(tc, 4, ts1->count);
-
- CuAssertStrEquals(tc, "TestFails1", ts1->list[0]->name);
- CuAssertStrEquals(tc, "TestFails2", ts1->list[1]->name);
- CuAssertStrEquals(tc, "TestFails3", ts1->list[2]->name);
- CuAssertStrEquals(tc, "TestFails4", ts1->list[3]->name);
-}
-
-void TestCuSuiteRun(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1, tc2, tc3, tc4;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestPasses", TestPasses);
- CuTestInit(&tc2, "TestPasses", TestPasses);
- CuTestInit(&tc3, "TestFails", zTestFails);
- CuTestInit(&tc4, "TestFails", zTestFails);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteAdd(&ts, &tc2);
- CuSuiteAdd(&ts, &tc3);
- CuSuiteAdd(&ts, &tc4);
- CuAssertTrue(tc, ts.count == 4);
-
- CuSuiteRun(&ts);
- CuAssertTrue(tc, ts.count - ts.failCount == 2);
- CuAssertTrue(tc, ts.failCount == 2);
-}
-
-void TestCuSuiteSummary(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1, tc2;
- CuString summary;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestPasses", TestPasses);
- CuTestInit(&tc2, "TestFails", zTestFails);
- CuStringInit(&summary);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteAdd(&ts, &tc2);
- CuSuiteRun(&ts);
-
- CuSuiteSummary(&ts, &summary);
-
- CuAssertTrue(tc, ts.count == 2);
- CuAssertTrue(tc, ts.failCount == 1);
- CuAssertStrEquals(tc, ".F\n\n", summary.buffer);
-}
-
-
-void TestCuSuiteDetails_SingleFail(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1, tc2;
- CuString details;
- const char* front;
- const char* back;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestPasses", TestPasses);
- CuTestInit(&tc2, "TestFails", zTestFails);
- CuStringInit(&details);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteAdd(&ts, &tc2);
- CuSuiteRun(&ts);
-
- CuSuiteDetails(&ts, &details);
-
- CuAssertTrue(tc, ts.count == 2);
- CuAssertTrue(tc, ts.failCount == 1);
-
- front = "There was 1 failure:\n"
- "1) TestFails: ";
- back = "test should fail\n"
- "\n!!!FAILURES!!!\n"
- "Runs: 2 Passes: 1 Fails: 1\n";
-
- CuAssertStrEquals(tc, back, details.buffer + strlen(details.buffer) - strlen(back));
- details.buffer[strlen(front)] = 0;
- CuAssertStrEquals(tc, front, details.buffer);
-}
-
-
-void TestCuSuiteDetails_SinglePass(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1;
- CuString details;
- const char* expected;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestPasses", TestPasses);
- CuStringInit(&details);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteRun(&ts);
-
- CuSuiteDetails(&ts, &details);
-
- CuAssertTrue(tc, ts.count == 1);
- CuAssertTrue(tc, ts.failCount == 0);
-
- expected =
- "OK (1 test)\n";
-
- CuAssertStrEquals(tc, expected, details.buffer);
-}
-
-void TestCuSuiteDetails_MultiplePasses(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1, tc2;
- CuString details;
- const char* expected;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestPasses", TestPasses);
- CuTestInit(&tc2, "TestPasses", TestPasses);
- CuStringInit(&details);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteAdd(&ts, &tc2);
- CuSuiteRun(&ts);
-
- CuSuiteDetails(&ts, &details);
-
- CuAssertTrue(tc, ts.count == 2);
- CuAssertTrue(tc, ts.failCount == 0);
-
- expected =
- "OK (2 tests)\n";
-
- CuAssertStrEquals(tc, expected, details.buffer);
-}
-
-void TestCuSuiteDetails_MultipleFails(CuTest* tc)
-{
- CuSuite ts;
- CuTest tc1, tc2;
- CuString details;
- const char* front;
- const char* mid;
- const char* back;
-
- CuSuiteInit(&ts);
- CuTestInit(&tc1, "TestFails1", zTestFails);
- CuTestInit(&tc2, "TestFails2", zTestFails);
- CuStringInit(&details);
-
- CuSuiteAdd(&ts, &tc1);
- CuSuiteAdd(&ts, &tc2);
- CuSuiteRun(&ts);
-
- CuSuiteDetails(&ts, &details);
-
- CuAssertTrue(tc, ts.count == 2);
- CuAssertTrue(tc, ts.failCount == 2);
-
- front =
- "There were 2 failures:\n"
- "1) TestFails1: ";
- mid = "test should fail\n"
- "2) TestFails2: ";
- back = "test should fail\n"
- "\n!!!FAILURES!!!\n"
- "Runs: 2 Passes: 0 Fails: 2\n";
-
- CuAssertStrEquals(tc, back, details.buffer + strlen(details.buffer) - strlen(back));
- CuAssert(tc, "Couldn't find middle", strstr(details.buffer, mid) != NULL);
- details.buffer[strlen(front)] = 0;
- CuAssertStrEquals(tc, front, details.buffer);
-}
-
-
-/*-------------------------------------------------------------------------*
- * Misc Test
- *-------------------------------------------------------------------------*/
-
-void TestCuStrCopy(CuTest* tc)
-{
- const char* old = "hello world";
- const char* newStr = CuStrCopy(old);
- CuAssert(tc, "old is new", strcmp(old, newStr) == 0);
-}
-
-
-void TestCuStringAppendFormat(CuTest* tc)
-{
- int i;
- char* text = CuStrAlloc(301); /* long string */
- CuString* str = CuStringNew();
- for (i = 0 ; i < 300 ; ++i)
- text[i] = 'a';
- text[300] = '\0';
- CuStringAppendFormat(str, "%s", text);
-
- /* buffer limit raised to HUGE_STRING_LEN so no overflow */
-
- CuAssert(tc, "length of str->buffer is 300", 300 == strlen(str->buffer));
-}
-
-void TestFail(CuTest* tc)
-{
- jmp_buf buf;
- int pointReached = 0;
- CuTest* tc2 = CuTestNew("TestFails", zTestFails);
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuFail(tc2, "hello world");
- pointReached = 1;
- }
- CuAssert(tc, "point was not reached", pointReached == 0);
-}
-
-void TestAssertStrEquals(CuTest* tc)
-{
- jmp_buf buf;
- CuTest *tc2 = CuTestNew("TestAssertStrEquals", zTestFails);
-
- const char* expected = "expected <hello> but was <world>";
- const char *expectedMsg = "some text: expected <hello> but was <world>";
-
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals(tc2, "hello", "world");
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals failed", expected, tc2->message);
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals_Msg(tc2, "some text", "hello", "world");
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals failed", expectedMsg, tc2->message);
-}
-
-void TestAssertStrEquals_NULL(CuTest* tc)
-{
- jmp_buf buf;
- CuTest *tc2 = CuTestNew("TestAssertStrEquals_NULL", zTestFails);
-
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals(tc2, NULL, NULL);
- }
- CuAssertTrue(tc, !tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_NULL failed", NULL, tc2->message);
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals_Msg(tc2, "some text", NULL, NULL);
- }
- CuAssertTrue(tc, !tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_NULL failed", NULL, tc2->message);
-}
-
-void TestAssertStrEquals_FailNULLStr(CuTest* tc)
-{
- jmp_buf buf;
- CuTest *tc2 = CuTestNew("TestAssertStrEquals_FailNULLStr", zTestFails);
-
- const char* expected = "expected <hello> but was <NULL>";
- const char *expectedMsg = "some text: expected <hello> but was <NULL>";
-
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals(tc2, "hello", NULL);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_FailNULLStr failed", expected, tc2->message);
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals_Msg(tc2, "some text", "hello", NULL);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_FailNULLStr failed", expectedMsg, tc2->message);
-}
-
-void TestAssertStrEquals_FailStrNULL(CuTest* tc)
-{
- jmp_buf buf;
- CuTest *tc2 = CuTestNew("TestAssertStrEquals_FailStrNULL", zTestFails);
-
- const char* expected = "expected <NULL> but was <hello>";
- const char *expectedMsg = "some text: expected <NULL> but was <hello>";
-
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals(tc2, NULL, "hello");
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_FailStrNULL failed", expected, tc2->message);
- if (setjmp(buf) == 0)
- {
- CuAssertStrEquals_Msg(tc2, "some text", NULL, "hello");
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals_FailStrNULL failed", expectedMsg, tc2->message);
-}
-
-void TestAssertIntEquals(CuTest* tc)
-{
- jmp_buf buf;
- CuTest *tc2 = CuTestNew("TestAssertIntEquals", zTestFails);
- const char* expected = "expected <42> but was <32>";
- const char* expectedMsg = "some text: expected <42> but was <32>";
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertIntEquals(tc2, 42, 32);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertIntEquals failed", expected, tc2->message);
- if (setjmp(buf) == 0)
- {
- CuAssertIntEquals_Msg(tc2, "some text", 42, 32);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertStrEquals failed", expectedMsg, tc2->message);
-}
-
-void TestAssertDblEquals(CuTest* tc)
-{
- jmp_buf buf;
- double x = 3.33;
- double y = 10.0 / 3.0;
- CuTest *tc2 = CuTestNew("TestAssertDblEquals", zTestFails);
- char expected[STRING_MAX];
- char expectedMsg[STRING_MAX];
- sprintf(expected, "expected <%lf> but was <%lf>", x, y);
- sprintf(expectedMsg, "some text: expected <%lf> but was <%lf>", x, y);
-
- CuTestInit(tc2, "TestAssertDblEquals", TestPasses);
-
- CuAssertDblEquals(tc2, x, x, 0.0);
- CuAssertTrue(tc, ! tc2->failed);
- CuAssertTrue(tc, NULL == tc2->message);
-
- CuAssertDblEquals(tc2, x, y, 0.01);
- CuAssertTrue(tc, ! tc2->failed);
- CuAssertTrue(tc, NULL == tc2->message);
-
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertDblEquals(tc2, x, y, 0.001);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertDblEquals failed", expected, tc2->message);
- tc2->jumpBuf = &buf;
- if (setjmp(buf) == 0)
- {
- CuAssertDblEquals_Msg(tc2, "some text", x, y, 0.001);
- }
- CuAssertTrue(tc, tc2->failed);
- CompareAsserts(tc, "CuAssertDblEquals failed", expectedMsg, tc2->message);
-}
-
-/*-------------------------------------------------------------------------*
- * main
- *-------------------------------------------------------------------------*/
-
-CuSuite* CuGetSuite(void)
-{
- CuSuite* suite = CuSuiteNew();
-
- SUITE_ADD_TEST(suite, TestCuStringAppendFormat);
- SUITE_ADD_TEST(suite, TestCuStrCopy);
- SUITE_ADD_TEST(suite, TestFail);
- SUITE_ADD_TEST(suite, TestAssertStrEquals);
- SUITE_ADD_TEST(suite, TestAssertStrEquals_NULL);
- SUITE_ADD_TEST(suite, TestAssertStrEquals_FailStrNULL);
- SUITE_ADD_TEST(suite, TestAssertStrEquals_FailNULLStr);
- SUITE_ADD_TEST(suite, TestAssertIntEquals);
- SUITE_ADD_TEST(suite, TestAssertDblEquals);
-
- SUITE_ADD_TEST(suite, TestCuTestNew);
- SUITE_ADD_TEST(suite, TestCuTestInit);
- SUITE_ADD_TEST(suite, TestCuAssert);
- SUITE_ADD_TEST(suite, TestCuAssertPtrEquals_Success);
- SUITE_ADD_TEST(suite, TestCuAssertPtrEquals_Failure);
- SUITE_ADD_TEST(suite, TestCuAssertPtrNotNull_Success);
- SUITE_ADD_TEST(suite, TestCuAssertPtrNotNull_Failure);
- SUITE_ADD_TEST(suite, TestCuTestRun);
-
- SUITE_ADD_TEST(suite, TestCuSuiteInit);
- SUITE_ADD_TEST(suite, TestCuSuiteNew);
- SUITE_ADD_TEST(suite, TestCuSuiteAddTest);
- SUITE_ADD_TEST(suite, TestCuSuiteAddSuite);
- SUITE_ADD_TEST(suite, TestCuSuiteRun);
- SUITE_ADD_TEST(suite, TestCuSuiteSummary);
- SUITE_ADD_TEST(suite, TestCuSuiteDetails_SingleFail);
- SUITE_ADD_TEST(suite, TestCuSuiteDetails_SinglePass);
- SUITE_ADD_TEST(suite, TestCuSuiteDetails_MultiplePasses);
- SUITE_ADD_TEST(suite, TestCuSuiteDetails_MultipleFails);
-
- return suite;
-}
diff --git a/tests/cu-test/README b/tests/cu-test/README
deleted file mode 100644
index 425381a1..00000000
--- a/tests/cu-test/README
+++ /dev/null
@@ -1,209 +0,0 @@
-HOW TO USE
-
-You can use CuTest to create unit tests to drive your development
-in the style of Extreme Programming. You can also add unit tests to
-existing code to ensure that it works as you suspect.
-
-Your unit tests are an investment. They let you to change your
-code and add new features confidently without worrying about
-accidentally breaking earlier features.
-
-
-LICENSING
-
-For details on licensing see license.txt.
-
-
-GETTING STARTED
-
-To add unit testing to your C code the only files you need are
-CuTest.c and CuTest.h.
-
-CuTestTest.c and AllTests.c have been included to provide an
-example of how to write unit tests and then how to aggregate them
-into suites and into a single AllTests.c file. Suites allow you
-to put group tests into logical sets. AllTests.c combines all the
-suites and runs them.
-
-You should not have to look inside CuTest.c. Looking in
-CuTestTest.c and AllTests.c (for example usage) should be
-sufficient.
-
-After downloading the sources, run your compiler to create an
-executable called AllTests.exe. For example, if you are using
-Windows with the cl.exe compiler you would type:
-
- cl.exe AllTests.c CuTest.c CuTestTest.c
- AllTests.exe
-
-This will run all the unit tests associated with CuTest and print
-the output on the console. You can replace cl.exe with gcc or
-your favorite compiler in the command above.
-
-
-DETAILED EXAMPLE
-
-Here is a more detailed example. We will work through a simple
-test first exercise. The goal is to create a library of string
-utilities. First, lets write a function that converts a
-null-terminated string to all upper case.
-
-Ensure that CuTest.c and CuTest.h are accessible from your C
-project. Next, create a file called StrUtil.c with these
-contents:
-
- #include "CuTest.h"
-
- char* StrToUpper(char* str) {
- return str;
- }
-
- void TestStrToUpper(CuTest *tc) {
- char* input = strdup("hello world");
- char* actual = StrToUpper(input);
- char* expected = "HELLO WORLD";
- CuAssertStrEquals(tc, expected, actual);
- }
-
- CuSuite* StrUtilGetSuite() {
- CuSuite* suite = CuSuiteNew();
- SUITE_ADD_TEST(suite, TestStrToUpper);
- return suite;
- }
-
-Create another file called AllTests.c with these contents:
-
- #include "CuTest.h"
-
- CuSuite* StrUtilGetSuite();
-
- void RunAllTests(void) {
- CuString *output = CuStringNew();
- CuSuite* suite = CuSuiteNew();
-
- CuSuiteAddSuite(suite, StrUtilGetSuite());
-
- CuSuiteRun(suite);
- CuSuiteSummary(suite, output);
- CuSuiteDetails(suite, output);
- printf("%s\n", output->buffer);
- }
-
- int main(void) {
- RunAllTests();
- }
-
-Then type this on the command line:
-
- gcc AllTests.c CuTest.c StrUtil.c
-
-to compile. You can replace gcc with your favorite compiler.
-CuTest should be portable enough to handle all Windows and Unix
-compilers. Then to run the tests type:
-
- a.out
-
-This will print an error because we haven't implemented the
-StrToUpper function correctly. We are just returning the string
-without changing it to upper case.
-
- char* StrToUpper(char* str) {
- return str;
- }
-
-Rewrite this as follows:
-
- char* StrToUpper(char* str) {
- char* p;
- for (p = str ; *p ; ++p) *p = toupper(*p);
- return str;
- }
-
-Recompile and run the tests again. The test should pass this
-time.
-
-
-WHAT TO DO NEXT
-
-At this point you might want to write more tests for the
-StrToUpper function. Here are some ideas:
-
-TestStrToUpper_EmptyString : pass in ""
-TestStrToUpper_UpperCase : pass in "HELLO WORLD"
-TestStrToUpper_MixedCase : pass in "HELLO world"
-TestStrToUpper_Numbers : pass in "1234 hello"
-
-As you write each one of these tests add it to StrUtilGetSuite
-function. If you don't the tests won't be run. Later as you write
-other functions and write tests for them be sure to include those
-in StrUtilGetSuite also. The StrUtilGetSuite function should
-include all the tests in StrUtil.c
-
-Over time you will create another file called FunkyStuff.c
-containing other functions unrelated to StrUtil. Follow the same
-pattern. Create a FunkyStuffGetSuite function in FunkyStuff.c.
-And add FunkyStuffGetSuite to AllTests.c.
-
-The framework is designed in the way it is so that it is easy to
-organize a lot of tests.
-
-THE BIG PICTURE
-
-Each individual test corresponds to a CuTest. These are grouped
-to form a CuSuite. CuSuites can hold CuTests or other CuSuites.
-AllTests.c collects all the CuSuites in the program into a single
-CuSuite which it then runs as a single CuSuite.
-
-The project is open source so feel free to take a peek under the
-hood at the CuTest.c file to see how it works. CuTestTest.c
-contains tests for CuTest.c. So CuTest tests itself.
-
-Since AllTests.c has a main() you will need to exclude this when
-you are building your product. Here is a nicer way to do this if
-you want to avoid messing with multiple builds. Remove the main()
-in AllTests.c. Note that it just calls RunAllTests(). Instead
-we'll call this directly from the main program.
-
-Now in the main() of the actual program check to see if the
-command line option "--test" was passed. If it was then I call
-RunAllTests() from AllTests.c. Otherwise run the real program.
-
-Shipping the tests with the code can be useful. If you customers
-complain about a problem you can ask them to run the unit tests
-and send you the output. This can help you to quickly isolate the
-piece of your system that is malfunctioning in the customer's
-environment.
-
-CuTest offers a rich set of CuAssert functions. Here is a list:
-
-void CuAssert(CuTest* tc, char* message, int condition);
-void CuAssertTrue(CuTest* tc, int condition);
-void CuAssertStrEquals(CuTest* tc, char* expected, char* actual);
-void CuAssertIntEquals(CuTest* tc, int expected, int actual);
-void CuAssertPtrEquals(CuTest* tc, void* expected, void* actual);
-void CuAssertPtrNotNull(CuTest* tc, void* pointer);
-
-The project is open source and so you can add other more powerful
-asserts to make your tests easier to write and more concise.
-Please feel free to send me changes you make so that I can
-incorporate them into future releases.
-
-If you see any errors in this document please contact me at
-asimjalis@peakprogramming.com.
-
-
-AUTOMATING TEST SUITE GENERATION
-
-make-tests.sh will grep through all the .c files in the current
-directory and generate the code to run all the tests contained in
-them. Using this script you don't have to worry about writing
-AllTests.c or dealing with any of the other suite code.
-
-
-CREDITS
-
-[02.23.2003] Dave Glowacki <dglo@hyde.ssec.wisc.edu> has added
-(1) file name and line numbers to the error messages, (2)
-AssertDblEquals for doubles, (3) Assert<X>Equals_Msg version of
-all the Assert<X>Equals to pass in optional message which is
-printed out on assert failure.
diff --git a/tests/cu-test/license.txt b/tests/cu-test/license.txt
deleted file mode 100644
index 5f053ba4..00000000
--- a/tests/cu-test/license.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-NOTE
-
-The license is based on the zlib/libpng license. For more details see
-http://www.opensource.org/licenses/zlib-license.html. The intent of the
-license is to:
-
-- keep the license as simple as possible
-- encourage the use of CuTest in both free and commercial applications
- and libraries
-- keep the source code together
-- give credit to the CuTest contributors for their work
-
-If you ship CuTest in source form with your source distribution, the
-following license document must be included with it in unaltered form.
-If you find CuTest useful we would like to hear about it.
-
-LICENSE
-
-Copyright (c) 2003 Asim Jalis
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not
-claim that you wrote the original software. If you use this software in
-a product, an acknowledgment in the product documentation would be
-appreciated but is not required.
-
-2. Altered source versions must be plainly marked as such, and must not
-be misrepresented as being the original software.
-
-3. This notice may not be removed or altered from any source
-distribution.
diff --git a/tests/cu-test/make-tests.sh b/tests/cu-test/make-tests.sh
deleted file mode 100755
index c210e30e..00000000
--- a/tests/cu-test/make-tests.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/local/bin/bash
-
-# Auto generate single AllTests file for CuTest.
-# Searches through all *.c files in the current directory.
-# Prints to stdout.
-# Author: Asim Jalis
-# Date: 01/08/2003
-
-if test $# -eq 0 ; then FILES=*.c ; else FILES=$* ; fi
-
-echo '
-
-/* This is auto-generated code. Edit at your own peril. */
-
-#include "CuTest.h"
-
-'
-
-cat $FILES | grep '^unit_test_' |
- sed -e 's/(.*$//' \
- -e 's/$/(CuTest*);/' \
- -e 's/^/extern /'
-
-echo \
-'
-
-void RunAllTests(void)
-{
- CuString *output = CuStringNew();
- CuSuite* suite = CuSuiteNew();
-
-'
-cat $FILES | grep '^void Test' |
- sed -e 's/^void //' \
- -e 's/(.*$//' \
- -e 's/^/ SUITE_ADD_TEST(suite, /' \
- -e 's/$/);/'
-
-echo \
-'
- CuSuiteRun(suite);
- CuSuiteSummary(suite, output);
- CuSuiteDetails(suite, output);
- printf("%s\n", output->buffer);
-}
-
-int main(void)
-{
- RunAllTests();
-}
-'
diff --git a/tests/list-keyrings.c b/tests/list-keyrings.c
deleted file mode 100644
index adbdb5bf..00000000
--- a/tests/list-keyrings.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* list-keyrings.c - test app to list keyrings
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome 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.
-
- The Gnome 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-#include "library/gnome-keyring.h"
-
-static GMainLoop *loop = NULL;
-
-
-static void
-string_callback (GnomeKeyringResult result,
- const char *str,
- gpointer data)
-{
- char **out;
-
- out = data;
-
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("string op failed: %d\n", result);
- *out = NULL;
- } else {
- *out = g_strdup (str);
- }
- g_main_loop_quit (loop);
-}
-
-
-static void
-print_keyring_info (GnomeKeyringResult result,
- GnomeKeyringInfo *info,
- gpointer data)
-{
- gboolean *locked;
- locked = data;
-
- *locked = TRUE;
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting keyring info: %d\n", result);
- } else {
- g_print ("lock_on_idle: %d\n", gnome_keyring_info_get_lock_on_idle (info));
- g_print ("lock timeout: %d\n", gnome_keyring_info_get_lock_timeout (info));
- g_print ("mtime: %lu\n", (unsigned long)gnome_keyring_info_get_mtime (info));
- g_print ("ctime: %lu\n", (unsigned long)gnome_keyring_info_get_ctime (info));
- g_print ("locked: %d\n", gnome_keyring_info_get_is_locked (info));
- *locked = gnome_keyring_info_get_is_locked (info);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-print_item_info (GnomeKeyringResult result,
- GnomeKeyringItemInfo *info,
- gpointer data)
-{
- char *secret;
- char *name;
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting item info: %d\n", result);
- } else {
- name = gnome_keyring_item_info_get_display_name (info);
- secret = gnome_keyring_item_info_get_secret (info);
- g_print (" type: %u\n", gnome_keyring_item_info_get_type (info));
- g_print (" name: %s\n", name);
- g_print (" secret: %s\n", secret);
- g_print (" mtime: %lu\n", (unsigned long)gnome_keyring_item_info_get_mtime (info));
- g_print (" ctime: %lu\n", (unsigned long)gnome_keyring_item_info_get_ctime (info));
- gnome_keyring_free_password (secret);
- g_free (name);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-print_attributes (GnomeKeyringResult result,
- GnomeKeyringAttributeList *attributes,
- gpointer data)
-{
- GnomeKeyringAttribute *array;
- int i;
-
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting item attributes: %d\n", result);
- } else {
- array = (GnomeKeyringAttribute *)attributes->data;
- g_print (" Attributes:\n");
- for (i = 0; i < attributes->len; i++) {
- if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- g_print (" %s = '%s'\n", array[i].name, array[i].value.string);
- } else if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32) {
- g_print (" %s = %u\n", array[i].name, array[i].value.integer);
- } else {
- g_print (" %s = ** unsupported attribute type **\n", array[i].name);
- }
- }
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-get_items_callback (GnomeKeyringResult result,
- GList *list,
- gpointer data)
-{
- GList **out;
-
- out = data;
- *out = NULL;
-
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting item list: %d\n", result);
- } else {
- *out = g_list_copy (list);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-string_list_callback (GnomeKeyringResult result,
- GList *list,
- gpointer data)
-{
- GList *l;
- char *name;
- GList **out;
-
- out = data;
-
- *out = NULL;
-
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting keyring list: %d\n", result);
- } else {
- for (l = list; l != NULL; l = l->next) {
- name = l->data;
- *out = g_list_append (*out, g_strdup (name));
- }
- }
-
- g_main_loop_quit (loop);
-}
-
-
-int
-main (int argc, char *argv[])
-{
- GList *keyrings, *l, *items, *ll;
- char *keyring;
- gboolean locked;
- guint32 item_id;
-
- g_set_application_name("list-keyrings");
- loop = g_main_loop_new (NULL, FALSE);
-
- g_print ("Keyrings:\n");
- gnome_keyring_list_keyring_names (string_list_callback, &keyrings, NULL);
- g_main_loop_run (loop);
- for (l = keyrings; l != NULL; l = l->next) {
- keyring = l->data;
- g_print ("\nkeyring: %s\n", keyring);
-
- gnome_keyring_get_info (keyring, print_keyring_info, &locked, NULL);
- g_main_loop_run (loop);
-
- if (1 || !locked) {
- gnome_keyring_list_item_ids (keyring, get_items_callback, &items, NULL);
- g_main_loop_run (loop);
-
- if (items != NULL) {
- g_print ("Items: \n");
- }
- for (ll = items; ll != NULL; ll = ll->next) {
- item_id = GPOINTER_TO_UINT(ll->data);
-
- g_print ("\n");
- g_print (" id: %u\n", item_id);
- gnome_keyring_item_get_info (keyring,
- item_id,
- print_item_info, NULL, NULL);
- g_main_loop_run (loop);
- gnome_keyring_item_get_attributes (keyring,
- item_id,
- print_attributes, NULL, NULL);
- g_main_loop_run (loop);
- }
- g_list_free (items);
- }
-
- g_free (keyring);
- }
- g_list_free (keyrings);
-
- gnome_keyring_get_default_keyring (string_callback, &keyring, NULL);
- g_main_loop_run (loop);
- g_print ("\n");
- if (keyring != NULL) {
- g_print ("The default keyring for storage is '%s'\n", keyring);
- } else {
- g_print ("No default keyring defined\n");
- }
-
- return 0;
-}
diff --git a/tests/prep-tests.sh b/tests/prep-tests.sh
deleted file mode 100755
index 858842a5..00000000
--- a/tests/prep-tests.sh
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/sh -e
-
-set -e
-
-# --------------------------------------------------------------------
-# FUNCTIONS
-
-usage()
-{
- echo "usage: unit-test-prep.sh -b base-name files.c ..." >&2
- exit 2
-}
-
-# --------------------------------------------------------------------
-# ARGUMENT PARSING
-
-BASE=unit-test
-
-while [ $# -gt 0 ]; do
- case "$1" in
- -b)
- BASE="$2"
- shift
- ;;
- --)
- shift
- break
- ;;
- -*)
- usage
- ;;
- *)
- break
- ;;
- esac
- shift
-done
-
-FILES=$*
-
-# --------------------------------------------------------------------
-# HEADER FILE
-
-(
-
-# HEADER TOP
-cat << END
-/* This is auto-generated code. Edit at your own peril. */
-#include "tests/cu-test/CuTest.h"
-#include "tests/test-helpers.h"
-#include <stdio.h>
-#include <gtk/gtk.h>
-
-END
-
-# DECLARATIONS
-
- if [ -n "$FILES" ]; then
- cat $FILES | grep '^void unit_setup_' | sed -e 's/$/;/'
- cat $FILES | grep '^void unit_test_' | sed -e 's/$/;/'
- cat $FILES | grep '^void unit_teardown_' | sed -e 's/$/;/'
- fi
-
-) > $BASE.h
-
-# --------------------------------------------------------------------
-# SOURCE FILE
-
-(
-# START RUNNER FUNCTION
-cat << END
-/* This is auto-generated code. Edit at your own peril. */
-#include "$BASE.h"
-
-static int RunAllTests(void)
-{
- CuString *output = CuStringNew();
- CuSuite* suite = CuSuiteNew();
-
-END
-
- if [ -n "$FILES" ]; then
- cat $FILES | grep '^void unit_setup_' | \
- sed -e 's/^void //' -e 's/(.*$//' -e 's/$/();/'
- cat $FILES | grep '^void unit_test_' | \
- sed -e 's/^void //' -e 's/(.*$//' \
- -e 's/^/SUITE_ADD_TEST(suite, /' -e 's/$/);/'
- fi
-
-# MIDDLE RUNNER FUNCTION
-cat << END
- CuSuiteRun(suite);
- CuSuiteSummary(suite, output);
- CuSuiteDetails(suite, output);
- printf("%s\\n", output->buffer);
-END
-
- if [ -n "$FILES" ]; then
-
- cat $FILES | grep '^void unit_teardown_' | \
- sed -e 's/^void //' -e 's/(.*$//' -e 's/$/();/'
-
- fi
-
-# END RUNNER FUNCTION
-cat << END
-
- return suite->failCount;
-}
-
-#include "tests/test-helpers.c"
-#include "tests/cu-test/CuTest.c"
-END
-) > $BASE.c
-
diff --git a/tests/run-tests.sh b/tests/run-tests.sh
deleted file mode 100644
index 7a3fbc76..00000000
--- a/tests/run-tests.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh -e
-
-set -e
-
-if [ $# -ne 2 ]; then
- echo "specify top directory, and program names"
- exit 2
-fi
-
-TOP=$1
-PRG=$2
-
-cd $TOP
-for component in *; do
- if [ -f "$component/tests/$PRG" ]; then
- echo "<<<<< Running tests in '$component' >>>>>"
- $component/tests/$PRG
- fi
-done
-
diff --git a/tests/test-helpers.c b/tests/test-helpers.c
deleted file mode 100644
index 199f0fe2..00000000
--- a/tests/test-helpers.c
+++ /dev/null
@@ -1,116 +0,0 @@
-
-/* This file is included into the main .c file for each unit-test program */
-
-#include <glib.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "test-helpers.h"
-
-#include "common/gkr-secure-memory.h"
-
-static GStaticMutex memory_mutex = G_STATIC_MUTEX_INIT;
-void gkr_memory_lock (void)
-{
- g_static_mutex_lock (&memory_mutex);
-}
-
-void gkr_memory_unlock (void)
-{
- g_static_mutex_unlock (&memory_mutex);
-}
-
-void* gkr_memory_fallback (void *p, unsigned long sz)
-{
- return g_realloc (p, sz);
-}
-
-#ifndef EXTERNAL_TEST
-#include "common/gkr-async.h"
-#endif
-
-static GMainLoop *mainloop = NULL;
-
-static gboolean
-quit_loop (gpointer unused)
-{
- g_main_loop_quit (mainloop);
- return TRUE;
-}
-
-void
-test_mainloop_quit (void)
-{
- g_main_loop_quit (mainloop);
-}
-
-void
-test_mainloop_run (int timeout)
-{
- guint id = 0;
-
- if (timeout)
- id = g_timeout_add (timeout, quit_loop, NULL);
- g_main_loop_run (mainloop);
- if (timeout)
- g_source_remove (id);
-}
-
-GMainLoop*
-test_mainloop_get (void)
-{
- if (!mainloop)
- mainloop = g_main_loop_new (NULL, FALSE);
- return mainloop;
-}
-
-static void
-chdir_base_dir (char* argv0)
-{
- gchar *dir, *base;
-
- dir = g_path_get_dirname (argv0);
- chdir (dir);
-
- base = g_path_get_basename (dir);
- if (strcmp (base, ".libs") == 0)
- chdir ("..");
-
- g_free (base);
- g_free (dir);
-}
-
-int
-main (int argc, char* argv[])
-{
- GLogLevelFlags fatal_mask;
- const gchar* envi;
-
- g_thread_init (NULL);
-
- envi = getenv ("GNOME_KEYRING_TEST_PATH");
- if (envi) {
- setenv ("GNOME_KEYRING_OUTSIDE_TEST", "TRUE", 1);
- } else {
- setenv ("GNOME_KEYRING_TEST_PATH", "/tmp/test-gnome-keyring", 1);
- g_mkdir_with_parents ("/tmp/test-gnome-keyring", 0777);
- }
-
- chdir_base_dir (argv[0]);
- gtk_init(&argc, &argv);
- mainloop = g_main_loop_new (NULL, FALSE);
-
-#ifndef EXTERNAL_TEST
-
- gkr_async_workers_init (mainloop);
-
-#endif
-
- fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
- fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
- g_log_set_always_fatal (fatal_mask);
-
- return RunAllTests();
-}
diff --git a/tests/test-helpers.h b/tests/test-helpers.h
deleted file mode 100644
index ddc69199..00000000
--- a/tests/test-helpers.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* test-helpers.h: Declarations for common functions called from unit tests
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef TEST_HELPERS_H_
-#define TEST_HELPERS_H_
-
-#include <glib.h>
-
-void test_mainloop_quit (void);
-void test_mainloop_run (int timeout);
-GMainLoop* test_mainloop_get (void);
-
-#endif /*TEST_HELPERS_H_*/
diff --git a/tests/test-keyrings.c b/tests/test-keyrings.c
deleted file mode 100644
index 750e92a2..00000000
--- a/tests/test-keyrings.c
+++ /dev/null
@@ -1,524 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* test-keyrings.c - test app
-
- Copyright (C) 2003 Red Hat, Inc
-
- The Gnome 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.
-
- The Gnome 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-#include <stdlib.h>
-
-#include "library/gnome-keyring.h"
-
-static GMainLoop *loop = NULL;
-
-static void
-print_attributes (GnomeKeyringAttributeList *attributes)
-{
- GnomeKeyringAttribute *array;
- int i;
-
- array = (GnomeKeyringAttribute *)attributes->data;
- g_print (" Attributes:\n");
- for (i = 0; i < attributes->len; i++) {
- if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_STRING) {
- g_print (" %s = '%s'\n", array[i].name, array[i].value.string);
- } else if (array[i].type == GNOME_KEYRING_ATTRIBUTE_TYPE_UINT32) {
- g_print (" %s = %u\n", array[i].name, array[i].value.integer);
- } else {
- g_print (" %s = ** unsupported attribute type **\n", array[i].name);
- }
- }
-}
-
-static const gchar* result_msg[] = {
- "GNOME_KEYRING_RESULT_OK",
- "GNOME_KEYRING_RESULT_DENIED",
- "GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON",
- "GNOME_KEYRING_RESULT_ALREADY_UNLOCKED",
- "GNOME_KEYRING_RESULT_NO_SUCH_KEYRING",
- "GNOME_KEYRING_RESULT_BAD_ARGUMENTS",
- "GNOME_KEYRING_RESULT_IO_ERROR",
- "GNOME_KEYRING_RESULT_CANCELLED",
- "GNOME_KEYRING_RESULT_ALREADY_EXISTS"
-};
-
-static const gchar*
-get_msg_for_keyring_result (GnomeKeyringResult result)
-{
- if (result<=GNOME_KEYRING_RESULT_ALREADY_EXISTS) {
- return result_msg[result];
- } else {
- return "Unknown GnomeKeyringResult";
- }
-}
-
-static void
-ok_cb (GnomeKeyringResult result,
- gpointer data)
-{
- g_print ("%s: %d (%s)\n", (char *)data, result, get_msg_for_keyring_result (result));
- g_main_loop_quit (loop);
-}
-
-static void
-lock_all (void)
-{
- gnome_keyring_lock_all (ok_cb, "lock all", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-lock (char *keyring)
-{
- gnome_keyring_lock (keyring,
- ok_cb, "lock", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-unlock (char *keyring, char *password)
-{
- gnome_keyring_unlock (keyring, password,
- ok_cb, "unlock", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-find_items_cb (GnomeKeyringResult result,
- GList *found_items,
- gpointer data)
-{
- g_print ("found items: res: %d (%s) nr items: %d\n", result, get_msg_for_keyring_result (result), g_list_length (found_items));
-
- if (found_items != NULL) {
- GnomeKeyringFound *found = found_items->data;
-
- g_print ("Found item: keyring=%s, id=%d, secret='%s'\n", found->keyring, found->item_id, found->secret);
- print_attributes (found->attributes);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-find_items (char *attr_val)
-{
- gnome_keyring_find_itemsv (GNOME_KEYRING_ITEM_NOTE,
- find_items_cb, NULL, NULL,
- "testattribute", GNOME_KEYRING_ATTRIBUTE_TYPE_STRING, attr_val,
- NULL);
- g_main_loop_run (loop);
-}
-
-static void
-creat_item_cb (GnomeKeyringResult result,
- guint32 id,
- gpointer data)
-{
- g_print ("created item: res: %d (%s) id: %d\n", result, get_msg_for_keyring_result (result), id);
- g_main_loop_quit (loop);
-}
-
-static void
-create_item (char *name, char *attr_name, gboolean update_if_exists)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
-
- attribute.name = g_strdup ("testattribute");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (attr_name);
-
- attributes = gnome_keyring_attribute_list_new ();
- g_array_append_val (attributes, attribute);
-
- gnome_keyring_item_create (NULL,
- GNOME_KEYRING_ITEM_NOTE,
- name,
- attributes,
- "secret text",
- update_if_exists,
- creat_item_cb, NULL, NULL);
- gnome_keyring_attribute_list_free (attributes);
- g_main_loop_run (loop);
-}
-
-static void
-creat_application_item_cb (GnomeKeyringResult result,
- guint32 id,
- gpointer data)
-{
- g_print ("created application item: res: %d (%s) id: %d\n", result, get_msg_for_keyring_result (result), id);
- g_main_loop_quit (loop);
-}
-
-static void
-create_application_item (char *name, char *attr_name, gboolean update_if_exists)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
-
- attribute.name = g_strdup ("testattribute");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (attr_name);
-
- attributes = gnome_keyring_attribute_list_new ();
- g_array_append_val (attributes, attribute);
-
- gnome_keyring_item_create (NULL,
- GNOME_KEYRING_ITEM_NOTE | GNOME_KEYRING_ITEM_APPLICATION_SECRET,
- name,
- attributes,
- "application secret text",
- update_if_exists,
- creat_application_item_cb, NULL, NULL);
- gnome_keyring_attribute_list_free (attributes);
- g_main_loop_run (loop);
-}
-
-static void
-show_item_cb (GnomeKeyringResult result,
- GnomeKeyringItemInfo *info,
- gpointer data)
-{
- char *secret;
- char *name;
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting item info: %d (%s)\n", result, get_msg_for_keyring_result (result));
- } else {
- name = gnome_keyring_item_info_get_display_name (info);
- secret = gnome_keyring_item_info_get_secret (info);
- g_print (" type: %u\n", gnome_keyring_item_info_get_type (info));
- g_print (" name: %s\n", name);
- g_print (" secret: %s\n", secret);
- g_print (" mtime: %lu\n", (unsigned long)gnome_keyring_item_info_get_mtime (info));
- g_print (" ctime: %lu\n", (unsigned long)gnome_keyring_item_info_get_ctime (info));
- gnome_keyring_free_password (secret);
- g_free (name);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-print_attributes_cb (GnomeKeyringResult result,
- GnomeKeyringAttributeList *attributes,
- gpointer data)
-{
- if (result != GNOME_KEYRING_RESULT_OK) {
- g_print ("error getting item attributes: %d (%s)\n", result, get_msg_for_keyring_result (result));
- } else {
- print_attributes (attributes);
- }
-
- g_main_loop_quit (loop);
-}
-
-static void
-show_item (char *keyring, guint32 item_id, guint32 parts)
-{
- gnome_keyring_item_get_info_full (keyring, item_id, parts,
- show_item_cb, NULL, NULL);
- g_main_loop_run (loop);
- gnome_keyring_item_get_attributes (keyring, item_id,
- print_attributes_cb, NULL, NULL);
- g_main_loop_run (loop);
-}
-
-static void
-delete_item (char *keyring, guint32 item_id)
-{
- gnome_keyring_item_delete (keyring, item_id,
- ok_cb, "delete item", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-set_item_secret (char *keyring, guint32 item_id, char *secret)
-{
- GnomeKeyringItemInfo *info;
-
- info = gnome_keyring_item_info_new ();
- gnome_keyring_item_info_set_secret (info, secret);
- gnome_keyring_item_set_info (keyring, item_id, info,
- ok_cb, "set item", NULL);
- gnome_keyring_item_info_free (info);
- g_main_loop_run (loop);
-}
-
-static void
-set_item_attribute (char *keyring, guint32 item_id, char *value)
-{
- GnomeKeyringAttributeList *attributes;
- GnomeKeyringAttribute attribute;
-
- attribute.name = g_strdup ("testattribute");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (value);
-
- attributes = gnome_keyring_attribute_list_new ();
- g_array_append_val (attributes, attribute);
-
- gnome_keyring_item_set_attributes (keyring, item_id, attributes,
- ok_cb, "set attributes", NULL);
- gnome_keyring_attribute_list_free (attributes);
- g_main_loop_run (loop);
-}
-
-static void
-create_keyring (char *name, char *password)
-{
- gnome_keyring_create (name, password,
- ok_cb, "create keyring", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-set_default (char *name)
-{
- gnome_keyring_set_default_keyring (name,
- ok_cb, "set default", NULL);
- g_main_loop_run (loop);
-}
-
-static void
-set_network_cb (GnomeKeyringResult result,
- guint32 id,
- gpointer data)
-{
- g_print ("set network password: res: %d id: %d\n", result, id);
- g_main_loop_quit (loop);
-}
-
-
-static void
-set_network (char *server, char *password)
-{
- gnome_keyring_set_network_password (NULL /* default keyring */,
- NULL,
- NULL,
- server,
- NULL,
- "smb",
- NULL,
- 0,
- password,
- set_network_cb, NULL, NULL);
- g_main_loop_run (loop);
-}
-
-static void
-set_network_sync (char *server, char *password)
-{
- guint32 id;
- GnomeKeyringResult res;
- res = gnome_keyring_set_network_password_sync (NULL /* default keyring */,
- NULL,
- NULL,
- server,
- NULL,
- "smb",
- NULL,
- 0,
- password,
- &id);
- g_print ("set network password: res: %d id: %d\n", res, id);
-}
-
-static void
-find_network (char *server)
-{
- GnomeKeyringResult res;
- GList *list, *l;
-
- list = NULL;
- res = gnome_keyring_find_network_password_sync (NULL, NULL,
- server, NULL,
- "smb",
- NULL,
- 0,
- &list);
- g_print ("find network password, res: %d, len: %d\n", res, g_list_length (list));
- for (l = list; l != NULL; l = l->next) {
- GnomeKeyringNetworkPasswordData *data;
- data = l->data;
-
- g_print ("%s:%d - proto: %s, server: %s, object: %s, authtype: %s, port: %d, user: %s, domain: %s, password: %s\n",
- data->keyring,
- data->item_id,
- data->protocol,
- data->server,
- data->object,
- data->authtype,
- data->port,
- data->user,
- data->domain,
- data->password);
- }
-}
-
-static void
-list_items_cb (GnomeKeyringResult result, GList *list, gpointer data)
-{
- g_print ("list items: res: %d (%s)\n", result, get_msg_for_keyring_result (result));
- for ( ; list; list = list->next)
- g_print (" id: %d\n", GPOINTER_TO_UINT (list->data));
- g_main_loop_quit (loop);
-}
-
-static void
-list_items (const char *keyring)
-{
- gnome_keyring_list_item_ids (keyring, list_items_cb, NULL, NULL);
- g_main_loop_run (loop);
-}
-
-int
-main (int argc, char *argv[])
-{
- char arg;
-
- g_set_application_name("test-keyring");
- loop = g_main_loop_new (NULL, FALSE);
-
- arg = 0;
- if (argc >= 2) {
- arg = argv[1][0];
- }
-
- if (arg == 'L') {
- lock_all ();
- } else if (arg == 'l') {
- if (argc >= 3) {
- lock (argv[2]);
- } else {
- lock (NULL);
- }
- } else if (arg == 'u') {
- if (argc >= 4) {
- unlock (argv[2], argv[3]);
- } else {
- g_print ("unlock requires keyring and password\n");
- }
- } else if (arg == 'c') {
- if (argc >= 4) {
- create_item (argv[2], argv[3], FALSE);
- } else {
- g_print ("create item requires item name and attr value\n");
- }
- } else if (arg == 'C') {
- if (argc >= 4) {
- create_item (argv[2], argv[3], TRUE);
- } else {
- g_print ("create item requires item name and attr value\n");
- }
-
- } else if (arg == 'A') {
- if (argc >= 4) {
- create_application_item (argv[2], argv[3], FALSE);
- } else {
- g_print ("create application item requires item name and attr value\n");
- }
-
- /* Show complete item information */
- } else if (arg == 'i') {
- if (argc >= 4) {
- show_item (argv[2], atoi(argv[3]), GNOME_KEYRING_ITEM_INFO_SECRET);
- } else {
- g_print ("must give keyring & item id to show\n");
- }
-
- /* Show basic item information */
- } else if (arg == 'b') {
- if (argc >= 4) {
- show_item (argv[2], atoi(argv[3]), GNOME_KEYRING_ITEM_INFO_BASICS);
- } else {
- g_print ("must give keyring & item id to show\n");
- }
- } else if (arg == 'd') {
- if (argc >= 4) {
- delete_item (argv[2] ,atoi (argv[3]));
- } else {
- g_print ("must give keyring & item id to delete\n");
- }
- } else if (arg == 's') {
- if (argc >= 5) {
- set_item_secret (argv[2] ,atoi (argv[3]), argv[4]);
- } else {
- g_print ("must give keyring & item id & secret\n");
- }
- } else if (arg == 'a') {
- if (argc >= 5) {
- set_item_attribute (argv[2] ,atoi (argv[3]), argv[4]);
- } else {
- g_print ("must give keyring & item id & attribute value\n");
- }
- } else if (arg == 'f') {
- if (argc >= 3) {
- find_items (argv[2]);
- } else {
- g_print ("must give testattribute value\n");
- }
- } else if (arg == 'k') {
- if (argc >= 4) {
- create_keyring (argv[2], argv[3]);
- } else if (argc >= 3) {
- create_keyring (argv[2], NULL);
- } else {
- g_print ("create keyring requires keyring name\n");
- }
- } else if (arg == 'D') {
- if (argc >= 3) {
- set_default (argv[2]);
- } else {
- set_default (NULL);
- }
- } else if (arg == 'n') {
- if (argc >= 4) {
- set_network (argv[2], argv[3]);
- } else {
- g_print ("need server & password\n");
- }
- } else if (arg == 'N') {
- if (argc >= 4) {
- set_network_sync (argv[2], argv[3]);
- } else {
- g_print ("need server & password\n");
- }
- } else if (arg == 'p') {
- if (argc >= 3) {
- find_network (argv[2]);
- } else {
- g_print ("need server\n");
- }
- } else if (arg == 't') {
- g_print ("gnome keyring is: %s\n",
- gnome_keyring_is_available ()?"available":"not available");
- } else if (arg == 'I') {
- if (argc >= 3) {
- list_items(argv[2]);
- } else {
- g_print ("need keyring\n");
- }
- } else {
- g_print ("unsupported test\n");
- }
-
-
- return 0;
-}
diff --git a/tests/test.make b/tests/test.make
deleted file mode 100644
index 0cd95758..00000000
--- a/tests/test.make
+++ /dev/null
@@ -1,61 +0,0 @@
-
-# The following need to be declared before this file is included:
-# UNIT_AUTO A list of C files with tests
-# UNIT_PROMPT A list of C files with prompting tests
-# UNIT_LIBS Libraries to link the tests to
-
-# ------------------------------------------------------------------------------
-
-INCLUDES= \
- -I$(top_srcdir) \
- -I$(top_builddir) \
- $(GTK_CFLAGS) \
- $(GLIB_CFLAGS)
-
-LIBS = \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(GTHREAD_LIBS)
-
-noinst_PROGRAMS= \
- run-auto-test \
- run-prompt-test
-
-run-auto-test.c: $(UNIT_AUTO) Makefile.am
- sh $(top_srcdir)/tests/prep-tests.sh -b run-auto-test $(UNIT_AUTO)
-
-run_auto_test_SOURCES = \
- run-auto-test.c \
- run-auto-test.h \
- $(UNIT_AUTO)
-
-run_auto_test_LDADD = \
- $(UNIT_LIBS) \
- $(DAEMON_LIBS)
-
-run_auto_test_CFLAGS = \
- $(UNIT_FLAGS)
-
-run-prompt-test.c: $(UNIT_PROMPT) Makefile.am
- sh $(top_srcdir)/tests/prep-tests.sh -b run-prompt-test $(UNIT_PROMPT)
-
-run_prompt_test_SOURCES = \
- run-prompt-test.c \
- run-prompt-test.h \
- $(UNIT_PROMPT)
-
-run_prompt_test_LDADD = \
- $(UNIT_LIBS) \
- $(DAEMON_LIBS)
-
-run_prompt_test_CFLAGS = \
- $(UNIT_FLAGS)
-
-# ------------------------------------------------------------------------------
-# Run the tests
-
-test-auto: $(noinst_PROGRAMS)
- ./run-auto-test
-
-test-prompt: $(noinst_PROGRAMS)
- ./run-prompt-test
diff --git a/ui/Makefile.am b/ui/Makefile.am
deleted file mode 100644
index e7ef3d39..00000000
--- a/ui/Makefile.am
+++ /dev/null
@@ -1,48 +0,0 @@
-libexec_PROGRAMS= \
- gnome-keyring-ask
-
-INCLUDES= \
- -DPREFIX=\""$(prefix)"\" \
- -DBINDIR=\""$(bindir)"\" \
- -DLIBEXECDIR=\""$(libexecdir)"\" \
- -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
- -I$(top_srcdir) \
- -I$(top_srcdir)/library/ \
- -I$(top_builddir) \
- $(DAEMON_CFLAGS) \
- $(GOBJECT_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS)
-
-gnome_keyring_ask_SOURCES = \
- gkr-ask-entry.c gkr-ask-entry.h \
- gkr-ask-tool.c gkr-ask-tool.h \
- gkr-ask-tool-widgets.c \
- gkr-ask-request.h
-
-gnome_keyring_ask_LDADD = \
- $(top_builddir)/common/libgkr-module-common.la \
- $(GTK_LIBS)
-
-noinst_LTLIBRARIES=libgkr-ui.la
-
-BUILT_SOURCES = \
- gkr-ask-marshal.c gkr-ask-marshal.h
-
-libgkr_ui_la_SOURCES = \
- gkr-ask-request.c gkr-ask-request.h \
- gkr-ask-daemon.c gkr-ask-daemon.h \
- $(BUILT_SOURCES)
-
-libgkr_ui_la_LIBADD = \
- $(GLIB_LIBS) \
- $(GOBJECT_LIBS)
-
-gkr-ask-marshal.h: gkr-ask-marshal.list $(GLIB_GENMARSHAL)
- $(GLIB_GENMARSHAL) $< --header --prefix=gkr_ask_marshal > $@
-
-gkr-ask-marshal.c: gkr-ask-marshal.list $(GLIB_GENMARSHAL)
- echo "#include \"gkr-ask-marshal.h\"" > $@ && \
- $(GLIB_GENMARSHAL) $< --body --prefix=gkr_ask_marshal >> $@
-
-EXTRA_DIST = gkr-ask-marshal.list
diff --git a/ui/gkr-ask-daemon.c b/ui/gkr-ask-daemon.c
deleted file mode 100644
index dfa58772..00000000
--- a/ui/gkr-ask-daemon.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-daemon.c: Global ask functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ask-daemon.h"
-#include "gkr-ask-request.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-cleanup.h"
-
-#include <glib.h>
-
-static gboolean ask_daemon_inited = FALSE;
-
-static GkrAsyncWait *wait_condition = NULL;
-static GkrAskRequest *current_ask = NULL;
-
-static GkrAskHook ask_daemon_hook = NULL;
-static gpointer ask_daemon_hook_data = NULL;
-
-static void
-ask_daemon_cleanup (gpointer unused)
-{
- g_assert (ask_daemon_inited);
-
- if (current_ask)
- gkr_ask_request_cancel (current_ask);
-
- g_assert (wait_condition);
- gkr_async_wait_free (wait_condition);
- wait_condition = NULL;
-
- ask_daemon_inited = FALSE;
-}
-
-static void
-ask_daemon_init (void)
-{
- if (ask_daemon_inited)
- return;
- ask_daemon_inited = TRUE;
-
- wait_condition = gkr_async_wait_new ();
-
- gkr_cleanup_register (ask_daemon_cleanup, NULL);
-}
-
-void
-gkr_ask_daemon_process (GkrAskRequest* ask)
-{
- ask_daemon_init ();
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
- g_assert (!gkr_ask_request_is_complete (ask));
-
- /*
- * Hand it off to the hook. This is used in the test harnesses
- * to verify that a prompt or no prompt was run.
- */
- if (ask_daemon_hook)
- (ask_daemon_hook) (ask, ask_daemon_hook_data);
-
- /* See if it'll complete without a prompt */
- if (gkr_ask_request_check (ask))
- goto done;
-
- if (gkr_async_is_stopping ()) {
- gkr_ask_request_cancel (ask);
- goto done;
- }
-
- /* Wait until no other asks are prompting */
- while (current_ask)
- gkr_async_wait (wait_condition);
-
- g_assert (ask_daemon_inited);
-
- g_object_ref (ask);
- current_ask = ask;
-
- if (!gkr_ask_request_check (ask))
- gkr_ask_request_prompt (ask);
-
- current_ask = NULL;
- g_object_unref (ask);
-
- g_assert (wait_condition);
- gkr_async_notify (wait_condition);
-
-done:
- g_assert (gkr_ask_request_is_complete (ask));
-}
-
-void
-gkr_ask_daemon_set_hook (GkrAskHook hook, gpointer data)
-{
- ask_daemon_hook = hook;
- ask_daemon_hook_data = data;
-}
diff --git a/ui/gkr-ask-daemon.h b/ui/gkr-ask-daemon.h
deleted file mode 100644
index 2c3a7438..00000000
--- a/ui/gkr-ask-daemon.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-daemon.h: Global ask functionality
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef _GKR_ASK_DAEMON_H_
-#define _GKR_ASK_DAEMON_H_
-
-#include <glib.h>
-
-#include "gkr-ask-request.h"
-
-void gkr_ask_daemon_process (GkrAskRequest* ask);
-
-typedef void (*GkrAskHook) (GkrAskRequest* ask, gpointer data);
-
-void gkr_ask_daemon_set_hook (GkrAskHook hook, gpointer data);
-
-#endif /* _GKR_ASK_DAEMON_H_ */
diff --git a/ui/gkr-ask-entry.c b/ui/gkr-ask-entry.c
deleted file mode 100644
index d2384542..00000000
--- a/ui/gkr-ask-entry.c
+++ /dev/null
@@ -1,2734 +0,0 @@
-/*
- * GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * Heavily stripped down for use in pinentry-gtk-2 by Albrecht Dreß
- * <albrecht.dress@arcor.de> Feb. 2004.
- *
- * (C) by Albrecht Dreß 2004 unter the terms of the GNU Lesser General
- * Public License.
- *
- * The entry is invisible by default, uses secure memory methods to
- * allocate the text memory, and all potentially dangerous methods
- * (copy & paste, popup, etc.) have been removed.
- */
-
-/*
- * Modified for inclusion into gnome-keyring by Stef Walter
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include "gkr-ask-entry.h"
-
-#include "common/gkr-secure-memory.h"
-
-#define MIN_ASK_ENTRY_WIDTH 150
-#define DRAW_TIMEOUT 20
-#define INNER_BORDER 2
-
-/* Initial size of buffer, in bytes */
-#define MIN_SIZE 16
-
-/* Maximum size of text buffer, in bytes */
-#define MAX_SIZE G_MAXUSHORT
-
-enum {
- ACTIVATE,
- MOVE_CURSOR,
- INSERT_AT_CURSOR,
- DELETE_FROM_CURSOR,
- LAST_SIGNAL
-};
-
-enum {
- PROP_0,
- PROP_CURSOR_POSITION,
- PROP_SELECTION_BOUND,
- PROP_MAX_LENGTH,
- PROP_HAS_FRAME,
- PROP_INVISIBLE_CHAR,
- PROP_ACTIVATES_DEFAULT,
- PROP_WIDTH_CHARS,
- PROP_SCROLL_OFFSET,
- PROP_TEXT,
- PROP_VISIBILITY
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-/* GObject, GtkObject methods */
-static void gkr_ask_entry_class_init (GkrAskEntryClass *klass);
-static void gkr_ask_entry_editable_init (GtkEditableClass *iface);
-static void gkr_ask_entry_cell_editable_init (GtkCellEditableIface *iface);
-static void gkr_ask_entry_init (GkrAskEntry *entry);
-static void gkr_ask_entry_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gkr_ask_entry_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-static void gkr_ask_entry_finalize (GObject *object);
-
-/* GtkWidget methods */
-static void gkr_ask_entry_realize (GtkWidget *widget);
-static void gkr_ask_entry_unrealize (GtkWidget *widget);
-static void gkr_ask_entry_size_request (GtkWidget *widget, GtkRequisition *requisition);
-static void gkr_ask_entry_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
-static void gkr_ask_entry_draw_frame (GtkWidget *widget);
-static gint gkr_ask_entry_expose (GtkWidget *widget, GdkEventExpose *event);
-static gint gkr_ask_entry_button_press (GtkWidget *widget, GdkEventButton *event);
-static gint gkr_ask_entry_button_release (GtkWidget *widget, GdkEventButton *event);
-static gint gkr_ask_entry_motion_notify (GtkWidget *widget, GdkEventMotion *event);
-static gint gkr_ask_entry_key_press (GtkWidget *widget, GdkEventKey *event);
-static gint gkr_ask_entry_key_release (GtkWidget *widget, GdkEventKey *event);
-static gint gkr_ask_entry_focus_in (GtkWidget *widget, GdkEventFocus *event);
-static gint gkr_ask_entry_focus_out (GtkWidget *widget, GdkEventFocus *event);
-static void gkr_ask_entry_grab_focus (GtkWidget *widget);
-static void gkr_ask_entry_style_set (GtkWidget *widget, GtkStyle *previous_style);
-static void gkr_ask_entry_direction_changed (GtkWidget *widget, GtkTextDirection previous_dir);
-static void gkr_ask_entry_state_changed (GtkWidget *widget, GtkStateType previous_state);
-static void gkr_ask_entry_screen_changed (GtkWidget *widget, GdkScreen *old_screen);
-
-/* GtkEditable method implementations */
-static void gkr_ask_entry_insert_text (GtkEditable *editable, const gchar *new_text,
- gint new_text_length, gint *position);
-static void gkr_ask_entry_delete_text (GtkEditable *editable, gint start_pos, gint end_pos);
-static void gkr_ask_entry_real_set_position (GtkEditable *editable, gint position);
-static gint gkr_ask_entry_get_position (GtkEditable *editable);
-static void gkr_ask_entry_set_selection_bounds (GtkEditable *editable, gint start, gint end);
-static gboolean gkr_ask_entry_get_selection_bounds (GtkEditable *editable, gint *start, gint *end);
-
-/* GtkCellEditable method implementations */
-static void gkr_ask_entry_start_editing (GtkCellEditable *cell_editable, GdkEvent *event);
-
-/* Default signal handlers */
-static void gkr_ask_entry_real_insert_text (GtkEditable *editable, const gchar *new_text,
- gint new_text_length, gint *position);
-static void gkr_ask_entry_real_delete_text (GtkEditable *editable, gint start_pos, gint end_pos);
-static void gkr_ask_entry_move_cursor (GkrAskEntry *entry, GtkMovementStep step,
- gint count, gboolean extend_selection);
-static void gkr_ask_entry_insert_at_cursor (GkrAskEntry *entry, const gchar *str);
-static void gkr_ask_entry_delete_from_cursor (GkrAskEntry *entry, GtkDeleteType type, gint count);
-static void gkr_ask_entry_real_activate (GkrAskEntry *entry);
-static void gkr_ask_entry_keymap_direction_changed (GdkKeymap *keymap, GkrAskEntry *entry);
-
-/* IM Context Callbacks */
-static void gkr_ask_entry_commit_cb(GtkIMContext *context, const gchar *str, GkrAskEntry *entry);
-static void gkr_ask_entry_preedit_changed_cb (GtkIMContext * context, GkrAskEntry *entry);
-static gboolean gkr_ask_entry_retrieve_surrounding_cb (GtkIMContext *context, GkrAskEntry *entry);
-static gboolean gkr_ask_entry_delete_surrounding_cb (GtkIMContext *context, gint offset,
- gint n_chars, GkrAskEntry *entry);
-
-/* Internal routines */
-static void gkr_ask_entry_enter_text (GkrAskEntry *entry, const gchar *str);
-static void gkr_ask_entry_set_positions (GkrAskEntry *entry, gint current_pos, gint selection_bound);
-static void gkr_ask_entry_draw_text (GkrAskEntry *entry);
-static void gkr_ask_entry_draw_cursor (GkrAskEntry *entry);
-static PangoLayout *gkr_ask_entry_ensure_layout(GkrAskEntry *entry, gboolean include_preedit);
-static void gkr_ask_entry_reset_layout (GkrAskEntry *entry);
-static void gkr_ask_entry_queue_draw (GkrAskEntry *entry);
-static void gkr_ask_entry_reset_im_context (GkrAskEntry *entry);
-static void gkr_ask_entry_recompute (GkrAskEntry *entry);
-static gint gkr_ask_entry_find_position (GkrAskEntry *entry, gint x);
-static void gkr_ask_entry_get_cursor_locations (GkrAskEntry *entry, gint *strong_x, gint *weak_x);
-static void gkr_ask_entry_adjust_scroll (GkrAskEntry *entry);
-static gint gkr_ask_entry_move_visually (GkrAskEntry *editable, gint start, gint count);
-static gint gkr_ask_entry_move_logically (GkrAskEntry *entry, gint start, gint count);
-static gboolean gkr_ask_entry_mnemonic_activate (GtkWidget *widget, gboolean group_cycling);
-static void gkr_ask_entry_state_changed (GtkWidget *widget, GtkStateType previous_state);
-static void gkr_ask_entry_check_cursor_blink (GkrAskEntry *entry);
-static void gkr_ask_entry_pend_cursor_blink (GkrAskEntry *entry);
-static void get_text_area_size (GkrAskEntry *entry, gint *x, gint *y, gint *width, gint *height);
-static void get_widget_window_size (GkrAskEntry *entry, gint *x, gint *y, gint *width, gint *height);
-
-#define _gtk_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID
-#define _gtk_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING
-static void _gtk_marshal_VOID__ENUM_INT_BOOLEAN (GClosure *closure, GValue *return_value,
- guint n_param_values, const GValue *param_values,
- gpointer invocation_hint, gpointer marshal_data);
-static void _gtk_marshal_VOID__ENUM_INT (GClosure *closure, GValue *return_value, guint n_param_values,
- const GValue *param_values, gpointer invocation_hint, gpointer marshal_data);
-
-static GtkWidgetClass *parent_class = NULL;
-
-GType
-gkr_ask_entry_get_type(void)
-{
- static GType entry_type = 0;
-
- if (!entry_type) {
- static const GTypeInfo entry_info = {
- sizeof(GkrAskEntryClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) gkr_ask_entry_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(GkrAskEntry),
- 0, /* n_preallocs */
- (GInstanceInitFunc) gkr_ask_entry_init,
- };
-
- static const GInterfaceInfo editable_info = {
- (GInterfaceInitFunc) gkr_ask_entry_editable_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
-
- static const GInterfaceInfo cell_editable_info = {
- (GInterfaceInitFunc) gkr_ask_entry_cell_editable_init, /* interface_init */
- NULL, /* interface_finalize */
- NULL /* interface_data */
- };
-
- entry_type = g_type_register_static(GTK_TYPE_WIDGET, "GkrAskEntry", &entry_info, 0);
- g_type_add_interface_static(entry_type, GTK_TYPE_EDITABLE, &editable_info);
- g_type_add_interface_static(entry_type, GTK_TYPE_CELL_EDITABLE, &cell_editable_info);
- }
-
- return entry_type;
-}
-
-static void
-add_move_binding (GtkBindingSet *binding_set, guint keyval, guint modmask,
- GtkMovementStep step, gint count)
-{
- g_return_if_fail ((modmask & GDK_SHIFT_MASK) == 0);
-
- gtk_binding_entry_add_signal (binding_set, keyval, modmask, "move_cursor", 3,
- G_TYPE_ENUM, step, G_TYPE_INT, count, G_TYPE_BOOLEAN, FALSE);
-
- /* Selection-extending version */
- gtk_binding_entry_add_signal (binding_set, keyval, modmask | GDK_SHIFT_MASK, "move_cursor",
- 3, G_TYPE_ENUM, step, G_TYPE_INT, count, G_TYPE_BOOLEAN, TRUE);
-}
-
-static void
-gkr_ask_entry_class_init(GkrAskEntryClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS(class);
- GtkWidgetClass *widget_class;
- GtkBindingSet *binding_set;
-
- widget_class = (GtkWidgetClass*) class;
- parent_class = g_type_class_peek_parent (class);
-
- gobject_class->finalize = gkr_ask_entry_finalize;
- gobject_class->set_property = gkr_ask_entry_set_property;
- gobject_class->get_property = gkr_ask_entry_get_property;
-
- widget_class->realize = gkr_ask_entry_realize;
- widget_class->unrealize = gkr_ask_entry_unrealize;
- widget_class->size_request = gkr_ask_entry_size_request;
- widget_class->size_allocate = gkr_ask_entry_size_allocate;
- widget_class->expose_event = gkr_ask_entry_expose;
- widget_class->button_press_event = gkr_ask_entry_button_press;
- widget_class->button_release_event = gkr_ask_entry_button_release;
- widget_class->motion_notify_event = gkr_ask_entry_motion_notify;
- widget_class->key_press_event = gkr_ask_entry_key_press;
- widget_class->key_release_event = gkr_ask_entry_key_release;
- widget_class->focus_in_event = gkr_ask_entry_focus_in;
- widget_class->focus_out_event = gkr_ask_entry_focus_out;
- widget_class->grab_focus = gkr_ask_entry_grab_focus;
- widget_class->style_set = gkr_ask_entry_style_set;
- widget_class->direction_changed = gkr_ask_entry_direction_changed;
- widget_class->state_changed = gkr_ask_entry_state_changed;
- widget_class->screen_changed = gkr_ask_entry_screen_changed;
- widget_class->mnemonic_activate = gkr_ask_entry_mnemonic_activate;
-
- class->move_cursor = gkr_ask_entry_move_cursor;
- class->insert_at_cursor = gkr_ask_entry_insert_at_cursor;
- class->delete_from_cursor = gkr_ask_entry_delete_from_cursor;
- class->activate = gkr_ask_entry_real_activate;
-
- g_object_class_install_property (gobject_class, PROP_CURSOR_POSITION,
- g_param_spec_int ("cursor_position", "Cursor Position", "The current position of the insertion cursor in chars",
- 0, MAX_SIZE, 0, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_SELECTION_BOUND,
- g_param_spec_int ("selection_bound", "Selection Bound", "The position of the opposite end of the selection from the cursor in chars",
- 0, MAX_SIZE, 0, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_MAX_LENGTH,
- g_param_spec_int ("max_length", "Maximum length", "Maximum number of characters for this entry. Zero if no maximum",
- 0, MAX_SIZE, 0, G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_HAS_FRAME,
- g_param_spec_boolean("has_frame", "Has Frame", "FALSE removes outside bevel from entry",
- TRUE, G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_INVISIBLE_CHAR,
- g_param_spec_unichar("invisible_char", "Invisible character", "The character to use when masking entry contents (in \"password mode\")",
- '*', G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_ACTIVATES_DEFAULT,
- g_param_spec_boolean ("activates_default", "Activates default", "Whether to activate the default widget (such as the default button in a dialog) when Enter is pressed",
- FALSE, G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_WIDTH_CHARS,
- g_param_spec_int ("width_chars", "Width in chars", "Number of characters to leave space for in the entry",
- -1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_SCROLL_OFFSET,
- g_param_spec_int("scroll_offset", "Scroll offset", "Number of pixels of the entry scrolled off the screen to the left",
- 0, G_MAXINT, 0, G_PARAM_READABLE));
-
- g_object_class_install_property (gobject_class, PROP_TEXT,
- g_param_spec_string("text", "Text", "The contents of the entry",
- "", G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- g_object_class_install_property (gobject_class, PROP_VISIBILITY,
- g_param_spec_boolean ("visibility", "Visibility", "Whether contents are drawn using invisible character",
- FALSE, G_PARAM_READWRITE));
-
- /* Action signals */
-
- signals[ACTIVATE] = g_signal_new ("activate", G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GkrAskEntryClass, activate),
- NULL, NULL, _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0);
- widget_class->activate_signal = signals[ACTIVATE];
-
- signals[MOVE_CURSOR] = g_signal_new ("move_cursor", G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GkrAskEntryClass, move_cursor),
- NULL, NULL, _gtk_marshal_VOID__ENUM_INT_BOOLEAN,
- G_TYPE_NONE, 3, GTK_TYPE_MOVEMENT_STEP, G_TYPE_INT, G_TYPE_BOOLEAN);
-
- signals[INSERT_AT_CURSOR] = g_signal_new("insert_at_cursor", G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GkrAskEntryClass, insert_at_cursor),
- NULL, NULL, _gtk_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
-
- signals[DELETE_FROM_CURSOR] = g_signal_new("delete_from_cursor", G_OBJECT_CLASS_TYPE (gobject_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GkrAskEntryClass, delete_from_cursor),
- NULL, NULL, _gtk_marshal_VOID__ENUM_INT, G_TYPE_NONE, 2,
- GTK_TYPE_DELETE_TYPE, G_TYPE_INT);
-
- /* Key bindings */
-
- binding_set = gtk_binding_set_by_class(class);
-
- /* Moving the insertion point */
- add_move_binding(binding_set, GDK_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
- add_move_binding(binding_set, GDK_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
- add_move_binding(binding_set, GDK_KP_Right, 0, GTK_MOVEMENT_VISUAL_POSITIONS, 1);
- add_move_binding(binding_set, GDK_KP_Left, 0, GTK_MOVEMENT_VISUAL_POSITIONS, -1);
- add_move_binding(binding_set, GDK_Right, GDK_CONTROL_MASK, GTK_MOVEMENT_WORDS, 1);
- add_move_binding(binding_set, GDK_Left, GDK_CONTROL_MASK, GTK_MOVEMENT_WORDS, -1);
- add_move_binding(binding_set, GDK_KP_Right, GDK_CONTROL_MASK, GTK_MOVEMENT_WORDS, 1);
- add_move_binding(binding_set, GDK_KP_Left, GDK_CONTROL_MASK, GTK_MOVEMENT_WORDS, -1);
- add_move_binding(binding_set, GDK_Home, 0, GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
- add_move_binding(binding_set, GDK_End, 0, GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
- add_move_binding(binding_set, GDK_KP_Home, 0, GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1);
- add_move_binding(binding_set, GDK_KP_End, 0, GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1);
- add_move_binding(binding_set, GDK_Home, GDK_CONTROL_MASK, GTK_MOVEMENT_BUFFER_ENDS, -1);
- add_move_binding(binding_set, GDK_End, GDK_CONTROL_MASK, GTK_MOVEMENT_BUFFER_ENDS, 1);
- add_move_binding(binding_set, GDK_KP_Home, GDK_CONTROL_MASK, GTK_MOVEMENT_BUFFER_ENDS, -1);
- add_move_binding(binding_set, GDK_KP_End, GDK_CONTROL_MASK, GTK_MOVEMENT_BUFFER_ENDS, 1);
-
- /* Select all */
- gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK, "move_cursor", 3,
- GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS, G_TYPE_INT, -1,
- G_TYPE_BOOLEAN, FALSE);
- gtk_binding_entry_add_signal (binding_set, GDK_a, GDK_CONTROL_MASK, "move_cursor", 3,
- GTK_TYPE_MOVEMENT_STEP, GTK_MOVEMENT_BUFFER_ENDS, G_TYPE_INT, 1,
- G_TYPE_BOOLEAN, TRUE);
-
- /* Activate */
- gtk_binding_entry_add_signal (binding_set, GDK_Return, 0, "activate", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Enter, 0, "activate", 0);
-
- /* Deleting text */
- gtk_binding_entry_add_signal (binding_set, GDK_Delete, 0, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_CHARS, G_TYPE_INT, 1);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, 0, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_CHARS, G_TYPE_INT, 1);
- gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, 0, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_CHARS, G_TYPE_INT, -1);
- /* Make this do the same as Backspace, to help with mis-typing */
- gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_SHIFT_MASK, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_CHARS, G_TYPE_INT, -1);
- gtk_binding_entry_add_signal (binding_set, GDK_Delete, GDK_CONTROL_MASK, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, G_TYPE_INT, 1);
- gtk_binding_entry_add_signal (binding_set, GDK_KP_Delete, GDK_CONTROL_MASK, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, G_TYPE_INT, 1);
- gtk_binding_entry_add_signal (binding_set, GDK_BackSpace, GDK_CONTROL_MASK, "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, G_TYPE_INT, -1);
-}
-
-static void
-gkr_ask_entry_editable_init (GtkEditableClass *iface)
-{
- iface->do_insert_text = gkr_ask_entry_insert_text;
- iface->do_delete_text = gkr_ask_entry_delete_text;
- iface->insert_text = gkr_ask_entry_real_insert_text;
- iface->delete_text = gkr_ask_entry_real_delete_text;
- iface->set_selection_bounds = gkr_ask_entry_set_selection_bounds;
- iface->get_selection_bounds = gkr_ask_entry_get_selection_bounds;
- iface->set_position = gkr_ask_entry_real_set_position;
- iface->get_position = gkr_ask_entry_get_position;
-}
-
-static void
-gkr_ask_entry_cell_editable_init (GtkCellEditableIface * iface)
-{
- iface->start_editing = gkr_ask_entry_start_editing;
-}
-
-static void
-gkr_ask_entry_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(object);
-
- switch (prop_id) {
- case PROP_MAX_LENGTH:
- gkr_ask_entry_set_max_length(entry, g_value_get_int(value));
- break;
-
- case PROP_HAS_FRAME:
- gkr_ask_entry_set_has_frame(entry, g_value_get_boolean(value));
- break;
-
- case PROP_INVISIBLE_CHAR:
- gkr_ask_entry_set_invisible_char(entry, g_value_get_uint(value));
- break;
-
- case PROP_ACTIVATES_DEFAULT:
- gkr_ask_entry_set_activates_default(entry, g_value_get_boolean(value));
- break;
-
- case PROP_WIDTH_CHARS:
- gkr_ask_entry_set_width_chars(entry, g_value_get_int(value));
- break;
-
- case PROP_TEXT:
- gkr_ask_entry_set_text(entry, g_value_get_string(value));
- break;
-
- case PROP_VISIBILITY:
- gkr_ask_entry_set_visibility (entry, g_value_get_boolean (value));
- break;
-
- case PROP_SCROLL_OFFSET:
- case PROP_CURSOR_POSITION:
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gkr_ask_entry_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(object);
-
- switch (prop_id) {
- case PROP_CURSOR_POSITION:
- g_value_set_int(value, entry->current_pos);
- break;
- case PROP_SELECTION_BOUND:
- g_value_set_int(value, entry->selection_bound);
- break;
- case PROP_MAX_LENGTH:
- g_value_set_int(value, entry->text_max_length);
- break;
- case PROP_HAS_FRAME:
- g_value_set_boolean(value, entry->has_frame);
- break;
- case PROP_INVISIBLE_CHAR:
- g_value_set_uint(value, entry->invisible_char);
- break;
- case PROP_ACTIVATES_DEFAULT:
- g_value_set_boolean(value, entry->activates_default);
- break;
- case PROP_WIDTH_CHARS:
- g_value_set_int(value, entry->width_chars);
- break;
- case PROP_SCROLL_OFFSET:
- g_value_set_int(value, entry->scroll_offset);
- break;
- case PROP_TEXT:
- g_value_set_string(value, gkr_ask_entry_get_text(entry));
- break;
- case PROP_VISIBILITY:
- g_value_set_boolean (value, gkr_ask_entry_get_visibility (entry));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gkr_ask_entry_init (GkrAskEntry *entry)
-{
- GtkStyle *style;
- GtkWidget *tempent;
-
- GTK_WIDGET_SET_FLAGS (entry, GTK_CAN_FOCUS);
-
- /* Get the RC style for a normal GtkEntry */
- style = gtk_rc_get_style_by_paths (gtk_widget_get_settings (GTK_WIDGET (entry)),
- NULL, NULL, GTK_TYPE_ENTRY);
- gtk_widget_set_style (GTK_WIDGET (entry), style);
-
- entry->text_size = MIN_SIZE;
- entry->text = gkr_secure_alloc (entry->text_size + 1);
- entry->text[0] = '\0';
-
- entry->visibility = FALSE;
- entry->width_chars = -1;
- entry->is_cell_renderer = FALSE;
- entry->editing_canceled = FALSE;
- entry->has_frame = TRUE;
-
- /* Use the invisible_char from GtkEntry */
- tempent = gtk_entry_new ();
- entry->invisible_char = gtk_entry_get_invisible_char (GTK_ENTRY (tempent));
- g_object_ref_sink (tempent);
- g_object_unref (tempent);
-
- /*
- * This object is completely private. No external entity can gain a reference
- * to it; so we create it here and destroy it in finalize().
- */
- entry->im_context = gtk_im_multicontext_new ();
-
- g_signal_connect (entry->im_context, "commit",
- G_CALLBACK (gkr_ask_entry_commit_cb), entry);
- g_signal_connect (entry->im_context, "preedit_changed",
- G_CALLBACK(gkr_ask_entry_preedit_changed_cb), entry);
- g_signal_connect (entry->im_context, "retrieve_surrounding",
- G_CALLBACK(gkr_ask_entry_retrieve_surrounding_cb), entry);
- g_signal_connect (entry->im_context, "delete_surrounding",
- G_CALLBACK(gkr_ask_entry_delete_surrounding_cb), entry);
-}
-
-static void
-gkr_ask_entry_finalize (GObject *object)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (object);
-
- if (entry->cached_layout)
- g_object_unref (entry->cached_layout);
-
- g_object_unref (entry->im_context);
-
- if (entry->blink_timeout)
- g_source_remove (entry->blink_timeout);
-
- if (entry->recompute_idle)
- g_source_remove (entry->recompute_idle);
-
- entry->text_size = 0;
-
- if (entry->text)
- gkr_secure_free (entry->text);
- entry->text = NULL;
-
- G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gkr_ask_entry_realize (GtkWidget *widget)
-{
- GkrAskEntry *entry;
- GtkEditable *editable;
- GdkWindowAttr attributes;
- gint attributes_mask;
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
- entry = GKR_ASK_ENTRY (widget);
- editable = GTK_EDITABLE (widget);
-
- attributes.window_type = GDK_WINDOW_CHILD;
-
- get_widget_window_size (entry, &attributes.x, &attributes.y,
- &attributes.width, &attributes.height);
-
- attributes.wclass = GDK_INPUT_OUTPUT;
- attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = gtk_widget_get_events (widget);
- attributes.event_mask |= (GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK |
- GDK_BUTTON_RELEASE_MASK | GDK_BUTTON1_MOTION_MASK |
- GDK_BUTTON3_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
- GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK |
- GDK_LEAVE_NOTIFY_MASK);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
-
- widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
- &attributes, attributes_mask);
- gdk_window_set_user_data (widget->window, entry);
-
- get_text_area_size (entry, &attributes.x, &attributes.y,
- &attributes.width, &attributes.height);
-
- attributes.cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget),
- GDK_XTERM);
- attributes_mask |= GDK_WA_CURSOR;
-
- entry->text_area = gdk_window_new (widget->window, &attributes, attributes_mask);
- gdk_window_set_user_data (entry->text_area, entry);
-
- gdk_cursor_unref (attributes.cursor);
-
- widget->style = gtk_style_attach (widget->style, widget->window);
-
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_WIDGET_STATE (widget)]);
- gdk_window_set_background (entry->text_area,
- &widget->style->base[GTK_WIDGET_STATE (widget)]);
-
- gdk_window_show (entry->text_area);
-
- gtk_im_context_set_client_window (entry->im_context, entry->text_area);
-
- gkr_ask_entry_adjust_scroll (entry);
-}
-
-static void
-gkr_ask_entry_unrealize (GtkWidget *widget)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gkr_ask_entry_reset_layout (entry);
-
- gtk_im_context_set_client_window (entry->im_context, NULL);
-
- if (entry->text_area) {
- gdk_window_set_user_data (entry->text_area, NULL);
- gdk_window_destroy (entry->text_area);
- entry->text_area = NULL;
- }
-
- if (GTK_WIDGET_CLASS (parent_class)->unrealize)
- (*GTK_WIDGET_CLASS (parent_class)->unrealize) (widget);
-}
-
-static void
-get_borders (GkrAskEntry *entry, gint *xborder, gint *yborder)
-{
- GtkWidget *widget = GTK_WIDGET (entry);
- gint focus_width;
- gboolean interior_focus;
-
- gtk_widget_style_get (widget, "interior-focus", &interior_focus,
- "focus-line-width", &focus_width, NULL);
-
- if (entry->has_frame) {
- *xborder = widget->style->xthickness;
- *yborder = widget->style->ythickness;
- } else {
- *xborder = 0;
- *yborder = 0;
- }
-
- if (!interior_focus) {
- *xborder += focus_width;
- *yborder += focus_width;
- }
-}
-
-static void
-gkr_ask_entry_size_request (GtkWidget *widget, GtkRequisition *requisition)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
- PangoFontMetrics *metrics;
- gint xborder, yborder;
- PangoContext *context;
-
- context = gtk_widget_get_pango_context (widget);
- metrics = pango_context_get_metrics (context, widget->style->font_desc,
- pango_context_get_language (context));
-
- entry->ascent = pango_font_metrics_get_ascent (metrics);
- entry->descent = pango_font_metrics_get_descent (metrics);
-
- get_borders (entry, &xborder, &yborder);
-
- xborder += INNER_BORDER;
- yborder += INNER_BORDER;
-
- if (entry->width_chars < 0)
- requisition->width = MIN_ASK_ENTRY_WIDTH + xborder * 2;
- else {
- gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
- gint digit_width = pango_font_metrics_get_approximate_digit_width (metrics);
- gint char_pixels = (MAX (char_width, digit_width) + PANGO_SCALE - 1) / PANGO_SCALE;
- requisition->width = char_pixels * entry->width_chars + xborder * 2;
- }
-
- requisition->height = PANGO_PIXELS (entry->ascent + entry->descent) + yborder * 2;
- pango_font_metrics_unref(metrics);
-}
-
-static void
-get_text_area_size(GkrAskEntry *entry, gint *x, gint *y, gint *width, gint *height)
-{
- gint xborder, yborder;
- GtkRequisition requisition;
- GtkWidget *widget = GTK_WIDGET (entry);
-
- gtk_widget_get_child_requisition (widget, &requisition);
-
- get_borders (entry, &xborder, &yborder);
-
- if (x)
- *x = xborder;
-
- if (y)
- *y = yborder;
-
- if (width)
- *width = GTK_WIDGET (entry)->allocation.width - xborder * 2;
-
- if (height)
- *height = requisition.height - yborder * 2;
-}
-
-static void
-get_widget_window_size (GkrAskEntry *entry, gint *x, gint *y, gint *width, gint *height)
-{
- GtkRequisition requisition;
- GtkWidget *widget = GTK_WIDGET (entry);
-
- gtk_widget_get_child_requisition (widget, &requisition);
-
- if (x)
- *x = widget->allocation.x;
-
- if (y) {
- if (entry->is_cell_renderer)
- *y = widget->allocation.y;
- else
- *y = widget->allocation.y + (widget->allocation.height -
- requisition.height) / 2;
- }
-
- if (width)
- *width = widget->allocation.width;
-
- if (height) {
- if (entry->is_cell_renderer)
- *height = widget->allocation.height;
- else
- *height = requisition.height;
- }
-}
-
-static void
-gkr_ask_entry_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(widget);
-
- widget->allocation = *allocation;
-
- if (GTK_WIDGET_REALIZED (widget)) {
- /*
- * We call gtk_widget_get_child_requisition, since we want (for
- * backwards compatibility reasons) the realization here to
- * be affected by the usize of the entry, if set
- */
- gint x, y, width, height;
-
- get_widget_window_size (entry, &x, &y, &width, &height);
-
- gdk_window_move_resize (widget->window, x, y, width, height);
-
- get_text_area_size (entry, &x, &y, &width, &height);
-
- gdk_window_move_resize (entry->text_area, x, y, width, height);
-
- gkr_ask_entry_recompute (entry);
- }
-}
-
-static void
-gkr_ask_entry_draw_frame (GtkWidget *widget)
-{
- gint x = 0, y = 0;
- gint width, height;
- gboolean interior_focus;
- gint focus_width;
-
- gtk_widget_style_get (widget, "interior-focus", &interior_focus,
- "focus-line-width", &focus_width, NULL);
-
- gdk_drawable_get_size (widget->window, &width, &height);
-
- if (GTK_WIDGET_HAS_FOCUS (widget) && !interior_focus) {
- x += focus_width;
- y += focus_width;
- width -= 2 * focus_width;
- height -= 2 * focus_width;
- }
-
- gtk_paint_shadow (widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_IN,
- NULL, widget, "entry", x, y, width, height);
-
- if (GTK_WIDGET_HAS_FOCUS (widget) && !interior_focus) {
- x -= focus_width;
- y -= focus_width;
- width += 2 * focus_width;
- height += 2 * focus_width;
-
- gtk_paint_focus(widget->style, widget->window, GTK_WIDGET_STATE (widget),
- NULL, widget, "entry", 0, 0, width, height);
- }
-}
-
-static gint
-gkr_ask_entry_expose(GtkWidget *widget, GdkEventExpose *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(widget);
-
- if (widget->window == event->window)
- gkr_ask_entry_draw_frame(widget);
- else if (entry->text_area == event->window) {
- gint area_width, area_height;
-
- get_text_area_size(entry, NULL, NULL, &area_width, &area_height);
-
- gtk_paint_flat_box(widget->style, entry->text_area, GTK_WIDGET_STATE (widget), GTK_SHADOW_NONE,
- NULL, widget, "entry_bg", 0, 0, area_width, area_height);
-
- if ((entry->invisible_char != 0) && GTK_WIDGET_HAS_FOCUS (widget) &&
- entry->selection_bound == entry->current_pos && entry->cursor_visible)
- gkr_ask_entry_draw_cursor (GKR_ASK_ENTRY (widget));
-
- gkr_ask_entry_draw_text (GKR_ASK_ENTRY (widget));
- }
-
- return FALSE;
-}
-
-static gint
-gkr_ask_entry_button_press(GtkWidget *widget, GdkEventButton *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
- gint tmp_pos;
-
- if (event->window != entry->text_area ||
- (entry->button && event->button != entry->button))
- return FALSE;
-
- entry->button = event->button;
-
- if (!GTK_WIDGET_HAS_FOCUS (widget)) {
- entry->in_click = TRUE;
- gtk_widget_grab_focus (widget);
- entry->in_click = FALSE;
- }
-
- tmp_pos = gkr_ask_entry_find_position (entry, event->x + entry->scroll_offset);
-
- if (event->button == 1) {
- switch (event->type) {
- case GDK_BUTTON_PRESS:
- gkr_ask_entry_set_positions(entry, tmp_pos, tmp_pos);
- break;
- default:
- break;
- }
-
- return TRUE;
- }
-
- return FALSE;
-}
-
-static gint
-gkr_ask_entry_button_release(GtkWidget *widget, GdkEventButton *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(widget);
-
- if (event->window != entry->text_area || entry->button != event->button)
- return FALSE;
-
- entry->button = 0;
- return TRUE;
-}
-
-static gint
-gkr_ask_entry_motion_notify(GtkWidget *widget, GdkEventMotion *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(widget);
- gint tmp_pos;
-
- if (entry->mouse_cursor_obscured) {
- GdkCursor *cursor;
-
- cursor = gdk_cursor_new_for_display (gtk_widget_get_display(widget),
- GDK_XTERM);
- gdk_window_set_cursor (entry->text_area, cursor);
- gdk_cursor_unref (cursor);
- entry->mouse_cursor_obscured = FALSE;
- }
-
- if (event->window != entry->text_area || entry->button != 1)
- return FALSE;
-
- if (event->is_hint || (entry->text_area != event->window))
- gdk_window_get_pointer (entry->text_area, NULL, NULL, NULL);
-
- {
- gint height;
- gdk_drawable_get_size (entry->text_area, NULL, &height);
-
- if (event->y < 0)
- tmp_pos = 0;
- else if (event->y >= height)
- tmp_pos = entry->text_length;
- else
- tmp_pos = gkr_ask_entry_find_position (entry,
- event->x + entry->scroll_offset);
-
- gkr_ask_entry_set_positions (entry, tmp_pos, -1);
- }
-
- return TRUE;
-}
-
-static void
-set_invisible_cursor (GdkWindow * window)
-{
- GdkBitmap *empty_bitmap;
- GdkCursor *cursor;
- GdkColor useless;
- char invisible_cursor_bits[] = { 0x0 };
-
- useless.red = useless.green = useless.blue = 0;
- useless.pixel = 0;
-
- empty_bitmap = gdk_bitmap_create_from_data (window, invisible_cursor_bits, 1, 1);
-
- cursor = gdk_cursor_new_from_pixmap (empty_bitmap, empty_bitmap, &useless, &useless, 0, 0);
-
- gdk_window_set_cursor (window, cursor);
-
- gdk_cursor_unref (cursor);
-
- g_object_unref (empty_bitmap);
-}
-
-static void
-gkr_ask_entry_obscure_mouse_cursor (GkrAskEntry * entry)
-{
- if (entry->mouse_cursor_obscured)
- return;
-
- set_invisible_cursor (entry->text_area);
-
- entry->mouse_cursor_obscured = TRUE;
-}
-
-static gint
-gkr_ask_entry_key_press (GtkWidget *widget, GdkEventKey *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gkr_ask_entry_pend_cursor_blink (entry);
-
- if (gtk_im_context_filter_keypress (entry->im_context, event)) {
- gkr_ask_entry_obscure_mouse_cursor (entry);
- entry->need_im_reset = TRUE;
- return TRUE;
- }
-
- if (GTK_WIDGET_CLASS (parent_class)->key_press_event (widget, event))
- /* Activate key bindings */
- return TRUE;
-
- return FALSE;
-}
-
-static gint
-gkr_ask_entry_key_release (GtkWidget *widget, GdkEventKey *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- if (gtk_im_context_filter_keypress (entry->im_context, event)) {
- entry->need_im_reset = TRUE;
- return TRUE;
- }
-
- return GTK_WIDGET_CLASS (parent_class)->key_release_event (widget, event);
-}
-
-static gint
-gkr_ask_entry_focus_in (GtkWidget *widget, GdkEventFocus *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gtk_widget_queue_draw (widget);
-
- entry->need_im_reset = TRUE;
- gtk_im_context_focus_in (entry->im_context);
-
- g_signal_connect (gdk_keymap_get_for_display (gtk_widget_get_display (widget)), "direction_changed",
- G_CALLBACK (gkr_ask_entry_keymap_direction_changed), entry);
-
- gkr_ask_entry_check_cursor_blink (entry);
-
- return FALSE;
-}
-
-static gint
-gkr_ask_entry_focus_out (GtkWidget *widget, GdkEventFocus *event)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gtk_widget_queue_draw (widget);
-
- entry->need_im_reset = TRUE;
- gtk_im_context_focus_out (entry->im_context);
-
- gkr_ask_entry_check_cursor_blink (entry);
-
- g_signal_handlers_disconnect_by_func (gdk_keymap_get_for_display (gtk_widget_get_display (widget)),
- gkr_ask_entry_keymap_direction_changed, entry);
-
- return FALSE;
-}
-
-static void
-gkr_ask_entry_grab_focus (GtkWidget *widget)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
- GtkSettings *settings = gtk_widget_get_settings (widget);
- gboolean select_on_focus = FALSE;
-
- GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_DEFAULT);
- GTK_WIDGET_CLASS (parent_class)->grab_focus(widget);
-
- /* Some versions of GTK don't have this property */
- if (g_object_class_find_property (G_OBJECT_CLASS (GTK_SETTINGS_GET_CLASS (settings)),
- "gtk-entry-select-on-focus"))
- g_object_get (settings, "gtk-entry-select-on-focus", &select_on_focus, NULL);
-
- if (select_on_focus && !entry->in_click)
- gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
-}
-
-static void
-gkr_ask_entry_direction_changed(GtkWidget *widget, GtkTextDirection previous_dir)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gkr_ask_entry_recompute (entry);
-
- GTK_WIDGET_CLASS (parent_class)->direction_changed (widget, previous_dir);
-}
-
-static void
-gkr_ask_entry_state_changed (GtkWidget *widget, GtkStateType previous_state)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- if (GTK_WIDGET_REALIZED (widget)) {
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_WIDGET_STATE(widget)]);
- gdk_window_set_background (entry->text_area,
- &widget->style->base[GTK_WIDGET_STATE(widget)]);
- }
-
- if (!GTK_WIDGET_IS_SENSITIVE (widget)) {
- /* Clear any selection */
- gtk_editable_select_region (GTK_EDITABLE(entry),
- entry->current_pos, entry->current_pos);
- }
-
- gtk_widget_queue_draw (widget);
-}
-
-static void
-gkr_ask_entry_screen_changed (GtkWidget *widget, GdkScreen *old_screen)
-{
- gkr_ask_entry_recompute (GKR_ASK_ENTRY (widget));
-}
-
-/* GtkEditable method implementations */
-
-static void
-gkr_ask_entry_insert_text (GtkEditable *editable, const gchar *new_text,
- gint new_text_length, gint * position)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY(editable);
- gchar *text;
-
- if (*position < 0 || *position > entry->text_length)
- *position = entry->text_length;
-
- g_object_ref (editable);
-
- text = gkr_secure_alloc (new_text_length + 1);
-
- strncpy (text, new_text, new_text_length);
- text[new_text_length] = '\0';
-
- g_signal_emit_by_name (editable, "insert_text", text,
- new_text_length, position);
-
- gkr_secure_free (text);
-
- g_object_unref (editable);
-}
-
-static void
-gkr_ask_entry_delete_text (GtkEditable* editable, gint start_pos,
- gint end_pos)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (editable);
-
- if (end_pos < 0 || end_pos > entry->text_length)
- end_pos = entry->text_length;
- if (start_pos < 0)
- start_pos = 0;
- if (start_pos > end_pos)
- start_pos = end_pos;
-
- g_object_ref(editable);
-
- g_signal_emit_by_name (editable, "delete_text", start_pos, end_pos);
-
- g_object_unref (editable);
-}
-
-static void
-gkr_ask_entry_set_position_internal (GkrAskEntry *entry,
- gint position, gboolean reset_im)
-{
- if (position < 0 || position > entry->text_length)
- position = entry->text_length;
-
- if (position != entry->current_pos || position != entry->selection_bound) {
- if (reset_im)
- gkr_ask_entry_reset_im_context (entry);
- gkr_ask_entry_set_positions (entry, position, position);
- }
-}
-
-static void
-gkr_ask_entry_real_set_position (GtkEditable *editable, gint position)
-{
- gkr_ask_entry_set_position_internal (GKR_ASK_ENTRY (editable),
- position, TRUE);
-}
-
-static gint
-gkr_ask_entry_get_position (GtkEditable *editable)
-{
- return GKR_ASK_ENTRY (editable)->current_pos;
-}
-
-static void
-gkr_ask_entry_set_selection_bounds (GtkEditable *editable,
- gint start, gint end)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (editable);
-
- if (start < 0)
- start = entry->text_length;
- if (end < 0)
- end = entry->text_length;
-
- gkr_ask_entry_reset_im_context (entry);
-
- gkr_ask_entry_set_positions (entry, MIN (end, entry->text_length),
- MIN (start, entry->text_length));
-}
-
-static gboolean
-gkr_ask_entry_get_selection_bounds (GtkEditable *editable,
- gint *start, gint *end)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (editable);
-
- *start = entry->selection_bound;
- *end = entry->current_pos;
-
- return (entry->selection_bound != entry->current_pos);
-}
-
-static void
-gkr_ask_entry_style_set (GtkWidget *widget, GtkStyle *previous_style)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (widget);
-
- gkr_ask_entry_recompute (entry);
-
- if (previous_style && GTK_WIDGET_REALIZED (widget)) {
- gdk_window_set_background (widget->window,
- &widget->style->base[GTK_WIDGET_STATE (widget)]);
- gdk_window_set_background (entry->text_area,
- &widget->style-> base[GTK_WIDGET_STATE (widget)]);
- }
-}
-
-/* GtkCellEditable method implementations
- */
-static void
-gtk_cell_editable_secure_entry_activated (GkrAskEntry *entry, gpointer data)
-{
- gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (entry));
- gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (entry));
-}
-
-static gboolean
-gtk_cell_editable_key_press_event (GkrAskEntry *entry, GdkEventKey *key_event,
- gpointer data)
-{
- if (key_event->keyval == GDK_Escape) {
- entry->editing_canceled = TRUE;
- gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (entry));
- gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (entry));
- return TRUE;
- }
-
- /* override focus */
- if (key_event->keyval == GDK_Up || key_event->keyval == GDK_Down) {
- gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry));
- gtk_cell_editable_remove_widget(GTK_CELL_EDITABLE(entry));
- return TRUE;
- }
-
- return FALSE;
-}
-
-static void
-gkr_ask_entry_start_editing (GtkCellEditable *cell_editable,
- GdkEvent *event)
-{
- GKR_ASK_ENTRY(cell_editable)->is_cell_renderer = TRUE;
-
- g_signal_connect (cell_editable, "activate",
- G_CALLBACK (gtk_cell_editable_secure_entry_activated), NULL);
- g_signal_connect (cell_editable, "key_press_event",
- G_CALLBACK (gtk_cell_editable_key_press_event), NULL);
-}
-
-/* Default signal handlers */
-
-static void
-gkr_ask_entry_real_insert_text (GtkEditable *editable, const gchar *new_text,
- gint new_text_length, gint *position)
-{
- gint _index;
- gint n_chars;
-
- GkrAskEntry *entry = GKR_ASK_ENTRY (editable);
-
- if (new_text_length < 0)
- new_text_length = strlen (new_text);
-
- n_chars = g_utf8_strlen (new_text, new_text_length);
- if (entry->text_max_length > 0 && n_chars + entry->text_length > entry->text_max_length) {
- gdk_display_beep (gtk_widget_get_display (GTK_WIDGET (entry)));
- n_chars = entry->text_max_length - entry->text_length;
- new_text_length = g_utf8_offset_to_pointer (new_text, n_chars) - new_text;
- }
-
- if (new_text_length + entry->n_bytes + 1 > entry->text_size) {
- while (new_text_length + entry->n_bytes + 1 > entry->text_size) {
- if (entry->text_size == 0)
- entry->text_size = MIN_SIZE;
- else {
- if (2 * (guint) entry->text_size < MAX_SIZE &&
- 2 * (guint) entry->text_size > entry->text_size)
- entry->text_size *= 2;
- else {
- entry->text_size = MAX_SIZE;
- if (new_text_length > (gint) entry->text_size - (gint) entry->n_bytes - 1) {
- new_text_length = (gint) entry->text_size - (gint) entry->n_bytes - 1;
- new_text_length = g_utf8_find_prev_char (new_text, new_text + new_text_length + 1) - new_text;
- n_chars = g_utf8_strlen (new_text, new_text_length);
- }
- break;
- }
- }
- }
-
- entry->text = gkr_secure_realloc (entry->text, entry->text_size + 1);
- }
-
- _index = g_utf8_offset_to_pointer (entry->text, *position) - entry->text;
-
- g_memmove (entry->text + _index + new_text_length, entry->text + _index,
- entry->n_bytes - _index);
- memcpy (entry->text + _index, new_text, new_text_length);
-
- entry->n_bytes += new_text_length;
- entry->text_length += n_chars;
-
- /* NUL terminate for safety and convenience */
- entry->text[entry->n_bytes] = '\0';
-
- if (entry->current_pos > *position)
- entry->current_pos += n_chars;
-
- if (entry->selection_bound > *position)
- entry->selection_bound += n_chars;
-
- *position += n_chars;
-
- gkr_ask_entry_recompute (entry);
-
- entry->changed = TRUE;
- g_signal_emit_by_name (editable, "changed");
- g_object_notify (G_OBJECT (editable), "text");
-}
-
-static void
-gkr_ask_entry_real_delete_text (GtkEditable *editable, gint start_pos,
- gint end_pos)
-{
- GkrAskEntry *entry = GKR_ASK_ENTRY (editable);
-
- if (start_pos < 0)
- start_pos = 0;
- if (end_pos < 0 || end_pos > entry->text_length)
- end_pos = entry->text_length;
-
- if (start_pos < end_pos) {
- gint start_index = g_utf8_offset_to_pointer (entry->text, start_pos) - entry->text;
- gint end_index = g_utf8_offset_to_pointer(entry->text, end_pos) - entry->text;
- gint current_pos;
- gint selection_bound;
-
- g_memmove (entry->text + start_index, entry->text + end_index,
- entry->n_bytes + 1 - end_index);
- entry->text_length -= (end_pos - start_pos);
- entry->n_bytes -= (end_index - start_index);
-
- current_pos = entry->current_pos;
- if (current_pos > start_pos)
- current_pos -= MIN(current_pos, end_pos) - start_pos;
-
- selection_bound = entry->selection_bound;
- if (selection_bound > start_pos)
- selection_bound -= MIN(selection_bound, end_pos) - start_pos;
-
- gkr_ask_entry_set_positions(entry, current_pos, selection_bound);
-
- gkr_ask_entry_recompute (entry);
-
- entry->changed = TRUE;
- g_signal_emit_by_name (editable, "changed");
- g_object_notify (G_OBJECT (editable), "text");
- }
-}
-
-/*
- * Compute the X position for an offset that corresponds to the "more important
- * cursor position for that offset. We use this when trying to guess to which
- * end of the selection we should go to when the user hits the left or
- * right arrow key.
- */
-static gint
-get_better_cursor_x (GkrAskEntry *entry, gint offset)
-{
- GdkKeymap *keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET(entry)));
- PangoDirection keymap_direction = gdk_keymap_get_direction (keymap);
- gboolean split_cursor;
-
- PangoLayout *layout = gkr_ask_entry_ensure_layout (entry, TRUE);
- const gchar *text = pango_layout_get_text(layout);
- gint _index = g_utf8_offset_to_pointer (text, offset) - text;
-
- PangoRectangle strong_pos, weak_pos;
-
- g_object_get (gtk_widget_get_settings (GTK_WIDGET (entry)),
- "gtk-split-cursor", &split_cursor, NULL);
-
- pango_layout_get_cursor_pos (layout, _index, &strong_pos, &weak_pos);
-
- if (split_cursor)
- return strong_pos.x / PANGO_SCALE;
- else
- return (keymap_direction == entry->resolved_dir) ?
- strong_pos.x / PANGO_SCALE :
- weak_pos.x / PANGO_SCALE;
-}
-
-static void
-gkr_ask_entry_move_cursor (GkrAskEntry *entry, GtkMovementStep step,
- gint count, gboolean extend_selection)
-{
- gint new_pos = entry->current_pos;
-
- gkr_ask_entry_reset_im_context (entry);
-
- if (entry->current_pos != entry->selection_bound && !extend_selection) {
- /*
- * If we have a current selection and aren't extending it, move to the
- * start/or end of the selection as appropriate
- */
- switch (step) {
- case GTK_MOVEMENT_VISUAL_POSITIONS:
- {
- gint current_x = get_better_cursor_x (entry, entry->current_pos);
- gint bound_x = get_better_cursor_x (entry, entry->selection_bound);
-
- if (count < 0)
- new_pos = current_x < bound_x ?
- entry->current_pos : entry->selection_bound;
- else
- new_pos = current_x > bound_x ?
- entry->current_pos : entry->selection_bound;
- break;
- }
- case GTK_MOVEMENT_LOGICAL_POSITIONS:
- case GTK_MOVEMENT_DISPLAY_LINE_ENDS:
- case GTK_MOVEMENT_PARAGRAPH_ENDS:
- case GTK_MOVEMENT_BUFFER_ENDS:
- new_pos = count < 0 ? 0 : entry->text_length;
- break;
- case GTK_MOVEMENT_WORDS:
- case GTK_MOVEMENT_DISPLAY_LINES:
- case GTK_MOVEMENT_PARAGRAPHS:
- case GTK_MOVEMENT_PAGES:
- case GTK_MOVEMENT_HORIZONTAL_PAGES:
- break;
- }
- } else {
- switch (step) {
- case GTK_MOVEMENT_LOGICAL_POSITIONS:
- new_pos = gkr_ask_entry_move_logically (entry, new_pos, count);
- break;
- case GTK_MOVEMENT_VISUAL_POSITIONS:
- new_pos = gkr_ask_entry_move_visually (entry, new_pos, count);
- break;
- case GTK_MOVEMENT_DISPLAY_LINE_ENDS:
- case GTK_MOVEMENT_PARAGRAPH_ENDS:
- case GTK_MOVEMENT_BUFFER_ENDS:
- new_pos = count < 0 ? 0 : entry->text_length;
- break;
- case GTK_MOVEMENT_WORDS:
- case GTK_MOVEMENT_DISPLAY_LINES:
- case GTK_MOVEMENT_PARAGRAPHS:
- case GTK_MOVEMENT_PAGES:
- case GTK_MOVEMENT_HORIZONTAL_PAGES:
- break;
- }
- }
-
- if (extend_selection)
- gtk_editable_select_region (GTK_EDITABLE (entry), entry->selection_bound, new_pos);
- else
- gtk_editable_set_position (GTK_EDITABLE (entry), new_pos);
-
- gkr_ask_entry_pend_cursor_blink (entry);
-}
-
-static void
-gkr_ask_entry_insert_at_cursor(GkrAskEntry *entry, const gchar *str)
-{
- GtkEditable *editable = GTK_EDITABLE (entry);
- gint pos = entry->current_pos;
-
- gkr_ask_entry_reset_im_context (entry);
-
- gtk_editable_insert_text (editable, str, -1, &pos);
- gtk_editable_set_position (editable, pos);
-}
-
-static void
-gkr_ask_entry_delete_from_cursor (GkrAskEntry *entry, GtkDeleteType type,
- gint count)
-{
- GtkEditable *editable = GTK_EDITABLE (entry);
- gint start_pos = entry->current_pos;
- gint end_pos = entry->current_pos;
-
- gkr_ask_entry_reset_im_context (entry);
-
- if (entry->selection_bound != entry->current_pos) {
- gtk_editable_delete_selection (editable);
- return;
- }
-
- switch (type) {
- case GTK_DELETE_CHARS:
- end_pos = gkr_ask_entry_move_logically (entry, entry->current_pos, count);
- gtk_editable_delete_text (editable, MIN (start_pos, end_pos), MAX (start_pos, end_pos));
- break;
- case GTK_DELETE_DISPLAY_LINE_ENDS:
- case GTK_DELETE_PARAGRAPH_ENDS:
- if (count < 0)
- gtk_editable_delete_text (editable, 0, entry->current_pos);
- else
- gtk_editable_delete_text (editable, entry->current_pos, -1);
- break;
- case GTK_DELETE_DISPLAY_LINES:
- case GTK_DELETE_PARAGRAPHS:
- gtk_editable_delete_text (editable, 0, -1);
- break;
- default:
- break;
- }
-
- gkr_ask_entry_pend_cursor_blink (entry);
-}
-
-static void
-gkr_ask_entry_real_activate (GkrAskEntry *entry)
-{
- GtkWindow *window;
- GtkWidget *toplevel;
- GtkWidget *widget;
-
- widget = GTK_WIDGET (entry);
-
- if (entry->activates_default) {
- toplevel = gtk_widget_get_toplevel (widget);
- if (GTK_IS_WINDOW (toplevel)) {
- window = GTK_WINDOW(toplevel);
-
- if (window && widget != window->default_widget &&
- !(widget == window->focus_widget &&
- (!window->default_widget || !GTK_WIDGET_SENSITIVE(window->default_widget))))
- gtk_window_activate_default(window);
- }
- }
-}
-
-static void
-gkr_ask_entry_keymap_direction_changed (GdkKeymap *keymap, GkrAskEntry *entry)
-{
- gkr_ask_entry_recompute (entry);
-}
-
-/* IM Context Callbacks */
-
-static void
-gkr_ask_entry_commit_cb (GtkIMContext *context, const gchar *str,
- GkrAskEntry *entry)
-{
- gkr_ask_entry_enter_text (entry, str);
-}
-
-static void
-gkr_ask_entry_preedit_changed_cb (GtkIMContext *context, GkrAskEntry *entry)
-{
- gchar *preedit_string;
- gint cursor_pos;
-
- gtk_im_context_get_preedit_string (entry->im_context, &preedit_string, NULL, &cursor_pos);
- entry->preedit_length = strlen (preedit_string);
- cursor_pos = CLAMP (cursor_pos, 0, g_utf8_strlen (preedit_string, -1));
- entry->preedit_cursor = cursor_pos;
- g_free (preedit_string);
-
- gkr_ask_entry_recompute (entry);
-}
-
-static gboolean
-gkr_ask_entry_retrieve_surrounding_cb (GtkIMContext *context, GkrAskEntry *entry)
-{
- gtk_im_context_set_surrounding (context, entry->text, entry->n_bytes,
- g_utf8_offset_to_pointer (entry->text, entry->current_pos) - entry->text);
- return TRUE;
-}
-
-static gboolean
-gkr_ask_entry_delete_surrounding_cb (GtkIMContext *slave, gint offset, gint n_chars,
- GkrAskEntry *entry)
-{
- gtk_editable_delete_text (GTK_EDITABLE (entry), entry->current_pos + offset,
- entry->current_pos + offset + n_chars);
- return TRUE;
-}
-
-/* Internal functions */
-
-/* Used for im_commit_cb and inserting Unicode chars */
-static void
-gkr_ask_entry_enter_text (GkrAskEntry *entry, const gchar *str)
-{
- GtkEditable *editable = GTK_EDITABLE (entry);
- gint tmp_pos;
-
- if (gtk_editable_get_selection_bounds (editable, NULL, NULL))
- gtk_editable_delete_selection (editable);
- else {
- if (entry->overwrite_mode)
- gkr_ask_entry_delete_from_cursor (entry, GTK_DELETE_CHARS, 1);
- }
-
- tmp_pos = entry->current_pos;
- gtk_editable_insert_text (editable, str, strlen(str), &tmp_pos);
- gkr_ask_entry_set_position_internal (entry, tmp_pos, FALSE);
-}
-
-/*
- * All changes to entry->current_pos and entry->selection_bound
- * should go through this function.
- */
-static void
-gkr_ask_entry_set_positions (GkrAskEntry *entry, gint current_pos,
- gint selection_bound)
-{
- gboolean changed = FALSE;
-
- g_object_freeze_notify (G_OBJECT (entry));
-
- if (current_pos != -1 && entry->current_pos != current_pos) {
- entry->current_pos = current_pos;
- changed = TRUE;
-
- g_object_notify (G_OBJECT (entry), "cursor_position");
- }
-
- if (selection_bound != -1 && entry->selection_bound != selection_bound) {
- entry->selection_bound = selection_bound;
- changed = TRUE;
-
- g_object_notify (G_OBJECT (entry), "selection_bound");
- }
-
- g_object_thaw_notify (G_OBJECT (entry));
-
- if (changed)
- gkr_ask_entry_recompute (entry);
-}
-
-static void
-gkr_ask_entry_reset_layout (GkrAskEntry *entry)
-{
- if (entry->cached_layout) {
- g_object_unref (entry->cached_layout);
- entry->cached_layout = NULL;
- }
-}
-
-static void
-update_im_cursor_location (GkrAskEntry *entry)
-{
- GdkRectangle area;
- gint strong_x;
- gint strong_xoffset;
- gint area_width, area_height;
-
- gkr_ask_entry_get_cursor_locations (entry, &strong_x, NULL);
- get_text_area_size (entry, NULL, NULL, &area_width, &area_height);
-
- strong_xoffset = strong_x - entry->scroll_offset;
- if (strong_xoffset < 0) {
- strong_xoffset = 0;
- } else if (strong_xoffset > area_width) {
- strong_xoffset = area_width;
- }
- area.x = strong_xoffset;
- area.y = 0;
- area.width = 0;
- area.height = area_height;
-
- gtk_im_context_set_cursor_location (entry->im_context, &area);
-}
-
-static gboolean
-recompute_idle_func (gpointer data)
-{
- GkrAskEntry *entry;
-
- GDK_THREADS_ENTER ();
-
- entry = GKR_ASK_ENTRY (data);
-
- entry->recompute_idle = 0;
-
- if (gtk_widget_has_screen (GTK_WIDGET (entry))) {
- gkr_ask_entry_adjust_scroll (entry);
- gkr_ask_entry_queue_draw (entry);
-
- update_im_cursor_location (entry);
- }
-
- GDK_THREADS_LEAVE ();
-
- return FALSE;
-}
-
-static void
-gkr_ask_entry_recompute (GkrAskEntry *entry)
-{
- gkr_ask_entry_reset_layout (entry);
- gkr_ask_entry_check_cursor_blink (entry);
-
- if (!entry->recompute_idle) {
- entry->recompute_idle = g_idle_add_full (G_PRIORITY_HIGH_IDLE + 15, /* between resize and redraw */
- recompute_idle_func, entry, NULL);
- }
-}
-
-static gunichar
-build_string (GkrAskEntry *entry, GString *str, gint extra)
-{
- gint i, count, char_len;
- gunichar invisible_char;
- gchar buf[7];
-
- if (entry->visibility) {
- g_string_append_len (str, entry->text, entry->n_bytes);
- return 0;
-
- } else {
-
- if (entry->invisible_char != 0)
- invisible_char = entry->invisible_char;
- else
- invisible_char = ' '; /* just pick a char */
-
- count = g_utf8_strlen (entry->text, entry->n_bytes) + extra;
-
- char_len = g_unichar_to_utf8 (entry->invisible_char, buf);
- for (i = 0; i < count; i++)
- g_string_append_len(str, buf, char_len);
-
- return invisible_char;
- }
-}
-
-static PangoLayout *
-gkr_ask_entry_create_layout (GkrAskEntry * entry, gboolean include_preedit)
-{
- GtkWidget *widget = GTK_WIDGET (entry);
- PangoLayout *layout = gtk_widget_create_pango_layout (widget, NULL);
- PangoAttrList *tmp_attrs = pango_attr_list_new ();
-
- gchar *preedit_string = NULL;
- gint preedit_length = 0;
- PangoAttrList *preedit_attrs = NULL;
-
- pango_layout_set_single_paragraph_mode (layout, TRUE);
-
- if (include_preedit) {
- gtk_im_context_get_preedit_string(entry->im_context, &preedit_string,
- &preedit_attrs, NULL);
- preedit_length = entry->preedit_length;
- }
-
- if (preedit_length) {
- GString *tmp_string = g_string_new(NULL);
-
- gint cursor_index = g_utf8_offset_to_pointer (entry->text, entry->current_pos) -
- entry->text;
-
- gint preedit_len_chars;
- gunichar invisible_char;
-
- preedit_len_chars = g_utf8_strlen (preedit_string, -1);
- invisible_char = build_string (entry, tmp_string, preedit_len_chars);
-
- /*
- * Fix cursor index to point to invisible char corresponding
- * to the preedit, fix preedit_length to be the length of
- * the invisible chars representing the preedit
- */
- cursor_index =
- g_utf8_offset_to_pointer (tmp_string->str, entry->current_pos) - tmp_string->str;
- preedit_length = preedit_len_chars * g_unichar_to_utf8 (invisible_char, NULL);
-
- pango_layout_set_text (layout, tmp_string->str, tmp_string->len);
-
- pango_attr_list_splice (tmp_attrs, preedit_attrs, cursor_index, preedit_length);
-
- g_string_free (tmp_string, TRUE);
- } else {
- PangoDirection pango_dir;
-
- pango_dir = pango_find_base_dir (entry->text, entry->n_bytes);
- if (pango_dir == PANGO_DIRECTION_NEUTRAL) {
- if (GTK_WIDGET_HAS_FOCUS (widget)) {
- GdkDisplay *display = gtk_widget_get_display (widget);
- GdkKeymap *keymap = gdk_keymap_get_for_display (display);
- pango_dir = gdk_keymap_get_direction (keymap);
- } else {
- if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
- pango_dir = PANGO_DIRECTION_LTR;
- else
- pango_dir = PANGO_DIRECTION_RTL;
- }
- }
-
- pango_context_set_base_dir (gtk_widget_get_pango_context(widget), pango_dir);
-
- pango_layout_set_alignment (layout, pango_dir);
-
- entry->resolved_dir = pango_dir;
-
- {
- GString *str = g_string_new (NULL);
- build_string (entry, str, 0);
- pango_layout_set_text (layout, str->str, str->len);
- g_string_free (str, TRUE);
- }
- }
-
- pango_layout_set_attributes (layout, tmp_attrs);
-
- if (preedit_string)
- g_free (preedit_string);
- if (preedit_attrs)
- pango_attr_list_unref (preedit_attrs);
-
- pango_attr_list_unref (tmp_attrs);
-
- return layout;
-}
-
-static PangoLayout *
-gkr_ask_entry_ensure_layout (GkrAskEntry *entry, gboolean include_preedit)
-{
- if (entry->preedit_length > 0 && !include_preedit != !entry->cache_includes_preedit)
- gkr_ask_entry_reset_layout (entry);
-
- if (!entry->cached_layout) {
- entry->cached_layout = gkr_ask_entry_create_layout (entry, include_preedit);
- entry->cache_includes_preedit = include_preedit;
- }
-
- return entry->cached_layout;
-}
-
-static void
-get_layout_position (GkrAskEntry *entry, gint *x, gint *y)
-{
- PangoLayout *layout;
- PangoRectangle logical_rect;
- gint area_width, area_height;
- gint y_pos;
- PangoLayoutLine *line;
-
- layout = gkr_ask_entry_ensure_layout (entry, TRUE);
-
- get_text_area_size (entry, NULL, NULL, &area_width, &area_height);
-
- area_height = PANGO_SCALE * (area_height - 2 * INNER_BORDER);
-
- line = pango_layout_get_lines (layout)->data;
- pango_layout_line_get_extents (line, NULL, &logical_rect);
-
- /* Align primarily for locale's ascent/descent */
- y_pos = ((area_height - entry->ascent - entry->descent) / 2 +
- entry->ascent + logical_rect.y);
-
- /* Now see if we need to adjust to fit in actual drawn string */
- if (logical_rect.height > area_height)
- y_pos = (area_height - logical_rect.height) / 2;
- else if (y_pos < 0)
- y_pos = 0;
- else if (y_pos + logical_rect.height > area_height)
- y_pos = area_height - logical_rect.height;
-
- y_pos = INNER_BORDER + y_pos / PANGO_SCALE;
-
- if (x)
- *x = INNER_BORDER - entry->scroll_offset;
-
- if (y)
- *y = y_pos;
-}
-
-static void
-gkr_ask_entry_draw_text(GkrAskEntry *entry)
-{
- GtkWidget *widget;
- PangoLayoutLine *line;
-
- if (entry->invisible_char == 0)
- return;
-
- if (GTK_WIDGET_DRAWABLE (entry)) {
- PangoLayout *layout = gkr_ask_entry_ensure_layout (entry, TRUE);
- gint x, y;
- gint start_pos, end_pos;
-
- widget = GTK_WIDGET(entry);
-
- get_layout_position(entry, &x, &y);
-
- gdk_draw_layout(entry->text_area, widget->style->text_gc[widget->state], x, y, layout);
-
- if (gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start_pos, &end_pos)) {
- gint *ranges;
- gint n_ranges, i;
- PangoRectangle logical_rect;
- const gchar *text = pango_layout_get_text (layout);
- gint start_index = g_utf8_offset_to_pointer (text, start_pos) - text;
- gint end_index = g_utf8_offset_to_pointer (text, end_pos) - text;
- GdkRegion *clip_region = gdk_region_new ();
- GdkGC *text_gc;
- GdkGC *selection_gc;
-
- line = pango_layout_get_lines(layout)->data;
-
- pango_layout_line_get_x_ranges (line, start_index, end_index, &ranges, &n_ranges);
- pango_layout_get_extents(layout, NULL, &logical_rect);
-
- if (GTK_WIDGET_HAS_FOCUS(entry)) {
- selection_gc = widget->style->base_gc[GTK_STATE_SELECTED];
- text_gc = widget->style->text_gc[GTK_STATE_SELECTED];
- } else {
- selection_gc = widget->style->base_gc[GTK_STATE_ACTIVE];
- text_gc = widget->style->text_gc[GTK_STATE_ACTIVE];
- }
-
- for (i = 0; i < n_ranges; i++) {
- GdkRectangle rect;
-
- rect.x = INNER_BORDER - entry->scroll_offset +
- ranges[2 * i] / PANGO_SCALE;
- rect.y = y;
- rect.width = (ranges[2 * i + 1] - ranges[2 * i]) / PANGO_SCALE;
- rect.height = logical_rect.height / PANGO_SCALE;
-
- gdk_draw_rectangle (entry->text_area, selection_gc, TRUE, rect.x,
- rect.y, rect.width, rect.height);
-
- gdk_region_union_with_rect(clip_region, &rect);
- }
-
- gdk_gc_set_clip_region(text_gc, clip_region);
- gdk_draw_layout(entry->text_area, text_gc, x, y, layout);
- gdk_gc_set_clip_region(text_gc, NULL);
-
- gdk_region_destroy(clip_region);
- g_free(ranges);
- }
- }
-}
-
-static void
-draw_insertion_cursor (GkrAskEntry *entry, GdkRectangle *cursor_location,
- gboolean is_primary, PangoDirection direction, gboolean draw_arrow)
-{
- GtkWidget *widget = GTK_WIDGET (entry);
- GtkTextDirection text_dir;
-
- if (direction == PANGO_DIRECTION_LTR)
- text_dir = GTK_TEXT_DIR_LTR;
- else
- text_dir = GTK_TEXT_DIR_RTL;
-
- gtk_draw_insertion_cursor (widget, entry->text_area, NULL, cursor_location,
- is_primary, text_dir, draw_arrow);
-}
-
-static void
-gkr_ask_entry_draw_cursor (GkrAskEntry * entry)
-{
- GdkKeymap *keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET(entry)));
- PangoDirection keymap_direction = gdk_keymap_get_direction (keymap);
-
- if (GTK_WIDGET_DRAWABLE (entry)) {
- GtkWidget *widget = GTK_WIDGET(entry);
- GdkRectangle cursor_location;
- gboolean split_cursor;
-
- gint xoffset = INNER_BORDER - entry->scroll_offset;
- gint strong_x, weak_x;
- gint text_area_height;
- PangoDirection dir1 = PANGO_DIRECTION_NEUTRAL;
- PangoDirection dir2 = PANGO_DIRECTION_NEUTRAL;
- gint x1 = 0;
- gint x2 = 0;
-
- gdk_drawable_get_size (entry->text_area, NULL, &text_area_height);
-
- gkr_ask_entry_get_cursor_locations (entry, &strong_x, &weak_x);
-
- g_object_get (gtk_widget_get_settings (widget), "gtk-split-cursor", &split_cursor, NULL);
-
- dir1 = entry->resolved_dir;
-
- if (split_cursor) {
- x1 = strong_x;
-
- if (weak_x != strong_x) {
- dir2 = (entry->resolved_dir == PANGO_DIRECTION_LTR) ?
- PANGO_DIRECTION_RTL : PANGO_DIRECTION_LTR;
- x2 = weak_x;
- }
- } else {
- if (keymap_direction == entry->resolved_dir)
- x1 = strong_x;
- else
- x1 = weak_x;
- }
-
- cursor_location.x = xoffset + x1;
- cursor_location.y = INNER_BORDER;
- cursor_location.width = 0;
- cursor_location.height = text_area_height - 2 * INNER_BORDER;
-
- draw_insertion_cursor (entry, &cursor_location, TRUE, dir1,
- dir2 != PANGO_DIRECTION_NEUTRAL);
-
- if (dir2 != PANGO_DIRECTION_NEUTRAL) {
- cursor_location.x = xoffset + x2;
- draw_insertion_cursor(entry, &cursor_location, FALSE, dir2, TRUE);
- }
- }
-}
-
-static void
-gkr_ask_entry_queue_draw (GkrAskEntry *entry)
-{
- if (GTK_WIDGET_REALIZED (entry))
- gdk_window_invalidate_rect (entry->text_area, NULL, FALSE);
-}
-
-static void
-gkr_ask_entry_reset_im_context (GkrAskEntry *entry)
-{
- if (entry->need_im_reset) {
- entry->need_im_reset = 0;
- gtk_im_context_reset (entry->im_context);
- }
-}
-
-static gint
-gkr_ask_entry_find_position (GkrAskEntry *entry, gint x)
-{
- PangoLayout *layout;
- PangoLayoutLine *line;
- gint _index;
- gint pos;
- gboolean trailing;
- const gchar *text;
- gint cursor_index;
-
- layout = gkr_ask_entry_ensure_layout (entry, TRUE);
- text = pango_layout_get_text (layout);
- cursor_index = g_utf8_offset_to_pointer (text, entry->current_pos) - text;
-
- line = pango_layout_get_lines (layout)->data;
- pango_layout_line_x_to_index (line, x * PANGO_SCALE, &_index, &trailing);
-
- if (_index >= cursor_index && entry->preedit_length) {
- if (_index >= cursor_index + entry->preedit_length)
- _index -= entry->preedit_length;
- else {
- _index = cursor_index;
- trailing = 0;
- }
- }
-
- pos = g_utf8_pointer_to_offset (text, text + _index);
- pos += trailing;
-
- return pos;
-}
-
-static void
-gkr_ask_entry_get_cursor_locations (GkrAskEntry *entry,
- gint *strong_x, gint *weak_x)
-{
- if (!entry->invisible_char) {
- if (strong_x)
- *strong_x = 0;
- if (weak_x)
- *weak_x = 0;
- } else {
- PangoLayout *layout = gkr_ask_entry_ensure_layout (entry, TRUE);
- const gchar *text = pango_layout_get_text (layout);
- PangoRectangle strong_pos, weak_pos;
- gint _index;
-
- _index = g_utf8_offset_to_pointer (text, entry->current_pos +
- entry->preedit_cursor) - text;
-
- pango_layout_get_cursor_pos (layout, _index, &strong_pos, &weak_pos);
-
- if (strong_x)
- *strong_x = strong_pos.x / PANGO_SCALE;
-
- if (weak_x)
- *weak_x = weak_pos.x / PANGO_SCALE;
- }
-}
-
-static void
-gkr_ask_entry_adjust_scroll (GkrAskEntry *entry)
-{
- gint min_offset, max_offset;
- gint text_area_width, text_width;
- gint strong_x, weak_x;
- gint strong_xoffset, weak_xoffset;
- PangoLayout *layout;
- PangoLayoutLine *line;
- PangoRectangle logical_rect;
-
- if (!GTK_WIDGET_REALIZED(entry))
- return;
-
- gdk_drawable_get_size (entry->text_area, &text_area_width, NULL);
- text_area_width -= 2 * INNER_BORDER;
-
- layout = gkr_ask_entry_ensure_layout (entry, TRUE);
- line = pango_layout_get_lines (layout)->data;
-
- pango_layout_line_get_extents (line, NULL, &logical_rect);
-
- /* Display as much text as we can */
-
- text_width = PANGO_PIXELS (logical_rect.width);
-
- if (text_width > text_area_width) {
- min_offset = 0;
- max_offset = text_width - text_area_width;
- } else {
- min_offset = 0;
- max_offset = min_offset;
- }
-
- entry->scroll_offset = CLAMP (entry->scroll_offset, min_offset, max_offset);
-
- /*
- * And make sure cursors are on screen. Note that the cursor is
- * actually drawn one pixel into the INNER_BORDER space on
- * the right, when the scroll is at the utmost right. This
- * looks better to to me than confining the cursor inside the
- * border entirely, though it means that the cursor gets one
- * pixel closer to the the edge of the widget on the right than
- * on the left. This might need changing if one changed
- * INNER_BORDER from 2 to 1, as one would do on a
- * small-screen-real-estate display.
- *
- * We always make sure that the strong cursor is on screen, and
- * put the weak cursor on screen if possible.
- */
-
- gkr_ask_entry_get_cursor_locations (entry, &strong_x, &weak_x);
-
- strong_xoffset = strong_x - entry->scroll_offset;
-
- if (strong_xoffset < 0) {
- entry->scroll_offset += strong_xoffset;
- strong_xoffset = 0;
- } else if (strong_xoffset > text_area_width) {
- entry->scroll_offset += strong_xoffset - text_area_width;
- strong_xoffset = text_area_width;
- }
-
- weak_xoffset = weak_x - entry->scroll_offset;
-
- if (weak_xoffset < 0 && strong_xoffset - weak_xoffset <= text_area_width) {
- entry->scroll_offset += weak_xoffset;
- } else if (weak_xoffset > text_area_width &&
- strong_xoffset - (weak_xoffset - text_area_width) >= 0) {
- entry->scroll_offset += weak_xoffset - text_area_width;
- }
-
- g_object_notify (G_OBJECT (entry), "scroll_offset");
-}
-
-static gint
-gkr_ask_entry_move_visually (GkrAskEntry * entry,
- gint start, gint count)
-{
- gint _index;
- PangoLayout *layout = gkr_ask_entry_ensure_layout (entry, FALSE);
- const gchar *text;
-
- text = pango_layout_get_text (layout);
-
- _index = g_utf8_offset_to_pointer (text, start) - text;
-
- while (count != 0) {
- int new_index, new_trailing;
- gboolean split_cursor;
- gboolean strong;
-
- g_object_get (gtk_widget_get_settings (GTK_WIDGET (entry)),
- "gtk-split-cursor", &split_cursor, NULL);
-
- if (split_cursor)
- strong = TRUE;
- else {
- GdkKeymap *keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET (entry)));
- PangoDirection keymap_direction = gdk_keymap_get_direction (keymap);
-
- strong = keymap_direction == entry->resolved_dir;
- }
-
- if (count > 0) {
- pango_layout_move_cursor_visually (layout, strong, _index, 0, 1,
- &new_index, &new_trailing);
- count--;
- } else {
- pango_layout_move_cursor_visually (layout, strong, _index, 0, -1,
- &new_index, &new_trailing);
- count++;
- }
-
- if (new_index < 0 || new_index == G_MAXINT)
- break;
-
- _index = new_index;
-
- while (new_trailing--)
- _index = g_utf8_next_char (text + new_index) - text;
- }
-
- return g_utf8_pointer_to_offset (text, text + _index);
-}
-
-static gint
-gkr_ask_entry_move_logically (GkrAskEntry *entry,
- gint start, gint count)
-{
- gint new_pos = start;
-
- /* Prevent any leak of information */
- new_pos = CLAMP (start + count, 0, entry->text_length);
- return new_pos;
-}
-
-/* Public API */
-
-GtkWidget *
-gkr_ask_entry_new (void)
-{
- return g_object_new (GKR_TYPE_ASK_ENTRY, NULL);
-}
-
-void
-gkr_ask_entry_set_text (GkrAskEntry *entry, const gchar *text)
-{
- gint tmp_pos;
-
- g_return_if_fail (GKR_IS_ASK_ENTRY(entry));
- g_return_if_fail (text != NULL);
-
- /*
- * Actually setting the text will affect the cursor and selection;
- * if the contents don't actually change, this will look odd to the user.
- */
- if (strcmp (entry->text, text) == 0)
- return;
-
- gtk_editable_delete_text (GTK_EDITABLE (entry), 0, -1);
-
- tmp_pos = 0;
- gtk_editable_insert_text (GTK_EDITABLE (entry), text, strlen (text), &tmp_pos);
-}
-
-void
-gkr_ask_entry_reset_changed (GkrAskEntry *entry)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
- entry->changed = FALSE;
-}
-
-gboolean
-gkr_ask_entry_get_changed (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), FALSE);
- return entry->changed;
-}
-
-void
-gkr_ask_entry_set_visibility (GkrAskEntry *entry, gboolean setting)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
-
- if (setting == entry->visibility)
- return;
-
- entry->visibility = setting;
- g_object_notify (G_OBJECT (entry), "visibility");
- gkr_ask_entry_recompute (entry);
-}
-
-gboolean
-gkr_ask_entry_get_visibility (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), FALSE);
- return entry->visibility;
-}
-
-
-/**
- * gkr_ask_entry_set_invisible_char:
- * @entry: a #GkrAskEntry
- * @ch: a Unicode character
- *
- * Sets the character to use in place of the actual text when
- * gkr_ask_entry_set_visibility() has been called to set text
- * to %FALSE. i.e. this is the character used in "password mode" to
- * show the user how many characters have been typed. The default
- * invisible char is an asterisk ('*'). If you set the invisible char
- * to 0, then the user will get no feedback at all; there will be
- * no text on the screen as they type.
- *
- **/
-void
-gkr_ask_entry_set_invisible_char (GkrAskEntry *entry, gunichar ch)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
-
- if (ch == entry->invisible_char)
- return;
-
- entry->invisible_char = ch;
- g_object_notify (G_OBJECT (entry), "invisible_char");
- gkr_ask_entry_recompute (entry);
-}
-
-/**
- * gkr_ask_entry_get_invisible_char:
- * @entry: a #GkrAskEntry
- *
- * Retrieves the character displayed in place of the real characters
- * for entries with visisbility set to false. See gkr_ask_entry_set_invisible_char().
- *
- * Return value: the current invisible char, or 0, if the entry does not
- * show invisible text at all.
- **/
-gunichar
-gkr_ask_entry_get_invisible_char (GkrAskEntry * entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), 0);
-
- return entry->invisible_char;
-}
-
-/**
- * gkr_ask_entry_get_text:
- * @entry: a #GkrAskEntry
- *
- * Retrieves the contents of the entry widget.
- * See also gtk_editable_get_chars().
- *
- * Return value: a pointer to the contents of the widget as a
- * string. This string points to internally allocated
- * storage in the widget and must not be freed, modified or
- * stored.
- **/
-G_CONST_RETURN gchar*
-gkr_ask_entry_get_text (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), NULL);
-
- return entry->text;
-}
-
-/**
- * gkr_ask_entry_set_max_length:
- * @entry: a #GkrAskEntry.
- * @max: the maximum length of the entry, or 0 for no maximum.
- * (other than the maximum length of entries.) The value passed in will
- * be clamped to the range 0-65536.
- *
- * Sets the maximum allowed length of the contents of the widget. If
- * the current contents are longer than the given length, then they
- * will be truncated to fit.
- **/
-void
-gkr_ask_entry_set_max_length(GkrAskEntry *entry, gint max)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
-
- max = CLAMP (max, 0, MAX_SIZE);
-
- if (max > 0 && entry->text_length > max)
- gtk_editable_delete_text (GTK_EDITABLE (entry), max, -1);
-
- entry->text_max_length = max;
- g_object_notify (G_OBJECT (entry), "max_length");
-}
-
-/**
- * gkr_ask_entry_get_max_length:
- * @entry: a #GkrAskEntry
- *
- * Retrieves the maximum allowed length of the text in
- * @entry. See gkr_ask_entry_set_max_length().
- *
- * Return value: the maximum allowed number of characters
- * in #GkrAskEntry, or 0 if there is no maximum.
- **/
-gint
-gkr_ask_entry_get_max_length (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), 0);
- return entry->text_max_length;
-}
-
-/**
- * gkr_ask_entry_set_activates_default:
- * @entry: a #GkrAskEntry
- * @setting: %TRUE to activate window's default widget on Enter keypress
- *
- * If @setting is %TRUE, pressing Enter in the @entry will activate the default
- * widget for the window containing the entry. This usually means that
- * the dialog box containing the entry will be closed, since the default
- * widget is usually one of the dialog buttons.
- *
- * (For experts: if @setting is %TRUE, the entry calls
- * gtk_window_activate_default() on the window containing the entry, in
- * the default handler for the "activate" signal.)
- *
- **/
-void
-gkr_ask_entry_set_activates_default (GkrAskEntry *entry,
- gboolean setting)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
- setting = setting != FALSE;
-
- if (setting != entry->activates_default) {
- entry->activates_default = setting;
- g_object_notify (G_OBJECT (entry), "activates_default");
- }
-}
-
-/**
- * gkr_ask_entry_get_activates_default:
- * @entry: a #GkrAskEntry
- *
- * Retrieves the value set by gkr_ask_entry_set_activates_default().
- *
- * Return value: %TRUE if the entry will activate the default widget
- **/
-gboolean
-gkr_ask_entry_get_activates_default (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), FALSE);
- return entry->activates_default;
-}
-
-/**
- * gkr_ask_entry_set_width_chars:
- * @entry: a #GkrAskEntry
- * @n_chars: width in chars
- *
- * Changes the size request of the entry to be about the right size
- * for @n_chars characters. Note that it changes the size
- * <emphasis>request</emphasis>, the size can still be affected by
- * how you pack the widget into containers. If @n_chars is -1, the
- * size reverts to the default entry size.
- *
- **/
-void
-gkr_ask_entry_set_width_chars (GkrAskEntry *entry, gint n_chars)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
-
- if (entry->width_chars != n_chars) {
- entry->width_chars = n_chars;
- g_object_notify (G_OBJECT (entry), "width_chars");
- gtk_widget_queue_resize (GTK_WIDGET (entry));
- }
-}
-
-/**
- * gkr_ask_entry_get_width_chars:
- * @entry: a #GkrAskEntry
- *
- * Gets the value set by gkr_ask_entry_set_width_chars().
- *
- * Return value: number of chars to request space for, or negative if unset
- **/
-gint
-gkr_ask_entry_get_width_chars (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), 0);
- return entry->width_chars;
-}
-
-/**
- * gkr_ask_entry_set_has_frame:
- * @entry: a #GkrAskEntry
- * @setting: new value
- *
- * Sets whether the entry has a beveled frame around it.
- **/
-void
-gkr_ask_entry_set_has_frame (GkrAskEntry *entry, gboolean setting)
-{
- g_return_if_fail (GKR_IS_ASK_ENTRY (entry));
-
- setting = (setting != FALSE);
-
- if (entry->has_frame == setting)
- return;
-
- gtk_widget_queue_resize (GTK_WIDGET (entry));
- entry->has_frame = setting;
- g_object_notify (G_OBJECT (entry), "has_frame");
-}
-
-/**
- * gkr_ask_entry_get_has_frame:
- * @entry: a #GkrAskEntry
- *
- * Gets the value set by gkr_ask_entry_set_has_frame().
- *
- * Return value: whether the entry has a beveled frame
- **/
-gboolean
-gkr_ask_entry_get_has_frame (GkrAskEntry *entry)
-{
- g_return_val_if_fail (GKR_IS_ASK_ENTRY (entry), FALSE);
- return entry->has_frame;
-}
-
-static gboolean
-gkr_ask_entry_mnemonic_activate (GtkWidget *widget, gboolean group_cycling)
-{
- gtk_widget_grab_focus (widget);
- return TRUE;
-}
-
-/* We display the cursor when
- *
- * - the selection is empty, AND
- * - the widget has focus
- */
-
-#define CURSOR_ON_MULTIPLIER 0.66
-#define CURSOR_OFF_MULTIPLIER 0.34
-#define CURSOR_PEND_MULTIPLIER 1.0
-
-static gboolean
-cursor_blinks (GkrAskEntry *entry)
-{
- GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (entry));
- gboolean blink;
-
- if (GTK_WIDGET_HAS_FOCUS (entry) &&
- entry->selection_bound == entry->current_pos) {
- g_object_get (settings, "gtk-cursor-blink", &blink, NULL);
- return blink;
- } else
- return FALSE;
-}
-
-static gint
-get_cursor_time (GkrAskEntry *entry)
-{
- GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (entry));
- gint time;
-
- g_object_get (settings, "gtk-cursor-blink-time", &time, NULL);
-
- return time;
-}
-
-static void
-show_cursor (GkrAskEntry *entry)
-{
- if (!entry->cursor_visible) {
- entry->cursor_visible = TRUE;
-
- if (GTK_WIDGET_HAS_FOCUS (entry) &&
- entry->selection_bound == entry->current_pos)
- gtk_widget_queue_draw (GTK_WIDGET (entry));
- }
-}
-
-static void
-hide_cursor(GkrAskEntry * entry)
-{
- if (entry->cursor_visible) {
- entry->cursor_visible = FALSE;
-
- if (GTK_WIDGET_HAS_FOCUS (entry) &&
- entry->selection_bound == entry->current_pos)
- gtk_widget_queue_draw (GTK_WIDGET (entry));
- }
-}
-
-/*
- * Blink!
- */
-static gint
-blink_cb (gpointer data)
-{
- GkrAskEntry *entry;
-
- GDK_THREADS_ENTER ();
-
- entry = GKR_ASK_ENTRY (data);
-
- if (!GTK_WIDGET_HAS_FOCUS (entry)) {
- g_warning ("GkrAskEntry - did not receive focus-out-event. If you\n"
- "connect a handler to this signal, it must return\n"
- "FALSE so the entry gets the event as well");
- }
-
- g_assert (GTK_WIDGET_HAS_FOCUS (entry));
- g_assert (entry->selection_bound == entry->current_pos);
-
- if (entry->cursor_visible) {
- hide_cursor(entry);
- entry->blink_timeout = g_timeout_add (get_cursor_time (entry) * CURSOR_OFF_MULTIPLIER,
- blink_cb, entry);
- } else {
- show_cursor(entry);
- entry->blink_timeout = g_timeout_add (get_cursor_time (entry) * CURSOR_ON_MULTIPLIER,
- blink_cb, entry);
- }
-
- GDK_THREADS_LEAVE ();
-
- /* Remove ourselves */
- return FALSE;
-}
-
-static void
-gkr_ask_entry_check_cursor_blink (GkrAskEntry *entry)
-{
- if (cursor_blinks (entry)) {
- if (!entry->blink_timeout) {
- entry->blink_timeout = g_timeout_add (get_cursor_time (entry) * CURSOR_ON_MULTIPLIER,
- blink_cb, entry);
- show_cursor (entry);
- }
- } else {
- if (entry->blink_timeout) {
- g_source_remove (entry->blink_timeout);
- entry->blink_timeout = 0;
- }
-
- entry->cursor_visible = TRUE;
- }
-
-}
-
-static void
-gkr_ask_entry_pend_cursor_blink (GkrAskEntry *entry)
-{
- if (cursor_blinks (entry)) {
- if (entry->blink_timeout != 0)
- g_source_remove(entry->blink_timeout);
-
- entry->blink_timeout = g_timeout_add (get_cursor_time (entry) * CURSOR_PEND_MULTIPLIER,
- blink_cb, entry);
- show_cursor (entry);
- }
-}
-
-static inline gboolean
-keyval_is_cursor_move (guint keyval)
-{
- if (keyval == GDK_Up || keyval == GDK_KP_Up)
- return TRUE;
-
- if (keyval == GDK_Down || keyval == GDK_KP_Down)
- return TRUE;
-
- if (keyval == GDK_Page_Up)
- return TRUE;
-
- if (keyval == GDK_Page_Down)
- return TRUE;
-
- return FALSE;
-}
-
-/* stolen from gtkmarshalers.c */
-
-#define g_marshal_value_peek_enum(v) (v)->data[0].v_int
-#define g_marshal_value_peek_int(v) (v)->data[0].v_int
-#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
-
-/* VOID:ENUM,INT,BOOLEAN (gtkmarshalers.list:64) */
-static void
-_gtk_marshal_VOID__ENUM_INT_BOOLEAN(GClosure * closure, GValue * return_value,
- guint n_param_values, const GValue * param_values,
- gpointer invocation_hint, gpointer marshal_data)
-{
- typedef void (*GMarshalFunc_VOID__ENUM_INT_BOOLEAN) (gpointer data1,
- gint arg_1,
- gint arg_2,
- gboolean arg_3,
- gpointer data2);
- register GMarshalFunc_VOID__ENUM_INT_BOOLEAN callback;
- register GCClosure *cc = (GCClosure *) closure;
- register gpointer data1, data2;
-
- g_return_if_fail(n_param_values == 4);
-
- if (G_CCLOSURE_SWAP_DATA(closure)) {
- data1 = closure->data;
- data2 = g_value_peek_pointer(param_values + 0);
- } else {
- data1 = g_value_peek_pointer(param_values + 0);
- data2 = closure->data;
- }
- callback =
- (GMarshalFunc_VOID__ENUM_INT_BOOLEAN) (marshal_data ? marshal_data
- : cc->callback);
-
- callback(data1,
- g_marshal_value_peek_enum(param_values + 1),
- g_marshal_value_peek_int(param_values + 2),
- g_marshal_value_peek_boolean(param_values + 3), data2);
-}
-
-static void
-_gtk_marshal_VOID__ENUM_INT(GClosure * closure, GValue * return_value,
- guint n_param_values, const GValue * param_values,
- gpointer invocation_hint, gpointer marshal_data)
-{
- typedef void (*GMarshalFunc_VOID__ENUM_INT) (gpointer data1,
- gint arg_1,
- gint arg_2,
- gpointer data2);
- register GMarshalFunc_VOID__ENUM_INT callback;
- register GCClosure *cc = (GCClosure *) closure;
- register gpointer data1, data2;
-
- g_return_if_fail(n_param_values == 3);
-
- if (G_CCLOSURE_SWAP_DATA(closure)) {
- data1 = closure->data;
- data2 = g_value_peek_pointer(param_values + 0);
- } else {
- data1 = g_value_peek_pointer(param_values + 0);
- data2 = closure->data;
- }
- callback =
- (GMarshalFunc_VOID__ENUM_INT) (marshal_data ? marshal_data : cc->
- callback);
-
- callback(data1,
- g_marshal_value_peek_enum(param_values + 1),
- g_marshal_value_peek_int(param_values + 2), data2);
-}
diff --git a/ui/gkr-ask-entry.h b/ui/gkr-ask-entry.h
deleted file mode 100644
index 5091df8a..00000000
--- a/ui/gkr-ask-entry.h
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * 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, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GTK+ Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-/*
- * Heavily stripped down for use in pinentry-gtk-2 by Albrecht Dreß
- * <albrecht.dress@arcor.de> Feb. 2004.
- *
- * (C) by Albrecht Dreß 2004 unter the terms of the GNU Lesser General
- * Public License.
- *
- * The entry is now always invisible, uses secure memory methods to
- * allocate the text memory, and all potentially dangerous methods
- * (copy & paste, popup, etc.) have been removed.
- */
-
-/*
- * Modified for inclusion into gnome-keyring by Stef Walter
- */
-
-#ifndef __GKR_ASK_ENTRY_H__
-#define __GKR_ASK_ENTRY_H__
-
-
-#include <gtk/gtk.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define GKR_TYPE_ASK_ENTRY (gkr_ask_entry_get_type ())
-#define GKR_ASK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_ASK_ENTRY, GkrAskEntry))
-#define GKR_ASK_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_ASK_ENTRY, GkrAskEntryClass))
-#define GKR_IS_ASK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_ASK_ENTRY))
-#define GKR_IS_ASK_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_ASK_ENTRY))
-#define GKR_ASK_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_ASK_ENTRY, GkrAskEntryClass))
-
-typedef struct _GkrAskEntry GkrAskEntry;
-typedef struct _GkrAskEntryClass GkrAskEntryClass;
-
-struct _GkrAskEntry {
- GtkWidget widget;
-
- gchar *text;
-
- guint overwrite_mode : 1;
-
- /* length in use, in chars */
- guint16 text_length;
- guint16 text_max_length;
-
- /*< private > */
- GdkWindow *text_area;
- GtkIMContext *im_context;
-
- gint current_pos;
- gint selection_bound;
-
- PangoLayout *cached_layout;
- guint cache_includes_preedit : 1;
-
- guint need_im_reset : 1;
-
- guint has_frame : 1;
-
- guint activates_default : 1;
-
- guint cursor_visible : 1;
-
- /* Flag so we don't select all when clicking in entry to focus in */
- guint in_click : 1;
-
- /* Only used by GtkCellRendererText */
- guint is_cell_renderer : 1;
- guint editing_canceled : 1;
-
- guint mouse_cursor_obscured : 1;
-
- /* PangoDirection */
- guint resolved_dir : 4;
-
- guint button;
- guint blink_timeout;
- guint recompute_idle;
- gint scroll_offset;
- gint ascent; /* font ascent, in pango units */
- gint descent; /* font descent, in pango units */
-
- guint16 text_size; /* allocated size, in bytes */
- guint16 n_bytes; /* length in use, in bytes */
-
- guint16 preedit_length; /* length of preedit string, in bytes */
- guint16 preedit_cursor; /* offset of cursor within preedit string, in chars */
-
- gunichar invisible_char;
- gint width_chars;
-
- gboolean visibility;
-
- /* Keeps track of whether changed between resets */
- gboolean changed;
-};
-
-struct _GkrAskEntryClass {
- GtkWidgetClass parent_class;
-
- /* Action signals */
- void (*activate) (GkrAskEntry *entry);
- void (*move_cursor) (GkrAskEntry *entry, GtkMovementStep step,
- gint count, gboolean extend_selection);
- void (*insert_at_cursor) (GkrAskEntry *entry, const gchar *str);
- void (*delete_from_cursor) (GkrAskEntry *entry, GtkDeleteType type, gint count);
-
- /* Padding for future expansion */
- void (*_gtk_reserved1) (void);
- void (*_gtk_reserved2) (void);
- void (*_gtk_reserved3) (void);
- void (*_gtk_reserved4) (void);
-};
-
-GType gkr_ask_entry_get_type (void) G_GNUC_CONST;
-
-GtkWidget* gkr_ask_entry_new (void);
-
-void gkr_ask_entry_reset_changed (GkrAskEntry *entry);
-
-gboolean gkr_ask_entry_get_changed (GkrAskEntry *entry);
-
-void gkr_ask_entry_set_visibility (GkrAskEntry *entry, gboolean setting);
-
-gboolean gkr_ask_entry_get_visibility (GkrAskEntry *entry);
-
-void gkr_ask_entry_set_invisible_char (GkrAskEntry *entry, gunichar ch);
-
-gunichar gkr_ask_entry_get_invisible_char (GkrAskEntry *entry);
-
-void gkr_ask_entry_set_has_frame (GkrAskEntry *entry, gboolean setting);
-
-gboolean gkr_ask_entry_get_has_frame (GkrAskEntry *entry);
-
-/* text is truncated if needed */
-void gkr_ask_entry_set_max_length (GkrAskEntry *entry, gint max);
-
-gint gkr_ask_entry_get_max_length (GkrAskEntry *entry);
-
-void gkr_ask_entry_set_activates_default (GkrAskEntry *entry, gboolean setting);
-
-gboolean gkr_ask_entry_get_activates_default (GkrAskEntry *entry);
-
-void gkr_ask_entry_set_width_chars (GkrAskEntry *entry, gint n_chars);
-
-gint gkr_ask_entry_get_width_chars (GkrAskEntry *entry);
-
-/* Somewhat more convenient than the GtkEditable generic functions */
-void gkr_ask_entry_set_text (GkrAskEntry *entry, const gchar *text);
-
-/* returns a reference to the text */
-const gchar* gkr_ask_entry_get_text (GkrAskEntry *entry);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*__GKR_ASK_ENTRY_H__ */
diff --git a/ui/gkr-ask-marshal.list b/ui/gkr-ask-marshal.list
deleted file mode 100644
index 6f3e972b..00000000
--- a/ui/gkr-ask-marshal.list
+++ /dev/null
@@ -1 +0,0 @@
-UINT:VOID
diff --git a/ui/gkr-ask-request.c b/ui/gkr-ask-request.c
deleted file mode 100644
index 5e79a2b5..00000000
--- a/ui/gkr-ask-request.c
+++ /dev/null
@@ -1,941 +0,0 @@
-/*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-request.c - represents a prompt for the user
-
- Copyright (C) 2003 Red Hat, Inc
- Copyright (C) 2007 Stefan Walter
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ask-request.h"
-#include "gkr-ask-marshal.h"
-#include "gkr-ask-daemon.h"
-
-#include "common/gkr-async.h"
-#include "common/gkr-location.h"
-#include "common/gkr-secure-memory.h"
-
-#include "library/gnome-keyring.h"
-#include "library/gnome-keyring-private.h"
-#include "library/gnome-keyring-proto.h"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <glib.h>
-
-#include <gcrypt.h>
-
-#define DEBUG_COMMUNICATION 0
-
-/* -----------------------------------------------------------------------------
- * DECLARATIONS
- */
-
-extern char **environ;
-
-enum {
- CHECK_REQUEST,
- COMPLETED,
- LAST_SIGNAL
-};
-
-struct _GkrAskRequestPrivate;
-typedef struct _GkrAskRequestPrivate GkrAskRequestPrivate;
-
-struct _GkrAskRequestPrivate {
- GObject* object;
- GQuark location;
-
- gchar *title;
- gchar *primary;
- gchar *secondary;
- gchar *checktext;
- gboolean location_selector;
-
- gboolean completed;
- guint flags;
-
- gint ask_pid;
- gint in_fd;
- gint out_fd;
- GkrBuffer buffer;
-};
-
-#define GKR_ASK_REQUEST_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE((o), GKR_TYPE_ASK_REQUEST, GkrAskRequestPrivate))
-
-G_DEFINE_TYPE (GkrAskRequest, gkr_ask_request, G_TYPE_OBJECT);
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-/* -----------------------------------------------------------------------------
- * OBJECT MARKUP
- */
-
-typedef struct _ObjectMarkupCtx {
- GString *res;
- GObject *object;
-} ObjectMarkupCtx;
-
-static void
-insert_object_property (GString *res, GObject *object, const gchar *property)
-{
- GParamSpec *spec;
- GValue value;
- GValue svalue;
- gchar *str;
-
- g_return_if_fail (property && property[0]);
-
- memset (&value, 0, sizeof (value));
- memset (&svalue, 0, sizeof (value));
-
- spec = g_object_class_find_property (G_OBJECT_GET_CLASS (object), property);
- if (!spec)
- return;
-
- g_value_init (&value, spec->value_type);
- g_object_get_property (object, property, &value);
- g_value_init (&svalue, G_TYPE_STRING);
-
- if (g_value_transform (&value, &svalue)) {
- str = g_markup_escape_text (g_value_get_string (&svalue), -1);
- g_string_append (res, str);
- g_free (str);
- }
-
- g_value_unset (&svalue);
- g_value_unset (&value);
-}
-
-static void
-format_start_element (GMarkupParseContext *ctx, const gchar *element_name,
- const gchar **attribute_names, const gchar **attribute_values,
- gpointer user_data, GError **error)
-{
- ObjectMarkupCtx *omc = (ObjectMarkupCtx*)user_data;
- gchar *t;
-
- if (strcmp (element_name, "outer") == 0)
- return;
-
- if (strcmp (element_name, "object") == 0) {
-
- const gchar *property = NULL;
-
- for (; *attribute_names && *attribute_values; attribute_names++, attribute_values++) {
- if (strcmp (*attribute_names, "prop") == 0)
- property = *attribute_values;
- }
-
- if (!property)
- g_warning ("key text <object> element requires the following attributes\n"
- " <object prop=\"xxxxx\"/>");
- else
- insert_object_property (omc->res, omc->object, property);
-
- return;
- }
-
- /* Just pass through any other elements */
- g_string_append_printf (omc->res, "<%s", element_name);
- for (; *attribute_names && *attribute_values; attribute_names++, attribute_values++) {
- t = g_markup_printf_escaped ("%s", *attribute_values);
- g_string_append_printf (omc->res, " %s=\"%s\"", *attribute_names, t);
- g_free (t);
- }
- g_string_append (omc->res, ">");
-}
-
-static void
-format_end_element (GMarkupParseContext *ctx, const gchar *element_name,
- gpointer user_data, GError **error)
-{
- ObjectMarkupCtx *omc = (ObjectMarkupCtx*)user_data;
-
- if (strcmp (element_name, "outer") == 0 ||
- strcmp (element_name, "object") == 0)
- return;
-
- /* Just pass through any other elements */;
- g_string_append_printf (omc->res, "</%s>", element_name);
-}
-
-static void
-format_text (GMarkupParseContext *ctx, const gchar *text, gsize text_len,
- gpointer user_data, GError **error)
-{
- ObjectMarkupCtx *omc = (ObjectMarkupCtx*)user_data;
- g_string_append_len (omc->res, text, text_len);
-}
-
-static gchar*
-format_object_markup (GObject *object, const gchar *str1, const gchar *str2)
-{
- ObjectMarkupCtx omc;
- GError *err = NULL;
- GMarkupParseContext *ctx;
- GMarkupParser parser;
- gboolean ret;
-
- memset (&parser, 0, sizeof (parser));
- parser.start_element = format_start_element;
- parser.end_element = format_end_element;
- parser.text = format_text;
- parser.passthrough = format_text;
-
- omc.res = g_string_new (NULL);
- omc.object = object;
-
- /* We need an outer tag in order to parse */
- ctx = g_markup_parse_context_new (&parser, 0, &omc, NULL);
- ret = g_markup_parse_context_parse (ctx, "<outer>", strlen ("<outer>"), &err) &&
- (!str1 || g_markup_parse_context_parse (ctx, str1, strlen (str1), &err)) &&
- (!str2 || g_markup_parse_context_parse (ctx, str2, strlen (str2), &err)) &&
- g_markup_parse_context_parse (ctx, "</outer>", strlen ("</outer>"), &err);
-
- g_markup_parse_context_free (ctx);
-
- if (!ret) {
- g_warning ("couldn't parse markup: %s%s: %s", str1 ? str1 : "",
- str2 ? str2 : "", err && err->message ? err->message : "");
- g_string_free (omc.res, TRUE);
- return NULL;
- }
-
- return g_string_free (omc.res, FALSE);
-}
-
-/* -----------------------------------------------------------------------------
- * HELPERS
- */
-
-static void
-mark_completed (GkrAskRequest *ask, GkrAskResponse resp)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- if (!pv->completed) {
- if (resp)
- ask->response = resp;
- pv->completed = TRUE;
- }
-}
-
-static void
-kill_ask_process (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- if (pv->ask_pid != 0) {
- kill (pv->ask_pid, SIGKILL);
- pv->ask_pid = 0;
- }
-}
-
-static void
-cancel_ask_if_active (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- if (pv->ask_pid) {
- g_assert (!pv->completed);
- kill_ask_process (ask);
- g_assert (pv->ask_pid == 0);
- }
-
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
-}
-
-static void
-finish_ask_io (GkrAskRequest *ask, gboolean success)
-{
- GkrAskRequestPrivate *pv;
- gchar *line, *next, *value;
- GError *error = NULL;
- GKeyFile *key_file;
- int i;
-
- pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- pv->ask_pid = 0;
-
- /* Cleanup for response processing */
- gkr_secure_strfree (ask->typed_password);
- ask->typed_password = NULL;
- gkr_secure_strfree (ask->original_password);
- ask->original_password = NULL;
-
- /* A failed request */
- if (!success) {
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
- return;
- }
-
- /*
- * Parse each of the lines. Try to keep memory allocations
- * to a minimum, for security reasons.
- */
- for (i = 0, line = (gchar*)pv->buffer.buf; line && i < 2; ++i) {
-
- /* Break out the line */
- next = strchr (line, '\n');
- if (next) {
- *next = 0;
- ++next;
- }
-
- /* First line is the password */
- if (i == 0)
- ask->typed_password = gkr_secure_strdup (line);
-
- /* Second line is the original password (if any)*/
- else if (i == 1)
- ask->original_password = gkr_secure_strdup (line);
-
- line = next;
- }
-
- if (!line) {
- g_warning ("missing dialog response from ask tool");
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
- return;
- }
-
- /* The remainder is a GKeyFile */
- key_file = g_key_file_new ();
- if (!g_key_file_load_from_data (key_file, line, strlen (line), G_KEY_FILE_NONE, &error)) {
- g_warning ("couldn't parse dialog response from ask tool: %s", error->message);
- g_error_free (error);
- g_key_file_free (key_file);
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
- return;
- }
-
- /* Pull out some values */
- ask->checked = g_key_file_get_boolean (key_file, "check", "check-active", NULL);
- ask->response = g_key_file_get_integer (key_file, "general", "response", NULL);
- value = g_key_file_get_value (key_file, "location", "location-selected", NULL);
- if (value)
- ask->location_selected = gkr_location_from_string (value);
- g_free (value);
- g_key_file_free (key_file);
-
- /* An invalid result from the ask tool */
- if (!ask->response) {
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
- return;
- }
-
- /* Ref around these callbacks */
- g_object_ref (ask);
-
- /* Check it and see if it really is completed */
- gkr_ask_request_check (ask);
-
- /* And ask again if not finished */
- if (!pv->completed)
- gkr_ask_request_prompt (ask);
-
- /* Ref from eaclier up */
- g_object_unref (ask);
-}
-
-static void
-close_fd (gpointer data)
-{
- int *fd = (int*)data;
- g_assert (fd);
- close (*fd);
- *fd = -1;
-}
-
-static gchar*
-prep_dialog_data (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- GkrLocationManager *locmgr;
- gboolean need_locations = FALSE;
- GKeyFile *key_file;
- gchar *value, *data;
- GArray *array;
- GSList *locations, *l;
- GParamSpec *spec;
- GQuark loc, loc_volume;
- const gchar *t;
-
- key_file = g_key_file_new ();
-
- value = format_object_markup (pv->object, pv->title, NULL);
- g_key_file_set_value (key_file, "general", "title", value);
- g_free (value);
-
- value = format_object_markup (pv->object, pv->primary, NULL);
- g_key_file_set_value (key_file, "general", "primary", value);
- g_free (value);
-
- value = format_object_markup (pv->object, pv->secondary, NULL);
- g_key_file_set_value (key_file, "general", "secondary", value);
- g_free (value);
-
- g_key_file_set_integer (key_file, "general", "flags", pv->flags);
-
- if (pv->checktext) {
- g_key_file_set_boolean (key_file, "check", "check-enable", TRUE);
- g_key_file_set_value (key_file, "check", "check-text", pv->checktext);
- }
-
- /* Display the location drop down selector */
- if (pv->location_selector) {
- g_key_file_set_boolean (key_file, "location", "location-selector", TRUE);
- need_locations = TRUE;
- }
-
- if (!pv->location && pv->object) {
- spec = g_object_class_find_property (G_OBJECT_GET_CLASS (pv->object), "location");
- if (spec)
- g_object_get (pv->object, "location", &pv->location, NULL);
- }
-
- /* See if we should send a location to display */
- loc_volume = 0;
- if (pv->location) {
- loc_volume = gkr_location_get_volume (pv->location);
-
- /* Suppress local stuff unless displying the selector */
- if (!need_locations && loc_volume) {
- if(loc_volume == GKR_LOCATION_VOLUME_LOCAL)
- loc_volume = 0;
- else if(loc_volume == GKR_LOCATION_VOLUME_HOME)
- loc_volume = 0;
- }
-
- if (loc_volume) {
- g_key_file_set_value (key_file, "location", "location",
- gkr_location_to_string (loc_volume));
- need_locations = TRUE;
- }
- }
-
- if (need_locations) {
- locmgr = gkr_location_manager_get ();
- array = g_array_new (TRUE, TRUE, sizeof (gchar*));
- locations = gkr_location_manager_get_volumes (locmgr);
-
- /* Send all the locations and all the display names */
- for (l = locations; l; l = g_slist_next (l)) {
- loc = GPOINTER_TO_UINT (l->data);
- t = gkr_location_to_string (loc);
- g_array_append_val (array, t);
-
- /* Did we see the location of the item? */
- if (loc == loc_volume)
- loc_volume = 0;
- }
-
- /* If we didn't see the location of the item, include it in the list */
- if (loc_volume) {
- locations = g_slist_append (locations, GUINT_TO_POINTER (loc_volume));
- t = gkr_location_to_string (loc_volume);
- g_array_append_val (array, t);
- }
-
- g_key_file_set_string_list (key_file, "location", "names", (const gchar**)array->data, array->len);
-
- g_array_set_size (array, 0);
- for (l = locations; l; l = g_slist_next (l)) {
- t = gkr_location_manager_get_volume_display (locmgr, GPOINTER_TO_UINT (l->data));
- if (!t)
- t = "";
- g_array_append_val (array, t);
- }
- g_key_file_set_string_list (key_file, "location", "display-names", (const gchar**)array->data, array->len);
-
- g_array_free (array, TRUE);
- g_slist_free (locations);
- }
-
- data = g_key_file_to_data (key_file, NULL, NULL);
- g_return_val_if_fail (data, NULL);
-
- return data;
-}
-
-static gboolean
-read_until_end (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- gboolean ret = FALSE;
- guchar *buf;
- int res;
-
- g_return_val_if_fail (pv->out_fd >= 0, FALSE);
-
- /* Passwords come through this buffer */
- buf = gkr_secure_alloc (128);
-
- gkr_async_register_cancel (close_fd, &pv->out_fd);
-
- for (;;) {
-
- if (gkr_async_is_stopping ())
- break;
-
- gkr_async_begin_concurrent ();
- res = read (pv->out_fd, buf, 128);
- gkr_async_end_concurrent ();
-
- /* Got an error */
- if (res < 0) {
- if (errno == EINTR && errno == EAGAIN)
- continue;
- g_warning ("couldn't read from ask tool: %s", g_strerror (errno));
- break;
-
- /* Got some data */
- } else if (res > 0) {
- gkr_buffer_append (&pv->buffer, buf, res);
-
- /* End of data */
- } else if (res == 0) {
- ret = TRUE;
- break;
- }
- }
-
- /* Always null terminate */
- gkr_buffer_add_byte (&pv->buffer, 0);
-
- gkr_secure_free (buf);
- gkr_async_unregister_cancel (close_fd, &pv->out_fd);
-
- close_fd (&pv->out_fd);
-
- return ret;
-}
-
-static gboolean
-launch_ask_helper (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- gchar **names, **envp;
- int i, n;
- GError *error = NULL;
- gboolean ret;
-
- char *argv[] = {
- LIBEXECDIR "/gnome-keyring-ask",
- NULL,
- };
-
- /* Calculate us some environment */
- names = g_listenv ();
- g_return_val_if_fail (names, FALSE);
- i = 0;
- while (names[i])
- ++i;
- n = i;
-
- /* Any environment we have */
- envp = g_new (char*, n + 2);
- for (i = 0; i < n; i++)
- envp[i] = g_strdup_printf ("%s=%s", names[i], g_getenv (names[i]));
- envp[i++] = NULL;
- g_strfreev (names);
-
- gkr_buffer_resize (&pv->buffer, 0);
-
- ret = g_spawn_async_with_pipes (NULL, argv, envp, 0, NULL, NULL, &pv->ask_pid,
- &pv->in_fd, &pv->out_fd, NULL, &error);
- g_strfreev (envp);
-
- if (!ret) {
- g_warning ("couldn't spawn gnome-keyring-ask tool: %s",
- error && error->message ? error->message : "unknown error");
- pv->out_fd = -1;
- pv->in_fd = -1;
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-send_all_data (GkrAskRequest *ask, const gchar *buf, gsize len)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- gboolean ret = FALSE;
- int res;
-
- g_return_val_if_fail (pv->in_fd >= 0, FALSE);
-
- gkr_async_register_cancel (close_fd, &pv->in_fd);
-
- while (len > 0) {
-
- if (gkr_async_is_stopping ())
- break;
-
- gkr_async_begin_concurrent ();
- res = write (pv->in_fd, buf, len);
- gkr_async_end_concurrent ();
-
- /* Got an error */
- if (res < 0) {
- if (errno == EINTR && errno == EAGAIN)
- continue;
- g_warning ("couldn't write data to ask tool: %s", g_strerror (errno));
- break;
-
- /* Got some data */
- } else if (res > 0) {
- len -= res;
- buf += res;
-
- /* Eh? */
- } else if (res == 0) {
- g_warning ("couldn't write data to ask tool");
- break;
- }
- }
-
- if (len == 0)
- ret = TRUE;
-
- gkr_async_unregister_cancel (close_fd, &pv->in_fd);
-
- close_fd (&pv->in_fd);
- return ret;
-}
-
-static void
-tracked_object_destroyed (gpointer data, GObject *where_the_object_was)
-{
- GkrAskRequest *ask = GKR_ASK_REQUEST (data);
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_assert (pv->object == where_the_object_was);
- pv->object = NULL;
-
- /* Cancel any goings on */
- cancel_ask_if_active (ask);
-}
-
-static gboolean
-accumulate_checks (GSignalInvocationHint *ihint, GValue *return_accu,
- const GValue *handler_return, gpointer data)
-{
- guint val;
-
- g_assert (ihint->signal_id == signals[CHECK_REQUEST]);
-
- g_assert (G_VALUE_TYPE (handler_return) == G_TYPE_UINT);
- g_assert (G_VALUE_TYPE (return_accu) == G_TYPE_UINT);
-
- /* If the signal handler cares about the result */
- val = g_value_get_uint (handler_return);
- if (val) {
- g_value_set_uint (return_accu, val);
- return FALSE;
- }
-
- return TRUE;
-}
-
-/* -----------------------------------------------------------------------------
- * OBJECT
- */
-
-static void
-gkr_ask_request_init (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- pv->title = g_strdup ("");
- pv->primary = g_strdup ("");
- pv->secondary = g_strdup ("");
- pv->checktext = NULL;
-
- pv->out_fd = -1;
- pv->in_fd = -1;
-
- /* Use a secure memory buffer */
- gkr_buffer_init_full (&pv->buffer, 128, gkr_secure_realloc);
-}
-
-static guint
-gkr_ask_request_check_request (GkrAskRequest *ask)
-{
- return GKR_ASK_DONT_CARE;
-}
-
-static void
-gkr_ask_request_dispose (GObject *obj)
-{
- GkrAskRequest *ask = GKR_ASK_REQUEST (obj);
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- cancel_ask_if_active (ask);
- g_assert (pv->ask_pid == 0);
-
- gkr_secure_strfree (ask->original_password);
- ask->original_password = NULL;
-
- gkr_secure_strfree (ask->typed_password);
- ask->typed_password = NULL;
-
- if (pv->in_fd >= 0)
- close_fd (&pv->in_fd);
- if (pv->out_fd >= 0)
- close_fd (&pv->out_fd);
-
- G_OBJECT_CLASS(gkr_ask_request_parent_class)->dispose (obj);
-}
-
-static void
-gkr_ask_request_finalize (GObject *obj)
-{
- GkrAskRequest *ask = GKR_ASK_REQUEST (obj);
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- gkr_ask_request_set_object (ask, NULL);
- g_assert (pv->object == NULL);
-
- g_free (pv->title);
- g_free (pv->primary);
- g_free (pv->secondary);
- g_free (pv->checktext);
- pv->title = pv->primary = pv->secondary = pv->checktext = NULL;
-
- g_assert (pv->ask_pid == 0);
- g_assert (pv->in_fd < 0);
- g_assert (pv->out_fd < 0);
-
- gkr_buffer_uninit (&pv->buffer);
-
- G_OBJECT_CLASS(gkr_ask_request_parent_class)->finalize (obj);
-}
-
-static void
-gkr_ask_request_class_init (GkrAskRequestClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- gkr_ask_request_parent_class = g_type_class_peek_parent (klass);
-
- klass->check_request = gkr_ask_request_check_request;
-
- gobject_class->dispose = gkr_ask_request_dispose;
- gobject_class->finalize = gkr_ask_request_finalize;
-
- g_type_class_add_private (gobject_class, sizeof (GkrAskRequestPrivate));
-
- signals[CHECK_REQUEST] = g_signal_new ("check-request", GKR_TYPE_ASK_REQUEST,
- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GkrAskRequestClass, check_request),
- accumulate_checks, NULL, gkr_ask_marshal_UINT__VOID,
- G_TYPE_UINT, 0);
-}
-
-/* -----------------------------------------------------------------------------
- * PUBLIC
- */
-
-GkrAskRequest*
-gkr_ask_request_new (const gchar *title, const gchar *primary, guint flags)
-{
- GkrAskRequest *ask;
- GkrAskRequestPrivate *pv;
-
- /* TODO: This should be done via properties */
-
- ask = g_object_new (GKR_TYPE_ASK_REQUEST, NULL);
- pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_free (pv->title);
- pv->title = g_strdup (title ? title : "");
-
- g_free (pv->primary);
- pv->primary = g_strdup (primary ? primary : "");
- pv->flags = flags;
-
- return ask;
-}
-
-void
-gkr_ask_request_set_secondary (GkrAskRequest *ask, const gchar *secondary)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- g_free (pv->secondary);
- pv->secondary = g_strdup (secondary);
-}
-
-void
-gkr_ask_request_set_check_option (GkrAskRequest *ask, const gchar *check_text)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- g_free (pv->checktext);
- pv->checktext = g_strdup (check_text);
-}
-
-GObject*
-gkr_ask_request_get_object (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- return pv->object;
-}
-
-void
-gkr_ask_request_set_object (GkrAskRequest *ask, GObject *object)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- if (pv->object) {
- g_object_weak_unref (pv->object, tracked_object_destroyed, ask);
- pv->object = NULL;
- }
-
- if (object) {
- pv->object = object;
- g_object_weak_ref (pv->object, tracked_object_destroyed, ask);
- }
-}
-
-gboolean
-gkr_ask_request_check (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- guint ret;
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- /* Already completed due to object going away or some other? */
- if (pv->completed)
- return TRUE;
-
- /* Ask all the handlers to prep */
- g_signal_emit (ask, signals[CHECK_REQUEST], 0, &ret);
-
- /* A handler completed it */
- switch (ret) {
- case GKR_ASK_DONT_CARE:
- if (ask->response) {
- mark_completed (ask, ask->response);
- return TRUE;
- }
- break;
- case GKR_ASK_STOP_REQUEST:
- g_assert (ask->response && "check-request signal handler didn't fill in response");
- mark_completed (ask, ask->response);
- return TRUE;
- case GKR_ASK_CONTINUE_REQUEST:
- break;
- default:
- g_assert (FALSE && "invalid return value from a check-request signal handler");
- break;
- }
-
- return FALSE;
-}
-
-void
-gkr_ask_request_prompt (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- gboolean ret;
- gchar *data;
-
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- /* Already completed due to object going away or some other? */
- if (pv->completed)
- return;
-
- ret = launch_ask_helper (ask);
- if (ret) {
- data = prep_dialog_data (ask);
- g_return_if_fail (data);
-#if DEBUG_COMMUNICATION
- g_printerr ("TO DIALOG:\n%s\n", data);
-#endif
- ret = send_all_data (ask, data, strlen (data));
- g_free (data);
- }
- if (ret) {
- ret = read_until_end (ask);
-#if DEBUG_COMMUNICATION
- if (ret)
- g_printerr ("FROM DIALOG:\n%s\n", pv->buffer.buf);
-#endif
- }
- finish_ask_io (ask, ret);
-}
-
-void
-gkr_ask_request_cancel (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- g_assert (GKR_IS_ASK_REQUEST (ask));
-
- cancel_ask_if_active (ask);
- if (!pv->completed)
- mark_completed (ask, GKR_ASK_RESPONSE_FAILURE);
-}
-
-gboolean
-gkr_ask_request_is_complete (GkrAskRequest *ask)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- g_assert (GKR_IS_ASK_REQUEST (ask));
- return pv->completed;
-}
-
-void
-gkr_ask_request_set_location_selector (GkrAskRequest *ask, gboolean have)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- g_assert (GKR_IS_ASK_REQUEST (ask));
- pv->location_selector = have;
-}
-
-void
-gkr_ask_request_set_location (GkrAskRequest *ask, GQuark loc)
-{
- GkrAskRequestPrivate *pv = GKR_ASK_REQUEST_GET_PRIVATE (ask);
- g_assert (GKR_IS_ASK_REQUEST (ask));
- pv->location = loc;
-}
diff --git a/ui/gkr-ask-request.h b/ui/gkr-ask-request.h
deleted file mode 100644
index 973d8ab0..00000000
--- a/ui/gkr-ask-request.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-request.c: A single ask request
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef __GKR_ASK_REQUEST_H__
-#define __GKR_ASK_REQUEST_H__
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-typedef enum {
- GKR_ASK_RESPONSE_FAILURE = -1,
- GKR_ASK_RESPONSE_NONE = 0,
- GKR_ASK_RESPONSE_DENY,
- GKR_ASK_RESPONSE_ALLOW,
- GKR_ASK_RESPONSE_ALLOW_FOREVER
-} GkrAskResponse;
-
-typedef enum {
- GKR_ASK_REQUEST_PASSWORD = 0x0001,
- GKR_ASK_REQUEST_CONFIRM_PASSWORD = 0x0002,
- GKR_ASK_REQUEST_ORIGINAL_PASSWORD = 0x0004,
-
- GKR_ASK_REQUEST_OK_BUTTON = 0x0100,
- GKR_ASK_REQUEST_CANCEL_BUTTON = 0x0200,
- GKR_ASK_REQUEST_ALLOW_BUTTON = 0x1000,
- GKR_ASK_REQUEST_ALLOW_FOREVER_BUTTON = 0x2000,
- GKR_ASK_REQUEST_DENY_BUTTON = 0x4000,
-
- GKR_ASK_REQUEST_BUTTONS_MASK = 0xFF00
-
-} GkrAskRequestFlags;
-
-typedef enum {
- GKR_ASK_DONT_CARE = 0,
- GKR_ASK_STOP_REQUEST = 1,
- GKR_ASK_CONTINUE_REQUEST = 2
-} GkrAskCheckAction;
-
-#define GKR_ASK_REQUEST_OK_DENY_BUTTONS \
- (GKR_ASK_REQUEST_OK_BUTTON | GKR_ASK_REQUEST_DENY_BUTTON)
-#define GKR_ASK_REQUEST_OK_CANCEL_BUTTONS \
- (GKR_ASK_REQUEST_OK_BUTTON | GKR_ASK_REQUEST_CANCEL_BUTTON)
-#define GKR_ASK_REQUEST_NEW_PASSWORD \
- (GKR_ASK_REQUEST_PASSWORD | GKR_ASK_REQUEST_CONFIRM_PASSWORD | GKR_ASK_REQUEST_OK_DENY_BUTTONS)
-#define GKR_ASK_REQUEST_PROMPT_PASSWORD \
- (GKR_ASK_REQUEST_PASSWORD | GKR_ASK_REQUEST_OK_DENY_BUTTONS)
-#define GKR_ASK_REQUEST_ACCESS_SOMETHING \
- (GKR_ASK_REQUEST_ALLOW_BUTTON | GKR_ASK_REQUEST_ALLOW_FOREVER_BUTTON | GKR_ASK_REQUEST_DENY_BUTTON)
-
-#define GKR_TYPE_ASK_REQUEST (gkr_ask_request_get_type ())
-#define GKR_ASK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GKR_TYPE_ASK_REQUEST, GkrAskRequest))
-#define GKR_ASK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GKR_TYPE_ASK_REQUEST, GObject))
-#define GKR_IS_ASK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GKR_TYPE_ASK_REQUEST))
-#define GKR_IS_ASK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GKR_TYPE_ASK_REQUEST))
-#define GKR_ASK_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GKR_TYPE_ASK_REQUEST, GkrAskRequestClass))
-
-typedef struct _GkrAskRequest GkrAskRequest;
-typedef struct _GkrAskRequestClass GkrAskRequestClass;
-
-struct _GkrAskRequest {
- GObject parent;
-
- /* Results */
- GkrAskResponse response;
- gboolean checked;
- GQuark location_selected;
- gchar* original_password;
- gchar* typed_password;
-};
-
-struct _GkrAskRequestClass {
- GObjectClass parent_class;
-
- /* A callback called before and after request to check if still valid */
- GkrAskCheckAction (*check_request) (GkrAskRequest *ask);
-};
-
-GType gkr_ask_request_get_type (void)G_GNUC_CONST;
-
-GkrAskRequest* gkr_ask_request_new (const gchar *title,
- const gchar *primary,
- guint flags);
-
-void gkr_ask_request_set_secondary (GkrAskRequest *ask,
- const gchar *secondary);
-
-void gkr_ask_request_set_check_option (GkrAskRequest *ask,
- const gchar *check_text);
-
-void gkr_ask_request_set_location_selector (GkrAskRequest *ask,
- gboolean have);
-
-void gkr_ask_request_set_location (GkrAskRequest *ask,
- GQuark loc);
-
-GObject* gkr_ask_request_get_object (GkrAskRequest *ask);
-
-void gkr_ask_request_set_object (GkrAskRequest *ask,
- GObject *object);
-
-gboolean gkr_ask_request_check (GkrAskRequest *ask);
-
-void gkr_ask_request_prompt (GkrAskRequest *ask);
-
-void gkr_ask_request_cancel (GkrAskRequest *ask);
-
-gboolean gkr_ask_request_is_complete (GkrAskRequest *ask);
-
-G_END_DECLS
-
-#endif /* __GKR_ASK_REQUEST_H__ */
-
diff --git a/ui/gkr-ask-tool-widgets.c b/ui/gkr-ask-tool-widgets.c
deleted file mode 100644
index 4ff50e59..00000000
--- a/ui/gkr-ask-tool-widgets.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gnome-ask-tool-widgets.c - Some widget routines for gnome-keyring-ask
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ask-tool.h"
-
-#include <gtk/gtk.h>
-
-#include <string.h>
-
-static const gchar*
-icon_for_location (const gchar *name)
-{
- if (strcmp (name, "HOME:") == 0)
- return "gnome-fs-home";
- if (strcmp (name, "LOCAL:") == 0)
- return "gnome-fs-home";
- return "gnome-dev-removable";
-}
-
-static GtkWidget*
-create_location_label (GKeyFile *input_data)
-{
- GtkWidget *widget = NULL;
- GtkWidget *label, *image;
- const gchar *display = NULL;
- gchar *location = NULL;
- gchar **loc_names = NULL;
- gsize i, n_loc_names, n_loc_displays;
- gchar **loc_displays = NULL;
-
- location = g_key_file_get_value (input_data, "location", "location", NULL);
- if (!location)
- return NULL;
-
- loc_names = g_key_file_get_string_list (input_data, "location", "names",
- &n_loc_names, NULL);
- if (!loc_names || !n_loc_names) {
- g_warning ("no 'names' found");
- goto done;
- }
-
- loc_displays = g_key_file_get_string_list (input_data, "location", "display-names",
- &n_loc_displays, NULL);
-
- for (i = 0; i < n_loc_names; ++i) {
- if (strcmp (location, loc_names[i]) == 0) {
- if (loc_displays && i < n_loc_displays)
- display = loc_displays[i];
- break;
- }
- }
-
- widget = gtk_hbox_new (FALSE, 3);
- label = gtk_label_new (display ? display : location);
- image = gtk_image_new_from_icon_name (icon_for_location (location),
- GTK_ICON_SIZE_SMALL_TOOLBAR);
-
- gtk_box_pack_start (GTK_BOX (widget), image, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (widget), label, FALSE, TRUE, 0);
- gtk_widget_show_all (widget);
-
-done:
- g_strfreev (loc_names);
- g_strfreev (loc_displays);
- g_free (location);
- return widget;
-}
-
-enum {
- COLUMN_ICON,
- COLUMN_NAME,
- COLUMN_DISPLAY,
-};
-
-static void
-selection_changed (GtkComboBox *box, gpointer unused)
-{
- GtkTreeIter iter;
- const gchar *location = NULL;
-
- if (gtk_combo_box_get_active_iter (box, &iter)) {
- gtk_tree_model_get (gtk_combo_box_get_model (box), &iter,
- COLUMN_NAME, &location, -1);
- }
-
- g_object_set_data (G_OBJECT (box), "location-selected", (gpointer)location);
-}
-
-static GtkWidget*
-create_location_selector (GKeyFile *input_data)
-{
- GtkWidget *widget = NULL;
- const gchar *display;
- gchar *location = NULL;
- gchar **loc_names = NULL;
- gsize i, n_loc_names, n_loc_displays;
- gchar **loc_displays = NULL;
- GtkTreeIter iter;
- GtkListStore *store;
- GtkCellRenderer *renderer;
- gint selected = -1;
-
- loc_names = g_key_file_get_string_list (input_data, "location", "names",
- &n_loc_names, NULL);
- if (!loc_names || !n_loc_names) {
- g_warning ("no 'names' found");
- goto done;
- }
-
- /* Only one, then just make a label */
- if (n_loc_names == 1) {
- widget = create_location_label (input_data);
- if (widget)
- g_object_set_data_full (G_OBJECT (widget), "location-selected",
- g_strdup (loc_names[0]), g_free);
- goto done;
- }
-
- loc_displays = g_key_file_get_string_list (input_data, "location", "display-names",
- &n_loc_displays, NULL);
- location = g_key_file_get_value (input_data, "location", "location", NULL);
-
- /* Create and populate the store */
- store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
- for (i = 0; i < n_loc_names; ++i) {
- gtk_list_store_append (store, &iter);
-
- /* Choose a selected row, for later use */
- if (selected < 0)
- selected = i;
- if (location && strcmp (location, loc_names[i]) == 0)
- selected = i;
-
- display = loc_names[i];
- if (loc_displays && n_loc_displays > i)
- display = loc_displays[i];
-
- gtk_list_store_set (store, &iter,
- COLUMN_ICON, icon_for_location (loc_names[i]),
- COLUMN_NAME, loc_names[i],
- COLUMN_DISPLAY, display,
- -1);
- }
-
- widget = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, FALSE);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (widget), renderer, "icon-name", COLUMN_ICON);
- g_object_set (renderer, "xpad", 3, NULL);
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, TRUE);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (widget), renderer, "text", COLUMN_DISPLAY);
-
- g_signal_connect (widget, "changed", G_CALLBACK (selection_changed), NULL);
-
- if (selected >= 0)
- gtk_combo_box_set_active (GTK_COMBO_BOX (widget), selected);
-
-done:
- g_strfreev (loc_names);
- g_strfreev (loc_displays);
- return widget;
-}
-
-GtkWidget*
-gkr_ask_tool_create_location (GKeyFile *input_data)
-{
- if (g_key_file_get_boolean (input_data, "location", "location-selector", NULL))
- return create_location_selector (input_data);
- else
- return create_location_label (input_data);
-}
-
-const gchar*
-gkr_ask_tool_get_location (GtkWidget *widget)
-{
- return (const gchar*)g_object_get_data (G_OBJECT (widget), "location-selected");
-}
diff --git a/ui/gkr-ask-tool.c b/ui/gkr-ask-tool.c
deleted file mode 100644
index 8e57d4dd..00000000
--- a/ui/gkr-ask-tool.c
+++ /dev/null
@@ -1,753 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-tool.c - Handles graphical authentication for the keyring daemon.
-
- Copyright (C) 2003 Red Hat, Inc
-
- Gnome keyring is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- Gnome keyring is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- Author: Alexander Larsson <alexl@redhat.com>
-*/
-
-#include "config.h"
-
-#include "gkr-ask-entry.h"
-#include "gkr-ask-tool.h"
-#include "gkr-ask-request.h"
-
-#include "common/gkr-secure-memory.h"
-
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <locale.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <syslog.h>
-
-static GKeyFile *input_data = NULL;
-static GKeyFile *output_data = NULL;
-static gboolean grabbed = FALSE;
-
-#define LOG_ERRORS 1
-
-/* -----------------------------------------------------------------------------
- * MEMORY
- */
-
-static gboolean do_warning = TRUE;
-#define WARNING "couldn't allocate secure memory to keep passwords " \
- "and or keys from being written to the disk"
-
-#define ABORTMSG "The GNOME_KEYRING_PARANOID environment variable was set. " \
- "Exiting..."
-
-/*
- * These are called from gkr-secure-memory.c to provide appropriate
- * locking for memory between threads
- */
-
-void
-gkr_memory_lock (void)
-{
- /* No threads used in ask tool, doesn't need locking */
-}
-
-void
-gkr_memory_unlock (void)
-{
- /* No threads used in ask tool, doesn't need locking */
-}
-
-void*
-gkr_memory_fallback (void *p, unsigned long sz)
-{
- const gchar *env;
-
- /* We were asked to free memory */
- if (!sz) {
- g_free (p);
- return NULL;
- }
-
- /* We were asked to allocate */
- if (!p) {
- if (do_warning) {
- g_message (WARNING);
- do_warning = FALSE;
- }
-
- env = g_getenv ("GNOME_KEYRING_PARANOID");
- if (env && *env)
- g_error (ABORTMSG);
-
- return g_malloc0 (sz);
- }
-
- /*
- * Reallocation is a bit of a gray area, as we can be asked
- * by external libraries (like libgcrypt) to reallocate a
- * non-secure block into secure memory. We cannot satisfy
- * this request (as we don't know the size of the original
- * block) so we just try our best here.
- */
-
- return g_realloc (p, sz);
-}
-
-/* -------------------------------------------------------------------------
- * HELPERS
- */
-
-/* Because Solaris doesn't have err() :( */
-static void
-fatal (const char *msg1, const char *msg2)
-{
- fprintf (stderr, "%s: %s%s%s\n",
- g_get_prgname (),
- msg1 ? msg1 : "",
- msg1 && msg2 ? ": " : "",
- msg2 ? msg2 : "");
-#if LOG_ERRORS
- syslog (LOG_AUTH | LOG_ERR, "%s: %s%s%s\n",
- g_get_prgname (),
- msg1 ? msg1 : "",
- msg1 && msg2 ? ": " : "",
- msg2 ? msg2 : "");
-#endif
- exit (1);
-}
-
-static void
-write_output (const gchar *data, gsize len)
-{
- int res;
-
- while (len > 0) {
- res = write (1, data, len);
- if (res <= 0) {
- if (errno == EAGAIN && errno == EINTR)
- continue;
- g_warning ("couldn't write dialog response to output: %s",
- g_strerror (errno));
- exit (1);
- } else {
- len -= res;
- data += res;
- }
- }
-}
-
-/* ------------------------------------------------------------------------------ */
-
-static gchar*
-create_markup (const gchar *primary, const gchar *secondary)
-{
- /* We're passed markup for both of these */
- return g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
- primary, secondary ? secondary : "");
-}
-
-static gchar*
-create_notice (const gchar *text)
-{
- return g_markup_printf_escaped ("<span style=\"italic\">%s</span>", text);
-}
-
-static gboolean
-confirm_blank_password (GtkWindow *parent)
-{
- GtkWidget *dialog;
- gchar *markup;
- gint ret;
-
- dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
- GTK_BUTTONS_NONE, NULL);
-
- markup = create_markup (_("Store passwords unencrypted?"),
- _("By choosing to use a blank password, your stored passwords will not be safely encrypted. "
- "They will be accessible by anyone with access to your files."));
- gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), markup);
- g_free (markup);
-
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
- _("Use Unsafe Storage"), GTK_RESPONSE_ACCEPT,
- NULL);
-
- ret = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
- return ret == GTK_RESPONSE_ACCEPT;
-}
-
-static void
-on_password_changed (GtkEditable *editable,
- gpointer user_data)
-{
- const char *password;
- int length;
- int i;
- int upper, lower, digit, misc;
- gdouble pwstrength;
-
- password = gkr_ask_entry_get_text (GKR_ASK_ENTRY (editable));
-
- /*
- * This code is based on the Master Password dialog in Firefox
- * (pref-masterpass.js)
- * Original code triple-licensed under the MPL, GPL, and LGPL
- * so is license-compatible with this file
- */
-
- length = strlen (password);
- upper = 0;
- lower = 0;
- digit = 0;
- misc = 0;
-
- for ( i = 0; i < length ; i++) {
- if (g_ascii_isdigit (password[i])) {
- digit++;
- } else if (g_ascii_islower (password[i])) {
- lower++;
- } else if (g_ascii_isupper (password[i])) {
- upper++;
- } else {
- misc++;
- }
- }
-
- if (length > 5) {
- length = 5;
- }
-
- if (digit > 3) {
- digit = 3;
- }
-
- if (upper > 3) {
- upper = 3;
- }
-
- if (misc > 3) {
- misc = 3;
- }
-
- pwstrength = ((length*0.1)-0.2) + (digit*0.1) + (misc*0.15) + (upper*0.1);
-
- if (pwstrength < 0.0) {
- pwstrength = 0.0;
- }
-
- if (pwstrength > 1.0) {
- pwstrength = 1.0;
- }
-
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (user_data), pwstrength);
-}
-
-static gboolean
-grab_keyboard (GtkWidget *win, GdkEvent *event, gpointer data)
-{
- if (!grabbed)
- if (gdk_keyboard_grab (win->window, FALSE, gdk_event_get_time (event)))
- g_message ("could not grab keyboard");
- grabbed = TRUE;
- return FALSE;
-}
-
-static gboolean
-ungrab_keyboard (GtkWidget *win, GdkEvent *event, gpointer data)
-{
- if (!grabbed)
- gdk_keyboard_ungrab (gdk_event_get_time (event));
- grabbed = FALSE;
- return FALSE;
-}
-
-static gboolean
-window_state_changed (GtkWidget *win, GdkEventWindowState *event, gpointer data)
-{
- GdkWindowState state = gdk_window_get_state (win->window);
-
- if (state & GDK_WINDOW_STATE_WITHDRAWN ||
- state & GDK_WINDOW_STATE_ICONIFIED ||
- state & GDK_WINDOW_STATE_FULLSCREEN ||
- state & GDK_WINDOW_STATE_MAXIMIZED)
- ungrab_keyboard (win, (GdkEvent*)event, data);
- else
- grab_keyboard (win, (GdkEvent*)event, data);
-
- return FALSE;
-}
-
-static gint
-run_dialog (gboolean include_password,
- gboolean include_confirm,
- gboolean include_original,
- char **password_out,
- char **original_out,
- guint default_response,
- const gchar *first_button_text,
- ...)
-{
- GtkWidget *dialog;
- GtkLabel *message_widget;
- GtkLabel *notice;
- char *message, *value, *value2;
- char *notice_text;
- GtkWidget *old, *entry, *confirm;
- GtkWidget *vbox, *label;
- gint response;
- va_list args;
- const char *text;
- gint response_id;
- GtkWidget *table, *ptable;
- GtkWidget *image, *check, *location;
- const char *password, *original, *confirmation;
- const char *env;
- int row;
-
- value = g_key_file_get_value (input_data, "general", "title", NULL);
- if (!value)
- fatal ("no 'title' field in input data", NULL);
- dialog = gtk_dialog_new_with_buttons (value, NULL, 0, NULL, NULL);
- g_free (value);
-
- gtk_window_set_icon_name(GTK_WINDOW(dialog), "stock_lock");
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
- gtk_window_set_default_size (GTK_WINDOW (dialog), 300, -1);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 12);
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
-
- va_start (args, first_button_text);
-
- text = first_button_text;
- response_id = va_arg (args, gint);
-
- while (text != NULL) {
- gtk_dialog_add_button (GTK_DIALOG (dialog), text, response_id);
-
- text = va_arg (args, char*);
- if (text == NULL) {
- break;
- }
- response_id = va_arg (args, int);
- }
-
- va_end (args);
-
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), default_response);
-
- vbox = gtk_vbox_new (FALSE, 12);
- gtk_widget_show (vbox);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), vbox, TRUE, TRUE, 0);
-
- table = gtk_table_new (1, 2, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (table), 12);
- gtk_table_set_col_spacings (GTK_TABLE (table), 12);
- gtk_container_set_border_width (GTK_CONTAINER (table), 5);
- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, TRUE, 0);
-
- image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG);
- gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
-
- gtk_table_attach (GTK_TABLE (table), image,
- 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-
- value = g_key_file_get_value (input_data, "general", "primary", NULL);
- if (!value)
- fatal ("no 'primary' field in input data", NULL);
- value2 = g_key_file_get_value (input_data, "general", "secondary", NULL);
-
- message = create_markup (value, value2);
- g_free (value);
- g_free (value2);
-
- message_widget = GTK_LABEL (gtk_label_new (message));
- g_free (message);
- gtk_label_set_use_markup (message_widget, TRUE);
- gtk_misc_set_alignment (GTK_MISC (message_widget), 0.0, 0.5);
- gtk_label_set_line_wrap (message_widget, TRUE);
- gtk_label_set_justify (message_widget,
- GTK_JUSTIFY_LEFT);
- gtk_table_attach_defaults (GTK_TABLE (table),
- GTK_WIDGET (message_widget),
- 1, 2, 0, 1);
-
- gtk_widget_show_all (table);
-
- /* The notice line, goes between the two tables */
- notice = GTK_LABEL (gtk_label_new (NULL));
- gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (notice), FALSE, TRUE, 0);
-
- row = 0;
-
- /* A new table for the passwords so they don't make top look strange */
- ptable = gtk_table_new (0, 2, FALSE);
- gtk_table_set_row_spacings (GTK_TABLE (ptable), 6);
- gtk_table_set_col_spacings (GTK_TABLE (ptable), 12);
- gtk_container_set_border_width (GTK_CONTAINER (ptable), 5);
- gtk_box_pack_start (GTK_BOX (vbox), ptable, FALSE, TRUE, 0);
-
- location = gkr_ask_tool_create_location (input_data);
- if (location) {
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- label = gtk_label_new_with_mnemonic (_("_Location:"));
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), location);
- gtk_table_attach (GTK_TABLE (ptable), label,
- 0, 1, row - 1, row,
- GTK_FILL, GTK_SHRINK, 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (ptable), location,
- 1, 2, row - 1, row);
- }
-
- old = NULL;
- if (include_original) {
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- label = gtk_label_new_with_mnemonic (_("_Old password:"));
- old = gkr_ask_entry_new ();
- gkr_ask_entry_set_visibility (GKR_ASK_ENTRY (old), FALSE);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), old);
- g_signal_connect_swapped (old,
- "activate",
- G_CALLBACK (gtk_window_activate_default),
- dialog);
- gtk_table_attach (GTK_TABLE (ptable), label,
- 0, 1, row - 1, row,
- GTK_FILL, GTK_SHRINK, 0, 6);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach (GTK_TABLE (ptable), old,
- 1, 2, row - 1, row,
- GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 6);
- }
-
- entry = NULL;
- if (include_password) {
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- label = gtk_label_new_with_mnemonic (_("_Password:"));
- entry = gkr_ask_entry_new ();
- gkr_ask_entry_set_visibility (GKR_ASK_ENTRY (entry), FALSE);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
- g_signal_connect_swapped (entry,
- "activate",
- G_CALLBACK (gtk_window_activate_default),
- dialog);
- gtk_table_attach (GTK_TABLE (ptable), label,
- 0, 1, row - 1, row,
- GTK_FILL, GTK_SHRINK, 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (ptable),
- entry,
- 1, 2, row - 1, row);
- }
-
- confirm = NULL;
- if (include_confirm) {
- GtkWidget *strength_bar;
-
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- label = gtk_label_new_with_mnemonic (_("_Confirm password:"));
- confirm = gkr_ask_entry_new ();
- gkr_ask_entry_set_visibility (GKR_ASK_ENTRY (confirm), FALSE);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), confirm);
- g_signal_connect_swapped (confirm,
- "activate",
- G_CALLBACK (gtk_window_activate_default),
- dialog);
- gtk_table_attach (GTK_TABLE (ptable), label,
- 0, 1, row - 1, row,
- GTK_FILL, GTK_SHRINK, 0, 0);
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_table_attach_defaults (GTK_TABLE (ptable),
- confirm,
- 1, 2, row - 1, row);
-
- /* Strength bar: */
- if (entry) {
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- strength_bar = gtk_progress_bar_new ();
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR (strength_bar), _("New password strength"));
- g_signal_connect ((gpointer) entry, "changed", G_CALLBACK (on_password_changed), strength_bar);
- gtk_table_attach_defaults (GTK_TABLE (ptable), strength_bar, 1, 2, row - 1, row);
- }
- }
-
- check = NULL;
- if (g_key_file_get_boolean (input_data, "check", "check-enable", NULL)) {
- value = g_key_file_get_value (input_data, "check", "check-text", NULL);
- if (!value)
- fatal ("'check-enable' set, but no 'check-text'", NULL);
- gtk_table_resize (GTK_TABLE (ptable), ++row, 2);
- check = gtk_check_button_new_with_mnemonic (value);
- gtk_table_attach_defaults (GTK_TABLE (ptable), check,
- 1, 2, row - 1, row);
- g_free (value);
- }
-
- if (row > 0)
- gtk_widget_show_all (ptable);
-
- /*
- * When passwords are involved we grab the keyboard so that people
- * don't accidentally type their passwords in other windows.
- */
- if (include_password || include_confirm || include_original) {
- g_signal_connect (dialog, "map-event", G_CALLBACK (grab_keyboard), NULL);
- g_signal_connect (dialog, "unmap-event", G_CALLBACK (ungrab_keyboard), NULL);
- g_signal_connect (dialog, "window-state-event", G_CALLBACK (window_state_changed), NULL);
- }
-
- /*
- * We do this to guarantee the dialog comes up on top. Since the code that
- * that prompted this dialog is many processes away, we can't figure out
- * a window to be transient for.
- */
- gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
- gtk_window_set_type_hint (GTK_WINDOW (dialog), GDK_WINDOW_TYPE_HINT_NORMAL);
-
- retry:
- gtk_widget_show (dialog);
- response = gtk_dialog_run (GTK_DIALOG (dialog));
-
- password = original = NULL;
-
- /* Get the original password */
- if (include_original && old != NULL && response >= GKR_ASK_RESPONSE_ALLOW) {
- original = gkr_ask_entry_get_text (GKR_ASK_ENTRY (old));
- *original_out = gkr_secure_strdup (original);
- }
-
- /* Get the main password entry, and confirmation */
- if (include_password && entry != NULL && response >= GKR_ASK_RESPONSE_ALLOW) {
- password = gkr_ask_entry_get_text (GKR_ASK_ENTRY (entry));
- if (include_confirm && confirm != NULL) {
- confirmation = gkr_ask_entry_get_text (GKR_ASK_ENTRY (confirm));
- if (strcmp (password, confirmation) != 0) {
- notice_text = create_notice (_("Passwords do not match."));
- gtk_label_set_markup (notice, notice_text);
- gtk_widget_show (GTK_WIDGET (notice));
- g_free (notice_text);
- goto retry;
- }
- }
- *password_out = gkr_secure_strdup (password);
- }
-
- /* When it's a new password and blank, double check */
- if (include_confirm && password && !password[0]) {
-
- /* Don't allow blank passwords if in paranoid mode */
- env = g_getenv ("GNOME_KEYRING_PARANOID");
- if (env && *env) {
- notice_text = create_notice (_("Password cannot be blank"));
- gtk_label_set_markup (notice, notice_text);
- gtk_widget_show (GTK_WIDGET (notice));
- g_free (notice_text);
- goto retry;
-
- /* Double check with the user */
- } else if (!confirm_blank_password (GTK_WINDOW (dialog))) {
- goto retry;
- }
- }
-
- if (check != NULL && response >= GKR_ASK_RESPONSE_ALLOW) {
- g_key_file_set_boolean (output_data, "check", "check-active",
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
- }
-
- if (location != NULL) {
- text = gkr_ask_tool_get_location (location);
- if (text != NULL)
- g_key_file_set_value (output_data, "location", "location-selected", text);
- }
-
- gtk_widget_destroy (dialog);
-
- return response;
-}
-
-static void
-prepare_dialog (void)
-{
- gchar *password = NULL;
- gchar *original = NULL;
- const gchar* buttons[6];
- guint resps[6];
- int i = 0;
- guint response;
- guint flags;
-
- memset (buttons, 0, sizeof (buttons));
- memset (resps, 0, sizeof (resps));
-
- password = original = NULL;
-
- flags = g_key_file_get_integer (input_data, "general", "flags", NULL);
-
- if (!(flags & GKR_ASK_REQUEST_BUTTONS_MASK))
- flags |= GKR_ASK_REQUEST_OK_DENY_BUTTONS;
-
- /* In order of preference for default response */
- if (flags & GKR_ASK_REQUEST_DENY_BUTTON) {
- buttons[i] = _("Deny");
- resps[i++] = GKR_ASK_RESPONSE_DENY;
- }
- if (flags & GKR_ASK_REQUEST_CANCEL_BUTTON) {
- buttons[i] = GTK_STOCK_CANCEL;
- resps[i++] = GKR_ASK_RESPONSE_DENY;
- }
- if (flags & GKR_ASK_REQUEST_OK_BUTTON) {
- buttons[i] = GTK_STOCK_OK;
- resps[i++] = GKR_ASK_RESPONSE_ALLOW;
- }
- if (flags & GKR_ASK_REQUEST_ALLOW_BUTTON) {
- buttons[i] = _("Allow _Once");
- resps[i++] = GKR_ASK_RESPONSE_ALLOW;
- }
- if (flags & GKR_ASK_REQUEST_ALLOW_FOREVER_BUTTON) {
- buttons[i] = _("_Always Allow");
- resps[i++] = GKR_ASK_RESPONSE_ALLOW_FOREVER;
- }
-
- g_assert (i > 0);
-
- password = NULL;
- response = run_dialog (flags & GKR_ASK_REQUEST_PASSWORD,
- flags & GKR_ASK_REQUEST_CONFIRM_PASSWORD,
- flags & GKR_ASK_REQUEST_ORIGINAL_PASSWORD,
- &password, &original,
- resps[i - 1], /* default response, last one added */
- buttons[0], resps[0],
- buttons[1], resps[1],
- buttons[2], resps[2],
- buttons[3], resps[3],
- buttons[4], resps[4],
- buttons[5], resps[5],
- NULL);
-
- if (response == GTK_RESPONSE_DELETE_EVENT) {
- response = GKR_ASK_RESPONSE_DENY;
- } else if (response <= 0) {
- g_warning ("invalid respnose returned from dialog: %d", response);
- response = GKR_ASK_RESPONSE_FAILURE;
- }
-
- if (!password)
- password = gkr_secure_strdup ("");
- if (!original)
- original = gkr_secure_strdup ("");
-
- /* First two lines of the response are always the passwords */
- if (response < GKR_ASK_RESPONSE_ALLOW || !(flags & GKR_ASK_REQUEST_PASSWORD))
- password[0] = 0;
- write_output (password, strlen (password));
- write_output ("\n", 1);
-
- if (response < GKR_ASK_RESPONSE_ALLOW || !(flags & GKR_ASK_REQUEST_ORIGINAL_PASSWORD))
- original[0] = 0;
- write_output (original, strlen (original));
- write_output ("\n", 1);
-
- /* Send back the response */
- g_key_file_set_integer (output_data, "general", "response", response);
-
- gkr_secure_free (password);
- gkr_secure_free (original);
-}
-
-static gchar*
-read_all_input (void)
-{
- GString *data = g_string_new ("");
- gchar buf[256];
- int r;
-
- for (;;) {
- r = read (0, buf, sizeof (buf));
- if (r < 0) {
- if (errno == EAGAIN || errno == EINTR)
- continue;
- g_warning ("couldn't read dialog instructions from input: %s",
- g_strerror (errno));
- exit (1);
- }
- if (r == 0)
- break;
- g_string_append_len (data, buf, r);
- }
-
- return g_string_free (data, FALSE);
-}
-
-int
-main (int argc, char *argv[])
-{
- GError *err = NULL;
- gchar *data;
- gboolean ret;
- gsize length;
-
- input_data = g_key_file_new ();
- output_data = g_key_file_new ();
-
- gtk_init (&argc, &argv);
-
-#ifdef HAVE_LOCALE_H
- /* internationalisation */
- setlocale (LC_ALL, "");
-#endif
-
-#ifdef HAVE_GETTEXT
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
- textdomain (GETTEXT_PACKAGE);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-#endif
-
- data = read_all_input ();
- g_assert (data);
-
- if (!data[0])
- fatal ("no dialog instructions", NULL);
-
- ret = g_key_file_load_from_data (input_data, data, strlen (data), G_KEY_FILE_NONE, &err);
- g_free (data);
-
- if (!ret)
- fatal ("couldn't parse dialog instructions", err ? err->message : "");
-
- prepare_dialog ();
-
- g_key_file_free (input_data);
- data = g_key_file_to_data (output_data, &length, &err);
- g_key_file_free (output_data);
-
- if (!data)
- fatal ("couldn't format dialog response: %s", err ? err->message : "");
-
- write_output (data, length);
- g_free (data);
-
- return 0;
-}
-
diff --git a/ui/gkr-ask-tool.h b/ui/gkr-ask-tool.h
deleted file mode 100644
index 1b53ff98..00000000
--- a/ui/gkr-ask-tool.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* gkr-ask-tool.h - common routines for gnome-keyring-ask
-
- Copyright (C) 2007 Stefan Walter
-
- The Gnome Keyring 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.
-
- The Gnome Keyring 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 the Gnome Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
-
- Author: Stef Walter <stef@memberwebs.com>
-*/
-
-#ifndef GKRASKTOOL_H_
-#define GKRASKTOOL_H_
-
-#include <gtk/gtk.h>
-
-GtkWidget* gkr_ask_tool_create_location (GKeyFile *input_data);
-
-const gchar* gkr_ask_tool_get_location (GtkWidget *widget);
-
-#endif /*GKRASKTOOL_H_*/
diff --git a/ui/test-input.txt b/ui/test-input.txt
deleted file mode 100644
index f8cfa7dd..00000000
--- a/ui/test-input.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-[general]
-flags=16641
-title=Test Ask Dialog
-primary=Primary prompt text.
-secondary=Some secondary prompt text is here.
-check-enable=true
-check-text=The check text
-