├── .gitlab-ci.yml ├── .gitlab ├── ci │ ├── check-potfiles.sh │ ├── junit-report.sh │ ├── meson-junit-report.py │ ├── run-tests.sh │ └── style-check.sh └── issue_templates │ ├── Bug.md │ └── Feature.md ├── COPYING ├── COPYING-DOCS ├── COPYING.LIB ├── NEWS ├── README.md ├── THANKS ├── build-aux ├── gpg_check.py └── org.gnome.Seahorse.Devel.json ├── common ├── actions.vala ├── add-keyserver-dialog.vala ├── app-settings.vala ├── backend.vala ├── catalog.vala ├── config.vapi ├── datepicker.vala ├── deletable.vala ├── delete-operation.vala ├── export-operation.vala ├── exportable.vala ├── interaction.vala ├── item.vala ├── keyserver-dropdown.vala ├── lockable.vala ├── meson.build ├── panel-window.ui ├── panel-window.vala ├── panel.vala ├── passphrase-prompt.ui ├── passphrase-prompt.vala ├── pgp-settings.vala ├── place-sorter.vala ├── place.vala ├── prefs-keyservers.vala ├── qr-code-dialog.ui ├── qr-code-dialog.vala ├── seahorse-add-keyserver.ui ├── seahorse-prefs-keyservers.ui ├── server-category.vala ├── types.vala ├── util.vala ├── validity.vala └── viewable.vala ├── data ├── gtk │ └── help-overlay.ui ├── icons │ ├── hicolor │ │ ├── 22x22 │ │ │ ├── apps │ │ │ │ ├── seahorse-key-personal.png │ │ │ │ ├── seahorse-key-ssh.png │ │ │ │ └── seahorse-key.png │ │ │ └── status │ │ │ │ ├── seahorse-sign-bad.png │ │ │ │ ├── seahorse-sign-ok.png │ │ │ │ └── seahorse-sign.png │ │ ├── 48x48 │ │ │ ├── apps │ │ │ │ ├── seahorse-key-personal.png │ │ │ │ ├── seahorse-key-ssh.png │ │ │ │ └── seahorse-key.png │ │ │ └── status │ │ │ │ ├── seahorse-sign-bad.png │ │ │ │ ├── seahorse-sign-ok.png │ │ │ │ ├── seahorse-sign-unknown.png │ │ │ │ └── seahorse-sign.png │ │ ├── scalable │ │ │ └── apps │ │ │ │ ├── org.gnome.Seahorse.Devel.svg │ │ │ │ └── org.gnome.Seahorse.svg │ │ └── symbolic │ │ │ └── apps │ │ │ └── org.gnome.Seahorse-symbolic.svg │ ├── meson.build │ ├── scalable │ │ └── actions │ │ │ ├── key-item-symbolic.svg │ │ │ ├── qr-code-symbolic.svg │ │ │ └── secret-item-symbolic.svg │ └── svg │ │ ├── seahorse-key-22.svg │ │ ├── seahorse-key-48.svg │ │ ├── seahorse-key-personal-22.svg │ │ ├── seahorse-key-personal-48.svg │ │ ├── seahorse-key-ssh-22.svg │ │ ├── seahorse-key-ssh-48.svg │ │ ├── seahorse-sign-22.svg │ │ ├── seahorse-sign-48.svg │ │ ├── seahorse-sign-bad-22.svg │ │ ├── seahorse-sign-bad-48.svg │ │ ├── seahorse-sign-ok-22.svg │ │ ├── seahorse-sign-ok-48.svg │ │ └── seahorse-sign-unknown-48.svg ├── meson.build ├── org.gnome.Seahorse.desktop.in.in ├── org.gnome.Seahorse.metainfo.xml.in.in ├── org.gnome.Seahorse.service.in ├── org.gnome.seahorse.gschema.xml ├── org.gnome.seahorse.manager.gschema.xml ├── org.gnome.seahorse.window.gschema.xml ├── screenshot-default.png ├── seahorse-search-provider.ini ├── seahorse.gresource.xml ├── seahorse.xml └── style.css ├── gkr ├── add-item-dialog.ui ├── add-item-dialog.vala ├── add-keyring-dialog.ui ├── add-keyring-dialog.vala ├── gkr-backend.vala ├── gkr-dialogs.vala ├── gkr-item-delete-operation.vala ├── gkr-item-info.vala ├── gkr-item-panel.ui ├── gkr-item-panel.vala ├── gkr-item.vala ├── gkr-keyring-delete-operation.vala ├── gkr-keyring-panel.ui ├── gkr-keyring-panel.vala ├── gkr-keyring-permission.vala ├── gkr-keyring.vala ├── gkr-module.vala └── meson.build ├── help ├── C │ ├── about-certificate-key.page.stub │ ├── about-diff-private-public.page │ ├── about-pgp.page │ ├── about-ssh.page │ ├── concepts.page │ ├── glossary.page │ ├── index.page │ ├── introduction.page │ ├── key-servers-add.page │ ├── keyring-change-default.page │ ├── keyring-create.page │ ├── keyring-lock.page │ ├── keyring-unlock.page │ ├── keyring-update-password.page │ ├── keyring.page │ ├── legal.xml │ ├── media │ │ ├── dialog-password-symbolic.svg │ │ └── org.gnome.Seahorse.svg │ ├── misc-key-backup.page │ ├── misc-key-fingerprint.page │ ├── passwords-stored-create.page │ ├── passwords-view.page │ ├── pgp-create.page │ ├── pgp-delete.page │ ├── pgp-expiration-change.page │ ├── pgp-expired.page │ ├── pgp-export.page │ ├── pgp-import.page │ ├── pgp-photoid.page │ ├── pgp-publish.page │ ├── pgp-retrieve-remote.page │ ├── pgp-sign.page │ ├── pgp-subkeys.page │ ├── pgp-sync.page │ ├── pgp-userid-add.page │ ├── pgp-userid-primary.page │ ├── pgp-userid-remove.page │ ├── pgp-userid.page │ ├── ssh-connect-remote.page │ ├── ssh-create-vs-setup.page │ ├── ssh-create.page │ ├── ssh-export.page │ ├── ssh-import.page │ ├── subkeys-add.page │ ├── subkeys-examine.page │ └── subkeys-revoke.page ├── ChangeLog ├── LINGUAS ├── ca │ └── ca.po ├── cs │ └── cs.po ├── da │ └── da.po ├── de │ └── de.po ├── el │ └── el.po ├── es │ └── es.po ├── eu │ └── eu.po ├── fr │ └── fr.po ├── gl │ └── gl.po ├── hu │ └── hu.po ├── id │ └── id.po ├── meson.build ├── pl │ └── pl.po ├── pt_BR │ └── pt_BR.po ├── ru │ └── ru.po ├── sv │ └── sv.po └── uk │ └── uk.po ├── libseahorse ├── meson.build ├── seahorse-progress.c ├── seahorse-progress.h ├── seahorse-progress.ui ├── seahorse-util.c └── seahorse-util.h ├── meson.build ├── meson.options ├── pgp ├── meson.build ├── seahorse-discovery.c ├── seahorse-discovery.h ├── seahorse-gpg-op.c ├── seahorse-gpg-op.h ├── seahorse-gpgme-add-subkey.c ├── seahorse-gpgme-add-subkey.h ├── seahorse-gpgme-add-subkey.ui ├── seahorse-gpgme-add-uid.c ├── seahorse-gpgme-add-uid.h ├── seahorse-gpgme-add-uid.ui ├── seahorse-gpgme-data.c ├── seahorse-gpgme-data.h ├── seahorse-gpgme-dialogs.h ├── seahorse-gpgme-expires-dialog.c ├── seahorse-gpgme-expires-dialog.h ├── seahorse-gpgme-expires-dialog.ui ├── seahorse-gpgme-generate-dialog.c ├── seahorse-gpgme-generate-dialog.h ├── seahorse-gpgme-generate-dialog.ui ├── seahorse-gpgme-key-delete-operation.c ├── seahorse-gpgme-key-delete-operation.h ├── seahorse-gpgme-key-export-operation.c ├── seahorse-gpgme-key-export-operation.h ├── seahorse-gpgme-key-gen-type.c ├── seahorse-gpgme-key-gen-type.h ├── seahorse-gpgme-key-op.c ├── seahorse-gpgme-key-op.h ├── seahorse-gpgme-key-parms.c ├── seahorse-gpgme-key-parms.h ├── seahorse-gpgme-key.c ├── seahorse-gpgme-key.h ├── seahorse-gpgme-keyring-panel.c ├── seahorse-gpgme-keyring-panel.h ├── seahorse-gpgme-keyring-panel.ui ├── seahorse-gpgme-keyring.c ├── seahorse-gpgme-keyring.h ├── seahorse-gpgme-photo.c ├── seahorse-gpgme-photo.h ├── seahorse-gpgme-photos.c ├── seahorse-gpgme-revoke-dialog.c ├── seahorse-gpgme-revoke-dialog.h ├── seahorse-gpgme-revoke-dialog.ui ├── seahorse-gpgme-sign-dialog.c ├── seahorse-gpgme-sign-dialog.h ├── seahorse-gpgme-sign-dialog.ui ├── seahorse-gpgme-subkey-delete-operation.c ├── seahorse-gpgme-subkey-delete-operation.h ├── seahorse-gpgme-subkey.c ├── seahorse-gpgme-subkey.h ├── seahorse-gpgme-uid-delete-operation.c ├── seahorse-gpgme-uid-delete-operation.h ├── seahorse-gpgme-uid.c ├── seahorse-gpgme-uid.h ├── seahorse-gpgme.c ├── seahorse-gpgme.h ├── seahorse-hkp-source.c ├── seahorse-hkp-source.h ├── seahorse-keyserver-search.c ├── seahorse-keyserver-search.h ├── seahorse-keyserver-search.ui ├── seahorse-keyserver-sync.c ├── seahorse-keyserver-sync.h ├── seahorse-keyserver-sync.ui ├── seahorse-ldap-source.c ├── seahorse-ldap-source.h ├── seahorse-pgp-actions.c ├── seahorse-pgp-actions.h ├── seahorse-pgp-backend.c ├── seahorse-pgp-backend.h ├── seahorse-pgp-dialogs.h ├── seahorse-pgp-key-algorithm.c ├── seahorse-pgp-key-algorithm.h ├── seahorse-pgp-key-panel.c ├── seahorse-pgp-key-panel.h ├── seahorse-pgp-key-panel.ui ├── seahorse-pgp-key.c ├── seahorse-pgp-key.h ├── seahorse-pgp-keysets.c ├── seahorse-pgp-keysets.h ├── seahorse-pgp-photo.c ├── seahorse-pgp-photo.h ├── seahorse-pgp-photos-widget.c ├── seahorse-pgp-photos-widget.h ├── seahorse-pgp-photos-widget.ui ├── seahorse-pgp-signature.c ├── seahorse-pgp-signature.h ├── seahorse-pgp-subkey-list-box-row.ui ├── seahorse-pgp-subkey-list-box.c ├── seahorse-pgp-subkey-list-box.h ├── seahorse-pgp-subkey-usage.c ├── seahorse-pgp-subkey-usage.h ├── seahorse-pgp-subkey.c ├── seahorse-pgp-subkey.h ├── seahorse-pgp-types.h ├── seahorse-pgp-uid-list-box-row.ui ├── seahorse-pgp-uid-list-box.c ├── seahorse-pgp-uid-list-box.h ├── seahorse-pgp-uid.c ├── seahorse-pgp-uid.h ├── seahorse-server-source.c ├── seahorse-server-source.h ├── seahorse-transfer.c ├── seahorse-transfer.h ├── seahorse-unknown-source.c ├── seahorse-unknown-source.h ├── seahorse-unknown.c ├── seahorse-unknown.h ├── seahorse-xloadimage.c ├── test-gpgme-backend.c ├── test-hkp-source.c └── test-ldap-source.c ├── pkcs11 ├── certificate-der-export-operation.vala ├── meson.build ├── pkcs11-cert-key-pair-panel.ui ├── pkcs11-cert-key-pair-panel.vala ├── pkcs11-cert-key-pair.vala ├── pkcs11-certificate-widget.ui ├── pkcs11-certificate-widget.vala ├── pkcs11-certificate.vala ├── pkcs11-delete-operation.vala ├── pkcs11-generate.ui ├── pkcs11-generate.vala ├── pkcs11-module.vala ├── pkcs11-private-key-widget.ui ├── pkcs11-private-key-widget.vala ├── pkcs11-private-key.vala ├── pkcs11-request-certificate-dialog.ui ├── pkcs11-request-certificate-dialog.vala ├── pkcs11-token-filter.vala ├── pkcs11-token-panel.ui ├── pkcs11-token-panel.vala ├── pkcs11-token.vala ├── seahorse-pkcs11-backend.c └── seahorse-pkcs11-backend.h ├── po ├── ChangeLog ├── LINGUAS ├── POTFILES.in ├── POTFILES.skip ├── ab.po ├── ar.po ├── as.po ├── ast.po ├── az.po ├── be.po ├── be@latin.po ├── bg.po ├── bn.po ├── bn_IN.po ├── br.po ├── bs.po ├── ca.po ├── ca@valencia.po ├── cs.po ├── cy.po ├── da.po ├── de.po ├── dz.po ├── el.po ├── en@shaw.po ├── en_CA.po ├── en_GB.po ├── eo.po ├── es.po ├── et.po ├── eu.po ├── fa.po ├── fi.po ├── fr.po ├── fur.po ├── ga.po ├── gd.po ├── gl.po ├── gu.po ├── he.po ├── hi.po ├── hr.po ├── hu.po ├── id.po ├── ie.po ├── is.po ├── it.po ├── ja.po ├── ka.po ├── kk.po ├── kn.po ├── ko.po ├── ku.po ├── lt.po ├── lv.po ├── mai.po ├── meson.build ├── mk.po ├── ml.po ├── mr.po ├── ms.po ├── nb.po ├── ne.po ├── nl.po ├── nn.po ├── oc.po ├── or.po ├── pa.po ├── pl.po ├── pt.po ├── pt_BR.po ├── ro.po ├── ru.po ├── rw.po ├── si.po ├── sk.po ├── sl.po ├── sq.po ├── sr.po ├── sr@latin.po ├── sv.po ├── ta.po ├── te.po ├── tg.po ├── th.po ├── tr.po ├── ug.po ├── uk.po ├── uz.po ├── vi.po ├── zh_CN.po ├── zh_HK.po └── zh_TW.po ├── seahorse.doap ├── src ├── application.vala ├── import-dialog.ui ├── import-dialog.vala ├── key-manager-filter.vala ├── key-manager-item-row.ui ├── key-manager-item-row.vala ├── key-manager.vala ├── main.vala ├── meson.build ├── org.gnome.ShellSearchProvider2.xml ├── prefs-dialog.vala ├── seahorse-change-passphrase.ui ├── seahorse-key-manager-widgets.ui ├── seahorse-key-manager.ui ├── search-provider.vala └── sidebar.vala ├── ssh ├── actions.vala ├── algorithm.vala ├── backend.vala ├── errors.vala ├── generate-key-dialog.ui ├── generate-key-dialog.vala ├── key-data.vala ├── key-delete-operation.vala ├── key-export-operation.vala ├── key-length-chooser.vala ├── key-panel.ui ├── key-panel.vala ├── key.vala ├── meson.build ├── operation.vala ├── seahorse-ssh-askpass.vala ├── source.vala ├── ssh.vala ├── test-key-parse.vala ├── upload-remote-dialog.ui └── upload-remote-dialog.vala └── vapi ├── libqrencode.vapi ├── pkcs11.vapi └── pwquality.vapi /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' 2 | 3 | variables: 4 | BUNDLE: 'seahorse.flatpak' 5 | GIT_SUBMODULE_STRATEGY: recursive 6 | 7 | stages: 8 | - review 9 | - test 10 | - deploy 11 | 12 | style-check: 13 | stage: review 14 | script: 15 | - ./.gitlab/ci/style-check.sh 16 | artifacts: 17 | expire_in: 1 week 18 | name: "style-check-junit-report" 19 | when: always 20 | reports: 21 | junit: style-check-junit-report.xml 22 | paths: 23 | - "style-check-junit-report.xml" 24 | 25 | check-potfiles: 26 | stage: review 27 | script: 28 | - ./.gitlab/ci/check-potfiles.sh 29 | 30 | flatpak: 31 | variables: 32 | MANIFEST_PATH: 'build-aux/org.gnome.Seahorse.Devel.json' 33 | FLATPAK_MODULE: "seahorse" 34 | RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" 35 | APP_ID: "org.gnome.Seahorse.Devel" 36 | extends: .flatpak 37 | 38 | nightly: 39 | extends: '.publish_nightly' 40 | dependencies: ['flatpak'] 41 | needs: ['flatpak'] 42 | -------------------------------------------------------------------------------- /.gitlab/ci/check-potfiles.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # find source files that contain gettext keywords 4 | vala_files="$(grep -lR '\(gettext\|[^I_)]_\)(' ./**/*.vala | sed 's/^.\///')" 5 | # Be careful with C files, sice we don't want to include the Vala-generated ones 6 | c_srcdirs="libseahorse pgp pkcs11" 7 | c_files="$(grep -lR --include='*.c' '\(gettext\|[^I_)]_\)(' $c_srcdirs)" 8 | 9 | # find ui files that contain translatable string 10 | ui_files="$(grep -lRi --include='*.ui' 'translatable="[ty1]' ./**/*.ui | sed 's/^.\///')" 11 | 12 | files="$vala_files $c_files $ui_files" 13 | 14 | # filter out excluded files 15 | if [ -f po/POTFILES.skip ]; then 16 | files="$(for f in $files; do ! grep -q "^$f$" po/POTFILES.skip && echo "$f"; done)" 17 | fi 18 | 19 | # Test 1: find all files that are missing from POTFILES.in 20 | missing="$(for f in $files; do ! grep -q "^$f$" po/POTFILES.in && echo "$f"; done)" 21 | if [ ${#missing} -ne 0 ]; then 22 | echo >&2 "The following files are missing from po/POTFILES.in:" 23 | for f in "${missing[@]}"; do 24 | echo " $f" >&2 25 | done 26 | echo >&2 27 | exit 1 28 | fi 29 | 30 | # Test 2: find all Vala files that miss a corresponding .c file in POTFILES.skip 31 | vala_c_files="$(for f in $vala_files; do echo "${f%.vala}.c"; done)" 32 | vala_c_files_missing="$(for f in "${vala_c_files[@]}"; do ! grep -q "^$f$" po/POTFILES.skip && echo "$f"; done)" 33 | if [ ${#vala_c_files_missing} -ne 0 ]; then 34 | echo >&2 "The following files are missing from po/POTFILES.skip:" 35 | for f in "${vala_c_files_missing[@]}"; do 36 | echo " $f" >&2 37 | done 38 | echo >&2 39 | exit 1 40 | fi 41 | 42 | # Test 3: find all files that are mentioned in POTFILES.in that don't exist 43 | readarray -t potfiles_in_items < <(grep -v "^#" po/POTFILES.in) 44 | potfiles_in_nonexistent="$(for f in "${potfiles_in_items[@]}"; do [[ -f "$f" ]] || echo "$f"; done)" 45 | if [ ${#potfiles_in_nonexistent} -ne 0 ]; then 46 | echo >&2 "The following files are referenced in po/POTFILES.in, but don't exist:" 47 | echo >&2 "" 48 | for f in "${potfiles_in_nonexistent[@]}"; do 49 | echo "$f" >&2 50 | done 51 | echo >&2 52 | exit 1 53 | fi 54 | -------------------------------------------------------------------------------- /.gitlab/ci/run-tests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set +e 4 | 5 | xvfb-run -a -s "-screen 0 1024x768x24" \ 6 | flatpak build app \ 7 | meson test -C _build 8 | 9 | exit_code=$? 10 | 11 | python3 .gitlab-ci/meson-junit-report.py \ 12 | --project-name=seahorse \ 13 | --job-id "${CI_JOB_NAME}" \ 14 | --output "_build/${CI_JOB_NAME}-report.xml" \ 15 | _build/meson-logs/testlog.json 16 | 17 | exit $exit_code 18 | -------------------------------------------------------------------------------- /.gitlab/ci/style-check.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # 3 | # style-check.sh: Performs some basic style checks 4 | 5 | # Source the JUnit helpers 6 | scriptdir="$(dirname "$BASH_SOURCE")" 7 | source "$scriptdir/junit-report.sh" 8 | 9 | TESTNAME="No trailing whitespace" 10 | source_dirs="common data gkr libseahorse pgp pkcs11 src ssh" 11 | trailing_ws_occurrences="$(grep -nRI '[[:blank:]]$' $source_dirs)" 12 | if [[ -z "$trailing_ws_occurrences" ]]; then 13 | append_passed_test_case "$TESTNAME" 14 | else 15 | append_failed_test_case "$TESTNAME" \ 16 | $'Please remove the trailing whitespace at the following places:\n\n'"$trailing_ws_occurrences" 17 | fi 18 | 19 | 20 | generate_junit_report "$CI_JOB_NAME-junit-report.xml" "$CI_JOB_NAME" 21 | check_junit_report "$CI_JOB_NAME-junit-report.xml" 22 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/Bug.md: -------------------------------------------------------------------------------- 1 | 5 | 6 | # Affected version 7 | - Passwords and Keys (Seahorse) version: 8 | - Application provider: distribution / built from git / flatpak 9 | - Related info: 10 | 11 | 12 | # Steps to reproduce 13 | 16 | 1. 17 | 2. 18 | 3. 19 | 20 | # Current behavior 21 | 22 | 23 | 24 | # Expected behavior 25 | 26 | 27 | 28 | # Additional information 29 | 35 | 36 | 37 | 38 | /label ~"1. Bug" 39 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/Feature.md: -------------------------------------------------------------------------------- 1 | ### Use cases 2 | 4 | 5 | 6 | ### Desired behavior 7 | 8 | 9 | 10 | ### Benefits of the solution 11 | 12 | 13 | 14 | ### Possible drawbacks 15 | 20 | 21 | 22 | /label ~"1. Feature" 23 | -------------------------------------------------------------------------------- /COPYING-DOCS: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Seahorse 2 | ======== 3 | Seahorse is a graphical interface for managing and using encryption keys. 4 | Currently it supports PGP keys (using GPG/GPGME) and SSH keys. Its goal is to 5 | provide an easy to use key management tool, along with an easy to use interface 6 | for encryption operations. 7 | 8 | Building 9 | -------- 10 | You can build and install Seahorse using [Meson]: 11 | 12 | ```sh 13 | meson setup _build 14 | meson compile -C _build 15 | meson install -C _build 16 | ``` 17 | 18 | Contributing 19 | ------------ 20 | You can browse the code, issues and more at Seahorse's [GitLab repository]. 21 | 22 | If you find a bug in Seahorse, please file an issue on the [issue tracker]. 23 | Please try to add reproducible steps and the relevant version of Seahorse. 24 | 25 | If you want to contribute functionality or bug fixes, please open a Merge 26 | Request (MR). For more info on how to do this, see GitLab's [help pages on 27 | MR's]. 28 | 29 | If Seahorse is not translated in your language or you believe that the 30 | current translation has errors, you can join one of the various translation 31 | teams in GNOME. Translators do not commit directly to Git, but are advised to 32 | use our separate translation infrastructure instead. More info can be found at 33 | the [translation project wiki page]. 34 | 35 | More information 36 | ---------------- 37 | Seahorse has its own web page on https://wiki.gnome.org/Apps/Seahorse. 38 | 39 | To discuss issues with developers and other users, you can go to [GNOME's 40 | Discourse instance] and use the "seahorse" tag, or join [#gnome-seahorse] on 41 | irc.libera.chat. 42 | 43 | License 44 | ------- 45 | Seahorse is released under the GPL. See [COPYING] for more info. 46 | 47 | 48 | [GNOME]: https://www.gnome.org 49 | [Meson]: http://mesonbuild.com 50 | [GitLab repository]: https://gitlab.gnome.org/GNOME/seahorse 51 | [help pages on MR's]: https://docs.gitlab.com/ee/gitlab-basics/add-merge-request.html 52 | [issue tracker]: https://gitlab.gnome.org/GNOME/seahorse/issues 53 | [translation project wiki page]: https://wiki.gnome.org/TranslationProject/ 54 | [GNOME's Discourse instance]: https://discourse.gnome.org 55 | [#seahorse]: irc://irc.libera.chat/gnome-seahorse 56 | [COPYING]: https://gitlab.gnome.org/GNOME/seahorse/COPYING 57 | -------------------------------------------------------------------------------- /THANKS: -------------------------------------------------------------------------------- 1 | Contributors: 2 | 3 | Jose Carlos Garcia Sogo for bug fixes, spanish, translation, 4 | overall assistance, and letting me manage seahorse(2) 5 | 6 | Jean Schurger for rpms and the new icon 7 | 8 | Erich Schubert for testing, bug fixes, 9 | and initial german translation 10 | 11 | Yanko Kaneti for bug fixes and a spec file 12 | 13 | Adam Schreiber for contributions and patches 14 | 15 | Albrecht Dreß the initial GPGME upgrade patch 16 | 17 | Fernando Herrera for the Nautilus 2.10 support 18 | 19 | Gnome translation & doc teams, especially Jordi Mallach 20 | for package help 21 | 22 | seahorse(1) authors: 23 | 24 | Jose Carlos Garcia Sogo, Anthony Mulcahy, Steffen Zahn, Stef Walter 25 | 26 | GnuPG, GPGME, and GPA teams, specifically Miguel Coca, Marcus Brinkmann, 27 | and Werner Koch, for their assistance and hard work. 28 | -------------------------------------------------------------------------------- /common/actions.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see . 19 | */ 20 | 21 | public class Seahorse.ActionGroup : SimpleActionGroup { 22 | 23 | public string prefix { get; construct set; } 24 | 25 | public Catalog catalog { owned get; set; } 26 | 27 | public virtual void set_actions_for_selected_objects(List objects) { 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /common/app-settings.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2018 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see . 18 | */ 19 | 20 | public class Seahorse.AppSettings : GLib.Settings { 21 | 22 | [CCode (array_null_terminated = true, array_length = false)] 23 | public string[] last_search_servers { 24 | owned get { return get_strv("last-search-servers"); } 25 | set { set_strv("last-search-servers", value); } 26 | } 27 | 28 | public string last_search_text { 29 | owned get { return get_string("last-search-text"); } 30 | set { set_string("last-search-text", value); } 31 | } 32 | 33 | public bool server_auto_publish { 34 | get { return get_boolean("server-auto-publish"); } 35 | set { set_boolean("server-auto-publish", value); } 36 | } 37 | 38 | public bool server_auto_retrieve { 39 | get { return get_boolean("server-auto-retrieve"); } 40 | set { set_boolean("server-auto-retrieve", value); } 41 | } 42 | 43 | public string server_publish_to { 44 | owned get { return get_string("server-publish-to"); } 45 | set { 46 | if (this.server_publish_to == value) 47 | return; 48 | set_string("server-publish-to", value); 49 | } 50 | } 51 | 52 | public AppSettings() { 53 | GLib.Object(schema_id: "org.gnome.seahorse"); 54 | } 55 | 56 | private static AppSettings? _instance = null; 57 | public static AppSettings instance() { 58 | if (_instance == null) 59 | _instance = new AppSettings(); 60 | return _instance; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /common/backend.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see . 17 | */ 18 | 19 | public interface Seahorse.Backend : GLib.ListModel { 20 | 21 | public abstract string name { get; } 22 | public abstract string label { get; } 23 | public abstract string description { get; } 24 | public abstract ActionGroup actions { owned get; } 25 | public abstract bool loaded { get; } 26 | 27 | public abstract Place? lookup_place(string uri); 28 | 29 | private static GLib.ListStore backends; 30 | 31 | public void register() { 32 | if (backends == null) 33 | backends = new GLib.ListStore(typeof(Backend)); 34 | backends.append(this); 35 | } 36 | 37 | public static GLib.ListModel get_registered() { 38 | if (backends == null) 39 | backends = new GLib.ListStore(typeof(Backend)); 40 | return backends; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /common/deletable.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004,2005 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * Copyright (C) 2012 Stefan Walter 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 | * See the GNU General Public License for more details. 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, see . 19 | */ 20 | 21 | /** 22 | * An interface for items that can be deleted (note however that specific 23 | * instances might not be, so use the deletable property). 24 | * 25 | * To actually delete the object, you'll have to call create_delete_operation() 26 | * which can then take care of it (possibly with others). 27 | */ 28 | public interface Seahorse.Deletable : GLib.Object { 29 | 30 | /** Returns whether this object is actually deletable */ 31 | public abstract bool deletable { get; } 32 | 33 | public static bool can_delete(GLib.Object object) { 34 | if (object is Deletable) 35 | return ((Deletable) object).deletable; 36 | return false; 37 | } 38 | 39 | /** 40 | * Creates a {@link DeleteOperation} that will perform the actual deletion 41 | * of this object. 42 | */ 43 | public abstract DeleteOperation create_delete_operation(); 44 | } 45 | -------------------------------------------------------------------------------- /common/export-operation.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * Copyright (C) 2012 Stefan Walter 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see . 18 | * 19 | * Author: Stef Walter 20 | */ 21 | 22 | public abstract class Seahorse.ExportOperation : GLib.Object { 23 | 24 | public GLib.OutputStream output { get; set; } 25 | 26 | public abstract async bool execute(Cancellable? cancellable = null) 27 | throws GLib.Error; 28 | 29 | /** 30 | * A helper method to set the output stream to a file picked interactively 31 | * by the user. 32 | * 33 | * Note that this function may return false without throwing an error, in 34 | * case the user didn't pick any file. 35 | */ 36 | public async bool prompt_for_file(Gtk.Window? parent, 37 | Cancellable? cancellable = null) 38 | throws GLib.Error { 39 | // Ask the usr to pick the file 40 | var dialog = create_file_dialog(parent); 41 | var file = yield dialog.save(parent, cancellable); 42 | if (file == null) 43 | return false; 44 | 45 | // Create the output stream for it 46 | this.output = yield file.create_async(FileCreateFlags.NONE, 47 | Priority.DEFAULT, 48 | cancellable); 49 | return true; 50 | } 51 | 52 | /** 53 | * Creates a {@link Gtk.FileDialog} that can be used to select a file to 54 | * export to. 55 | */ 56 | protected abstract Gtk.FileDialog create_file_dialog(Gtk.Window? parent); 57 | } 58 | -------------------------------------------------------------------------------- /common/exportable.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004,2005 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * Copyright (C) 2012 Stefan Walter 7 | * Copyright (C) 2023 Niels De Graef 8 | * 9 | * This program is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 | * See the GNU General Public License for more details. 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; if not, see . 20 | */ 21 | 22 | /** 23 | * An interface for items that can be exported. 24 | * 25 | * To actually export the object, you'll have to call create_export_operation() 26 | * which can then take care of it (possibly exporting it with other items at 27 | * the same time). 28 | */ 29 | public interface Seahorse.Exportable : GLib.Object { 30 | 31 | /** Returns whether this object is actually exportable */ 32 | public abstract bool exportable { get; } 33 | 34 | /** Helper to know if a given object is exportable */ 35 | public static bool can_export(GLib.Object object) { 36 | if (object is Exportable) 37 | return ((Exportable)object).exportable; 38 | return false; 39 | } 40 | 41 | /** 42 | * Creates a {@link ExportOperation} that will do the actual export of this 43 | * file. 44 | */ 45 | public abstract ExportOperation create_export_operation() 46 | requires (this.exportable); 47 | } 48 | -------------------------------------------------------------------------------- /common/item.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * Copyright (C) 2017 Niels De Graef 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU Lesser General Public License as 10 | * published by the Free Software Foundation; either version 2.1 of 11 | * the License, or (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, but 14 | * WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with this program; if not, see 20 | * . 21 | */ 22 | 23 | /** 24 | * The base interface for passwords/keys and others that are handled by Seahorse. 25 | */ 26 | public interface Seahorse.Item : GLib.Object, Seahorse.Viewable { 27 | 28 | /** The place this item originates from, or null if none/unknown */ 29 | public abstract Place? place { owned get; set; } 30 | 31 | /** Icon for this Object */ 32 | public abstract GLib.Icon? icon { get; } 33 | 34 | /** A displayable label */ 35 | public abstract string title { get; } 36 | 37 | /** If available, can be used to display a bit more info with the title */ 38 | public abstract string? subtitle { owned get; } 39 | 40 | /** A generic description of the type of item */ 41 | public abstract string description { get; } 42 | 43 | /** How this item is used */ 44 | public abstract Usage usage { get; } 45 | 46 | /** This item's flags */ 47 | public abstract Flags item_flags { get; } 48 | } 49 | -------------------------------------------------------------------------------- /common/lockable.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004,2005 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see . 18 | */ 19 | 20 | public interface Seahorse.Lockable : GLib.Object { 21 | public abstract bool lockable { get; } 22 | public abstract bool unlockable { get; } 23 | 24 | public abstract async bool lock(GLib.TlsInteraction? interaction, 25 | GLib.Cancellable? cancellable) throws GLib.Error; 26 | 27 | public abstract async bool unlock(GLib.TlsInteraction? interaction, 28 | GLib.Cancellable? cancellable) throws GLib.Error; 29 | 30 | public static bool can_lock(GLib.Object object) { 31 | if (object is Lockable) 32 | return ((Lockable)object).lockable; 33 | return false; 34 | } 35 | 36 | public static bool can_unlock(GLib.Object object) { 37 | if (object is Lockable) 38 | return ((Lockable)object).unlockable; 39 | return false; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /common/meson.build: -------------------------------------------------------------------------------- 1 | common_sources = files( 2 | 'actions.vala', 3 | 'add-keyserver-dialog.vala', 4 | 'app-settings.vala', 5 | 'backend.vala', 6 | 'catalog.vala', 7 | 'datepicker.vala', 8 | 'deletable.vala', 9 | 'delete-operation.vala', 10 | 'exportable.vala', 11 | 'export-operation.vala', 12 | 'interaction.vala', 13 | 'item.vala', 14 | 'lockable.vala', 15 | 'panel.vala', 16 | 'panel-window.vala', 17 | 'passphrase-prompt.vala', 18 | 'pgp-settings.vala', 19 | 'place.vala', 20 | 'place-sorter.vala', 21 | 'server-category.vala', 22 | 'types.vala', 23 | 'util.vala', 24 | 'validity.vala', 25 | 'viewable.vala', 26 | 'qr-code-dialog.vala', 27 | ) 28 | 29 | common_deps = [ 30 | glib_deps, 31 | gtk4_dep, 32 | gcr4_dep, 33 | libadwaita_dep, 34 | libqrencode_dep, 35 | config, 36 | ] 37 | 38 | common_vala_args = [ 39 | '--gresources', resources_xml, 40 | '--use-header', 41 | ] 42 | 43 | common_c_args = [ 44 | vala_workaround_cflags, 45 | ] 46 | 47 | if get_option('keyservers-support') 48 | common_sources += ['keyserver-dropdown.vala', 'prefs-keyservers.vala'] 49 | common_vala_args += [ '-D', 'WITH_KEYSERVER' ] 50 | endif 51 | 52 | common_lib = static_library('common', 53 | common_sources, 54 | dependencies: common_deps, 55 | c_args: common_c_args, 56 | vala_args: common_vala_args, 57 | vala_header: 'seahorse-common.h', 58 | ) 59 | 60 | common_dep = declare_dependency( 61 | link_with: common_lib, 62 | include_directories: include_directories('.'), 63 | dependencies: common_deps, 64 | ) 65 | -------------------------------------------------------------------------------- /common/panel-window.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 59 | 60 | -------------------------------------------------------------------------------- /common/panel-window.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2023 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see . 17 | * 18 | * Author: Niels De Graef 19 | */ 20 | 21 | /** 22 | * Basically a window that wraps a {@link Seahorse.Panel} 23 | */ 24 | [GtkTemplate (ui = "/org/gnome/Seahorse/panel-window.ui")] 25 | public class Seahorse.PanelWindow : Adw.Window { 26 | 27 | [GtkChild] private unowned Adw.HeaderBar header; 28 | [GtkChild] private unowned Adw.WindowTitle window_title; 29 | 30 | [GtkChild] private unowned Adw.ToastOverlay toast_overlay; 31 | [GtkChild] private unowned Adw.Clamp clamp; 32 | 33 | public PanelWindow(Seahorse.Panel panel, 34 | Gtk.Window? parent = null) { 35 | GLib.Object(transient_for: parent); 36 | 37 | this.clamp.child = panel; 38 | 39 | // Create header 40 | panel.bind_property("title", 41 | this.window_title, "title", 42 | BindingFlags.SYNC_CREATE); 43 | panel.bind_property("subtitle", 44 | this.window_title, "subtitle", 45 | BindingFlags.SYNC_CREATE); 46 | 47 | if (panel.menu != null) { 48 | var menu_button = new Gtk.MenuButton(); 49 | menu_button.icon_name = "open-menu-symbolic"; 50 | menu_button.menu_model = panel.menu; 51 | this.header.pack_start(menu_button); 52 | } 53 | 54 | insert_action_group("panel", panel.actions); 55 | 56 | panel.notification.connect(on_panel_notification); 57 | } 58 | 59 | private void on_panel_notification(Seahorse.Panel panel, Adw.Toast toast) { 60 | this.toast_overlay.add_toast(toast); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /common/passphrase-prompt.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 52 | 53 | -------------------------------------------------------------------------------- /common/place-sorter.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2023 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see . 18 | */ 19 | 20 | public class Seahorse.PlaceSorter : Gtk.Sorter { 21 | 22 | public override Gtk.SorterOrder get_order() { 23 | return Gtk.SorterOrder.PARTIAL; 24 | } 25 | 26 | public override Gtk.Ordering compare(GLib.Object? item1, GLib.Object? item2) { 27 | unowned var obj1 = (Seahorse.Item) item1; 28 | unowned var obj2 = (Seahorse.Item) item2; 29 | 30 | var place1 = obj1.place; 31 | var place2 = obj2.place; 32 | 33 | if (place1 == place2) 34 | return Gtk.Ordering.EQUAL; 35 | 36 | return Gtk.Ordering.from_cmpfunc(strcmp(place1.uri, place2.uri)); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /common/qr-code-dialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 49 | 50 | -------------------------------------------------------------------------------- /common/types.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see . 17 | */ 18 | 19 | namespace Seahorse { 20 | 21 | /* Again, never change these values */ 22 | public enum Usage { 23 | NONE = 0, 24 | SYMMETRIC_KEY = 1, 25 | PUBLIC_KEY = 2, 26 | PRIVATE_KEY = 3, 27 | CREDENTIALS = 4, 28 | IDENTITY = 5, 29 | OTHER = 10 30 | } 31 | 32 | [Flags] 33 | public enum Flags { 34 | [CCode (cname = "SEAHORSE_FLAG_NONE")] 35 | NONE = 0, 36 | 37 | [CCode (cname = "SEAHORSE_FLAG_IS_VALID")] 38 | IS_VALID = 0x00000001, 39 | 40 | [CCode (cname = "SEAHORSE_FLAG_CAN_ENCRYPT")] 41 | CAN_ENCRYPT = 0x00000002, 42 | 43 | [CCode (cname = "SEAHORSE_FLAG_CAN_SIGN")] 44 | CAN_SIGN = 0x00000004, 45 | 46 | [CCode (cname = "SEAHORSE_FLAG_CAN_CERTIFY")] 47 | CAN_CERTIFY = 0x00000008, 48 | 49 | [CCode (cname = "SEAHORSE_FLAG_CAN_AUTHENTICATE")] 50 | CAN_AUTHENTICATE = 0x00000010, 51 | 52 | [CCode (cname = "SEAHORSE_FLAG_EXPIRED")] 53 | EXPIRED = 0x00000100, 54 | 55 | [CCode (cname = "SEAHORSE_FLAG_REVOKED")] 56 | REVOKED = 0x00000200, 57 | 58 | [CCode (cname = "SEAHORSE_FLAG_DISABLED")] 59 | DISABLED = 0x00000400, 60 | 61 | [CCode (cname = "SEAHORSE_FLAG_TRUSTED")] 62 | TRUSTED = 0x00001000, 63 | 64 | [CCode (cname = "SEAHORSE_FLAG_PERSONAL")] 65 | PERSONAL = 0x00002000, 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /common/util.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2003 Jacob Perkins 5 | * Copyright (C) 2004-2005 Stefan Walter 6 | * Copyright (C) 2011 Collabora Ltd. 7 | * Copyright (C) 2020 Niels De Graef 8 | * 9 | * This program is free software; you can redistribute it and/or modify 10 | * it under the terms of the GNU General Public License as published by 11 | * the Free Software Foundation; either version 2 of the License, or 12 | * (at your option) any later version. 13 | * 14 | * This program is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 17 | * See the GNU General Public License for more details. 18 | * You should have received a copy of the GNU General Public License 19 | * along with this program; if not, see . 20 | */ 21 | 22 | namespace Seahorse.Util { 23 | 24 | public void show_error (Gtk.Widget? parent, 25 | string? heading, 26 | string? message) { 27 | 28 | if (message == null) 29 | message = ""; 30 | 31 | Gtk.Window? window = null; 32 | if (parent != null && !(parent is Gtk.Window)) { 33 | window = parent.get_root() as Gtk.Window; 34 | } 35 | 36 | var dialog = new Adw.AlertDialog(heading, message); 37 | dialog.add_response("close", _("_Close")); 38 | dialog.default_response = "close"; 39 | dialog.present(parent); 40 | } 41 | 42 | public void toggle_action (GLib.SimpleAction action, 43 | GLib.Variant? variant, 44 | void* user_data) { 45 | var old_state = action.get_state(); 46 | var new_state = new GLib.Variant.boolean(!old_state.get_boolean()); 47 | action.change_state(new_state); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /common/validity.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2003 Jacob Perkins 5 | * Copyright (C) 2017 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | public enum Seahorse.Validity { 22 | REVOKED = -3, 23 | DISABLED = -2, 24 | NEVER = -1, 25 | UNKNOWN = 0, 26 | MARGINAL = 1, 27 | FULL = 5, 28 | ULTIMATE = 10; 29 | 30 | /** 31 | * @return A string describing the validity. 32 | */ 33 | public unowned string? get_string () { 34 | switch (this) { 35 | case Seahorse.Validity.UNKNOWN: 36 | return C_("Validity", "Unknown"); 37 | case Seahorse.Validity.NEVER: 38 | return C_("Validity", "Never"); 39 | case Seahorse.Validity.MARGINAL: 40 | return C_("Validity", "Marginal"); 41 | case Seahorse.Validity.FULL: 42 | return C_("Validity", "Full"); 43 | case Seahorse.Validity.ULTIMATE: 44 | return C_("Validity", "Ultimate"); 45 | case Seahorse.Validity.DISABLED: 46 | return C_("Validity", "Disabled"); 47 | case Seahorse.Validity.REVOKED: 48 | return C_("Validity", "Revoked"); 49 | default: 50 | return null; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /common/viewable.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * Copyright (C) 2012 Stefan Walter 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see . 18 | * 19 | * Author: Stef Walter 20 | */ 21 | 22 | public interface Seahorse.Viewable : GLib.Object { 23 | 24 | /** 25 | * Creates a Panel widget that can be used in a PanelWindow, or in another 26 | * widget (such as an import dialog). 27 | */ 28 | public abstract Seahorse.Panel create_panel(); 29 | 30 | /** Presents this item to the user */ 31 | public virtual void view(Gtk.Window? parent = null) { 32 | Gtk.Window? window = get_data("viewable-window"); 33 | if (window == null) { 34 | var panel = create_panel(); 35 | window = new PanelWindow(panel, parent); 36 | 37 | set_data("viewable-window", window); 38 | window.close_request.connect((w) => { 39 | set_data_full("viewable-window", null, null); 40 | return false; 41 | }); 42 | } 43 | 44 | window.present(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/apps/seahorse-key-personal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/apps/seahorse-key-personal.png -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/apps/seahorse-key-ssh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/apps/seahorse-key-ssh.png -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/apps/seahorse-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/apps/seahorse-key.png -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/status/seahorse-sign-bad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/status/seahorse-sign-bad.png -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/status/seahorse-sign-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/status/seahorse-sign-ok.png -------------------------------------------------------------------------------- /data/icons/hicolor/22x22/status/seahorse-sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/22x22/status/seahorse-sign.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/apps/seahorse-key-personal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/apps/seahorse-key-personal.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/apps/seahorse-key-ssh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/apps/seahorse-key-ssh.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/apps/seahorse-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/apps/seahorse-key.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/status/seahorse-sign-bad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/status/seahorse-sign-bad.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/status/seahorse-sign-ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/status/seahorse-sign-ok.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/status/seahorse-sign-unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/status/seahorse-sign-unknown.png -------------------------------------------------------------------------------- /data/icons/hicolor/48x48/status/seahorse-sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/icons/hicolor/48x48/status/seahorse-sign.png -------------------------------------------------------------------------------- /data/icons/meson.build: -------------------------------------------------------------------------------- 1 | icons_install_dir = get_option('datadir') / 'icons' 2 | 3 | # special case for symbolic 4 | icon_subfolder = 'hicolor' / 'symbolic' / 'apps' 5 | install_data(icon_subfolder / 'org.gnome.Seahorse-symbolic.svg', 6 | rename: '@0@-symbolic.svg'.format(application_id), 7 | install_dir: icons_install_dir / icon_subfolder, 8 | ) 9 | icon_subfolder = 'hicolor' / 'scalable' / 'apps' 10 | install_data(icon_subfolder / '@0@.svg'.format(application_id), 11 | install_dir: icons_install_dir / icon_subfolder, 12 | ) 13 | 14 | # private icons 15 | private_icons_install_dir = get_option('datadir') / meson.project_name() / 'icons' 16 | 17 | foreach size: [ 22, 48 ] 18 | icon_size_str = '@0@x@0@'.format(size) 19 | 20 | # ..../apps 21 | icon_subfolder = 'hicolor' / icon_size_str / 'apps' 22 | foreach private_icon: [ 'key', 'key-personal', 'key-ssh' ] 23 | install_data( 24 | icon_subfolder / 'seahorse-@0@.png'.format(private_icon), 25 | install_dir: private_icons_install_dir / icon_subfolder, 26 | ) 27 | endforeach 28 | 29 | # ..../status 30 | icon_subfolder = 'hicolor' / icon_size_str / 'status' 31 | 32 | foreach private_icon: [ 'sign', 'sign-bad', 'sign-ok' ] 33 | install_data( 34 | icon_subfolder / 'seahorse-@0@.png'.format(private_icon), 35 | install_dir: private_icons_install_dir / icon_subfolder, 36 | ) 37 | endforeach 38 | endforeach 39 | 40 | # Only has a 48x48 version somehow 41 | icon_subfolder = 'hicolor' / '48x48' / 'status' 42 | install_data( 43 | icon_subfolder / 'seahorse-sign-unknown.png', 44 | install_dir: private_icons_install_dir / icon_subfolder, 45 | ) 46 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/key-item-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/qr-code-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/scalable/actions/secret-item-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /data/org.gnome.Seahorse.desktop.in.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=Passwords and Keys 3 | Comment=Manage your passwords and encryption keys 4 | # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! 5 | Keywords=keyring;encryption;security;sign;ssh;gpg;pgp;seahorse; 6 | Exec=seahorse %u 7 | Terminal=false 8 | Type=Application 9 | # Translators: Do NOT translate or transliterate this text (this is an icon file name)! 10 | Icon=@icon@ 11 | Categories=GNOME;GTK;Security;Utility;DesktopSettings;X-XFCE-SettingsDialog; 12 | MimeType=application/pgp-keys;application/x-ssh-key;application/pkcs12;application/pkcs12+pem;application/pkcs7-mime;application/pkcs7-mime+pem;application/pkcs8;application/pkcs8+pem;application/pkix-cert;application/pkix-cert+pem;application/pkix-crl;application/pkix-crl+pem;application/x-pem-file;application/x-pem-key;application/x-pkcs12;application/x-pkcs7-certificates;application/x-x509-ca-cert;application/x-x509-user-cert;application/pkcs10;application/pkcs10+pem;application/x-spkac;application/x-spkac+base64; 13 | StartupNotify=true 14 | DBusActivatable=true 15 | X-Purism-FormFactor=Workstation;Mobile; 16 | -------------------------------------------------------------------------------- /data/org.gnome.Seahorse.service.in: -------------------------------------------------------------------------------- 1 | [D-BUS Service] 2 | Name=@application_id@ 3 | Exec=@bindir@/seahorse --gapplication-service 4 | -------------------------------------------------------------------------------- /data/org.gnome.seahorse.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | Auto retrieve keys 6 | Whether or not keys should be automatically retrieved from key servers. 7 | 8 | 9 | false 10 | Auto publish keys 11 | Whether or not modified keys should be automatically published. 12 | 13 | 14 | '' 15 | Publish keys to this key server 16 | The key server to publish PGP keys to. Or empty to suppress publishing of PGP keys. 17 | 18 | 19 | '' 20 | Last key server search pattern 21 | The last search pattern searched for against a key server. 22 | 23 | 24 | [] 25 | Last key servers used 26 | The last key server a search was performed against or empty for all key servers. 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /data/org.gnome.seahorse.manager.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | Show keyrings sidebar 6 | Show keyrings sidebar in Seahorse. 7 | 8 | 9 | "personal" 10 | Which items to show 11 | Filter which items to show. If empty, show all items, if 12 | “personal” show personal keys, if “trusted” show trusted. 13 | 14 | 15 | 148 16 | Width of the side pane 17 | The default width of the side pane. 18 | 19 | 20 | ["secret-service://login"] 21 | The keyrings chosen 22 | The URIs of the keyrings chosen in the sidebar. 23 | 24 | 25 | 26 | 27 | 28 | 'name' 29 | The column to sort the Seahorse keys by 30 | Specify the column to sort the Seahorse key manager main window by. Columns are: “name”, “id”, “validity”, “expires”, “trust”, and “type”. Put a “-” in front of the column name to sort in descending order. 31 | 32 | 33 | false 34 | Show validity column 35 | No longer in use. 36 | 37 | 38 | false 39 | Show expiry column 40 | No longer in use. 41 | 42 | 43 | false 44 | Show trust column 45 | No longer in use. 46 | 47 | 48 | false 49 | Show type column 50 | No longer in use. 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /data/org.gnome.seahorse.window.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -1 5 | Width of the window 6 | Width (in pixels) of the window. 7 | 8 | 9 | -1 10 | Height of the window 11 | Height (in pixels) of the window. 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /data/screenshot-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GNOME/seahorse/72c01236f3f1121aba89328d4ee72d75b162ceb1/data/screenshot-default.png -------------------------------------------------------------------------------- /data/seahorse-search-provider.ini: -------------------------------------------------------------------------------- 1 | [Shell Search Provider] 2 | DesktopId=org.gnome.Seahorse.desktop 3 | BusName=org.gnome.Seahorse 4 | ObjectPath=/org/gnome/Seahorse 5 | Version=2 6 | -------------------------------------------------------------------------------- /data/style.css: -------------------------------------------------------------------------------- 1 | .seahorse-sidebar-item-header { 2 | margin-top: 6px; 3 | font-weight: bold; 4 | } 5 | 6 | .seahorse-sidebar-item { 7 | margin: 0 3px 0 12px; 8 | } 9 | 10 | .seahorse-sidebar-item > label { 11 | margin: 3px 0 3px 0; 12 | } 13 | 14 | .seahorse-sidebar-item > button { 15 | padding: 0; 16 | margin: 0; 17 | } 18 | 19 | .seahorse-item-listbox { 20 | min-width: 400px; 21 | } 22 | 23 | .seahorse-item-listbox-row { 24 | margin: 12px; 25 | } 26 | 27 | .seahorse-item-listbox-row image { 28 | margin: 6px 18px 6px 6px; 29 | } 30 | 31 | .seahorse-item-listbox-row > .seahorse-item-listbox-row-description { 32 | font-size: small; 33 | } 34 | 35 | .new-item-list { 36 | } 37 | 38 | .new-item-list label { 39 | font-weight: normal; 40 | } 41 | 42 | .seahorse-qr-code-dialog-qr-image { 43 | background: #fff; 44 | padding: 12px; 45 | } 46 | 47 | .pane-separator { 48 | border-width: 1px 1px 0 0; 49 | border-style: solid; 50 | border-color: shade (@theme_bg_color, 0.66); 51 | } 52 | 53 | /* Used to provide a little cutout around an overlayed circular button */ 54 | .seahorse-cutout-button { 55 | background-color: var(--window-bg-color); 56 | color: var(--window-fg-color); 57 | border-radius: 9999px; 58 | padding: 2px; 59 | } 60 | 61 | .pgp-subkey-usage-label { 62 | border: 1px solid shade(@theme_bg_color, 0.9); 63 | background-color: shade(@theme_bg_color, .95); 64 | padding-left: 3px; 65 | padding-right: 3px; 66 | border-radius: 4px; 67 | } 68 | 69 | :selected .pgp-subkey-usage-label { 70 | background-color: shade(@theme_selected_bg_color, .95); 71 | } 72 | 73 | levelbar .strength-weak { 74 | background-color: #cc0000; 75 | border-color: #cc0000; 76 | } 77 | 78 | levelbar .strength-low { 79 | background-color: #f5ce00; 80 | border-color: #f5ce00; 81 | } 82 | 83 | levelbar .strength-medium, 84 | levelbar .strength-good, 85 | levelbar .strength-high { 86 | background-color: #73d216; 87 | border-color: #73d216; 88 | } 89 | -------------------------------------------------------------------------------- /gkr/gkr-item-delete-operation.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2006 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * Copyright (C) 2020 Niels De Graef 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 | * See the GNU General Public License for more details. 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, see . 19 | */ 20 | 21 | public class Seahorse.Gkr.ItemDeleteOperation : DeleteOperation { 22 | 23 | public ItemDeleteOperation(Gkr.Item item) { 24 | add_item(item); 25 | } 26 | 27 | public void add_item(Gkr.Item item) { 28 | if (contains(item)) 29 | return; 30 | this.items.add(item); 31 | } 32 | 33 | public override async bool execute(Cancellable? cancellable = null) throws GLib.Error { 34 | debug("Deleting %u passwords", this.items.length); 35 | foreach (unowned var deletable in this.items) { 36 | var item = (Gkr.Item) deletable; 37 | yield item.delete(cancellable); 38 | } 39 | return true; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /gkr/gkr-keyring-delete-operation.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see . 19 | */ 20 | 21 | public class Seahorse.Gkr.KeyringDeleteOperation : DeleteOperation { 22 | 23 | public KeyringDeleteOperation(Keyring keyring) { 24 | add_keyring(keyring); 25 | } 26 | 27 | protected override Adw.AlertDialog create_confirm_dialog() { 28 | var dialog = base.create_confirm_dialog(); 29 | dialog.body = _("All items in the keyring will also be permanently deleted!"); 30 | return dialog; 31 | } 32 | 33 | public void add_keyring(Gkr.Keyring keyring) { 34 | if (contains(keyring)) 35 | return; 36 | this.items.add(keyring); 37 | } 38 | 39 | public override async bool execute(Cancellable? cancellable) throws GLib.Error { 40 | debug("Deleting %u keyrings", this.items.length); 41 | foreach (unowned var item in this.items) { 42 | var keyring = (Gkr.Keyring) item; 43 | yield keyring.delete(cancellable); 44 | } 45 | return true; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /gkr/gkr-keyring-panel.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | Set As _Default 7 | panel.set-default 8 | 9 |
10 |
11 | 12 | _Change Password 13 | panel.change-password 14 | 15 |
16 |
17 | 18 | 64 |
65 | -------------------------------------------------------------------------------- /gkr/gkr-keyring-permission.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2018 Anukul Sangwan 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see . 17 | */ 18 | 19 | public class Seahorse.Gkr.KeyringPermission : GLib.Permission { 20 | 21 | private Keyring keyring; 22 | 23 | public KeyringPermission(Keyring keyring) { 24 | this.keyring = keyring; 25 | refresh(); 26 | } 27 | 28 | private void disable() { 29 | this.impl_update(false, false, false); 30 | } 31 | 32 | private void refresh() { 33 | this.impl_update(!this.keyring.locked, Lockable.can_unlock(this.keyring), Lockable.can_lock(this.keyring)); 34 | } 35 | 36 | public override async bool acquire_async(GLib.Cancellable? cancellable = null) throws GLib.Error { 37 | disable(); 38 | yield this.keyring.unlock(null, null); 39 | refresh(); 40 | return true; 41 | } 42 | 43 | public override async bool release_async(GLib.Cancellable? cancellable = null) throws GLib.Error { 44 | disable(); 45 | yield this.keyring.lock(null, null); 46 | refresh(); 47 | return true; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /gkr/gkr-module.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2013 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see . 17 | * 18 | * Author: Stef Walter 19 | */ 20 | 21 | namespace Seahorse { 22 | namespace Gkr { 23 | 24 | public const string NAME = "gkr"; 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /gkr/meson.build: -------------------------------------------------------------------------------- 1 | gkr_sources = files( 2 | 'add-item-dialog.vala', 3 | 'add-keyring-dialog.vala', 4 | 'gkr-backend.vala', 5 | 'gkr-dialogs.vala', 6 | 'gkr-item-delete-operation.vala', 7 | 'gkr-item-info.vala', 8 | 'gkr-item-panel.vala', 9 | 'gkr-item.vala', 10 | 'gkr-keyring-delete-operation.vala', 11 | 'gkr-keyring-panel.vala', 12 | 'gkr-keyring-permission.vala', 13 | 'gkr-keyring.vala', 14 | 'gkr-module.vala', 15 | ) 16 | 17 | gkr_dependencies = [ 18 | glib_deps, 19 | gtk4_dep, 20 | gcr4_dep, 21 | libsecret, 22 | libpwquality, 23 | common_dep, 24 | ] 25 | 26 | gkr_vala_args = [ 27 | '--gresources', resources_xml, 28 | ] 29 | 30 | gkr_c_args = [ 31 | vala_workaround_cflags, 32 | ] 33 | 34 | gkr_lib = static_library('seahorse-gkr', 35 | gkr_sources, 36 | vala_args: gkr_vala_args, 37 | c_args: gkr_c_args, 38 | dependencies: gkr_dependencies, 39 | ) 40 | 41 | gkr_dep = declare_dependency( 42 | link_with: gkr_lib, 43 | include_directories: include_directories('.'), 44 | ) 45 | -------------------------------------------------------------------------------- /help/C/about-certificate-key.page.stub: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jwcampbell@gmail.com 16 | 2013 17 | 18 | 19 | Do my keys require a certificate? 20 | 21 | 22 | What is a certificate? 23 | 24 |

In the sidebar, you can see a section called Certificates listed alongside your PGP and Secure Shell keys. 25 | . . .

26 | 27 | 31 |
32 | -------------------------------------------------------------------------------- /help/C/about-diff-private-public.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jwcampbell@gmail.com 16 | 2013 17 | 18 | 19 | A public key is used to encrypt communication. A private key is 20 | used to decrypt it. 21 | 22 | 23 | Public Key vs Private Key 24 | 25 |

Although Public Keys and Private Keys are both referred 26 | to as keys, it helps to think of them a bit differently. Try to 27 | think of a Public Key as being like a padlock, and a 28 | Private Key as being like a key that unlocks the padlock.

29 | 30 |
31 | An Example: Sending a Secret Message in a Box 32 | 33 |

Let's use an example to see how this works. Imagine that you want your 34 | friend to send you a secret message in a box. You could give your friend a 35 | box and a padlock, but only you would have the key that unlocks the 36 | padlock.

37 | 38 |

Your friend could put their message in the box, lock the padlock, and 39 | then send you the locked box in the mail. When you receive it, you would use 40 | your key to unlock the box.

41 | 42 |

This is similar to how a Public Key and a Private Key 43 | work. Like the padlock, you can freely give out your Public Key. 44 | This will make it easy for anyone to securely encrypt, or lock, a message 45 | that they want to send to you.

46 | 47 |

On the other hand, a Private Key is like the key that allows you 48 | to decrypt, or unlock, the padlock. Because the Private Key is used 49 | to decrypt secure messages, you will want to keep your Private Key 50 | safe.

51 | 52 |
53 | 54 |
55 | -------------------------------------------------------------------------------- /help/C/about-pgp.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | PGP keys are used to sign and encrypt emails and files. 21 | 22 | 23 | What is a PGP key? 24 | 25 |

A PGP key is a public encryption key. A PGP key can be used to sign and 26 | encrypt emails and files. When you create a PGP key, a keypair having a 27 | public key and a private key is generated. You can share the public key with 28 | anyone who wishes to send you encrypted messages or files, but the private 29 | key must be known only to you and used to decrypt received messages.

30 | 31 |
32 | Encrypt and sign data using PGP keys 33 | 34 |

Passwords and Keys is a key management application. Though it 35 | cannot be used to encrypt or sign files and messages, you can use it to 36 | sign trustworthy keys.

37 | 38 |

To secure your communication, you can use email clients like 39 | Evolution that provide 40 | encryption 41 | and signing services.

42 | 43 |
44 | 45 |
46 | -------------------------------------------------------------------------------- /help/C/about-ssh.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Jim Campbell 14 | jwcampbell@gmail.com 15 | 2013 16 | 17 | 18 | SSH keys are used to login to a remote computer, once a secure 19 | connection has been established. 20 | 21 | 22 | What is a Secure Shell key? 23 | 24 |

A Secure Shell key, often just called an SSH key, 25 | helps you create a secure connection over an unsecured network.

26 | 27 | 28 | An SSH key actually consists of two parts: 29 |

A public key, which is widely available.

30 |

A private key, which is kept secret. The private key is used 31 | to unlock messages encrypted with a corresponding public key.

32 |
33 | 34 |

The advantage of using an SSH key to create a connection between 35 | computers is that only the Public key needs to be sent over 36 | the network. Transmissions encrypted with a Public key can only be 37 | decoded by unlocking them with the corresponding Private key and a 38 | password. Because only the public key is sent over the network, the key's 39 | password is kept secret.

40 | 41 |
42 | -------------------------------------------------------------------------------- /help/C/concepts.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jcampbell@gnome.org 16 | 2014 17 | 18 | 19 | Learn terms and concepts that are relevant to managing passwords and 20 | keys. 21 | 22 | 23 | Key Concepts and Terms 24 | 25 | 26 | -------------------------------------------------------------------------------- /help/C/index.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | Passwords and Keys 8 | Passwords and Keys 9 | Passwords and Keys 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jwcampbell@gmail.com 16 | 2013 17 | 18 | 19 | Aruna Sankaranarayanan 20 | aruna.evam@gmail.com 21 | 2013 22 | 23 | 24 | Ekaterina Gerasimova 25 | kittykat3756@gmail.com 26 | 2013 27 | 28 | 29 | 30 | 31 | Use Passwords and Keys to remember your passwords, and to create and manage PGP and SSH keys. 32 | 33 | 34 | 35 | <media type="image" its:translate="no" mime="image/svg+xml" height="48px" width="48px" src="media/org.gnome.Seahorse.svg" /> 36 | Passwords and Keys 37 | 38 | 39 |
40 | SSH Keys 41 | 42 |
43 | 44 |
45 | PGP keys 46 | 47 |
48 | 49 |
50 | Stored passwords and password keyrings 51 | 52 |
53 | 54 | 60 | 61 |
62 | -------------------------------------------------------------------------------- /help/C/introduction.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Jim Campbell 16 | jwcampbell@gmail.com 17 | 2013 18 | 19 | 20 | 21 | Aruna Sankaranarayanan 22 | aruna.evam@gmail.com 23 | 2013 24 | 25 | 26 | Use Passwords and Keys to create and manage PGP and SSH 27 | keys and to save passwords that are difficult to remember. 28 | 29 | 30 | Introduction 31 | 32 |

Welcome to the Passwords and Keys help guide. 33 | Passwords and Keys creates and stores security tokens, helping to 34 | keep your information secure on your computer, and secure when you send 35 | information over a network.

36 |

Using Passwords and Keys, you can:

37 | 38 | 39 | 40 |

Copy and save passwords 41 | that are difficult to remember. To group related passwords, 42 | create keyrings.

43 |
44 | 45 |

Create and 46 | manage PGP keys.

47 |
48 | 49 |

Create and 50 | manage SSH keys.

51 |
52 |
53 | 54 |
55 | -------------------------------------------------------------------------------- /help/C/keyring-change-default.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Aruna Sankaranarayanan 15 | aruna.evam@gmail.com 16 | 2013 17 | 18 | 19 | Save new passwords to a different keyring by default. 20 | 21 | 22 | Change the default keyring 23 | 24 |

When you 25 | add a new password, it is 26 | normally added to the default keyring. If you want to add it to a different 27 | keyring, you can choose another one while adding the new password, but you 28 | can also change the default keyring. The default keyring is normally the 29 | Login keyring.

30 | 31 | 32 | To change the default keyring: 33 | 34 |

Select your choice for the default keyring from the list of 35 | keyrings under Passwords on the left side panel.

36 |
37 | 38 |

Right click on the selected keyring and select Set as 39 | default.

40 |
41 |
42 | 43 | 44 |

Passwords to some GNOME applications are stored automatically by 45 | Passwords and Keys in the Login keyring because it is 46 | the default keyring. When you change the default keyring, any new passwords 47 | created for GNOME applications will be stored in the new default keyring 48 | while GNOME application passwords created before the change will remain in 49 | the Login keyring.

50 |
51 | 52 |
53 | -------------------------------------------------------------------------------- /help/C/keyring-lock.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Lock and password protect your password keyrings to control access to 21 | the passwords stored in them. 22 | 23 | 24 | Lock your keyrings 25 | 26 |

To safe-keep your passwords, store them in a password-protected keyring. 27 | When a password-protected keyring is locked, the passwords in it are kept 28 | hidden till someone unlocks the keyring 29 | with the correct password.

30 | 31 | 32 |

You can choose to protect your keyring with a password while 33 | creating it.

34 |
35 | 36 | 37 | To lock your password keyring: 38 | 39 |

From the list of keyrings under Passwords on the left side 40 | panel, select the keyring to be locked.

41 |
42 | 43 |

Right click on the selected keyring and select Lock, or 44 | click on the small picture of an opened lock next to the name of the 45 | password keyring.

46 |
47 |
48 | 49 |
50 | -------------------------------------------------------------------------------- /help/C/keyring-unlock.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | To view passwords stored inside a locked keyring, unlock it. 21 | 22 | 23 | Unlock your keyrings 24 |

A keyring may often be 25 | locked to protect the passwords 26 | it contains, similar to locking important things safely inside a trunk. 27 | In order to look at your passwords, you must unlock the keyring first.

28 | 29 | 30 | To unlock your keyring: 31 | 32 |

Select the keyring to be unlocked from the panel on your left. It is 33 | listed under Passwords.

34 |
35 | 36 |

Right click on the selected keyring and select Unlock from 37 | the menu, or alternatively, click the small picture of a closed lock next 38 | to the keyring name to unlock the keyring.

39 |
40 | 41 |

If the keyring is password-protected, you will be prompted for a 42 | password to unlock the keyring. Enter the correct password in the 43 | Password field and press Unlock to 44 | finish.

45 |
46 |
47 | 48 | 49 |

You can choose to password-protect your keyrings while 50 | creating them.

51 |
52 | 53 |
54 | -------------------------------------------------------------------------------- /help/C/keyring-update-password.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Keep updating the passwords to your keyrings to ensure that they are 21 | protected well. 22 | 23 | 24 | 25 | Update the keyring password 26 | 27 |

The password to unlock your keyring can 28 | be updated at any time.

29 | 30 | 31 | To update the password for a password keyring: 32 | 33 |

Select the password keyring from the list, under 34 | Passwords, on the left side panel.

35 |
36 | 37 |

Right click on the selected password keyring and select 38 | Change Password.

39 |
40 | 41 |

Type your old password to authenticate yourself and press 42 | Continue.

43 |
44 | 45 |

In the new dialog, type your new password, retype it to confirm the 46 | new password and press the Continue button to 47 | finish.

48 |
49 |
50 | 51 |
52 | -------------------------------------------------------------------------------- /help/C/keyring.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Jim Campbell 16 | jwcampbell@gmail.com 17 | 2013 18 | 19 | 20 | Aruna Sankaranarayanan 21 | aruna.evam@gmail.com 22 | 2013 23 | 24 | 25 | Ekaterina Gerasimova 26 | kittykat3756@gmail.com 27 | 2013 28 | 29 | 30 | A keyring is used to group related passwords and keys. 31 | 32 | 33 | What is a keyring? 34 | 35 |

Much like a keyring in real life allows you to keep certain sets of keys 36 | together, a keyring in Passwords and Keys allows you to keep 37 | passwords and keys in separate groups.

38 | 39 |

When you open Passwords and Keys for the first time, you will 40 | see keys and password grouped together. In the Login keyring, you 41 | may find stored passwords for GNOME applications such as Web, 42 | Online Accounts etc. The Login keyring is the default 43 | keyring in Passwords and keys.

44 | 45 |
46 | -------------------------------------------------------------------------------- /help/C/legal.xml: -------------------------------------------------------------------------------- 1 | 3 |

This work is licensed under a 4 | Creative Commons 5 | Attribution-ShareAlike 3.0 Unported License.

6 |
7 | -------------------------------------------------------------------------------- /help/C/media/dialog-password-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /help/C/misc-key-backup.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | 21 | Hashem Nasarat 22 | hashem@riseup.net 23 | 2014 24 | 25 | 26 | Keep a copy of your keys in an external device. 27 | 28 | 29 | Securely back-up your keys 30 | 31 |

It is always advisable to save a copy of your keys on an external memory 32 | device like a USB drive. The device should then be kept locked or stored 33 | somewhere safe. This way you will always have a copy of the key if your 34 | computer breaks or if the data on your computer is corrupted in some way.

35 | 36 | 37 | To back-up your keys: 38 | 39 |

Export your key files:

40 | 41 |

Export your PGP keys.

42 |

Export your SSH keys.

43 |
44 |
45 | 46 |

Copy the exported files on an external disk.

47 |
48 |
49 |
50 | -------------------------------------------------------------------------------- /help/C/passwords-stored-create.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Aruna Sankaranarayanan 15 | aruna.evam@gmail.com 16 | 2013 17 | 18 | 19 | Passwords and keys can remember your passwords for 20 | you. 21 | 22 | 23 | Store your passwords 24 | 25 |

Passwords and Keys automatically stores passwords for certain 26 | GNOME applications in the Login keyring. Additionally, you can 27 | store any other password you want to remember.

28 | 29 | 30 | To create a new stored password: 31 | 32 |

Press the + button in the top-left corner of the window.

33 |
34 | 35 |

Select Password from the list.

36 |
37 | 38 |

Select the password keyring in which you want to store your password 39 | from the Keyring menu.

40 |
41 | 42 |

You can add additional information about the password in the 43 | Description field, like the date of creation, or the name of 44 | the application it protects, etc.

45 |
46 | 47 |

Type the password in the Password field. You can tick the 48 | Show password checkbox if you want to see the 49 | password text while typing it out.

50 |
51 | 52 |

Press the Add button to finish.

53 |
54 |
55 | 56 | 57 |

The default keyring is displayed as the first choice in the 58 | Keyring drop down menu. You can 59 | change the default 60 | keyring.

61 |
62 | 63 |
64 | -------------------------------------------------------------------------------- /help/C/pgp-expiration-change.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Aruna Sankaranarayanan 15 | aruna.evam@gmail.com 16 | 2013 17 | 18 | 19 | Advance or postpone the expiration date of your keys. 20 | 21 | 22 | Change the expiration date of your keys 23 | 24 |

If your PGP key has expired but you wish to continue its use, you can 25 | change its expiry date. You can also change the expiration settings to have a 26 | key expire on an earlier date.

27 | 28 | 29 | To change the expiration date of a PGP key: 30 | 31 |

Select the PGP key from the list.

32 |
33 | 34 |

Right click on the selected key and select Properties.

35 |
36 | 37 |

In the new dialog, select the Details tab.

38 |
39 | 40 | 41 | 42 |

To change the expiration date of the master key, press the small 43 | button with the picture of a calendar next to Expires, on 44 | the right side of the dialog. You can then select the new expiration 45 | date from the calendar.

46 |
47 | 48 |

To change the expiration date of a 49 | subkey, expand the Subkeys 50 | panel and select the subkey from the list. Press the 51 | Expire button on the left of the panel and 52 | select the new expiration date.

53 |
54 |
55 |
56 |
57 | 58 | 59 |

If you are changing the expiration date of a key that has been 60 | published, you must synchronize the key with 61 | the key server after making the desired changes.

62 |
63 | 64 |
65 | -------------------------------------------------------------------------------- /help/C/pgp-expired.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Can I still use it? Can expiration dates be changed? 21 | 22 | 23 | What happens if my key expires? 24 | 25 |

When your key expires, it becomes invalid. This means:

26 | 27 | 28 | 29 |

It can no longer be used to encrypt and decrypt messages.

30 |
31 | 32 |

It cannot sign other keys or receive signatures from other 33 | keys.

34 |
35 |
36 | 37 |

Depending on how long you want your key to be valid, you can 38 | set an expiration date for 39 | it. By default, Passwords and Keys sets all keys to be valid 40 | forever. That is, the keys never expire.

41 | 42 |

The expiration date on a key can be 43 | changed anytime, even after 44 | the key has expired. However, if you want to stop using the expired key, you 45 | should delete or 46 | revoke it.

47 | 48 | 49 |

If you have any messages encrypted with an expired key, you must change 50 | the expiration date on the key to decrypt such messages before deleting or 51 | revoking it.

52 |
53 | 54 |
55 | -------------------------------------------------------------------------------- /help/C/pgp-import.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Aruna Sankaranarayanan 17 | aruna.evam@gmail.com 18 | 2013 19 | 20 | 21 | Jim Campbell 22 | jwcampbell@gmail.com 23 | 2013 24 | 25 | 26 | Import keys from keyfiles into Passwords and Keys. 27 | 28 | 29 | Import PGP keys 30 | 31 |

If you have received a key file by email, you might want to import it into 32 | Passwords and Keys. In most cases, Passwords and Keys 33 | automatically imports PGP keys from your computer. You can also manually 34 | import a particular key, if it has not been imported already.

35 | 36 | 37 | How do I manually import a key? 38 | 39 |

Press the + button in the top-left corner of the window.

40 |
41 | 42 |

Select Import from file… from the list.

43 |
44 | 45 |

In the new dialog, select the key you wish to import. PGP keys end 46 | with pgp or asc, GPG keys end with 47 | gpg.

48 |
49 | 50 |

Click Open.

51 |
52 |
53 | 54 |

Once imported, the PGP and GPG keys are listed under 55 | GnuPG keys.

56 | 57 |
58 | -------------------------------------------------------------------------------- /help/C/pgp-userid-primary.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Aruna Sankaranarayanan 15 | aruna.evam@gmail.com 16 | 2013 17 | 18 | 19 | Change your default user ID 20 | 21 | 22 | What is a primary user ID? 23 | 24 |

When you have multiple user IDs, one of the user IDs is made the primary 25 | user ID. Passwords and Keys will attach the primary user ID by 26 | default with your key information, while encrypting or signing, unless you 27 | explicitly choose another user ID instead.

28 | 29 | 30 | To change the primary user ID in a PGP key: 31 | 32 |

Select the GnuPG keys keyring from the left side panel.

33 |
34 | 35 |

Select the Personal PGP key from the list.

36 |
37 | 38 |

Right click on the selected key and select 39 | Properties 40 | Names and Signatures.

41 |
42 | 43 |

Select the new primary user ID from the list and click 44 | Primary.

45 |
46 |
47 | 48 |

The user ID will move to the top of the Names and Signatures 49 | list to become your primary user ID.

50 | 51 | 52 |

Sync your keys after changing your primary user ID to update the remote 53 | copies of your key.

54 |
55 | 56 |
57 | -------------------------------------------------------------------------------- /help/C/pgp-userid-remove.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Remove extra user IDs 21 | 22 | 23 | Detach a user ID from a key 24 | 25 |

While it is essential that all keys have at least one user ID, you can 26 | remove any additional user IDs that you have attached to the key.

27 | 28 | 29 | To remove a user ID from a PGP key: 30 | 31 |

Select the GnuPG keys keyring from the left side panel.

32 |
33 | 34 |

Select the Personal PGP key from the list.

35 |
36 | 37 |

Right click on the selected key and choose 38 | Properties 39 | Names and Signatures.

40 |
41 | 42 |

Select the user ID you want to remove and click 43 | Delete.

44 |
45 |
46 | 47 | 48 |

Synchronize your keys after detaching the 49 | user ID to update the changes on the remote copy of the key.

50 |
51 | 52 |
53 | -------------------------------------------------------------------------------- /help/C/pgp-userid.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Aruna Sankaranarayanan 15 | aruna.evam@gmail.com 16 | 2013 17 | 18 | 19 | Create keys with good user IDs and learn to add and remove user 20 | IDs. 21 | 22 | 23 | What is a user ID? 24 | 25 |

When you create a key, you provide details, like your name, email and a 26 | key description. This information together constitutes a user ID. A good user 27 | ID helps people to recognize your key when they are trying to 28 | retrieve or 29 | import it. It is important to fill in 30 | authentic information while creating your user ID.

31 | 32 |
33 | Add, remove user IDs 34 |
35 | 36 |
37 | -------------------------------------------------------------------------------- /help/C/ssh-connect-remote.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jcampbell@gnome.org 16 | 17 | 18 | 19 | Aruna Sankaranarayanan 20 | aruna.evam@gmail.com 21 | 22 | 23 | Use SSH keys to log in to another computer without entering a 24 | password. 25 | 26 | 27 | Connect to other computers 28 | 29 |

You can use Passwords and Keys to install your SSH key onto a 30 | remote computer that can run an SSH server. You can also 31 | set up your SSH key for 32 | remote login while creating the key.

33 | 34 | 35 | 36 |

Right click on the SSH key and select Configure Key 37 | for Secure Shell….

38 |
39 | 40 |

In the dialog window that opens, enter the Server address 41 | that you normally use to log in to the remote computer via SSH, and press 42 | Set Up.

43 |
44 | 45 |

The program will now attempt to connect to the specified 46 | Server address with the entered Login Name. If 47 | there are any problems in accessing the remote computer, a pop-up 48 | window will appear that explains the problem, and you can try again. 49 | Make sure that you have a network connection and that the remote 50 | computer is on and accessible.

51 |
52 | 53 |

If connection to the remote computer was successful, a dialog box will 54 | appear which asks for the Password you use to log in to the 55 | remote computer. Enter your password, then press 56 | OK.

57 |
58 |
59 | 60 |

You should now be able to log in to the remote computer via SSH without a 61 | password.

62 | 63 |
64 | -------------------------------------------------------------------------------- /help/C/ssh-create-vs-setup.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Jim Campbell 15 | jwcampbell@gmail.com 16 | 17 | 18 | How do I create a new SSH key and set it up? 19 | 20 | 21 | SSH key creation and setup 22 | 23 |

Short introductory text...

24 | 25 | 26 |

First step...

27 |

Second step...

28 |

Third step...

29 |
30 | 31 | 36 |
37 | -------------------------------------------------------------------------------- /help/C/ssh-import.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Jim Campbell 21 | jwcampbell@gmail.com 22 | 2013 23 | 24 | 25 | Import SSH keys from keyfiles into Passwords and Keys. 26 | 27 | 28 | Import SSH keys 29 | 30 |

If you have received a key file by email, you might want to import it into 31 | Passwords and Keys. In most cases, Passwords and Keys 32 | automatically imports SSH keys from the ~/.ssh directory on your 33 | computer. You can also manually import keys into 34 | Passwords and Keys.

35 | 36 | 37 | How do I manually import a key? 38 | 39 |

Press the + button in the top-left corner of the window.

40 |
41 | 42 |

Select Import from file… from the list.

43 |
44 | 45 |

In the new dialog, select the key you wish to 46 | import. Public SSH keys end with pub.

47 |
48 | 49 |

Click Open.

50 |
51 |
52 | 53 |

Imported keys are automatically grouped according to their type. So, 54 | SSH keys are listed in the OpenSSH keys 55 | section.

56 | 57 |
58 | -------------------------------------------------------------------------------- /help/C/subkeys-add.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | Additional subkeys make your master key more secure. 21 | 22 | 23 | Add extra subkeys 24 | 25 |

You can add extra subkeys to the same master key. You have to choose the 26 | right subkey each time you want to encrypt or sign when you do this.

27 | 28 | 29 | To add extra subkeys to a PGP key: 30 | 31 |

Select GnuPG keys from the left side panel.

32 |
33 | 34 |

Select the Personal PGP key from the list.

35 |
36 | 37 |

Right click on the selected key and select 38 | PropertiesDetails.

39 |
40 | 41 |

If the Subkeys panel is not expanded, expand it.

42 |
43 | 44 |

Click the Add button to add a new 45 | subkey.

46 |
47 | 48 |

Choose the right properties for your key by selecting the 49 | appropriate Key Type, Key Length and 50 | Expiration Date and click OK.

51 |
52 |
53 | 54 | 55 |

Always ensure that your subkey expires before your master key since a 56 | subkey is useless when its master key has expired.

57 |
58 | 59 | 60 |
61 | -------------------------------------------------------------------------------- /help/C/subkeys-examine.page: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Aruna Sankaranarayanan 16 | aruna.evam@gmail.com 17 | 2013 18 | 19 | 20 | See all the subkeys listed under a PGP key. 21 | 22 | 23 | Where are my subkeys listed? 24 | 25 |

You can check the contents of a keypair to see the properties of a 26 | subkey.

27 | 28 | 29 | To see all the subkeys in a PGP key: 30 | 31 |

Select the GnuPG keys from the left side panel.

32 |
33 | 34 |

Select the Personal PGP key.

35 |
36 | 37 |

Right click on the key chosen in the previous step and select 38 | PropertiesDetails.

39 |
40 | 41 |

If the Subkeys panel is not expanded, expand it.

42 |
43 | 44 |

All the subkeys for the selected PGP key will be listed in the 45 | panel.

46 |
47 |
48 | 49 | 50 |

While signing another key, Passwords and Keys automatically 51 | chooses the master key for signing, when you select a GnuPG keys 52 | keypair to sign with.

53 |
54 | 55 |
56 | -------------------------------------------------------------------------------- /help/LINGUAS: -------------------------------------------------------------------------------- 1 | ca 2 | cs 3 | da 4 | de 5 | el 6 | es 7 | eu 8 | fr 9 | gl 10 | hu 11 | id 12 | pl 13 | pt_BR 14 | ru 15 | sv 16 | uk 17 | -------------------------------------------------------------------------------- /help/meson.build: -------------------------------------------------------------------------------- 1 | help_pages = [ 2 | 'about-diff-private-public.page', 3 | 'about-pgp.page', 4 | 'about-ssh.page', 5 | 'concepts.page', 6 | 'glossary.page', 7 | 'index.page', 8 | 'introduction.page', 9 | 'key-servers-add.page', 10 | 'keyring-change-default.page', 11 | 'keyring-create.page', 12 | 'keyring-lock.page', 13 | 'keyring-unlock.page', 14 | 'keyring-update-password.page', 15 | 'keyring.page', 16 | 'legal.xml', 17 | 'misc-key-backup.page', 18 | 'misc-key-fingerprint.page', 19 | 'passwords-stored-create.page', 20 | 'passwords-view.page', 21 | 'pgp-create.page', 22 | 'pgp-delete.page', 23 | 'pgp-expiration-change.page', 24 | 'pgp-expired.page', 25 | 'pgp-export.page', 26 | 'pgp-import.page', 27 | 'pgp-photoid.page', 28 | 'pgp-publish.page', 29 | 'pgp-retrieve-remote.page', 30 | 'pgp-sign.page', 31 | 'pgp-subkeys.page', 32 | 'pgp-sync.page', 33 | 'pgp-userid-add.page', 34 | 'pgp-userid-primary.page', 35 | 'pgp-userid-remove.page', 36 | 'pgp-userid.page', 37 | 'ssh-connect-remote.page', 38 | 'ssh-create.page', 39 | 'ssh-export.page', 40 | 'ssh-import.page', 41 | 'subkeys-add.page', 42 | 'subkeys-examine.page', 43 | 'subkeys-revoke.page', 44 | ] 45 | 46 | help_media = [ 47 | 'media/dialog-password-symbolic.svg', 48 | 'media/org.gnome.Seahorse.svg', 49 | ] 50 | 51 | gnome.yelp(meson.project_name(), 52 | sources: help_pages, 53 | media: help_media, 54 | ) 55 | -------------------------------------------------------------------------------- /libseahorse/meson.build: -------------------------------------------------------------------------------- 1 | libseahorse_sources = files( 2 | 'seahorse-progress.c', 3 | 'seahorse-util.c', 4 | ) 5 | 6 | libseahorse_deps = [ 7 | glib_deps, 8 | gcr4_dep, 9 | libsecret, 10 | common_dep, 11 | ] 12 | 13 | libseahorse_lib = static_library('libseahorse', 14 | libseahorse_sources, 15 | dependencies: libseahorse_deps, 16 | include_directories: include_directories('..'), 17 | ) 18 | 19 | libseahorse_dep = declare_dependency( 20 | link_with: libseahorse_lib, 21 | ) 22 | -------------------------------------------------------------------------------- /meson.options: -------------------------------------------------------------------------------- 1 | option('help', 2 | type: 'boolean', 3 | value: true, 4 | description: 'Build help', 5 | ) 6 | 7 | option('profile', 8 | type: 'combo', 9 | choices: [ 'default', 'development' ], 10 | value: 'default', 11 | description: 'Indicate whether this is a nightly build (used for CI purposes)', 12 | ) 13 | 14 | option('pgp-support', 15 | type: 'boolean', 16 | value: true, 17 | description: 'Add support PGP keys', 18 | ) 19 | 20 | option('check-compatible-gpg', 21 | type: 'boolean', 22 | value: true, 23 | description: 'Perform a rudimentary check if the GPG and GPG versions are compatible', 24 | ) 25 | 26 | option('pkcs11-support', 27 | type: 'boolean', 28 | value: true, 29 | description: 'Add support for PKCS#11 objects', 30 | ) 31 | 32 | option('keyservers-support', 33 | type: 'boolean', 34 | value: true, 35 | description: 'Add support for keyservers', 36 | ) 37 | 38 | option('hkp-support', 39 | type: 'boolean', 40 | value: true, 41 | description: 'Add support for keyservers using HKP', 42 | ) 43 | 44 | option('ldap-support', 45 | type: 'boolean', 46 | value: true, 47 | description: 'Add support for keyservers using LDAP', 48 | ) 49 | 50 | option('key-sharing', 51 | type: 'boolean', 52 | value: false, 53 | description: 'Add support for DNS-SD key sharing', 54 | ) 55 | 56 | option('manpage', 57 | type: 'boolean', 58 | value: false, 59 | description: 'Build and install the manpage (requires xsltproc)', 60 | ) 61 | -------------------------------------------------------------------------------- /pgp/seahorse-gpg-op.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include "config.h" 23 | 24 | #include 25 | 26 | gpgme_error_t seahorse_gpg_op_num_uids (gpgme_ctx_t ctx, 27 | const char *pattern, 28 | guint *number); 29 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-add-subkey.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme.h" 25 | #include "pgp/seahorse-gpgme-key.h" 26 | #include "pgp/seahorse-gpgme-key-gen-type.h" 27 | #include "pgp/seahorse-gpgme-subkey.h" 28 | #include "pgp/seahorse-pgp-subkey-usage.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_ADD_SUBKEY (seahorse_gpgme_add_subkey_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeAddSubkey, seahorse_gpgme_add_subkey, 32 | SEAHORSE_GPGME, ADD_SUBKEY, 33 | GtkDialog) 34 | 35 | SeahorseGpgmeAddSubkey* seahorse_gpgme_add_subkey_new (SeahorseGpgmeKey *pkey, 36 | GtkWindow *parent); 37 | 38 | SeahorsePgpKeyAlgorithm seahorse_gpgme_add_subkey_get_selected_algo (SeahorseGpgmeAddSubkey *self); 39 | 40 | SeahorsePgpSubkeyUsage seahorse_gpgme_add_subkey_get_selected_usage (SeahorseGpgmeAddSubkey *self); 41 | 42 | guint seahorse_gpgme_add_subkey_get_keysize (SeahorseGpgmeAddSubkey *self); 43 | 44 | GDateTime * seahorse_gpgme_add_subkey_get_expires (SeahorseGpgmeAddSubkey *self); 45 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-add-uid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2003 Jacob Perkins 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include "seahorse-gpgme-key.h" 24 | 25 | #define SEAHORSE_GPGME_TYPE_ADD_UID (seahorse_gpgme_add_uid_get_type ()) 26 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeAddUid, seahorse_gpgme_add_uid, 27 | SEAHORSE_GPGME, ADD_UID, 28 | GtkApplicationWindow) 29 | 30 | SeahorseGpgmeAddUid * seahorse_gpgme_add_uid_new (SeahorseGpgmeKey *pkey, 31 | GtkWindow *parent); 32 | 33 | void seahorse_gpgme_add_uid_run_dialog (SeahorseGpgmeKey *pkey, 34 | GtkWindow *parent); 35 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-data.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | */ 20 | 21 | /** 22 | * A gpgme_data_t implementation which maps to a gio handle. 23 | * Allows for accessing data on remote machines (ie: smb, sftp) 24 | */ 25 | 26 | #pragma once 27 | 28 | #include 29 | #include 30 | 31 | gpgme_data_t seahorse_gpgme_data_input (GInputStream* input); 32 | 33 | gpgme_data_t seahorse_gpgme_data_output (GOutputStream* output); 34 | 35 | /* 36 | * GTK/Glib use a model where if allocation fails, the program exits. These 37 | * helper functions extend certain GPGME calls to provide the same behavior. 38 | */ 39 | 40 | gpgme_data_t seahorse_gpgme_data_new (void); 41 | 42 | void seahorse_gpgme_data_release (gpgme_data_t data); 43 | 44 | int seahorse_gpgme_data_write_all (gpgme_data_t data, const void* buffer, size_t len); 45 | 46 | gpgme_data_t seahorse_gpgme_data_new_from_mem (const char *buffer, size_t size, gboolean copy); 47 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-expires-dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme-key.h" 25 | #include "pgp/seahorse-gpgme-subkey.h" 26 | 27 | #define SEAHORSE_GPGME_TYPE_EXPIRES_DIALOG (seahorse_gpgme_expires_dialog_get_type ()) 28 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeExpiresDialog, seahorse_gpgme_expires_dialog, 29 | SEAHORSE_GPGME, EXPIRES_DIALOG, 30 | AdwDialog) 31 | 32 | GtkWidget * seahorse_gpgme_expires_dialog_new (SeahorseGpgmeSubkey *subkey); 33 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-generate-dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme-keyring.h" 25 | 26 | #define SEAHORSE_GPGME_TYPE_GENERATE_DIALOG (seahorse_gpgme_generate_dialog_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeGenerateDialog, seahorse_gpgme_generate_dialog, 28 | SEAHORSE_GPGME, GENERATE_DIALOG, 29 | AdwDialog) 30 | 31 | void seahorse_gpgme_generate_register (void); 32 | 33 | SeahorseGpgmeGenerateDialog * seahorse_gpgme_generate_dialog_new (SeahorseGpgmeKeyring *keyring); 34 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-key-delete-operation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | * 20 | * Author: Stef Walter 21 | */ 22 | 23 | #pragma once 24 | 25 | #include 26 | 27 | #include "seahorse-common.h" 28 | #include "seahorse-gpgme-key.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_KEY_DELETE_OPERATION (seahorse_gpgme_key_delete_operation_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeKeyDeleteOperation, 32 | seahorse_gpgme_key_delete_operation, 33 | SEAHORSE_GPGME, KEY_DELETE_OPERATION, 34 | SeahorseDeleteOperation) 35 | 36 | SeahorseGpgmeKeyDeleteOperation * 37 | seahorse_gpgme_key_delete_operation_new (SeahorseGpgmeKey *key); 38 | 39 | void seahorse_gpgme_key_delete_operation_add_key (SeahorseGpgmeKeyDeleteOperation *self, 40 | SeahorseGpgmeKey *key); 41 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-key-export-operation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | * 19 | * Author: Stef Walter 20 | */ 21 | 22 | #pragma once 23 | 24 | #include 25 | 26 | #include "seahorse-common.h" 27 | 28 | #include "seahorse-gpgme-key.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_KEY_EXPORT_OPERATION (seahorse_gpgme_key_export_operation_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeKeyExportOperation, 32 | seahorse_gpgme_key_export_operation, 33 | SEAHORSE_GPGME, KEY_EXPORT_OPERATION, 34 | SeahorseExportOperation) 35 | 36 | SeahorseExportOperation * seahorse_gpgme_key_export_operation_new (SeahorseGpgmeKey *key, 37 | gboolean armor, 38 | gboolean secret); 39 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-key-gen-type.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see 19 | * . 20 | */ 21 | 22 | #pragma once 23 | 24 | #include "seahorse-gpgme.h" 25 | #include "seahorse-pgp-key-algorithm.h" 26 | 27 | typedef enum { 28 | SEAHORSE_GPGME_KEY_GEN_TYPE_RSA_RSA, 29 | SEAHORSE_GPGME_KEY_GEN_TYPE_RSA_SIGN, 30 | SEAHORSE_GPGME_KEY_GEN_TYPE_RSA_ENCRYPT, 31 | SEAHORSE_GPGME_KEY_GEN_TYPE_DSA, 32 | SEAHORSE_GPGME_KEY_GEN_TYPE_DSA_ELGAMAL, 33 | SEAHORSE_GPGME_KEY_GEN_TYPE_ELGAMAL, 34 | } SeahorseGpgmeKeyGenType; 35 | 36 | const char * seahorse_gpgme_key_gen_type_to_string (SeahorseGpgmeKeyGenType type); 37 | 38 | SeahorsePgpKeyAlgorithm seahorse_gpgme_key_gen_type_get_key_algo (SeahorseGpgmeKeyGenType type); 39 | 40 | gboolean seahorse_gpgme_key_gen_type_get_subkey_algo (SeahorseGpgmeKeyGenType type, 41 | SeahorsePgpKeyAlgorithm *subkey_algo); 42 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-key.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2005 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include 25 | 26 | #include "seahorse-pgp-key.h" 27 | 28 | #define SEAHORSE_GPGME_TYPE_KEY (seahorse_gpgme_key_get_type ()) 29 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeKey, seahorse_gpgme_key, 30 | SEAHORSE_GPGME, KEY, 31 | SeahorsePgpKey) 32 | 33 | SeahorseGpgmeKey* seahorse_gpgme_key_new (SeahorsePlace *sksrc, 34 | gpgme_key_t pubkey, 35 | gpgme_key_t seckey); 36 | 37 | void seahorse_gpgme_key_refresh (SeahorseGpgmeKey *self); 38 | 39 | void seahorse_gpgme_key_realize (SeahorseGpgmeKey *self); 40 | 41 | void seahorse_gpgme_key_ensure_signatures (SeahorseGpgmeKey *self); 42 | 43 | gpgme_key_t seahorse_gpgme_key_get_public (SeahorseGpgmeKey *self); 44 | 45 | void seahorse_gpgme_key_set_public (SeahorseGpgmeKey *self, 46 | gpgme_key_t key); 47 | 48 | gpgme_key_t seahorse_gpgme_key_get_private (SeahorseGpgmeKey *self); 49 | 50 | void seahorse_gpgme_key_set_private (SeahorseGpgmeKey *self, 51 | gpgme_key_t key); 52 | 53 | void seahorse_gpgme_key_refresh_matching (gpgme_key_t key); 54 | 55 | SeahorseValidity seahorse_gpgme_key_get_validity (SeahorseGpgmeKey *self); 56 | 57 | SeahorseValidity seahorse_gpgme_key_get_trust (SeahorseGpgmeKey *self); 58 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-keyring-panel.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2022 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme-keyring.h" 25 | 26 | #define SEAHORSE_GPGME_TYPE_KEYRING_PANEL (seahorse_gpgme_keyring_panel_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeKeyringPanel, seahorse_gpgme_keyring_panel, 28 | SEAHORSE_GPGME, KEYRING_PANEL, 29 | SeahorsePanel); 30 | 31 | GtkWidget * seahorse_gpgme_keyring_panel_new (SeahorseGpgmeKeyring *keyring); 32 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-keyring-panel.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 37 | 38 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-photo.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include 25 | 26 | #include "pgp/seahorse-gpgme.h" 27 | #include "pgp/seahorse-pgp-photo.h" 28 | 29 | #define SEAHORSE_TYPE_GPGME_PHOTO (seahorse_gpgme_photo_get_type ()) 30 | G_DECLARE_FINAL_TYPE (SeahorseGpgmePhoto, seahorse_gpgme_photo, 31 | SEAHORSE, GPGME_PHOTO, 32 | SeahorsePgpPhoto); 33 | 34 | SeahorseGpgmePhoto* seahorse_gpgme_photo_new (gpgme_key_t key, 35 | GdkPixbuf *pixbuf, 36 | guint index); 37 | 38 | gpgme_key_t seahorse_gpgme_photo_get_pubkey (SeahorseGpgmePhoto *self); 39 | 40 | guint seahorse_gpgme_photo_get_index (SeahorseGpgmePhoto *self); 41 | 42 | void seahorse_gpgme_photo_set_index (SeahorseGpgmePhoto *self, 43 | guint index); 44 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-revoke-dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme-subkey.h" 25 | 26 | #define SEAHORSE_GPGME_TYPE_REVOKE_DIALOG (seahorse_gpgme_revoke_dialog_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeRevokeDialog, seahorse_gpgme_revoke_dialog, 28 | SEAHORSE_GPGME, REVOKE_DIALOG, 29 | GtkApplicationWindow) 30 | 31 | GtkWidget * seahorse_gpgme_revoke_dialog_new (SeahorseGpgmeSubkey *subkey, 32 | GtkWindow *parent); 33 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-sign-dialog.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-gpgme-key.h" 25 | #include "pgp/seahorse-gpgme-uid.h" 26 | 27 | #define SEAHORSE_GPGME_TYPE_SIGN_DIALOG (seahorse_gpgme_sign_dialog_get_type ()) 28 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeSignDialog, seahorse_gpgme_sign_dialog, 29 | SEAHORSE_GPGME, SIGN_DIALOG, 30 | GtkApplicationWindow) 31 | 32 | SeahorseGpgmeSignDialog* seahorse_gpgme_sign_dialog_new (SeahorseItem *to_sign); 33 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-subkey-delete-operation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | * 20 | * Author: Stef Walter 21 | */ 22 | 23 | #pragma once 24 | 25 | #include 26 | 27 | #include "seahorse-common.h" 28 | #include "seahorse-gpgme-subkey.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_SUBKEY_DELETE_OPERATION (seahorse_gpgme_subkey_delete_operation_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeSubkeyDeleteOperation, 32 | seahorse_gpgme_subkey_delete_operation, 33 | SEAHORSE_GPGME, SUBKEY_DELETE_OPERATION, 34 | SeahorseDeleteOperation) 35 | 36 | SeahorseDeleteOperation * seahorse_gpgme_subkey_delete_operation_new (SeahorseGpgmeSubkey *subkey); 37 | 38 | void seahorse_gpgme_subkey_delete_operation_add_subkey (SeahorseGpgmeSubkeyDeleteOperation *self, 39 | SeahorseGpgmeSubkey *subkey); 40 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-subkey.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2021 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | #include 24 | 25 | #include 26 | 27 | #include "pgp/seahorse-pgp-subkey.h" 28 | #include "pgp/seahorse-gpgme-key.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_SUBKEY (seahorse_gpgme_subkey_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeSubkey, seahorse_gpgme_subkey, 32 | SEAHORSE_GPGME, SUBKEY, 33 | SeahorsePgpSubkey) 34 | 35 | SeahorseGpgmeSubkey* seahorse_gpgme_subkey_new (SeahorseGpgmeKey *parent_key, 36 | gpgme_subkey_t subkey); 37 | 38 | gpgme_subkey_t seahorse_gpgme_subkey_get_subkey (SeahorseGpgmeSubkey *self); 39 | 40 | void seahorse_gpgme_subkey_set_subkey (SeahorseGpgmeSubkey *self, 41 | gpgme_subkey_t subkey); 42 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme-uid-delete-operation.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | * 20 | * Author: Stef Walter 21 | */ 22 | 23 | #pragma once 24 | 25 | #include 26 | 27 | #include "seahorse-common.h" 28 | #include "seahorse-gpgme-uid.h" 29 | 30 | #define SEAHORSE_GPGME_TYPE_UID_DELETE_OPERATION (seahorse_gpgme_uid_delete_operation_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseGpgmeUidDeleteOperation, 32 | seahorse_gpgme_uid_delete_operation, 33 | SEAHORSE_GPGME, UID_DELETE_OPERATION, 34 | SeahorseDeleteOperation) 35 | 36 | SeahorseGpgmeUidDeleteOperation * 37 | seahorse_gpgme_uid_delete_operation_new (SeahorseGpgmeUid *uid); 38 | 39 | void seahorse_gpgme_uid_delete_operation_add_uid (SeahorseGpgmeUidDeleteOperation *self, 40 | SeahorseGpgmeUid *uid); 41 | -------------------------------------------------------------------------------- /pgp/seahorse-gpgme.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see 19 | * . 20 | */ 21 | 22 | #pragma once 23 | 24 | #include 25 | #include 26 | 27 | #include 28 | 29 | #include "seahorse-common.h" 30 | 31 | typedef struct _SeahorseKeyTypeTable *SeahorseKeyTypeTable; 32 | 33 | struct _SeahorseKeyTypeTable { 34 | int rsa_sign, rsa_enc, dsa_sign, elgamal_enc; 35 | }; 36 | 37 | /* TODO: I think these are extraneous and can be removed. In actuality OK == 0 */ 38 | #define GPG_IS_OK(e) (gpgme_err_code (e) == GPG_ERR_NO_ERROR) 39 | #define GPG_OK (gpgme_error (GPG_ERR_NO_ERROR)) 40 | #define GPG_E(e) (gpgme_error (e)) 41 | 42 | #define SEAHORSE_GPGME_ERROR (seahorse_gpgme_error_domain ()) 43 | 44 | GQuark seahorse_gpgme_error_domain (void); 45 | 46 | gboolean seahorse_gpgme_propagate_error (gpgme_error_t gerr, 47 | GError** error); 48 | 49 | void seahorse_gpgme_handle_error (gpgme_error_t err, 50 | const char *desc, 51 | ...); 52 | 53 | #define SEAHORSE_GPGME_BOXED_KEY (seahorse_gpgme_boxed_key_type ()) 54 | 55 | GType seahorse_gpgme_boxed_key_type (void); 56 | 57 | SeahorseValidity seahorse_gpgme_convert_validity (gpgme_validity_t validity); 58 | 59 | GSource * seahorse_gpgme_gsource_new (gpgme_ctx_t gctx, 60 | GCancellable *cancellable); 61 | -------------------------------------------------------------------------------- /pgp/seahorse-hkp-source.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2005 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | /** 21 | * SeahorseHKPSource: A key source which searches HTTP PGP key servers. 22 | * 23 | * - Derived from SeahorseServerSource. 24 | * - Adds found keys to SeahorseContext. 25 | * - Used by SeahorseServiceDiscovery for retrieving shared keys. 26 | */ 27 | 28 | #pragma once 29 | 30 | #include "config.h" 31 | #include "seahorse-server-source.h" 32 | 33 | #ifdef WITH_HKP 34 | 35 | #define SEAHORSE_TYPE_HKP_SOURCE (seahorse_hkp_source_get_type ()) 36 | G_DECLARE_FINAL_TYPE (SeahorseHKPSource, seahorse_hkp_source, 37 | SEAHORSE, HKP_SOURCE, 38 | SeahorseServerSource) 39 | 40 | SeahorseHKPSource* seahorse_hkp_source_new (const char *uri); 41 | 42 | gboolean seahorse_hkp_is_valid_uri (const char *uri); 43 | 44 | GList * seahorse_hkp_parse_lookup_response (const char *response); 45 | 46 | 47 | #define HKP_ERROR_DOMAIN (seahorse_hkp_error_quark()) 48 | GQuark seahorse_hkp_error_quark (void); 49 | 50 | #endif /* WITH_HKP */ 51 | -------------------------------------------------------------------------------- /pgp/seahorse-keyserver-search.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | * 19 | * Author: Stef Walter 20 | */ 21 | 22 | #pragma once 23 | 24 | #include 25 | 26 | #define SEAHORSE_TYPE_KEYSERVER_SEARCH (seahorse_keyserver_search_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorseKeyserverSearch, seahorse_keyserver_search, 28 | SEAHORSE, KEYSERVER_SEARCH, 29 | AdwDialog) 30 | 31 | SeahorseKeyserverSearch * seahorse_keyserver_search_new (void); 32 | 33 | char * seahorse_keyserver_search_get_search_text (SeahorseKeyserverSearch *self); 34 | -------------------------------------------------------------------------------- /pgp/seahorse-keyserver-sync.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2006 Adam Schreiber 5 | * Copyright (C) 2020 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | #include 24 | 25 | #define SEAHORSE_TYPE_KEYSERVER_SYNC (seahorse_keyserver_sync_get_type ()) 26 | G_DECLARE_FINAL_TYPE (SeahorseKeyserverSync, seahorse_keyserver_sync, 27 | SEAHORSE, KEYSERVER_SYNC, 28 | AdwDialog) 29 | 30 | SeahorseKeyserverSync * seahorse_keyserver_sync_new (GListModel *keys); 31 | -------------------------------------------------------------------------------- /pgp/seahorse-ldap-source.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | /** 21 | * SeahorseHKPSource: A key source which searches LDAP PGP key servers. 22 | * 23 | * - Derived from SeahorseServerSource. 24 | * - Adds found keys to SeahorseContext. 25 | */ 26 | 27 | #pragma once 28 | 29 | #include "seahorse-server-source.h" 30 | 31 | #ifdef WITH_LDAP 32 | 33 | #define SEAHORSE_TYPE_LDAP_SOURCE (seahorse_ldap_source_get_type ()) 34 | G_DECLARE_FINAL_TYPE (SeahorseLDAPSource, seahorse_ldap_source, 35 | SEAHORSE, LDAP_SOURCE, 36 | SeahorseServerSource) 37 | 38 | SeahorseLDAPSource* seahorse_ldap_source_new (const char *uri); 39 | 40 | gboolean seahorse_ldap_is_valid_uri (const char *uri); 41 | 42 | #endif /* WITH_LDAP */ 43 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-actions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see 19 | * . 20 | */ 21 | 22 | #pragma once 23 | 24 | #include 25 | 26 | SeahorseActionGroup * seahorse_pgp_backend_actions_instance (void); 27 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-dialogs.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2003 Jacob Perkins 5 | * Copyright (C) 2004-2005 Stefan Walter 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | /* 22 | * Various UI elements and dialogs used in pgp component. 23 | */ 24 | 25 | #pragma once 26 | 27 | #include 28 | 29 | #include "pgp/seahorse-pgp-key.h" 30 | 31 | SeahorsePgpKey* seahorse_signer_get (GtkWindow *parent); 32 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-key-algorithm.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2025 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | #include 24 | 25 | typedef enum { 26 | SEAHORSE_PGP_KEY_ALGORITHM_RSA, 27 | SEAHORSE_PGP_KEY_ALGORITHM_DSA, 28 | SEAHORSE_PGP_KEY_ALGORITHM_ELGAMAL, 29 | SEAHORSE_PGP_KEY_ALGORITHM_ECC, 30 | SEAHORSE_PGP_KEY_ALGORITHM_ECDSA, 31 | SEAHORSE_PGP_KEY_ALGORITHM_ECDH, 32 | SEAHORSE_PGP_KEY_ALGORITHM_EDDSA, 33 | } SeahorsePgpKeyAlgorithm; 34 | 35 | /* Length ranges for key types */ 36 | typedef enum { 37 | /* Minimum length for #DSA. */ 38 | DSA_MIN = 768, 39 | /* Maximum length for #DSA. */ 40 | DSA_MAX = 3072, 41 | /* Minimum length for #ELGAMAL. Maximum length is #LENGTH_MAX. */ 42 | ELGAMAL_MIN = 768, 43 | /* Minimum length of #RSA_SIGN and #RSA_ENCRYPT. Maximum length is 44 | * #LENGTH_MAX. 45 | */ 46 | RSA_MIN = 1024, 47 | /* Maximum length for #ELGAMAL, #RSA_SIGN, and #RSA_ENCRYPT. */ 48 | LENGTH_MAX = 4096, 49 | /* Default length for #ELGAMAL, #RSA_SIGN, #RSA_ENCRYPT, and #DSA. */ 50 | LENGTH_DEFAULT = 2048, 51 | } SeahorseKeyLength; 52 | 53 | const char * seahorse_pgp_key_algorithm_to_string (SeahorsePgpKeyAlgorithm algo); 54 | 55 | const char * seahorse_pgp_key_algorithm_to_gpgme_string (SeahorsePgpKeyAlgorithm algo); 56 | 57 | gboolean seahorse_pgp_key_algorithm_get_length_values (SeahorsePgpKeyAlgorithm algo, 58 | unsigned int *default_val, 59 | unsigned int *lower, 60 | unsigned int *upper); 61 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-key-panel.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2022 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-pgp-key.h" 25 | 26 | #define SEAHORSE_PGP_TYPE_KEY_PANEL (seahorse_pgp_key_panel_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorsePgpKeyPanel, seahorse_pgp_key_panel, 28 | SEAHORSE_PGP, KEY_PANEL, 29 | SeahorsePanel); 30 | 31 | GtkWidget * seahorse_pgp_key_panel_new (SeahorsePgpKey *pkey); 32 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-keysets.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2022 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see 19 | * . 20 | */ 21 | 22 | #pragma once 23 | 24 | #include 25 | 26 | GListModel * seahorse_keyset_pgp_signers_new (void); 27 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-photo.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #define SEAHORSE_PGP_TYPE_PHOTO (seahorse_pgp_photo_get_type ()) 26 | G_DECLARE_DERIVABLE_TYPE (SeahorsePgpPhoto, seahorse_pgp_photo, 27 | SEAHORSE_PGP, PHOTO, 28 | GObject); 29 | 30 | struct _SeahorsePgpPhotoClass { 31 | GObjectClass parent_class; 32 | }; 33 | 34 | SeahorsePgpPhoto* seahorse_pgp_photo_new (GdkPixbuf *pixbuf); 35 | 36 | GdkPixbuf* seahorse_pgp_photo_get_pixbuf (SeahorsePgpPhoto *self); 37 | 38 | void seahorse_pgp_photo_set_pixbuf (SeahorsePgpPhoto *self, 39 | GdkPixbuf *pixbuf); 40 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-photos-widget.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2025 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "pgp/seahorse-pgp-key.h" 25 | 26 | #define SEAHORSE_PGP_TYPE_PHOTOS_WIDGET (seahorse_pgp_photos_widget_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorsePgpPhotosWidget, seahorse_pgp_photos_widget, 28 | SEAHORSE_PGP, PHOTOS_WIDGET, 29 | GtkWidget); 30 | 31 | GtkWidget * seahorse_pgp_photos_widget_new (SeahorsePgpKey *key); 32 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-photos-widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 64 | 65 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-signature.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "seahorse-common.h" 25 | 26 | #define SEAHORSE_PGP_TYPE_SIGNATURE (seahorse_pgp_signature_get_type ()) 27 | G_DECLARE_DERIVABLE_TYPE (SeahorsePgpSignature, seahorse_pgp_signature, 28 | SEAHORSE_PGP, SIGNATURE, 29 | GObject) 30 | 31 | 32 | struct _SeahorsePgpSignatureClass { 33 | GObjectClass parent_class; 34 | }; 35 | 36 | SeahorsePgpSignature* seahorse_pgp_signature_new (const gchar *keyid); 37 | 38 | const gchar* seahorse_pgp_signature_get_keyid (SeahorsePgpSignature *self); 39 | 40 | void seahorse_pgp_signature_set_keyid (SeahorsePgpSignature *self, 41 | const gchar *keyid); 42 | 43 | guint seahorse_pgp_signature_get_flags (SeahorsePgpSignature *self); 44 | 45 | void seahorse_pgp_signature_set_flags (SeahorsePgpSignature *self, 46 | guint flags); 47 | 48 | guint seahorse_pgp_signature_get_sigtype (SeahorsePgpSignature *self); 49 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-subkey-list-box.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2021 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | #include 24 | 25 | #include "seahorse-common.h" 26 | #include "seahorse-pgp-types.h" 27 | 28 | #define SEAHORSE_PGP_TYPE_SUBKEY_LIST_BOX (seahorse_pgp_subkey_list_box_get_type ()) 29 | G_DECLARE_FINAL_TYPE (SeahorsePgpSubkeyListBox, seahorse_pgp_subkey_list_box, 30 | SEAHORSE_PGP, SUBKEY_LIST_BOX, 31 | AdwPreferencesGroup) 32 | 33 | GtkWidget * seahorse_pgp_subkey_list_box_new (SeahorsePgpKey *key); 34 | 35 | SeahorsePgpKey * seahorse_pgp_subkey_list_box_get_key (SeahorsePgpSubkeyListBox *self); 36 | 37 | #define SEAHORSE_PGP_TYPE_SUBKEY_LIST_BOX_ROW (seahorse_pgp_subkey_list_box_row_get_type ()) 38 | G_DECLARE_FINAL_TYPE (SeahorsePgpSubkeyListBoxRow, seahorse_pgp_subkey_list_box_row, 39 | SEAHORSE_PGP, SUBKEY_LIST_BOX_ROW, 40 | AdwExpanderRow) 41 | 42 | SeahorsePgpSubkey * seahorse_pgp_subkey_list_box_row_get_subkey (SeahorsePgpSubkeyListBoxRow *self); 43 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-subkey-usage.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2025 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #include "config.h" 22 | 23 | #include "seahorse-pgp-subkey-usage.h" 24 | 25 | #include 26 | 27 | const char * 28 | seahorse_pgp_subkey_usage_to_string (SeahorsePgpSubkeyUsage usage) 29 | { 30 | switch (usage) { 31 | case SEAHORSE_PGP_SUBKEY_USAGE_DEFAULT: 32 | return _("All Usages"); 33 | case SEAHORSE_PGP_SUBKEY_USAGE_SIGN_ONLY: 34 | return _("Sign Only"); 35 | case SEAHORSE_PGP_SUBKEY_USAGE_ENCRYPT_ONLY: 36 | return _("Encrypt Only"); 37 | } 38 | 39 | g_return_val_if_reached (NULL); 40 | } 41 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-subkey-usage.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2025 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | typedef enum { 24 | SEAHORSE_PGP_SUBKEY_USAGE_DEFAULT, 25 | SEAHORSE_PGP_SUBKEY_USAGE_SIGN_ONLY, 26 | SEAHORSE_PGP_SUBKEY_USAGE_ENCRYPT_ONLY, 27 | } SeahorsePgpSubkeyUsage; 28 | 29 | const char * seahorse_pgp_subkey_usage_to_string (SeahorsePgpSubkeyUsage usage); 30 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2020 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | * 20 | * Author: Niels De Graef 21 | */ 22 | 23 | #pragma once 24 | 25 | #include 26 | 27 | G_BEGIN_DECLS 28 | 29 | /* Common forward declarations */ 30 | typedef struct _SeahorsePgpKey SeahorsePgpKey; 31 | typedef struct _SeahorsePgpSubkey SeahorsePgpSubkey; 32 | typedef struct _SeahorsePgpUid SeahorsePgpUid; 33 | typedef struct _SeahorsePgpPhoto SeahorsePgpPhoto; 34 | typedef struct _SeahorsePgpSignature SeahorsePgpSignature; 35 | 36 | G_END_DECLS 37 | -------------------------------------------------------------------------------- /pgp/seahorse-pgp-uid-list-box.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2021 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "seahorse-pgp-uid.h" 25 | 26 | #define SEAHORSE_PGP_TYPE_UID_LIST_BOX (seahorse_pgp_uid_list_box_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorsePgpUidListBox, seahorse_pgp_uid_list_box, 28 | SEAHORSE_PGP, UID_LIST_BOX, 29 | AdwPreferencesGroup) 30 | 31 | #define SEAHORSE_PGP_TYPE_UID_LIST_BOX_ROW (seahorse_pgp_uid_list_box_row_get_type ()) 32 | G_DECLARE_FINAL_TYPE (SeahorsePgpUidListBoxRow, seahorse_pgp_uid_list_box_row, 33 | SEAHORSE_PGP, UID_LIST_BOX_ROW, 34 | AdwExpanderRow) 35 | 36 | GtkWidget * seahorse_pgp_uid_list_box_new (SeahorsePgpKey *key); 37 | -------------------------------------------------------------------------------- /pgp/seahorse-transfer.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2006 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | #include "seahorse-common.h" 24 | 25 | #include "seahorse-server-source.h" 26 | 27 | void seahorse_transfer_keyids_async (SeahorseServerSource *from, 28 | SeahorsePlace *to, 29 | const char **keyids, 30 | GCancellable *cancellable, 31 | GAsyncReadyCallback callback, 32 | gpointer user_data); 33 | 34 | void seahorse_transfer_keys_async (SeahorsePlace *from, 35 | SeahorsePlace *to, 36 | GList *keys, 37 | GCancellable *cancellable, 38 | GAsyncReadyCallback callback, 39 | gpointer user_data); 40 | 41 | gboolean seahorse_transfer_finish (GAsyncResult *result, 42 | GError **error); 43 | -------------------------------------------------------------------------------- /pgp/seahorse-unknown-source.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2006 Stefan Walter 5 | * Copyright (C) 2011 Collabora Ltd. 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #pragma once 22 | 23 | #include "seahorse-common.h" 24 | #include "seahorse-unknown.h" 25 | 26 | #define SEAHORSE_TYPE_UNKNOWN_SOURCE (seahorse_unknown_source_get_type ()) 27 | G_DECLARE_FINAL_TYPE (SeahorseUnknownSource, seahorse_unknown_source, 28 | SEAHORSE, UNKNOWN_SOURCE, 29 | GObject) 30 | 31 | SeahorseUnknownSource * seahorse_unknown_source_new (void); 32 | 33 | SeahorseUnknown * seahorse_unknown_source_add_object (SeahorseUnknownSource *self, 34 | const char *keyid, 35 | GCancellable *cancellable); 36 | -------------------------------------------------------------------------------- /pgp/seahorse-unknown.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2006 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #pragma once 21 | 22 | #include 23 | 24 | #include "seahorse-common.h" 25 | 26 | /* Solve a circular include */ 27 | typedef struct _SeahorseUnknownSource SeahorseUnknownSource; 28 | 29 | 30 | #define SEAHORSE_TYPE_UNKNOWN (seahorse_unknown_get_type ()) 31 | G_DECLARE_FINAL_TYPE (SeahorseUnknown, seahorse_unknown, SEAHORSE, UNKNOWN, GObject) 32 | 33 | SeahorseUnknown * seahorse_unknown_new (SeahorseUnknownSource *usrc, 34 | const char *keyid, 35 | const char *display); 36 | 37 | const char * seahorse_unknown_get_keyid (SeahorseUnknown *self); 38 | -------------------------------------------------------------------------------- /pgp/seahorse-xloadimage.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2005 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #include 21 | #include 22 | 23 | #define BUF_SIZE 4096 24 | 25 | int main (int argc, char* argv[]) 26 | { 27 | unsigned char buf[BUF_SIZE]; 28 | const char* fname; 29 | size_t len; 30 | FILE* f; 31 | 32 | fname = getenv ("SEAHORSE_IMAGE_FILE"); 33 | if (!fname) { 34 | fprintf (stderr, "seahorse-xloadimage: specify output file in $SEAHORSE_IMAGE_FILE\n"); 35 | exit (2); 36 | } 37 | 38 | f = fopen (fname, "wb"); 39 | if (!f) { 40 | fprintf (stderr, "seahorse-xloadimage: couldn't open output file: %s", fname); 41 | exit (1); 42 | } 43 | 44 | do { 45 | len = fread (buf, sizeof(unsigned char), BUF_SIZE, stdin); 46 | } while (fwrite (buf, sizeof(unsigned char), len, f) == BUF_SIZE); 47 | 48 | if (ferror (f)) { 49 | fprintf (stderr, "seahorse-xloadimage: couldn't write to output file: %s", fname); 50 | exit (1); 51 | } 52 | 53 | fclose(f); 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /pgp/test-ldap-source.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2021 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | 20 | #include "seahorse-ldap-source.h" 21 | #include "seahorse-pgp-key.h" 22 | #include "seahorse-pgp-uid.h" 23 | 24 | #include 25 | 26 | static void 27 | test_ldap_is_valid_uri (void) 28 | { 29 | g_assert_true (seahorse_ldap_is_valid_uri ("ldap://keyserver.pgp.com")); 30 | 31 | /* Invalid URL */ 32 | g_assert_false (seahorse_ldap_is_valid_uri ("test")); 33 | 34 | /* Missing scheme */ 35 | g_assert_false (seahorse_ldap_is_valid_uri ("keyserver.pgp.com")); 36 | 37 | /* Wrong scheme */ 38 | g_assert_false (seahorse_ldap_is_valid_uri ("hkp://keys.openpgp.org")); 39 | } 40 | 41 | int 42 | main (int argc, char **argv) 43 | { 44 | g_test_init (&argc, &argv, NULL); 45 | 46 | g_test_add_func ("/ldap/valid-uri", test_ldap_is_valid_uri); 47 | 48 | return g_test_run (); 49 | } 50 | -------------------------------------------------------------------------------- /pkcs11/meson.build: -------------------------------------------------------------------------------- 1 | pkcs11_sources = files( 2 | 'certificate-der-export-operation.vala', 3 | 'pkcs11-certificate.vala', 4 | 'pkcs11-certificate-widget.vala', 5 | 'pkcs11-cert-key-pair.vala', 6 | 'pkcs11-cert-key-pair-panel.vala', 7 | 'pkcs11-delete-operation.vala', 8 | 'pkcs11-generate.vala', 9 | 'pkcs11-module.vala', 10 | 'pkcs11-private-key.vala', 11 | 'pkcs11-private-key-widget.vala', 12 | 'pkcs11-request-certificate-dialog.vala', 13 | 'pkcs11-token.vala', 14 | 'pkcs11-token-filter.vala', 15 | 'pkcs11-token-panel.vala', 16 | 17 | 'seahorse-pkcs11-backend.c', 18 | ) 19 | 20 | pkcs11_deps = [ 21 | glib_deps, 22 | common_dep, 23 | pkcs11_dep, 24 | ] 25 | 26 | pkcs11_vala_args = [ 27 | '--gresources', resources_xml, 28 | ] 29 | 30 | pkcs11_c_args = [ 31 | vala_workaround_cflags, 32 | ] 33 | 34 | pkcs11_lib = static_library('seahorse-pkcs11', 35 | pkcs11_sources, 36 | dependencies: pkcs11_deps, 37 | vala_args: pkcs11_vala_args, 38 | c_args: pkcs11_c_args, 39 | ) 40 | 41 | pkcs11_dep = declare_dependency( 42 | link_with: pkcs11_lib, 43 | include_directories: include_directories('.'), 44 | ) 45 | -------------------------------------------------------------------------------- /pkcs11/pkcs11-cert-key-pair-panel.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | Request Certificate 7 | panel.request-certificate 8 | action-disabled 9 | 10 | 11 | Export 12 | panel.export 13 | 14 |
15 |
16 | 17 | Delete 18 | panel.delete 19 | 20 |
21 |
22 | 23 | 40 |
41 | -------------------------------------------------------------------------------- /pkcs11/pkcs11-delete-operation.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2013 Red Hat Inc. 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, write to the Free Software 18 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 19 | * 02111-1307, USA. 20 | * 21 | * Author: Stef Walter 22 | */ 23 | 24 | public class Seahorse.Pkcs11.DeleteOperation : Seahorse.DeleteOperation { 25 | 26 | public DeleteOperation(CertKeyPair pair) { 27 | this.items.add(pair); 28 | } 29 | 30 | public override async bool execute(Cancellable? cancellable) throws GLib.Error { 31 | debug("Deleting %u PKCS#11 objects", this.items.length); 32 | foreach (unowned var item in this.items) { 33 | var pair = (CertKeyPair) item; 34 | unowned var token = (Token?) pair.token; 35 | 36 | try { 37 | if (pair.certificate != null) { 38 | yield pair.certificate.destroy_async(cancellable); 39 | if (token != null) 40 | token.remove_object(pair.certificate); 41 | } 42 | if (pair.private_key != null) { 43 | yield pair.private_key.destroy_async(cancellable); 44 | if (token != null) 45 | token.remove_object(pair.private_key); 46 | } 47 | 48 | } catch (GLib.Error e) { 49 | /* Ignore objects that have gone away */ 50 | if (e.domain != Gck.Error.quark() || 51 | e.code != CKR.OBJECT_HANDLE_INVALID) 52 | throw e; 53 | } 54 | } 55 | return true; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /pkcs11/pkcs11-module.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2011 Collabora Ltd. 5 | * Copyright (C) 2012 Stefan Walter 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see . 18 | * 19 | * Author: Stef Walter 20 | */ 21 | 22 | namespace Seahorse { 23 | 24 | public const string PKCS11_NAME = "pkcs11"; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /pkcs11/pkcs11-private-key-widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 38 | 39 | -------------------------------------------------------------------------------- /pkcs11/pkcs11-token-filter.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2022 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the 17 | * Free Software Foundation, Inc., 18 | * 59 Temple Place, Suite 330, 19 | * Boston, MA 02111-1307, USA. 20 | */ 21 | 22 | public class Seahorse.Pkcs11.TokenFilter : Gtk.Filter { 23 | 24 | /** If set, only match tokens that are writable */ 25 | public bool only_writable { 26 | get { return this._only_writable; } 27 | set { 28 | if (this._only_writable != value) { 29 | this._only_writable = value; 30 | changed(Gtk.FilterChange.DIFFERENT); 31 | } 32 | } 33 | } 34 | private bool _only_writable = false; 35 | 36 | /** If not MAXUINT, only match token that have the mechanism */ 37 | public ulong mechanism { 38 | get { return this._mechanism; } 39 | set { 40 | if (this._mechanism == value) 41 | return; 42 | 43 | this._mechanism = value; 44 | changed(Gtk.FilterChange.DIFFERENT); 45 | } 46 | } 47 | public ulong _mechanism = ulong.MAX; 48 | 49 | public override bool match (GLib.Object? item) { 50 | var token = (Pkcs11.Token) item; 51 | if (this.only_writable && (CKF.WRITE_PROTECTED & token.info.flags) != 0) 52 | return false; 53 | 54 | if (this.mechanism != uint.MAX && !token.has_mechanism(this.mechanism)) 55 | return false; 56 | 57 | return true; 58 | } 59 | 60 | public override Gtk.FilterMatch get_strictness () { 61 | return Gtk.FilterMatch.SOME; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /pkcs11/seahorse-pkcs11-backend.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU Lesser General Public License as 8 | * published by the Free Software Foundation; either version 2.1 of 9 | * the License, or (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, but 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with this program; if not, see 18 | * . 19 | */ 20 | 21 | #ifndef SEAHORSE_PKCS11_BACKEND_H_ 22 | #define SEAHORSE_PKCS11_BACKEND_H_ 23 | 24 | #include 25 | 26 | #define SEAHORSE_PKCS11_STR "pkcs11" 27 | #define SEAHORSE_PKCS11 (g_quark_from_static_string (SEAHORSE_PKCS11_STR)) 28 | 29 | #define SEAHORSE_TYPE_PKCS11_BACKEND (seahorse_pkcs11_backend_get_type ()) 30 | G_DECLARE_FINAL_TYPE (SeahorsePkcs11Backend, seahorse_pkcs11_backend, SEAHORSE, PKCS11_BACKEND, GObject) 31 | 32 | SeahorsePkcs11Backend * seahorse_pkcs11_backend_get (void); 33 | 34 | void seahorse_pkcs11_backend_initialize (void); 35 | 36 | #endif /* SEAHORSE_PKCS11_BACKEND_H_ */ 37 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | # please keep this list sorted alphabetically 2 | # 3 | ab 4 | ar 5 | as 6 | ast 7 | az 8 | be 9 | be@latin 10 | bg 11 | bn 12 | bn_IN 13 | br 14 | bs 15 | ca 16 | ca@valencia 17 | cs 18 | cy 19 | da 20 | de 21 | dz 22 | el 23 | en_CA 24 | en_GB 25 | en@shaw 26 | eo 27 | es 28 | et 29 | eu 30 | fa 31 | fi 32 | fr 33 | fur 34 | ga 35 | gd 36 | gl 37 | gu 38 | he 39 | hi 40 | hr 41 | hu 42 | id 43 | ie 44 | is 45 | it 46 | ja 47 | ka 48 | kk 49 | kn 50 | ko 51 | ku 52 | lt 53 | lv 54 | mai 55 | mk 56 | ml 57 | mr 58 | ms 59 | nb 60 | ne 61 | nl 62 | nn 63 | oc 64 | or 65 | pa 66 | pl 67 | pt 68 | pt_BR 69 | ro 70 | ru 71 | rw 72 | si 73 | sk 74 | sl 75 | sq 76 | sr 77 | sr@latin 78 | sv 79 | ta 80 | te 81 | tg 82 | th 83 | tr 84 | ug 85 | uk 86 | uz 87 | vi 88 | zh_CN 89 | zh_HK 90 | zh_TW 91 | -------------------------------------------------------------------------------- /po/POTFILES.skip: -------------------------------------------------------------------------------- 1 | # List of source files that should *not* be translated. 2 | # Please keep this file sorted alphabetically. 3 | common/add-keyserver-dialog.c 4 | common/catalog.c 5 | common/datepicker.c 6 | common/delete-dialog.c 7 | common/delete-operation.c 8 | common/exportable.c 9 | common/interaction.c 10 | common/keyserver-dropdown.c 11 | common/object.c 12 | common/passphrase-prompt.c 13 | common/place.c 14 | common/prefs-keyservers.c 15 | common/prefs.c 16 | common/server-category.c 17 | common/util.c 18 | common/validity.c 19 | data/org.gnome.Seahorse.desktop.in 20 | data/org.gnome.Seahorse.metainfo.xml.in 21 | gkr/add-item-dialog.c 22 | gkr/add-keyring-dialog.c 23 | gkr/gkr-backend.c 24 | gkr/gkr-item-info.c 25 | gkr/gkr-item-panel.c 26 | gkr/gkr-item.c 27 | gkr/gkr-keyring-delete-operation.c 28 | gkr/gkr-keyring-panel.c 29 | gkr/gkr-keyring.c 30 | gkr/gkr-password-entry.c 31 | pkcs11/certificate-der-export-operation.c 32 | pkcs11/certificate-der-exporter.c 33 | pkcs11/pkcs11-cert-key-pair-panel.c 34 | pkcs11/pkcs11-cert-key-pair.c 35 | pkcs11/pkcs11-certificate-widget.c 36 | pkcs11/pkcs11-certificate.c 37 | pkcs11/pkcs11-generate.c 38 | pkcs11/pkcs11-private-key-widget.c 39 | pkcs11/pkcs11-private-key.c 40 | pkcs11/pkcs11-request-certificate-dialog.c 41 | pkcs11/pkcs11-token-panel.c 42 | pkcs11/pkcs11-token.c 43 | src/application.c 44 | src/import-dialog.c 45 | src/key-manager.c 46 | src/main.c 47 | src/prefs-dialog.c 48 | src/search-provider.c 49 | src/sidebar.c 50 | ssh/actions.c 51 | ssh/algorithm.c 52 | ssh/backend.c 53 | ssh/errors.c 54 | ssh/exporter.c 55 | ssh/generate-key-dialog.c 56 | ssh/key-data.c 57 | ssh/key-export-operation.c 58 | ssh/key-length-chooser.c 59 | ssh/key-panel.c 60 | ssh/key.c 61 | ssh/operation.c 62 | ssh/seahorse-ssh-askpass.c 63 | ssh/source.c 64 | ssh/ssh.c 65 | ssh/upload.c 66 | # We need to keep this in for a while for Damned Lies 67 | subprojects/libhandy 68 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n.gettext(meson.project_name(), 2 | preset: 'glib' 3 | ) 4 | -------------------------------------------------------------------------------- /seahorse.doap: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | seahorse 9 | A password and encryption key manager 10 | Seahorse is a graphical interface for managing and using encryption keys. 11 | Currently it supports PGP keys (using GPG/GPGME) and SSH keys. Its goal is to 12 | provide an easy to use Key Management Tool, along with an easy to use interface 13 | for encryption operations. 14 | 15 | 16 | 17 | 18 | 19 | 20 | C 21 | Vala 22 | 23 | 24 | 25 | Niels De Graef 26 | 27 | nielsdg 28 | 29 | 30 | 31 | 32 | Daiki Ueno 33 | 34 | dueno 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/key-manager-item-row.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 53 | 54 | -------------------------------------------------------------------------------- /src/main.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2003 Jacob Perkins 5 | * Copyright (C) 2004,2005 Stefan Walter 6 | * Copyright (C) 2017 Niels De Graef 7 | * 8 | * This program is free software; you can redistribute it and/or modify 9 | * it under the terms of the GNU General Public License as published by 10 | * the Free Software Foundation; either version 2 of the License, or 11 | * (at your option) any later version. 12 | * 13 | * This program is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 16 | * See the GNU General Public License for more details. 17 | * You should have received a copy of the GNU General Public License 18 | * along with this program; if not, see 19 | * . 20 | */ 21 | 22 | public int main (string[] args) { 23 | Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); 24 | Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); 25 | Intl.textdomain(Config.GETTEXT_PACKAGE); 26 | 27 | Seahorse.Application app = new Seahorse.Application(); 28 | return app.run(args); 29 | } 30 | -------------------------------------------------------------------------------- /src/meson.build: -------------------------------------------------------------------------------- 1 | search_provider_src = gnome.gdbus_codegen('seahorse-shell-search-provider-generated', 2 | 'org.gnome.ShellSearchProvider2.xml', 3 | interface_prefix : 'org.gnome.', 4 | namespace : 'Seahorse', 5 | ) 6 | 7 | seahorse_sources = [ 8 | 'application.vala', 9 | 'import-dialog.vala', 10 | 'key-manager.vala', 11 | 'key-manager-filter.vala', 12 | 'key-manager-item-row.vala', 13 | 'main.vala', 14 | 'prefs-dialog.vala', 15 | 'search-provider.vala', 16 | 'sidebar.vala', 17 | 18 | resources_src, 19 | search_provider_src, 20 | ] 21 | 22 | seahorse_dependencies = [ 23 | pkcs11_dep, 24 | glib_deps, 25 | gtk4_dep, 26 | libadwaita_dep, 27 | libsecret, 28 | common_dep, 29 | libseahorse_dep, 30 | gkr_dep, 31 | ssh_dep, 32 | ] 33 | 34 | seahorse_c_flags = [ 35 | '-DHANDY_USE_UNSTABLE_API', 36 | vala_workaround_cflags, 37 | ] 38 | 39 | seahorse_vala_flags = [ 40 | ] 41 | 42 | if get_option('keyservers-support') 43 | seahorse_vala_flags += [ '-D', 'WITH_KEYSERVER' ] 44 | endif 45 | if get_option('pgp-support') 46 | seahorse_dependencies += pgp_dep 47 | seahorse_vala_flags += [ '-D', 'WITH_PGP' ] 48 | endif 49 | if get_option('pkcs11-support') 50 | seahorse_dependencies += pkcs11_dep 51 | seahorse_vala_flags += [ '-D', 'WITH_PKCS11' ] 52 | endif 53 | 54 | 55 | seahorse_exe = executable('seahorse', 56 | seahorse_sources, 57 | dependencies: seahorse_dependencies, 58 | vala_args: seahorse_vala_flags, 59 | c_args: seahorse_c_flags, 60 | install: true, 61 | ) 62 | -------------------------------------------------------------------------------- /src/prefs-dialog.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2004-2005 Stefan Walter 5 | * Copyright (C) 2017 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU General Public License as published by 9 | * the Free Software Foundation; either version 2 of the License, or 10 | * (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | * See the GNU General Public License for more details. 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program; if not, see 18 | * . 19 | */ 20 | 21 | public class Seahorse.PrefsDialog : Adw.PreferencesDialog { 22 | 23 | /** Create a new preferences Dialog */ 24 | public PrefsDialog() { 25 | GLib.Object ( 26 | title: _("Preferences"), 27 | search_enabled: false 28 | ); 29 | 30 | #if WITH_KEYSERVER 31 | add (new PrefsKeyservers()); 32 | #endif 33 | } 34 | 35 | /** Returns whether there are any preferences to show */ 36 | public static bool available() { 37 | #if WITH_KEYSERVER 38 | return true; 39 | #else 40 | return false; 41 | #endif 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/seahorse-key-manager-widgets.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | Copy secret 8 | gkr.copy-secret 9 | action-disabled 10 | 11 | 12 | Export… 13 | win.file-export 14 | action-disabled 15 | 16 | 17 | 18 | Delete 19 | win.edit-delete 20 | action-disabled 21 | 22 |
23 |
24 | 25 | Properties 26 | win.properties-object 27 | 28 | 29 | Configure Key for Secure Shell… 30 | ssh.remote-upload 31 | action-disabled 32 | 33 |
34 |
35 |
36 | -------------------------------------------------------------------------------- /ssh/errors.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2016 Niels De Graef 5 | * 6 | * This program is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * This program is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | * See the GNU General Public License for more details. 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, see 17 | * . 18 | */ 19 | public errordomain Seahorse.Ssh.Error { 20 | GENERAL 21 | } 22 | -------------------------------------------------------------------------------- /ssh/meson.build: -------------------------------------------------------------------------------- 1 | ssh_sources = files( 2 | 'actions.vala', 3 | 'algorithm.vala', 4 | 'backend.vala', 5 | 'errors.vala', 6 | 'generate-key-dialog.vala', 7 | 'key-data.vala', 8 | 'key-delete-operation.vala', 9 | 'key-export-operation.vala', 10 | 'key-length-chooser.vala', 11 | 'key-panel.vala', 12 | 'key.vala', 13 | 'operation.vala', 14 | 'source.vala', 15 | 'ssh.vala', 16 | 'upload-remote-dialog.vala', 17 | ) 18 | 19 | ssh_dependencies = [ 20 | glib_deps, 21 | gcr4_dep, 22 | posix, 23 | gtk4_dep, 24 | common_dep, 25 | libseahorse_dep, 26 | ] 27 | 28 | ssh_vala_args = [ 29 | '--gresources', resources_xml, 30 | ] 31 | 32 | ssh_c_args = [ 33 | vala_workaround_cflags, 34 | ] 35 | 36 | ssh_lib = static_library('seahorse-ssh', 37 | ssh_sources, 38 | vala_args: ssh_vala_args, 39 | c_args: ssh_c_args, 40 | dependencies: ssh_dependencies, 41 | ) 42 | 43 | ssh_dep = declare_dependency( 44 | link_with: ssh_lib, 45 | include_directories: include_directories('.'), 46 | ) 47 | 48 | # ssh-askpass helper binary 49 | ssh_askpass_sources = files( 50 | 'seahorse-ssh-askpass.vala', 51 | ) 52 | 53 | ssh_askpass_dependencies = [ 54 | gcr4_dep, 55 | gtk4_dep, 56 | config, 57 | common_dep, 58 | posix, 59 | ] 60 | 61 | ssh_askpass = executable('ssh-askpass', 62 | [ ssh_askpass_sources, resources_src, ], 63 | dependencies: ssh_askpass_dependencies, 64 | install: true, 65 | install_dir: libexecbindir, 66 | ) 67 | 68 | # Tests 69 | ssh_test_names = [ 70 | 'key-parse', 71 | ] 72 | 73 | foreach _test : ssh_test_names 74 | test_bin = executable(_test, 75 | files('test-@0@.vala'.format(_test)), 76 | c_args: vala_workaround_cflags, 77 | dependencies: [ 78 | ssh_dep, 79 | ssh_dependencies, 80 | ], 81 | include_directories: include_directories('..'), 82 | ) 83 | 84 | test(_test, test_bin, 85 | suite: 'ssh', 86 | ) 87 | endforeach 88 | -------------------------------------------------------------------------------- /ssh/ssh.vala: -------------------------------------------------------------------------------- 1 | /* 2 | * Seahorse 3 | * 4 | * Copyright (C) 2008 Stefan Walter 5 | * Copyright (C) 2016 Niels De Graef 6 | * 7 | * This program is free software; you can redistribute it and/or modify 8 | * it under the terms of the GNU Lesser General Public License as 9 | * published by the Free Software Foundation; either version 2.1 of 10 | * the License, or (at your option) any later version. 11 | * 12 | * This program is distributed in the hope that it will be useful, but 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with this program; if not, see 19 | * . 20 | */ 21 | 22 | namespace Seahorse.Ssh { 23 | 24 | public const string SEAHORSE_SSH_NAME = "openssh"; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /vapi/libqrencode.vapi: -------------------------------------------------------------------------------- 1 | /* qrencode.vapi 2 | * 3 | * Copyright (C) 2015 Ignacio Casal Quinteiro 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public License 7 | * as published by the Free Software Foundation; either version 2.1 of 8 | * the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, but 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18 | * 02110-1301 USA 19 | * 20 | * As a special exception, if you use inline functions from this file, 21 | * this file does not by itself cause the resulting executable to be 22 | * covered by the GNU Lesser General Public License. 23 | */ 24 | namespace QRencode { 25 | [CCode (cheader_filename = "qrencode.h", cname = "QRcode", unref_function = "QRcode_free")] 26 | public class QRcode { 27 | [CCode (cname = "QRcode_encodeString")] 28 | public QRcode.encodeString(string digits, int version, EcLevel level, Mode hint, int casesensitive); 29 | 30 | public int version; 31 | public int width; 32 | [CCode (array_length = false)] 33 | public uint8[] data; 34 | } 35 | 36 | [CCode (cheader_filename = "qrencode.h", cname="QRencLevel")] 37 | public enum EcLevel { 38 | [CCode (cname="QR_ECLEVEL_L")] 39 | L, 40 | [CCode (cname="QR_ECLEVEL_M")] 41 | M, 42 | [CCode (cname="QR_ECLEVEL_Q")] 43 | Q, 44 | [CCode (cname="QR_ECLEVEL_H")] 45 | H 46 | } 47 | 48 | [CCode (cheader_filename = "qrencode.h", cname="QRencodeMode")] 49 | public enum Mode { 50 | [CCode (cname="QR_MODE_NUL")] 51 | NUL, 52 | [CCode (cname="QR_MODE_NUM")] 53 | NUM, 54 | [CCode (cname="QR_MODE_AN")] 55 | AN, 56 | [CCode (cname="QR_MODE_8")] 57 | B8, 58 | [CCode (cname="QR_MODE_KANJI")] 59 | KANJI, 60 | [CCode (cname="QR_MODE_STRUCTURE")] 61 | STRUCTURE 62 | } 63 | } 64 | --------------------------------------------------------------------------------