pax_global_header00006660000000000000000000000064126670162440014522gustar00rootroot0000000000000052 comment=99776ee97399ac723b7d687db43bd9a0bd8871eb enigmail/000077500000000000000000000000001266701624400126535ustar00rootroot00000000000000enigmail/.eslintrc.js000066400000000000000000000026511266701624400151160ustar00rootroot00000000000000module.exports = { "rules": { "linebreak-style": [ 2, "unix" ], "semi": [ 2, "always" ], "strict": [2, "global"], "no-unused-vars": 0, "no-empty": 0, "comma-dangle": 0, "consistent-return": 2, "block-scoped-var": 2, "dot-notation": 2, "no-alert": 2, "no-caller": 2, "no-case-declarations": 2, "no-div-regex": 2, "no-empty-label": 2, "no-empty-pattern": 2, "no-eq-null": 2, "no-eval": 2, "no-extend-native": 2, "no-extra-bind": 2, "no-fallthrough": 2, "no-floating-decimal": 2, "no-implicit-coercion": 2, "no-implied-eval": 2, "no-invalid-this": 2, "no-iterator": 2, "no-labels": 2, "no-lone-blocks": 2, "no-loop-func": 2, "no-multi-str": 2, "no-native-reassign": 2, "no-new-func": 2, "no-new-wrappers": 2, "no-new": 2, "no-octal-escape": 2, "no-process-env": 2, "no-proto": 2, "no-redeclare": [2, { "builtinGlobals": true }], "no-return-assign": 2, "no-script-url": 2, "no-self-compare": 2, "no-sequences": 2, "no-unused-expressions": 2, "no-useless-call": 2, "no-useless-concat": 2, "no-void": 2, "no-with": 2, "radix": 2, "wrap-iife": [2, "inside"], "yoda": 2, // TODO: //"eqeqeq": 2, }, "env": { "es6": true, "browser": true, "node": true, }, "extends": "eslint:recommended" }; enigmail/.gitattributes000066400000000000000000000000531266701624400155440ustar00rootroot00000000000000*.xul text *.rdf text *.js text *.jsm text enigmail/.gitignore000066400000000000000000000007021266701624400146420ustar00rootroot00000000000000# generated files: *.pyc *.dtd.gen *.properties.gen /config.log /config.status /config/autoconf.mk /build /ui/content/enigmailBuildDate.js /ipc/src/subprocess.o /public/_xpidlgen ipc/src/libsubprocess-*.dylib ipc/src/libsubprocess-*.so /test_output.log /ipc/tests/ipc-data.txt # vi tmp files: *.swp *.swo # emacs tmp files: \#*\# .dir-locals.el # backup files: *~ # vagrant files: provisioning/.vagrant # other local configuration files: .ackrc enigmail/.jsbeautifyrc000066400000000000000000000011501266701624400153430ustar00rootroot00000000000000{ "indent_size": 2, "indent_char": " ", "eol": "\n", "indent_level": 0, "indent_with_tabs": false, "preserve_newlines": true, "max_preserve_newlines": 10, "jslint_happy": false, "space_after_anon_function": false, "brace_style": "end-expand", "keep_array_indentation": false, "keep_function_indentation": false, "space_before_conditional": true, "break_chained_methods": false, "eval_code": false, "unescape_strings": false, "wrap_line_length": 0, "wrap_attributes": "auto", "wrap_attributes_indent_size": 4, "end_with_newline": true } enigmail/.travis.yml000066400000000000000000000005211266701624400147620ustar00rootroot00000000000000language: c sudo: required compiler: - gcc install: provisioning/provision-travis.sh script: - ./configure - make > /dev/null 2>&1 - Xvfb :99 >/dev/null 2>&1 & - export DISPLAY=:99 - ./configure --enable-tests --with-tb-path=$(which thunderbird) - make - ./build.sh - ./test.sh after_failure: - cat test_output.log enigmail/COMPILING000066400000000000000000000010141266701624400141130ustar00rootroot00000000000000Instructions for compiling and packaging Enigmail ================================================= Prerequisites ------------- In order to build Enigmail you will need the following helper tools: - GNU make 3.81 or newer - zip - python 2.7 or newer - perl 5 or newer If you want to execute unit tests, you will also need: - eslint (installable via node.js / npm, see http://eslint.org) Building -------- Execute the following commands: ./configure make The resulting XPI file can be found in the "build" directory. enigmail/Makefile000066400000000000000000000020251266701624400143120ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. XPI_MODULE = enigmail XPI_MODULE_VERS = 1.9.1 DEPTH = . include $(DEPTH)/config/autoconf.mk DIRS = ipc public DIRS += ui package lang ALL = dirs xpi ifeq ($(TESTS),yes) ALL += test endif XPIFILE = $(XPI_MODULE)-$(XPI_MODULE_VERS).xpi .PHONY: dirs $(DIRS) test all: $(ALL) dirs: $(DIRS) $(DIRS): $(MAKE) -C $@ xpi: $(srcdir)/util/genxpi $(XPIFILE) $(XPI_MODULE_VERS) $(DIST) $(srcdir) $(XPI_MODULE) $(ENABLE_LANG) check: util/checkFiles.py eslint: static_analysis/eslint ipc static_analysis/eslint package static_analysis/eslint ui unit: make -C package/tests make -C ui/tests test: eslint check unit clean: rm -f build/$(XPIFILE) for dir in $(DIRS); do \ if [ "$${dir}x" != "checkx" ]; then \ $(MAKE) -C $$dir clean; fi; \ done distclean: clean rm -rf build/* rm -f config/autoconf.mk config.log config.status enigmail/build.sh000077500000000000000000000005031266701624400143070ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # export TB_PATH=${TB_PATH:-`which thunderbird`} make clean ./configure --with-tb-path=$TB_PATH make enigmail/config.guess000077500000000000000000001271661266701624400152100ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-02-12' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: enigmail/config.sub000077500000000000000000001052571266701624400146500ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-02-12' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 \ | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or1k-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: enigmail/config/000077500000000000000000000000001266701624400141205ustar00rootroot00000000000000enigmail/config/autoconf.mk.in000066400000000000000000000005051266701624400166740ustar00rootroot00000000000000# @configure_input@ PERL = @PERL@ PYTHON = @PYTHON@ TB_PATH = "@TB_PATH@" TB_ARGS = @TB_ARGS@ TESTS = @enable_tests@ FIX_LANGUAGES = @enable_fix_lang@ ENABLE_LANG = @enable_lang@ srcdir = @srcdir@ DIST = $(DEPTH)/build/dist BUILD = $(DEPTH)/build JSUNIT = $(DEPTH)/util/run-jsunit $(PERL) $(TB_PATH) $(TB_ARGS) -jsunit enigmail/configure000077500000000000000000002670611266701624400145760ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for enigmail 1.9.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: https://www.enigmail.net about your system, including $0: any error possibly output before this message. Then $0: install a modern shell, or manually run the script $0: under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='enigmail' PACKAGE_TARNAME='enigmail' PACKAGE_VERSION='1.9.1' PACKAGE_STRING='enigmail 1.9.1' PACKAGE_BUGREPORT='https://www.enigmail.net' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS enable_fix_lang TB_ARGS TB_PATH enable_lang enable_tests target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build PERL PYTHON target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_tests enable_lang with_tb_path with_tb_args enable_fix_lang ' ac_precious_vars='build_alias host_alias target_alias' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures enigmail 1.9.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/enigmail] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of enigmail 1.9.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-tests run unit tests during build process --disable-lang disable creation of locales other than en-US --disable-fix-lang disable replacing of missing strings in localizations with en-US Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-tb-path=/path/to/thunderbird set the path to an installed Thunderbird --with-tb-args="-P profilename" set additional arguments for Thunderbird Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF enigmail configure 1.9.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by enigmail $as_me 1.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Extract the first word of ""python2"", so it can be a program name with args. set dummy "python2"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # fallback to python if python2 does not exist if test "x$PYTHON" = "x" ; then # Extract the first word of ""python"", so it can be a program name with args. set dummy "python"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PYTHON+:} false; then : $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$PYTHON" = "x" ; then as_fn_error $? "python2 or python not found." "$LINENO" 5 fi # Extract the first word of ""perl"", so it can be a program name with args. set dummy "perl"; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$PERL" = "x" ; then as_fn_error $? "Perl not found." "$LINENO" 5 fi ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- # Enable running of unit test during build # # Check whether --enable-tests was given. if test "${enable_tests+set}" = set; then : enableval=$enable_tests; enable_tests=$enableval fi # Disable creation of languages other than en-US (for submitting to babelzilla) # # Check whether --enable-lang was given. if test "${enable_lang+set}" = set; then : enableval=$enable_lang; enable_lang=$enableval else enable_lang=yes fi # Check whether --with-tb-path was given. if test "${with_tb_path+set}" = set; then : withval=$with_tb_path; if test "$withval" = yes ; then withval=no elif test "$withval" != no ; then TB_PATH="$withval" fi else withval=no fi # Check whether --with-tb-args was given. if test "${with_tb_args+set}" = set; then : withval=$with_tb_args; if test "$withval" = yes ; then withval=no elif test "$withval" != no ; then TB_ARGS="$withval" fi else withval=no fi # Check whether --enable-fix-lang was given. if test "${enable_fix_lang+set}" = set; then : enableval=$enable_fix_lang; enable_fix_lang=$enableval else enable_fix_lang=yes fi ac_config_files="$ac_config_files config/autoconf.mk" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by enigmail $as_me 1.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ enigmail config.status 1.9.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config/autoconf.mk") CONFIG_FILES="$CONFIG_FILES config/autoconf.mk" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi enigmail/configure.ac000066400000000000000000000034511266701624400151440ustar00rootroot00000000000000# Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) min_automake_version="1.10" AC_INIT([enigmail],[1.9.1], [https://www.enigmail.net]) AC_PATH_PROG(PYTHON, "python2") # fallback to python if python2 does not exist if test "x$PYTHON" = "x" ; then AC_PATH_PROG(PYTHON, "python") fi if test "x$PYTHON" = "x" ; then AC_MSG_ERROR([[python2 or python not found.]]) fi AC_PATH_PROG(PERL,"perl") if test "x$PERL" = "x" ; then AC_MSG_ERROR([[Perl not found.]]) fi AC_CANONICAL_TARGET # Enable running of unit test during build # AC_ARG_ENABLE(tests, AC_HELP_STRING([--enable-tests],[run unit tests during build process]), enable_tests=$enableval) # Disable creation of languages other than en-US (for submitting to babelzilla) # AC_ARG_ENABLE(lang, AC_HELP_STRING([--disable-lang],[disable creation of locales other than en-US]), enable_lang=$enableval, enable_lang=yes ) AC_SUBST(enable_tests) AC_SUBST(enable_lang) AC_ARG_WITH(tb-path, [ --with-tb-path=/path/to/thunderbird set the path to an installed Thunderbird], [if test "$withval" = yes ; then withval=no elif test "$withval" != no ; then TB_PATH="$withval" fi],withval=no) AC_SUBST(TB_PATH) AC_ARG_WITH(tb-args, [ --with-tb-args="-P profilename" set additional arguments for Thunderbird], [if test "$withval" = yes ; then withval=no elif test "$withval" != no ; then TB_ARGS="$withval" fi],withval=no) AC_SUBST(TB_ARGS) AC_ARG_ENABLE(fix-lang, AC_HELP_STRING([--disable-fix-lang],[disable replacing of missing strings in localizations with en-US]), enable_fix_lang=$enableval, enable_fix_lang=yes ) AC_SUBST(enable_fix_lang) AC_CONFIG_FILES([config/autoconf.mk]) AC_OUTPUT enigmail/install-sh000077500000000000000000000332551266701624400146670ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: enigmail/ipc/000077500000000000000000000000001266701624400134265ustar00rootroot00000000000000enigmail/ipc/Makefile000066400000000000000000000007221266701624400150670ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = .. include $(DEPTH)/config/autoconf.mk DIRS = modules #ifeq ($(TESTS),yes) # DIRS += tests #endif .PHONY: dirs $(DIRS) all: dirs dirs: $(DIRS) $(DIRS): $(MAKE) -C $@ clean: for dir in $(DIRS); do \ $(MAKE) -C $$dir clean; \ done enigmail/ipc/modules/000077500000000000000000000000001266701624400150765ustar00rootroot00000000000000enigmail/ipc/modules/.eslintrc.js000066400000000000000000000001531266701624400173340ustar00rootroot00000000000000module.exports = { "extends": "../../.eslintrc.js", "rules": { "no-constant-condition": 0, } }; enigmail/ipc/modules/Makefile000066400000000000000000000010501266701624400165320ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = ../.. include $(DEPTH)/config/autoconf.mk EXTRA_JS_MODULES = \ subprocess.jsm \ subprocess_worker_win.js \ subprocess_worker_unix.js all: $(EXTRA_JS_MODULES) $(DEPTH)/util/install -m 644 $(DIST)/modules $^ clean: $(EXTRA_JS_MODULES) $(DEPTH)/util/install -u $(DIST)/modules $^ enigmail/ipc/modules/subprocess.jsm000066400000000000000000001510401266701624400200020ustar00rootroot00000000000000// -*- coding: utf-8 -*- // vim: et:ts=4:sw=4:sts=4:ft=javascript /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * Import into a JS component using * 'Components.utils.import("resource://firefogg/subprocess.jsm");' * * This object allows to start a process, and read/write data to/from it * using stdin/stdout/stderr streams. * Usage example: * * var p = subprocess.call({ * command: '/bin/foo', * arguments: ['-v', 'foo'], * environment: [ "XYZ=abc", "MYVAR=def" ], * charset: 'UTF-8', * workdir: '/home/foo', * //stdin: "some value to write to stdin\nfoobar", * stdin: function(stdin) { * stdin.write("some value to write to stdin\nfoobar"); * stdin.close(); * }, * stdout: function(data) { * dump("got data on stdout:" + data + "\n"); * }, * stderr: function(data) { * dump("got data on stderr:" + data + "\n"); * }, * done: function(result) { * dump("process terminated with " + result.exitCode + "\n"); * }, * mergeStderr: false * }); * p.wait(); // wait for the subprocess to terminate * // this will block the main thread, * // only do if you can wait that long * * * Description of parameters: * -------------------------- * Apart from , all arguments are optional. * * command: either a |nsIFile| object pointing to an executable file or a * String containing the platform-dependent path to an executable * file. * * arguments: optional string array containing the arguments to the command. * * environment: optional string array containing environment variables to pass * to the command. The array elements must have the form * "VAR=data". Please note that if environment is defined, it * replaces any existing environment variables for the subprocess. * * charset: Output is decoded with given charset and a string is returned. * If charset is undefined, "UTF-8" is used as default. * To get binary data, set this explicitly to null and the * returned string is not decoded in any way. * * workdir: optional; String containing the platform-dependent path to a * directory to become the current working directory of the subprocess. * * stdin: optional input data for the process to be passed on standard * input. stdin can either be a string or a function. * A |string| gets written to stdin and stdin gets closed; * A |function| gets passed an object with write and close function. * Please note that the write() function will return almost immediately; * data is always written asynchronously on a separate thread. * * stdout: an optional function that can receive output data from the * process. The stdout-function is called asynchronously; it can be * called mutliple times during the execution of a process. * At a minimum at each occurance of \n or \r. * Please note that null-characters might need to be escaped * with something like 'data.replace(/\0/g, "\\0");'. * * stderr: an optional function that can receive stderr data from the * process. The stderr-function is called asynchronously; it can be * called mutliple times during the execution of a process. Please * note that null-characters might need to be escaped with * something like 'data.replace(/\0/g, "\\0");'. * (on windows it only gets called once right now) * * pipes: **NOT AVAILABLE ON WINDOWS** * optional argmuent containing an |array| of the objects with the * following structure: * - readFd: function(data) or string - working identically to stdout() * - writeFd: function(pipe) - working identically to stdin() * The array is treated as an ordered list. * For every element in the array, a new file descriptor is opened * to read from or and write to. The file descriptors are numbered * sequentially starting by 3, i.e. the child process can read or * write from/to file descriptors 3, 4, etc. * NOTE: pipes are directed; you can only specify either readFd OR * writeFd for any element of the array. * * done: optional function that is called when the process has terminated. * The exit code from the process available via result.exitCode. If * stdout is not defined, then the output from stdout is available * via result.stdout. stderr data is in result.stderr * * mergeStderr: optional boolean value. If true, stderr is merged with stdout; * no data will be provided to stderr. Default is false. * * bufferedOutput: optional boolean value. If true, stderr and stdout are buffered * and will only deliver data when a certain amount of output is * available. Enabling the option will give you some performance * benefits if you read a lot of data. Don't enable this if your * application works in a conversation-like mode. Default is false. * * * Description of object returned by subprocess.call(...) * ------------------------------------------------------ * The object returned by subprocess.call offers a few methods that can be * executed: * * wait(): waits for the subprocess to terminate. It is not required to use * wait; done will be called in any case when the subprocess terminated. * * kill(hardKill): kill the subprocess. Any open pipes will be closed and * done will be called. * hardKill [ignored on Windows]: * - false: signal the process terminate (SIGTERM) * - true: kill the process (SIGKILL) * * * Other methods in subprocess * --------------------------- * * registerDebugHandler(functionRef): register a handler that is called to get * debugging information * registerLogHandler(functionRef): register a handler that is called to get error * messages * * example: * subprocess.registerLogHandler( function(s) { dump(s); } ); */ /* global Components: false, dump: false, ChromeWorker: false */ "use strict"; Components.utils.import("resource://gre/modules/ctypes.jsm"); /* global ctypes: false */ let EXPORTED_SYMBOLS = ["subprocess"]; const Cc = Components.classes; const Ci = Components.interfaces; const NS_LOCAL_FILE = "@mozilla.org/file/local;1"; var WinABI; //Windows API definitions if (ctypes.size_t.size == 8) { WinABI = ctypes.default_abi; } else { WinABI = ctypes.winapi_abi; } const WORD = ctypes.uint16_t; const DWORD = ctypes.uint32_t; const LPDWORD = DWORD.ptr; const UINT = ctypes.unsigned_int; const BOOL = ctypes.bool; const HANDLE = ctypes.size_t; const HWND = HANDLE; const HMODULE = HANDLE; const WPARAM = ctypes.size_t; const LPARAM = ctypes.size_t; const LRESULT = ctypes.size_t; const ULONG_PTR = ctypes.uintptr_t; const PVOID = ctypes.voidptr_t; const LPVOID = PVOID; const LPCTSTR = ctypes.jschar.ptr; const LPCWSTR = ctypes.jschar.ptr; const LPTSTR = ctypes.jschar.ptr; const LPSTR = ctypes.char.ptr; const LPCSTR = ctypes.char.ptr; const LPBYTE = ctypes.char.ptr; const CREATE_NEW_CONSOLE = 0x00000010; const CREATE_NO_WINDOW = 0x08000000; const CREATE_UNICODE_ENVIRONMENT = 0x00000400; const STARTF_USESHOWWINDOW = 0x00000001; const STARTF_USESTDHANDLES = 0x00000100; const SW_HIDE = 0; const DUPLICATE_SAME_ACCESS = 0x00000002; const STILL_ACTIVE = 259; const INFINITE = DWORD(0xFFFFFFFF); const WAIT_TIMEOUT = 0x00000102; // stdin pipe states const PIPE_STATE_NOT_INIT = 3; const PIPE_STATE_OPEN = 2; const PIPE_STATE_CLOSEABLE = 1; const PIPE_STATE_CLOSED = 0; /* typedef struct _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; */ const SECURITY_ATTRIBUTES = new ctypes.StructType("SECURITY_ATTRIBUTES", [{ "nLength": DWORD }, { "lpSecurityDescriptor": LPVOID }, { "bInheritHandle": BOOL }]); /* typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; LPTSTR lpDesktop; LPTSTR lpTitle; DWORD dwX; DWORD dwY; DWORD dwXSize; DWORD dwYSize; DWORD dwXCountChars; DWORD dwYCountChars; DWORD dwFillAttribute; DWORD dwFlags; WORD wShowWindow; WORD cbReserved2; LPBYTE lpReserved2; HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO; */ const STARTUPINFO = new ctypes.StructType("STARTUPINFO", [{ "cb": DWORD }, { "lpReserved": LPTSTR }, { "lpDesktop": LPTSTR }, { "lpTitle": LPTSTR }, { "dwX": DWORD }, { "dwY": DWORD }, { "dwXSize": DWORD }, { "dwYSize": DWORD }, { "dwXCountChars": DWORD }, { "dwYCountChars": DWORD }, { "dwFillAttribute": DWORD }, { "dwFlags": DWORD }, { "wShowWindow": WORD }, { "cbReserved2": WORD }, { "lpReserved2": LPBYTE }, { "hStdInput": HANDLE }, { "hStdOutput": HANDLE }, { "hStdError": HANDLE }]); /* typedef struct _PROCESS_INFORMATION { HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; } PROCESS_INFORMATION, *LPPROCESS_INFORMATION; */ const PROCESS_INFORMATION = new ctypes.StructType("PROCESS_INFORMATION", [{ "hProcess": HANDLE }, { "hThread": HANDLE }, { "dwProcessId": DWORD }, { "dwThreadId": DWORD }]); /* typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; union { struct { DWORD Offset; DWORD OffsetHigh; }; PVOID Pointer; }; HANDLE hEvent; } OVERLAPPED, *LPOVERLAPPED; */ const OVERLAPPED = new ctypes.StructType("OVERLAPPED"); //UNIX definitions const pid_t = ctypes.int32_t; const WNOHANG = 1; const F_GETFL = 3; const F_SETFL = 4; const LIBNAME = 0; const O_NONBLOCK = 1; const RLIM_T = 2; const RLIMIT_NOFILE = 3; function getPlatformValue(valueType) { if (!gXulRuntime) gXulRuntime = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime); const platformDefaults = { // Windows API: 'winnt': ['kernel32.dll'], // Unix API: // library name O_NONBLOCK RLIM_T RLIMIT_NOFILE 'darwin': ['libc.dylib', 0x04, ctypes.uint64_t, 8], 'linux': ['libc.so.6', 2024, ctypes.unsigned_long, 7], 'freebsd': ['libc.so.7', 0x04, ctypes.int64_t, 8], 'dragonfly': ['libc.so.8', 0x04, ctypes.int64_t, 8], 'gnu/kfreebsd': ['libc.so.0.1', 0x04, ctypes.int64_t, 8], 'netbsd': ['libc.so', 0x04, ctypes.int64_t, 8], 'openbsd': ['libc.so.61.0', 0x04, ctypes.int64_t, 8], 'sunos': ['libc.so', 0x80, ctypes.unsigned_long, 5] }; return platformDefaults[gXulRuntime.OS.toLowerCase()][valueType]; } var gDebugFunc = null, gLogFunc = null, gXulRuntime = null; function LogError(s) { if (gLogFunc) gLogFunc(s); } function debugLog(s) { if (gDebugFunc) gDebugFunc(s); } function setTimeout(callback, timeout) { var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); timer.initWithCallback(callback, timeout, Ci.nsITimer.TYPE_ONE_SHOT); } function convertBytes(data, charset) { var string = charset == "null" || charset == "UTF-8" ? data : Cc["@mozilla.org/intl/utf8converterservice;1"] .getService(Ci.nsIUTF8ConverterService) .convertStringToUTF8(data, charset, false, true); return string; } function getCommandStr(command) { let commandStr = null; if (typeof(command) == "string") { let file = Cc[NS_LOCAL_FILE].createInstance(Ci.nsIFile); file.initWithPath(command); if (!(file.isExecutable() && file.isFile())) throw ("File '" + command + "' is not an executable file"); commandStr = command; } else { if (!(command.isExecutable() && command.isFile())) throw ("File '" + command.path + "' is not an executable file"); commandStr = command.path; } return commandStr; } function getWorkDir(workdir) { let workdirStr = null; if (typeof(workdir) == "string") { let file = Cc[NS_LOCAL_FILE].createInstance(Ci.nsIFile); file.initWithPath(workdir); if (!(file.isDirectory())) throw ("Directory '" + workdir + "' does not exist"); workdirStr = workdir; } else if (workdir) { if (!workdir.isDirectory()) throw ("Directory '" + workdir.path + "' does not exist"); workdirStr = workdir.path; } return workdirStr; } var subprocess = { call: function(options) { options.mergeStderr = options.mergeStderr || false; options.bufferedOutput = options.bufferedOutput || false; options.workdir = options.workdir || null; options.environment = options.environment || []; options.charset = !options.charset ? "null" : options.charset || "UTF-8"; if (options.arguments) { var args = options.arguments; options.arguments = []; args.forEach(function(argument) { options.arguments.push(argument); }); } else { options.arguments = []; } if (options.pipes) { for (let i in options.pipes) { if (options.pipes[i].writeFd && options.pipes[i].readFd) { throw ("Fatal - pipe " + i + ": readFd and writeFd specified"); } if (!options.pipes[i].writeFd && !options.pipes[i].readFd) { throw ("Fatal - pipe " + i + ": neither readFd nor writeFd specified"); } } } options.libc = getPlatformValue(LIBNAME); if (gXulRuntime.OS.substring(0, 3) == "WIN") { return subprocess_win32(options); } else { return subprocess_unix(options); } }, registerDebugHandler: function(func) { gDebugFunc = func; }, registerLogHandler: function(func) { gLogFunc = func; }, getPlatformValue: getPlatformValue }; function subprocess_win32(options) { var kernel32dll = ctypes.open(options.libc), hChildProcess, active = true, done = false, exitCode = -1, child = {}, stdinWorker = null, stdoutWorker = null, stderrWorker = null, pendingWriteCount = 0, readers = options.mergeStderr ? 1 : 2, stdinOpenState = PIPE_STATE_NOT_INIT, error = '', output = ''; //api declarations /* BOOL WINAPI CloseHandle( __in HANDLE hObject ); */ var CloseHandle = kernel32dll.declare("CloseHandle", WinABI, BOOL, HANDLE ); /* BOOL WINAPI CreateProcess( __in_opt LPCTSTR lpApplicationName, __inout_opt LPTSTR lpCommandLine, __in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes, __in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes, __in BOOL bInheritHandles, __in DWORD dwCreationFlags, __in_opt LPVOID lpEnvironment, __in_opt LPCTSTR lpCurrentDirectory, __in LPSTARTUPINFO lpStartupInfo, __out LPPROCESS_INFORMATION lpProcessInformation ); */ var CreateProcessW = kernel32dll.declare("CreateProcessW", WinABI, BOOL, LPCTSTR, LPTSTR, SECURITY_ATTRIBUTES.ptr, SECURITY_ATTRIBUTES.ptr, BOOL, DWORD, LPVOID, LPCTSTR, STARTUPINFO.ptr, PROCESS_INFORMATION.ptr ); // /* // BOOL WINAPI ReadFile( // __in HANDLE hFile, // __out LPVOID ReadFileBuffer, // __in DWORD nNumberOfBytesToRead, // __out_opt LPDWORD lpNumberOfBytesRead, // __inout_opt LPOVERLAPPED lpOverlapped // ); // */ // var ReadFileBufferSize = 1024, // ReadFileBuffer = ctypes.char.array(ReadFileBufferSize), // ReadFile = kernel32dll.declare("ReadFile", // WinABI, // BOOL, // HANDLE, // ReadFileBuffer, // DWORD, // LPDWORD, // OVERLAPPED.ptr // ); // // /* // BOOL WINAPI PeekNamedPipe( // __in HANDLE hNamedPipe, // __out_opt LPVOID lpBuffer, // __in DWORD nBufferSize, // __out_opt LPDWORD lpBytesRead, // __out_opt LPDWORD lpTotalBytesAvail, // __out_opt LPDWORD lpBytesLeftThisMessage // ); // */ // var PeekNamedPipe = kernel32dll.declare("PeekNamedPipe", // WinABI, // BOOL, // HANDLE, // ReadFileBuffer, // DWORD, // LPDWORD, // LPDWORD, // LPDWORD // ); // // /* // BOOL WINAPI WriteFile( // __in HANDLE hFile, // __in LPCVOID lpBuffer, // __in DWORD nNumberOfBytesToWrite, // __out_opt LPDWORD lpNumberOfBytesWritten, // __inout_opt LPOVERLAPPED lpOverlapped // ); // */ // var WriteFile = kernel32dll.declare("WriteFile", // WinABI, // BOOL, // HANDLE, // ctypes.char.ptr, // DWORD, // LPDWORD, // OVERLAPPED.ptr // ); /* BOOL WINAPI CreatePipe( __out PHANDLE hReadPipe, __out PHANDLE hWritePipe, __in_opt LPSECURITY_ATTRIBUTES lpPipeAttributes, __in DWORD nSize ); */ var CreatePipe = kernel32dll.declare("CreatePipe", WinABI, BOOL, HANDLE.ptr, HANDLE.ptr, SECURITY_ATTRIBUTES.ptr, DWORD ); /* HANDLE WINAPI GetCurrentProcess(void); */ var GetCurrentProcess = kernel32dll.declare("GetCurrentProcess", WinABI, HANDLE ); /* DWORD WINAPI GetLastError(void); */ var GetLastError = kernel32dll.declare("GetLastError", WinABI, DWORD ); /* BOOL WINAPI DuplicateHandle( __in HANDLE hSourceProcessHandle, __in HANDLE hSourceHandle, __in HANDLE hTargetProcessHandle, __out LPHANDLE lpTargetHandle, __in DWORD dwDesiredAccess, __in BOOL bInheritHandle, __in DWORD dwOptions ); */ var DuplicateHandle = kernel32dll.declare("DuplicateHandle", WinABI, BOOL, HANDLE, HANDLE, HANDLE, HANDLE.ptr, DWORD, BOOL, DWORD ); /* BOOL WINAPI GetExitCodeProcess( __in HANDLE hProcess, __out LPDWORD lpExitCode ); */ var GetExitCodeProcess = kernel32dll.declare("GetExitCodeProcess", WinABI, BOOL, HANDLE, LPDWORD ); /* DWORD WINAPI WaitForSingleObject( __in HANDLE hHandle, __in DWORD dwMilliseconds ); */ var WaitForSingleObject = kernel32dll.declare("WaitForSingleObject", WinABI, DWORD, HANDLE, DWORD ); /* BOOL WINAPI TerminateProcess( __in HANDLE hProcess, __in UINT uExitCode ); */ var TerminateProcess = kernel32dll.declare("TerminateProcess", WinABI, BOOL, HANDLE, UINT ); //functions function popen(command, workdir, args, environment, child) { //escape arguments args.unshift(command); for (var i = 0; i < args.length; i++) { if (typeof args[i] != "string") { args[i] = args[i].toString(); } /* quote arguments with spaces */ if (args[i].match(/\s/)) { args[i] = "\"" + args[i] + "\""; } /* If backslash is followed by a quote, double it */ args[i] = args[i].replace(/\\\"/g, "\\\\\""); } command = args.join(' '); environment = environment || []; if (environment.length) { //An environment block consists of //a null-terminated block of null-terminated strings. //Using CREATE_UNICODE_ENVIRONMENT so needs to be jschar environment = ctypes.jschar.array()(environment.join('\0') + '\0'); } else { environment = null; } var hOutputReadTmp = new HANDLE(), hOutputRead = new HANDLE(), hOutputWrite = new HANDLE(); var hErrorRead = new HANDLE(), hErrorReadTmp = new HANDLE(), hErrorWrite = new HANDLE(); var hInputRead = new HANDLE(), hInputWriteTmp = new HANDLE(), hInputWrite = new HANDLE(); // Set up the security attributes struct. var sa = new SECURITY_ATTRIBUTES(); sa.nLength = SECURITY_ATTRIBUTES.size; sa.lpSecurityDescriptor = null; sa.bInheritHandle = true; // Create output pipe. if (!CreatePipe(hOutputReadTmp.address(), hOutputWrite.address(), sa.address(), 0)) LogError("CreatePipe hOutputReadTmp failed"); if (options.mergeStderr) { // Create a duplicate of the output write handle for the std error // write handle. This is necessary in case the child application // closes one of its std output handles. if (!DuplicateHandle(GetCurrentProcess(), hOutputWrite, GetCurrentProcess(), hErrorWrite.address(), 0, true, DUPLICATE_SAME_ACCESS)) LogError("DuplicateHandle hOutputWrite failed"); } else { // Create error pipe. if (!CreatePipe(hErrorReadTmp.address(), hErrorWrite.address(), sa.address(), 0)) LogError("CreatePipe hErrorReadTmp failed"); } // Create input pipe. if (!CreatePipe(hInputRead.address(), hInputWriteTmp.address(), sa.address(), 0)) LogError("CreatePipe hInputRead failed"); // Create new output/error read handle and the input write handles. Set // the Properties to FALSE. Otherwise, the child inherits the // properties and, as a result, non-closeable handles to the pipes // are created. if (!DuplicateHandle(GetCurrentProcess(), hOutputReadTmp, GetCurrentProcess(), hOutputRead.address(), // Address of new handle. 0, false, // Make it uninheritable. DUPLICATE_SAME_ACCESS)) LogError("DupliateHandle hOutputReadTmp failed"); if (!options.mergeStderr) { if (!DuplicateHandle(GetCurrentProcess(), hErrorReadTmp, GetCurrentProcess(), hErrorRead.address(), // Address of new handle. 0, false, // Make it uninheritable. DUPLICATE_SAME_ACCESS)) LogError("DupliateHandle hErrorReadTmp failed"); } if (!DuplicateHandle(GetCurrentProcess(), hInputWriteTmp, GetCurrentProcess(), hInputWrite.address(), // Address of new handle. 0, false, // Make it uninheritable. DUPLICATE_SAME_ACCESS)) LogError("DupliateHandle hInputWriteTmp failed"); // Close inheritable copies of the handles. if (!CloseHandle(hOutputReadTmp)) LogError("CloseHandle hOutputReadTmp failed"); if (!options.mergeStderr) if (!CloseHandle(hErrorReadTmp)) LogError("CloseHandle hErrorReadTmp failed"); if (!CloseHandle(hInputWriteTmp)) LogError("CloseHandle failed"); var pi = new PROCESS_INFORMATION(); var si = new STARTUPINFO(); si.cb = STARTUPINFO.size; si.dwFlags = STARTF_USESTDHANDLES; si.hStdInput = hInputRead; si.hStdOutput = hOutputWrite; si.hStdError = hErrorWrite; // Launch the process if (!CreateProcessW(null, // executable name command, // command buffer null, // process security attribute null, // thread security attribute true, // inherits system handles CREATE_UNICODE_ENVIRONMENT | CREATE_NO_WINDOW, // process flags environment, // envrionment block workdir, // set as current directory si.address(), // (in) startup information pi.address() // (out) process information )) throw ("Fatal - Could not launch subprocess '" + command + "'"); // Close any unnecessary handles. if (!CloseHandle(pi.hThread)) LogError("CloseHandle pi.hThread failed"); // Close pipe handles (do not continue to modify the parent). // You need to make sure that no handles to the write end of the // output pipe are maintained in this process or else the pipe will // not close when the child process exits and the ReadFile will hang. if (!CloseHandle(hInputRead)) LogError("CloseHandle hInputRead failed"); if (!CloseHandle(hOutputWrite)) LogError("CloseHandle hOutputWrite failed"); if (!CloseHandle(hErrorWrite)) LogError("CloseHandle hErrorWrite failed"); //return values child.stdin = hInputWrite; child.stdout = hOutputRead; child.stderr = options.mergeStderr ? undefined : hErrorRead; child.process = pi.hProcess; return pi.hProcess; } /* * createStdinWriter () * * Create a ChromeWorker object for writing data to the subprocess' stdin * pipe. The ChromeWorker object lives on a separate thread; this avoids * internal deadlocks. */ function createStdinWriter() { debugLog("Creating new stdin worker\n"); stdinWorker = new ChromeWorker("subprocess_worker_win.js"); stdinWorker.onmessage = function(event) { switch (event.data) { case "WriteOK": pendingWriteCount--; debugLog("got OK from stdinWorker - remaining count: " + pendingWriteCount + "\n"); break; case "InitOK": stdinOpenState = PIPE_STATE_OPEN; debugLog("Stdin pipe opened\n"); break; case "ClosedOK": stdinOpenState = PIPE_STATE_CLOSED; debugLog("Stdin pipe closed\n"); break; default: debugLog("got msg from stdinWorker: " + event.data + "\n"); } }; stdinWorker.onerror = function(error) { pendingWriteCount--; exitCode = -2; LogError("got error from stdinWorker: " + error.message + "\n"); }; stdinWorker.postMessage({ msg: "init", libc: options.libc }); } /* * writeStdin() * @data: String containing the data to write * * Write data to the subprocess' stdin (equals to sending a request to the * ChromeWorker object to write the data). */ function writeStdin(data) { if (stdinOpenState == PIPE_STATE_CLOSED) { LogError("trying to write data to closed stdin"); return; } ++pendingWriteCount; debugLog("sending " + data.length + " bytes to stdinWorker\n"); var pipePtr = parseInt(ctypes.cast(child.stdin.address(), ctypes.uintptr_t).value, 10); stdinWorker.postMessage({ msg: 'write', pipe: pipePtr, data: data }); } /* * closeStdinHandle() * * Close the stdin pipe, either directly or by requesting the ChromeWorker to * close the pipe. The ChromeWorker will only close the pipe after the last write * request process is done. */ function closeStdinHandle() { debugLog("trying to close stdin\n"); if (stdinOpenState != PIPE_STATE_OPEN) return; stdinOpenState = PIPE_STATE_CLOSEABLE; if (stdinWorker) { debugLog("sending close stdin to worker\n"); var pipePtr = parseInt(ctypes.cast(child.stdin.address(), ctypes.uintptr_t).value, 10); stdinWorker.postMessage({ msg: 'close', pipe: pipePtr }); } else { stdinOpenState = PIPE_STATE_CLOSED; debugLog("Closing Stdin\n"); if (!CloseHandle(child.stdin)) LogError("CloseHandle hInputWrite failed"); } } /* * createReader(pipe, name) * * @pipe: handle to the pipe * @name: String containing the pipe name (stdout or stderr) * * Create a ChromeWorker object for reading data asynchronously from * the pipe (i.e. on a separate thread), and passing the result back to * the caller. */ function createReader(pipe, name, callbackFunc) { var worker = new ChromeWorker("subprocess_worker_win.js"); worker.onmessage = function(event) { switch (event.data.msg) { case "data": debugLog("got " + event.data.count + " bytes from " + name + "\n"); var data = convertBytes(event.data.data, options.charset); callbackFunc(data); break; case "done": debugLog("Pipe " + name + " closed\n"); --readers; if (readers === 0) cleanup(); break; case "error": exitCode = -2; LogError("Got msg from " + name + ": " + event.data.data + "\n"); break; default: debugLog("Got msg from " + name + ": " + event.data.data + "\n"); } }; worker.onerror = function(errorMsg) { LogError("Got error from " + name + ": " + errorMsg.message); exitCode = -2; }; var pipePtr = parseInt(ctypes.cast(pipe.address(), ctypes.uintptr_t).value, 10); worker.postMessage({ msg: 'read', pipe: pipePtr, libc: options.libc, charset: !options.charset ? "null" : options.charset, bufferedOutput: options.bufferedOutput, name: name }); return worker; } /* * readPipes() * * Open the pipes for reading from stdout and stderr */ function readPipes() { stdoutWorker = createReader(child.stdout, "stdout", function(data) { if (options.stdout) { setTimeout(function() { options.stdout(data); }, 0); } else { output += data; } }); if (!options.mergeStderr) stderrWorker = createReader(child.stderr, "stderr", function(data) { if (options.stderr) { setTimeout(function() { options.stderr(data); }, 0); } else { error += data; } }); } /* * cleanup() * * close stdin if needed, get the exit code from the subprocess and invoke * the caller's done() function. * * Note: because stdout() and stderr() are called using setTimeout, we need to * do the same here in order to guarantee the message sequence. */ function cleanup() { debugLog("Cleanup called\n"); if (active) { active = false; closeStdinHandle(); // should only be required in case of errors var exit = new DWORD(); GetExitCodeProcess(child.process, exit.address()); if (exitCode > -2) exitCode = exit.value; exitCode = exitCode % 0xFF; if (stdinWorker) stdinWorker.postMessage({ msg: 'stop' }); setTimeout(function _done() { if (options.done) { try { options.done({ exitCode: exitCode, stdout: output, stderr: error }); } catch (ex) { // prevent from blocking if options.done() throws an error done = true; throw ex; } } done = true; }, 0); kernel32dll.close(); } } function startWriting() { debugLog("startWriting called\n"); if (stdinOpenState == PIPE_STATE_NOT_INIT) { setTimeout(function _f() { startWriting(); }, 1); return; } if (typeof(options.stdin) == 'function') { try { options.stdin({ write: function(data) { writeStdin(data); }, close: function() { closeStdinHandle(); } }); } catch (ex) { // prevent from failing if options.stdin() throws an exception closeStdinHandle(); throw ex; } } else { writeStdin(options.stdin); closeStdinHandle(); } } //main if (options.pipes) throw "Error - additional pipes are not supported on this OS"; var cmdStr = getCommandStr(options.command); var workDir = getWorkDir(options.workdir); hChildProcess = popen(cmdStr, workDir, options.arguments, options.environment, child); readPipes(); if (options.stdin) { createStdinWriter(); startWriting(); } else closeStdinHandle(); return { kill: function(hardKill) { if (!active) return true; // hardKill is currently ignored on Windows var r = Boolean(TerminateProcess(child.process, 255)); cleanup(-1); return r; }, wait: function() { // wait for async operations to complete var thread = Cc['@mozilla.org/thread-manager;1'].getService(Ci.nsIThreadManager).currentThread; while (!done) thread.processNextEvent(true); return exitCode; } }; } function subprocess_unix(options) { var libc = ctypes.open(options.libc), active = true, done = false, exitCode = -1, workerExitCode = 0, child = {}, pid = -1, writeWorker = [], stdoutWorker = null, stderrWorker = null, readFdWorker = [], pendingWriteCount = 0, readers = options.mergeStderr ? 1 : 2, stdinOpenState = [PIPE_STATE_NOT_INIT], error = '', output = ''; //api declarations //pid_t fork(void); var fork = libc.declare("fork", ctypes.default_abi, pid_t ); //NULL terminated array of strings, argv[0] will be command >> + 2 var argv = ctypes.char.ptr.array(options.arguments.length + 2); var envp = ctypes.char.ptr.array(options.environment.length + 1); // posix_spawn_file_actions_t is a complex struct that may be different on // each platform. We do not care about its attributes, we don't need to // get access to them, but we do need to allocate the right amount // of memory for it. // At 2013/10/28, its size was 80 on linux, but better be safe (and larger), // than crash when posix_spawn_file_actions_init fill `action` with zeros. // Use `gcc sizeof_fileaction.c && ./a.out` to check that size. var posix_spawn_file_actions_t = ctypes.uint8_t.array(100); //int posix_spawn(pid_t *restrict pid, const char *restrict path, // const posix_spawn_file_actions_t *file_actions, // const posix_spawnattr_t *restrict attrp, // char *const argv[restrict], char *const envp[restrict]); var posix_spawn = libc.declare("posix_spawn", ctypes.default_abi, ctypes.int, pid_t.ptr, ctypes.char.ptr, posix_spawn_file_actions_t.ptr, ctypes.voidptr_t, argv, envp ); //int posix_spawn_file_actions_init(posix_spawn_file_actions_t *file_actions); var posix_spawn_file_actions_init = libc.declare("posix_spawn_file_actions_init", ctypes.default_abi, ctypes.int, posix_spawn_file_actions_t.ptr ); //int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *file_actions); var posix_spawn_file_actions_destroy = libc.declare("posix_spawn_file_actions_destroy", ctypes.default_abi, ctypes.int, posix_spawn_file_actions_t.ptr ); // int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t * // file_actions, int fildes, int newfildes); var posix_spawn_file_actions_adddup2 = libc.declare("posix_spawn_file_actions_adddup2", ctypes.default_abi, ctypes.int, posix_spawn_file_actions_t.ptr, ctypes.int, ctypes.int ); // int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t * // file_actions, int fildes); var posix_spawn_file_actions_addclose = libc.declare("posix_spawn_file_actions_addclose", ctypes.default_abi, ctypes.int, posix_spawn_file_actions_t.ptr, ctypes.int ); //int pipe(int pipefd[2]); var pipefd = ctypes.int.array(2); var pipe = libc.declare("pipe", ctypes.default_abi, ctypes.int, pipefd ); //int dup2(int oldfd, int newfd); var dup2 = libc.declare("dup2", ctypes.default_abi, ctypes.int, ctypes.int, ctypes.int ); //int close(int fd); var close = libc.declare("close", ctypes.default_abi, ctypes.int, ctypes.int ); var execve = libc.declare("execve", ctypes.default_abi, ctypes.int, ctypes.char.ptr, argv, envp ); //void exit(int status); var exit = libc.declare("exit", ctypes.default_abi, ctypes.void_t, ctypes.int ); //pid_t waitpid(pid_t pid, int *status, int options); var waitpid = libc.declare("waitpid", ctypes.default_abi, pid_t, pid_t, ctypes.int.ptr, ctypes.int ); //int kill(pid_t pid, int sig); var kill = libc.declare("kill", ctypes.default_abi, ctypes.int, pid_t, ctypes.int ); //int read(int fd, void *buf, size_t count); var bufferSize = 1024; var buffer = ctypes.char.array(bufferSize); var read = libc.declare("read", ctypes.default_abi, ctypes.int, ctypes.int, buffer, ctypes.int ); var WriteBuffer = ctypes.uint8_t.array(256); //ssize_t write(int fd, const void *buf, size_t count); var write = libc.declare("write", ctypes.default_abi, ctypes.int, ctypes.int, WriteBuffer, ctypes.int ); //int chdir(const char *path); var chdir = libc.declare("chdir", ctypes.default_abi, ctypes.int, ctypes.char.ptr ); //int sleep(int); var sleep = libc.declare("sleep", ctypes.default_abi, ctypes.int, ctypes.int); //int fcntl(int fd, int cmd, ... /* arg */ ); var fcntl = libc.declare("fcntl", ctypes.default_abi, ctypes.int, ctypes.int, ctypes.int, ctypes.int ); var libcWrapper = null, launchProcess = null; var additionalFds = 0; if (options.pipes) { additionalFds = options.pipes.length; } var fdArr = ctypes.int.array(additionalFds + 2); function popen(command, workdir, args, environment, child) { var _in, _out, _err, pid, rc, i; _in = new pipefd(); _out = new pipefd(); if (!options.mergeStderr) _err = new pipefd(); var _args = argv(); args.unshift(command); for (i = 0; i < args.length; i++) { _args[i] = ctypes.char.array()(args[i]); } var _envp = envp(); for (i = 0; i < environment.length; i++) { _envp[i] = ctypes.char.array()(environment[i]); } rc = pipe(_in); if (rc < 0) { return -1; } rc = pipe(_out); fcntl(_out[0], F_SETFL, getPlatformValue(O_NONBLOCK)); if (rc < 0) { close(_in[0]); close(_in[1]); return -1; } if (!options.mergeStderr) { rc = pipe(_err); fcntl(_err[0], F_SETFL, getPlatformValue(O_NONBLOCK)); if (rc < 0) { close(_in[0]); close(_in[1]); close(_out[0]); close(_out[1]); return -1; } } child.otherFdChild = fdArr(); // FD's to use in the subprocess (close in parent) child.otherFdParent = fdArr(); // FD's to use in the parent process (close in child) if (additionalFds > 0) { debugLog("adding Fds: " + additionalFds + "\n"); for (i = 0; i < additionalFds; i++) { var fd = new pipefd(); rc = pipe(fd); if (rc < 0) { close(_in[0]); close(_in[1]); close(_out[0]); close(_out[1]); return -1; } if (options.pipes[i].readFd) { debugLog("adding input fd: " + fd[1] + "\n"); child.otherFdChild[i] = fd[1]; child.otherFdParent[i] = fd[0]; } else if (options.pipes[i].writeFd) { debugLog("adding output fd: " + fd[0] + "\n"); child.otherFdChild[i] = fd[0]; child.otherFdParent[i] = fd[1]; } } } child.otherFdChild[additionalFds] = 0; let STDIN_FILENO = 0; let STDOUT_FILENO = 1; let STDERR_FILENO = 2; let action = posix_spawn_file_actions_t(); posix_spawn_file_actions_init(action.address()); posix_spawn_file_actions_adddup2(action.address(), _in[0], STDIN_FILENO); posix_spawn_file_actions_addclose(action.address(), _in[1]); posix_spawn_file_actions_addclose(action.address(), _in[0]); posix_spawn_file_actions_adddup2(action.address(), _out[1], STDOUT_FILENO); posix_spawn_file_actions_addclose(action.address(), _out[1]); posix_spawn_file_actions_addclose(action.address(), _out[0]); if (!options.mergeStderr) { posix_spawn_file_actions_adddup2(action.address(), _err[1], STDERR_FILENO); posix_spawn_file_actions_addclose(action.address(), _err[1]); posix_spawn_file_actions_addclose(action.address(), _err[0]); } // posix_spawn doesn't support setting a custom workdir for the child, // so change the cwd in the parent process before launching the child process. if (workdir) { if (chdir(workdir) < 0) { throw new Error("Unable to change workdir before launching child process"); } } closeOtherFds(action, _in[1], _out[0], options.mergeStderr ? undefined : _err[0]); let id = pid_t(0); let rv = posix_spawn(id.address(), command, action.address(), null, _args, _envp); posix_spawn_file_actions_destroy(action.address()); if (rv !== 0) { // we should not really end up here if (!options.mergeStderr) { close(_err[0]); close(_err[1]); } close(_out[0]); close(_out[1]); close(_in[0]); close(_in[1]); throw new Error("Fatal - failed to create subprocess '" + command + "'"); } pid = id.value; close(_in[0]); close(_out[1]); if (!options.mergeStderr) close(_err[1]); child.stdin = _in[1]; child.stdout = _out[0]; child.stderr = options.mergeStderr ? undefined : _err[0]; child.pid = pid; return pid; } // close any file descriptors that are not required for the process function closeOtherFds(action, fdIn, fdOut, fdErr, otherFd, additionalFds) { // Unfortunately on mac, any fd registered in posix_spawn_file_actions_addclose // that can't be closed correctly will make posix_spawn fail... // Even if we ensure registering only still opened fds. if (gXulRuntime.OS == "Darwin") return; var maxFD = 256; // arbitrary max var rlim_t = getPlatformValue(RLIM_T); const RLIMITS = new ctypes.StructType("RLIMITS", [{ "rlim_cur": rlim_t }, { "rlim_max": rlim_t }]); try { var getrlimit = libc.declare("getrlimit", ctypes.default_abi, ctypes.int, ctypes.int, RLIMITS.ptr ); var rl = new RLIMITS(); if (getrlimit(getPlatformValue(RLIMIT_NOFILE), rl.address()) === 0) { if (rl.rlim_cur < Math.pow(2, 20)) // ignore too high numbers maxFD = rl.rlim_cur; } debugLog("getlimit: maxFD=" + maxFD + "\n"); } catch (ex) { debugLog("getrlimit: no such function on this OS\n"); debugLog(ex.toString()); } // close any file descriptors // fd's 0-2 + additional FDs are already closed for (var i = 3 + additionalFds; i < maxFD; i++) { let doClose = true; if (i != fdIn && i != fdOut && i != fdErr) { for (var j = 0; j < additionalFds; j++) { if (i == otherFd[j]) doClose = false; } if (doClose) { posix_spawn_file_actions_addclose(action.address(), i); } } } } /* * createWriter () * * Create a ChromeWorker object for writing data to the subprocess' stdin * pipe. The ChromeWorker object lives on a separate thread; this avoids * internal deadlocks. */ function createWriter(fileDesc, workerNum) { debugLog("Creating new writing worker " + workerNum + " for pipe " + fileDesc + "\n"); let wrk = new ChromeWorker("subprocess_worker_unix.js"); wrk.onmessage = function(event) { switch (event.data.msg) { case "info": switch (event.data.data) { case "WriteOK": pendingWriteCount--; debugLog("got OK from writing Worker " + workerNum + " - remaining count: " + pendingWriteCount + "\n"); break; case "InitOK": stdinOpenState[workerNum] = PIPE_STATE_OPEN; debugLog("write pipe " + workerNum + " opened\n"); break; case "ClosedOK": stdinOpenState[workerNum] = PIPE_STATE_CLOSED; debugLog("write pipe " + workerNum + " closed\n"); break; default: debugLog("got msg from write Worker: " + event.data.data + "\n"); } break; case "debug": debugLog("write Worker " + workerNum + ": " + event.data.data + "\n"); break; case "error": LogError("got error from write Worker " + workerNum + ": " + event.data.data + "\n"); pendingWriteCount = 0; stdinOpenState[workerNum] = PIPE_STATE_CLOSED; exitCode = -2; } }; wrk.onerror = function(error) { pendingWriteCount = 0; exitCode = -2; closeWriteHandle(wrk); LogError("got error from write Worker " + workerNum + ": " + error.message + "\n"); }; var pipePtr = parseInt(fileDesc, 10); wrk.postMessage({ msg: "init", libc: options.libc, pipe: pipePtr }); return wrk; } /* * writeToPipe() * @writeWorker: worker object that processes the data * @data: String containing the data to write * * Write data to the subprocess' stdin (equals to sending a request to the * ChromeWorker object to write the data). */ function writeToPipe(workerNum, data) { if (stdinOpenState[workerNum] == PIPE_STATE_CLOSED) { LogError("trying to write data to closed stdin"); return; } ++pendingWriteCount; debugLog("sending " + data.length + " bytes to writing Worker " + workerNum + "\n"); writeWorker[workerNum].postMessage({ msg: 'write', data: data }); } /* * closeStdinHandle() * * Close the stdin pipe, either directly or by requesting the ChromeWorker to * close the pipe. The ChromeWorker will only close the pipe after the last write * request process is done. */ function closeWriteHandle(workerNum) { debugLog("trying to close input pipe for worker " + workerNum + "\n"); if (stdinOpenState[workerNum] != PIPE_STATE_OPEN) return; stdinOpenState[workerNum] = PIPE_STATE_CLOSEABLE; if (writeWorker[workerNum]) { debugLog("sending close stdin to worker " + workerNum + "\n"); writeWorker[workerNum].postMessage({ msg: 'close' }); } else { stdinOpenState[workerNum] = PIPE_STATE_CLOSED; debugLog("Closing Stdin for " + workerNum + "\n"); if (!workerNum) if (close(child.stdin)) LogError("CloseHandle stdin failed"); else { let wrk = 0; for (let i = 0; i < options.pipes.length; i++) { if (options.pipes[i].writeFd) { ++wrk; if (wrk == workerNum) { if (close(child.writeFdParent[i])) LogError("CloseHandle stdin failed"); } } } } } } /* * createReader(pipe, name, callbackFunc) * * @pipe: handle to the pipe * @name: String containing the pipe name (stdout or stderr) * @callbackFunc: function to be called with the read data * * Create a ChromeWorker object for reading data asynchronously from * the pipe (i.e. on a separate thread), and passing the result back to * the caller. * */ function createReader(pipe, name, callbackFunc) { debugLog("Opening pipe: " + pipe + "\n"); var worker = new ChromeWorker("subprocess_worker_unix.js"); worker.onmessage = function(event) { switch (event.data.msg) { case "data": debugLog("got " + event.data.count + " bytes from " + name + "\n"); var data = convertBytes(event.data.data, options.charset); callbackFunc(data); break; case "done": debugLog("Pipe " + name + " closed\n"); if (event.data.data !== 0) workerExitCode = event.data.data; --readers; if (readers === 0) cleanup(); break; case "error": LogError("Got error from " + name + ": " + event.data.data); exitCode = -2; break; default: debugLog("Got msg from " + name + ": " + event.data.data + "\n"); } }; worker.onerror = function(error) { LogError("Got error from " + name + ": " + error.message); exitCode = -2; }; worker.postMessage({ msg: 'read', pipe: pipe, pid: pid, libc: options.libc, charset: !options.charset ? "null" : options.charset, bufferedOutput: options.bufferedOutput, name: name }); return worker; } /* * readPipes() * * Open the pipes for reading from stdout and stderr */ function readPipes() { stdoutWorker = createReader(child.stdout, "stdout", function(data) { if (options.stdout) { setTimeout(function() { options.stdout(data); }, 0); } else { output += data; } }); if (!options.mergeStderr) stderrWorker = createReader(child.stderr, "stderr", function(data) { if (options.stderr) { setTimeout(function() { options.stderr(data); }, 0); } else { error += data; } }); function flusher(pipe) { return function(data) { setTimeout(function() { pipe.readFd(data); }, 0); }; } if (options.pipes) { for (let i = 0; i < options.pipes.length; i++) { if (typeof(options.pipes[i].readFd) == "function") { let pipe = options.pipes[i]; let wrk = createReader(child.otherFdParent[i], "fd_" + (i + 3), flusher(pipe)); readFdWorker.push(wrk); } } } } function cleanup() { debugLog("Cleanup called\n"); var i; if (active) { active = false; for (i = 0; i < writeWorker.length; i++) { if (writeWorker[i]) closeWriteHandle(i); // should only be required in case of errors } var result, status = ctypes.int(); result = waitpid(child.pid, status.address(), 0); if (exitCode > -2) { if (result > 0) exitCode = status.value; else if (workerExitCode >= 0) exitCode = workerExitCode; else exitCode = status.value; } exitCode = exitCode % 0xFF; for (i = 0; i < writeWorker.length; i++) { if (writeWorker[i]) writeWorker[i].postMessage({ msg: 'stop' }); } setTimeout(function _done() { if (options.done) { try { options.done({ exitCode: exitCode, stdout: output, stderr: error }); } catch (ex) { // prevent from blocking if options.done() throws an error done = true; throw ex; } } done = true; }, 0); libc.close(); } } /** * Start wrinting on a pipe. The corresponding worker needs to exist. * @workerNum: Number of the worker (0 = stdin) * @pipeWriteFunc: Function or String that writes data to the pipe */ function startWriting(workerNum, pipeWriteFunc) { debugLog("startWriting called for " + workerNum + "\n"); if (stdinOpenState[workerNum] == PIPE_STATE_NOT_INIT) { setTimeout(function _f() { startWriting(workerNum, pipeWriteFunc); }, 2); return; } if (typeof(pipeWriteFunc) == 'function') { try { pipeWriteFunc({ write: function(data) { writeToPipe(workerNum, data); }, close: function() { closeWriteHandle(workerNum); } }); } catch (ex) { // prevent from failing if options.stdin() throws an exception closeWriteHandle(workerNum); throw ex; } } else { debugLog("writing <" + pipeWriteFunc + "> to " + workerNum + "\n"); writeToPipe(workerNum, pipeWriteFunc); closeWriteHandle(workerNum); } } //main var cmdStr = getCommandStr(options.command); var workDir = getWorkDir(options.workdir); child = {}; pid = popen(cmdStr, workDir, options.arguments, options.environment, child); debugLog("subprocess started; got PID " + pid + "\n"); readPipes(); var workerNum = 0; if (options.stdin) { writeWorker[0] = createWriter(child.stdin, 0); startWriting(0, options.stdin); ++workerNum; } else closeWriteHandle(0); if (options.pipes) { for (let i = 0; i < options.pipes.length; i++) { if (options.pipes[i].writeFd) { stdinOpenState.push(PIPE_STATE_NOT_INIT); writeWorker.push(createWriter(child.otherFdParent[i], workerNum)); startWriting(workerNum, options.pipes[i].writeFd); ++workerNum; } } } return { wait: function() { // wait for async operations to complete var thread = Cc['@mozilla.org/thread-manager;1'].getService(Ci.nsIThreadManager).currentThread; while (!done) thread.processNextEvent(true); return exitCode; }, kill: function(hardKill) { if (!active) return true; var rv = kill(pid, (hardKill ? 9 : 15)); cleanup(-1); return rv; } }; } enigmail/ipc/modules/subprocess_worker_unix.js000066400000000000000000000243741266701624400222720ustar00rootroot00000000000000/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * ChromeWorker Object subprocess.jsm on Unix-like systems (Linux, Mac OS X, ...) * to process stdin/stdout/stderr on separate threads. * */ // Being a ChromeWorker object, implicitly uses the following: // Components.utils.import("resource://gre/modules/ctypes.jsm"); /* global ctypes: false, onmessage: true */ "use strict"; const BufferSize = 1024; const MaxBufferLen = 102400; var libc = null; var libcFunc = {}; var WritePipeHandle = null; /* struct pollfd { int fd; // file descriptor short events; // events to look for short revents; // events returned }; */ var pollfd = new ctypes.StructType("pollfd", [{ 'fd': ctypes.int }, { 'events': ctypes.short }, { 'revents': ctypes.short }]); var WriteBuffer = ctypes.uint8_t.array(BufferSize); var ReadBuffer = ctypes.uint8_t.array(BufferSize); const POLLIN = 0x0001; const POLLOUT = 0x0004; const POLLERR = 0x0008; // some poll error occurred const POLLHUP = 0x0010; // file descriptor was "hung up" const POLLNVAL = 0x0020; // requested events "invalid" const WNOHANG = 0x01; const ECHILD = 10; const EPIPE = 32; /* Broken pipe */ const EAGAIN = 35; /* Resource temporarily unavailable */ const EINPROGRESS = 36; /* Operation now in progress */ const EALREADY = 37; /* Operation already in progress */ const pid_t = ctypes.int32_t; const INDEFINITE = -1; const NOWAIT = 0; const WAITTIME = 200; // wait time for poll() in ms function initLibc(libName) { postMessage({ msg: "debug", data: "initialising library with " + libName }); libc = ctypes.open(libName); libcFunc.pollFds = pollfd.array(1); // int poll(struct pollfd fds[], nfds_t nfds, int timeout); libcFunc.poll = libc.declare("poll", ctypes.default_abi, ctypes.int, libcFunc.pollFds, ctypes.unsigned_int, ctypes.int); //ssize_t write(int fd, const void *buf, size_t count); // NOTE: buf is declared as array of unsigned int8 instead of char to avoid // implicit charset conversion libcFunc.write = libc.declare("write", ctypes.default_abi, ctypes.int, ctypes.int, WriteBuffer, ctypes.int); //int read(int fd, void *buf, size_t count); libcFunc.read = libc.declare("read", ctypes.default_abi, ctypes.int, ctypes.int, ReadBuffer, ctypes.int); //int pipe(int pipefd[2]); libcFunc.pipefd = ctypes.int.array(2); //int close(int fd); libcFunc.close = libc.declare("close", ctypes.default_abi, ctypes.int, ctypes.int); //pid_t waitpid(pid_t pid, int *status, int options); libcFunc.waitpid = libc.declare("waitpid", ctypes.default_abi, pid_t, pid_t, ctypes.int.ptr, ctypes.int); } function createNpeError() { let e = new Error("NULL Poiner", "npeError", 1); try { // throw an error and catch it to get a stack trace throw e; } catch (ex) { postMessage({ msg: "error", data: "Got NULL pointer error\n" + ex.stack }); } return; } function closePipe(pipe) { if (!pipe) { createNpeError(); return; } libcFunc.close(pipe); } function writePipe(pipe, data) { postMessage({ msg: "debug", data: "trying to write to " + pipe }); let numChunks = Math.floor(data.length / BufferSize); let pData = new WriteBuffer(); for (var chunk = 0; chunk <= numChunks; chunk++) { let numBytes = chunk < numChunks ? BufferSize : data.length - chunk * BufferSize; for (var i = 0; i < numBytes; i++) { pData[i] = data.charCodeAt(chunk * BufferSize + i) % 256; } let bytesWritten = libcFunc.write(pipe, pData, numBytes); if (bytesWritten != numBytes) { postMessage({ msg: "error", data: "error: write failed, errno=" + ctypes.errno }); closePipe(pipe); libc.close(); close(); } } postMessage({ msg: "info", data: "wrote " + data.length + " bytes of data" }); } function readString(data, length, charset) { var r = ''; for (var i = 0; i < length; i++) { if (data[i] === 0 && charset != "null") // stop on NULL character for non-binary data break; r += String.fromCharCode(data[i]); } // For non-UTF-8 strings, the next read always starts at the beginning. data[0] = 0; return r; } function readUtf8(data, length) { // This function provides better performance for UTF-8 strings by using // the readStringReplaceMalformed() method available on CData string // objects. Before we can call it, though, we have to check the end of // the string to see if we only read part of a multi-byte character. var endChar = []; if (data[length - 1] >= 0x80) { // Collect all bytes from the last character if it's a non-ASCII. for (let i = length - 1; i >= 0; i--) { endChar.unshift(data[i]); if (data[i] >= 0xc0) break; } // Find out how long the character should be from the first byte. var leadingOne = 0x20; var numBytes = 2; while (endChar[0] & leadingOne) { numBytes++; leadingOne >>= 1; } // If we read the full character, we don't need to do anything special. if (endChar.length == numBytes) endChar = []; } // Mark the end of the string, excluding any trailing partial character. data[length - endChar.length] = 0; var r = data.readStringReplaceMalformed(); // Place the partial character at the beginning for the next read. let i = 0; endChar.forEach(function(v) { data[i++] = v; }); // Place a null character to mark where the next read should start. data[i] = 0; return r; } function readPipe(pipe, charset, pid, bufferedOutput) { var p = new libcFunc.pollFds(); p[0].fd = pipe; p[0].events = POLLIN | POLLERR | POLLHUP; p[0].revents = 0; var pollTimeout = WAITTIME; var exitCode = -1; var readCount = 0; var result, status = ctypes.int(); result = 0; var dataStr = ""; var dataObj = {}; var line = new ReadBuffer(); const i = 0; while (true) { if (result === 0) { result = libcFunc.waitpid(pid, status.address(), WNOHANG); if (result > 0) { pollTimeout = NOWAIT; exitCode = parseInt(status.value, 10); postMessage({ msg: "debug", data: "waitpid signaled subprocess stop, exitcode=" + status.value }); } else if (result < 0) { postMessage({ msg: "debug", data: "waitpid returned with errno=" + ctypes.errno }); if (ctypes.errno == ECHILD) { pollTimeout = NOWAIT; } } } p[i].revents = 0; var r = libcFunc.poll(p, 1, pollTimeout); if (pollTimeout == NOWAIT) { readCount = 0; } if (r > 0) { if (p[i].revents & POLLIN) { // postMessage({msg: "debug", data: "reading next chunk"}); readCount = readPolledFd(p[i].fd, line, charset, dataObj); if (!bufferedOutput) postMessage({ msg: "data", data: dataObj.value, count: dataObj.value.length }); else { dataStr += dataObj.value; if (dataStr.length > MaxBufferLen) { postMessage({ msg: "data", data: dataStr, count: dataStr.length }); dataStr = ""; } } if (readCount === 0) break; } if (p[i].revents & POLLHUP) { postMessage({ msg: "debug", data: "poll returned HUP" }); break; } else if (p[i].revents & POLLERR) { postMessage({ msg: "error", data: "poll returned error" }); break; } else if (p[i].revents != POLLIN) { postMessage({ msg: "error", data: "poll returned " + p[i] }); break; } } else if (pollTimeout == NOWAIT || r < 0) break; } // continue reading until the buffer is empty while (readCount > 0) { readCount = readPolledFd(pipe, line, charset, dataObj); if (!bufferedOutput) postMessage({ msg: "data", data: dataObj.value, count: dataObj.value.length }); else dataStr += dataObj.value; libcFunc.poll(p, 1, NOWAIT); } if (bufferedOutput) postMessage({ msg: "data", data: dataStr, count: dataStr.length }); libcFunc.close(pipe); postMessage({ msg: "done", data: exitCode }); libc.close(); close(); } function readPolledFd(pipe, line, charset, dataObj) { // Start reading at first null byte (line might begin with an // incomplete UTF-8 character from the previous read). var offset = 0; while (line[offset] !== 0) offset++; var r = libcFunc.read(pipe, line.addressOfElement(offset), BufferSize - offset - 1); if (r > 0) { var readStringFunc = charset == "UTF-8" ? readUtf8 : readString; var c = readStringFunc(line, r + offset, charset); dataObj.value = c; } else dataObj.value = ""; return r; } onmessage = function(event) { switch (event.data.msg) { case "init": if (!event.data.pipe) { createNpeError(); return; } WritePipeHandle = event.data.pipe; initLibc(event.data.libc); postMessage({ msg: "info", data: "InitOK" }); break; case "read": if (!event.data.pipe) { createNpeError(); return; } initLibc(event.data.libc); readPipe(event.data.pipe, event.data.charset, event.data.pid, event.data.bufferedOutput); break; case "write": // data contents: // msg: 'write' // data: the data (string) to write // pipe: ptr to pipe writePipe(WritePipeHandle, event.data.data); postMessage({ msg: "info", data: "WriteOK" }); break; case "close": postMessage({ msg: "debug", data: "closing input pipe\n" }); closePipe(WritePipeHandle); postMessage({ msg: "info", data: "ClosedOK" }); break; case "stop": libc.close(); // do not use libc after this point close(); break; default: throw ("error: Unknown command" + event.data.msg + "\n"); } return; }; enigmail/ipc/modules/subprocess_worker_win.js000066400000000000000000000170201266701624400220720ustar00rootroot00000000000000/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* * ChromeWorker Object subprocess.jsm on Windows to process stdin/stdout/stderr * on separate threads. * */ // Being a ChromeWorker object, implicitly uses the following: // Components.utils.import("resource://gre/modules/ctypes.jsm"); /* global ctypes: false, onmessage: true */ "use strict"; const BufferSize = 1024; const MaxBufferLen = 102400; const BOOL = ctypes.bool; const HANDLE = ctypes.size_t; const DWORD = ctypes.uint32_t; const LPDWORD = DWORD.ptr; const PVOID = ctypes.voidptr_t; const LPVOID = PVOID; /* typedef struct _OVERLAPPED { ULONG_PTR Internal; ULONG_PTR InternalHigh; union { struct { DWORD Offset; DWORD OffsetHigh; }; PVOID Pointer; }; HANDLE hEvent; } OVERLAPPED, *LPOVERLAPPED; */ const OVERLAPPED = new ctypes.StructType("OVERLAPPED"); var ReadFileBuffer = ctypes.uint8_t.array(BufferSize); var WriteFileBuffer = ctypes.uint8_t.array(BufferSize); var kernel32dll = null; var libFunc = {}; function initLib(libName) { var WinABI; if (ctypes.size_t.size == 8) { WinABI = ctypes.default_abi; } else { WinABI = ctypes.winapi_abi; } kernel32dll = ctypes.open(libName); /* BOOL WINAPI WriteFile( __in HANDLE hFile, __in LPCVOID lpBuffer, __in DWORD nNumberOfBytesToWrite, __out_opt LPDWORD lpNumberOfBytesWritten, __inout_opt LPOVERLAPPED lpOverlapped ); NOTE: lpBuffer is declared as array of unsigned int8 instead of char to avoid implicit charset conversion */ libFunc.WriteFile = kernel32dll.declare("WriteFile", WinABI, BOOL, HANDLE, WriteFileBuffer, DWORD, LPDWORD, OVERLAPPED.ptr ); /* BOOL WINAPI ReadFile( __in HANDLE hFile, __out LPVOID ReadFileBuffer, __in DWORD nNumberOfBytesToRead, __out_opt LPDWORD lpNumberOfBytesRead, __inout_opt LPOVERLAPPED lpOverlapped ); */ libFunc.ReadFile = kernel32dll.declare("ReadFile", WinABI, BOOL, HANDLE, ReadFileBuffer, DWORD, LPDWORD, OVERLAPPED.ptr ); /* BOOL WINAPI CloseHandle( __in HANDLE hObject ); */ libFunc.CloseHandle = kernel32dll.declare("CloseHandle", WinABI, BOOL, HANDLE ); } // Windows error codes const ERROR_HANDLE_EOF = 38; const ERROR_BROKEN_PIPE = 109; function writePipe(pipe, data) { var bytesWritten = DWORD(0); var pData = new WriteFileBuffer(); var numChunks = Math.floor(data.length / BufferSize); for (var chunk = 0; chunk <= numChunks; chunk++) { var numBytes = chunk < numChunks ? BufferSize : data.length - chunk * BufferSize; for (var i = 0; i < numBytes; i++) { pData[i] = data.charCodeAt(chunk * BufferSize + i) % 256; } var r = libFunc.WriteFile(pipe, pData, numBytes, bytesWritten.address(), null); if (bytesWritten.value != numBytes) throw ("error: wrote " + bytesWritten.value + " instead of " + numBytes + " bytes"); } postMessage("wrote " + data.length + " bytes of data"); } function readString(data, length, charset) { var r = ''; for (var i = 0; i < length; i++) { if (data[i] === 0 && charset != "null") // stop on NULL character for non-binary data break; r += String.fromCharCode(data[i]); } // For non-UTF-8 strings, the next read always starts at the beginning. data[0] = 0; return r; } function readUtf8(data, length) { // This function provides better performance for UTF-8 strings by using // the readStringReplaceMalformed() method available on CData string // objects. Before we can call it, though, we have to check the end of // the string to see if we only read part of a multi-byte character. var endChar = []; if (data[length - 1] >= 0x80) { // Collect all bytes from the last character if it's a non-ASCII. for (let i = length - 1; i >= 0; i--) { endChar.unshift(data[i]); if (data[i] >= 0xc0) break; } // Find out how long the character should be from the first byte. var leadingOne = 0x20; var numBytes = 2; while (endChar[0] & leadingOne) { numBytes++; leadingOne >>= 1; } // If we read the full character, we don't need to do anything special. if (endChar.length == numBytes) endChar = []; } // Mark the end of the string, excluding any trailing partial character. data[length - endChar.length] = 0; var r = data.readStringReplaceMalformed(); // Place the partial character at the beginning for the next read. let i = 0; endChar.forEach(function(v) { data[i++] = v; }); // Place a null character to mark where the next read should start. data[i] = 0; return r; } function readPipe(pipe, charset, bufferedOutput) { var dataStr = ""; var bytesRead = DWORD(0); var line = new ReadFileBuffer(); var readStringFunc = charset == "UTF-8" ? readUtf8 : readString; while (true) { // Start reading at first null byte (line might begin with an // incomplete UTF-8 character from the previous read). var offset = 0; while (line[offset] !== 0) offset++; var r = libFunc.ReadFile( pipe, line.addressOfElement(offset), BufferSize - offset - 1, bytesRead.address(), null ); if (!r) { // stop if we get an error (such as EOF reached) let lastErr = ctypes.winLastError; switch (lastErr) { case ERROR_HANDLE_EOF: case ERROR_BROKEN_PIPE: postMessage({ msg: "info", data: "EOF reached" }); break; default: postMessage({ msg: "error", data: "Windows error " + lastErr }); } break; } if (bytesRead.value > 0) { var c = readStringFunc(line, bytesRead.value + offset, charset); if (!bufferedOutput) postMessage({ msg: "data", data: c, count: c.length }); else { dataStr += c; if (dataStr.length > MaxBufferLen) { postMessage({ msg: "data", data: dataStr, count: dataStr.length }); dataStr = ""; } } } else { break; } } if (bufferedOutput) postMessage({ msg: "data", data: dataStr, count: dataStr.length }); libFunc.CloseHandle(pipe); postMessage({ msg: "done" }); kernel32dll.close(); close(); } onmessage = function(event) { let pipePtr; switch (event.data.msg) { case "init": initLib(event.data.libc); postMessage("InitOK"); break; case "write": // data contents: // msg: 'write' // data: the data (string) to write // pipe: ptr to pipe pipePtr = HANDLE.ptr(event.data.pipe); writePipe(pipePtr.contents, event.data.data); postMessage("WriteOK"); break; case "read": initLib(event.data.libc); pipePtr = HANDLE.ptr(event.data.pipe); readPipe(pipePtr.contents, event.data.charset, event.data.bufferedOutput); break; case "close": pipePtr = HANDLE.ptr(event.data.pipe); postMessage("closing stdin\n"); if (libFunc.CloseHandle(pipePtr.contents)) { postMessage("ClosedOK"); } else postMessage("Could not close stdin handle"); break; case "stop": kernel32dll.close(); close(); break; default: throw ("error: Unknown command" + event.data.msg + "\n"); } return; }; enigmail/ipc/readme.os2000066400000000000000000000013621266701624400153120ustar00rootroot00000000000000IPC for OS/2 and eComstation ================================= BUILD INSTRUCTIONS --------------------------------- To build IPC for OS/2, you must first create Makefiles with the included MAKEMAKE.CMD script. The script accepts the following arguments. MAKEMAKE.CMD [/R] [ObjDir] /R: build recursively all Makefiles ObjDir: should correspond to the MOZ_OBJDIR parameter of your .mozconfig, if defined. Then, simply go to %MOZ_OBJDIR\extensions\ipc and do a make. CONTACTS --------------------------------- For questions specific to the OS/2 port of IPC, contact Davide Bresolin at davide@teamos2.it. For general questions about Enigmail, see the official enigmail web site at http://www.enigmail.net enigmail/ipc/tests/000077500000000000000000000000001266701624400145705ustar00rootroot00000000000000enigmail/ipc/tests/.eslintrc.js000066400000000000000000000000671266701624400170320ustar00rootroot00000000000000module.exports = { "rules": { "strict": 0, } } enigmail/ipc/tests/IpcCat.pl000077500000000000000000000032231266701624400162730ustar00rootroot00000000000000#!perl # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # Helper tool to read or write data to/from stdin/stdout # # Usage: # IpcCat {write|read|dump|getenv} arg # # Parameters: # write: read from stdin and write to file # read: read from file and write to stdout # dump: read from stdin; write to stdout # getenv: print value of environment variable # # Exit codes: # 0: success # > 0: failure use Env; sub readFile { my $fn = $_[0]; open IN, $fn or die $!; my $r = ""; while () { $r .= $_; } close IN; return $r; } if ($#ARGV < 0) { exit(1); } #$| = 1; # disable buffering of output # wait a little before doing anything select(undef, undef, undef, 0.1); if ($ARGV[0] =~ /^dump$/i) { print STDERR "Starting dump\n"; my $buf = readFile("-"); print $buf; print STDERR sprintf("Dumped %d bytes\n", length($buf)); } elsif ($ARGV[0] =~ /^read$/i) { print STDERR "Starting read\n"; my $buf = readFile($ARGV[1]); print $buf; print STDERR sprintf("Read %d bytes\n", length($buf)); } elsif ($ARGV[0] =~ /^write$/i) { my $of = $ARGV[1]; open(OF, ">$of") or die $!; print STDERR "Starting write\n"; my $buf = readFile("-"); print OF $buf; close(OF); print STDERR sprintf("Wrote %d bytes\n", length($buf)); } elsif ($ARGV[0] =~ /^getenv$/i) { print STDERR sprintf("Reading environment variable %s\n", $ARGV[1]); print STDOUT $ENV{$ARGV[1]}; } else { print STDERR "Invalid arguments\n"; exit(1); } exit(0); enigmail/ipc/tests/Makefile000066400000000000000000000005301266701624400162260ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = ../.. include $(DEPTH)/config/autoconf.mk UNITTEST = ifneq ($(TB_PATH),"") UNITTEST = $(JSUNIT) main.js endif all: $(UNITTEST) enigmail/ipc/tests/main.js000066400000000000000000000004521266701624400160530ustar00rootroot00000000000000/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* global do_subtest:false */ // the subprocess tests do_subtest("subprocess-test.js"); enigmail/ipc/tests/subprocess-test.js000066400000000000000000000163621266701624400203030ustar00rootroot00000000000000/* global Components: false, Assert: false, do_get_file: false, do_print: false, do_get_cwd: false */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * This file tests the implementation of subprocess.jsm */ Components.utils.import("resource://enigmail/subprocess.jsm"); /* global subprocess: false */ const Cc = Components.classes; const Ci = Components.interfaces; var gTestLines; var gResultData; var gResultStdErr; function run_test() { var isWindows = ("@mozilla.org/windows-registry-key;1" in Components.classes); var dataFile = do_get_file("ipc-data.txt", true); var env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); var plPath = env.get("PL_PATH"); Assert.ok(plPath.length > 0, "PL_PATH length is > 0"); if (plPath.length === 0) throw "perl path undefined"; var pl = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); pl.initWithPath(plPath); if (!pl.exists()) throw "Could not locate the perl executable"; var processDir = do_get_cwd(); var cmd = processDir.clone(); cmd.append("IpcCat.pl"); if (!cmd.exists()) throw "Could not locate the IpcCat.pl helper executable"; var dirSvc = Cc["@mozilla.org/file/directory_service;1"]. getService(Ci.nsIProperties). QueryInterface(Ci.nsIDirectoryService); var greDir = dirSvc.get("GreD", Ci.nsIFile); var envList = [ "DYLD_LIBRARY_PATH=" + greDir.path, // for Mac "LD_LIBRARY_PATH=" + greDir.path // for Linux ]; var eol = isWindows ? "\r\n" : "\n"; gTestLines = ["Writing example data" + eol, "Writing something more" + eol, "And yet some more text" + eol ]; ///////////////////////////////////////////////////////////////// // Test standard scenario ///////////////////////////////////////////////////////////////// do_print("Standard scenario"); gResultData = ""; gResultStdErr = ""; var p = subprocess.call({ command: pl, arguments: [cmd.path, 'dump'], environment: envList, stdin: function(pipe) { for (var i = 0; i < gTestLines.length; i++) { pipe.write(gTestLines[i]); } pipe.close(); }, stdout: function(data) { gResultData += data; }, stderr: function(data) { gResultStdErr += data; }, done: function(result) { Assert.equal(0, result.exitCode, "exit code"); }, mergeStderr: false }); p.wait(); Assert.equal( gTestLines.join(""), gResultData, "result matching" ); let len = gTestLines.join("").length; if (isWindows) { len -= gTestLines.length; } Assert.equal( "Starting dump\nDumped " + len + " bytes\n", gResultStdErr.replace(/\r\n/g, "\n"), "stderr result matching" ); ///////////////////////////////////////////////////////////////// // Test mergeStderr=true & stdin as string ///////////////////////////////////////////////////////////////// do_print("mergeStderr=true & stdin as string"); gResultData = ""; p = subprocess.call({ command: pl, arguments: [cmd.path, 'dump'], environment: envList, stdin: gTestLines.join(""), stdout: function(data) { gResultData += data; }, stderr: function(data) { Assert.ok(false, "Got unexpected data '" + data + "' on stderr\n"); }, done: function(result) { Assert.equal(0, result.exitCode, "exit code"); }, mergeStderr: true }); p.wait(); Assert.equal(gTestLines.join("").length + (isWindows ? 32 : 30), gResultData.length, "comparing result"); ///////////////////////////////////////////////////////////////// // Test with workdir & no stderr ///////////////////////////////////////////////////////////////// do_print("workdir & no stderr"); gResultData = ""; p = subprocess.call({ command: pl, arguments: [cmd.path, 'dump'], environment: envList, workdir: do_get_file(".", true), stdin: function(pipe) { for (var i = 0; i < gTestLines.length; i++) { pipe.write(gTestLines[i]); } pipe.close(); }, done: function(result) { gResultData = result.stdout; Assert.equal(0, result.exitCode, "exit code"); }, mergeStderr: false }); p.wait(); Assert.equal(gTestLines.join(""), gResultData, "comparing result"); ///////////////////////////////////////////////////////////////// // Test exit code != 0 ///////////////////////////////////////////////////////////////// gResultData = ""; gResultStdErr = ""; p = subprocess.call({ command: pl, arguments: [cmd.path, 'wrong', 'arguments'], environment: envList, stdin: "Dummy text", stdout: function(data) { gResultData += data; }, stderr: function(data) { gResultStdErr += data; }, done: function(result) {}, mergeStderr: false }); var exitCode = p.wait(); // Assert.notEqual(0, exitCode, "expecting non-zero exit code"); // fails from time to time Assert.equal("", gResultData, "comapring result"); gResultStdErr = gResultStdErr.replace(/\r\n/g, "\n"); Assert.equal(18, gResultStdErr.length, "check error message"); ///////////////////////////////////////////////////////////////// // Test minimal scenario with stdout only ///////////////////////////////////////////////////////////////// do_print("minimal scenario with stdin and stdout separately"); gResultData = ""; gResultStdErr = ""; p = subprocess.call({ command: pl, arguments: [cmd.path, 'write', dataFile.path], stdin: gTestLines.join("") }); p.wait(); p = subprocess.call({ command: pl, arguments: [cmd.path, 'read', dataFile.path], environment: envList, stdin: "", stdout: function(data) { gResultData += data; } }); p.wait(); Assert.equal(gTestLines.join(""), gResultData, "read file"); ///////////////////////////////////////////////////////////////// // Test minimal scenario with done only ///////////////////////////////////////////////////////////////// do_print("minimal scenario with done only"); gResultData = ""; gResultData = ""; p = subprocess.call({ command: pl, charset: null, arguments: [cmd.path, 'read', dataFile.path], environment: envList, done: function(result) { gResultData = result.stdout; gResultStdErr = result.stderr.replace(/\r\n/g, "\n"); Assert.equal(0, result.exitCode, "exit code"); Assert.equal(gTestLines.join(""), gResultData, "stdout"); Assert.equal(gResultStdErr.length, 28, "stderr"); } }); p.wait(); ///////////////////////////////////////////////////////////////// // Test environment variables ///////////////////////////////////////////////////////////////// do_print("environment variables"); gTestLines = ["This is a test variable"]; envList.push("TESTVAR=" + gTestLines[0]); gResultData = ""; p = subprocess.call({ command: pl.path, arguments: [cmd.path, 'getenv', 'TESTVAR'], cwd: do_get_file(".", true), environment: envList, done: function(result) { gResultData = result.stdout; Assert.equal(0, result.exitCode, "exit code"); }, mergeStderr: false }); p.wait(); Assert.equal(gTestLines.join(""), gResultData, "variable comparison"); } enigmail/lang/000077500000000000000000000000001266701624400135745ustar00rootroot00000000000000enigmail/lang/Makefile000066400000000000000000000020621266701624400152340ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = .. define copyLang = mkdir -p $(BUILD)/lang/$^ endef DO_FIX_LANG = NO_GEN_FILES = include ../config/autoconf.mk ifneq ($(FIX_LANGUAGES),no) DO_FIX_LANG = prepFiles else NO_GEN_FILES = -ng endif all: jar ifneq ($(ENABLE_LANG),no) languages = $(shell cat current-languages.txt) EXPORT_CMD = $(PERL) $(DEPTH)/util/make-lang-xpi.pl $(NO_GEN_FILES) current-languages.txt $(BUILD)/lang else languages = EXPORT_CMD = echo "" > $(BUILD)/lang/jar.mn endif prepFiles: for l in $(languages); do \ $(PERL) $(DEPTH)/util/fixlang.pl $(DEPTH)/ui/locale/en-US $$l; \ done export: $(DO_FIX_LANG) mkdir -p $(BUILD)/lang $(EXPORT_CMD) jar: export $(PYTHON) ../util/JarMaker.py -j $(DIST)/chrome -t . -f jar $(BUILD)/lang/jar.mn clean: for l in $(languages); do \ rm -f $$l/enigmail.dtd.gen $$l/enigmail.properties.gen; \ done rm -f $(BUILD)/lang/jar.mn enigmail/lang/ar/000077500000000000000000000000001266701624400141765ustar00rootroot00000000000000enigmail/lang/ar/am-enigprefs.properties000066400000000000000000000001251266701624400206670ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=خصوصية OpenPGP enigmail/lang/ar/enigmail.dtd000066400000000000000000001000021266701624400164510ustar00rootroot00000000000000 ملاحظة: قد يستغرق توليد Ø§Ù„Ù…ÙØªØ§Ø­ بضع دقائق ليتم. لا تغلق التطبيق أثناء توليد Ø§Ù„Ù…ÙØªØ§Ø­. Ø§Ù„ØªØµÙØ­ بنشاط أو إجراء عمليات تستخدم القرص Ø¨ÙƒØ«Ø§ÙØ© Ù…Ùيد لملء 'وعاء العشوائية' ÙˆØ³ÙŠÙØ³Ø±Ù‘ÙØ¹ التوليد. ستبلّغ عندما يتم التوليد."> ' غير مقبول"> ملاحظة: قد يستغرق توليد Ø§Ù„Ù…ÙØªØ§Ø­ بضع دقائق ليتم. لا تغلق التطبيق أثناء توليد Ø§Ù„Ù…ÙØªØ§Ø­. ستبلّغ٠عند تمام التوليد."> لاحظ: سيقوم Enigmail دائما بالتحقق من التوقيعات على البريد لكل حساب أو هوية، بغض النظر عن ØªÙØ¹ÙŠÙ„ها من عدمه"> شكرًا لاستخدامك Enigmail."> enigmail/lang/ar/enigmail.properties000066400000000000000000000661351266701624400201140ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=تنبيه Enigmail enigConfirm=تأكيد Enigmail enigError=عطل Enigmail enigPrompt=محث Enigmail dlgYes=&نعم dlgNo=&لا dlgKeepSetting=تذكر إجابتي ولا تسألني ثانية dlgNoPrompt=لا تظهر هذا الحوار ثانية dlg.button.delete=ا&حذ٠dlg.button.cancel=أل&غ٠dlg.button.close=أغل&Ù‚ dlg.button.continue=وا&صل dlg.button.skip=أغ&ÙÙ„ dlg.button.view=&عاين repeatPrefix=\n\nسيتكرر هذا التنبيه %S repeatSuffixSingular=مرة أخرى. repeatSuffixPlural=مرات أخرى. noRepeat=\n\nلن يتكرر هذا التنبيه إلى أن ØªØ­Ø¯Ù‘ÙØ« Enigmail. pgpNotSupported=يبدو أنك تستخدم Enigmail مع PGP 6.x\n\nÙ„Ù„Ø£Ø³ÙØŒ PGP 6.x به بعض الأمر التي تمنع Enigmail من العمل جيدا. لذا لم يعد Enigmail يدعم PGP 6.xØŒ من ÙØ¶Ù„Ùƒ انتقل إلى GnuPG (GPG) كبديل.\n\nإذا احتجت للمساعدة حول الانتقال إلى GnuPGØŒ راجع قسم المساعدة ÙÙŠ موقع Enigmail. passphraseCleared=لم تÙمح كلمة السر noPhotoAvailable=لا توجد صور debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Photo path '%S' is not readable usingVersion=ÙŠÙØ´ØºÙ„ Enigmail إصدارة %S usingAgent=يستخدم %S التنÙيذي %S للتعمية والتظهير agentError=عطل: ÙØ´Ù„ت ÙÙŠ Ø§Ù„Ù†ÙØ§Ø° إلى خدمة Enigmime accessError=عطل أثناء Ø§Ù„Ù†ÙØ§Ø° لخدمة Enigmime onlyGPG=يعمل توليد Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ùقط مع GnuPG (وليس PGP)! keygenComplete=اكتمل توليد Ø§Ù„Ù…ÙØªØ§Ø­! Ø³ØªÙØ³ØªØ®Ø¯Ù… الهوية <%S> للتوقيع. revokeCertRecommended=ننصح بشدة أن تنشئ شهادة نقض Ø§Ù„Ù…ÙØªØ§Ø­. لتستخدم هذه لشهادة لإبطال Ø§Ù„Ù…ÙØªØ§Ø­ØŒ مثلا ÙÙŠ حال ضياع Ø§Ù„Ù…ÙØªØ§Ø­ السري أو انكشاÙÙ‡. أتريد إنشاءها الآن؟ keyMan.button.generateCert=&ÙˆÙ„Ù‘ÙØ¯ شهادة genCompleteNoSign=تم توليد Ø§Ù„Ù…ÙØªØ§Ø­! genGoing=توليد Ø§Ù„Ù…ÙØªØ§Ø­ جار Ø¨Ø§Ù„ÙØ¹Ù„! passNoMatch=عبارتا السر لا تتطابقا، أعد الإدخال من ÙØ¶Ù„Ùƒ passCheckBox=من ÙØ¶Ù„Ùƒ أشّر هذا إن كنت لن تضع عبارة سر Ù„Ù„Ù…ÙØªØ§Ø­ (غير محبذ) passUserName=من ÙØ¶Ù„Ùƒ حدد اسم المستخدم لهذه الهوية changePassFailed=ÙØ´Ù„ تغيير كلمة السر. keyConfirm=أأولد Ù…ÙØ§ØªØ­ÙŠÙ† لأجل '%S'ØŸ keyMan.button.generateKey=ÙˆÙ„Ù‘ÙØ¯ Ù…&ÙØªØ§Ø­Ø§ keyAbort=أأجهض توليد Ø§Ù„Ù…ÙØªØ§Ø­ØŸ keyMan.button.generateKeyAbort=أجه&ض توليد Ø§Ù„Ù…ÙØªØ§Ø­ keyMan.button.generateKeyContinue=&عاود توليد Ø§Ù„Ù…ÙØªØ§Ø­ expiryTooLong=لا يمكنك إنشاء Ù…ÙØªØ§Ø­ تنتهي صلاحيته بعد أكثر من 100 عام. expiryTooShort=يجب أن يكون Ø§Ù„Ù…ÙØªØ§Ø­ صالحا ليوم واحد على الأقل. keyGenFailed=ÙØ´Ù„ توليد Ø§Ù„Ù…ÙØªØ§Ø­. من ÙØ¶Ù„Ùƒ راجع مرقاب Enigmail (قائمة Enigmail > تنقيح Enigmail) لمزيد من Ø§Ù„ØªÙØ§ØµÙŠÙ„. # Strings in enigmailMessengerOverlay.js securityInfo=معلومات خصوصية Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *مرÙقات هذه الرسالة لم تÙوقّع أو ØªÙØ¹Ù…ّى*\n\n possiblyPgpMime=قد تكون رسالة PGP/MIME معماة أو موقّعة؛ انقر 'Ø¸Ù‡Ù‘ÙØ±' للتأكد noDecrypted=لا توجد رسائل Ù…ÙØ¸Ù‡Ù‘َرة Ù„ØªÙØ­Ùظ!\nاستخدم أمر 'Ø§Ø­ÙØ¸' من قائمة مل٠noMessage=لا رسائل Ù„ØªÙØ­Ùظ! useButton=من ÙØ¶Ù„Ùƒ انقر زر 'Ø¸Ù‡Ù‘ÙØ±' لتظهير الرسالة saveHeader=Enigmail: Ø§Ø­ÙØ¸ الرسالة Ø§Ù„Ù…ÙØ¸Ù‡Ù‘َرة saveAttachmentHeader=Enigmail: Ø§Ø­ÙØ¸ المرÙقة Ø§Ù„Ù…ÙØ¸Ù‡Ù‘َرة noTempDir=تعذّر العثور على دليل مؤقت للكتابه Ùيه\nمن ÙØ¶Ù„Ùƒ اضبط متغير البيئة TEMP attachmentPgpKey=المرÙقة '%S' الذي ØªÙØªØ­Ù‡Ø§ تبدو ÙƒÙ…Ù„Ù Ù…ÙØ§ØªÙŠØ­ OpenPGP.\n\nانقر 'نعم' لتصدير Ø§Ù„Ù…ÙØ§ØªÙŠØ­ التي تحتويها أو 'لا' لعرض محتويات المل٠ÙÙŠ Ù†Ø§ÙØ°Ø© Ø§Ù„Ù…ØªØµÙØ­ beginPgpPart=********* *بداية الجزء المعمى أو الموقّع* ********* endPgpPart=********* *نهاية الجزء المعمى أو الموقّع* ********* notePartEncrypted=Enigmail: *تحوي هذه الرسالة أجزاءً لم تÙوقّع أو ØªÙØ¹Ù…ّى* noteCutMessage=Enigmail: *توجد عدة كتل رسائل -- Ø£ÙØ¬Ù‡Ø¶ التظهير/التحقق* decryptOkNoSig=تحذير\n\nكان التظهير ناجحا، لكن تعذر التحقق من التوقيع بشكل صحيح msgOvl.button.contAnyway=&واصل على أي حال signature.verifiedOK=The signature for attachment %S was successfully verified signature.verifyFailed=The signature for attachment %S could not be verified attachment.noMatchToSignature=Could not match attachment '%S' to a signature file attachment.noMatchFromSignature=Could not match signature file '%S' to an attachment keysToExport=اختر Ù…ÙØªØ§Ø­ OpenPGP لإدراجه keysToUse=اختر Ù…ÙØªØ§Ø­ OpenPGP لاستخدامه لأجل %S pubKey=Ù…ÙØªØ§Ø­ %S العلني\n windowLocked=Ù†Ø§ÙØ°Ø© التحرير Ù…ÙÙ‚Ùلة؛ Ø£ÙلغÙÙŠ الإرسال sendUnencrypted=ÙØ´Ù„ بدء Enigmail.\nأأرسل رسالة غير Ù…ÙØ¹Ù…ّاة؟ composeSpecifyEmail=من ÙØ¶Ù„Ùƒ حدد عنوان بريدك الأساسي الذي Ø³ÙŠÙØ³ØªØ®Ø¯Ù… لاختيار Ù…ÙØªØ§Ø­ توقيع الرسائل الصادرة.\n إذا تركته خاويا ÙØ³ÙŠØ³ØªØ®Ø¯Ù… عنوان حقل 'Ù…ÙÙ†' ÙÙŠ الرسالة لاختيار Ù…ÙØªØ§Ø­ التوقيع. sendingHiddenRcpt=بعض متلقي هذه الرسالة يتلقونها ÙÙŠ العماء (BCC)ØŒ إن عÙمّÙيت هذه الرسالة Ùلن تظهر أسماؤهم كمتلقين للرسالة غير أن بعض أدوات التعمية (مثل التي تنتجها شركة PGP) لن يكون يمكنها تظهير الرسالة، لذا Ù†ÙØ­Ø¨Ù‘ÙØ° ØªÙØ§Ø¯ÙŠ Ø§Ù„Ù…Ø²Ø§ÙˆØ¬Ø© بين التعمية Ùˆ المتلقين ÙÙŠ العماء (BCC) sendWithHiddenBcc=أخÙ٠المتلقين ÙÙŠ العماء (BCC) sendWithShownBcc=عمّ٠كالمعتاد sendingNews=Ø£ÙØ¬Ù‡Ùضت عمليّة الإرسال Ø§Ù„Ù…ÙØ¹Ù…ّى.\n\nلا يمكن تعمية هذه الرسالة لوجود مجموعات بريدية ضمن المستلمين. من ÙØ¶Ù„Ùƒ أعد إرسال الرسالة بدون تعمية. sendToNewsWarning=تحذير: أنت بصدد إرسال رسالة معماة إلى مجموعة أخبار (newsgroup)ØŒ\n\nÙˆ هذا غير Ù…ÙØ­Ø¨Ù‘َذ لأنه لا معنى له إلا إن كان بوسع جميع أعضاء المجموعة تظهير الرسالة، أي أن الرسالة تنبغي تعميتها Ø¨Ù…ÙØ§ØªÙŠØ­ جميع المشاركين ÙÙŠ المجموعة. أرسل هذه الرسالة إن كنت تعلم ما ØªÙØ¹Ù„.\n\nأأواصل؟ hasHTML=تحذير بريد HTML:\nربما تحتوي هذه الرسالة على رَقْم HTMLØŒ مما قد يتسبب ÙÙŠ ÙØ´Ù„ التوقيع/التعمية. Ù„ØªØªÙØ§Ø¯Ù‰ هذا ÙÙŠ المستقبل، يجب أن تضغط زر SHIFT أثناء النقر على زر حرر/Ø±ÙØ¯ لإرسال بريد Ù…Ùوقّع.\nإذا كنت توقع البريد بدئيا، يستحسن أن تلغي ØªÙØ¶ÙŠÙ„ 'حرر رسائل HTML' لتعطيل بريد HTML بشكل دائم لحساب البريد هذا. strippingHTML=تحتوي الرسالة على معلومات تنسيق HTML ستÙÙقد عند تحويلها إلى نص ØµÙØ±Ù لتوقيعه/تعميته. أترغب ÙÙŠ المتابعة؟ msgCompose.button.sendAnyway=أر&سل الرسالة على أي حال attachWarning=مرÙقات هذه الرسالة ليست محلّÙية لذا لا تÙمكن تعميتها. لتعمية المرÙقات Ø§Ø­ÙØ¸Ù‡Ø§ أولا ÙƒÙ…Ù„ÙØ§Øª محلية ثم أرÙÙ‚ Ø§Ù„Ù…Ù„ÙØ§Øª. أترغب إرسال الرسالة بالرغم من ذلك؟ quotedPrintableWarn=لقد ÙØ¹Ù‘لت ترميز 'quoted-printable' للرسائل الصادرة، مما قد يؤدي إلى أخطاء عند تظهيرها أو التحقق.\nأترغب ÙÙŠ تعطيل الإرسال بترميز 'quoted-printable' الآن؟ minimalLineWrapping=لقد ضبطت طول السطر على %S حرÙ. لتعمية Ùˆ/أو توقيع سليمين، ينبغي لهذه القيمة أن تكون 68 على الأقل.\nأتريد تغيير طول السطر إلى 68 Ø­Ø±ÙØ§ الآن؟ warning=تحذير signIconClicked=لقد قمت يدويا بتغيير ØªÙØ¹ÙŠÙ„ التوقيع. لذا ÙÙيما يتعلق بهذه الرسالة ÙØ¥Ù† ØªÙØ¹ÙŠÙ„/تعطيل التوقيع لم يعد يعتمد على ØªÙØ¹ÙŠÙ„/تعطيل التعمية. pgpMime_sMime.dlg.text=You have enabled PGP/MIME and S/MIME together. Unfortunately it is not possible to support both protocols at the same time. Please select if you want to use PGP/MIME or S/MIME. pgpMime_sMime.dlg.pgpMime.button=Use &PGP/MIME pgpMime_sMime.dlg.sMime.button=Use &S/MIME errorKeyUnusable=The email address or key ID '%S' cannot be matched to a valid, not expired OpenPGP key.\nPlease ensure that you have a valid OpenPGP key, and that your account settings point to that key. # note: should end with double newline: sendAborted=Ø£ÙØ¬Ù‡Ùضت عملية الإرسال.\n\n statPGPMIME=PGP/MIME statSigned=Ù…Ùوقّع statEncrypted=Ù…ÙØ¹Ù…ّى statPlain=نص صريح Ùˆ غير Ù…Ùوقَّع offlineSave=Ø£Ø£Ø­ÙØ¸ الرسالة %S إلى %S ÙÙŠ مجلد الرسائل غير المرسلة؟ onlineSend=أأرسل الرسالة %S إلى %SØŸ encryptKeysNote=ملحوظة: لقد عÙمّيت الرسالة باستخدام هويات/Ù…ÙØ§ØªÙŠØ­ المستخدمين التالية: %S signFailed=Ø¹ÙØ·Ù„ ÙÙŠ EnigmailØ› ÙØ´Ù„ت التعمية/التوقيع؛ Ø£ÙØ±Ø³Ù„٠الرسالة غير Ù…ÙØ¹Ù…ّاة؟ msgCompose.button.sendUnencrypted=أر&سل الرسالة بلا تعمية recipientsSelectionHdr=اختر المستلمين للتعمية configureNow=لم تضبط خصوصية Enigmail للهوية المختارة. أترغب ÙÙŠ ÙØ¹Ù„ هذا الآن؟ # should not be used anymore: encryptYes=Ø³ØªÙØ¹Ù…ّى الرسالة encryptNo=لن ØªÙØ¹Ù…ّى الرسالة # should not be used anymore: signYes=ستÙوقّع الرسالة signNo=لن تÙوقّع الرسالة rulesConflict=ÙˆÙØ¬Ùدت قواعد مستلمين متعارضة\n%S\n\nأأرسل الرسالة بهذه الإعدادات؟ msgCompose.button.configure=ا&ضبط msgCompose.button.send=Ø£&رسل الرسالة msgCompose.button.save=ا&Ø­ÙØ¸ الرسالة # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Ø§Ù„Ù…ÙØªØ§Ø­ العلني %S مطلوب للتحقق من التوقيع clickDecrypt='Ø› انقر زر 'Ø¸Ù‡Ù‘ÙØ± clickDecryptRetry=Ø› انقر زر 'Ø¸Ù‡Ù‘ÙØ±' لتعيد المحاولة msgPart=جزة من الرسالة %S msgSigned=Ù…Ùوقّعة msgEncrypted=Ù…ÙØ¹Ù…ّاة msgSignedAndEnc=Ù…Ùوقّعة Ùˆ Ù…ÙØ¹Ù…ّاة unverifiedSig=توقيع غير Ù…ÙØ­Ù‚Ù‚ incompleteDecrypt=التظهير ناقص needKey=Ø¹ÙØ·Ù„ - بحاجة Ù„Ù…ÙØªØ§Ø­ سري لتعمية الرسالة failedDecrypt=Ø¹ÙØ·Ù„ - ÙØ´Ù„ التظهير badPhrase=Ø¹ÙØ·Ù„ - عبارة سر غير صحيحة failedDecryptVerify=Ø¹ÙØ·Ù„ - ÙØ´Ù„ التظهير/التحقق viewInfo=Ø› اعرض > معلومات خصوصية الرسالة Ù„Ù„ØªÙØ§ØµÙŠÙ„ decryptedMsg=Ø¸Ù‡Ù‘ÙØ± الرسالة locateGpg=حدد موضع برمجية GnuPG invalidGpgPath=لا ÙŠÙمكن تنÙيذ GnuPG من المسار Ø§Ù„Ù…ÙØ¹Ø·Ù‰. لذا Ø³ÙŠÙØ¹Ø·Ù‘Ù„ Enigmail حتى ØªÙØºÙŠÙ‘ر المسار إلى GnuPG أو ØªÙØ¹ÙŠØ¯ تشغيل التطبيق. warningsAreReset=تم تصÙير كل التحذيرات. prefs.gpgFound=ÙˆÙØ¬Ùد GnuPG ÙÙŠ %S prefs.gpgNotFound=تعذَّر إيجاد برمجية GnuPG '%S'.\nتأكد من ضبط مسار مل٠GnuPG التنÙيذي ÙÙŠ ØªÙØ¶ÙŠÙ„ات Enigmail. prefs.warnAskNever=تحذير: ØªÙØ¹ÙŠÙ„ هذا الخيار سيؤدي إلى إرسال بغير تعمية دون أي تنويهات إذا لم يوجد Ù…ÙØªØ§Ø­ لأحد Ø§Ù„Ù…ÙØ³ØªÙ„مين -- لن ÙŠÙنبهك Enigmail عند حدوث ذلك! prefEnigmail.oneKeyserverOnly=عطل - لا يمكن تحديد سوى خادوم Ù…ÙØ§ØªÙŠØ­ واحد لجلب Ù…ÙØ§ØªÙŠØ­ OpenPGP الناقصة. enterAdminPin=من ÙØ¶Ù„Ùƒ أدخل PIN المدير لبطاقتك الذكية (SmartCard) enterCardPin=من ÙØ¶Ù„Ùƒ أدخل PIN بطاقتك الذكية (SmartCard) notInit=Ø¹ÙØ·Ù„ - لم تستبدأ خدمة Enigmail بعد badCommand=Ø¹ÙØ·Ù„ - ÙØ´Ù„ أمر التعمية cmdLine=خرج سطر الأوامر: notRequired=Ø¹ÙØ·Ù„ - لا تعمية مطلوبة notComplete=Ø¹ÙØ·Ù„ - لم يتم توليد Ø§Ù„Ù…ÙØªØ§Ø­ invalidEmail=Ø¹ÙØ·Ù„ - عنوان بريد غير صحيح noPassphrase=Ø¹ÙØ·Ù„ - لم تدخل أية عبارة سر noPGPblock=Ø¹ÙØ·Ù„ - لم ÙŠÙØ¹Ø«Ø± على أي كتل بيانات OpenPGP مدرّع unverifiedReply=جزء الرسالة المزاح (الرد) قد تغيير على الأغلب sigMismatch=Ø¹ÙØ·Ù„ - توقيع غير صحيح cantImport=خطأ ÙÙŠ استيراد Ø§Ù„Ù…ÙØªØ§Ø­ العلني\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=البطاقة الذكية %S الموجودة ÙÙŠ القارئ لا يمكن استخدامها لمعالجة الرسالة.\nأدخل البطاقة الذكية %S Ùˆ أعد العملية. sc.insertCard=تتطلب هذه العملية البطاقة الذكية %S.\nأدخل البطاقة الذكية المطلوبة Ùˆ أعد العملية. sc.removeCard=تتطلب هذه العملية ألا توجد ÙÙŠ القارئ بطاقة ذكية.\nأخرج البطاقة الذكية Ùˆ أعد العملية. sc.noCardAvailable=لم ÙŠÙØ¹Ø«Ø± على بطاقة ذكية ÙÙŠ القارئ\nأدخل البطاقة الذكية ثم أعد العملية. sc.noReaderAvailable=لا يمكن Ø§Ù„Ù†ÙØ§Ø° إلى قارئ البطاقات الذكية\nأوصل قارئ البطاقات الذكية ثم أدخل البطاقة ثم أعد العملية. gpgNotFound=تعذر تحديد موضع برمجية GnuPG '%S'.\nتأكد أنك ضبطت مسار مل٠GnuPG التنÙيذي صحيحا ÙÙŠ ØªÙØ¶ÙŠÙ„ات Enigmail. gpgNotInPath=تعذَّر إيجاد برمجية GnuPG ÙÙŠ المسار المعرَّ٠PATH.\nتأكد من ضبط مسار مل٠GnuPG التنÙيذي ÙÙŠ ØªÙØ¶ÙŠÙ„ات Enigmail. gpgAgentNotStarted=تعذر بدأ برمجية gpg-agent وهو ضروري لإصدارة %S من GnuPG. prefUntrusted=غير موثوق prefRevoked=Ù…ÙØªØ§Ø­ منقوض prefExpiredKey=Ù…ÙØªØ§Ø­ منتهي prefExpired=منتهي prefGood=توقيع صحيح من %S prefBad=توقيع غير صحيح من %S failCancel=Ø¹ÙØ·Ù„ - ألغى المستخدم جلب Ø§Ù„Ù…ÙØªØ§Ø­ failNoServer=Ø¹ÙØ·Ù„ - لم تحدد خادوم Ù…ÙØ§ØªÙŠØ­ لجلب Ø§Ù„Ù…ÙØ§ØªÙŠØ­ منه failNoID=Ø¹ÙØ·Ù„ - لم تحدد هوية لجلب Ù…ÙØªØ§Ø­ لها failKeyExtract=Ø¹ÙØ·Ù„ - ÙØ´Ù„ أمر استخراج Ø§Ù„Ù…ÙØªØ§Ø­ notFirstBlock=Ø¹ÙØ·Ù„ - أول كتلة OpenPGP ليست كتلة Ù…ÙØªØ§Ø­ علني importKeyConfirm=أأستورد Ø§Ù„Ù…ÙØ§ØªÙŠØ­ العلنية المضمنة ÙÙŠ الرسالة؟ failKeyImport=Ø¹ÙØ·Ù„ - ÙØ´Ù„ استيراد Ø§Ù„Ù…ÙØªØ§Ø­ fileWriteFailed=ÙØ´Ù„ت الكتابة ÙÙŠ المل٠%S importKey=استورد Ø§Ù„Ù…ÙØªØ§Ø­ العلني %S من خادوم Ø§Ù„Ù…ÙØ§ØªÙŠØ­ uploadKey=أرسل Ø§Ù„Ù…ÙØªØ§Ø­ العلني %S إلى الخادوم keyId=هويّة Ø§Ù„Ù…ÙØªØ§Ø­ keyAndSigDate=معرّÙÙ Ø§Ù„Ù…ÙØªØ§Ø­: 0x%S / Ù…Ùوقع ÙÙŠ: %S keyFpr=بصمة Ø§Ù„Ù…ÙØªØ§Ø­: %S noEmailProvided=لم ØªÙØ¹Ø· عنوان بريد! keyAlreadySigned=Ø§Ù„Ù…ÙØªØ§Ø­ Ù…Ùوقَّع مسبقا، لا يمكن توقيعه مرتين. gnupg.invalidKey.desc=Key %S not found or not valid. The (sub-)key might have expired. selKeyExpired=انتهى %S createdHeader=تاريخ الإنشاء atLeastOneKey=لم تختر أي Ù…ÙØ§ØªÙŠØ­! ينبغي اختيار Ù…ÙØªØ§Ø­ واحد على الأقل لقبول هذا الحوار fewerKeysThanRecipients=قد اخترت عددا من Ø§Ù„Ù…ÙØ§ØªÙŠØ­ أقل من عدد المرسل إليهم. أمتأكد أن قائمة Ù…ÙØ§ØªÙŠØ­ التعمية كاملة؟ userSel.button.goBack=اختر المزيد من Ø§Ù„Ù…ÙØ§ØªÙŠØ­ userSel.secretKeySel.title=اختر Ù…ÙØªØ§Ø­ OpenPGP سريا لتوقيع رسائلك. # Strings used in enigmailAttachmentDialog.js pgpMimeNote=ملحوظة: برمجيات بريد قليلة تدعم PGP/MIME. على ويندوز Ùقط موزيلا/ثندربيرد Ùˆ Sylpheed Ùˆ Pegasus Ùˆ Mulberry معرو٠دعمها لهذا المعيار؛ على لينكس/يونكس Ùˆ ماك أوإس إكس أغلب البرمجيات المشهورة تدعمه. إذا لم تكن متأكدا اختر %S. first=الأوّل second=الثّاني # Strings used in am-enigprefs.js encryptKeyHeader=اختر Ù…ÙØªØ§Ø­ OpenPGP للتعمية identityName=الهوية: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=لقد ÙØ¹Ù‘لت التعمية لكنك لم تختر Ù…ÙØªØ§Ø­Ø§. لتعمي الرسائل إلى %S ينبغي لك تحديد Ù…ÙØªØ§Ø­ سليم أو أكثر من قائمة Ø§Ù„Ù…ÙØ§ØªÙŠØ­. أترغب ÙÙŠ تعطيل التعمية إلى %SØŸ noKeyToUse=(لا شيء - لا تعمية) noEmptyRule=لا يمكن أن تكون القاعدة خاوية! من ÙØ¶Ù„Ùƒ ضع عنوان بريد ÙÙŠ حقل القاعدة. invalidAddress=عناوين البريد التي أدخلتها ليست سليمة. يجب ألا تضع أسماء المستلمين؛ Ùقط عناوين البريد. مثلا:\nغير سليم: اسم ما \nسليم : some.name@address.net noCurlyBrackets=الأقواس Ø§Ù„Ù…Ø¹Ù‚ÙˆÙØ© {} لها معنى خاص Ùˆ يجب ألا تستخدم ÙÙŠ عناوين البريد. إذا أردت تغيير سلوك المطابقة لهذه القاعدة ÙØ§Ø³ØªØ®Ø¯Ù… خيار 'طبق القاعدة إن كان المستلم...'.\nالمزيد من المعلومات Ù…ØªÙˆÙØ± عبر زر المساعدة. # Strings used in enigmailRulesEditor.js never=أبدًا always=دائمًا possible=ممكن deleteRule=أأحذ٠القاعدة المختارة حقا؟ nextRcpt=(المستلم التالي) negateRule=ليس addKeyToRule=Add key %S (%S) to per-recipient rule # Strings used in enigmailSearchKey.js needOnline=الخاصية التي اخترتها غير متاحة ÙÙŠ طور عدم الاتصال. من ÙØ¶Ù„Ùƒ تحول إلى طور الاتصال وحاول مجددا. protocolNotSupported=البروتوكول '%S://' الذي اخترته غير مدعوم لجلب Ù…ÙØ§ØªÙŠØ­ OpenPGP. gpgkeysDisabled=قد ÙŠÙØ³Ø§Ø¹Ø¯Ùƒ ØªÙØ¹ÙŠÙ„ الخيار 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=تعذّر الاتصال بخادوم Ø§Ù„Ù…ÙØ§ØªÙŠØ­ %S. keyDownloadFailed=ÙØ´Ù„ الجلب من خادوم Ø§Ù„Ù…ÙØ§ØªÙŠØ­. رسالة الحالة هي:\n%S internalError=حدث عطل داخلي. تعذّر جلب Ø§Ù„Ù…ÙØ§ØªÙŠØ­ أو استيرادها. noKeyFound=لم أعثر على أي Ù…ÙØ§ØªÙŠØ­ تتطابق معايير البحث.\nلاحظ أن هويات Ø§Ù„Ù…ÙØ§ØªÙŠØ­ يجب أن ØªÙØ³Ø¨Ù‚ ب†\\"0x\\" (مثلا: 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=ÙØ´Ù„ البحث عن أو جلب Ø§Ù„Ù…ÙØªØ§Ø­ من خادوم Ø§Ù„Ù…ÙØ§ØªÙŠØ­: لا ÙŠÙمكن تنÙيذ gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=ÙØ´Ù„ ضبط الثقة ÙÙŠ المالك # Strings in enigmailSignKeyDlg.js signKeyFailed=ÙØ´Ù„ توقيع Ø§Ù„Ù…ÙØªØ§Ø­ alreadySigned.label=ملاحظة: Ø§Ù„Ù…ÙØªØ§Ø­ %S موقَّع مسبقا Ø¨Ø§Ù„Ù…ÙØªØ§Ø­ السريّ٠المختار # Strings in enigmailKeyManager.js keyMan.loadingKeys=ÙŠÙØ­Ù…Ù‘ÙÙ„ Ø§Ù„Ù…ÙØ§ØªÙŠØ­ØŒ من ÙØ¶Ù„Ùƒ انتظر... keyValid.unknown=مجهول keyValid.invalid=غير صحيح keyValid.disabled=معطّل keyValid.revoked=منقوض keyValid.expired=انتهت صلاحيته keyValid.noSubkey=لا Ù…ÙØªØ§Ø­ ÙØ±Ø¹ÙŠ ØµØ§Ù„Ø­ keyTrust.untrusted=منعدمة keyTrust.marginal=هامشية keyTrust.full=تامة keyTrust.ultimate=مطلقة keyTrust.group=(مجموعة) keyType.public=علني keyType.publicAndSec=علني/سري keyMan.enableKey=ÙØ¹Ù‘Ù„ Ø§Ù„Ù…ÙØªØ§Ø­ keyMan.disableKey=عطّل Ø§Ù„Ù…ÙØªØ§Ø­ userAtt.photo=خصيصة المستخدم (صورة JPEG) asciiArmorFile=â€®Ù…Ù„ÙØ§Øª أسكي (‪ASCII‬) Ù…ÙØ¯Ø±Ù‘عة (*.‪asc‬) importKeyFile=Import OpenPGP Key File gnupgFile=Ù…Ù„ÙØ§Øª GnuPG saveRevokeCertAs=أنشئ ÙˆØ§Ø­ÙØ¸ شهادة نقض revokeCertOK=Ø£Ùنشأت شهادة النقض بنجاح. يمكن استخدامها لإبطال Ø§Ù„Ù…ÙØªØ§Ø­ العلني، مثلا ÙÙŠ حال Ùقدت Ø§Ù„Ù…ÙØªØ§Ø­ السري.\n\nمن ÙØ¶Ù„Ùƒ انقلها إلى وسيط ÙŠÙمكن Ø­ÙØ¸Ù‡ بعيدا بأمان كقرص مدمج أو مرن. إذا حاز أحدهم هذه الشهادة سيكون بإمكانه استخدامها لجعل Ù…ÙØªØ§Ø­Ùƒ غير ذي ÙØ§Ø¦Ø¯Ø©. revokeCertFailed=تعذّر إنشاء شهادة النقض. addUidOK=تمت Ø¥Ø¶Ø§ÙØ© هوية المستخدم بنجاح addUidFailed=ÙØ´Ù„ت Ø¥Ø¶Ø§ÙØ© هوية المستخدم noKeySelected=يجب أن تختار Ù…ÙØªØ§Ø­Ø§ واحدا على الأقل لإجراء العملية المطلوبة exportToFile=صدّر Ø§Ù„Ù…ÙØªØ§Ø­ العلني إلى مل٠exportSecretKey=أتريد تضمين Ø§Ù„Ù…ÙØªØ§Ø­ السري ÙÙŠ Ù…Ù„Ù Ù…ÙØªØ§Ø­ OpenPGP المحÙوظ؟ saveKeysOK=تم Ø­ÙØ¸ Ø§Ù„Ù…ÙØ§ØªÙŠØ­ بنجاح saveKeysFailed=ÙØ´Ù„ Ø­ÙØ¸ Ø§Ù„Ù…ÙØ§ØªÙŠØ­ importKeysFailed=ÙØ´Ù„ استيراد Ø§Ù„Ù…ÙØ§ØªÙŠØ­ enableKeyFailed=ÙØ´Ù„ ØªÙØ¹ÙŠÙ„/تعطيل Ø§Ù„Ù…ÙØ§ØªÙŠØ­ noSecretKeys=لم ÙŠÙØ¹Ø«Ø± على Ù…ÙØ§ØªÙŠØ­ سرية.\n\nأتريد توليد Ù…ÙØªØ§Ø­ الآن؟ sendKeysOk=تم إرسال Ø§Ù„Ù…ÙØ§ØªÙŠØ­ بنجاح sendKeysFailed=ÙØ´Ù„ إرسال Ø§Ù„Ù…ÙØ§ØªÙŠØ­ receiveKeysOk=تم تحديث Ø§Ù„Ù…ÙØ§ØªÙŠØ­ بنجاح receiveKeysFailed=ÙØ´Ù„ جلب Ø§Ù„Ù…ÙØ§ØªÙŠØ­ importFromClip=أتريد استيراد Ø§Ù„Ù…ÙØ§ØªÙŠØ­ من Ø§Ù„Ø­Ø§ÙØ¸Ø©ØŸ copyToClipbrdFailed=تعذر نسخ Ø§Ù„Ù…ÙØ§ØªÙŠØ­ المختارة إلى Ø§Ù„Ø­Ø§ÙØ¸Ø©. copyToClipbrdOK=تم نسخ Ø§Ù„Ù…ÙØ§ØªÙŠØ­ إلى Ø§Ù„Ø­Ø§ÙØ¸Ø© deleteSecretKey=تحذير: أنت بصدد Ø­Ø°Ù Ù…ÙØªØ§Ø­ سري!\nإن Ø­Ø°ÙØª Ù…ÙØªØ§Ø­Ùƒ السري Ùلن يعود بوسعك تظهير أية رسالة عÙمّÙيت لهذا Ø§Ù„Ù…ÙØªØ§Ø­ØŒ Ùˆ لن تستطيع نقض Ø§Ù„Ù…ÙØªØ§Ø­ كذلك.\n\nأترغب حقا ÙÙŠ حذ٠كلا Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ† السري Ùˆ العلني\n'%S'ØŸ deleteMix=تحذير: أنت بصدد Ø­Ø°Ù Ù…ÙØªØ§Ø­ سري!\nإن Ø­Ø°ÙØª Ù…ÙØªØ§Ø­Ùƒ السري Ùلن يعود بوسعك تظهير أية رسالة عÙمّÙيت لهذا Ø§Ù„Ù…ÙØªØ§Ø­ØŒ ولن تستطيع نقض Ø§Ù„Ù…ÙØªØ§Ø­ كذلك.\n\nأترغب حقا ÙÙŠ حذ٠كلا Ø§Ù„Ù…ÙØªØ§Ø­ÙŠÙ† السري والعلني؟ deletePubKey=أتريد Ø­Ø°Ù Ø§Ù„Ù…ÙØªØ§Ø­ العلني\n'%S'ØŸ deleteSelectedPubKey=أتريد Ø­Ø°Ù Ø§Ù„Ù…ÙØ§ØªÙŠØ­ العلنية؟ deleteKeyFailed=تعذّر Ø­Ø°Ù Ø§Ù„Ù…ÙØªØ§Ø­. revokeKeyOk=لقد تم نقض هذا Ø§Ù„Ù…ÙØªØ§Ø­. إذا كان Ù…ÙØªØ§Ø­Ùƒ منشورا على خادوم Ù…ÙØ§ØªÙŠØ­ ÙÙŠÙÙØ¶Ù‘Ù„ أن تعيد Ø±ÙØ¹Ù‡ ليرى الآخرون النقض. revokeKeyFailed=تعذّر نقض Ø§Ù„Ù…ÙØªØ§Ø­. refreshAllQuestion=لم تختر أي Ù…ÙØªØ§Ø­. أتريد تحديث كل Ø§Ù„Ù…ÙØ§ØªÙŠØ­ØŸ refreshKey.warn=تحذير: طبقا لعدد Ø§Ù„Ù…ÙØ§ØªÙŠØ­ وسرعة الاتصال Ùقد يستغرق تحديث كل Ø§Ù„Ù…ÙØ§ØªÙŠØ­ وقتا طويلا نوعا ما. keyMan.button.exportSecKey=&ØµØ¯Ù‘ÙØ± Ø§Ù„Ù…ÙØ§ØªÙŠØ­ السرية keyMan.button.exportPubKey=Export &Public Keys Only keyMan.button.import=ا&ستورد keyMan.button.refreshAll=&Ø­Ø¯Ù‘ÙØ« كل Ø§Ù„Ù…ÙØ§ØªÙŠØ­ keyMan.button.revokeKey=ان&قض Ø§Ù„Ù…ÙØªØ§Ø­ keylist.noOtherUids=ليست له هويات أخرى keylist.hasOtherUids=معرو٠كذلك باسم keylist.noPhotos=لا توجد صورة keylist.hasPhotos=الصور # Strings in enigmailManageUidDlg.xul changePrimUidFailed=ÙØ´Ù„ تغيير هوية المستخدم الأساسية changePrimUidOK=تم تغيير هوية المستخدم الأساسية بنجاح deleteUidFailed=ÙØ´Ù„ حذ٠هوية المستخدم %S deleteUidOK=تم حذ٠هوية المستخدم %S بنجاح revokeUidFailed=ÙØ´Ù„ سحب هوية المستخدم %S revokeUidOK=تم نقض هوية المستخدم %S بنجاح. إذا كان Ù…ÙØªØ§Ø­Ùƒ منشورا على خادوم Ù…ÙØ§ØªÙŠØ­ ÙÙŠÙÙØ¶Ù‘Ù„ أن تعيد Ø±ÙØ¹Ù‡ ليرى الآخرون النقض. revokeUidQuestion=أترغب حقا ÙÙŠ نقض هوية المستخدم هذه %SØŸ deleteUidQuestion=أترغب حقا ÙÙŠ حذ٠هوية المستخدم هذه %SØŸ\n\nلاحظ: إذا كنت قد Ø±ÙØ¹Øª Ù…ÙØªØ§Ø­Ùƒ إلى خادوم Ù…ÙØ§ØªÙŠØ­ ÙØ¥Ù† حذ٠هوية المستخدم لن ÙŠÙØºÙŠÙ‘ر شيئا. ÙÙŠ هذه الحالة استخدم 'انقض هوية المستخدم' ثم أعد Ø±ÙØ¹ Ø§Ù„Ù…ÙØªØ§Ø­. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=Ù…ÙØªØ§Ø­ علني keyTypePrimary=primary key keyTypeSubkey=Ù…ÙØªØ§Ø­ ÙØ±Ø¹ÙŠ keyTypePair=زوج Ù…ÙØ§ØªÙŠØ­ keyExpiryNever=أبدا keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=الجمل keyAlgorithm_17=DSA keyAlgorithm_20=الجمل # Strings in enigmailGenCardKey.xul keygen.started=من ÙØ¶Ù„Ùƒ انتظر بينما يجري توليد Ø§Ù„Ù…ÙØªØ§Ø­... keygen.completed=تم توليد Ø§Ù„Ù…ÙØªØ§Ø­. معرّÙÙ Ø§Ù„Ù…ÙØªØ§Ø­ الجديد هو: 0x%S keygen.keyBackup=تم Ø­ÙØ¸ Ø§Ù„Ù…ÙØªØ§Ø­ احتياطيا باسم %S keygen.passRequired=من ÙØ¶Ù„Ùƒ حدد عبارة سر إذا كنت تريد إنشاء نسخة احتياطية من Ù…ÙØªØ§Ø­Ùƒ خارج البطاقة الذكية. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=لأن PIN التي أدخلته لا تتطابق، من ÙØ¶Ù„Ùƒ أعد الإدخال cardPin.minLength=يجب أن يتأل٠PIN من %S حر٠أو رقم على الأقل cardPin.processFailed=ÙØ´Ù„ تغيير PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=يجري تحديث Ø§Ù„Ù…ÙØ§ØªÙŠØ­Ø› انتظر... keyserverProgress.uploading=يجري Ø±ÙØ¹ Ø§Ù„Ù…ÙØ§ØªÙŠØ­Ø› انتظر... keyserverTitle.refreshing=تم تحديث Ø§Ù„Ù…ÙØ§ØªÙŠØ­ keyserverTitle.uploading=تم تحديث Ø§Ù„Ù…ÙØªØ§Ø­ # Strings in enigmailSetupWizard passphrase.min8keys=يجب أن تتأل٠كلمة السر من 8 محار٠على الأقل setupWizard.reallyCancel=أترغب حقا ÙÙŠ صر٠مرشد إعداد EnigmailØŸ setupWizard.specifyFile=You need to at least specify a public key file in order to proceed. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=ينبغي أن تدخل اسما Ùˆ عنوان بريد إلكتروني addUidDlg.nameMinLengthError=ينبغي أن يتأل٠الاسم من خمسة محار٠على الأقل addUidDlg.invalidEmailError=ينبغي أن تضع عنوان بريد صحيح addUidDlg.commentError=غير مسموح بالأقواس المربعة ÙÙŠ التعليق enigmail/lang/ar/help/000077500000000000000000000000001266701624400151265ustar00rootroot00000000000000enigmail/lang/ar/help/compose.html000066400000000000000000000100371266701624400174620ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/ar/help/editRcptRule.html000066400000000000000000000114511266701624400204240ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/ar/help/initError.html000066400000000000000000000045251266701624400177770ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/ar/help/messenger.html000066400000000000000000000100121266701624400177760ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/ar/help/rulesEditor.html000066400000000000000000000057221266701624400203230ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/ar/help/sendingPrefs.html000066400000000000000000000047771266701624400204620ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/bg/000077500000000000000000000000001266701624400141645ustar00rootroot00000000000000enigmail/lang/bg/am-enigprefs.properties000066400000000000000000000001211266701624400206510ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Security enigmail/lang/bg/enigmail.dtd000066400000000000000000001075141266701624400164560ustar00rootroot00000000000000 Забележка: Генерирането на ключа може да отнеме нÑколко минути. Ðе излизайте от приложението докато трае генерирането на ключа. Ðктивното браузване или извършването на активни операции Ñ Ð´Ð¸Ñка по време на генерирането на ключа ще генерира 'Ñлучайни чиÑла' и ще уÑкори процеÑа. Ще бъдете уведомени, когато генерирането на ключа приключи."> ' е невалидно"> Забележка: Генерирането на ключа може да отнеме нÑколко минути. Ðе излизайте от приложението докато трае генерирането на ключа. Ще бъдете уведомени, когато генерирането на ключа приключи"> Забележка: Enigmail винаги ще проверÑва подпиÑите на пиÑмата за вÑеки акаунт или идентичноÑÑ‚, незавиÑимо дали това е активирано или не"> Благодарим ви, че използвате Enigmail."> enigmail/lang/bg/enigmail.properties000066400000000000000000001154131266701624400200740ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail Предупреждение enigConfirm=Enigmail Потвърждение enigError=Enigmail Грешка enigPrompt=Enigmail ÐапомнÑне dlgYes=&Да dlgNo=&Ðе dlgKeepSetting=Запомни отговора и не питай отново dlgNoPrompt=Ðе показвай този диалог отново dlg.button.delete=&Изтриване dlg.button.cancel=&Отказ dlg.button.close=&ЗатварÑне dlg.button.continue=Продължаване dlg.button.skip=&ПропуÑкане dlg.button.view=&Отвори repeatPrefix=\n\nТова предупреждение ще Ñе повтори %S repeatSuffixSingular=един път. repeatSuffixPlural=повече пъти. noRepeat=\n\nТова предупреждение нÑма да Ñе Ð¿Ð¾Ð²Ñ‚Ð°Ñ€Ñ Ð´Ð¾ÐºÐ°Ñ‚Ð¾ не обновите Enigmail. pgpNotSupported=Желаете да използвате Enigmail заедно Ñ PGP 6.x\n\nза Ñъжаление, PGP 6.x има проблеми, който не позволÑват на Enigmail да работи коректно. Ето защо, Enigmail не поддържа PGP 6.x повече; Ð¼Ð¾Ð»Ñ Ð¸Ð½Ñталирайте GnuPG (GPG) поддръжка.\n\nÐко Ñе нуждаете от помощ за инÑталиране на GnuPG, Ñе обърнете към ÑекциÑта за помощ, намираща Ñе на заглавната Ñтраница на Enigmail. passphraseCleared=Паролата за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ беше изтрита. noPhotoAvailable=ÐÑма налична Ñнимка debugLog.title=Enigmail дебъгер дневник # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Тази нова верÑÐ¸Ñ Ð½Ð° Enigmail има значителни промени в боравенето Ñ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñта и възможноÑтите. Опитахме Ñе да прехвърлим Ñтарите наÑтройки в тази нова верÑиÑ. Въпреки това, ние не можахме да обхванем вÑичко автоматично. МолÑ, проврете отново получените нови преференции и възможноÑти. enigmailCommon.checkPreferences=Проверeте Преференциите ... usingVersion=Използваната Enigmail верÑÐ¸Ñ Ðµ %S usingAgent=Използва Ñе %S изпълним файл %S за криптиране и декриптиране agentError=ERROR: Грешка при опит за доÑтъп до Enigmime уÑлуги! accessError=Грешка при опит за доÑтъп до Enigmail уÑлуги onlyGPG=Генерирането на ключове работи Ñамо Ñ GnuPG (не работи Ñ PGP)! keygenComplete=Генерирането на ключа е готово! ИдентификациÑта <%S> ще бъде използвана за подпиÑване. revokeCertRecommended=Силно препоръчваме да Ñъздадете нулиращ Ñертификат за вашиÑÑ‚ ключ. Този Ñертификат може да Ñе използва девалидиране, в Ñлучай че вашиÑÑ‚ Ñекретен ключ бъде изгубен или компроментиран. Желаете ли да Ñъздадете нулиращ Ñертификат Ñега? keyMan.button.generateCert=&Генериране на Ñертификат genCompleteNoSign=Генерирането на ключа е готово! genGoing=Генерирането на ключа е в прогреÑ! passNoMatch=Паролите за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ не Ñъвпадат! ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ ги отново! passCheckBox=ÐœÐ¾Ð»Ñ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð°Ð¹Ñ‚Ðµ опциÑта 'Без парола за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡', ако не желаете да използвате парола passUserName=ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ потребителÑко име за тази Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ passSpaceProblem=\nПоради техничеÑки причини, паролата ви, не може да започне или завърши Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð». changePassFailed=ПромÑната на паролата за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ е неуÑпешна. keyConfirm=Генериране на публичен и чаÑтен ключ за '%S'? keyMan.button.generateKey=&Генериране на ключ keyAbort=Да Ñе прекъÑне ли генерирането на ключ? keyMan.button.generateKeyAbort=&ПрекъÑване на генерирането на ключ keyMan.button.generateKeyContinue=&Продължаване на генерирането на ключ expiryTooLong=Ðе може да Ñъздавате ключ ÑÑŠÑ Ñрок на валидноÑÑ‚ по-голÑм от 100 години. expiryTooLongShorter=Вие не можете да Ñъздадете ключ, който изтича Ñлед повече от 90 години. expiryTooShort=Ключа трÑбва да има валидноÑÑ‚ поне един ден. keyGenFailed=Генерирането на ключ беше провалено. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ Enigmail конзолата (Меню Enigmail > Опции за отÑтранÑване на грешки) за подробноÑти. setKeyExpirationDateFailed=Срокът на валидноÑÑ‚ не може да бъде променен # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑигурноÑÑ‚\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Прикачените ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÑŠÐ¼ това Ñъобщение не Ñа криптирани или подпиÑани*\n\n possiblyPgpMime=Възможно е Ñъобщението да е криптирано или подпиÑано Ñ PGP/MIME; натиÑнете бутона 'Декриптирай' за да го проверите noDecrypted=ÐÑма декриптирани ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° запиÑ!\nИзползвайте командата 'Запиши' от меню 'Файл' noMessage=ÐÑма ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° запиÑ! useButton=ÐœÐ¾Ð»Ñ Ð½Ð°ÑтиÑнете бутона 'Декриптирай' за да декриптирате Ñъобщението saveHeader=Enigmail: Запишете декриптираното Ñъобщение saveAttachmentHeader=Enigmail: Запишете Ð´ÐµÐºÑ€Ð¸Ð¿Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ÐºÐ°Ñ‡ÐµÐ½ файл noTempDir=Ðе може да бъде намерен път към временна директориÑ\nÐœÐ¾Ð»Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð¸Ñ€Ð°Ð¹Ñ‚Ðµ Ð¿ÑŠÑ‚Ñ ÐºÑŠÐ¼ временната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ attachmentPgpKey=ПрикачениÑÑ‚ файл '%S' който отварÑте Ñъдържа OpenPGP ключ файл.\n\nÐатиÑнете 'ВнеÑи' за да запишете Ñъдържащите Ñе ключове или 'Отвори' за да разгледате Ñъдържанието на файла beginPgpPart=********* *ÐÐЧÐЛО ÐРКРИПТИРÐÐÐТРИЛИ ПОДПИСÐÐÐТРЧÐСТ* ********* endPgpPart=********** *КРÐЙ ÐРКРИПТИРÐÐÐТРИЛИ ПОДПИСÐÐÐТРЧÐСТ* ********** notePartEncrypted=Enigmail: *ЧаÑтите на това Ñъобщение не Ñа криптирани или подпиÑани* noteCutMessage=Enigmail: *Ð’ Ñъобщението Ñа намерени множеÑтво блокове -- декриптирането/проверката Ñа прекъÑнати* decryptOkNoSig=Предупреждение\n\nДекриптирането беше уÑпешно, но подпиÑа не не беше проверен коректно msgOvl.button.contAnyway=&Въпреки това продължете signature.verifyFailed=ПодпиÑÑŠÑ‚ за прикрепване на файл %S беше уÑпешно проверена attachment.noMatchToSignature=ÐÑма Ñъвпадение на Ð¿Ñ€Ð¸ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð» '%S' към подпиÑа на файла attachment.noMatchFromSignature=ÐÑма Ñъвпадение на подпиÑÐ°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» '%S' към Ð¿Ñ€Ð¸ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð» keysToExport=Изберете OpenPGP ключове за внаÑÑне keysToUse=Изберете OpenPGP Ключ(ове) за да ги използвате за %S pubKey=Публичен ключ за %S\n windowLocked=Прозореца за ÑÑŠÑтавÑне на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ðµ блокиран; изпращането е прекратено sendUnencrypted=Грешка при инициализирането на Enigmail.\nДа Ñе изпрати ли некриптирано Ñъобщение? composeSpecifyEmail=ÐœÐ¾Ð»Ñ ÑƒÑ‚Ð¾Ñ‡Ð½Ð¸Ñ‚Ðµ ÑÐ²Ð¾Ñ Ð¿ÑŠÑ€Ð²Ð¸Ñ‡ÐµÐ½ пощенÑки адреÑ, който ще Ñе използва за подпиÑване на изходÑщите ÑъобщениÑ.\nÐко оÑтавите полето празно, за подпиÑване на Ñъобщението ще бъде използван адреÑа от полето 'От'. sendingHiddenRcpt=Това Ñъобщение Ñъдържа Ñкрити ÐºÐ¾Ð¿Ð¸Ñ (BCC) към нÑкой от получателите. Ðко то е криптирано, може да изпратите Ñкрити ÐºÐ¾Ð¿Ð¸Ñ ÐºÑŠÐ¼ тези получатели, но тези от Ñ‚ÑÑ… които използват други програми (например: PGP Corp.) нÑма да могат да декриптират Ñъобщението. УточнÑвайки това, препоръчваме да избÑгвате Ñкрити ÐºÐ¾Ð¿Ð¸Ñ (BCC) при изпращане на криптирани ÑъобщениÑ. sendWithHiddenBcc=Скрит получател на Ñкрито копие sendWithShownBcc=Криптирай нормално sendingNews=Изпращането на криптирано Ñъобщение е прекратено.\n\nТова Ñъобщение не може да бъде криптирано защото Ñъдържа newsgroup получатели. ÐœÐ¾Ð»Ñ Ð¸Ð·Ð¿Ñ€Ð°Ñ‚ÐµÑ‚Ðµ Ñъобщението отново без да го криптирате. sendToNewsWarning=Предупреждение: на път Ñте да изпратите криптирано пиÑмо къm newsgroup.\n\nТова не е препоръчително, защото има ÑмиÑъл, Ñамо ако вÑички членове на групата може да декриптират Ñъобщението, Ñ‚.е.Ñъобщението трÑбва да бъде криптирано Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²ÐµÑ‚Ðµ на вÑички учаÑтници в групата. ÐœÐ¾Ð»Ñ Ð¸Ð·Ð¿Ñ€Ð°Ñ‚ÐµÑ‚Ðµ това Ñъобщение Ñамо ако знаете какео правите.\n\nДа продължа ли? hasHTML=HTML mail warning:\nТова Ñъобщение може да Ñъдържа HTML, и това да доведе до неуÑпешно криптиране/подпиÑване. За да избегнете това в бъдеще, трÑбва да задържите 'SHIFT' бутона и да натиÑнете СъÑтави/Отговори бутон за да изпращате криптирани пиÑма.\nÐко подпиÑвате ÑъобщениÑта по-подразбиране, трÑбва да деактивирате 'СъÑтавÑй ÑъобщениÑта като HTML' за поÑтоÑнно деактивиране на HTML ÑъобщениÑта за този имейл акаунт. strippingHTML=Съобщението ÑÑŠÑържа HTML форматиране и Ñ‚Ñ Ñ‰Ðµ бъде изгубена при преминаването към нормален текÑÑ‚ за подпиÑване/криптиране. Желаете ли да продължите? msgCompose.button.sendAnyway=&Изпратете Ñъобщението въпреки това attachWarning=Прикачените файлове към това Ñъобщение не Ñа запиÑани на Ð²Ð°ÑˆÐ¸Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÑŠÑ€ и не може да бъдат криптирани. За да криптирате прикачените файлове, първо ги запишете на Ð²Ð°ÑˆÐ¸Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÑŠÑ€ и Ñлед това ги прикачете. Желаете ли вÑе пак да изпратите това Ñъобщение? quotedPrintableWarn=Вие Ñте активирали 'quoted-printable' кодиране за вашите изходÑщи ÑъобщениÑ. Това може да доведе до неправилно декриптиране и/или проверка на вашето Ñъобщение.\nЖелаете ли да изключите изпращането на 'quoted-printable' ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñега? minimalLineWrapping=Вие решихте да изравните редовете по %S Ñимвола ширина. За правилно криптиране и/или подпиÑване, тази ÑтойноÑÑ‚ трÑбва да е най-малко 68.\nЖелаете ли да промените подравнÑването на 68 Ñимвола? warning=Предупреждение signIconClicked=Вие ръчно определихте дали да Ñе подпиÑва Ñъобщението. Ето защо използването на подпиÑване не завиÑи от използването на криптиране. pgpMime_sMime.dlg.pgpMime.button=Използвайте &PGP/MIME pgpMime_sMime.dlg.sMime.button=Използвайте &S/MIME msgCompose.toolbarTxt.signOnly=Това Ñъобщение ще бъде подпиÑано msgCompose.toolbarTxt.noEncryption=Това Ñъобщение ще бъде неподпиÑано и некодирано # note: should end with double newline: sendAborted=Изпращането е прекъÑнато.\n\n statPGPMIME=PGP/MIME statSigned=ПОДПИСÐÐО statEncrypted=EКОДИРÐÐО statPlain=ÐЕПОДПИСÐÐО и ÐЕКРИПТИРÐÐО offlineSave=Да запиша ли %S Ñъобщението %S в папката за неизпратени ÑъобщениÑ? onlineSend=Да Ð¸Ð·Ð¿Ñ€Ð°Ñ‚Ñ Ð»Ð¸ %S Ñъобщение на %S? encryptKeysNote=Забележка: Ñъобщението е криптирано ÑÑŠÑ Ñледната ПотребителÑка Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ / Ключове: %S signFailed=Грешка в Enigmail; Криптирането/подпиÑването беше неуÑпешно; Да Ð¸Ð·Ð¿Ñ€Ð°Ñ‚Ñ Ð»Ð¸ Ñъобщението некриптирано? msgCompose.button.sendUnencrypted=&Изпращане на некриптирано Ñъобщение recipientsSelectionHdr=Избери получателите на криптираното Ñъобщение configureNow=Ðе Ñте конфигирурали тази потребителÑка Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð° работа Ñ Enigmail. ÐайÑтина ли желаете да направите това? reasonByRecipientRules=принудени от правилата на получателите reasonByAutoEncryption=принудени от автоматичното криптиране reasonByConflict=поради конфликт в правилата на получателите reasonByEncryptionMode=поради режим на криптиране # should not be used anymore: encryptYes=Съобщението ще бъде криптирано encryptNo=Съобщението нÑма да бъде криптирано # should not be used anymore: signYes=Съобщението ще бъде подпиÑано signNo=Съобщението нÑма да бъде подпиÑано # should not be used anymore pgpmimeYes=PGP/MIME ще бъдат използвани pgpmimeNo=Inline PGP ще бъдат използван rulesConflict=Възникна конфликт Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ñ‚Ð° на получателÑ\n%S\n\nДа Ð¸Ð·Ð¿Ñ€Ð°Ñ‚Ñ Ð»Ð¸ Ñъобщението Ñ Ñ‚ÐµÐ·Ð¸ наÑтройки? msgCompose.button.configure=&ÐаÑтройки msgCompose.button.send=&Изпращане на Ñъобщение msgCompose.button.save=&Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ñъобщение # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=За проверка на подпиÑа Ñе нуждаете от Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ %S keyUsed=ÐŸÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ %S Ñе използва за проверка на Ð¿Ð¾Ð´Ð¿Ð¸Ñ clickDecrypt=; натиÑнете бутона за Декриптиране clickDecryptRetry=; натиÑнете бутона за Декриптиране за повторен опит clickDetailsButton=; щракнете върху бутона 'Детайли' за повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ msgPart=ЧаÑÑ‚ от Ñъобщението %S msgSigned=подпиÑано msgEncrypted=криптирано msgSignedAndEnc=подпиÑано и криптирано unverifiedSig=Ðепроверен цифров Ð¿Ð¾Ð´Ð¿Ð¸Ñ incompleteDecrypt=Декриптирането е неуÑпешно needKey=Грешка - за да декриптирате Ñъобщението имате нужда от ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ failedDecrypt=Грешка - декриптирането е неуÑпешно badPhrase=Грешка - грешна парола за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ failedDecryptVerify=Грешка - декриптирането или проверката на Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ðµ неуÑпешно viewInfo=; View > Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° детайлите на ÑигурноÑтта на Ñъобщението decryptedMsg=Декриптирано Ñъобщение locateGpg=Ðамерете програмата GnuPG invalidGpgPath=ИзпълнимиÑÑ‚ файл на GnuPG не може да бъде намерен в указаната директориÑ. Ето защо Enigmail ще бъде деактивиран . warningsAreReset=Ð’Ñички Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñ‰Ðµ бъдат нулирани. prefs.gpgFound=GnuPG е намерен в %S prefs.gpgNotFound=Ðе може да бъде намерен GnuPG prefs.warnAskNever=Предупреждение: активирането на тази Ð¾Ð¿Ñ†Ð¸Ñ Ñ‰Ðµ доведе до некриптирани имейли без вÑÑкаква допълнителна информациÑ, ако нÑма ключ за нÑкой от получателите - Enigmail нÑма да ви информира, ако това Ñе Ñлучи! prefEnigmail.oneKeyserverOnly=Грешка - може да изберете Ñамо един Ñървър за ключове за Ñвалене на липÑтващи OpenPGP ключове. enterAdminPin=ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ админиÑтраторÑки ПИРна вашата Смарткарта enterCardPin=ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ ПИÐ-а на вашата Смарткарта notInit=Грешка - Enigmail уÑлугите вÑе още не Ñа инициализирани badCommand=Грешка - грешка при криптирането cmdLine=командна Ð»Ð¸Ð½Ð¸Ñ Ð¸ изход: notRequired=Грешка - не Ñе изиÑква криптиране notComplete=Грешка - генерирането на ключа вÑе още не е приключило invalidEmail=Грешка - грешен имейл адреÑ(и) noPassphrase=Грешка - не беше въведена парола за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ noPGPblock=Грешка - Ðе е намерен Ð·Ð°Ñ‰Ð¸Ñ‚ÐµÐ½Ð¸Ñ Ð±Ð»Ð¾Ðº Ñ Ð´Ð°Ð½Ð½Ð¸ на OpenPGP unverifiedReply=Indented message part (reply) was probably modified sigMismatch=Грешка - ПодпиÑите не Ñъвпадат cantImport=Грешка при внаÑÑнето на Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Смарткартата %S намерена във Ð²Ð°ÑˆÐ¸Ñ Ñ‡ÐµÑ‚ÐµÑ† не може да бъде използвана за обработка на Ñъобщението.\nÐœÐ¾Ð»Ñ Ð¿Ð¾Ñтавете ÑвоÑта Смарткарта %S отново и повторете операциÑта. sc.insertCard=ОперациÑта изиÑква вашата Смарткарта %S.\nÐœÐ¾Ð»Ñ Ð¿Ð¾Ñтавете изиÑкваната Смарткарта и повторете операциÑта. sc.removeCard=ОперациÑта изиÑква вашата Смарткарта да бъде поÑтавена в четеца.\nÐœÐ¾Ð»Ñ Ñложете вашата Смарткарта и повторете операциÑта. sc.noCardAvailable=Във Ð²Ð°ÑˆÐ¸Ñ Ñ‡ÐµÑ‚ÐµÑ† не беше открита Смарткарта\nÐœÐ¾Ð»Ñ Ð¿Ð¾Ñтавете вашата Смарткарта, и повторете операциÑта. sc.noReaderAvailable=ВашиÑÑ‚ четец за Смарт карти е недоÑтъпен.\nÐœÐ¾Ð»Ñ Ñвържете Ð²Ð°ÑˆÐ¸Ñ Ñ‡ÐµÑ‚ÐµÑ† за Смарткарти, поÑтавете вашата карта, и повторете операциÑта. gpgNotFound=Ðевъзможно е да Ñе намери GnuPG програмата '%S'.\nУверете Ñе, че Ñте задали Ð¿ÑŠÑ‚Ñ Ð½Ð° Ð¸Ð·Ð¿ÑŠÐ»Ð½Ð¸Ð¼Ð¸Ñ GnuPG файли в наÑтройките. gpgNotInPath=Ðевъзможно е да Ñе намери GnuPG Ð¸Ð·Ð¿ÑŠÐ»Ð½Ð¸Ð¼Ð¸Ñ Ñ„Ð°Ð¹Ð».\nУверете Ñе, че Ñте задали Ð¿ÑŠÑ‚Ñ Ð½Ð° Ð¸Ð·Ð¿ÑŠÐ»Ð½Ð¸Ð¼Ð¸Ñ GnuPG файли в наÑтройките. gpgAgentNotStarted=Ðе може да бъде Ñтартирана gpg-agent програмата коÑто е необходима за вашата верÑÐ¸Ñ Ð½Ð° GnuPG %S. prefUntrusted=ÐЕДОВЕРЕРprefRevoked=ÐÐУЛИРÐРКЛЮЧ prefExpiredKey=ИЗТЕКЪЛ КЛЮЧ prefExpired=ИЗТЕКЪЛ prefGood=Правилен Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð¾Ñ‚ %S prefBad=Ðеправилен Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð¾Ñ‚ %S failCancel=Error - Получаването на ключа е отменено от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ failNoServer=Error - Ðе е указан Ñървър за ключове failNoID=Error - Ðе е указан идентификатор на ключа за получаването на ключа failKeyExtract=Error - извличането на ключа е неуÑпешно notFirstBlock=Error - ПървиÑÑ‚ OpenPGP блок не е блок на Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ importKeyConfirm=Да импортирам ли ключа(овете) приложени в Ñъобщението? failKeyImport=Error - внаÑÑнето Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° е неуÑпешно fileWriteFailed=ЗапиÑа на файла е неуÑпешен %S importKey=ВнаÑÑне на Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ %S от Ñървъра за ключове: uploadKey=Изпратете публичниÑÑ‚ ключ %S към Ñървъра за ключове: keyId=Идентификатор на ключа keyAndSigDate=Идентификатор на ключа: 0x%S / ПодпиÑан: %S keyFpr=Отпечатък на ключа: %S noEmailProvided=Ðе Ñте указали Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща! keyAlreadySigned=Ключа е вече подпиÑан, не може да го подпиÑвате повторно. selKeyExpired=изтича %S createdHeader=Създаден на atLeastOneKey=Ðе е избран ключ! ТрÑбва да изберете поне един ключ fewerKeysThanRecipients=Избраните от Ð²Ð°Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ðµ Ñа по-малко от Ð±Ñ€Ð¾Ñ Ð½Ð° получателите. Сигурни ли Ñте че лиÑта Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ðµ за шифроване е пълен? userSel.button.goBack=Изберете още ключове userSel.secretKeySel.title=Изберете Ñекретен OpenPGP ключ за да подпиÑвате ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ userSel.problemNoKey=ÐÑма валиден ключ userSel.problemMultipleKeys=МножеÑтво ключове # Strings used in enigmailAttachmentDialog.js pgpMimeNote=ЗÐБЕЛЕЖКÐ: PGP/MIME Ñе поддържа от ограничен брой имейл програми! За Windows Ñамо програмите Mozilla/Thunderbird, Sylpheed, Pegasus and Mulberry поддържат този Ñтандарт.\nЗа Linux/UNIX и Mac OS X Ñтандарта Ñе поддържа от повечето популÑрни имейл клиенти. Ðко не Ñте Ñигурни, изберете %S опциÑ. first=първата second=втората # Strings used in am-enigprefs.js encryptKeyHeader=Изберете OpenPGP ключ за криптиране identityName=СамоличноÑÑ‚: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Имате активирано криптиране, но вÑе ощч не Ñте избрали ключ. За да криптирате ÑъобщениÑта изпращани на %S, трÑбва да изберете един или нÑколко ключа от Ð²Ð°ÑˆÐ¸Ñ Ð»Ð¸ÑÑ‚. Желаете ли да деактивирате криптирането за %S? noKeyToUse=(Без - без криптиране) noEmptyRule=Правилото не може да е празно! ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ имейл Ð°Ð´Ñ€ÐµÑ Ð¸ попълнете полето на правилото. invalidAddress=Имейл адреÑа(ите), който Ñте въвели не Ñа валидни. Ðе трÑбва да въвеждате имената на потребителите, а Ñамо техните имейл адреÑи. Пример:\nÐеправилно: Some Name \nПравилно: some.name@address.net noCurlyBrackets=Фигурните Ñкоби имат {} Ñпециално предназначение и не трÑбва да Ñе използват за имейл адреÑи. Ðко желаете да промените това правило, използвайте наÑтройките 'Запомнете правилото ако Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ ...'.\nПовече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да получите от бутона помощ. # Strings used in enigmailRulesEditor.js never=Ðикога always=Винаги possible=Възможно deleteRule=ÐаиÑтина ли желаете да изтриете избраното правило? nextRcpt=(Следващ получател) negateRule=Ðе # Strings used in enigmailSearchKey.js needOnline=ФункциÑта коÑто Ñте избрали не работи в Офлайн режим. ÐœÐ¾Ð»Ñ Ð¿Ñ€ÐµÐ¼Ð¸Ð½ÐµÑ‚Ðµ в Онлайн режим. protocolNotSupported=Протокола '%S://' който Ñте избрали не Ñе поддържа за ÑвалÑне на OpenPGP ключове. gpgkeysDisabled=Включването на опциÑта може да помогне 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Свързването ÑÑŠÑ Ñървъра за ключове %S е невъзможно. keyDownloadFailed=СвалÑнето на ключа от Ñървъра за ключове е неуÑпешно. СтатуÑа е:\n%S internalError=Възникна вътршна грешка. Ключовете не могата да бъдат Ñвалени или внеÑени. noKeyFound=СъжалÑваме, не бÑха намерени ключове който да Ñъвпадат Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÐ½Ð¸Ñ‚Ðµ критерии за търÑене.\nÐœÐ¾Ð»Ñ Ð·Ð°Ð±ÐµÐ»ÐµÐ¶ÐµÑ‚Ðµ че идентификациÑта на ключа трÑбва да започва Ñ \\"0x\\" (e.g. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=ТърÑенето или ÑвалÑнето на кл=чове от Ñървъра за ключове е неуÑпешно: gpgkeys_%S не може да бъде изпълнен. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Задаването на доверие на ÑобÑтвеника на ключа е неуÑпешно # Strings in enigmailSignKeyDlg.js signKeyFailed=ПодпиÑването на ключа Ñе провали alreadySigned.label=Забележка: ключа %S е винаги подпиÑан Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñекретен ключ. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Зареждане на ключовете, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ ... keyValid.unknown=непознат keyValid.invalid=невалиден keyValid.disabled=деактивиран keyValid.revoked=анулиран keyValid.expired=изтекъл keyValid.noSubkey=нÑма валиден подключ keyTrust.untrusted=недоверен keyTrust.marginal=малко доверен keyTrust.full=доверен keyTrust.ultimate=безкрайно доверен keyTrust.group=(група) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Ðктивиране на ключ keyMan.disableKey=Деактивиране на ключ userAtt.photo=Ðтрибут на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ (JPEG image) asciiArmorFile=ASCII Защитени файлове (*.asc) importKeyFile=ВнеÑи файл за OpenPGP ключ gnupgFile=GnuPG Файлове saveRevokeCertAs=Създаване и Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ðнулиращ Ñертификат revokeCertOK=ÐÐ½ÑƒÐ»Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ñертификат беше Ñъздаден упешно. Може да го използвате за да анулирате Ñвой публичен ключ, пример: в Ñлучай че Ñте Ñи изгубили ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡.\n\nÐœÐ¾Ð»Ñ Ð¿Ñ€ÐµÑ…Ð²ÑŠÑ€Ð»ÐµÑ‚Ðµ го на ноÑител, на който може да Ñе ÑъхранÑва безопаÑно, като CD или диÑкета. Ðко нÑкой има доÑтъп до този Ñертификат, може да го използва, за да направи ключа неизползваем revokeCertFailed=ÐÐ½Ð¸Ð»Ð¸Ñ€Ð°Ñ‰Ð¸Ñ Ñертифика не може да бъде Ñъздаден. addUidOK=ПотребителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ добавена уÑпешно addUidFailed=ДобавÑнето на потребителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ðµ неуÑпешно noKeySelected=ТрÑбва да изберете поне един ключ за да оÑъщеÑтвите избраната Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ exportToFile=Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ във файл exportSecretKey=Желаете ли да включите ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ в OpenPGP файла, който ще бъде запиÑан? saveKeysOK=Ключовете бÑха уÑпешно запиÑани saveKeysFailed=ЗапиÑването на ключовете Ñе провали importKeysFailed=ВнаÑÑнето на ключовете Ñе провали enableKeyFailed=Ðктивирането/деактивирането на ключовете не е уÑпешно specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=ИзнеÑени-публични ключове defaultPubSecKeyFilename=ИзнеÑени-публични-и-Ñекретни-ключове noSecretKeys=Ðе Ñа намерени Ñекретни ключове.\n\nЖелаете ли да генерирате ÑобÑтвен ключ Ñега? sendKeysOk=Ключа(овете) Ñа изпратени уÑпешно sendKeysFailed=Изпращането на ключовете е неуÑпешно receiveKeysOk=Ключа(овете) Ñа обновени уÑпешно receiveKeysFailed=СвалÑнето на ключовете пропадна importFromClip=ИÑкате ли да внеÑете ключ(ове) от клипборда? copyToClipbrdFailed=Ðе може да копирате избраниÑÑ‚ ключо(ове) в клипборда. copyToClipbrdOK=Ключа(овете) Ñа копирани в клипборда deleteSecretKey=Предупреждение: Ðа път Ñте да изтриете ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡!\nÐко изтриете Ð²Ð°ÑˆÐ¸Ñ Ñекретен ключ, повече нÑма да можете да декриптирате ÑъобщениÑта криптирани за този ключ, и нÑма да може да анулирате този ключ.\n\nÐаиÑтина ли желаете да изтриете и двата ключа, ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ Ð¸ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡\n'%S'? deleteMix=Предупреждение: Ðа път Ñте да изтриете ÑÐµÐºÑ€ÐµÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡!\nÐко изтриете Ð²Ð°ÑˆÐ¸Ñ Ñекретен ключ, повече нÑма да можете Ð´Ñ Ð´ÐµÐºÑ€Ð¸Ð¿Ñ‚Ð¸Ñ€Ð°Ñ‚Ðµ ÑъобщениÑта криптирани за този ключ.\n\nÐаиÑтина ли желаете да изтриете и двата, Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ñекретен и публичен ключ? deletePubKey=Желаете ли да изтриете Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡\n'%S'? deleteSelectedPubKey=Желаете ли да изтриете публичните ключове? deleteKeyFailed=Ключа не може да бъде изтрит. revokeKeyOk=Ключа ще бъде анулиран. Ðко ключа ви е качен на Ñървъра за ключове, е препоръчително да го качите отново, за да виждат вÑички че е анулиран. revokeKeyFailed=Ключа не може да бъде анулиран. refreshAllQuestion=Ðе Ñте избрали ключ. ИÑкате ли да обновите вÑички ключове? refreshKey.warn=Предупреждение: в завиÑимоÑÑ‚ от Ð±Ñ€Ð¾Ñ Ð½Ð° ключовете и ÑкороÑтта на връзката, обновÑването на вÑички ключове може да отнеме много време! keyMan.button.exportSecKey=ЕкÑпортиране на &Секретните ключове keyMan.button.exportPubKey=ЕкÑпортиране &Ñамо на Публичните ключове keyMan.button.import=&ВнаÑÑне keyMan.button.refreshAll=&ОбновÑване на вÑички ключове keyMan.button.revokeKey=&Ðулиране на ключа keylist.noOtherUids=ÐÑма други идентификации keylist.hasOtherUids=Така извеÑтни както keylist.noPhotos=ÐÑма Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ keylist.hasPhotos=Ð¤Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ # Strings in enigmailManageUidDlg.xul changePrimUidFailed=ПромÑната на оÑновната ПотребителÑка Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±ÐµÑˆÐµ неуÑпешна changePrimUidOK=ПромÑната на оÑновната ПотребителÑка Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð±ÐµÑˆÐµ уÑпешна deleteUidFailed=Изтриването на ПотрeбителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ %S беше неуÑпешн deleteUidOK=ПотрeбителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ %S беше изтрита уÑпешно revokeUidFailed=Ðнулирането на ПотрeбителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ %S беше неуÑпешно revokeUidOK=ПотрeбителÑката Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ %S беше анулирана уÑпешно. Aко Ñте качили вашиÑÑ‚ ключ на Ñървър за ключове, е препоръчително да го качите отново, така оÑтаналите потребители ще виждат че е анулиран. revokeUidQuestion=ÐаиÑтина ли желаете да анулирате ПотребителÑката идентификациÑ: \n%S deleteUidQuestion=ÐаиÑтина ли желаете да изтриете тази ПотребителÑка идентификациÑ: \n%S?\n\nÐœÐ¾Ð»Ñ Ð·Ð°Ð±ÐµÐ»ÐµÐ¶ÐµÑ‚Ðµ: ако Ñте качили вашиÑÑ‚ публичен ключ на Ñървър за ключове, изтриването на потребителÑката региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ñма да изтрии ключа от Ñървъра. Ð’ този Ñлучай за да изтриете ключа от Ñървъра трÑбва да използвате 'Ðнулиране на потребителÑка идентификациÑ'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=Публичен ключ keyTypePrimary=ОÑновен ключ keyTypeSubkey=Подключ keyTypePair=двойка ключове keyExpiryNever=безÑрочен keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Криптиране keyUsageSign=ПодпиÑване keyUsageCertify=Потвърждавам keyUsageAuthentication=УдоÑтоверÑване # Strings in enigmailGenCardKey.xul keygen.started=ÐœÐ¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ, докато ключа Ñе генерира .... keygen.completed=Генериране на ключ. Ðовата Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð½Ð° ключа е: 0x%S keygen.keyBackup=Създадено беше резервно копие като %S keygen.passRequired=ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ парола за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ ако желаете да Ñъздадете резервно копие на Ð²Ð°ÑˆÐ¸Ñ ÐºÐ»ÑŽÑ‡ извън вашата Смарткарта. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Въведените Пинове не Ñъвпадат; Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ ги отново cardPin.minLength=Пинът трÑбва да Ñъдържа най-малко %S Ñимвола или цифри cardPin.processFailed=СмÑната на PIN-а беше неуÑпешна # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=ОбновÑване на ключовете, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ ... keyserverProgress.uploading=Качване на ключовете, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ ... keyserverTitle.refreshing=ОбновÑване на ключовете keyserverTitle.uploading=Качване на ключ # Strings in enigmailSetupWizard passphrase.min8keys=Вашата парола за защита на чаÑÑ‚Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ трÑбва да Ñе ÑÑŠÑтой най-малко от 8 Ñимвола! setupWizard.reallyCancel=ÐаиÑтина ли желаете да затворите Enigmail Ñъветника за наÑтройка? # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=ТрÑбва да попълните Име и Имейл Ð°Ð´Ñ€ÐµÑ addUidDlg.nameMinLengthError=Името ви трÑбва да Ñъдържа най-малко 5 Ñимвола addUidDlg.invalidEmailError=ТрÑбва да въведете валиден имейл Ð°Ð´Ñ€ÐµÑ addUidDlg.commentError=Скобите не Ñа позволени в коментарите errorType.SecurityProtocol=Протоколът за ÑигурноÑÑ‚, използван от уеб уÑлугата е неизвеÑтен. filter.decryptCopy.label=Създайте декриптирано копие (Enigmail) enigmail/lang/bg/help/000077500000000000000000000000001266701624400151145ustar00rootroot00000000000000enigmail/lang/bg/help/compose.html000066400000000000000000000077651266701624400174660ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/bg/help/editRcptRule.html000066400000000000000000000114511266701624400204120ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/bg/help/initError.html000066400000000000000000000045251266701624400177650ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/bg/help/messenger.html000066400000000000000000000100121266701624400177640ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/bg/help/rulesEditor.html000066400000000000000000000057221266701624400203110ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/bg/help/sendingPrefs.html000066400000000000000000000047771266701624400204500ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/ca/000077500000000000000000000000001266701624400141575ustar00rootroot00000000000000enigmail/lang/ca/am-enigprefs.properties000066400000000000000000000001221266701624400206450ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Seguretat OpenPGP enigmail/lang/ca/enigmail.dtd000066400000000000000000000705121266701624400164460ustar00rootroot00000000000000 NOTA: La generació de la clau pot trigar uns quants minuts en acabar. No sortiu del navegador mentre s'està generant la clau. La navegació activa o les operacions d'ús intensiu del disc dur durant la generació de la clau renovaran el 'pou d'atzar' i acceleraran el procés. Rebreu un avís quan acabi el procés de generació de la clau."> ' no és vàlid"> NOTA: La generació de la clau pot trigar uns minuts en acabar. No sortiu de l'aplicació mentre estigui en curs la generació de la clau. Us avisaré quan acabi la generació de la clau."> Nota: L'Enigmail sempre verificarà les signatures dels correus per cada compte o identitat, sense fer cas a si està habilitat o no."> Gràcies per emprar l'Enigmail."> enigmail/lang/ca/enigmail.properties000066400000000000000000000551461266701624400200750ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerta de l'Enigmail enigConfirm=Confirmació de l'Enigmail enigError=Error de l'Enigmail enigPrompt=Pregunta de l'Enigmail dlgYes=&Sí dlgNo=&No dlgKeepSetting=Recorda la meva resposta i no tornis a preguntar-ho dlgNoPrompt=No tornis a mostrar aquest diàleg dlg.button.delete=&Esborra dlg.button.cancel=&Cancel·la dlg.button.close=Tan&ca dlg.button.continue=Con&tinua dlg.button.skip=&Omet dlg.button.view=&Visualitza repeatPrefix=\n\nAquesta alerta es repetirà %S repeatSuffixSingular=altra vegada. repeatSuffixPlural=vegades més. noRepeat=\n\nAquesta alerta no es repetirà fins que actualitzeu l'Enigmail. pgpNotSupported=Sembla que s'està emprant l'Enigmail amb el PGP 6.x \n\nDesafortunadament, el PGP 6.x té una sèrie de problemes que impedeixen que l'Enigmail treballi correctament. Per tant, l'Enigmail no permet utilitzar el PGP 6.x; cal que canvieu a GnuPG (GPG) en el seu lloc.\n\nSi us cal ajuda per canviar al GnuPG, reviseu la secció d'ajuda de la pàgina web de l'Enigmail. passphraseCleared=S'ha netejat la contrasenya. noPhotoAvailable=No hi ha foto disponible usingVersion=S'està executant la versió %S de l'Enigmail usingAgent=S'està emprant el %S i l'executable %S per xifrar i desxifrar agentError=ERROR: Ha fallat l'accés al servei Enigmime! accessError=Error al accedir al servei Enigmail onlyGPG=La generació de la clau només funciona amb el GnuPG (no amb el PGP)! keygenComplete=Ha acabat la generació de la clau! S'emprarà la identitat <%S> per signar. revokeCertRecommended=Us recomano fermament que genereu un certificat de revocació de la vostra clau. Aquest certificat es pot emprar per invalidar la clau, quan, per exemple, la clau secreta es perd o queda compromesa. Voleu generar ara el certificat de revocació? keyMan.button.generateCert=&Genera el certificat genCompleteNoSign=Ha acabat la generació de la clau! genGoing=Ja s'està generant la clau! passNoMatch=La contrasenya introduïda no és correcta; torneu-la a introduir passCheckBox=Marqueu la caixa si no especifiqueu cap contrasenya per la clau passUserName=Indiqueu el nom d'usuari per aquesta identitat changePassFailed=Ha fallat el canvi de contrasenya. keyConfirm=Genero les claus pública i privada per '%S'? keyMan.button.generateKey=&Genera la clau keyAbort=Cancel·lo la generació de la clau? keyMan.button.generateKeyAbort=&Interromp la generació de la clau keyMan.button.generateKeyContinue=&Continua la generació de la clau expiryTooLong=No podeu crear cap clau que caduqui més enllà dels 100 anys. expiryTooShort=La vostra clau ha de ser vàlida com a mínim durant un dia. keyGenFailed=La generació de la clau ha fallat. Comproveu els detalls a la consola de l'Enigmail (menú Enigmail > Depuració de l'Enigmail). # Strings in enigmailMessengerOverlay.js securityInfo=Informació de seguretat Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Els fitxers adjunts a aquest missatge no s'han signat o xifrat*\n\n possiblyPgpMime=El missatge segurament s'ha xifrat o signat amb PGP/MIME; cliqueu el botó Desxifra per verificar-ho noDecrypted=No hi ha cap missatge desxifrat per desar!\nEmpreu l'ordre Desa del menú Fitxer noMessage=No hi ha cap missatge per desar! useButton=Cliqueu el botó Desxifra per desxifrar el missatge saveHeader=Enigmail: Desa el missatge desxifrat saveAttachmentHeader=Enigmail: Desa l'adjunt desxifrat noTempDir=No s'ha pogut trobar un directori temporal per escriure-hi. \nEstabliu la variable d'entorn TEMP attachmentPgpKey=L'adjunt '%S' que esteu obrint sembla ser un fitxer de clau OpenPGP. \n\nCliqueu «Importa» per a importar les claus que conté o «Visualitza» per a mostrar el contingut del fitxer a una finestra del navegador beginPgpPart=********* *INICI DE PART XIFRADA o SIGNADA* ******** endPgpPart=********** *FI DE PART XIFRADA o SIGNADA* ********** notePartEncrypted=Enigmail: *NO s'ha signat o xifrat parts del missatge* noteCutMessage=Enigmail: *S'han trobat múltiples blocs de missatge -- s'ha cancel·lat el desxifratge/verificació* decryptOkNoSig=Avís\n\nEl desxifratge ha reeixit, però la signatura no s'ha pogut verificar correctament msgOvl.button.contAnyway=&Continua igualment keysToExport=Seleccioneu les claus OpenPGP a inserir keysToUse=Seleccioneu les claus OpenPGP per emprar a %S pubKey=Clau pública per a %S\n windowLocked=La finestra del redactor està blocada; s'ha cancel·lat l'enviament sendUnencrypted=Ha fallat la inicialització de l'Enigmail.\nEnvio el missatge sense xifrar? composeSpecifyEmail=Indiqueu la vostra adreça de correu principal, que s'emprarà per triar la clau de signatura per als missatges de sortida.\n Si la deixeu en blanc, l'adreça DES DE (FROM) del missatge s'emprarà per triar la clau de signatura. sendingHiddenRcpt=Aquest missatge té destinataris Cco (còpia oculta). Si aquest missatge està xifrat, ès possible ocultar els destinataris però els usuaris d'alguns productes (p.ex. PGP Corp.) no podran desxifrar el missatge. Tenint en compte això, es recomana evitar els correus electrònics amb Cco amb missatges xifrats. sendWithHiddenBcc=Oculta els destinataris Cco sendWithShownBcc=Xifra normalment sendingNews=S'ha cancel·lat l'operació d'enviament xifrat.\n\nAquest missatge no es pot xifrar perquè hi ha destinataris de grups de notícies. Reenvieu aquest missatge sense xifrar. sendToNewsWarning=Avís: esteu a punt d'enviar un correu xifrat a un grup de notícies.\n\nAixò es desaprova perqué nomès tè sentit si tots els membres del grup poden desxifrar el missatge, ès a dir, cal xifrar el missatge amb les claus de tots els participants del grup. Envieu aquest missatge nomès si sabeu perfectament el qué esteu fent.\n\nContinuo? hasHTML=Avís de correu HTML:\nAquest missatge pot contenir HTML, que podria causar errades al signar/xifrar. Per a evitar això en el futur, heu de prémer la tecla MAJ (SHIFT) quan feu un clic al botó Redacta/Respon al enviar correu signat.\nSi signeu el correu per defecte, hauríeu de desmarcar la caixa de preferència 'Redacta missatges en HTML' per desactivar permanentment el correu HTML en aquest compte de correu. strippingHTML=El missatge té informació de format HTML que es perdrà quan es converteixi a text al signar/xifrar. Desitgeu continuar? msgCompose.button.sendAnyway=&Envia el missatge igualment attachWarning=Els adjunts d'aquest missatge no són locals, no es poden xifrar. Per a xifrar els adjunts, primer els heu de desar com a fitxers locals i adjuntar aquests fitxers. Voleu continuar igualment? quotedPrintableWarn=Heu activat la codificació «quoted-printable» per enviar els missatges. Això pot provocar un desxifratge o verificació incorrectes dels vostres missatges.\nVoleu desactivar ara l'enviament «quoted-printable» dels missatges? minimalLineWrapping=Heu establert l'ajustament de línia a %S caràcters. Per a un xifratge i/o signatura correctes, aquest valor ha de ser almenys 68.\nVoleu canviar ara l'ajust de línia a 68 caràcters? warning=Avís signIconClicked=Heu modificat manualment la signatura. Per tant, mentre redacteu el missatge, la (des)activació de la signatura no dependrà de la (des)activació del xifratge. pgpMime_sMime.dlg.pgpMime.button=Utilitza &PGP/MIME pgpMime_sMime.dlg.sMime.button=Utilitza &S/MIME # note: should end with double newline: sendAborted=S'ha cancel·lat l'operació d'enviament.\n\n statPGPMIME=PGP/MIME statSigned=SIGNAT statEncrypted=XIFRAT statPlain=SENSE SIGNAR i SENSE XIFRAR offlineSave=Deso el missatge %S a %S a la carpeta de Missatges per enviar? onlineSend=Envio el missatge %S a %S? encryptKeysNote=Nota: el missatge està xifrat amb la següent identificació d'usuari / clau: %S signFailed=Error a l'Enigmail; ha fallat la xifra/signatura; envio el missatge sense xifrar? msgCompose.button.sendUnencrypted=&Envia el missatge sense xifrar recipientsSelectionHdr=Seleccioneu els destinataris per xifrar configureNow=Encara no heu configurat la seguretat Enigmail per la identitat seleccionada. Voleu fer-ho ara? # should not be used anymore: encryptYes=El missatge es xifrarà encryptNo=El missatge no es xifrarà # should not be used anymore: signYes=El missatge es signarà signNo=El missatge no es signarà rulesConflict=S'ha detectat un conflicte a les regles per destinatari\n%S\n\nEnvio el missatge amb aquests paràmetres? msgCompose.button.configure=&Configura msgCompose.button.send=&Envia el missatge msgCompose.button.save=&Desa el missatge # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Cal la clau pública %S per verificar la signatura clickDecrypt=; feu un clic al botó Desxifra clickDecryptRetry=; feu un clic al botó Desxifra per reintentar msgPart=Part del missatge %S msgSigned=signat msgEncrypted=xifrat msgSignedAndEnc=signat i xifrat unverifiedSig=Signatura no verificada incompleteDecrypt=Desxifratge incomplet needKey=Error - cal la clau secreta per desxifrar el missatge failedDecrypt=Error - ha fallat el desxifratge badPhrase=Error - contrasenya incorrecta failedDecryptVerify=Error - ha fallat el desxifratge/verificació viewInfo=; Visualitza > Informació de seguretat del missatge per als detalls decryptedMsg=Missatge desxifrat locateGpg=Localitza el programa GnuPG invalidGpgPath=El GnuPG no es pot executar amb el camí indicat. Per tant, l'Enigmail queda desactivat fins que torneu a canviar el camí al GnuPG o fins que reinicieu l'aplicació. warningsAreReset=S'han reiniciat tots els avisos. prefs.gpgFound=S'ha trobat el GnuPG a %S prefs.gpgNotFound=No s'ha pogut trobar el GnuPG prefs.warnAskNever=Avís: l'activació d'aquesta opció provocarà, sense mès informació, que els correus no es xifrin si no hi ha la clau per algun dels destinataris -- Si això passa, l'Enigmail no us informarà! prefEnigmail.oneKeyserverOnly=Error - nomès podeu indicar un servidor de claus per a la baixada automàtica de claus OpenPGP que manquin. enterAdminPin=Introduïu el PIN d'administració de la targeta intel·ligent enterCardPin=Introduïu el PIN de la targeta intel·ligent notInit=Error - el servei Enigmail encara no s'ha iniciat badCommand=Error - ha fallat l'ordre de xifrar cmdLine=línia d'ordres i sortida: notRequired=Error - no s'ha demanat xifrar notComplete=Error - la generació de la clau encara no ha acabat invalidEmail=Error - adreça de correu no vàlida noPassphrase=Error - no s'ha facilitat la contrasenya noPGPblock=Error - no s'ha trobat cap bloc cuirassat amb dades OpenPGP unverifiedReply=La part indentada del missatge (resposta) ha estat probablement modificada sigMismatch=Error - la signatura no coincideix cantImport=Error en importar la clau pública\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=La targeta intel·ligent %S trobada al lector no es pot utilitzar per a processar el missatge.\nSi us plau, inseriu la vostra targeta intel·ligent %S i repetiu l'operació. sc.insertCard=L'operació requereix la vostra targeta intel·ligent %S.\nSi us plau, inseriu la targeta intel·ligent requerida i repetiu l'operació. sc.removeCard=L'operació requereix que no hi hagi cap targeta intel·ligent en el lector.\nSi us plau, retireu la targeta intel·ligent i repetiu l'operació. sc.noCardAvailable=No hi ha cap targeta intel·ligent al lector\nInseriu la vostra targeta intel·ligent i repetiu l'operació. sc.noReaderAvailable=No s'ha pogut accedir a la targeta intel·ligent\nConnecteu el lector de targetes intel·ligents, inseriu la vostra targeta, i repetiu l'operació. gpgNotFound=No s'ha pogut trobar el programa GnuPG '%S'.\nComproveu que s'ha indicat el camí correcte a l'executable GnuPG a les Preferències de l'Enigmail. gpgNotInPath=No s'ha pogut trobar l'executable GnuPG en el PATH.\nComproveu que s'ha especificat correctament el camí a l'executable GnuPG a les Preferències de l'Enigmail. gpgAgentNotStarted=Could not start the gpg-agent program which is needed for your GnuPG version %S. prefUntrusted=NO CONFIABLE prefRevoked=CLAU REVOCADA prefExpiredKey=CLAU CADUCADA prefExpired=CADUCADA prefGood=Signatura correcta de %S prefBad=Signatura INCORRECTA de %S failCancel=Error - L'usuari ha cancel·lat la recepció de la clau failNoServer=Error - No s'ha especificat cap servidor de claus per rebre la clau failNoID=Error - No s'ha especificat cap identificador de clau per rebre-la failKeyExtract=Error - ha fallat l'ordre d'extracció de la clau notFirstBlock=Error - El primer bloc OpenPGP no és un bloc de clau pública importKeyConfirm=Importo la clau/s pública incrustada al missatge? failKeyImport=Error - ha fallat la importació de la clau fileWriteFailed=Ha fallat l'escriptura al fitxer %S importKey=Importo la clau pública %S del servidor de claus: uploadKey=Envia la clau pública %S al servidor de claus: keyId=Identificador de clau keyAndSigDate=Identificació de clau: 0x%S / Signada el: %S keyFpr=Empremta digital de la clau: %S noEmailProvided=No heu indicat cap adreça de correu! keyAlreadySigned=La clau ja està signada, no la podeu signar dues vegades. selKeyExpired=%S caducada createdHeader=Creada atLeastOneKey=No s'ha seleccionat cap clau! Heu de triar una clau com a mínim per acceptar aquest diàleg fewerKeysThanRecipients=Heu seleccionat un nombre mès petit de de claus que de destinataris. Esteu segur que la llista de clau a xifrar ès completa? userSel.button.goBack=Seleccioneu mès claus userSel.secretKeySel.title=Selecció d'una clau OpenPGP secreta per a signar els vostres missatges # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: només és permet el PGP/MIME a un nombre limitat de clients de correu! A Windows només els Mozilla/Thunderbird, Sylpheed, Pegasus i Mulberry se sap que permeten aquest estàndard; a Linux/UNIX i Mac OS X la majoria dels clients de correu més populars el permeten. Si no esteu segurs, seleccioneu la %S opció. first=primera second=segona # Strings used in am-enigprefs.js encryptKeyHeader=Seleccioneu una clau OpenPGP per xifrar identityName=Identitat: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Heu activat l'opció de xifrar, però no heu seleccionat cap clau. Per a enviar correus xifrats a %S us cal indicar una o més claus vàlides de la vostra llista de claus. Voleu desactivar el xifratge per a %S? noKeyToUse=(cap - sense xifrar) noEmptyRule=La regla no pot estar buida! Indiqueu una adreça de correu al camp regla. invalidAddress=L'adreça de correu que heu indicat no és vàlida. No heu d'indicar els noms dels destinataris, només les adreces de correu. Per exemple: \nNo vàlid: Un nom \nVàlid: un.nom@adreça.net noCurlyBrackets=Les clau {} tenen un significat especial i no es poden emprar a les adreces de correu. Si voleu modificar el comportament de recerca per aquesta regla, empreu l'opció 'Aplica la regla si el destinatari ...'.\nTrobareu més informació al botó d'ajuda. # Strings used in enigmailRulesEditor.js never=Mai always=Sempre possible=Possible deleteRule=Voleu suprimir la regla seleccionada? nextRcpt=(destinatari següent) negateRule=No # Strings used in enigmailSearchKey.js needOnline=La funció que heu seleccionat no és disponible en mode fora de línia. Connecteu-vos i torneu a provar. protocolNotSupported=El protocol '%S://' que heu seleccionat no és permés per a descarregar claus OpenPGP. gpgkeysDisabled=Us pot ajudar l'activació de l'opció 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=No es pot connectar al servidor de claus %S. keyDownloadFailed=Ha fallat la descàrrega de la clau del servidor de claus. El missatge d'estat és:\n%S internalError=Hi ha hagut un error intern. Les claus no s'han pogut descarregar o importar. noKeyFound=Ho sento, no s'ha trobat cap clau que coincideixi amb el criteri de recerca indicat.\nTingueu en compte que els identificadors de clau han d'estar prefixats amb \\"0x\\" (p.ex. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Ha fallat la recerca o la descàrrega de la clau del servidor de claus: no s'ha pogut executar gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Ha fallat l'assignació de la confiança del propietari # Strings in enigmailSignKeyDlg.js signKeyFailed=Ha fallat la signatura de la clau alreadySigned.label=Nota: la clau %S ja està signada amb la clau secreta seleccionada. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Loading keys, please wait ... keyValid.unknown=desconeguda keyValid.invalid=invàlida keyValid.disabled=deshabilitada keyValid.revoked=revocada keyValid.expired=caducada keyValid.noSubkey=no hi ha una subclau vàlida keyTrust.untrusted=no confiable keyTrust.marginal=marginal keyTrust.full=confiable keyTrust.ultimate=definitiva keyTrust.group=(grup) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Activa la clau keyMan.disableKey=Desactiva la clau userAtt.photo=Atribut d'usuari (imatge JPEG) asciiArmorFile=Fitxers cuirassats ASCII (*.asc) importKeyFile=Importa un fitxer de claus OpenPGP gnupgFile=Fitxers GnuPG saveRevokeCertAs=Crea i desa el certificat de revocació revokeCertOK=El certificat de revocació s'ha creat amb èxit. Podeu emprar-lo per invalidar la vostra clau pública, p.ex. si perdeu la vostra clau secreta.\n\nTransferiu-lo a un mitjà que es pugui emmagatzemar amb seguretat, com un CD o un disquet. Si algú accedeix a aquest certificat el pot utilitzar per a inutilitzar la vostra clau. revokeCertFailed=No s'ha pogut crear el certificat de revocació. addUidOK=L'identificador d'usuari s'ha afegit amb èxit addUidFailed=Ha fallat al afegir l'identificador d'usuari noKeySelected=Heu de seleccionar com a mínim una clau per tal de realitzar l'operació indicada exportToFile=Exporta la clau pública a un fitxer exportSecretKey=Voleu incloure la clau secreta en el fitxer de clau OpenPGP desat? saveKeysOK=Les claus s'han desat amb èxit saveKeysFailed=Ha estat impossible desar les claus importKeysFailed=Ha fallat la importació de les claus enableKeyFailed=Ha fallat l'habilitació/deshabilitació de les claus specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Claus-públiques-exportades defaultPubSecKeyFilename=Claus-públiques-i-secretes-exportades noSecretKeys=No s'ha trobat cap clau secreta.\n\nVoleu generar ara la vostra propia clau? sendKeysOk=La clau/s s'ha enviat amb èxit sendKeysFailed=Ha fallat l'enviament de les claus receiveKeysOk=La clau/s s'ha actualitzat amb èxit receiveKeysFailed=Ha fallat la baixada de les claus importFromClip=Voleu importar alguna clau/s del porta-retalls? copyToClipbrdFailed=No s'han pogut copiar la clau/s seleccionada al porta-retalls. copyToClipbrdOK=La clau/s s'ha copiat al porta-retalls deleteSecretKey=AVÃS: Esteu a punt de suprimir una clau secreta!\nSi esborreu la vostra clau secreta, ja no podreu desxifrar els missatges xifrats amb aquesta clau. \n\nSegur que voleu suprimir les dues, la clau secreta i la clau pública \n'%S'? deleteMix=AVÃS: Esteu a punt de suprimir claus secretes!\nSi esborreu la vostra clau secreta, mai més podreu desxifrar cap missatge xifrat amb aquest clau. \n\nSegur que voleu suprimir ambdues claus seleccionades, la secreta i la pública? deletePubKey=Voleu suprimir la clau pública\n'%S'? deleteSelectedPubKey=Voleu suprimir les claus públiques? deleteKeyFailed=La clau no s'ha pogut suprimir. revokeKeyOk=S'ha revocat la clau. Si la vostra clau estava en un servidor de claus, es recomena que la torneu a pujar, de manera que els altres puguin veure la revocació. revokeKeyFailed=No s'ha pogut revocar la clau. refreshAllQuestion=No heu seleccionat cap clau. Voleu refrescar TOTES les claus? refreshKey.warn=Avís: segons el nombre de claus i la velocitat de connexió, el refresc de totes les claus pot ser un procés bastant llarg! keyMan.button.exportSecKey=&Exporta les claus secretes keyMan.button.exportPubKey=Exporta només les claus &públiques keyMan.button.import=&Importa keyMan.button.refreshAll=&Refresca totes les claus keyMan.button.revokeKey=&Revoca una clau keylist.noOtherUids=No tè altres identitats keylist.hasOtherUids=Tambè conegut com a keylist.noPhotos=Sense fotografies disponibles keylist.hasPhotos=Fotografies keyMan.addphoto.filepicker.title=Seleccione una foto per afegir keyMan.addphoto.failed=No s'afegit la foto. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Ha fallat en canviar l'identificador primari d'usuari changePrimUidOK=S'ha canviat l'identificador primari d'usuari amb èxit deleteUidFailed=Ha fallat en suprimir l'identificador d'usuari %S deleteUidOK=L'identificador d'usuari %S s'ha suprimit amb èxit revokeUidFailed=Ha fallat la revocació de l'identificador d'usuari %S revokeUidOK=L'identificador d'usuari %S s'ha revocat amb èxit. Si la vostra clau estava en un servidor de claus, es recomena que la torneu a pujar, de manera que els altres puguin veure la revocació. revokeUidQuestion=Segur que voleu revocar l'identificador d'usuari %S? deleteUidQuestion=Segur que voleu suprimir l'identificador d'usuari %S?\n\nTingueu en compte que si heu enviat la vostra clau pública a un servidor de claus, la supressió de l'identificador d'usuari no canviarà res. En aquest cas hauríeu d'emprar 'Revoca l'identificador d'usuari'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=clau pública keyTypePrimary=clau primària keyTypeSubkey=subclau keyTypePair=parella de claus keyExpiryNever=mai keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Xifra keyUsageSign=Signa keyUsageCertify=Certifica keyUsageAuthentication=Autentifica # Strings in enigmailGenCardKey.xul keygen.started=Espereu mentre s'està generant la clau ... keygen.completed=S'ha generat la clau. El nou identificador de clau és: 0x%S keygen.keyBackup=S'ha fet una còpia de seguretat de la clau a %S keygen.passRequired=Indiqueu una contrasenya si voleu crear una còpia de seguretat de la vostra clau fora de la targeta intel·ligent. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=El PIN que heu introduït no coincideix; torneu-lo a introduir cardPin.minLength=El PIN ha de tenir un mínim de %S caràcters o xifres cardPin.processFailed=El canvi de PIN ha fallat # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=S'està refrescant les claus, espereu si us plau ... keyserverProgress.uploading=S'està penjant les claus, espereu, si us plau ... keyserverTitle.refreshing=Refresca les claus keyserverTitle.uploading=Penja les claus # Strings in enigmailSetupWizard passphrase.min8keys=La vostra contrasenya hauria de tenir 8 caràcters com a mínim! setupWizard.reallyCancel=Esteu segur que voleu tancar l'auxiliar de configuració de l'Enigmail? # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Heu d'omplir amb un nom i una adreça de correu addUidDlg.nameMinLengthError=El nom ha de tenir 5 caràcters com a mínim addUidDlg.invalidEmailError=Heu d'indicar una adreça de correu vàlida addUidDlg.commentError=No es permeten claudàtors en els comentaris enigmail/lang/ca/help/000077500000000000000000000000001266701624400151075ustar00rootroot00000000000000enigmail/lang/ca/help/compose.html000066400000000000000000000102371266701624400174450ustar00rootroot00000000000000 Ajuda Enigmail: Redacció de missatge

Ajuda Enigmail

Emprant l'Enigmail per redactar missatges

  • El menú Enigmail a la finestra de Redacció
  • Signa missatge: Activa/desactiva l'enviament de correu signat. S'avisa a l'usuari si falla la signatura.
  • Xifra missatge: Activa/desactiva el xifratge a tots els destinataris abans d'enviar. S'avisa a l'usuari si falla el xifratge.

    Si s'ha activat Mostra la selecció només quan es necessiti a Preferències -> Pestanya de selecció de claus, s'obrirà una llista de claus si hi ha adreces a la llista de destinataris del missatge pels que no teniu una clau pública.

    Si s'ha activat No mostris mai el diàleg de selecció de claus OpenPGP a Preferències -> Pestanya de selecció de claus, i hi ha adreces a la llista de destinataris del missatge pels que no teniu una clau pública, el missatge s'enviarà sense xifrar.

  • Empra PGP/MIME en aquest missatge: Activa/desactiva l'ús del PGP/MIME en aquest missatge.

    Si teniu coneixement que el(s) destinatari(s) pot llegir el correu codificat amb el format PGP/MIME, hauríeu d'activar-lo.

    Aquesta funcionalitat depèn de si estan actius els paràmetres Permet l'ús de PGP/MIME o Empra sempre PGP/MIME a Preferències -> Pestanya PGP/MIME.

  • Opcions de redacció predeterminades: Submenú.
    • Opcions de signatura/xifratge...: drecera a Paràmetres del compte -> Opcions OpenPGP.
    • Opcions d'enviament...: drecera a la pestanya Preferències -> Enviament.
    • Opcions de selecció de clau...: drecera a la pestanya Preferències -> Selecció de clau.
    • Opcions PGP/MIME...: drecera a la pestanya Preferències -> PGP/MIME.
  • Desfés el xifratge: Si hi ha una errada quan s'enviï el corrreu, p.ex. que el servidor POP no accepta la petició, l'Enigmail no se n'assabentarà, i el missatge xifrat continuarà mostrant-se a la finestra de redacció. Seleccionant aquesta opció del menú es desfarà el xifratge/signatura, i es revertirà la finestra de redacció al text original.
    Com a solució provisional, aquesta opció es pot emprar per a desxifrar el text citat en respondre a missatges xifrats. L'Enigmail hauria de desxifrar automàticament el missatge citat, però si això falla per alguna raó, podeu emprar aquesta opció del menú per a forçar-ho.
  • Insereix la clau pública: insereix el bloc ASCII-cuirassat amb la clau pública a la posició actual del cursor de la finestra de redacció. Es sol·licitarà l'adreça de correu de la clau(s) a inserir. Les claus inserides d'aquesta manera es reconeixeran automàticament a la recepció per l'Enigmail. Després de l'inserció de la clau, encara podeu signar/xifrar el correu si us cal. No inseriu més d'un bloc de clau a un missatge; només indiqueu vàries adreces de correu, separades per comes o espais quan es sol·liciti.
  • Neteja la contrasenya desada: Neteja la contrasenya memoritzada. És útil si teniu vàries contrasenyes.
  • Ajuda: Mostra la informació d'ajuda del lloc web (aquesta pàgina).

Teniu més ajuda a la vostra disposició a la pàgina web de l'Enigmail

enigmail/lang/ca/help/editRcptRule.html000066400000000000000000000135371266701624400204140ustar00rootroot00000000000000 Ajuda Enigmail: Editar regla OpenPGP

Ajuda Enigmail

Emprant l'editor de regles de l'Enigmail: Edició d'una regla OpenPGP

A l'editor de regles, podeu indicar, per cada destinatari, el xifratge, la signatura i PGP/MIME i quines claus OpenPGP emprar de manera predeterminada. En aquest diàleg, podeu indicar les regles per un destinatari individual i per un grup de destinataris amb atributs força similars.

  • Estableix les regles OpenPGP per a: Conté l'adreça de correu dels destinataris (sense noms, p.ex. només una adreça com algu@correu.domini). Podeu indicar algunes adreces de correu, separades per espais. L'adreça indicada aquí pot consistir de només la secció del domini, així el correu a qualsevol adreça del domini coincidirà (p.ex. @correu.domini coincideix amb algu@correu.domini, algualtre@correu.domini, qualsevol@correu.domini, etc.)
  • Aplica la regla si el destinatari ...: Això modifica la coincidència de les adreces de correu. Si s'ha introduït múltiples adreces de correu, el paràmetre s'aplicarà a totes. Els exemples següents estan basats en les Regles OpenPGP introduïdes més amunt algu@correu.domini.
    • És exacta: amb aquest paràmetre, la regla només s'activarà amb adreces de correus a algu@correu.domini (exacta, coincidència sense distinció de majúscules).
    • Conté: amb aquest paràmetre, qualsevol adreça de correu que contingui la cadena coincidirà (p.ex. tambealgu@correu.domini o algu@correu.domini.net)
    • Comença amb: amb aquest paràmetre, qualsevol adreça de correu que comenci amb la cadena coincidirà (p.ex. algu@correu.domini.net, algu@correu.domini-nom.com)
    • Acaba amb: amb aquest paràmetre, qualsevol adreça de correu que acabi amb la cadena coincidirà (p.ex. algu@correu.domini, algualtre@correu.domini).
  • Continua amb la següent regla per l'adreça coincident
    L'activació d'aquesta funció us permet definir una regla sense haver d'indicar una identificació de clau en el camp Empra les claus OpenPGP següents:, així que l'adreça de correu s'usa per comprovar la clau en el moment d'enviar. També es processaran les regles posteriors per a la mateixa adreça(es).
  • No comprovis més regles per l'adreça coincident
    L'activació d'aquesta funció atura el procés d'altres regles per a l'adreça(es) coincident amb aquesta regla. El procés de regles continua amb el següent destinatari.
  • Empra les següents claus OpenPGP:
    Empreu el botó Selecciona clau(s).. per seleccionar les claus dels destinataris que s'usaran per a xifrar. De la mateixa manera que amb l'acció anterior, no es processen més regles amb l'adreça coincident.
  • Signatura per omissió: activa o desactiva la signatura del missatge, en funció del que s'ha indicat a la finestra de redacció del missatge. El valors són:
    • Mai: desactiva la signatura, inclòs si s'ha activat a la finestra de redacció del missatge (preval sobre els altres valors)
    • Sí, si s'ha seleccionat a la redacció del missatge: deixa la signatura tal com s'ha indicat a la finestra de redacció del missatge
    • Sempre: activa la signatura, inclòs si no s'ha activat a la finestra de redacció del missatge
Aquests paràmtres de signatura s'apliquen a totes les regles que coincideixen. Si una de les regles desactiva la signatura, el missatge no es signarà, a menys que altres regles indiquin Sempre.
  • Xifratge: activa o desactiva el xifratge del missatge. Els paràmetres admesos i el seu significat són els mateixos que per la signatura de missatge.
  • PGP/MIME: activa o desactiva l'ús de la codificació PGP/MIME (RFC 3156) del missatge. Si el PGP/MIME està desactivat, els missatges es codifiquen usant el "PGP inserit". Els paràmetres admesos i el seu significat són els mateixos que per la signatura de missatge.

Les regles es processen segons l'ordre mostrat a la llista de l'editor de regles OpenPGP. Quan una regla coincideix amb un destinatari i conté una identificació de clau OpenPGP, a més d'usar la identificació de clau indicada, el destinatari ja no es té en compte al processar més regles.


Teniu més ajuda a la vostra disposició a la pàgina de paràmetres per destinatari de l'Enigmail

enigmail/lang/ca/help/initError.html000066400000000000000000000054031266701624400177540ustar00rootroot00000000000000 Ajuda de l'Enigmail: Com resoldre els problemes en inicialitzar l'OpenPGP

Ajuda de l'Enigmail

Com resoldre els problemes en inicialitzar l'OpenPGP

Hi ha diversos motius pels que la inicialització de l'OpenPGP no funciona. Els més normals es descriuen tot seguit. Per a més informació visiteu la pàgina d'ajuda de l'Enigmail.

No s'ha trobat el GnuPG

Per a que funcioni l'OpenPGP, cal instal·lar l'eina GnuPG. Si no es pot trobar el GnuPG, primer assegureu-vos que l'executable gpg.exe (a Windows, gpg en altres platformes) està instal·lat a l'ordinador. Si el GnuPG està instal·lat, i l'OpenPGP no pot trobar-lo, aleshores necessitareu definir manualment el camí al GnuPG en les preferències de l'OpenPGP (menú OpenPGP > Preferències)

L'Enigmime falla en iniciar-se

L'OpenPGP funciona només si està construït utilitzant el mateix entorn de construcció amb el que s'ha construït el Thunderbird o el SeaMonkey. Aixó vol dir que només podeu utilitzar la versió oficial de l'Enigmail si utilitzeu les versions oficials del Thunderbird o el SeaMonkey proporcionats per mozilla.org.

Si utilitzeu una versió del Thunderbird o del SeaMonkey provinent d'alguna altra font (p.ex. el proveïdor de la vostra distribució de Linux), o si vós mateix heu construït l'aplicació, heu d'utilitzar una versió de l'Enigmail construïda per la mateixa font, o heu de construir l'Enigmail vós mateix. Per a construir l'Enigmail, dirigiu-vos a la secció de codi font de la pàgina inicial de l'Enigmail. Si us plau, no presenteu cap informe d'error respecte a aquest problema, no es pot solucionar.

Hi ha més ajuda disponible en el lloc web d'ajuda de l'Enigmail.

enigmail/lang/ca/help/messenger.html000066400000000000000000000105321266701624400177660ustar00rootroot00000000000000 Ajuda Enigmail: Lectura de missatges

Ajuda Enigmail

Emprant l'Enigmail per llegir missatges

  • Botó Desxifra a la finestra principal de la Missatgeria
    Aquest botó es pot emprar per a varies funcions: desxifrar, verificar o importar claus públiques. Normalment, el desxiframent/verificació és automàtic, encara que es pot desactivar amb una opció. Tanmateix, si això falla, es mostrarà un missatge curt d'error a la línia d'estat de l'Enigmail. Si feu un clic al botó Desxifra, podreu veure un missatge d'error més detallat, inclòsa la sortida de l'ordre GPG.
  • Icones del llapis i la clau al visualitzador de capçaleres del missatge
    Les icones del llapis i la clau al visualitzador de capçaleres del missatge indiquen si el missatge que esteu llegint ha estat signat i/o xifrat. Si el missatge ha estat modificat, la icona del llapis canviarà a un llapis trencat per a indicar que la signatura és dolenta. Fent un clic amb el botó dret a la icona del llapis o de la clau mostrarà un menú amb les següents opcions:
    • Informació de seguretat OpenPGP: us permet veure l'estat de la sortida GPG del missatge.
    • Copia la informació de seguretat OpenPGP: copia l'estat de la sortida GPG al porta-retalls; enganxar-lo a un missatge de resposta, etc.
    • Mostra l'identificador de foto OpenPGP: us permet veure l'identificador de foto de la persona que envia el missatge, si ha incrustat una foto a la seva clau pública. (Aquesta opció només s'activarà si existeix l'identificador de foto a la seva clau.)
    • Informació de seguretat S/MIME: us permet veure la informació de seguretat S/MIME del missatge.

    Si no heu establert l'opció keyserver-options auto-key-retrieve al vostre fitxer gpg.conf i llegiu un missatge que està signat o xifrat, veureu la icona d'un llapis a l'àrea de visualització de les capçaleres amb un interrogant, i la línia d'estat de l'Enigmail a l'àrea de capçaleres indicarà Part del missatge signat; feu un clic a la icona del llapis pels detalls i el missatge de la subfinestra de la Missatgeria mostrarà tots els indicadors del bloc PGP del missatge i el bloc de signatura.

    També podreu veure això si teniu establerta l'opció keyserver-options auto-key-retrieve al vostre fitxer gpg.conf i la clau PGP no es troba en el servidor de claus predeterminat.

    En fer un clic a la icona del llapis amb interrogant s'obrirà una finestra avisant que la clau no està al vostre anell de claus. Si feu un clic a D'acord s'obrirà una altra finestra amb una llista dels servidors de claus que podeu seleccionar per a baixar la clau pública del remitent.

    Per a configurar la llista dels servidors de claus que voleu usar, aneu a la pestanya Enigmail -> Preferències -> Bàsic i introduïu les adreces dels servidors de claus a la caixa Servidor(s) de claus:, separats per comes. El primer servidor de claus serà el predeterminat.

  • Obrint fitxers adjunts xifrats / important claus PGP adjuntes
    Els fitxers adjunts anomenats *.pgp, *.asc i *.gpg es reconeixen com adjunts que l'Enigmail pot gestionar de manera especial. Fent un clic amb el botó dret en aquests adjunts s'activen dos elements especials del menú contextual: Desxifra i obre i Desxifra i desa. Empreu aquests dos elements del menú si voleu que l'Enigmail desxifri un adjunt abans d'obrir-lo o desar-lo. Si un adjunt es reconeix com un fitxer de clau PGP, se us oferirà la possibilitat d'importar la clau al vostre anell de claus.

Teniu més ajuda a la vostra disposició a la pàgina web de l'Enigmail

enigmail/lang/ca/help/rulesEditor.html000066400000000000000000000066041266701624400203040ustar00rootroot00000000000000 Ajuda Enigmail: Editor de regles

Ajuda Enigmail

Emprant l'editor de regles de l'Enigmail

En el editor de regles podeu indicar que, en funció del destinatari, s'activi el xifratge, la signatura i el PGP/MIME, i definir quina clau OpenPGP emprar. Cada regla consisteix en 5 camps que es representen en una línia individual:

  • Correu electrònic: l'adreça(es) dels camps A: (To), Còpia: (Cc) i Còpia invisible: (Bcc) a comprovar. La coincidència es basa en subcadenes (es poden trobar més detalls al diàleg d'edició de regles)
  • Clau(s) OpenPGP: una llista de les identificacions de claus OpenPGP per a usar amb el destinatari
  • Signatura: activa o desactiva la signatura del missatge. Això preval sobre el que s'ha indicat a la finestra de redacció del missatge. El valors són:
    • Mai: desactiva la signatura, inclòs si s'ha activat a la finestra de redacció del missatge (preval sobre els altres valors)
    • Possible: deixa la signatura tal com s'ha indicat a la finestra de redacció del missatge
    • Sempre: activa la signatura, inclòs si no s'ha activat a la finestra de redacció del missatge
Aquests paràmetres de signatura s'aplicaran a totes les regles que coincideixin. Si una de les regles desactiva la signatura, el missatge no es signarà, a menys que altres regles indiquin Sempre.
  • Xifratge: activa o desactiva el xifratge del missatge. Els paràmetres permesos i els seu significat són els mateixos que per la signatura de missatge.
  • PGP/MIME: activa o desactiva l'ús de la codificació PGP/MIME (RFC 3156) del missatge. Si el el PGP/MIME està desactivat, els missatges es codifiquen amb el "PGP inserit". Els paràmetres permesos i els seu significat són els mateixos que per la signatura de missatge.

Les regles es processen segons l'ordre mostrat a la llista. Quan una regla coincideix amb un destinatari i conté un identificador de clau OpenPGP, a més d'emprar l'dentificador de clau indicat, el destinatari no es tornarà a considerar en processar les regles seguents.

Nota: L'editor de regles encara no està acabat. És posible escriure les regles més avançades editant directament el fitxer de regles (aquestes regles no hauríen de tornar-se a editar en el editor de regles). Més informació per editar directament el fitxer a la pàgina web de l'Enigmail


Teniu més ajuda a la vostra disposició a la pàgina web d'ajuda de l'Enigmail

enigmail/lang/ca/help/sendingPrefs.html000066400000000000000000000047771266701624400204430ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/cs/000077500000000000000000000000001266701624400142015ustar00rootroot00000000000000enigmail/lang/cs/am-enigprefs.properties000066400000000000000000000001211266701624400206660ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP/Enigmail enigmail/lang/cs/enigmail.dtd000066400000000000000000000760061266701624400164740ustar00rootroot00000000000000 UpozornÄ›ní: tvorba klíÄe klíÄe může nÄ›kolik minut trvat. NeukonÄujte aplikaci, dokud probíhá vytváření klíÄe. Proces se urychlí a zlepší, když budete aktivnÄ› pracovat s prohlížeÄem a Äasto pÅ™istupovat k harddisku. Na to, že je klÃ­Ä vytvoÅ™en, budete upozornÄ›n/a."> ' je nesprávnÄ›"> UpozornÄ›ní: Vytváření klíÄe může trvat nÄ›kolik minut. NeukonÄujte aplikaci, dokud probíhá vytváření klíÄe. Na to, že je klÃ­Ä vytvoÅ™en, budete upozornÄ›n/a."> UpozornÄ›ní: Enigmail bude vždy ověřovat podpisy v e-mailech vÅ¡ech identit a úÄtů bez ohledu na to, zda je to v nich povoleno"> DÄ›kujeme, že používáte Enigmail."> enigmail/lang/cs/enigmail.properties000066400000000000000000000632051266701624400201120ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=UpozornÄ›ní Enigmail enigConfirm=Potvrzení Enigmail enigError=Chyba Enigmail enigPrompt=PÅ™ipomenutí Enigmail dlgYes=&Ano dlgNo=&Ne dlgKeepSetting=Pamatovat si odpovÄ›Ä a neptat se znovu dlgNoPrompt=Nezobrazovat znovu tento dialog dlg.button.delete=&Odstranit/Smazat dlg.button.cancel=&ZpÄ›t dlg.button.close=&Zavřít dlg.button.continue=Pok&raÄovat dlg.button.skip=&PÅ™eskoÄit dlg.button.view=&Zobrazit repeatPrefix=\n\nToto upozornÄ›ní se zopakuje %S repeatSuffixSingular=krát. repeatSuffixPlural=krát. noRepeat=\n\nToto upozornÄ›ní se již nezopakuje, dokud nebudete upgradovat Enigamil. pgpNotSupported=Zdá se, že používáte Enigmail spoleÄnÄ› s PGP 6.x\n\nPGP 6.x má bohužel nÄ›kolik nedostatků, kvůli kterým nelze zajistit správný chod rozšíření Enigmail. Proto také Enigmail nepodporuje více PGP 6.x; radÄ›ji prosím používejte GnuPG (GPG).\n\nJestliže potÅ™ebujete pomoc s pÅ™echodem na GnuPG, pÅ™eÄtÄ›te si sekci Help na domovské stránce Enigmailu. passphraseCleared=Heslo bylo smazáno. noPhotoAvailable=Foto není k dispozici debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Foto cesta s není Äitelný usingVersion=SpuÅ¡tÄ›no rozšíření Enigmail verze %S usingAgent=K Å¡ifrování a deÅ¡ifrování je použito GnuPG, které je umístÄ›né v cestÄ› %S %S agentError=CHYBA: selhal přístup ke službÄ› Enigmime! accessError=Chyba v přístupu k službám rozšíření Enigmail onlyGPG=Generování klíÄe je možné jedinÄ› s GnuPG (ne s PGP)! keygenComplete=Generování klíÄe je dokonÄeno! Identita <%S> bude použita k podepisování. revokeCertRecommended=Velice Vám doporuÄujeme vytvoÅ™it revokaÄní certifikát pro Vás klíÄ. Tento certifikát můžete být použít pro zneplatnÄ›ní klíÄe, napÅ™. když soukromý klÃ­Ä ztratíte nebo bude klÃ­Ä kompromitován. PÅ™ejete si nyní vytvoÅ™it revokaÄní certifikát? keyMan.button.generateCert=&Generování certifikátu genCompleteNoSign=Generování klíÄe je dokonÄeno! genGoing=Generování klíÄe již probíhá! passNoMatch=Heslo nesouhlasí, zadejte jej prosím znovu passCheckBox=PÅ™ekontrolujte prosím okénko, zda nastavujete klíÄi volbu \\"bez hesla\\" passUserName=Prosím specifikujte jméno uživatele pro tuto identitu passSpaceProblem=Z technických důvodů může být vaÅ¡e přístupové heslo není zaÄínat nebo konÄit mezerou changePassFailed=ZmÄ›na hesla selhala. keyConfirm=VytvoÅ™it veÅ™ejný a soukromý klÃ­Ä pro '%S'? keyMan.button.generateKey=&VytvoÅ™it klÃ­Ä keyAbort=PÅ™eruÅ¡it vytváření klíÄe? keyMan.button.generateKeyAbort=&PÅ™eruÅ¡it vytváření klíÄe keyMan.button.generateKeyContinue=&PokraÄovat ve vytváření klíÄe expiryTooLong=Nemůžete vytvoÅ™it klíÄ, který expiruje více než za 100 let. expiryTooLongShorter=You cannot create a key that expires in more than 90 years. expiryTooShort=Váš klÃ­Ä musí být platný minimálnÄ› jeden den. dsaSizeLimit=DSA podepisovací klíÄe jsou omezeny na 3072 bitů.PoÄet kláves se odpovídajícím způsobem sníží. keyGenFailed=Vytváření klíÄe selhalo. Podrobnosti zjistíte v konzoli Enigmail (nabídka Enigmail > LadÄ›ní Enigmail). # Strings in enigmailMessengerOverlay.js securityInfo=Informace zabezpeÄení Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Přílohy k této zprávÄ› nebyly podepsány nebo zaÅ¡ifrovány*\n\n possiblyPgpMime=Tato zpráva je možná zaÅ¡ifrovaná nebo podepsaná PGP/MIME; ověříte si to po kliknutí na tlaÄítko \\"DeÅ¡ifrovat\\" noDecrypted=Žádná deÅ¡ifrovaná zpráva k uložení!\nPoužijte příkaz \\"Uložit\\" z menu Soubor noMessage=Žádná zpráva k uložení useButton=K rozÅ¡ifrování zprávy prosím kliknÄ›te na tlaÄítko \\"DeÅ¡ifrovat\\" saveHeader=Enigmail: Uložit deÅ¡ifrovanou zprávu saveAttachmentHeader=Enigmail: Uložit deÅ¡ifrovanou přílohu noTempDir=Nemohu najít doÄasný adresář k zápisu\nNastavte promÄ›nnou prostÅ™edí systému TEMP prosím attachmentPgpKey=Zdá se, že příloha '%S', kterou otevíráte, je soubor s klíÄem OpenPGP.\n\nKlinÄ›te na \\"Import\\" pro uložení klíÄe nebo na \\"Zobrazit\\", abyste si prohlédli obsah souboru v oknÄ› prohlížeÄe. beginPgpPart=********* *ZACATEK SIFROVANE nebo PODEPSANE CASTI* ********* endPgpPart=********** *KONEC SIFROVANE nebo PODEPSANE CASTI* ********** notePartEncrypted=Enigmail: *Cast zpravy nebyla podepsana nebo desifrovana* noteCutMessage=Enigmail: *Nalezen mnohonásobný blok zpráv -- deÅ¡ifrování/ověření zruÅ¡eno* decryptOkNoSig=UpozornÄ›ní\n\nDeÅ¡ifrování bylo úspěšné, ale podpis nemohl být správnÄ› ověřen msgOvl.button.contAnyway=&PÅ™ejete si pÅ™esto pokraÄovat? signature.verifiedOK=ÚspěšnÄ› byl ověřen podpis přílohy %S signature.verifyFailed=Nelze ověřit podpis přílohy %S attachment.noMatchToSignature=Přílohu '%S' nelze porovnat se souborem podpisu attachment.noMatchFromSignature=Soubor podpisu '%S' nelze s přílohou porovnat keysToExport=Vybrat klíÄe OpenPGP ke vložení keysToUse=Vybrat klíÄ/e OpenPGP pro použití s %S pubKey=VeÅ™ejný klÃ­Ä pro %S\n windowLocked=Okno vytváření zprávy je uzamÄeno; odesílání zruÅ¡eno sendUnencrypted=Chyba inicializace Enigmailu.\nOdeslat zprávu nezaÅ¡ifrovanou? composeSpecifyEmail=UrÄete prosím svou hlavní e-mailovou adresu, která bude vybrána k podepisování odchozích zpráv.\n Jestliže ji nevyplníte, bude pro výbÄ›r klíÄe k podpisu použita adresa odesílatele. sendingHiddenRcpt=Tato zpráva obsahuje příjemce BCC (skrytá kopie). Jestliže je taková zpráva zaÅ¡ifrována, je možné skrýt BCC příjemce, ale uživatelé nÄ›kterých produktů (napÅ™. PGP Corp.) nebudou moci zprávu deÅ¡ifrovat. Proto nedoporuÄujeme používat BCC u Å¡ifrovaných zpráv. sendWithHiddenBcc=Skrýt příjemce BCC sendWithShownBcc=Å ifrovat normálnÄ› sendingNews=Odeslání Å¡ifrované zprávy selhalo.\n\nTato zpráva nemůže být Å¡ifrována, protože obsahuje adresáta z diskuzní skupiny. PoÅ¡lete prosím zprávu bez Å¡ifrování. sendToNewsWarning=Pozor: Snažíte se poslat zaÅ¡ifrovaný email do diskuzní skupiny.\n\nOd toho odrazujeme, protože to má smysl pouze v případÄ›, že vÅ¡ichni Älenové skupiny jsou schopni email rozÅ¡ifrovat. Zpráva musí být Å¡ifrována pomocí klíÄů vÅ¡ech skupin úÄastníků. Prosím, poÅ¡lete tuto zprávu, jen pokud pÅ™esnÄ› víte, co dÄ›láte.\n\nPokraÄovat? hasHTML=HTML e-mail - varování\nZpráva zÅ™ejmÄ› obsahuje kód HTML, který může způsobit chybu pÅ™i podepisování nebo Å¡ifrování. Této chybÄ› u podepsaného mailu se vyhnete, když stlaÄíte klávesu SHIFT pÅ™i kliknutí na tlaÄítko 'VytvoÅ™it zprávu' nebo 'OdpovÄ›dÄ›t'.\nJestliže vždy zprávy podepisujete, mÄ›li byste radÄ›ji trvale zruÅ¡it 'Vytváření zpráv v HTML' u tohoto úÄtu. (Pozn. pÅ™ekl.: anebo odesílejte zprávy s využitím PGP/MIME, jestliže je to možné, tj. jestliže příjemce používá poÅ¡tovního klienta, který PGP/MIME podporuje.) strippingHTML=Zpráva obsahuje kód HTML, který bude pÅ™i konverzi do prostého textu pÅ™i podepisování nebo Å¡ifrování ztracen. PÅ™ejete si provést konverzi? msgCompose.button.sendAnyway=&Odeslat pÅ™esto zprávu attachWarning=Přílohy k této zprávÄ› nejsou místní a nemohou být tedy Å¡ifrovány. Přílohu je tÅ™eba k zaÅ¡ifrování nejdříve uložit jako místní soubor. PÅ™ejete si pÅ™esto pokraÄovat dále? quotedPrintableWarn=Pro odesílání zpráv je povoleno kódování 'quoted-printable', to může způsobit nesprávné deÅ¡ifrování a/nebo ověření vaší zprávy.\n PÅ™ejete si vypnout odesílání zpráv v 'quoted-printable'? minimalLineWrapping=Máte nastaveno zalamování řádků na %S znaků. Pro správné Å¡ifrování a/nebo podepisování musí být tato hodnota nejménÄ› 68.\nPÅ™ejete si nyní zmÄ›nit zalamování řádků na 68 znaků? warning=Pozor signIconClicked=RuÄnÄ› jste zmÄ›nil/a podepisování. PÅ™i vytváření této zprávy proto (de)aktivace podpisu nezávisí na (de)aktivaci Å¡ifrování. pgpMime_sMime.dlg.text=Máte spoleÄnÄ› povoleno použití PGP/MIME a S/MIME. Bohužel vÅ¡ak není možná podpora obou protokolů najednou. Vyberte prosím, zda chcete použít PGP/MIME nebo S/MIME. pgpMime_sMime.dlg.pgpMime.button=Použít &PGP/MIME pgpMime_sMime.dlg.sMime.button=Použít &S/MIME errorKeyUnusable=Emailovou adresu nebo ID '%S' nelze pÅ™iÅ™adit k platnému neexpirovanému klíÄi OpenPGP key.\nUjistÄ›te se prosím, že máte platný klÃ­Ä OpenPGP a máte jej správnÄ› nastavený v nastavení úÄtu. # note: should end with double newline: sendAborted=Odeslání zprávy se nezdaÅ™ilo.\n\n statPGPMIME=PGP/MIME statSigned=PODEPSANOU statEncrypted=Å IFROVANOU statPlain=NEPODEPSANà a NEZAÅ IFROVANà offlineSave=Uložit %S zprávu do %S do složky konceptů? onlineSend=Odeslat zprávu %S na %S? encryptKeysNote=UpozornÄ›ní: zpráva je Å¡ifrována s následujícím uživatelským ID / klíÄem: %S signFailed=Chyba Enigmail; Å ifrování nebo podepisování selhalo; odeslat zprávu nezaÅ¡ifrovanou? msgCompose.button.sendUnencrypted=&Odeslat nezaÅ¡ifrovanou zprávu recipientsSelectionHdr=UrÄit adresáty pro Å¡ifrování configureNow=Nemáte jeÅ¡tÄ› nastaveno zabezpeÄení Enigmail pro zvolenou identitu. PÅ™ejete si to nyní provést? # should not be used anymore: encryptYes=Zpráva bude Å¡ifrována encryptNo=Zpráva nebude Å¡ifrována # should not be used anymore: signYes=Zpráva bude podepsána signNo=Zpráva nebude podepsána rulesConflict=Nalezena rozporná pravidla pro adresáty\n%S\n\nPoslat zprávu s tÄ›mito nastaveními? msgCompose.button.configure=&Nastavení msgCompose.button.send=&Odeslat zprávu msgCompose.button.save=&Uložit zprávu # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=K ověření podpisu je nutný veÅ™ejný klÃ­Ä %S clickDecrypt=; stisknÄ›te tlaÄítko DeÅ¡ifrovat clickDecryptRetry=; stisknÄ›te tlaÄítko DeÅ¡ifrovat znovu msgPart=Část zprávy %S msgSigned=podepsána msgEncrypted=Å¡ifrována msgSignedAndEnc=podepsána a Å¡ifrována unverifiedSig=Neověřený podpis incompleteDecrypt=Nekompletní deÅ¡ifrování needKey=Chyba - pro deÅ¡ifrování je potÅ™eba soukromý klÃ­Ä failedDecrypt=Chyba - deÅ¡ifrování selhalo badPhrase=Chyba - Å¡patné heslo failedDecryptVerify=Chyba - deÅ¡ifrování/ověření selhalo viewInfo=; Zobrazit > BezpeÄnostní informace zprávy pro podrobnosti decryptedMsg=DeÅ¡ifrovaná zpráva locateGpg=Nalézt program GnuPG invalidGpgPath=GnuPG nelze na uvedené cestÄ› spustit. Enigmail bude tedy proto vypnuto dokud nezmÄ›níte cestu ke GnuPG nebo dokud nerestartujete aplikaci. warningsAreReset=VÅ¡echna varování byla resetována. prefs.gpgFound=GnuPG bylo nalezeno v %S prefs.gpgNotFound=Nelze nalézt GnuPG prefs.warnAskNever=Varování: aktivací této volby docílíte toho, že zprávy budou odesílány nezaÅ¡ifrované bez ohlášení, jestliže nemáte klÃ­Ä pro nÄ›kterého z příjemců -- Enigmail Vás o tomto nebude nadále informovat! prefs.warnIdleTimeForUnknownAgent=Your system uses a specialized tool for passphrase handling such as gnome-keyring or seahorse-agent. Unfortunately Enigmail cannot control the passphrase timeout for the tool you are using. Therefore the respective timeout settings in Enigmail are disregarded. prefEnigmail.oneKeyserverOnly=Chyba - je možné urÄit pouze jeden keyserver pro automatické stahování chybÄ›jících klíÄů OpenPGP. enterAdminPin=NapiÅ¡te prosím PIN správce pro SmartCard enterCardPin=NapiÅ¡te prosím svůj PIN pro SmartCard notInit=Chyba! Služba Enigmail dosud nebyla inicializována badCommand=Chyba - Å¡ifrovací příkaz selhal cmdLine=příkazová řádka a výstup: notRequired=Chyba - Å¡ifrování není nutné notComplete=Chyba - generování klíÄe není jeÅ¡tÄ› dokonÄeno invalidEmail=Chyba - chybná e-mailová adresa/y noPassphrase=Chyba - nebylo vyplnÄ›no heslo noPGPblock=Chyba - nenalezen platný datový blok OpenPGP unverifiedReply=Odsazená Äást zprávy (odpovÄ›Ä) byla pravdÄ›podobnÄ› zmÄ›nÄ›na sigMismatch=Chyba - podpis nesouhlasí cantImport=Chyba pÅ™i importování veÅ™ejného klíÄe\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=SmartCard %S nalezená ve vaší ÄteÄky nemůže být použita pro zpracování zprávy.\nVložte prosím SmartCard %S a opakujte operaci. sc.insertCard=Operace vyžaduje VaÅ¡i SmartCard %s.\nVložte prosím požadovanou SmartCard a opakujte operaci. sc.removeCard=Operace vyžaduje, aby ve ÄteÄce nebyla žádná SmartCard.\nVyjmÄ›te prosím SmartCard a zopakujte operaci. sc.noCardAvailable=SmartCard ve ÄteÄce nebyla nalezena\nVložte prosím SmartCard a zopakujte operaci. sc.noReaderAvailable=Váše ÄteÄka SmartCard není přístupná\nPÅ™ipojte prosím ÄteÄku SmartCard, vložte kartu a operaci zopakujte. gpgNotFound=Nelze nalézt program GnuPG '%S'.\nUjistÄ›te se, zda máte správnÄ› zadanou cestu ke spustitelnému souboru GnuPG v nastavení Enigmail. gpgNotInPath=Nelze nalézt spustitelný soubor GnuPG v cestÄ› PATH.\nUjistÄ›te se, zda máte správnÄ› zadanou cestu ke spustitelnému souboru GnuPG v nastavení Enigmail. gpgAgentNotStarted=Nelze spustit program gpg-agent, který potÅ™ebujete pro GnuPG vaší verze %S. prefUntrusted=NEDÅ®VÄšRYHODNŸ prefRevoked=REVOKOVANà KLÃÄŒ prefExpiredKey=EXPIROVANà KLÃÄŒ prefExpired=EXPIROVANà prefGood=SPRÃVNà podpis od %S prefBad=CHYBNà podpis od %S failCancel=Chyba - příjem klíÄe zruÅ¡en uživatelem failNoServer=Chyba - není urÄen keyserver pro pÅ™ijetí klíÄe failNoID=Chyba - není urÄeno ID, pro které pÅ™ijmout klÃ­Ä failKeyExtract=Chyba - extrakce klíÄe selhala notFirstBlock=Chyba - první blok OpenPGP není blok veÅ™ejného klíÄe importKeyConfirm=Importovat veÅ™ejný/é kliÄ(e) obsažený ve zprávÄ›? failKeyImport=Chyba - import klíÄe selhal fileWriteFailed=Selhal zápis do souboru %S importKey=Importovat veÅ™ejný klÃ­Ä %S z keyserveru: uploadKey=Poslat veÅ™ejný klÃ­Ä %S na keyserver: keyId=ID klíÄe keyAndSigDate=ID klíÄe: 0x%S / Podepsán: %S keyFpr=Otisk prstu klíÄe: %S noEmailProvided=Nezadal/a jste e-mailovou adresu! keyAlreadySigned=KlÃ­Ä je již podepsán, nemůžete jej ppodepsat dvakrát. gnupg.invalidKey.desc=KlÃ­Ä %S nebyl nalezen nebo není platný. (Pod-)klÃ­Ä může být expirován. selKeyExpired=expirovaný %S createdHeader=VytvoÅ™en atLeastOneKey=Nebyl zvolen žádný klíÄ! Pro pÅ™ijetí tohoto dialogu vyberte alespoň jeden klÃ­Ä fewerKeysThanRecipients=Vybrali jste menší poÄet klíÄů než příjemců. Je jistÄ› seznam klíÄů k Å¡ifrování kompletní? userSel.button.goBack=Vybrat více klíÄů userSel.secretKeySel.title=Vyberte soukromý klÃ­Ä OpenPGP k podpisu svých zpráv # Strings used in enigmailAttachmentDialog.js pgpMimeNote=UpozornÄ›ní: PGP/MIME je podporováno pouze v omezeném poÄtu e-mailových klientů! Podpora tohoto standardu je ve Windows známa pouze pro Mozilla/Thunderbird, Sylpheed, Pegasus a Mulberry; v Linux/UNIXu a Mac OS X jej podporuje vÄ›tÅ¡ina známých e-mailových klientů. Jestliže si nejste jisti, zvolte možnost %S. first=první second=druhý # Strings used in am-enigprefs.js encryptKeyHeader=UrÄit klÃ­Ä OpenPGP pro Å¡ifrování identityName=Identita: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Máte aktivováno Å¡ifrování, ale nevybral/a jste žádný klíÄ. K Å¡ifrování zprávy pro %S je tÅ™eba vybrat jeden nebo nÄ›kolik platných klíÄů ze seznamu. Chcete zakázat Å¡ifrování pro %S? noKeyToUse=(nic - žádné Å¡ifrování) noEmptyRule=Pravidlo nesmí být prázdné! Prosím nastavte e-mailovou adresu v poli pravidla. invalidAddress=Vložená/é e-mailová adresa/y je/jsou neplatná/é. Nelze vkládat jména příjemců, ale pouze e-mailové adresy. NapÅ™.:\nNeplatné: jmeno \nPlatné: jmeno@adresa.cz noCurlyBrackets=Složené závorky {} mají speciální význam a nemohou být použity v e-mailové adrese. Jetliže chcete zmÄ›nit chování pro toto pravidlo, použijte možnost 'Aplikuj pravidlo, jestliže adresát ...'.\nVíce informací je dostupných pÅ™es tlaÄítko NápovÄ›da. # Strings used in enigmailRulesEditor.js never=Nikdy always=Vždy possible=Možný deleteRule=Opravdu smazat vybrané pravidlo? nextRcpt=(Další adresát) negateRule=Ne addKeyToRule=PÅ™idat klÃ­Ä %S (%S) k pravidlu podle příjemce # Strings used in enigmailSearchKey.js needOnline=Funkce, kterou jste zvolil/a, není dostupná v offline módu. PÅ™ejdÄ›te prosím do online módu a zkuste to znovu. protocolNotSupported=Protokol '%S://', který jste zvolil/a, není podporován pro stažení klíÄů OpenPGP. gpgkeysDisabled=Může vám pomoci povolit volbu 'extensions.enigmail.useGpgKeysTool' noKeyserverConn=Nelze se pÅ™ipojit na keyserver %S. keyDownloadFailed=Selhalo stažení klíÄe z keyserveru. Stavová zpráva:\n%S internalError=Vyskytla se vnitÅ™ní chyba. KlíÄe nelze stáhnout nebo importovat. noKeyFound=Je mi líto, ale nemohu nalézt žádný klíÄ, který by odpovídal zadaným kritériím pro vyhledávání.\nVÅ¡imnÄ›te si prosím, že ID klíÄe by mÄ›lo zaÄínat na \\"0x\\" (napÅ™. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Selhalo hledání nebo stahování klíÄe z keyserveru: gpgkeys_%S nelze spustit. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nastavení důvÄ›ryhodnosti selhalo # Strings in enigmailSignKeyDlg.js signKeyFailed=Podepsání klíÄe selhalo alreadySigned.label=UpozornÄ›ní: klÃ­Ä %S je již podepsán oznaÄeným soukromým klíÄem. # Strings in enigmailKeyManager.js keyMan.loadingKeys=NaÄítání klíÄů, Äekejte prosím ... keyValid.unknown=neznámý keyValid.invalid=neplatný keyValid.disabled=zakázaný keyValid.revoked=revokovaný keyValid.expired=expirovaný keyValid.noSubkey=žádný platný podklÃ­Ä keyTrust.untrusted=nedůvÄ›ryhodný keyTrust.marginal=okrajovÄ› keyTrust.full=plnÄ› důvÄ›ryhodný keyTrust.ultimate=absolutnÄ› důvÄ›ryhodný keyTrust.group=(skupina) keyType.public=veÅ™ejný keyType.publicAndSec=veÅ™ejný/soukromý keyMan.enableKey=Povolit klÃ­Ä keyMan.disableKey=Zakázat klÃ­Ä userAtt.photo=Znak uživatele (JPEG obrázek) asciiArmorFile=Soubory kódované ASCII (*.asc) importKeyFile=Importovat klÃ­Ä OpenPGP ze souboru gnupgFile=Soubory GnuPG saveRevokeCertAs=VytvoÅ™it a uložit revokaÄní certifikát revokeCertOK=RevokaÄní certifikát byl úspěšnÄ› vytvoÅ™en. Můžete jej použít ke zneplatnÄ›ní svého veÅ™ejného klíÄe, napÅ™. pokud svůj soukromý klÃ­Ä ztratíte.\n\nPÅ™eneste jej prosím na médium (CD, disketa), které může být uloženo nÄ›kde stranou na bezpeÄném místÄ›. Jestliže nÄ›kdo získá přístup k tomuto certifikátu, může způsobit, že Váš klÃ­Ä bude nepoužitelný. revokeCertFailed=RevokaÄní certifikát nemohl být vytvoÅ™en. addUidOK=ÚspěšnÄ› přídáno ID uživatele addUidFailed=Selhalo pÅ™idání ID uživatele noKeySelected=K provedení operace byste mÄ›l/a vybrat aspoň jeden klÃ­Ä exportToFile=Exportovat veÅ™ejný klÃ­Ä do souboru exportSecretKey=PÅ™ejete si do uloženého souboru s klíÄem OpenPGP zahrnout i soukromý klíÄ? saveKeysOK=KlíÄe byly úspěšnÄ› uloženy saveKeysFailed=Uložení klíÄů selhalo importKeysFailed=Importování klíÄů selhalo enableKeyFailed=Povolení/zakázání klíÄů selhalo specificPubKeyFilename=%S (0x%S)_verejny specificPubSecKeyFilename=%S (0x%S)_verejny-soukromy defaultPubKeyFilename=Exportovane-verejne-klice defaultPubSecKeyFilename=Exportovany-verejny-a-soukromy-klic noSecretKeys=Nebyly nalezeny žádné soukromé klíÄe.\n\nPÅ™ejete si nyní vytvoÅ™it svůj vlastní klíÄ? sendKeysOk=KlíÄ/e byly úspěšnÄ› odeslány sendKeysFailed=Odeslání klíÄů selhalo receiveKeysOk=KlíÄ/e úspěšnÄ› aktualizovány receiveKeysFailed=Stažení klíÄů selhalo importFromClip=PÅ™ejete si importovat nÄ›který/é klíÄ/e ze schránky? copyToClipbrdFailed=Zvolený/é klíÄ/e nelze kopírovat do schránky. copyToClipbrdOK=KlíÄe byly zkopírovány do schránky deleteSecretKey=Varování: Snažíte se smazat soukromý klíÄ!\nJestliže smažete svůj soukromý klíÄ, nebudete moci dále deÅ¡ifrovat zprávy zaÅ¡ifrované pro tento klÃ­Ä ani klÃ­Ä revokovat.\n\nPÅ™ejete si opravdu smazat oba klíÄe (veÅ™ejný i soukromý)\n'%S'? deleteMix=POZOR: Pokoušíte se smazat soukromé klíÄe!\nJestliže smažete svůj soukromý klíÄ, nebudete moci dále deÅ¡ifrovat zprávy zaÅ¡ifrované pro tento klíÄ.\n\nOpravdu si pÅ™ejte smazat Vámi zvolený veÅ™ejný a soukromý klíÄ? deletePubKey=PÅ™ejete si smazat tento veÅ™ejný klíÄ\n'%S'? deleteSelectedPubKey=PÅ™ejete si smazat tyto veÅ™ejné klíÄe? deleteKeyFailed=KlÃ­Ä nelze smazat revokeKeyOk=KlÃ­Ä byl revokován. Jestliže je tento klÃ­Ä dostupný také na keyserveru, je doporuÄeno odeslat jej tam znovu, abyste dal/a i ostatním uživatelům vÄ›det o revokaci. revokeKeyFailed=KlÃ­Ä nelze revokovat refreshAllQuestion=Nevybral/a jste žádný klíÄ. PÅ™ejete si obnovit seznam vÅ¡ech klíÄů? refreshKey.warn=POZOR: v závislosti na poÄtu klíÄů a rychlosti pÅ™ipojení k internetu může trvat obnovení seznamu vÅ¡ech klíÄů delší dobu! downloadContactsKeys.warn=Warning: depending on the number of contacts and the connection speed, downloading all keys could be quite a lengthy process! keyMan.button.exportSecKey=Exportovat &soukromé klíÄe keyMan.button.exportPubKey=Exportovat &pouze veÅ™ejné klíÄe keyMan.button.import=&Importovat keyMan.button.refreshAll=&Znovu naÄíst vÅ¡echny klíÄe keyMan.button.revokeKey=&Revokovat klÃ­Ä keylist.noOtherUids=Nemá jiné identity keylist.hasOtherUids=Další identita keylist.noPhotos=Fotografie není dostupná keylist.hasPhotos=Foto keyMan.addphoto.filepicker.title=Vyberte fotografii pro vložení keyMan.addphoto.warnLargeFile=Vybrali jste soubor vÄ›tší než 25kB.\nNení doporuÄeno pÅ™ipojovat příliÅ¡ velké soubory, protože se tím klíÄe stávají velmi objemné. keyMan.addphoto.noJpegFile=Vybraný soubor zÅ™ejmÄ› není JPEG. Vyberte jiný soubor. keyMan.addphoto.failed=Soubor nelze vloÅ™it. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=ZmÄ›na výchozího ID uživatele selhala changePrimUidOK=ZmÄ›na výchozího ID uživatele probÄ›hla úspěšnÄ› deleteUidFailed=Mazání ID uživatele %S selhalo deleteUidOK=ID uživatele %S bylo úspěšnÄ› smazáno revokeUidFailed=Revokace ID uživatele %S selhalo revokeUidOK=ID uživatele %S bylo úspěšnÄ› revokováno. Jestliže je tento klÃ­Ä dostupný také na keyserveru, je doporuÄeno odeslat jej tam znovu, aby se i ostatní o revokaci dozvÄ›dÄ›li. revokeUidQuestion=JistÄ› si pÅ™ejete revokovat ID uživatele %S? deleteUidQuestion=JistÄ› si pÅ™ejete si smazat uživatelské ID %S?\n\nVÅ¡imnÄ›te si prosím: jestliže je váš veÅ™ejný klÃ­Ä na keyserveru, smazání ID uživatele nic nezmÄ›ní. V tomto případÄ› zvolte 'Revokovat ID uživatele'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=veÅ™ejný klÃ­Ä keyTypePrimary=hlavní kÃ­Ä keyTypeSubkey=podklÃ­Ä keyTypePair=pár klíÄů keyExpiryNever=nikdy keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Å ifrování keyUsageSign=Podepisování keyUsageCertify=Potvrdit keyUsageAuthentication=Ověřování # Strings in enigmailGenCardKey.xul keygen.started=Prosím poÄkejte, klÃ­Ä se zaÄal vytvářet .... keygen.completed=KlÃ­Ä vytvoÅ™en. Nový klÃ­Ä má ID: 0x%S keygen.keyBackup=KlÃ­Ä byl zazálohován jako %S keygen.passRequired=Jestliže chcete vytvoÅ™it záložní kopii VaÅ¡eho klíÄe mimo SmartCard, napiÅ¡te prosím heslo. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN, které jste zadal/a, nesouhlasí; napiÅ¡te jej prosím znovu cardPin.minLength=PIN musí obsahovat nejménÄ› %S znaků nebo Äíslic cardPin.processFailed=ZmÄ›na PIN selhala # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Obnovují se klíÄe, prosím Äekejte ... keyserverProgress.uploading=Odesílání klíÄů, prosím Äekejte ... keyserverTitle.refreshing=Obnovit klíÄe keyserverTitle.uploading=Odesílání klíÄe # Strings in enigmailSetupWizard passphrase.min8keys=VaÅ¡e heslo je kratší než 8 znaků! setupWizard.reallyCancel=Opravdu si pÅ™ejete ukonÄit průvodce nastavením Enigmail? setupWizard.invalidGpg=Soubor, který jste zadali, není spustitelný GnuPG. Zadejte prosím jiný soubor. setupWizard.specifyFile=Abyste mohli pokraÄovat, potÅ™ebujete urÄit alespoň soubor s veÅ™ejným klíÄem. setupWizard.installFailed=Zdá se, že instalace nebyla úspěšná. Prosím, buÄ opakovat instalaci nebo nainstalovat GnuPG ruÄnÄ› a lokalizovat pomocí tlaÄítka Procházet. setupWizard.downloadForbidden=Pro vaÅ¡i vlastní bezpeÄnost, nebudeme stáhnout GnuPG. NavÅ¡tivte http://www.gnupg.org/, aby se stáhnout GnuPG. setupWizard.downloadImpossible=Nemůžeme stáhnout GnuPG v souÄasné dobÄ›. Zkuste to prosím pozdÄ›ji nebo navÅ¡tivte http://www.gnupg.org/, aby se stáhnout GnuPG. setupWizard.hashSumError=Průvodce nemohl ověřit integritu staženého souboru.Soubor může být poÅ¡kozen nebo maniuplated. Chcete pokraÄovat pÅ™esto v instalaci ? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Chyba ocurred pÅ™i pokusu o stažení GnuPG. Zkontrolujte prosím konzoly protokol pro další podrobnosti. installGnuPG.installFailed=Chyba pÅ™i instalaci GnuPG ocurred. Zkontrolujte konzole protokol pro další podrobnosti. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Musíte vyplnit jméno a e-mailovou adresu addUidDlg.nameMinLengthError=Jméno musí mít alespoň 5 znaků addUidDlg.invalidEmailError=Musíte zadat platnou e-mailovou adresu addUidDlg.commentError=Závorky nejsou v poznámkách povoleny # network error types errorType.SecurityCertificate=Certifikát zabezpeÄení pÅ™edložený webové službÄ› není platný. errorType.SecurityProtocol=BezpeÄnostní protokol používaný webovou službou není znám. errorType.Network=DoÅ¡lo k chybÄ› sítÄ›. enigmail/lang/cs/help/000077500000000000000000000000001266701624400151315ustar00rootroot00000000000000enigmail/lang/cs/help/compose.html000066400000000000000000000115301266701624400174640ustar00rootroot00000000000000 NápovÄ›da pro Enigmail - psaní zpráv

Nápověda pro Enigmail

Použití Enigmailu při psaní zprávy

menu OpenPGP v okně Zpráva/Nová zpráva
Podepsat zprávu
Povolit / zakázat podepsat odesílanou zprávu. Pokud digitální podpis selže, je o tom uživatel informován.
Šifrovat zprávu

Povolit / zakázat Å¡ifrování zprávy pro vÅ¡echny příjemce pÅ™ed zasláním. Pokud Å¡ifrování selže, je uživatel o této zkuteÄnosti informován.

PÅ™i nastavené volbÄ› Zobraz výbÄ›r, když je tÅ™eba v menu PÅ™edvolby-> záložka VýbÄ›r klíÄe se pÅ™i odesílání poÅ¡ty zobrazí seznam klíÄů pro Å¡ifrování zprávy, pokud jsou v seznamu příjemců poÅ¡ty adresáti, jejichž veÅ™ejný klÃ­Ä nemáte.

PÅ™i nastavené volbÄ› Nikdy nezobrazovat výbÄ›r OpenPGP klíÄe v menu PÅ™edvolby -> záložka VýbÄ›r klíÄe se odeÅ¡le zpráva nezaÅ¡ifrovaná, pokud jsou v seznamu příjemců poÅ¡ty adresáti, jejichž veÅ™ejný klÃ­Ä nemáte.

Použít PGP/MIME pro tuto zprávu
Povolit / zakázat použití PGP/MIME pro tuto zprávu..

Pokud víte, že příjemce dokáže pÅ™eÄíst poÅ¡tu, která používá PGP/MIME formát, můžete tento formát použít.

Tato volba je povolena, pokud na záložce Předvolby -> PGP/MIME tab je nastaveno Povolit použití PGP/MIME nebo Vždy použít PGP/MIME.

Výchozí nastavení tvorby zpráv
  • Nastavení podepisování/Å¡ifrování...: menu Nástroje -> Nastavení úÄtu -> OpenPGP/Enigmail
  • Nastavení odesílání...:-> záložky PÅ™edvolby -> Odesílání
  • Nastavení výbÄ›ru klíÄe...:-> záložky PÅ™edvolby -> VýbÄ›r klíÄe
  • PGP/MIME nastavení...:-> záložky PÅ™edvolby -> PGP/MIME
Zpět šifrování

Pokud při zasílání pošty dojde k chybě, například když POP server nepřijme požadavek, Enigmail o tom nebude vědět, a zašifrovaná zpráva zůstane zobrazena v okně Psaní zprávy. Zvolením této položky menu dojde ke zrušení šifrování a podepsání, což se projeví zobrazením původního (nezašifrovaného) textu v okně psaní zprávy.

Tato volba může být použita takě jako nouzová oprava, pokud odpovídáte na zašifrovanou zprávu. Enigmail dešifruje citovanou zprávu automaticky, ale pokud z nějakého důvodu dešifrování neproběhne, může být tato volba použita k vynucenému dešifrování zprávy.

PÅ™ipojit veÅ™ejný klíÄ
Zobrazí se seznam veÅ™ejných klíÄů, které můžete pÅ™ipojit k vytvářené zprávÄ›. Pokud zvolíte jediný klíÄ, pÅ™ipojí se ke zprávÄ› soubor s názvem 0xkey_id.asc (kde key_id je Äíselný identifikátor zvoleného klíÄe ), který obsahuje ASCII-armoredy text zvolného klíÄe. Pokud vyberete více klíÄů, pÅ™ipojí se soubor s názvem pgpkeys.asc, který obsahuje ASCII-armored text se vÅ¡emi klíÄi.
Smazat uložené heslo
Dojde k odstranÄ›ní doÄasnÄ› uloženého hesla k soukromému klíÄi. To je užiteÄné zejména pokud máte více hesel.
Nápověda
Zobrazí nápovědu jako webovou stránku (tato stránka).

Další nápověda je dostupná na stránkách dokumentace Enigmailu (anglicky).

enigmail/lang/cs/help/editRcptRule.html000066400000000000000000000121611266701624400204260ustar00rootroot00000000000000 Nápověda pro Enigmail - úprava pravidel OpenPGP

Nápověda pro Enigmail

Používání editoru pravidel v Enigmailu: úprava pravidel OpenPGP

V editoru pravidel můžete pro každého příjemce nastavit výchozí chování Enigmailu tak, že povolíte Å¡ifrování, podpis, PGP/MIME a urÄíte klíÄ(e) OpenPGP, který se bude pro daného příjemce používat. Zde můžete urÄit pravidla pro jednotlivé příjemce a pro skupiny příjemců s podobnými charfakteristikami.

Nastavit OpenPGP pravidla pro
Pole obsahuje emailové adresy příjemců (bez jmen, t.j. pouze adresu ve tvaru jmeno@domena.cz). Můžete uvést nÄ›kolik emailových adres oddÄ›lených mezerami. Adresy mohou obsahovat pouze doménovou Äást, takže pravidlo odpovídá vÅ¡em adresátům dané domény, napÅ™.@domena.cz zahrnuje adresy jmeno@domena.cz, jine_jmeno@domena.cz, atd.
Použij pravidlo jestliže adresát ...
Upravuje hledání emailových adres, na které se budou v pravidlech používat. Pokud zapíšete více adres, nastavení se aplikuje na všechny. Následující příklady vycházejí z příkladu adresy jmeno@domena.cz.
  • Je pÅ™esnÄ›: s tímto nastavením bude pravidlo použito, pokud email adresáta je pÅ™esnÄ› jmeno@domena.cz (nezávisí na použití velkých a malých písmen v emailové adrese).
  • Obsahuje: s tímto nastavením bude pravidlo použito pro každou emailovou adresu, která obsahuje zadaný text, t.j. moje-jmeno@domena.cz nebo jmeno@domena.cz.com.
  • ZaÄíná s: s tímto nastavením bude pravidlo použito pro každou emailovou adresu, která zaÄíná zadaným textem t.j. jmeno@domena.cz, jmeno@domena.cz.com.
  • KonÄí s: s tímto nastavením bude pravidlo použito pro každou emailovou adresu, která konÄí zadaným textem t.j. moje-jmeno@domena.cz , jmeno@domena.cz.
PokraÄovat s dalším pravidlem k daným adresám
Tato akce umožní definovat pravidlo a nezadat ID klíÄe ve vstupním poli Použít následující klíÄe OpenPGP:. Odpovídající klÃ­Ä bude podle emailové adresy urÄen pÅ™i odesílání zprávy. Pro urÄenou(é) adresu(y) se také zpracují další pravidla.
Nekontrolovat dále pravidla k dané adrese
UkonÄí zpracování dalších pravidel pro zvolenou adresu, zaÄne se zpracovávat další adresa příjemce.
Použít následující OpenPGP klíÄe:
Pomocí tlaÄítka Vybrat klíÄ(e)... vyberte klíÄe, které budou použity k Å¡ifrování. StejnÄ› jako v pÅ™edchozím případÄ› se již nepoužijí pro odpovídající adresu další pravidla.
Výchozí pro podepisování
Povolit / zakázat podepsání zprávy. To, zda dojde k podepsání zprávy, závisí na nastavení podepisovámí v okně Psání zprávy a na vybrané hodnotě z těchto možností:
  • Nikdy: zakáže podepsání zprávy bez ohledu na to, jaká volba je v oknÄ› psaní zprávy. Tato volba potlaÄuje ostatní.
  • Ano, jestliže je to povoleno pÅ™i vytváření zprávy: podepisování zprávy je povoleno a závisí na další volbÄ›, která bude nastavena v oknÄ› psaní zprávy.
  • Vždy: zpráva bude podepsána bez ohledu na to, jaká je volba v oknÄ› psaní zprávy
Toto nastavení podpisu bude použito pro všechna odpovídající pravidla. Jestliže jedno z pravidel zakáže podepsání, zpráva nebude podepsána bez ohledu na to, zda v ostatních pravidlech je nastavena volba Vždy.
Šifrování
Povolit / zakázat šifrování zprávy. Nastavení šifrování a jeho význam jsou podobné jako nastavení podepisování.
PGP/MIME
Povolit / zakázat kódování zprávy pomocí PGP/MIME (RFC 3156). Pokud je PGP/MIME zakázáno, zpráva je kódována použitím "vkládaného PGP" ("inline PGP"). Nastavení a jeho význam jsou podobné jako nastavení podepisování.

Pravidla jsou zpracována v poÅ™adí podle uvedeného seznamu. Vždy, když pravidlo odpovídá příjemci a obsahuje ID klíÄe OpenPGP, příjemce se již kromÄ› použití urÄeného klíÄe v dalších pravidlech nezpracovává.


Další nápověda je dostupná na stránkách dokumentace Enigmailu (anglicky).

enigmail/lang/cs/help/messenger.html000066400000000000000000000102031266701624400200030ustar00rootroot00000000000000 NápovÄ›da pro Enigmail - Ätení zpráv

Nápověda pro Enigmail

Používání Enigmailu pÅ™i Ätení zpráv

TlaÄítko "DeÅ¡ifrovat" v hlavním oknÄ›
Toto tlaÄítko má nÄ›kolik funkcí: deÅ¡ifrování, ověřování nebo import veÅ™ejných klíÄů. NormálnÄ› probíhá deÅ¡ifrování/ověřování automaticky, ovÅ¡em tato funkce může být v pÅ™edvolbách zakázána. Pokud nastane chyba, zobrazí se krátká zpráva ve stavovém řádku Enigmailu. Pokud klepnete na tlaÄítko "DeÅ¡ifrovat", zobrazí se podrobnÄ›jší výpis chyb vÄetnÄ› GnuPG příkazů.
Ikony pera a klíÄe zobrazené v hlaviÄce zprávy
Ikony Pera a KlíÄe ikony pera a klíÄe v hlaviÄce zprávy indikují zda zpráva, kterou Ätete, je podepsána a/nebo Å¡ifrována a zda je podpis platný, tj., že zpráva nebyla od okamžiku podpisu zmÄ›nÄ›na. Ikona zlomného pera indikuje, že zpráva má neplatný podpis nebo byla zmÄ›nÄ›na. Pokud klepnete pravým tlaÄítkem na ikonu pera nebo klíÄe zobrazí se menu s následujícími možnostmi:
  • BezpeÄnostní informace: zobrazí výstup GnuPG pro tuto zprávu.
  • Kopírovat bezpeÄnostní informace OpenPGP: zkopíruje výstup z GnuPG do schránky; umožní například vložení do odpovÄ›di na zprávu.
  • Zobrazit Foto ID: zobrazí Photo ID osoby, která zprávu poslala, jestliže jej veÅ™ejný klÃ­Ä obsahuje. (Tato volba je dostupná pouze pokud je fotografie ve veÅ™ejném klíÄi uložena.)
  • BezpeÄnostní informace S/MIME: zobrazí bezpeÄnostní informace S/MIME.

Jestliže v souboru gpg.conf nemáte nastaveno automatické naÄítání klíÄů z keyserveru a Ätete elektronicky podepsáné nebo Å¡ifrováné zprávy, uvidíte panelu zprávy ikonku pera s otazníkem a v horní Äásti se zobrazí: Část zprávy byla podepsána; klepnÄ›te na ikonku pera nebo klíÄe pro více informací. Ve zprávÄ› se zobrazí znaÄky úseku textu OpenPGP a blok podpisu.

Může se to stát i v případÄ›, že máte nastaveno automatické naÄítání klíÄů z keyserveru, ale klÃ­Ä není na serveru k dispozici.

Klepnutím na ikonku pera a otazníku se Vám zobrazí hlášení že klíÄ, kterým byla zpráva podepsána, není dostupný. Klepnutím na tlaÄítko OK se dostanete k dalšímu oknu, kde si můžete ze seznamu keyserverů vybrat odkud veÅ™ejný klÃ­Ä odesílatele stáhnout.

Seznam keyserverů, které chcete používat, nastavíte v menu OpenPGP -> PÅ™edvolby... -> UrÄete Váš/VaÅ¡e keyservery, adresy napiÅ¡te do řádku Keyserver(y):. Více adres oddÄ›lte Äárkou. Jako výchozí bude použit první keyserver.

OtevÅ™ení Å¡ifrovaných příloh / import pÅ™iložených klíÄů OpenPGP
Přílohy pojmenované *.pgp, *,asc a *.gpg je OpenPGP schopno rozeznat a zpracovat. Kliknutím pravým tlaÄítkem myÅ¡i na přílohu dostanete dvÄ› specifické položky kontextového menu: DeÅ¡ifrovat a otevřít a DeÅ¡ifrovat a uložit jako .... Tyto možnosti využijete, když budete chtít, aby Enigmail přílohy pÅ™ed otevÅ™ením nebo uložením deÅ¡ifroval. Jestliže je příloha zprávy rozpoznána jako soubor obsahující s klíÄem OpenPGP, bude Vám nabídnuta možnost importovat klÃ­Ä do VaÅ¡eho úložiÅ¡tÄ›.

Další nápověda je dostupná na stránkách dokumentace Enigmailu (anglicky).

enigmail/lang/cs/help/rulesEditor.html000066400000000000000000000064271266701624400203310ustar00rootroot00000000000000 Nápověda pro Enigmail: editor pravidel

Nápověda pro Enigmail

Použití editoru pravidel v Enigmailu

V editoru pravidel můžete pro každého příjemce nastavit výchozí chování Enigmailu tak, že povolíte Å¡ifrování, podpis, PGP/MIME a urÄíte klíÄ(e) OpenPGP, který se bude pro daného příjemce používat. Každé pravidlo se skládá z 5 položek a je reprezentováno jedním řádkem:

Email
UrÄení emailové(ých) adresy (adres) z polí Komu:, Kopie: a Skrytá kopie:, pro kterou(é) se pravidlo použije. UrÄení probíhá podle podÅ™etÄ›zců (více podrobností najdete v dialogu pÅ™i vytváření pravidla).
KlíÄ(e) OpenPGP
Seznam ID klíÄů OpenPGP k použití pro zvoleného příjemce
Podpis
Povolit / zakázat podepsání zprávy. Použije se zadaná hodnota anebo bude přepsána hodnota nastavená v okně vytváření zprávy. Možnosti jsou:
  • Nikdy: zakáže podepsání zprávy bez ohledu na to, jaká volba je v oknÄ› psaní zprávy. Tato volba potlaÄuje ostatní.
  • Možný: ponechá podepisování zprávy na nastavení v oknÄ› psaní zprávy.
  • Vždy: zprávy bude podepsána, i kdyby to v oknÄ› psaní zprávy povoleno nebylo.

Nastavení pro podepisování se použije pro všechna odpovídající pravidla. Jestliže jedno pravidlo podepsání zakazuje, zpráva nebude podepsána bez ohledu na to, zda ostatní pravidla mají nastavenou volbu Vždy.

Šifrování
Povolit / zakázat šifrování zprávy. Nastavení šifrování a jeho význam jsou podobné jako nastavení podepisování.
PGP/MIME
Povolit / zakázat kódování zprávy pomocí PGP/MIME (RFC 3156). Pokud je PGP/MIME zakázáno, zpráva je kódována použitím "vkládaného PGP" ("inline PGP"). Nastavení a jeho význam jsou podobné jako nastavení podepisování.

Pravidla jsou zpracována v poÅ™adí podle uvedeného seznamu. Vždy, když pravidlo odpovídá příjemci a obsahuje ID klíÄe OpenPGP, příjemce se již kromÄ› použití urÄeného klíÄe v dalších pravidlech nezpracovává.

Poznámka: Editor pravidel jeÅ¡tÄ› není kompletní. Je možno napsat složitÄ›jší pravidla přímou úpravou souboru pravidel, avÅ¡ak tyto pravidla již pak nesmíte upravovat pomocí editoru pravidel. Další informace o přímé úpravÄ› souboru s pravidly si můžete pÅ™eÄíst na stránkách Enigmailu (anglicky).


Další nápověda je dostupná na stránkách dokumentace Enigmailu (anglicky).

enigmail/lang/cs/help/sendingPrefs.html000066400000000000000000000047771266701624400204650ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/current-languages.txt000066400000000000000000000001621266701624400177620ustar00rootroot00000000000000ar bg ca cs de el es-ES fi fr gd gl hr hu it ja ko lt nb-NO nl pl pt-BR pt-PT ru sk sl sq sv-SE tr vi zh-CN zh-TW enigmail/lang/de/000077500000000000000000000000001266701624400141645ustar00rootroot00000000000000enigmail/lang/de/am-enigprefs.properties000066400000000000000000000001231266701624400206530ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP-Sicherheit enigmail/lang/de/enigmail.dtd000066400000000000000000001455161266701624400164620ustar00rootroot00000000000000 ACHTUNG: Das Erzeugen eines Schlüssels kann mehrere Minuten dauern. Beenden Sie die Anwendung während dieser Zeit nicht. Da der Zufallsgenerator von Aktivität auf dem Rechner abhängt, wird empfohlen, z. B. im Webbrowser aktiv zu surfen, um das Erzeugen des Schlüssels zu beschleunigen. Sie werden informiert, sobald der Schlüssel fertiggestellt ist."> " ist ungültig."> ACHTUNG: Das Erzeugen eines Schlüssels kann mehrere Minuten dauern. Beenden Sie die Anwendung während dieser Zeit nicht. Sie werden informiert, sobald der Schlüssel fertiggestellt ist."> Dieser Assistent führt Sie durch die Einrichtung."> Hinweis: Enigmail wird Unterschriften immer für alle Konten bzw. Identitäten überprüfen, unabhängig davon, was hier ausgewählt wird."> öffentlichen Schlüssel können Andere Mails an Sie verschlüsseln (und von Ihnen unterschriebene Nachrichten prüfen). Sie dürfen ihn jedem geben."> geheimer, privater Schlüssel ist nur für Sie, um damit Mails an Sie zu entschlüsseln und um Mails, die Sie schicken, zu unterschreiben. Diesen Schlüssel halten Sie geheim, Sie geben ihn niemandem."> geheimer, privater Schlüssel ist nur für Sie, um damit Mails an Sie zu entschlüsseln und um Mails, die Sie schicken, zu unterschreiben. Diesen Schlüssel halten Sie geheim, Sie geben ihn niemandem. Um Ihren privaten Schlüssel zu schützen, fragen die folgenden zwei Dialoge Sie nach einer Passphrase."> Passphrase ist ein Passwort, mit dem GnuPG Ihren privaten Schlüssel schützt. Es soll Missbrauch Ihres privaten Schlüssels verhindern."> nicht empfehlenswert (weil nicht jedes Programm damit richtig umgeht)."> Zu diesem Zweck können Sie jetzt ein Widerrufszertifikat erzeugen, mit dem Sie im Fall der Fälle den Schlüssel widerrufen können. Dazu müssen Sie gleich Ihr Passwort eingeben."> Exportieren Sie die Einstellungen vom alten Rechner. Das geht mit dem Sicherungs-Assistenten aus den Enigmail-Einstellungen. Importieren Sie die Einstellungen auf den neuen Rechner. Das geht mit diesem Assistenten. "> Danke, dass Sie Enigmail verwenden."> Exportieren Sie die Einstellungen vom alten Rechner. Das geht mit diesem Assistenten. Importieren Sie die Einstellungen auf den neuen Rechner. Das geht mit dem Einrichtungs-Assistenten. "> enigmail/lang/de/enigmail.properties000066400000000000000000001257031266701624400200770ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail-Meldung enigConfirm=Enigmail-Bestätigung enigError=Enigmail-Fehler enigPrompt=Enigmail-Eingabe dlgYes=&Ja dlgNo=&Nein dlgKeepSetting=Antwort merken und in Zukunft nicht mehr fragen dlgNoPrompt=Diesen Dialog nicht mehr anzeigen. dlg.button.delete=&Löschen dlg.button.cancel=&Abbrechen dlg.button.close=&Schließen dlg.button.continue=&Fortsetzen dlg.button.skip=&Überspringen dlg.button.overwrite=&Überschreiben dlg.button.view=&Anzeigen dlg.button.retry=&Erneut versuchen dlg.button.ignore=&Ignorieren repeatPrefix=\n\nDiese Nachricht wird noch %S repeatSuffixSingular=mal wiederholt. repeatSuffixPlural=mal wiederholt. noRepeat=\n\nDiese Meldung wird bis zu einem Upgrade von Enigmail nicht wiederholt. pgpNotSupported=Sie scheinen Enigmail-Enigmail zusammen mit PGP 6.x zu verwenden. \n\nLeider weist PGP 6.x einige Probleme auf, die verhindern, dass Enigmail korrekt funktioniert. Darum unterstützt Enigmail PGP 6.x nicht mehr. Bitte verwenden Sie deshalb in Zukunft GnuPG (GPG). \n\nFalls Sie für den Wechsel auf GnuPG Unterstützung brauchen, besuchen Sie die Seite „Help“ auf der Enigmail-Homepage. initErr.howToFixIt=Um Enigmail verwenden zu können, ist GnuPG erforderlich. Wenn GnuPG noch nicht installiert ist, können Sie dies mit der Schaltfläche „Installations-Assistent“ erledigen. initErr.setupWizard.button=&Installations-Assistent passphraseCleared=Die Passphrase wurde gelöscht. cannotClearPassphrase=Sie benutzen ein individuelles Programm (beispielsweise gnome-keyring) für die Passwortverwaltung. Das Vergessen der Passphrase ist daher aus Enigmail heraus nicht möglich. noPhotoAvailable=Kein Foto verfügbar debugLog.title=Enigmail-Debug-Log error.photoPathNotReadable=Fotopfad „%S“ kann nicht geöffnet werden. # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Diese neue Version von Enigmail enthält signifikante Änderungen in der Anwendung der Voreinstellungen und Optionen. Wir haben versucht, die alten Einstellungen in diese neue Version zu übernehmen. Leider können wir nicht alle Fälle automatisch abdecken. Wir empfehlen deshalb, die neuen Optionen in den Enigmail Einstellungen zu überprüfen. enigmailCommon.checkPreferences=&Einstellungen überprüfen … preferences.defaultToPgpMime=Die Vorgabe für die Nachrichten-Codierung wurde von Inline-PGP auf PGP/MIME geändert. Diese Einstellung sollten Sie, soweit möglich, beibehalten.\n\nWenn Sie doch Inline-PGP nutzen wollen, können Sie das in den Konto-Einstellungen unter OpenPGP-Security einstellen. usingVersion=Sie verwenden Enigmail Version %S usingAgent=Das %1$S-Programm %2$S wird zur Ver- und Entschlüsselung benutzt agentError=FEHLER: Zugriff auf Enigmime-Dienste fehlgeschlagen! accessError=Fehler beim Zugriff auf Enigmail-Dienste onlyGPG=Erzeugen eines Schlüssels funktioniert nur mit GnuPG (nicht mit PGP)! keygenComplete=Erzeugen des Schlüssels abgeschlossen. Benutzer-ID <%S> wird zum Unterschreiben verwendet. revokeCertRecommended=Es wird dringend empfohlen, dass Sie nun ein Widerrufszertifikat für Ihren Schlüssel erzeugen. Dieses Zertifikat benötigen Sie, um Ihren Schlüssel bei Bedarf für ungültig zu erklären (z.B. wenn der Schlüssel missbraucht, verloren oder gestohlen wird).\n\nMöchten Sie nun das zugehörige Widerrufszertifikat erzeugen? keyMan.button.generateCert=&Zertifikat erzeugen genCompleteNoSign=Erzeugen des Schlüssels abgeschlossen! genGoing=Erzeugen eines Schlüssels läuft! passNoMatch=Passphrase wurde nicht korrekt wiederholt; bitte geben Sie diese erneut ein passCheckBox=Setzen Sie bitte die entsprechende Option, wenn Sie keine Passphrase für den Schlüssel verwenden. passUserName=Geben Sie bitte den Benutzernamen für diese Identität an. keygen.missingUserName=Für das angegebene Konto ist kein Name angegeben. Bitte geben Sie in den Konto-Einstellungen im Feld „Ihr Name“ einen Wert ein. keygen.passCharProblem=Sie verwenden in Ihrer Passphrase Sonderzeichen. Dies kann zu Schwierigkeiten mit anderen Anwendungen führen, die den Schlüsselring verwenden wollen. Wir empfehlen, in der Passphrase nur die folgenden Zeichen zu verwenden: a-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Aus technischen Gründen darf die Passphrase nicht mit einem Leerzeichen beginnen oder aufhören. changePassFailed=Ändern der Passphrase fehlgeschlagen keyConfirm=Öffentlichen und privaten Schlüssel für „%S“ erzeugen? keyMan.button.generateKey=&Schlüssel erzeugen keyAbort=Erzeugen des Schlüssels abbrechen? keyMan.button.generateKeyAbort=Schlüsselerzeugung &abbrechen keyMan.button.generateKeyContinue=Schlüsselerzeugung &fortsetzen expiryTooLong=Sie können keinen Schlüssel erzeugen, der erst in mehr als 100 Jahren abläuft. expiryTooLongShorter=Sie können keinen Schlüssel erzeugen, der erst in mehr als 90 Jahren abläuft. expiryTooShort=Ihr Schlüssel muss mindestens einen Tag lang gültig sein. dsaSizeLimit=DSA-Schlüssel zum Unterschreiben sind auf 3072 Bit limitiert. Die Schlüssellänge wird entsprechend reduziert. keyGenFailed=Das Erzeugen des Schlüssels ist fehlgeschlagen. Weitere Details finden Sie in der Enigmail-Konsole (Menü Enigmail > Fehlersuche > Konsole anzeigen). setKeyExpirationDateFailed=Das Ablaufdatum konnte nicht geändert werden # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail-Sicherheitsinfo:\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Anhänge an diese Nachricht wurden nicht unterschrieben oder verschlüsselt* possiblyPgpMime=Eventuell PGP/MIME verschlüsselte oder unterschriebene Nachricht; klicken Sie zum Überprüfen auf die Schaltfläche „Entschlüsseln“ noDecrypted=Keine entschlüsselte Nachricht zum Speichern gefunden! \nVerwenden Sie "Speichern unter" im Menü „Datei“ noMessage=Keine Nachricht zum Speichern vorhanden! useButton=Klicken Sie auf Entschlüsseln, um die Nachricht zu entschlüsseln saveHeader=Enigmail: Entschlüsselte Nachricht wird gespeichert saveAttachmentHeader=Enigmail: Entschlüsselte Anhänge speichern noTempDir=Konnte kein temporäres Verzeichnis zum Schreiben finden. Bitte setzen Sie die Umgebungsvariable TEMP. attachmentPgpKey=Der Anhang „%S“ scheint einen OpenPGP-Schlüssel zu enthalten.\n\nKlicken Sie auf „Importieren“, um die Schlüssel zu importieren, oder auf „Anzeigen“, um die Datei in einem Browser-Fenster zu öffnen. beginPgpPart=********* *ANFANG des verschlüsselten oder unterschriebenen Bereichs* ********* endPgpPart=********* *ENDE des verschlüsselten oder unterschriebenen Bereichs* ********* notePartEncrypted=Enigmail: *Teile der Nachricht sind NICHT unterschrieben oder verschlüsselt* noteCutMessage=Enigmail: *MehrereTextblöcke gefunden – Entschlüsselung/Überprüfung abgebrochen* decryptOkNoSig=Achtung:\n\nDie Entschlüsselung war erfolgreich, aber die Unterschrift konnte nicht überprüft werden. msgOvl.button.contAnyway=&Trotzdem fortfahren signature.verifiedOK=Die Unterschrift für den Anhang „%S“ wurde erfolgreich überprüft signature.verifyFailed=Die Unterschrift für den Anhang „%S“ konnte nicht überprüft werden attachment.noMatchToSignature=Der Anhang „%S“ konnte keiner Signaturdatei zugeordnet werden attachment.noMatchFromSignature=Die Signaturdatei „%S“ konnte keinem Anhang zugeordnet werden fixBrokenExchangeMsg.failed=Reparatur der Nachricht ist fehlgeschlagen. keysToExport=Benutzer-ID (E-Mail-Adressen) von zu exportierenden Schlüsseln keysToUse=Zu verwendende OpenPGP-Schlüssel für %S pubKey=Öffentlicher Schlüssel für %S\n windowLocked=Das Editorfenster ist blockiert; Das Senden wurde abgebrochen sendUnencrypted=Initialisierung von Enigmail fehlgeschlagen. \n\nNachricht unverschlüsselt senden? composeSpecifyEmail=Geben Sie bitte eine Haupt-E-Mail-Adresse an, die verwendet wird, um den Unterschrift-Schlüssel für ausgehende Nachrichten auszuwählen. Wenn Sie keine Adresse angeben, wird die Emailadresse im FROM-Feld der Nachricht zur Auswahl des Schlüssels verwendet. sendingHiddenRcpt=Diese Nachricht hat Empfänger im BCC-Feld (blind copy, versteckt). Wenn diese Nachricht verschlüsselt wird, ist es zwar möglich die BCC-Empfänger zu verstecken, aber Benutzer mancher PGP-Anwendungen (z.B. PGP Corp.) können die Nachricht dann nicht mehr entschlüsseln. sendWithHiddenBcc=BCC-Empfänger verstecken sendWithShownBcc=Normal verschlüsseln sendingNews=Das Senden der verschlüsselten Nachricht wurde abgebrochen.\n\nDiese Nachricht kann nicht verschlüsselt werden, da unter den Empfängern Newsgruppen-Adressen sind. Senden Sie bitte diese Nachricht ohne Verschlüsselung. sendToNewsWarning=Warnung: Sie möchten eine verschlüsselte Nachricht an eine Newsgruppe senden.\n\nDies ist nicht zu empfehlen, da es nur Sinn machen würde, wenn alle Leser der Newsgruppe die Nachricht entschlüsseln könnten. Dazu müsste die Nachricht beispielsweise für alle Leser der Newsgruppe verschlüsselt werden. Bitte senden Sie die Nachricht nur, wenn Sie genau wissen, was Sie machen.\n\nFortfahren? hasHTML=Warnung vor HTML-Nachricht: \nDiese Nachricht kann HTML enthalten. Das kann das korrekte Unterschreiben bzw. Verschlüsseln dieser Nachricht verhindern. Um dies zukünftig beim Senden unterschriebener Nachrichten zu vermeiden, drücken Sie bitte die Umschalt-Taste gleichzeitig mit der „Verfassen“- bzw. „Antworten“-Schaltfläche. Wenn Sie Nachrichten standardmäßig unterschreiben, entfernen Sie in den Konten-Einstellungen den Haken bei „Nachrichten im HTML-Format verfassen“, um das Senden von HTML-Nachrichten dauerhaft zu verhindern. strippingHTML=Die Nachricht enthält HTML-Formatierungen, die verloren gehen, wenn die Nachricht für die Unterschrift bzw. Verschlüsselung in ein Nur-Text-Format umgewandelt wird. Möchten Sie fortfahren? msgCompose.button.sendAnyway=Nachricht &trotzdem senden attachWarning=Anhänge zu dieser Nachicht sind nicht lokal vorhanden, sie können daher nicht verschlüsselt werden. Um die Anhänge zu verschlüsseln, speichern Sie diese zuerst lokal und fügen sie anschließend bei. Möchten Sie trotzdem fortfahren? quotedPrintableWarn=Sie haben „quoted-printable“ als Kodierung für Nachrichten eingestellt. Dies kann zu inkorrekter Entschlüsselung und/oder Überprüfung Ihrer Nachricht führen. \nMöchten Sie die Einstellung „quoted printable“ deaktivieren? minimalLineWrapping=Sie haben den Textumbruch auf %S Zeichen eingestellt. Für korrekte Verschlüsselung und Unterschrift muss dieser Wert auf mindestens 68 hochgesetzt werden. \nMöchten Sie den Wert jetzt auf 68 hochsetzen? warning=Warnung signIconClicked=Sie haben Einstellungen für das Unterschreiben verändert. Deshalb hängt für diese Nachricht das (De-)Aktivieren des Unterschreibens nicht mehr mit dem (De-)Aktivieren für Verschlüsselung zusammen. pgpMime_sMime.dlg.text=Sie haben PGP/MIME und S/MIME gleichzeitig aktiviert. Leider ist es nicht möglich, beide Protokolle gemeinsam zu verwenden. Bitte entscheiden Sie sich zwischen S/MIME oder PGP/MIME. pgpMime_sMime.dlg.pgpMime.button=&PGP/MIME verwenden pgpMime_sMime.dlg.sMime.button=&S/MIME verwenden errorKeyUnusable=Die E-Mail-Adresse oder Schlüssel-ID „%S“ kann keinem gültigen, nicht abgelaufenen OpenPGP-Schlüssel zugeordnet werden.\nBitte stellen Sie sicher, dass Sie einen gültigen OpenPGP-Schlüssel besitzen, und dass in den Konten-Einstellungen dieser Schlüssel ausgewählt ist. errorOwnKeyUnusable=Die Schlüssel-ID „%S“ für die aktuelle Identität entspricht keinem gültigen OpenPGP-Schlüssel.\n\nBitte stellen Sie sicher, dass Sie einen gültigen, nicht abgelaufenen OpenPGP-Schlüssel haben und dass die Einstellungen des E-Mail-Kontos auf diesen Schlüssel verweisen.\nWenn Ihr Schlüssel nicht abgelaufen ist, prüfen Sie bitte, ob das Vertrauen des Schlüssels auf „vertraut“ oder „absolut“ eingestellt ist. msgCompose.cannotSaveDraft=Fehler beim Speichern des Entwurfs msgCompose.internalEncryptionError=Interner Fehler: Versprochene Verschlüsselung ist deaktiviert. msgCompose.internalError=Ein interner Fehler ist aufgetreten. msgCompose.toolbarTxt.signAndEncrypt=Nachricht wird unterschrieben und verschlüsselt. msgCompose.toolbarTxt.signOnly=Nachricht wird unterschrieben. msgCompose.toolbarTxt.encryptOnly=Nachricht wird verschlüsselt. msgCompose.toolbarTxt.noEncryption=Nachricht wird weder unterschrieben noch verschlüsselt. msgCompose.toolbarTxt.disabled=Enigmail ist für die ausgewählte Identität deaktiviert. msgCompose.toolbarTxt.smime=S/MIME ist aktiv – möglicherweise schließt es sich mit Enigmail aus. msgCompose.toolbarTxt.smimeOff=- S/MIME wird daher nicht benutzt msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME ist aktiviert – Enigmail wird daher nicht benutzt msgCompose.toolbarTxt.smimeNoDraftEncryption=- Entwürfe werden nicht verschlüsselt msgCompose.toolbarTxt.smimeConflict=Enigmail wird nicht benutzt, da S/MIME gerade aktiviert ist. Bitte deaktivieren Sie S/MIME für das Signieren und/oder Verschlüsseln und aktivieren Sie anschließend die Enigmail-Verschlüsselung msgCompose.encryptedSubjectStub=Verschlüsselte Nachricht msgCompose.detailsButton.label=Details… msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Das Senden wurde abgebrochen.\n\n # details: keyNotTrusted=Schlüssel '%S' wird nicht genug vertraut. keyNotFound=Schlüssel '%S' wurde nicht gefunden. keyRevoked=Schlüssel '%S' wurde widerrufen. keyExpired=Schlüssel '%S' ist abgelaufen. statPGPMIME=PGP/MIME statSigned=UNTERSCHRIEBEN statEncrypted=VERSCHLÜSSELT statPlain=UNSIGNIERT und UNVERSCHLÜSSELT offlineSave=Nachricht %1$S an folgende Empfänger im Ordner „Postausgang“ speichern: \n\n%2$S\n onlineSend=Nachricht %S an folgende Empfänger senden: \n\n%S\n encryptKeysNote=Hinweis: Die Nachricht wurde mit folgenden Benutzer-IDs / Schlüsseln verschlüsselt: %S hiddenKey= signFailed=Fehler in Enigmail; Verschlüsselung bzw. Unterschreiben fehlgeschlagen; Nachricht unverschlüsselt senden? msgCompose.button.sendUnencrypted=Nachricht &unverschlüsselt senden recipientsSelectionHdr=Empfänger für Verschlüsselung wählen configureNow=Sie haben Enigmail-Sicherheit für die ausgewählte Identität noch nicht konfiguriert. Möchten Sie dies jetzt machen? # encryption/signing status and associated reasons: encryptMessageAuto=Nachricht verschlüsseln (automatisch) encryptMessageNorm=Nachricht verschlüsseln signMessageAuto=Nachricht unterschreiben (automatisch) signMessageNorm=Nachricht unterschreiben encryptOff=Verschlüsselung: AUS encryptOnWithReason=Verschlüsselung: EIN (%S) encryptOffWithReason=Verschlüsselung: AUS (%S) encryptOn=Verschlüsselung: EIN signOn=Unterschreiben: EIN signOff=Unterschreiben: AUS signOnWithReason=Unterschreiben: EIN (%S) signOffWithReason=Unterschreiben: AUS (%S) reasonEnabledByDefault=Voreinstellung ist EIN reasonManuallyForced=von Hand eingeschaltet reasonByRecipientRules=aufgrund von Empfänger-Regeln reasonByAutoEncryption=aufgrund von automatischer Verschlüsselung reasonByConflict=wegen Konflikt in Empfänger-Regeln reasonByEncryptionMode=wegen Verschlüsselungs-Modus reasonSmimeConflict=da S/MIME stattdessen aktiviert ist # should not be used anymore: encryptYes=Nachricht wird verschlüsselt encryptNo=Nachricht wird nicht verschlüsselt # should not be used anymore: signYes=Nachricht wird unterschrieben signNo=Nachricht wird nicht unterschrieben # PGP/MIME status: pgpmimeNormal=Protokoll: PGP/MIME inlinePGPNormal=Protokoll: Inline-PGP pgpmimeAuto=Protokoll: PGP/MIME (automatisch) inlinePGPAuto=Protokoll: Inline-PGP (automatisch) # should not be used anymore pgpmimeYes=PGP/MIME wird verwendet pgpmimeNo=Inline-PGP wird verwendet # Attach own key status (tooltip strings): attachOwnKeyNo=Ihr eigener Schlüssel wird nicht angehängt attachOwnKeyYes=Ihr eigener Schlüssel wird angehängt attachOwnKeyDisabled=Sie können Ihren eigenen Schlüssel nicht anhängen. Um dieses Feature zu aktivieren, müssen Sie einen bestimmten Schlüssel in den Konto-Einstellungen im Abschnitt OpenPGP auswählen. rulesConflict=Konflikt in Empfängerregeln entdeckt\n%S\n\nNachrichten trotzdem mit diesen Einstellungen senden? msgCompose.button.configure=&Konfigurieren msgCompose.button.send=Nachricht &senden msgCompose.button.save=Nachricht &speichern # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Öffentlicher Schlüssel %S zur Überprüfung der Unterschrift benötigt keyUsed=Unterschrift wurde mit Schlüssel %S überprüft clickDecrypt=; klicken Sie bitte auf die Entschlüsselungs-Schaltfläche clickDecryptRetry=; klicken Sie bitte auf die Entschlüsselungs-Schaltfläche für einen erneuten Versuch clickDetailsButton=; Für weitere Informationen klicken Sie auf die Schaltfläche „Details“. clickImportButton=; Drücken Sie die Schaltfläche „Schlüssel importieren“, um den Schlüssel herunterzuladen. keyTypeUnsupported=; Der Schlüsseltyp wird von Ihrer Version von GnuPG nicht unterstützt. msgPart=Teil der Nachricht %S msgSigned=unterschrieben msgSignedUnkownKey=unterschrieben mit unbekanntem Schlüssel msgEncrypted=verschlüsselt msgSignedAndEnc=unterschrieben und verschlüsselt unverifiedSig=Unterschrift NICHT überprüft incompleteDecrypt=Entschlüsselung unvollständig needKey=Fehler – geheimer Schlüssel wird zur Entschlüsselung benötigt failedDecrypt=Fehler – Entschlüsselung fehlgeschlagen badPhrase=Fehler – falsche Passphrase failedDecryptVerify=Fehler – Entschlüsselung/Überprüfung fehlgeschlagen viewInfo=; Ansicht > Nachrichtensicherheitsinformation für Details decryptedMsg=Entschlüsselte Nachricht decryptedMsgWithFormatError=Nachricht entschlüsselt (wiederhergestelltes ungültiges PGP Email Format - vermutlich durch alte Exchange Server Version entstanden. Das Resultat könnte nicht ideal zu lesen sein) usedAlgorithms=Verwendete Algorithmen: %S und %S # strings in pref-enigmail.js oldGpgVersion14=Fehler beim Initialisieren von Enigmail.\n\nSie benutzen GnuPG Version %S, die nicht mehr unterstützt wird. Enigmail braucht GnuPG 2.0.7 oder neuer. Bitte aktualisieren Sie Ihre GnuPG-Installation, sonst funktioniert Enigmail nicht. locateGpg=GnuPG-Anwendung finden invalidGpgPath=GnuPG kann im angegebenen Pfad nicht gefunden werden. Enigmail wird deshalb deaktiviert, bis Sie den Pfad zu GnuPG korrigieren oder die Anwendung neu starten. warningsAreReset=Alle Warnungen wurden zurückgesetzt. prefs.gpgFound=GnuPG wurde gefunden in %S prefs.gpgNotFound=GnuPG wurde nicht gefunden prefs.warnAskNever=Warnung: Das Aktivieren dieser Option führt dazu, dass Nachrichten UNVERSCHLÜSSELT gesendet werden, sobald bei Nachrichten an mehrere Empfänger auch nur ein einziger Schlüssel für die Liste der Empfänger fehlt. Enigmail wird Sie in diesen Situationen NICHT nochmals informieren! prefs.warnIdleTimeForUnknownAgent=Ihr System verwendet ein spezialisiertes Tool für die Passphrasen-Verwaltung wie z.B. gnome-keyring oder seahorse-agent. Leider kann Enigmail die Ablaufzeit für diese Tools nicht kontrollieren. Daher werden Änderungen an der Ablaufzeit in GnuPG ignoriert. prefEnigmail.oneKeyserverOnly=Fehler – Es kann nur ein Schlüsselserver für das automatische Herunterladen fehlender OpenPGP-Schlüssel angegeben werden. enterAdminPin=Bitte geben Sie die ADMIN-PIN Ihrer SmartCard ein enterCardPin=Bitte geben Sie Ihre SmartCard-PIN ein notInit=Fehler – Enigmail-Dienste noch nicht eingerichtet badCommand=Fehler – Verschlüsselung fehlgeschlagen cmdLine=Kommandozeile und Ausgabe: notRequired=Fehler – keine Verschlüsselung notwendig notComplete=Fehler – Erzeugen des Schlüssels noch nicht abgeschlossen invalidEmail=Fehler – ungültige E-Mail-Adresse(n) noPassphrase=Fehler – keine Passphrase angegeben noPGPblock=Fehler – keinen gültigen OpenPGP-Block gefunden unverifiedReply=Der eingerückte Teil der Nachricht (Antwort) wurde wahrscheinlich verändert keyInMessageBody=Schlüssel im Text der Nachricht gefunden. Klicken Sie auf „Schlüssel importieren“, um den Schlüssel zu importieren. sigMismatch=Fehler – Unterschrift nicht korrekt cantImport=Fehler beim Importieren eines öffentlichen Schlüssels doImportOne=%1$S (%2$S) importieren? doImportMultiple=Die folgenden Schlüssel importieren?\n\n%S previewFailed=Öffentlicher Schlüssel kann nicht gelesen werden. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Die SmartCard %1$S im Lesegerät kann zum Verarbeiten der Nachricht nicht verwendet werden.\nBitte legen Sie Ihre SmartCard %2$S ein und wiederholen den Vorgang. sc.insertCard=Der Vorgang erfordert Ihre SmartCard %S.\nBitte legen Sie die erforderliche SmartCard ein und wiederholen den Vorgang. sc.removeCard=Der Vorgang erfordert, dass keine SmartCard im Lesegerät ist.\nBitte entfernen Sie die SmartCard und wiederholen den Vorgang. sc.noCardAvailable=Es wurde keine SmartCard im Lesegerät gefunden.\nBitte legen Sie die SmartCard ein und wiederholen den Vorgang. sc.noReaderAvailable=Ihr SmartCard-Lesegerät wurde nicht gefunden.\nBitte installieren Sie das Lesegerät, legen die Karte ein und wiederholen den Vorgang. keyError.keySpecNotFound=Die E-Mail-Adresse „%S“ passt zu keinem der Schlüssel in Ihrem Schlüsselbund. keyError.keyIdNotFound=Die konfigurierte Schlüssel-ID „%S“ wurde nicht in Ihrem Schlüsselbund gefunden. keyError.resolutionAction=Bitte wählen Sie in den Konto-Einstellungen im Abschnitt OpenPGP einen gültigen Schlüssel aus. missingPassphrase=Fehlende Passphrase errorHandling.gpgAgentInvalid=Auf Ihrem System läuft eine Version von gpg-agent, die nicht für die installierte GnuPG-Version geeignet ist. errorHandling.gpgAgentError=In der Kommunikation zwischen GnuPG und gpg-agent (einem Teil von GnuPG) ist ein Fehler aufgetreten. errorHandling.dirmngrError=In der Kommunikation zwischen GnuPG und dirmngr (einem Teil von GnuPG) ist ein Fehler aufgetreten. errorHandling.pinentryError=GnuPG kann Ihre Passphrase nicht mit Hilfe des Programms pinentry abfragen. errorHandling.readFaq=Dies ist ein Problem mit der Systeminstallation oder ein Konfigurationsfehler und führt dazu, dass Enigmail nicht funktioniert. Das Problem kann nicht automatisch behoben werden.\n\nBitte sehen Sie auf der Support-Webseite https://enigmail.net/faq (auf Englisch) nach, welche Möglichkeiten Sie haben. gpgNotFound=Die GnuPG-Anwendung „%S“ konnte nicht gefunden werden.\nStellen Sie sicher, dass der Pfad zur GnuPG-Anwendung in den Enigmail-Einstellungen korrekt angegeben ist. gpgNotInPath=Die GnuPG-Anwendung konnte im Systempfad nicht gefunden werden.\nStellen Sie sicher, dass der Pfad zur GnuPG-Anwendung in den Enigmail-Einstellungen korrekt angegeben ist. enigmailNotAvailable=Enigmail-Kerndienst nicht verfügbar gpgAgentNotStarted=Die für Ihre GnuPG-Version %S notwendige GPG-Agent-Anwendung konnte nicht gestartet werden. prefUntrusted=NICHT VERTRAUENSWÜRDIGE prefRevoked=WIDERRUFENER SCHLÜSSEL prefExpiredKey=ABGELAUFENER SCHLÜSSEL prefExpired=ABGELAUFEN prefGood=Korrekte Unterschrift von %S prefBad=FALSCHE Unterschrift von %S failCancel=Fehler - Schlüssel-Empfang durch Benutzer abgebrochen failNoServer=Fehler – Es wurde kein Schlüssel-Server angegeben failNoID=Fehler – Es wurde keine Schlüssel-ID angegeben failKeyExtract=Fehler – Schlüssel-Extraktion fehlgeschlagen notFirstBlock=Fehler - Der erste OpenPGP-Block ist kein öffentlicher Schlüssel-Block importKeyConfirm=In der Nachricht enthaltene(n) öffentliche(n) Schlüssel importieren? failKeyImport=Fehler – Schlüssel konnte nicht importiert werden fileWriteFailed=Fehler beim Schreiben in Datei %S. importKey=Importiere folgende öffentliche Schlüssel von einem Schlüssel-Server: %S uploadKey=Sende folgende öffentliche Schlüssel an einen Schlüssel-Server: %S keyId=Schlüssel-ID keyAndSigDate=Schlüssel-ID: 0x%S / Unterschrieben am: %S keyFpr=Schlüssel-Fingerabdruck: %S noEmailProvided=Sie haben keine E-Mail-Adresse angegeben! keyAlreadySigned=Der Schlüssel wurde bereits unterschrieben; dies kann nicht mehrfach geschehen gnupg.invalidKey.desc=Der Schlüssel %S wurde nicht gefunden oder ist ungültig. Der (Unter-)Schlüssel könnte abgelaufen sein. selKeyExpired=abgelaufen am %S createdHeader=Erzeugt atLeastOneKey=Kein Schlüssel ausgewählt! Sie müssen mindestens einen Schlüssel auswählen. fewerKeysThanRecipients=Sie haben weniger Schlüssel als Empfänger ausgewählt. Sind Sie sicher, dass alle notwendigen Schlüssel ausgewählt wurden? userSel.button.goBack=Weitere Schlüssel auswählen userSel.secretKeySel.title=Wählen Sie einen geheimen OpenPGP-Schlüssel, um Ihre Nachrichten zu unterschreiben userSel.problemNoKey=Kein gültiger Schlüssel userSel.problemMultipleKeys=Mehrere Schlüssel # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Später absenden # Strings used in enigmailAttachmentDialog.js pgpMimeNote=HINWEIS: PGP/MIME wird nur von einer beschränkten Zahl von E-Mail-Anwendungen unterstützt! Unter Windows sind nur Mozilla Thunderbird, Mozilla Suite, Seamonkey, Sylpheed, Pegasus und Mulberry dafür bekannt, diesen Standard zu unterstützen; auf Linux/UNIX und Mac OS X wird PGP/MIME von den meisten populären E-Mail-Anwendungen unterstützt. \n\nWenn Sie nicht sicher sind, was zu tun ist, wählen Sie die Option %S. first=erste second=zweite # Strings used in am-enigprefs.js encryptKeyHeader=OpenPGP-Schlüssel für Verschlüsselung wählen identityName=Identität: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Sie haben die Verschlüsselung aktiviert, aber keinen Schlüssel gewählt. Um Nachrichten an %S verschlüsselt zu senden, müssen Sie einen oder mehrere gültige Schlüssel auswählen. Möchten Sie die Verschlüsselung für %S deaktivieren? noKeyToUse=(keiner – nicht verschlüsseln) noEmptyRule=Regeln dürfen nicht leer sein. Bitte geben Sie eine E-Mail-Adresse an. invalidAddress=Die eingegebenen E-Mail-Adressen sind nicht gültig. Sie sollten nicht die Namen der Empfänger eingeben, sondern nur die Adressen. \n\nBeispiel: \nUngültig: Max Mustermann \nGültig: max.mustermann@domain.de noCurlyBrackets=Die geschweiften {} Klammern haben eine spezielle Bedeutung und sollten nicht in E-Mail-Adressen genutzt werden. Wenn Sie das Verhalten der Empfängerregel ändern möchten, dann wählen Sie die Option „Anwenden, wenn Empfänger … eine(r) der obigen Adressen“. # Strings used in enigmailRulesEditor.js never=Nie always=Immer possible=Wenn ausgewählt deleteRule=Ausgewählte Regel wirklich löschen? nextRcpt=(Nächster Empfänger) negateRule=Nicht addKeyToRule=Den Schlüssel %S (%S) zur Empfängerregel hinzufügen # Strings used in enigmailSearchKey.js needOnline=Im Offline-Modus ist die gewählte Funktion nicht verfügbar. Bitte gehen Sie online und versuchen es erneut. protocolNotSupported=Das ausgewählte Protokoll „%S://“ wird nicht unterstützt, um OpenPGP-Schlüssel herunterzuladen. gpgkeysDisabled=Es könnte helfen folgende Funktion zu aktivieren: „extensions.enigmail.useGpgKeysTool“ noKeyserverConn=Verbindung zum Schlüssel-Server %S konnte nicht hergestellt werden. keyDownloadFailed=Schlüssel konnte nicht vom Server heruntergeladen werden. Status-Meldung:\n%S internalError=Ein interner Fehler ist aufgetreten. Schlüssel konnten nicht heruntergeladen oder importiert werden. noKeyFound=Leider konnte kein passender Schlüssel zu den angegebenen Suchkriterien gefunden werden.\nBeachten Sie, dass Schlüssel-IDs mit „0x“ beginnen müssen (z.B. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Schlüssel konnte nicht gesucht oder heruntergeladen werden: gpgkeys_%S konnte nicht ausgeführt werden. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Festlegen des Besitzervertrauens fehlgeschlagen # Strings in enigmailSignKeyDlg.js signKeyFailed=Unterschreiben des Schlüssels fehlgeschlagen alreadySigned.label=Hinweis: Der Schlüssel %S wurde bereits mit diesem geheimen Schlüssel unterschrieben! alreadySignedexportable.label=Hinweis: Der Schlüssel %S ist bereits mit dem angegebenen privaten Schlüssel als exportierbar unterschrieben. Eine lokale Unterschrift ist daher nicht sinnvoll. partlySigned.label=Hinweis: einige User IDs des Schlüssels %S sind bereits mit dem ausgewählten Schlüssel unterschrieben. noTrustedOwnKeys=Kein geeigneter Schlüssel zum Verschlüsseln gefunden! Sie brauchen mindestens einen vollständig vertrauten privaten Schlüssel in Ihrem Schlüsselbund. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Schlüssel werden geladen, bitte warten… keyValid.unknown=unbekannt keyValid.invalid=ungültig keyValid.disabled=deaktiviert keyValid.revoked=widerrufen keyValid.expired=abgelaufen keyValid.noSubkey=Kein gültiger Unterschlüssel keyTrust.untrusted=nicht vertrauenswürdig keyTrust.marginal=marginal keyTrust.full=vertraut keyTrust.ultimate=absolut keyTrust.group=(Gruppe) keyType.public=öffentlich keyType.publicAndSec=öffentlich + privat keyMan.enableKey=Aktivieren keyMan.disableKey=Deaktivieren userAtt.photo=Benutzerattribut (JPEG-Bild) asciiArmorFile=ASCII-Armored-Dateien (*.asc) importKeyFile=OpenPGP-Schlüsseldatei importieren gnupgFile=GnuPG-Dateien saveRevokeCertAs=Widerrufszertifikat erzeugen & speichern revokeCertOK=Das Widerrufszertifikat wurde erfolgreich erzeugt. Sie können es verwenden, um Ihren öffentlichen Schlüssel für ungültig zu erklären (z. B.: im Fall, dass Sie Ihren privaten Schlüssel verloren haben).\n\nBitte bewahren Sie das Widerrufszertifikat nur an einem sicheren Ort (wie Diskette oder CD) auf. Wenn andere Personen Zugriff darauf erhalten, könnten diese Ihren Schlüssel unbrauchbar machen. revokeCertFailed=Das Widerrufszertifikat konnte nicht erzeugt werden. addUidOK=Benutzer-ID erfolgreich hinzugefügt addUidFailed=Hinzufügen der Benutzer-ID fehlgeschlagen noKeySelected=Sie müssen mindestens einen Schlüssel auswählen, um diese Funktion auszuführen. exportToFile=Öffentlichen Schlüssel in Datei exportieren exportKeypairToFile=Geheime und öffentliche Schlüssel in eine Datei exportieren exportSecretKey=Möchten Sie auch private (geheime) Schlüssel in die Datei speichern? saveKeysOK=Die Schlüssel wurden erfolgreich gespeichert. saveKeysFailed=Speichern der Schlüssel fehlgeschlagen importKeysFailed=Speichern der Schlüssel fehlgeschlagen enableKeyFailed=Aktivieren / Deaktivieren der Schlüssel fehlgeschlagen specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Exportierte_public_keys defaultPubSecKeyFilename=Exportierte_public_und_private_keys noSecretKeys=Keinen privaten Schlüssel gefunden.\n\nMöchten Sie jetzt Ihren eigenen Schlüssel erzeugen? sendKeysOk=Schlüssel erfolgreich gesendet sendKeysFailed=Senden der Schlüssel fehlgeschlagen receiveKeysOk=Schlüssel erfolgreich aktualisiert receiveKeysFailed=Herunterladen der Schlüssel ist fehlgeschlagen importFromClip=Möchten Sie Schlüssel aus der Zwischenablage importieren? importFromUrl=Öffentlichen Schlüssel von dieser URL herunterladen: copyToClipbrdFailed=Exportieren der Schlüssel in die Zwischenablage fehlgeschlagen copyToClipbrdOK=Schlüssel erfolgreich in Zwischenablage exportiert deleteSecretKey=WARNUNG: Sie sind dabei einen privaten Schlüssel zu löschen!\n\nWenn Sie Ihren privaten Schlüssel löschen, können Sie keine Nachrichten mehr entschlüsseln, die dafür verschlüsselt wurden. Außerdem können Sie anschließend den zugehörigen öffentlichen Schlüssel nicht mehr widerrufen.\n\nMöchten Sie wirklich den öffentlichen UND den PRIVATEN Schlüssel „%S“ löschen? deleteMix=WARNUNG: Sie sind dabei private Schlüssel zu löschen!\n\nWenn Sie Ihren privaten Schlüssel löschen, können Sie keine Nachrichten mehr entschlüsseln, die dafür verschlüsselt wurden.\n\nWollen Sie wirklich beides, die gewählten öffentlichen UND PRIVATEN Schlüssel löschen? deletePubKey=Möchten Sie den öffentlichen Schlüssel „%S“ löschen? deleteSelectedPubKey=Möchten Sie die öffentlichen Schlüssel löschen? deleteKeyFailed=Löschen des Schlüssels fehlgeschlagen revokeKeyQuestion=Sie sind dabei, den Schlüssel '%S' zu widerrufen.\n\nSie werden mit diesem Schlüssel nicht mehr unterschreiben können, und sobald der Widerruf verteilt ist, werden andere nicht mehr mit diesem Schlüssel verschlüsseln können. Sie können mit dem Schlüssel aber weiterhin alte Nachrichten entschlüsseln.\n\nWollen Sie fortfahren? revokeKeyOk=Der Schlüssel wurde widerrufen. Wenn Ihr Schlüssel auf einem Schlüssel-Server verfügbar ist, sollten Sie Ihn jetzt erneut hochladen. Erst dann können andere Anwender sehen, dass er widerrufen wurde. revokeKeyFailed=Der Schlüssel konnte nicht widerrufen werden. refreshAllQuestion=Sie haben keinen Schlüssel ausgewählt. Möchten Sie ALLE Schlüssel aktualisieren? refreshKey.warn=Warnung: In Abhängigkeit von der Anzahl der Schlüssel und der Verbindungsgeschwindigkeit, kann das Aktualisieren aller Schlüssel sehr lange dauern! downloadContactsKeys.warn=Warnung: In Abhängigkeit von der Anzahl der Kontakte und der Übertragungsgeschwindigkeit kann dieser Vorgang recht lange dauern! downloadContactsKeys.importFrom=Kontakte aus Adressbuch '%S' importieren? keyMan.button.exportSecKey=&Geheime Schlüssel exportieren keyMan.button.exportPubKey=&Nur öffentliche Schlüssel exportieren keyMan.button.import=&Importieren keyMan.button.refreshAll=Alle Schlüssel &aktualisieren keyMan.button.revokeKey=Schlüssel &widerrufen keyMan.button.skip=Schlüssel über&springen keylist.noOtherUids=Hat keine weiteren Identitäten keylist.hasOtherUids=Auch bekannt als keylist.noPhotos=Kein Foto verfügbar keylist.hasPhotos=Fotos keyMan.addphoto.filepicker.title=Foto auswählen keyMan.addphoto.warnLargeFile=Die ausgewählte Datei ist größer als 25 kB.\nEs ist nicht empfehlenswert große Dateien hinzuzufügen, da die Schlüssel dadurch sehr groß werden. keyMan.addphoto.noJpegFile=Das ausgewählte Foto scheint nicht im JPEG-Format zu sein. Bitte wählen Sie eine andere Datei. keyMan.addphoto.failed=Das Foto konnte nicht hinzugefügt werden. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Änderung der primären Benutzer-ID fehlgeschlagen changePrimUidOK=Primäre Benutzer-ID erfolgreich geändert deleteUidFailed=Löschen der Benutzer-ID %S fehlgeschlagen deleteUidOK=Benutzer-ID „%S“ wurde erfolgreich gelöscht revokeUidFailed=Widerrufen der Benutzer-ID %S fehlgeschlagen revokeUidOK=Benutzer-ID „%S“ erfolgreich widerrufen. Wenn Ihr Schlüssel auf einem Schlüssel-Server verfügbar ist, sollten Sie Ihn jetzt erneut hochladen. Erst dann können andere Anwender sehen, dass er widerrufen wurde. revokeUidQuestion=Möchten Sie die Benutzer-ID „%S“ wirklich widerrufen? deleteUidQuestion=Möchten Sie wirklich die Benutzer-ID „%S“ löschen?\n\nHinweis: Wenn Sie Ihren öffentlichen Schlüssel auf einen Schlüssel-Server hochgeladen haben, dann bewirkt das Löschen einer Benutzer-ID nichts. In diesem Fall sollten Sie die Benutzer-ID „Widerrufen“. # Strings in enigmailKeyImportInfo.xul importInfoTitle=Das hat geklappt! Schlüssel wurden importiert importInfoSuccess=✅ importInfoBits=Bit importInfoCreated=Erstellt importInfoFpr=Fingerabdruck importInfoDetails=(Details) importInfoNoKeys=Keine Schlüssel importiert # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=öffentlich keyTypePrimary=Primärer Schlüssel keyTypeSubkey=Unterschlüssel keyTypePair=Schlüsselpaar keyExpiryNever=nie keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Verschlüsseln keyUsageSign=Unterschreiben keyUsageCertify=Beglaubigen keyUsageAuthentication=Authentifizieren keyDoesNotExpire=Schlüssel läuft nicht ab # Strings in enigmailGenCardKey.xul keygen.started=Bitte warten Sie, während der Schlüssel erzeugt wird… keygen.completed=Schlüssel erzeugt. Die neue Schlüssel-ID ist: 0x%S keygen.keyBackup=Die Sicherungskopie des Schlüssel wurde gespeichert als %S keygen.passRequired=Bitte vergeben Sie eine Passphrase, wenn Sie eine Sicherungskopie des Schlüssels außerhalb der SmartCard anlegen möchten. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Die eingegebene PIN ist nicht korrekt – bitte erneut eingeben cardPin.minLength=Die PIN muss mindestens %S Buchstaben oder Ziffern enthalten cardPin.processFailed=Ändern der PIN fehlgeschlagen # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Schlüssel werden aktualisiert. Bitte warten… keyserverProgress.uploading=Schlüssel werden hochgeladen. Bitte warten… keyserverTitle.refreshing=Schlüssel aktualisieren keyserverTitle.uploading=Schlüssel hochladen # Strings in enigmailSetupWizard passphrase.min8keys=Ihre Passphrase sollte mindestens 8 Zeichen lang sein! setupWizard.reallyCancel=Möchten Sie den Einrichtungs-Assistenten wirklich schließen? setupWizard.invalidGpg=Bei der angegebenen Datei handelt es sich nicht um das GnuPG-Programm. Bitte wählen Sie eine andere Datei aus. setupWizard.specifyFile=Sie müssen zumindest eine öffentliche Schlüsseldatei auswählen, um fortzufahren. setupWizard.installFailed=Die Installation scheint nicht erfolgreich abgeschlossen worden zu sein. Bitte versuchen Sie GnuPG erneut zu installieren, oder installieren Sie GnuPG manuell und weisen Sie den Pfad über die Schaltfläche „Durchsuchen“ zu. setupWizard.downloadForbidden=Zu Ihrer eigenen Sicherheit wird der Download von GnuPG nicht fortgesetzt. Bitte besuchen Sie die Webseite https://www.gnupg.org/, um GnuPG herunterzuladen. setupWizard.downloadImpossible=GnuPG kann momentan nicht heruntergeladen werden. Bitte versuchen Sie es später erneut oder besuchen Sie die Webseite https://www.gnupg.org/, um GnuPG herunterzuladen. setupWizard.hashSumError=Der Assistent konnte die Integrität der heruntergeladenen Datei nicht verifizieren. Die Datei könnte defekt oder manipuliert sein. Möchten Sie die Installation trotzdem fortsetzen? setupWizard.importSettingsFile=Geben Sie die zu ladende Sicherungsdatei an setupWizard.invalidSettingsFile=Die angegebene Datei ist keine Enigmail-Einstellungen-Datei. setupWizard.gpgConfExists=Es existiert bereits eine GnuPG-Konfigurationsdatei. Soll sie durch die GnuPG-Konfigurationsdatei aus der Sicherung ersetzt werden? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Beim Download von GnuPG ist ein Fehler aufgetreten. Bitte prüfen Sie die Fehlerkonsole für weitere Details. installGnuPG.installFailed=Bei der Installation von GnuPG ist ein Fehler aufgetreten. Bitte prüfen Sie die Fehlerkonsole für weitere Details. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Sie müssen einen Namen und eine E-Mail-Adresse angeben addUidDlg.nameMinLengthError=Der Name muss mindestens 5 Zeichen enthalten addUidDlg.invalidEmailError=Sie müssen eine gültige E-Mail-Adresse angeben addUidDlg.commentError=Klammern sind in Kommentaren nicht erlaubt # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP-Smartcards unterstützen nur ASCII-Zeichen in Vor- und Nachname (also beispielsweise keine Umlaute) # network error types errorType.SecurityCertificate=Das Zertifikat des Web-Services ist nicht gültig. errorType.SecurityProtocol=Das vom Web-Service verwendete Sicherheitsprotokoll ist unbekannt. errorType.Network=Ein Netzwerkfehler ist aufgetreten. # filter stuff filter.folderRequired=Sie müssen einen Zielordner auswählen filter.decryptMove.label=Dauerhaft entschlüsseln (Enigmail) filter.decryptCopy.label=Entschlüsselte Kopie anlegen (Enigmail) filter.decryptMove.warnExperimental=Warnung – Die Filter-Aktion „Dauerhaft entschlüsseln“ kann Nachrichten zerstören.\n\nWir empfehlen eindringlich, dass Sie zunächst den Filter „Entschlüsselte Kopie anlegen“ ausprobieren und das Ergebnis sorgfältig prüfen. Nur wenn Sie mit dessen Ergebnis zufrieden sind, sollten Sie diesen Filter hier verwenden. # strings in enigmailConvert.jsm converter.decryptBody.failed=Konnte Nachricht mit folgendem Betreff nicht entschlüsseln:\n„%S“\nWollen Sie es mit einer anderen Passphrase erneut versuchen, oder wollen Sie die Nachricht überspringen? converter.decryptAtt.failed=Konnte Anhang „%1$S“ \nnicht entschlüsseln in Nachricht mit Betreff \n„%2$S“. \nWollen Sie es mit einer anderen Passphrase erneut versuchen, oder wollen Sie die Nachricht überspringen? saveLogFile.title=Log-Datei speichern # strings in gpg.jsm unknownSigningAlg=Unbekannter Unterschrift-Algorithmus (ID: %S) unknownHashAlg=Unbekannter kryptographischer Hash (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=Der Schlüssel %1$S (Schlüssel-ID %2$S) wurde widerrufen. keyRing.pubKeyExpired=Der Schlüssel %1$S (Schlüsselkennung %2$S) ist abgelaufen. keyRing.pubKeyNotForSigning=Der Schlüssel %1$S (Schlüssel-ID %2$S) kann nicht zum Unterschreiben verwendet werden. keyRing.pubKeyNotForEncryption=Der Schlüssel %1$S (Schlüssel-ID %2$S) kann nicht zum Verschlüsseln verwendet werden. keyRing.keyDisabled=Der Schlüssel %1$S (Schlüsselkennung %2$S) ist deaktiviert; er kann nicht verwendet werden. keyRing.keyNotTrusted=Der Schlüssel %1$S (Schlüssel-ID %2$S) hat nicht genug Vertrauen. Bitte ändern Sie die Vertrauensstufe des Schlüssels auf „absolut“, um ihn zum Unterschreiben zu verwenden. keyRing.keyInvalid=Der Schlüssel %1$S (Schlüssel-ID %2$S) ist ungültig (er könnte beispielsweise nicht von sich selbst unterschrieben sein). keyRing.signSubKeysRevoked=Alle Unterschrift-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) wurden widerrufen. keyRing.signSubKeysExpired=Alle Unterschrift-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) sind abgelaufen. keyRing.signSubKeysUnusable=Alle Unterschrift-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) sind widerrufen, abgelaufen oder aus anderem Grund unbenutzbar. keyRing.encSubKeysRevoked=Alle Verschlüsselungs-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) wurden widerrufen. keyRing.encSubKeysExpired=Alle Verschlüsselungs-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) sind abgelaufen. keyRing.noSecretKey=Der private Schlüssel für %1$S (Schlüssel-ID %2$S) scheint in Ihrem Schlüsselbund zu fehlen; dieser Schlüssel kann daher nicht zum Unterschreiben verwendet werden. keyRing.encSubKeysUnusable=Alle Verschlüsselungs-Unterschlüssel des Schlüssels %1$S (Schlüssel-ID %2$S) sind widerrufen, abgelaufen oder aus anderem Grund unbenutzbar. #strings in exportSettingsWizard.js cannotWriteToFile=Datei „%S“ kann nicht gespeichert werden. Bitte wählen Sie eine andere Datei aus. dataExportError=Beim Exportieren der Daten ist ein Fehler aufgetreten. enigmailSettings=Enigmail-Einstellungen defaultBackupFileName=Enigmail-Sicherung specifyExportFile=Geben Sie den Dateinamen für die Sicherung an homedirParamNotSUpported=Zusätzliche Parameter zum Ändern von Pfaden, zum Beispiel --homedir und --keyring, sind beim Exportieren/Wiederherstellen der Einstellungen nicht möglich. Bitte nutzen Sie alternative Möglichkeiten, zum Beispiel die Umgebungsvariable GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Ihr Schlüssel %1$S läuft in weniger als %2$S Tagen ab.\n\nEs wird empfohlen, dass Sie ein neues Schlüsselpaar erzeugen und die entsprechenden E-Mail-Konten so einstellen, dass die neuen Schlüssel benutzt werden. expiry.keysExpireSoon=Die folgenden Ihrer Schlüssel laufen in weniger als %1$S Tagen ab: %2$S.\n\nEs wird empfohlen, dass Sie neue Schlüssel erzeugen und die entsprechenden E-Mail-Konten so einstellen, dass die neuen Schlüssel benutzt werden. enigmail/lang/de/help/000077500000000000000000000000001266701624400151145ustar00rootroot00000000000000enigmail/lang/de/help/compose.html000066400000000000000000000111461266701624400174520ustar00rootroot00000000000000 Enigmail-Hilfe: Verfassen von Nachrichten

Enigmail-Hilfe

Verwenden von Enigmail beim Verfassen von Nachrichten

Menü "Enigmail" im Fenster "Verfassen"
Nachricht unterschreiben
Unterschreiben von Nachrichten aktivieren / deaktivieren. Der Benutzer wird benachrichtigt, falls das Unterschreiben fehlschlägt.
Nachricht verschlüsseln

Verschlüsselung an alle Adressaten aktivieren / deaktivieren. Der Benutzer wird benachrichtigt, falls die Verschlüsselung fehlschlägt.

Falls Auswahl anzeigen, wenn notwendig im Menü Enigmail -> Einstellungen -> Schlüsselauswahl... eingestellt ist, dann wird eine Liste mit Schlüsseln erscheinen, wenn Sie keinen öffentlichen Schlüssel für einen oder mehrere Empfänger der Nachrichten besitzen.

Falls Auswahlfenster nie anzeigen im Menü Enigmail -> Einstellungen -> Schlüsselauswahl... eingestellt ist, dann wird die Nachricht an die Empfänger unverschlüsselt gesendet, von denen Sie keinen öffentlichen Schlüssel besitzen.

PGP/MIME verwenden
Verwenden von PGP/MIME für diese Nachricht ermöglichen / nicht ermöglichen.

Wenn Sie wissen, dass die Empfänger das PGP/MIME-Format verwenden können, dann sollten Sie dies benutzen.

Diese Möglichkeit hängt von den Einstellungen unter Enigmail -> Einstellungen -> PGP/MIME... ab. Hier muss PGP/MIME verwenden, wenn möglich oder Immer PGP/MIME verwenden aktiviert sein.

Einstellungen (Untermenü)
  • Unterschrift/Verschlüsselung...: Abkürzung zu den Konten-Einstellungen -> OpenPGP-Sicherheit.
  • Senden...: Abkürzung zu Einstellungen -> Senden.
  • Schlüsselwauswahl...: Abkürzung zu Einstellungen -> Schlüsselauswahl.
Empfängerregeln
Öffnet den Dialog mit den Empfängerregeln.
Verschlüsselung rückgängig machen

Wenn es einen Fehler beim Senden der Nachricht gibt, also z.B. der POP-Server nicht erreichbar ist, dann wird Enigmail dies nicht wissen und die verschlüsselte Nachricht wird auch weiterhin im Fenster "Verfassen" angezeigt. Dieser Menüpunkt nimmt die Verschlüsselung / das Unterschreiben zurück und das Fenster "Verfassen" kehrt zum Originaltext zurück.

Als vorläufige Maßnahme kann über diesen Menüpunkt auch eine verschlüsselte Nachricht, die man zitiert und auf die man antwortet, entschlüsselt angezeigt werden. Enigmail sollte zitierte Nachrichten automatisch entschlüsseln, was bisher jedoch fehlschlägt. Über diesen Menüeintrag kann Enigmail zur Entschlüsselung gezwungen werden.

Meinen öffentlichen Schlüssel anhängen
Hägt an die Nachricht Ihren öffentlichen Schlüssel im ASCII-Format an.
Öffentlichen Schlüssel anhängen
Hägt an die Nachricht öffentliche Schlüssel im ASCII-Format an. Sie können die gewünschten Schlüssel dazu auswählen.
Passphrase aus Zwischenspeicher löschen
Löscht die gespeicherte Passphrase. Nützlich, falls Sie mehrere Passphrasen verwenden.
Hilfe
Zeigt die Hilfe an (diese Seite).

Weitere Hilfe ist verfügbar auf der Enigmail-Hilfeseite

enigmail/lang/de/help/editRcptRule.html000066400000000000000000000131301266701624400204060ustar00rootroot00000000000000 Enigmail-Hilfe: Enigmail-Empfägerregel bearbeiten

Enigmail-Hilfe

Enigmail-Empfängerregeln bearbeiten

Es können Standards für einen Empfänger bezüglich Verschlüsselung, Unterschreiben und PGP/MIME sowie die Verwendung von OpenPGP-Schlüsseln festgelegt werden. In diesem Dialog können Sie Regeln für einen einzelnen Empfänger sowie Gruppen von Empfängern mit ähnlichen Eigenschaften festlegen.

Regel für
Beinhaltet die E-Mail-Adressen der Empfänger (ohne Namen, also z.B. einfach somebody@email.domain). Sie können mehrere E-Mail-Adressen festlegen; die Adressen müssen mit Leerzeichen voneinander getrennt sein. Die eingegebenen Adressen können auch nur aus dem Domain-Namen bestehen, so dass die Regel auf alle Mails dieser Domain angewendet wird, also z.B. @email.domain bezieht ein body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Anwenden, wenn Empfänger...
Dies modifiziert die Übereinstimmung der E-Mail-Adressen. Wenn mehrere E-Mail-Adressen eingegeben werden, dann wird diese Einstellung auf alle angewendet. Die folgenden Beispiele beziehen sich auf die Adresse body@email.domain, die im oberen Feld Enigmail-Empfängerregel eingegeben wurde.
  • ist exakt: Mit dieser Einstellung wird die Regel nur angewendet, wenn die E-Mail-Adresse body@email.domain lautet (exakt, Gross-/Kleinschreibung wird nicht beachtet).
  • enthält: Regel wird angewendet, wenn die Zeichenfolge in der E-Mail-Adresse auftaucht, also z.B. anybody@email.domain oder body@email.domain.net
  • beginnt mit: Regel wird angewendet, wenn die Zeichenfolge am Beginn der E-Mail-Adresse steht, also z.B. body@email.domain.net, body@email.domain-name.com.
  • endet mit: Regel wird angewendet, wenn die Zeichenfolge am Ende der E-Mail-Adresse steht, also z.B. anybody@email.domain, somebody@email.domain.
Weitere Regeln auf passende Adresse prüfen
Diese Einstellung erlaubt Ihnen, eine Regel zu erstellen ohne eine spezielle Schlüssel-ID in Verwende folgende OpenPGP-Schlüssel angeben zu müssen. Die E-Mail-Adresse wird für die Auswahl des passenden Schlüssels beim Senden genutzt. Weitere Regeln für die gleiche E-Mail-Adresse werden auch ausgeführt.
Weitere Regeln nicht auf passende Adresse prüfen
Bei dieser Einstellung werden weitere Regeln nicht mehr ausgeführt, sobald eine passende Regel gefunden wurde.
Verwende folgende OpenPGP-Schlüssel:
Nutzen Sie die Schaltfläche Auswählen..., um die gewünschten Schlüssel auszuwählen. Auch hier werden keine weiteren Regeln ausgeführt.
Unterschreiben
Unterschreiben von Nachrichten ermöglichen / nicht ermöglichen. Diese Einstellung verwendet oder übergeht, was Sie im Fenster "Verfassen" angegeben haben. Die möglichen Einstellungen lauten:
  • Nie: Unterschreiben nicht ermöglichen, auch wenn es im Fenster "Verfassen" möglich war (andere Einstellungen werden übergangen).
  • Ja, wenn beim Verfassen ausgewählt: Übernimmt die Einstellung, die beim Verfassen gewählt wurde.
  • Immer: Unterschreiben ermöglichen, selbst wenn es nicht im Fenster "Verfassen" ermöglicht war.
Diese Unterschriftseinstellungen werden bei allen übereinstimmenden Regeln angewendet. Wenn eine der Regeln das Unterschreiben nicht ermöglicht, dann wird die Nachricht ungeachtet anderer Regeln, die Immer vorschreiben, nicht unterschrieben.
Verschlüsselung
Verschlüsselung ermöglichen / nicht ermöglichen. Die möglichen Einstellungen und Bedeutungen stimmen mit den oben genannten überein.
PGP/MIME
Verschlüsselung mit PGP/MIME (RFC 3156) ermöglichen / nicht ermöglichen. Wenn nicht PGP/MIME abgestellt (nicht möglich) ist, dann wird die Nachricht per "Inline PGP" verschlüsselt. Die möglichen Einstellungen und Bedeutungen stimmen mit den oben genannten überein.

Die Regeln werden in der Reihenfolge, wie sie in der Liste im Dialog "Enigmail-Empfängerregeln" erscheinen, angewendet. Wann immer eine Regel auf einen Empfänger zutrifft und eine OpenPGP-Schlüssel-ID enthält, dann wird der Empfänger nach Verwendung der angegeben Schlüssel-ID bei den nachfolgenden Regeln nicht mehr beachtet.


Weitere Hilfe ist verfügbar auf der Enigmail Per-Recipient Settings Seite

enigmail/lang/de/help/initError.html000066400000000000000000000053521266701624400177640ustar00rootroot00000000000000 Enigmail-Hilfe: Beheben von Problemen bei der Enigmail-Initialisierung

Enigmail-Hilfe

Beheben von Problemen bei der Enigmail-Initialisierung

Es gibt verschiedene Ursachen für ein Fehlschlagen der Enigmail-Initialisierung. Die bekanntesten werden unten beschrieben& für weitere Informationen besuchen Sie bitte die Enigmail-Hilfe-Webseite.

GnuPG konnte nicht gefunden werden

Damit Enigmail funktionieren kann, muss die Anwendung GnuPG installiert sein. Wenn GnuPG nicht gefunden werden kann, stellen Sie als erstes sicher, dass die Anwendung gpg.exe (für Windows& gpg für andere Plattformen) auf Ihrem PC tatsächlich vorhanden ist. Wenn GnuPG (gpg.exe bzw. gpg) tatsächlich installiert ist, aber Enigmail kann es trotzdem nicht finden, müssen Sie den Pfad zu GnuPG manuell in den Enigmail-Einstellungen angeben (Menü Enigmail > Einstellungen...).

Initialisierung von EnigMIME ist fehlgeschlagen

Enigmail funktioniert nur, wenn es in der gleichen Entwicklungsumgebung wie Thunderbird bzw. Seamonkey erstellt (kompiliert) wurde. Sie können das offizielle Enigmail zusammen mit offiziellen Veröffentlichungen von Thunderbird bzw. Seamonkey von mozilla.org verwenden.

Wenn Sie Thunderbird oder Seamonkey in einer Version/Variante von einer anderen Quelle verwenden (z.B. vom Anbieter einer Linux-Distribution), oder wenn Sie die Anwendung selbst kompiliert haben, müssen Sie auch Enigmail in einer Version verwenden, die in der gleichen Entwicklungsumgebung kompiliert wurde. Um Enigmail selbst zu kompilieren, beachten Sie bitte die Angaben auf der Enigmail-Webseite im Bereich Source-Code. Bitte erstellen Sie keine Fehlerhinweise (Bugs) zu diesem Problem, da es dazu keine andere Lösung gibt.


Weitere Hilfe ist verfügbar unter Enigmail-Hilfeseite

enigmail/lang/de/help/messenger.html000066400000000000000000000131421266701624400177730ustar00rootroot00000000000000 Enigmail-Hilfe: Lesen von Nachrichten

Enigmail-Hilfe

Verwenden von Enigmail beim Lesen von Nachrichten

Schaltfläche "Entschlüsseln" im Hauptfenster
Diese Schaltfläche kann für mehrere Zwecke verwendet werden: zum Entschlüsseln, Überprüfen, oder Importieren von öffentlichen Schlüsseln. Im Normalfall werden Nachrichten automatisch entschlüsselt und überprüft. Dies kann jedoch in den Einstellungen deaktiviert werden. Sollte das Entschlüsseln fehlschlagen, dann erscheint im Regelfall eine kurze Fehlermeldung in der Statuszeile von Enigmail. Sie werden dann, wenn Sie die Schaltfläche "Entschlüsseln" anklicken, eine detaillierte Fehlermeldung (inklusive der Meldung von der OpenPGP-Kommandozeile) erhalten.
Schlüssel- und/oder Stift-Symbol in der Statusleiste einer Nachricht
Das Stift- und das Schlüssel-Symbol in der Statusleiste geben an, ob die Nachricht unterschrieben und/oder verschlüsselt ist und ob die Unterschrift gültig ist, d.h. dass die Nachricht seit ihrem Senden nicht geändert wurde. Falls die Nachricht geändert wurde, wird der Stift rot dargestellt, um auf die Ungültigkeit der Unterschrift hinzuweisen. Nach einem Klick auf "Details" in der Enigmail-Zeile im Nachrichtenkopf wird ein Menü mit den folgenden Optionen angezeigt:
  • Schlüssel importieren: importiert eventuell angehängte öffentliche Schlüssel in Ihren Schlüsselring in der Schlüsselverwaltung.
  • Enigmail-Sichheitsinfo...: ermöglicht Ihnen, die Statusmeldungen der Enigmail-Kommandozeile für die Nachricht anzusehen.
  • Enigmail-Sicherheitsinfo kopieren: kopiert die Statusmeldungen von Enigmail in die Zwischenablage, damit man sie z.B. in eine Antwortnachricht etc. einfügen kann.
  • Foto-ID anzeigen: ermöglicht Ihnen, die Foto-ID der Person, die die Nachricht gesendet hat, anzusehen, falls diese ein Foto in dem öffentlichen Schlüssel eingebettet hat. (Diese Option is nur verfügbar wenn ein Foto in dem öffentlichen Schlüssel eingebettet ist.)
  • Schlüssel unterschreiben: lässt Sie den Schlüssel des Absenders unterschreiben.
  • Besitzervertrauen des Absenders festlegen...: lässt Sie das Besitzervertrauen des Absenders festlegen, falls dessen Schlüssel in Ihrem Schlüsselring vorhanden ist.

Falls Sie keyserver-options auto-key-retrieve nicht in der Datei gpg.conf eingestellt haben, und Sie lesen eine Nachricht, die signiert oder verschlüsselt ist, dann erscheint ein Stift-Symbol mit einem Fragezeichen. Die Enigmail-Statuszeile im Kopfzeilenbereich der Nachricht wird melden: Ein Teil der Nachricht ist signiert; klicken Sie auf das Stift-Symbol für Details, und im Nachrichtentext werden alle PGP-Nachrichtenblockanzeiger und Signaturblöcke angezeigt.

Dies kann außerdem angezeigt werden, wenn Sie keyserver-options auto-key-retrieve in der Datei gpg.conf eingestellt haben aber der OpenPGP-Schlüssel nicht auf dem voreingestellten Schlüssel-Server verfügbar ist.

Wenn Sie auf das Schlüssel mit Fragezeichen-Symbol klicken, dann erhalten Sie die Meldung, dass der Schlüssel nicht in Ihrem Schlüsselring verfügbar ist. Wenn Sie OK klicken, dann öffnet sich ein Fenster mit einer Liste von Schlüssel-Servern, aus der Sie einen auswählen können, um den öffentlichen Schlüssel des Absenders herunterzuladen.

Um die Liste der Schlüssel-Server, die Sie verwenden möchten, zu konfigurieren, gehen Sie zu Enigmail -> Einstellungen... -> Allgemein und geben die Adressen der Schlüssel-Server im Feld Schlüssel-Server ein (jeweils getrennt durch ein Komma). Der erste Schlüssel-Server wird als voreingestellter Server verwendet.

Öffnen von verschlüsselten Dateianhängen / Importieren von angehängten OpenPGP-Schlüsseln
Dateianhänge mit den Endungen *.pgp, *.asc und *.gpg werden von Enigmail als Anhänge erkannt, die speziell mit Enigmail bearbeitet werden können. Durch einen Rechtsklick auf solch einen Dateianhang werden zwei spezielle Menüeinträge im Kontextmenü angezeigt: Entschlüsseln und Öffnen und Entschlüsseln und Speichern. Verwenden Sie diese Menüeinträge, falls Enigmail einen Dateianhang entschlüsseln soll, bevor Sie ihn öffnen oder speichern. Wenn ein Anhang als PGP-Schlüsseldatei erkannt wird, dann werden Sie gefragt, ob sie diese(n) Schlüssel in ihren Schlüsselring importieren möchten.

Weitere Hilfe ist verfügbar unter Enigmail Hilfeseite

enigmail/lang/de/help/rulesEditor.html000066400000000000000000000073221266701624400203070ustar00rootroot00000000000000 Enigmail-Hilfe: Enigmail-Empfägerregeln

Enigmail-Hilfe

Enigmail-Empfängerregeln

Mit dem Regel-Editor kann man Standards in Bezug auf Verschlüsselung, Unterschreiben und PGP/MIME für bestimmte Empfänger und die Benutzung von Schlüsseln einstellen. Jede Regel besteht aus 5 Feldern und ist in einer einzelnen Zeile zu finden:

E-Mail-Adresse
Die E-Mail-Adressen der Felder "An:", "CC:" und "BCC:", die übereinstimmen sollen. Die Übereinstimmung arbeitet mit substrings (Weitere Details im Dialog "Enigmail-Empfängerregel bearbeiten").
OpenPGP-Schlüssel
Eine Liste der OpenPGP-Schlüssel-IDs, die für den Empfänger verwendet werden sollen.
Unterschreiben
Unterschreiben von Nachrichten ermöglichen / nicht ermöglichen. Dies verwendet die Einstellungen, die im Fenster "Verfassen" angegeben sind oder setzt sich darüber hinweg. Es gibt folgende Optionen:
  • Nie: Unterschreiben unmöglich, selbst wenn im Fenster "Verfassen" angegeben (setzt sich über andere Einstellungen hinweg).
  • Ja, wenn beim Verfassen ausgewählt: Einstellung aus dem Fenster "Verfassen" wird übernommen.
  • Immer: Unterschreiben, selbst wenn nicht im Fenster "Verfassen" angegeben.

Diese Unterschriftseinstellungen werden auf alle Regeln angewendet, die übereinstimmen. Wenn eine der Regeln das Unterschreiben unmöglich macht, dann wird die Nachricht nicht unterschrieben - auch wenn bei anderen Regeln Immer angegeben ist.

Verschlüsseln
Verschlüsselung ermöglichen / nicht ermöglichen. Die möglichen Einstellungen und ihre Bedeutungen stimmen mit den oben genannten überein.
PGP/MIME
Verwenden von PGP/MIME (RFC 3156) ermöglichen / nicht ermöglichen. Falls PGP/MIME nicht möglich ist, dann werden die Nachrichten per "Inline PGP" verschlüsselt. Die möglichen Einstellungen und ihre Bedeutungen stimmen mit den oben genannten überein.

Die Regeln werden in der Reihenfolge, wie sie in der Liste erscheinen, angewendet. Wann immer eine Regel auf einen Empfänger zutrifft und eine OpenPGP-Schlüssel-ID enthält, dann wird der Empfänger nach Verwendung der angegeben Schlüssel-ID bei den nachfolgenden Regeln nicht mehr beachtet.

Hinweis: Der Regel-Editor ist noch nicht komplett. Es ist möglich, weiter fortgeschrittene Regeln zu schreiben, indem man direkt die Regel-Datei bearbeitet (diese Regeln sollten danach nicht mehr mit dem Regel-Editor bearbeitet werden). Weitere Informationen, wie die Datei bearbeitet werden muss, gibt es auf der Enigmail-Homepage


Weitere Hilfe ist verfügbar auf der Enigmail-Hilfeseite

enigmail/lang/de/help/sendingPrefs.html000066400000000000000000000064271266701624400204420ustar00rootroot00000000000000 Enigmail Help: Edit Enigmail Rule

Enigmail-Hilfe

Optionen zum Verschlüsselten Senden

In den Senden Einstellungen kann man prinzipiell das Modell und die prinzipiellen Einstellungen zum Verschlüsseln einstellen.

Bequeme Verschlüsselung
Mit diesen Einstellungen wird möglichst immer ohne Rückfragen verschlüsselt.

Diese Einstellungen sind vor allem dann angemessen, wenn man einfach nur seine Privatsphäre erhöhen will, indem man Emails möglichst verschlüsselt statt unverschlüsselt verschickt.

Der Effekt ist wie wenn man Emails statt als Postkarten als Briefe versendet. Im Gegensatz zu Postkarten kann damit unterwegs nicht mehr jeder den Inhalt der Email einfach so mitlesen.

Wie bei Briefen bietet das aber keine absolute Garantie, dass die Emails unterwegs nicht von anderen gelesen werden können (auch wenn dazu ein gewisser technischer Aufwand notwendig ist).

Ein ganz konkretes Risiko besteht darin, aus Versehen "gefälschte Schlüssel" zu verwenden, die man von irgendjemanden oder irgendwo bekommen hat und nur behauptet wurde, dass der Schlüssel zur angegebenen Email-Adresse gehört. Um dieses Risiko zu vermeiden, sollte man nur Schlüssel akzeptieren, denen man vertrauen kann (siehe unten), oder immer selbst einen Schlüssel anhand des Fingerabdrucks mit dem Eigentümer abgleichen (und unterschreiben).

Manuelle Verschlüsselung
Mit dieser Option kann man die verschiedenen Einstellungen zur Verschlüsselung nach den eigenen Vorstellungen anpassen. Man kann festlegen
  • ob auf verschlüsselte/signierte Emails automatisch verschlüsselt/signiert geantwortet werden soll.
  • ob man nur Schlüssel akzeptieren will, denen man auch vertrauen kann (dies aktiviert das OpenPGP Vertrauensmodell, durch das man nur Schlüsseln vertraut, die von einem selbst oder Personen, denen man trauen kann, unterschrieben wurden).
  • ob man möglichst immer automatisch verschlüsseln will.
  • ob und unter welchen Umständen eine ausgehende Email (und deren Verschlüsselung) final bestätigt werden muss.
Falls es wichtig ist, dass der Inhalt von verschlüsselten Emails nicht von anderen Personen oder Organisationen gelesen werden können, sollte man zumindest bei den manuellen Einstellungen die Option einschalten, mit der nur vertrauenswürdige Schlüssel akzeptiert werden. Während dies das Risiko der Verwendung von "gefälschten Schlüsseln" reduziert, muss man dazu aber in der Schlüsselverwaltung Schlüssel aktiv unterschreiben und/oder aktiv bestätigen, welchen Email-Adressen (Personen/Organisationen) man trauen kann, wenn diese die Gültigkeit von Schlüssel bestätigen.


Weitere Hilfe ist verfügbar auf der Enigmail-Hilfeseite

enigmail/lang/el/000077500000000000000000000000001266701624400141745ustar00rootroot00000000000000enigmail/lang/el/am-enigprefs.properties000066400000000000000000000001311266701624400206620ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Ασφάλεια OpenPGP enigmail/lang/el/enigmail.dtd000066400000000000000000001230261266701624400164620ustar00rootroot00000000000000 ΣΗΜΕΙΩΣΗ: Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¼Ï€Î¿Ïεί να διαÏκέσει αÏκετά λεπτά. Μην τεÏματίσετε την εφαÏμογή κατά τη διάÏκεια της δημιουÏγίας του κλειδιοÏ. Κατά τη διάÏκεια της δημιουÏγίας του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¸Î± ήταν καλό να κάνετε κάποιες εÏγασίες που χÏησιμοποιοÏν τους πόÏους του συστήματος (επεξεÏγαστή, μνήμη, δίσκο) για να αυξηθεί η εντÏοπία και να επισπευσθεί η δημιουÏγία του κλειδιοÏ. Θα ειδοποιηθείτε όταν ολοκληÏωθεί η δημιουÏγία του κλειδιοÏ."> ' δεν είναι έγκυÏο"> ΣΗΜΕΙΩΣΗ: Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¼Ï€Î¿Ïεί να διαÏκέσει αÏκετά λεπτά. Μην τεÏματίσετε την εφαÏμογή κατά τη διάÏκεια της δημιουÏγίας του κλειδιοÏ. Θα ειδοποιηθείτε όταν ολοκληÏωθεί η δημιουÏγία του κλειδιοÏ."> Σημείωση: Το Enigmail θα επαληθεÏει πάντα τις υπογÏαφές των μηνυμάτων όλων των λογαÏιασμών και ταυτοτήτων, ανεξάÏτητα αν είναι ενεÏγοποιημένο για αυτές ή όχι"> ΕυχαÏιστοÏμε που χÏησιμοποιείτε το Enigmail."> enigmail/lang/el/enigmail.properties000066400000000000000000001263621266701624400201110ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Ειδοποίηση του Enigmail enigConfirm=Επιβεβαίωση του Enigmail enigError=Σφάλμα του Enigmail enigPrompt=ΕÏώτηση του Enigmail dlgYes=&Îαι dlgNo=ÎŒ&χι dlgKeepSetting=Απομνημόνευση της απάντησής μου ώστε να μην εÏωτηθώ ξανά dlgNoPrompt=Îα μην εμφανιστεί ξανά αυτός ο διάλογος dlg.button.delete=&ΔιαγÏαφή dlg.button.cancel=&ΑκÏÏωση dlg.button.close=&Κλείσιμο dlg.button.continue=Συνέ&χεια dlg.button.skip=Πα&Ïάλειψη dlg.button.view=&ΠÏοβολή repeatPrefix=\n\nΑυτή η ειδοποίηση θα επαναληφθεί %S repeatSuffixSingular=φοÏά ακόμα. repeatSuffixPlural=φοÏές ακόμα. noRepeat=\n\nΑυτή η ειδοποίηση δε θα ξαναεμφανιστεί μέχÏι να αναβαθμίσετε το Enigmail. pgpNotSupported=Απ' ότι φαίνεται χÏησιμοποιείτε το Enigmail μαζί με το PGP 6.x\n\nΔυστυχώς, το PGP 6.x έχει οÏισμένες ατέλειες που εμποδίζουν το Enigmail να λειτουÏγήσει σωστά. Για αυτό το λόγο, το Enigmail δεν υποστηÏίζει πια το PGP 6.x ΠαÏακαλώ χÏησιμοποιήστε το GnuPG (GPG).\n\nΑν χÏειάζεστε πεÏισσότεÏη βοήθεια για τη χÏήση του GnuPG, ανατÏέξτε στο τμήμα Βοήθειας στο δικτυακό τόπο του Enigmail. passphraseCleared=Η φÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î¼Î·Î´ÎµÎ½Î¯ÏƒÏ„Î·ÎºÎµ. noPhotoAvailable=Δεν υπάÏχει διαθέσιμη φωτογÏαφία debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Η διαδÏομή εικόνων '%S' δεν είναι Ï€Ïοσβάσιμη usingVersion=ΧÏησιμοποιείται το Enigmail έκδοση %S usingAgent=ΧÏησιμοποιείται το %S (εκτελέσιμο: %S) για υπογÏαφή και κÏυπτογÏάφηση agentError=ΣΦΑΛΜΑ: ΑδÏνατη η Ï€Ïόσβαση στην υπηÏεσία Enigmime! accessError=Σφάλμα Ï€Ïόσβασης στην υπηÏεσία Enigmail onlyGPG=Η δημιουÏγία κλειδιών λειτουÏγεί μόνο με το GnuPG (όχι με το PGP)! keygenComplete=Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¿Î»Î¿ÎºÎ»Î·Ïώθηκε! Η ταυτότητα <%S> θα χÏησιμοποιηθεί για υπογÏαφή. revokeCertRecommended=Σας συστήνεται να δημιουÏγήσετε ένα Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¹Î·Ï„Î¹ÎºÎ¿Ï Î±Î½Î¬ÎºÎ»Î·ÏƒÎ·Ï‚ για το κλειδί σας. Αυτό το πιστοποιητικό μποÏεί να χÏησιμοποιηθεί για να ακυÏώσει το κλειδί σας, αν για παÏάδειγμα το ιδιωτικό κλειδί σας χαθεί ή γίνει γνωστό σε κάποιον άλλον. Θέλετε να δημιουÏγηθεί ένα τέτοιο πιστοποιητικό ανάκλησης τώÏα; keyMan.button.generateCert=&ΔημιουÏγία Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¹Î·Ï„Î¹ÎºÎ¿Ï genCompleteNoSign=Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î¿Î»Î¿ÎºÎ»Î·Ïώθηκε! genGoing=Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÎµÎ¯Î½Î±Î¹ ήδη σε εξέλιξη! passNoMatch=Οι φÏάσεις ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î´ÎµÎ½ ταιÏιάζουν· παÏακαλώ ξαναδοκιμάσετε passCheckBox=ΕνεÏγοποιήστε αυτό το πλαίσιο αν δε θέλετε να οÏίσετε φÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î³Î¹Î± το κλειδί passUserName=ΠαÏακαλώ καθοÏίστε το όνομα χÏήστη για αυτήν την ταυτότητα passSpaceProblem=Για τεχνικοÏÏ‚ λόγους, ο κωδικός δεν Ï€Ïέπει να αÏχίζει ή να τελειώνει με κενό. changePassFailed=Η αλλαγή της φÏάσης ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ. keyConfirm=Îα δημιουÏγηθεί δημόσιο και ιδιωτικό κλειδί για το '%S'; keyMan.button.generateKey=&ΔημιουÏγία ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keyAbort=ΑκÏÏωση της δημιουÏγίας του κλειδιοÏ; keyMan.button.generateKeyAbort=&Εγκατάλειψη δημιουÏγίας ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keyMan.button.generateKeyContinue=&Συνέχεια δημιουÏγίας ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï expiryTooLong=Δεν μποÏείτε να δημιουÏγήσετε κλειδί που να λήγει σε πεÏισσότεÏο από 100 χÏόνια. expiryTooLongShorter=Δεν μποÏείτε να δημιουÏγήσετε κλειδί που λήγει σε πεÏισσότεÏα από 90 έτη. expiryTooShort=Το κλειδί θα Ï€Ïέπει να είναι έγκυÏο για μία ημέÏα τουλάχιστον. dsaSizeLimit=Τα κλειδιά υπογÏαφής DSA έχουν μέγιστο μέγεθος 3072 bits. Το μέγεθος θα μειωθεί ανάλογα. keyGenFailed=Η δημιουÏγία του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ. ΑνατÏέξτε στην κονσόλα του Enigmail (ÎœÎµÎ½Î¿Ï Enigmail > Αποσφαλμάτωση του Enigmail) για λεπτομέÏειες. # Strings in enigmailMessengerOverlay.js securityInfo=ΠληÏοφοÏίες ασφαλείας του Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Οι επισυνάψεις Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος δεν υπογÏάφηκαν ή κÏυπτογÏαφήθηκαν*\n\n possiblyPgpMime=Πιθανό κÏυπτογÏαφημένο ή υπογεγÏαμμένο μήνυμα με PGP/MIME. Κάντε κλικ στο κουμπί ΑποκÏυπτογÏάφηση για να το επαληθεÏσετε noDecrypted=Δεν υπάÏχει αποκÏυπτογÏαφημένο μήνυμα για αποθήκευση!\nΧÏησιμοποιήστε την εντολή Αποθήκευση από το Î¼ÎµÎ½Î¿Ï Î‘Ïχείο noMessage=Δεν υπάÏχει μήνυμα για αποθήκευση! useButton=ΠαÏακαλώ κάντε κλικ στο κουμπί ΑποκÏυπτογÏάφηση για να αποκÏυπτογÏαφήσετε το μήνυμα saveHeader=Enigmail: Αποθήκευση αποκÏυπτογÏαφημένου μηνÏματος saveAttachmentHeader=Enigmail: Αποθήκευση αποκÏυπτογÏαφημένων επισυνάψεων noTempDir=Δε βÏέθηκε Ï€ÏοσωÏινός κατάλογος για εγγÏαφή\nΠαÏακαλώ οÏίστε τη μεταβλητή πεÏιβάλλοντος TEMP attachmentPgpKey=Η επισÏναψη '%S' που ανοίξατε φαίνεται να είναι ένα αÏχείο ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP.\n\nΚάντε κλικ στο 'Εισαγωγή' για να εισάγετε τα κλειδιά που πεÏιέχονται σε αυτό, ή στο 'ΠÏοβολή' για να εμφανίσετε τα πεÏιεχόμενά του στον πεÏιηγητή beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* ********* endPgpPart=********** *END ENCRYPTED or SIGNED PART* ********** notePartEncrypted=Enigmail: *Κάποια τμήματα του μηνÏματος ΔΕΠυπογÏάφηκαν ή κÏυπτογÏαφήθηκαν* noteCutMessage=Enigmail: *Î’Ïέθηκε μήνυμα πολλαπλών τμημάτων -- η αποκÏυπτογÏάφηση/επαλήθευση διακόπηκε* decryptOkNoSig=ΠÏοειδοποίηση\n\nΗ αποκÏυπτογÏάφηση ήταν επιτυχής, αλλά ή επαλήθευση της υπογÏαφής δεν έγινε σωστά msgOvl.button.contAnyway=&Συνέχεια όπως και να 'χει signature.verifiedOK=Η υπογÏαφή της επισÏναψης %S επαληθεÏτηκε επιτυχώς signature.verifyFailed=Η υπογÏαφή της επισÏναψης %S δεν μπόÏεσε να επαληθευτεί attachment.noMatchToSignature=Δεν μπόÏεσε να αντιστοιχισθεί η επισÏναψη '%S' σε αÏχείο υπογÏαφής attachment.noMatchFromSignature=Δεν μπόÏεσε να αντιστοιχισθεί το αÏχείο υπογÏαφής '%S' σε επισÏναψη keysToExport=Επιλέξτε τα κλειδιά OpenPGP που θα εισαχθοÏν keysToUse=Επιλέξτε κλειδί(ά) OpenPGP που θα χÏησιμοποιηθοÏν για το %S pubKey=Δημόσιο κλειδί για το %S\n windowLocked=Το παÏάθυÏο σÏνταξης είναι κλειδωμένο· η αποστολή ακυÏώθηκε sendUnencrypted=Η αÏχικοποίηση του Enigmail απέτυχε.\nΑποστολή του μηνÏματος χωÏίς κÏυπτογÏάφηση; composeSpecifyEmail=ΠαÏακαλώ καθοÏίστε την κÏÏια διεÏθυνση αλληλογÏαφίας σας, η οποία θα χÏησιμοποιηθεί για την επιλογή του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï…Ï€Î¿Î³Ïαφής των εξεÏχόμενων μηνυμάτων.\n Αν το αφήσετε κενό, θα χÏησιμοποιηθεί η διεÏθυνση αποστολέα για την επιλογή του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï…Ï€Î¿Î³Ïαφής. sendingHiddenRcpt=Το μήνυμα έχει κÏυφοÏÏ‚ (BCC) παÏαλήπτες. Αν κÏυπτογÏαφηθεί, είναι δυνατή η απόκÏυψη των κÏυφών παÏαληπτών, αλλά οι χÏήστες κάποιων Ï€ÏογÏαμμάτων (Ï€.χ. PGP Corp.) δε θα μποÏοÏν να αποκÏυπτογÏαφήσουν το μήνυμα. Κατόπιν αυτοÏ, σας συνιστοÏμε να μη χÏησιμοποιείτε κÏυφοÏÏ‚ παÏαλήπτες (BCC) σε κÏυπτογÏαφημένα μηνÏματα. sendWithHiddenBcc=ΑπόκÏυψη παÏαληπτών BCC sendWithShownBcc=Κανονική κÏυπτογÏάφηση sendingNews=Η αποστολή κÏυπτογÏαφημένου μηνÏματος ακυÏώθηκε.\n\nΤο μήνυμα δεν μποÏεί να κÏυπτογÏαφηθεί γιατί κάποιοι παÏαλήπτες είναι λίστες αλληλογÏαφίας. ΠαÏακαλώ στείλτε το μήνυμα χωÏίς κÏυπτογÏάφηση. sendToNewsWarning=ΠÏοειδοποίηση: Ï€Ïόκειται να στείλετε ένα κÏυπτογÏαφημένο μήνυμα σε μία ομάδα συζήτησης.\n\nΑυτό έχει νόημα μόνο αν όλοι οι συμμετέχοντες στην ομάδα συζήτησης μποÏοÏν να αποκÏυπτογÏαφήσουν το μήνυμα, δηλ. το μήνυμα θα Ï€Ïέπει να κÏυπτογÏαφηθεί με το κλειδί του κάθε μέλους της ομάδας. ΚÏυπτογÏαφήστε το μήνυμα μόνο αν ξέÏετε ακÏιβώς τι κάνετε..\n\nΣυνέχεια; hasHTML=ΠÏοειδοποίηση μηνÏματος HTML:\nΑυτό το μήνυμα πεÏιέχει HTML, που θα μποÏοÏσε να κάνει την υπογÏαφή/κÏυπτογÏάφησή του να αποτÏχει. Για να το αποφÏγετε στο μέλλον, θα Ï€Ïέπει να κÏατάτε πατημένο το πλήκτÏο SHIFT όταν κάνετε κλικ στο κουμπί ΣÏνταξη/Απάντηση για να αποστείλετε υπογεγÏαμμένα μηνÏματα.\nΑν το μήνυμα υπογÏάφεται εξ οÏισμοÏ, θα Ï€Ïέπει να απενεÏγοποιήσετε την επιλογή 'ΣÏνταξη μηνυμάτων σε μοÏφή HTML' για να μη χÏησιμοποιείται HTML για τα μηνÏματα Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… λογαÏιασμοÏ. strippingHTML=Το μήνυμα πεÏιέχει πληÏοφοÏίες μοÏφοποίησης HTML οι οποίες θα χαθοÏν κατά τη μετατÏοπή του σε απλό κείμενο για υπογÏαφή/κÏυπτογÏάφηση. Θέλετε να συνεχίσετε; msgCompose.button.sendAnyway=&Αποστολή του μηνÏματος όπως και να 'χει attachWarning=Οι επισυνάψεις Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος δεν είναι τοπικές, και για αυτό δεν μποÏοÏν να κÏυπτογÏαφηθοÏν. Για να τις κÏυπτογÏαφήσετε, αποθηκεÏστε τις ως τοπικά αÏχεία και επισυνάψτε αυτά τα αÏχεία. Θέλετε να συνεχίσετε; quotedPrintableWarn=Έχετε ενεÏγοποιήσει την κωδικοποίηση 'quoted-printable' για την αποστολή μηνυμάτων. Αυτό μποÏεί να οδηγήσει σε εσφαλμένη αποκÏυπτογÏάφηση και/ή επαλήθευση της υπογÏαφής του μηνÏματός σας.\n Θέλετε να απενεÏγοποιήσετε τη χÏήση της κωδικοποίησης 'quoted-printable'; minimalLineWrapping=Έχετε οÏίσει να γίνεται αναδίπλωση κειμένου στους %S χαÏακτήÏες. Για σωστή κÏυπτογÏάφηση και/ή υπογÏαφή, αυτή η τιμή θα Ï€Ïέπει να είναι τουλάχιστον 68.\nΘέλετε να αλλάξει η αναδίπλωση κειμένου στους 68 χαÏακτήÏες τώÏα; warning=ΠÏοειδοποίηση signIconClicked=Έχετε Ï„Ïοποποιήσει χειÏωνακτικά τις Ïυθμίσεις υπογÏαφής μηνυμάτων. Για αυτό το λόγο, κατά τη σÏνταξη Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος, η (απ)ενεÏγοποίηση της υπογÏαφής δεν εξαÏτάται πια από την (απ)ενεÏγοποίηση της κÏυπτογÏάφησης. pgpMime_sMime.dlg.text=Έχετε ενεÏγοποιήσει τα PGP/MIME και S/MIME ταυτόχÏονα. Δυστυχώς δεν είναι δυνατό να υποστηÏιχθοÏν ταυτόχÏονα και τα δÏο. ΠαÏακαλώ επιλέξτε ένα από τα δÏο pgpMime_sMime.dlg.pgpMime.button=ΧÏήςη &PGP/MIME pgpMime_sMime.dlg.sMime.button=ΧÏήση &S/MIME errorKeyUnusable=Η διεÏθυνση email ή το κλειδί '%S' δεν μπόÏεσαν να αντιστοιχισθοÏν σε ένα έγκυÏο κλειδί OpenPGP.\nΠαÏακαλώ επιβεβαιώστε ότι έχετε ένα έγκυÏο κλειδί OpenPGP, και ότι οι Ïυθμίσεις λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ δείχνουν σε αυτό. # note: should end with double newline: sendAborted=Η αποστολή ακυÏώθηκε.\n\n statPGPMIME=PGP/MIME statSigned=ΥΠΟΓΕΓΡΑΜΜΕÎΟ statEncrypted=ΚΡΥΠΤΟΓΡΑΦΗΜΕÎΟ statPlain=ΜΗ ΥΠΟΓΕΓΡΑΜΜΕÎΟ και ΜΗ ΚΡΥΠΤΟΓΡΑΦΗΜΕÎΟ offlineSave=Αποθήκευση του μηνÏματος %S ως %S στο φάκελο Μη απεσταλμένης αλληλογÏαφίας; onlineSend=Αποστολή του μηνÏματος %S στον %S; encryptKeysNote=Σημείωση: το μήνυμα κÏυπτογÏαφήθηκε με τα ακόλουθα ID χÏήστη / κλειδιά: %S signFailed=Σφάλμα του Enigmail. Η κÏυπτογÏάφηση/υπογÏαφή απέτυχε. Îα αποσταλεί χωÏίς κÏυπτογÏάφηση; msgCompose.button.sendUnencrypted=&Αποστολή μη κÏυπτογÏαφημένου μηνÏματος recipientsSelectionHdr=Επιλέξτε παÏαλήπτες για κÏυπτογÏάφηση configureNow=Δεν έχετε Ïυθμίσει ακόμα το Enigmail για αυτήν την ταυτότητα. Θέλετε να το κάνετε τώÏα; # should not be used anymore: encryptYes=Το μήνυμα θα κÏυπτογÏαφηθεί encryptNo=Το μήνυμα δε θα κÏυπτογÏαφηθεί # should not be used anymore: signYes=Το μήνυμα θα υπογÏαφεί signNo=Το μήνυμα δε θα υπογÏαφεί rulesConflict=Εντοπίστηκαν αλληλοσυγκÏουόμενοι κανόνες παÏαληπτών\n%S\n\nÎα σταλθεί το μήνυμα με αυτές τις παÏαμέτÏους; msgCompose.button.configure=&ΡÏθμιση msgCompose.button.send=&Αποστολή μηνÏματος msgCompose.button.save=Α&ποθήκευση μηνÏματος # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Απαιτείται το δημόσιο κλειδί %S για την επαλήθευση της υπογÏαφής clickDecrypt=· κάντε κλικ στο κουμπί ΑποκÏ/φηση clickDecryptRetry=· κάντε κλικ στο κουμπί ΑποκÏ/φηση για να ξαναδοκιμάσετε msgPart=Τμήμα του μηνÏματος %S msgSigned=υπογεγÏαμμένο msgEncrypted=κÏυπτογÏαφημένο msgSignedAndEnc=υπογεγÏαμμένο και κÏυπτογÏαφημένο unverifiedSig=Μη επαληθεÏσιμη υπογÏαφή incompleteDecrypt=Η αποκÏυπτογÏάφηση είναι ημιτελής needKey=Σφάλμα - απαιτείται ιδιωτικό κλειδί για την αποκÏυπτογÏάφηση του μηνÏματος failedDecrypt=Σφάλμα - η αποκÏυπτογÏάφηση απέτυχε badPhrase=Σφάλμα - κακή δÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï failedDecryptVerify=Σφάλμα - η αποκÏυπτογÏάφηση/επαλήθευση απέτυχε viewInfo=· ΠÏοβολή > ΠληÏοφοÏίες ασφαλείας μηνÏματος decryptedMsg=ΑποκÏυπτογÏαφημένο μήνυμα locateGpg=Εντοπισμός του Ï€ÏογÏάμματος GnuPG invalidGpgPath=Το GnuPG δεν μποÏεί να εκτελεστεί με τη διαδÏομή που δόθηκε. Για αυτό το λόγο το Enigmail θα είναι απενεÏγοποιημένο μέχÏι να δώσετε τη σωστή διαδÏομή ή να επανεκκινήσετε την εφαÏμογή. warningsAreReset=Όλες οι Ï€Ïοειδοποιήσεις επανήλθαν στην Ï€ÏοκαθοÏισμένη τους κατάσταση. prefs.gpgFound=Το GnuPG βÏέθηκε στο %S prefs.gpgNotFound=Το GnuPG δε βÏέθηκε prefs.warnAskNever=ΠÏοειδοποίηση: η ενεÏγοποίηση αυτής της επιλογής θα οδηγήσει σε αποστολή μη κÏυπτογÏαφημένων μηνυμάτων χωÏίς να εμφανίζεται καμία απολÏτως πληÏοφοÏία, όταν δεν υπάÏχει το κλειδί κάποιου από τους παÏαλήπτες -- το Enigmail δε θα σας πληÏοφοÏεί όταν συμβαίνει αυτό! prefs.warnIdleTimeForUnknownAgent=Το σÏστημά σας χÏησιμοποιεί ένα εξειδικευμένο εÏγαλείο για διαχείÏιση κωδικών, όπως το gnome-keyring ή το seahorse-agent. Δυστυχώς το Enigmail δεν μποÏεί να ελέγξει το χÏονικό ÏŒÏιο λήξης ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î³Î¹Î± αυτό το εÏγαλείο. Συνεπώς, οι αντίστοιχες Ïυθμίσεις χÏονικών οÏίων στο Enigmail αγνοÏνται. prefEnigmail.oneKeyserverOnly=Σφάλμα - μποÏείτε να οÏίσετε μόνο ένα εξυπηÏετητή κλειδιών για την αυτόματη λήψη των OpenPGP κλειδιών που λείπουν. enterAdminPin=ΠαÏακαλώ πληκτÏολογήστε το PIN ΔΙΑΧΕΙΡΙΣΤΗ της SmartCard σας enterCardPin=ΠαÏακαλώ πληκτÏολογήστε το PIN της SmartCard σας notInit=Σφάλμα - Η υπηÏεσία Enigmail δεν έχει αÏχικοποιηθεί ακόμα badCommand=Σφάλμα - η εντολή κÏυπτογÏάφησης απέτυχε cmdLine=γÏαμμή εντολών και έξοδος: notRequired=Σφάλμα - δε χÏειάζεται κÏυπτογÏάφηση notComplete=Σφάλμα - η δημιουÏγία κλειδιών δεν έχει ολοκληÏωθεί ακόμα invalidEmail=Σφάλμα - μη έγκυÏη διεÏθυνση(εις) αλληλογÏαφίας noPassphrase=Σφάλμα - δε δόθηκε φÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï noPGPblock=Σφάλμα - Δε βÏέθηκε έγκυÏο μπλοκ δεδομένων armored OpenPGP unverifiedReply=Η απάντηση δεν επαληθεÏθηκε sigMismatch=Σφάλμα - Η υπογÏαφή δεν ταιÏιάζει cantImport=Σφάλμα εισαγωγής δημόσιου κλειδιοÏ\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Η SmartCard %S που βÏέθηκε στη συσκευή ανάγνωσης δε μποÏεί να χÏησιμοποιηθεί για την επεξεÏγασία του μηνÏματος.\nΠαÏακαλώ εισάγετε την SmartCard %S και ξαναδοκιμάστε. sc.insertCard=Για τη λειτουÏγία απαιτείται η SmartCard %S.\nΠαÏακαλώ εισάγετε την απαιτοÏμενη SmartCard και ξαναδοκιμάστε. sc.removeCard=Για τη λειτουÏγία δε χÏειάζεται να υπάÏχει κάποια SmartCard στη συσκευή ανάγνωσης.\nΠαÏακαλώ αφαιÏέστε τη SmartCard και ξαναδοκιμάστε. sc.noCardAvailable=Δε βÏέθηκε SmartCard στη συσκευή ανάγνωσης της\nΠαÏακαλώ εισάγετε την SmartCard σας και ξαναδοκιμάστε. sc.noReaderAvailable=Η συσκευή ανάγνωσης SmartCard δεν μπόÏεσε να Ï€Ïοσπελασθεί.\nΠαÏακαλώ συνδέστε τη συσκευή, εισάγετε την κάÏτα σας, και ξαναδοκιμάστε. gpgNotFound=ΑδÏνατος ο εντοπισμός του Ï€ÏογÏάμματος GnuPG '%S'.\nΣιγουÏευτείτε ότι έχετε οÏίσει σωστά τη διαδÏομή του εκτελέσιμου του GnuPG στις Ï€Ïοτιμήσεις του Enigmail. gpgNotInPath=ΑδÏνατος ο εντοπισμός του εκτελέσιμου του GnuPG στο PATH.\nΣιγουÏευτείτε ότι έχετε οÏίσει σωστά τη διαδÏομή του εκτελέσιμου του GnuPG στις Ï€Ïοτιμήσεις του Enigmail. gpgAgentNotStarted=ΑδÏνατη η εκκίνηση του Ï€ÏογÏάμματος gpg-agent, το οποίο χÏειάζεται για την έκδοση %S του GnuPG. prefUntrusted=ΜΗ ΕΜΠΙΣΤΟ prefRevoked=ΑÎΑΚΛΗΘΗΚΕ prefExpiredKey=ΛΗΓΜΕÎΟ ΚΛΕΙΔΙ prefExpired=ΕΛΗΞΕ prefGood=ΈγκυÏη υπογÏαφή από %S prefBad=ΜΗ έγκυÏη υπογÏαφή από %S failCancel=Σφάλμα - Η λήψη του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±ÎºÏ…Ïώθηκε από το χÏήση failNoServer=Σφάλμα - Δεν καθοÏίστηκε εξυπηÏετητής κλειδιών για χÏήση failNoID=Σφάλμα - Δεν καθοÏίστηκε ID για τη λήψη του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï failKeyExtract=Σφάλμα - η εντολή εξαγωγής του κλειδιών απέτυχε notFirstBlock=Σφάλμα - Το Ï€Ïώτο μπλοκ OpenPGP δεν είναι μπλοκ δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï importKeyConfirm=Îα εισαχθοÏν τα δημόσια κλειδιά που υπάÏχουν στο μήνυμα; failKeyImport=Σφάλμα - η εισαγωγή κλειδιών απέτυχε fileWriteFailed=Απέτυχε η έγγÏαφη στο αÏχείο %S importKey=Εισαγωγή του δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï %S από τον εξυπηÏετητή κλειδιών: uploadKey=Αποστολή του δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï %S στον εξυπηÏετητή κλειδιών: keyId=ID ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keyAndSigDate=ID κλειδιοÏ: 0x%S / ΥπογεγÏαμμένο την: %S keyFpr=ΑποτÏπωμα κλειδιοÏ: %S noEmailProvided=Δε δώσατε διεÏθυνση αλληλογÏαφίας! keyAlreadySigned=Το κλειδί έχει ήδη υπογÏαφεί, δεν μποÏείτε να το υπογÏάψετε ξανά. gnupg.invalidKey.desc=Το κλειδί %S δεν βÏέθηκε ή είναι άκυÏο. Το (υπο-)κλειδί μποÏεί να έχει λήξει. selKeyExpired=έληξε %S createdHeader=ΔημιουÏγήθηκε atLeastOneKey=Δεν επιλέχθηκε κλειδί! ΠÏέπει να επιλέξετε τουλάχιστον ένα κλειδί για να συνεχίσετε fewerKeysThanRecipients=Έχετε επιλέξει λιγότεÏα κλειδιά από τους παÏαλήπτες. Είστε σίγουÏοι ότι η λίστα με τα κλειδιά κÏυπτογÏάφησης είναι πλήÏης; userSel.button.goBack=Επιλογή πεÏισσότεÏων κλειδιών userSel.secretKeySel.title=Επιλογή ενός Î¹Î´Î¹Ï‰Ï„Î¹ÎºÎ¿Ï ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP για κÏυπτογÏάφηση των μηνυμάτων σας # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Σημείωση: Το PGP/MIME υποστηÏίζεται από πεÏιοÏισμένο αÏιθμό πελατών ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου! Στα Windows μόνο οι Mozilla/Thunderbird, Sylpheed, Pegasus και Mulberry υποστηÏίζουν αυτό το Ï€Ïότυπο· στο Linux/UNIX και στο Mac OS X το υποστηÏίζουν οι πεÏισσότεÏοι δημοφιλείς πελάτες ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου. Αν δεν είστε σίγουÏοι, ενεÏγοποιήστε την επιλογή %S. first=Ï€Ïώτο second=δεÏτεÏο # Strings used in am-enigprefs.js encryptKeyHeader=Επιλέξτε κλειδί OpenPGP για την κÏυπτογÏάφηση identityName=Ταυτότητα: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=ΕνεÏγοποιήσατε την κÏυπτογÏάφηση, αλλά δεν επιλέξατε κλειδί. Για να αποστέλλονται κÏυπτογÏαφημένα μηνÏματα στον παÏαλήπτη(ες) %S, Ï€Ïέπει να οÏίσετε ένα ή πεÏισσότεÏα έγκυÏα κλειδιά για χÏήση από τη λίστα των κλειδιών σας. Θέλετε να απενεÏγοποιήσετε την κÏυπτογÏάφηση για τον παÏαλήπτη(ες) %S; noKeyToUse=(κανένα - χωÏίς κÏυπτογÏάφηση) noEmptyRule=Ο κανόνας δεν μποÏεί να είναι κενός! ΠαÏακαλώ οÏίστε μία διεÏθυνση αλληλογÏαφίας στο πεδίο του κανόνα. invalidAddress=Η διεÏθυνση(εις) αλληλογÏαφίας που δώσατε δεν είναι έγκυÏη. Δεν Ï€Ïέπει να χÏησιμοποιήσετε τα ονόματα των παÏαληπτών, αλλά τις διευθÏνσεις αλληλογÏαφίας τους. Π.χ.:\nΜη έγκυÏη: Κάποιο Όνομα \nΈγκυÏη: some.name@address.net noCurlyBrackets=Οι αγκÏλες {} έχουν ειδικό νόημα και δε θα Ï€Ïέπει να χÏησιμοποιοÏνται σε διευθÏνσεις αλληλογÏαφίας. Αν θέλετε να Ï„Ïοποποιήσετε τη συμπεÏιφοÏά ταιÏιάσματος Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κανόνα, χÏησιμοποιήστε την επιλογή 'ΕφαÏμογή κανόνα αν ο παÏαλήπτης...'.\nΠεÏισσότεÏες πληÏοφοÏίες είναι διαθέσιμες από το κουμπί Βοήθεια. # Strings used in enigmailRulesEditor.js never=Ποτέ always=Πάντα possible=Πιθανή deleteRule=Îα διαγÏαφεί ο επιλεγμένος κανόνας; nextRcpt=(Επόμενος παÏαλήπτης) negateRule=Δεν addKeyToRule=ΠÏοσθήκη ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï %S (%S) σε κανόνα παÏαληπτών # Strings used in enigmailSearchKey.js needOnline=Η λειτουÏγία που επιλέξατε δεν είναι διαθέσιμη όταν είστε χωÏίς σÏνδεση. ΠαÏακαλώ συνδεθείτε και ξαναδοκιμάστε. protocolNotSupported=Το Ï€Ïωτόκολλο '%S://' που έχετε επιλέξει δεν υποστηÏίζεται για τη λήψη κλειδιών OpenPGP. gpgkeysDisabled=Ίσως βοηθήσει αν ενεÏγοποιήσετε την επιλογή 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=ΑδÏνατη η σÏνδεση στον εξυπηÏετητή κλειδιών %S. keyDownloadFailed=Η λήψη του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€ÏŒ τον εξυπηÏετητή κλειδιών απέτυχε. Μήνυμα κατάστασης:\n%S internalError=ΠαÏουσιάστηκε ένα εσωτεÏικό σφάλμα. Η λήψη ή εισαγωγή των κλειδιών είναι αδÏνατη. noKeyFound=Δε βÏέθηκε κανένα κλειδί που να ταιÏιάζει στα κÏιτήÏια αναζήτησης.\nΠαÏακαλώ σημειώστε ότι το ID των κλειδιών Ï€Ïέπει να αÏχίζει με \\"0x\\" (Ï€.χ. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Η αναζήτηση ή λήψη ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€ÏŒ τον εξυπηÏετητή κλειδιών απέτυχε: αδÏνατη η εκτέλεση της εντολής gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Ο οÏισμός της εμπιστοσÏνης απέτυχε # Strings in enigmailSignKeyDlg.js signKeyFailed=Η υπογÏαφή του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€Î­Ï„Ï…Ï‡Îµ alreadySigned.label=Σημείωση: το κλειδί %S έχει ήδη υπογÏαφεί με το επιλεγμένο ιδιωτικό κλειδί. # Strings in enigmailKeyManager.js keyMan.loadingKeys=ΦόÏτωση κλειδιών, παÏακαλώ πεÏιμένετε... keyValid.unknown=άγνωστο keyValid.invalid=μη έγκυÏο keyValid.disabled=απενεÏγοποιήθηκε keyValid.revoked=ανακλήθηκε keyValid.expired=έληξε keyValid.noSubkey=χωÏίς έγκυÏο υποκλειδί keyTrust.untrusted=μη έμπιστο keyTrust.marginal=οÏιακά keyTrust.full=έμπιστο keyTrust.ultimate=απόλυτα keyTrust.group=(ομάδα) keyType.public=δημ keyType.publicAndSec=δημ/ιδ keyMan.enableKey=ΕνεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keyMan.disableKey=ΑπενεÏγοποίηση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï userAtt.photo=Εικόνα χÏήστη (αÏχείο JPEG) asciiArmorFile=ΑÏχεία ASCII Armored (*.asc) importKeyFile=Εισαγωγή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP gnupgFile=ΑÏχεία GnuPG saveRevokeCertAs=ΔημιουÏγία & αποθήκευση Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¹Î·Ï„Î¹ÎºÎ¿Ï Î±Î½Î¬ÎºÎ»Î·ÏƒÎ·Ï‚ revokeCertOK=Το πιστοποιητικό ανάκλησης δημιουÏγήθηκε με επιτυχία. Αυτό το πιστοποιητικό μποÏεί να χÏησιμοποιηθεί για να ακυÏώσει το κλειδί σας, αν για παÏάδειγμα το ιδιωτικό κλειδί σας χαθεί ή γίνει γνωστό σε κάποιον άλλον. \n\nΜεταφέÏετέ το σε ένα αποθηκευτικό μέσο Ï€.χ. CD ή δισκέτα, και φυλάξτε το σε ασφαλές μέÏος. Αν κάποιος αποκτήσει Ï€Ïόσβαση σε αυτό το πιστοποιητικό μποÏεί να αχÏηστεÏσει το κλειδί σας. revokeCertFailed=Δεν είναι δυνατή η δημιουÏγία του Ï€Î¹ÏƒÏ„Î¿Ï€Î¿Î¹Î·Ï„Î¹ÎºÎ¿Ï Î±Î½Î¬ÎºÎ»Î·ÏƒÎ·Ï‚. addUidOK=Το ID χÏήστη Ï€Ïοστέθηκε με επιτυχία addUidFailed=Η Ï€Ïοσθήκη του ID χÏήστη απέτυχε noKeySelected=ΠÏέπει να επιλέξετε ένα τουλάχιστον κλειδί για να εκτελεστεί η επιλεγμένη λειτουÏγία exportToFile=Εξαγωγή δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÎµ αÏχείο exportSecretKey=Θέλετε να πεÏιληφθεί το ιδιωτικό κλειδί στο αποθηκευμένο αÏχείο ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP; saveKeysOK=Τα κλειδιά αποθηκεÏτηκαν με επιτυχία saveKeysFailed=Η αποθήκευση των κλειδιών απέτυχε importKeysFailed=Η εισαγωγή των κλειδιών απέτυχε enableKeyFailed=Η ενεÏγοποίηση/απενεÏγοποίηση των κλειδιών απέτυχε specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Εξαγωγηθέντα-δημόσια-κλειδιά defaultPubSecKeyFilename=Εξαγωγηθέντα-δημόσια-και-ιδιωτικά-κλειδιά noSecretKeys=Δε βÏέθηκαν ιδιωτικά κλειδιά.\n\nΘέλετε να δημιουÏγήσετε ένα τώÏα; sendKeysOk=Το κλειδί(ά) απεστάλη με επιτυχία sendKeysFailed=Η αποστολή των κλειδιών απέτυχε receiveKeysOk=Τα κλειδιά ανανεώθηκαν με επιτυχία receiveKeysFailed=Η λήψη των κλειδιών απέτυχε importFromClip=Θέλετε να εισάγετε κάποια κλειδιά από το Ï€ÏόχειÏο; copyToClipbrdFailed=ΑδÏνατη η αντιγÏαφή των επιλεγμένων κλειδιών στο Ï€ÏόχειÏο. copyToClipbrdOK=Τα κλειδιά αντιγÏάφηκαν στο Ï€ÏόχειÏο deleteSecretKey=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΠÏόκειται να διαγÏάψετε ένα ιδιωτικό κλειδί!\nΑν διαγÏάψετε το ιδιωτικό κλειδί σας, δε θα μποÏείτε πια να αποκÏυπτογÏαφήσετε κανένα μήνυμα που κÏυπτογÏαφήθηκε για αυτό το κλειδί.\n\nΘέλετε Ï€Ïαγματικά να διαγÏάψετε αυτά τα ΔΥΟ κλειδιά (το ιδιωτικό και το δημόσιο)\n'%S'; deleteMix=WARNING: ΠÏόκειται να διαγÏάψετε ιδιωτικά κλειδιά!\nΑν διαγÏάψετε το ιδιωτικό κλειδί σας, δε θα μποÏείτε πια να αποκÏυπτογÏαφήσετε κανένα μήνυμα που κÏυπτογÏαφήθηκε για αυτό το κλειδί.\n\nΘέλετε Ï€Ïαγματικά να διαγÏάψετε αυτά τα ΖΕΥΓΗ κλειδιών (τα ιδιωτικά και τα δημόσια); deletePubKey=Θέλετε να διαγÏάψετε το δημόσιο κλειδί\n'%S'; deleteSelectedPubKey=Θέλετε να διαγÏάψετε τα δημόσια κλειδιά; deleteKeyFailed=Το κλειδί δεν μπόÏεσε να διαγÏαφεί. revokeKeyOk=Το κλειδί ανακλήθηκε. Αν το κλειδί σας υπάÏχει σε κάποιο εξυπηÏετητή κλειδιών, θα Ï€Ïέπει να το αποστείλετε και πάλι, ώστε να γίνει γνωστή η ανάκληση. revokeKeyFailed=Το κλειδί δεν μπόÏεσε να ανακληθεί. refreshAllQuestion=Δεν επιλέξατε κανένα κλειδί. Θέλετε να ανανεωθοÏν ΟΛΑ τα κλειδιά; refreshKey.warn=ΠÏοειδοποίηση: ανάλογα με τον αÏιθμό των κλειδιών και την ταχÏτητα σÏνδεσης, η ανανέωση όλων των κλειδιών μποÏεί να είμαι μια Ï€Î¿Î»Ï Ï‡ÏονοβόÏα διαδικασία!\n\nΣυνέχεια; downloadContactsKeys.warn=ΠÏοειδοποίηση: ανάλογα με τον αÏιθμώ των επαφών και την ταχÏτητα του δικτÏου, η λήψη όλων των κλειδιών μποÏεί να είναι χÏονοβόÏα! keyMan.button.exportSecKey=Ε&ξαγωγή ιδιωτικών κλειδιών keyMan.button.exportPubKey=Εξαγωγή μονάχα &Public ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keyMan.button.import=Ε&ισαγωγή keyMan.button.refreshAll=&Ανανέωση όλων των κλειδιών keyMan.button.revokeKey=Ανάκ&ληση ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï keylist.noOtherUids=Δεν υπάÏχουν άλλες ταυτότητες keylist.hasOtherUids=Γνωστός και ως keylist.noPhotos=Δεν υπάÏχει διαθέσιμη φωτογÏαφία keylist.hasPhotos=ΦωτογÏαφίες keyMan.addphoto.filepicker.title=Επιλέξτε αÏχείο εικόνας keyMan.addphoto.warnLargeFile=Το αÏχείο που επιλέξατε είναι μεγαλÏτεÏο από 25 kB.\nΔεν Ï€Ïοτείνετε να επιλέγετε Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î± αÏχεία καθώς το μέγεθος των κλειδιών θα αυξηθεί δÏαματικά. keyMan.addphoto.noJpegFile=Το επιλεγμένο αÏχείο δεν είναι σε μοÏφή JPEG. ΠαÏακαλώ επιλέξτε ένα άλλο αÏχείο. keyMan.addphoto.failed=Δεν ήταν δυνατό να Ï€Ïοστεθεί η εικόνα. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Η αλλαγή του κÏÏιου ID χÏήστη απέτυχε changePrimUidOK=Το κÏÏιο ID χÏήστη άλλαξε με επιτυχία deleteUidFailed=Η διαγÏαφή του ID χÏήστη %S απέτυχε deleteUidOK=Το ID χÏήστη %S διαγÏάφηκε με επιτυχία revokeUidFailed=Η ανάκληση του ID χÏήστη %S απέτυχε revokeUidOK=Το ID χÏήστη %S ανακλήθηκε με επιτυχία. Αν το κλειδί σας υπάÏχει σε κάποιο εξυπηÏετητή κλειδιών, θα Ï€Ïέπει να το αποστείλετε και πάλι, ώστε να γίνει γνωστή η ανάκληση. revokeUidQuestion=Θέλετε Ï€Ïαγματικά να ανακαλέσετε το ID χÏήστη %S; deleteUidQuestion=Θέλετε Ï€Ïαγματικά να διαγÏάψετε το ID χÏήστη %S;\n\nΠαÏακαλώ σημειώστε: αν έχετε αποστείλει το δημόσιο κλειδί σας σε έναν εξυπηÏετητή κλειδιών, διαγÏάφοντας το ID χÏήστη δε θα αλλάξει τίποτα. Σε αυτήν την πεÏίπτωση θα Ï€Ïέπει να χÏησιμοποιήσετε το 'Ανάκληση ID χÏήστη'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=δημόσιο κλειδί keyTypePrimary=Ï€ÏωτεÏον κλειδί keyTypeSubkey=υποκλειδί keyTypePair=ζεÏγος κλειδιών keyExpiryNever=ποτέ keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=ΚÏυπτογÏάφηση keyUsageSign=ΥπογÏαφή keyUsageCertify=Πιστοποίηση keyUsageAuthentication=Ταυτοποίηση # Strings in enigmailGenCardKey.xul keygen.started=ΠαÏακαλώ πεÏιμένετε να ολοκληÏωθεί ή δημιουÏγία του κλειδιοÏ.... keygen.completed=Το κλειδί δημιουÏγήθηκε. Το νέο ID ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÎµÎ¯Î½Î±Î¹: 0x%S keygen.keyBackup=Το αντίγÏαφο ασφαλείας του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Î±Ï€Î¿Î¸Î·ÎºÎµÏτηκε ως %S keygen.passRequired=ΠαÏακαλώ δώστε μια φÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Î±Î½ θέλετε να αποθηκευτεί ένα αντίγÏαφο ασφαλείας του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÎ±Ï‚ εκτός της SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Τα PIN που δώσατε δεν ταιÏιάζουν. ΠαÏακαλώ ξαναδοκιμάστε cardPin.minLength=Το PIN Ï€Ïέπει να έχει τουλάχιστον %S χαÏακτήÏες ή αÏιθμοÏÏ‚ cardPin.processFailed=Η αλλαγή του PIN απέτυχε # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Ανανέωση κλειδιών, παÏακαλώ πεÏιμένετε... keyserverProgress.uploading=Αποστολή κλειδιών, παÏακαλώ πεÏιμένετε... keyserverTitle.refreshing=Ανανέωση κλειδιών keyserverTitle.uploading=Αποστολή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï # Strings in enigmailSetupWizard passphrase.min8keys=Η φÏάση ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÏƒÎ±Ï‚ θα Ï€Ïέπει να αποτελείται από τουλάχιστον 8 χαÏακτήÏες! setupWizard.reallyCancel=Θέλετε Ï€Ïαγματικά να τεÏματίσετε το Μάγο του Enigmail; setupWizard.invalidGpg=Το αÏχείο που επιλέξατε δεν είναι εκτελέσιμο του GnuPG. ΠαÏακαλώ επιλέξτε διαφοÏετικό αÏχείο. setupWizard.specifyFile=ΠÏέπει να οÏίσετε τουλάχιστον ένα δημόσιο κλειδί για να συνεχίσετε. setupWizard.installFailed=Η εγκατάσταση δεν ήταν επιτυχής. ΠαÏακαλώ ξαναπÏοσπαθήστε ή εγκαταστήστε το GnuPG χειÏοκίνητα και εντοπίστε το από το Browse button. setupWizard.downloadForbidden=Για δική σας ασφάλεια, δεν θα γίνει λήψη του GnuPG. ΠαÏακαλώ επισκευθείτε το http://www.gnupg.org/ για να λάβετε το GnuPG. setupWizard.downloadImpossible=Δεν ήταν δυνατή η λήψη του GnuPG. ΠαÏακαλώ Ï€Ïοσπαθήστε αÏγότεÏα ή επισκευθείτε το http://www.gnupg.org/ για να λάβετε το GnuPG. setupWizard.hashSumError=Δεν ήταν δυνατή η επαλήθευση της ακεÏαιότητας του αÏχείου. Το αÏχείο μποÏεί να είναι εσφαλμένο ή επεξεÏγασμένο. Θέλετε να συνεχίσετε την εγκατάσταση παÏ'ολ'αυτά; # Strings in installGnuPG.jsm installGnuPG.downloadFailed=ΠÏοέκυψε Ï€Ïόβλημα στην λήψη του GnuPG. ΠαÏακαλώ ελέγξτε τη καταγÏαφή κονσόλας για πεÏισσότεÏες πληÏοφοÏίες. installGnuPG.installFailed=ΠÏοέκυψε Ï€Ïόβλημα στην εγκατάσταση του GnuPG. ΠαÏακαλώ ελέγξτε τη καταγÏαφή κονσόλας για πεÏισσότεÏες πληÏοφοÏίες. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=ΠÏέπει να συμπληÏώσετε το όνομα και τη διεÏθυνση email addUidDlg.nameMinLengthError=Το όνομα Ï€Ïέπει να έχει τουλάχιστον 5 χαÏακτήÏες addUidDlg.invalidEmailError=ΠÏέπει να εισάγετε μια έγκυÏη διεÏθυνση email addUidDlg.commentError=Η χÏήση αγκυλών δεν επιτÏέπεται στα σχόλια # network error types errorType.SecurityCertificate=Το πιστοποιητικό ασφαλείας της υπηÏεσίας web είναι άκυÏο. errorType.SecurityProtocol=Το Ï€Ïωτόκολλο ασφάλειας που χÏησιμοποιείται από την υπηÏεσία web είναι άγνωστο. errorType.Network=ΠÏοέκυψε Ï€Ïόβλημα δικτÏου. enigmail/lang/el/help/000077500000000000000000000000001266701624400151245ustar00rootroot00000000000000enigmail/lang/el/help/compose.html000066400000000000000000000154541266701624400174700ustar00rootroot00000000000000 Βοήθεια του Enigmail: ΣÏνταξη μηνυμάτων

Βοήθεια του Enigmail

ΧÏήση του Enigmail στη σÏνταξη μηνυμάτων

  • ÎœÎµÎ½Î¿Ï Ï„Î¿Ï… Enigmail στο παÏάθυÏο ΣÏνταξης μηνÏματος
    • ΥπογÏαφή μηνÏματος: ΕνεÏγοποίηση/ΑπενεÏγοποίηση της αποστολής υπογεγÏαμμένων μηνυμάτων. Ο χÏήστης θα ειδοποιηθεί αν η υπογÏαφή αποτÏχει.
    • ΚÏυπτογÏάφηση μηνÏματος: ΕνεÏγοποίηση/ΑπενεÏγοποίηση της κÏυπτογÏάφησης για όλους τους παÏαλήπτες Ï€Ïιν την αποστολή. Ο χÏήστης θα ειδοποιηθεί αν η κÏυπτογÏάφηση αποτÏχει.

      Αν έχει ενεÏγοποιηθεί η επιλογή Εμφάνιση επιλογών όταν είναι απαÏαίτητο στην καÏτέλα ΠÏοτιμήσεις -> Επιλογή κλειδιοÏ, και υπάÏχουν διευθÏνσεις στη λίστα παÏαληπτών για τις οποίες δεν υπάÏχει δημόσιο κλειδί, θα εμφανιστεί η λίστα κλειδιών για να επιλέξετε αυτό που θα χÏησιμοποιηθεί.

      Αν έχει ενεÏγοποιηθεί η επιλογή Îα μην εμφανίζεται ποτέ ο διάλογος επιλογής κλειδί OpenPGP στην καÏτέλα ΠÏοτιμήσεις -> Επιλογή κλειδιοÏ, και υπάÏχουν διευθÏνσεις στη λίστα παÏαληπτών για τις οποίες δεν υπάÏχει δημόσιο κλειδί, το μήνυμα θα αποσταλεί χωÏίς κÏυπτογÏάφηση.

  • ΧÏήση PGP/MIME για αυτό το μήνυμα: ΕνεÏγοποίηση/ΑπενεÏγοποίηση της χÏήσης PGP/MIME για αυτό το μήνυμα.

    Αν γνωÏίζετε ότι οι παÏαλήπτες του μηνÏματός σας μποÏοÏν να διαβάσουν μηνÏματα που χÏησιμοποιοÏν PGP/MIME, καλό είναι να το ενεÏγοποιήσετε.

    Αυτό το χαÏακτηÏιστικό εξαÏτάται από το αν έχετε ενεÏγοποιήσει μία από τις επιλογές ΕπιτÏέπεται η χÏήση PGP/MIME ή Îα χÏησιμοποιείται πάντα PGP/MIME, στην καÏτέλα ΠÏοτιμήσεις -> PGP/MIME.

  • ΠÏοκαθοÏισμένες επιλογές σÏνταξης: ΥπομενοÏ.
    • Επιλογές υπογÏαφής/κÏυπτογÏάφησης...: συντόμευση Ï€Ïος το Ρυθμίσεις λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï -> Επιλογές OpenPGP.
    • Επιλογές αποστολής...: συντόμευση Ï€Ïος την καÏτέλα ΠÏοτιμήσεις -> Βασικές Ïυθμίσεις.
    • Ρυθμίσεις επιλογής κλειδιοÏ...: συντόμευση Ï€Ïος την καÏτέλα ΠÏοτιμήσεις -> Επιλογή κλειδιοÏ.
    • Επιλογές PGP/MIME...: συντόμευση Ï€Ïος την καÏτέλα ΠÏοτιμήσεις -> PGP/MIME.
  • ΑφαίÏεση κÏυπτογÏάφησης: Αν παÏουσιαστεί κάποιο σφάλμα κατά την αποστολή του μηνÏματος, Ï€.χ. ο διακομιστής POP δεν αποδεχτεί την αίτηση, το Enigmail δεν έχει Ï„Ïόπο να το ανιχνεÏσει, και το κÏυπτογÏαφημένο μήνυμα θα εξακολουθήσει να εμφανίζεται στο παÏάθυÏο ΣÏνταξης. Σε αυτήν την πεÏίπτωση μποÏείτε να ανακτήσετε το αÏχικό σας κείμενο (χωÏίς την υπογÏαφή/κÏυπτογÏάφηση) με τη χÏήση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μενοÏ.
    Ως λÏση ανάγκης, αυτή η επιλογή μποÏεί να χÏησιμοποιηθεί για την αποκÏυπτογÏάφηση του κειμένου σε παÏάθεση, όταν απαντάτε σε κÏυπτογÏαφημένα μηνÏματα. Το Enigmail θα Ï€Ïέπει να αποκÏυπτογÏαφήσει αυτόματα το αÏχικό μήνυμα, αλλά αν για κάποιο λόγο αυτό δε συμβεί, μποÏείτε να το κάνετε εσείς με τη χÏήση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μενοÏ.
  • ΕπισÏναψη δημόσιου κλειδιοÏ: εισάγει το μπλοκ του δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÎµ μοÏφή ASCII-armored στην Ï„Ïέχουσα θέση του δÏομέα στο παÏάθυÏο ΣÏνταξης. Θα σας ζητηθοÏν οι διευθÏνσεις αλληλογÏαφίας του κλειδιοÏ/ών που θα εισαχθεί. Κλειδιά που εισήχθησαν με αυτόν τον Ï„Ïόπο θα αναγνωÏιστοÏν αυτόματα από το Enigmail του παÏαλήπτη. Μετά την εισαγωγή, μποÏείτε να υπογÏάψετε/κÏυπτογÏαφήσετε το μήνυμα ανάλογα με τις ανάγκες σας. Επίσης, δε θα Ï€Ïέπει να εισάγετε πολλαπλά μπλοκ κλειδιών σε ένα μήνυμα· απλώς καθοÏίστε πολλαπλές διευθÏνσεις αλληλογÏαφίας, χωÏισμένες με κόμμα, όταν σας ζητηθεί.
  • ΕκκαθάÏιση αποθηκευμένης φÏάσης Ï€Ïόσβασης: ΧÏήσιμο αν έχετε πολλαπλές φÏάσης Ï€Ïόσβασης.
  • Βοήθεια: Εμφανίζει τη Βοήθεια από το δικτυακό τόπο (αυτή η σελίδα).

ΠεÏισσότεÏη βοήθεια είναι διαθέσιμη στο δικτυακό τόπο του Enigmail

enigmail/lang/el/help/editRcptRule.html000066400000000000000000000210741266701624400204240ustar00rootroot00000000000000 Βοήθεια του Enigmail: ΕπεξεÏγασία κανόνων OpenPGP

Βοήθεια του Enigmail

ΧÏήση του ΕπεξεÏγαστή κανόνων του Enigmail: ΕπεξεÏγασία κανόνων OpenPGP

Στον ΕπεξεÏγαστή κανόνων, μποÏείτε να καθοÏίσετε τις Ï€ÏοκαθοÏισμένες επιλογές για κάθε παÏαλήπτη για την ενεÏγοποίηση της κÏυπτογÏάφησης, υπογÏαφής και χÏήση PGP/MIME, και να επιλέξετε τα κλειδιά OpenPGP που θα χÏησιμοποιηθοÏν. Σε αυτόν το διάλογο μποÏείτε να καθοÏίσετε τους κανόνες για ένα συγκεκÏιμένο παÏαλήπτη, ή για μια ομάδα παÏαληπτών με παÏόμοιες ιδιότητες.

  • ΟÏισμός κανόνων OpenPGP για: ΠεÏιέχει τις διευθÏνσεις αλληλογÏαφίας των παÏαληπτών (χωÏίς ονόματα, δηλ. απλώς τη διεÏθυνση, όπως η somebody@email.domain). ΜποÏείτε να εισάγετε παÏαπάνω από μία διεÏθυνση, χωÏίζοντάς τες με κενά. Οι διευθÏνσεις μποÏοÏν να πεÏιέχουν μόνο τον τομέα ώστε ο κανόνας να εφαÏμόζεται σε όλες τις διευθÏνσεις από αυτόν τον τομέα. ΠαÏάδειγμα: εισάγοντας το @email.domain, ο κανόνας να εφαÏμοστεί στα body@email.domain, somebody@email.domain, anybody@email.domain, κλπ.
  • ΕφαÏμογή κανόνα αν ο παÏαλήπτης ...: Αυτό καθοÏίζει τον Ï„Ïόπο ταιÏιάσματος της διεÏθυνσης αλληλογÏαφίας. Αν έχουν εισαχθεί πολλαπλές διευθÏνσεις, η ÏÏθμιση θα εφαÏμοστεί σε όλες. Τα παÏακάτω παÏάδειγμα βασίζονται στο ότι το body@email.domain έχει εισαχθεί στο παÏαπάνω πεδίο ΟÏισμός κανόνων OpenPGP για.
    • είναι ακÏιβώς: με αυτήν την επιλογή, ο κανόνας θα εφαÏμοστεί μόνο σε μηνÏματα Ï€Ïος το body@email.domain (ακÏιβές ταίÏιασμα, χωÏίς διάκÏιση πεζών/κεφαλαίων).
    • πεÏιέχει: με αυτήν την επιλογή, ο κανόνας θα εφαÏμοστεί σε οποιαδήποτε διεÏθυνση πεÏιέχει τη συμβολοσειÏά, δηλ. anybody@email.domain ή body@email.domain.net
    • αÏχίζει με: με αυτήν την επιλογή, ο κανόνας θα εφαÏμοστεί σε οποιαδήποτε διεÏθυνση αÏχίζει με τη συμβολοσειÏά, δηλ. body@email.domain.net, body@email.domain-name.com κλπ.
    • τελειώνει με : με αυτήν την επιλογή, ο κανόνας θα εφαÏμοστεί σε οποιαδήποτε διεÏθυνση τελειώνει με τη συμβολοσειÏά, δηλ. anybody@email.domain, somebody@email.domain κλπ.
  • Συνέχιση με τον επόμενο κανόνα για τη διεÏθυνση
    ΕνεÏγοποιώντας αυτήν την επιλογή μποÏείτε να οÏίσετε έναν κανόνα χωÏίς να χÏειαστεί να εισάγετε ένα ID ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÏ„Î¿ πεδίο ΧÏήση των ακόλουθων κλειδιών OpenPGP:, ώστε η διεÏθυνση να χÏησιμοποιηθεί για τον έλεγχο του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï„Î·Î½ ÏŽÏα της αποστολής. Επίσης, θα εφαÏμοστοÏν οι επόμενοι κανόνες για τη διεÏθυνση.
  • Îα μη γίνει έλεγχος άλλων κανόνων για τη διεÏθυνση
    ΕνεÏγοποιώντας αυτήν την επιλογή μποÏείτε να σταματήσετε τον έλεγχο της συγκεκÏιμένης διεÏθυνσης, δηλ. ο έλεγχος κανόνων συνεχίζεται για την επόμενη διεÏθυνσή
  • ΧÏήση των ακόλουθων κλειδιών OpenPGP:
    ΧÏησιμοποιήστε το κουμπί Επιλογή κλειδιοÏ(ών)... για να επιλέξετε τα κλειδιά του παÏαλήπτη που θα χÏησιμοποιηθοÏν για την κÏυπτογÏάφηση. Όπως και στην παÏαπάνω ενέÏγεια, δε θα ελεγχθοÏν οι επόμενοι κανόνες για τη διεÏθυνση.
  • Εξ οÏÎ¹ÏƒÎ¼Î¿Ï Î³Î¹Î± υπογÏαφή: ενεÏγοποίηση ή απενεÏγοποίηση της υπογÏαφής του μηνÏματος. Αυτό είτε χÏησιμοποιεί ή παÏακάμπτει την επιλογή που κάνατε στο παÏάθυÏο ΣÏνταξης του μηνÏματος. Διαθέσιμες τιμές είναι οι:
    • Ποτέ: απενεÏγοποιεί την υπογÏαφή, ακόμα και αν έχει ενεÏγοποιηθεί στο παÏάθυÏο ΣÏνταξης του μηνÏματος
    • Îαι, αν επιλεγεί στη σÏνταξη μηνÏματος: θα χÏησιμοποιηθεί η επιλογή που έγινε στο παÏάθυÏο ΣÏνταξης του μηνÏματος
    • Πάντα: ενεÏγοποιεί την υπογÏαφή, ακόμα και αν δεν έχει ενεÏγοποιηθεί στο παÏάθυÏο ΣÏνταξης του μηνÏματος
Αυτές οι επιλογές εφαÏμόζονται σε όσους κανόνες ταιÏιάζουν. Αν κάποιος κανόνας απενεÏγοποιεί την υπογÏαφή, το μήνυμα δε θα υπογÏαφεί, ανεξάÏτητα από άλλους κανόνες που χÏησιμοποιοÏν το Πάντα.
  • ΚÏυπτογÏάφηση: ενεÏγοποιεί ή απενεÏγοποιεί την κÏυπτογÏάφηση του μηνÏματος. Οι επιτÏεπόμενες τιμές και το νόημά τους είναι ίδιες με αυτές της υπογÏαφής.
  • PGP/MIME: ενεÏγοποιεί ή απενεÏγοποιεί τη χÏήση της κωδικοποίησης PGP/MIME (RFC 3156) για το μήνυμα. Αν απενεÏγοποιηθεί, τα μηνÏματα θα κωδικοποιοÏνται με "εμβόλιμο PGP". Οι επιτÏεπόμενες τιμές και το νόημά τους είναι ίδιες με αυτές της υπογÏαφής.

Οι κανόνες εφαÏμόζονται με τη σειÏά που βÏίσκονται στη λίστα του ΕπεξεÏγαστή κανόνων OpenPGP. Κάθε φοÏά που ένας κανόνας ταιÏιάζει με έναν παÏαλήπτη και πεÏιέχει ένα ID ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP, εκτός του ότι θα χÏησιμοποιηθεί το καθοÏισμένο ID κλειδιοÏ, ο παÏαλήπτης δε θα θεωÏείται διαθέσιμος για τους υπόλοιπους κανόνες.


ΠεÏισσότεÏη βοήθεια είναι διαθέσιμη στο δικτυακό τόπο του Enigmail

enigmail/lang/el/help/initError.html000066400000000000000000000045361266701624400177770ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/el/help/messenger.html000066400000000000000000000173241266701624400200110ustar00rootroot00000000000000 Βοήθεια του Enigmail

Βοήθεια του Enigmail

Ανάγνωση μηνυμάτων με το Enigmail

  • Το κουμπί ΑποκÏυπτογÏάφησης στο κÏÏιο παÏάθυÏο
    Αυτό το κουμπί εξυπηÏετεί πολλοÏÏ‚ σκοποÏÏ‚: αποκÏυπτογÏάφηση, επαλήθευση ή εισαγωγή δημόσιων κλειδιών. Κανονικά η αποκÏυπτογÏάφηση/επαλήθευση γίνεται αυτόματα, παÏότι αυτό μποÏεί να αλλαχτεί. Αν όμως παÏουσιαστεί Ï€Ïόβλημα, θα εμφανιστεί ένα πεÏιληπτικό μήνυμα στη γÏαμμή κατάστασης του Enigmail. Αν κάνετε κλικ στο κουμπί ΑποκÏυπτογÏάφησης, θα μποÏέσετε να δείτε ένα πιο λεπτομεÏές μήνυμα καθώς και την έξοδο της εντολής GnuPG.
  • Τα εικονίδια Πένας και ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÏ„Î·Î½ Κεφαλίδα του μηνÏματος
    Τα εικονίδια Πένας και ÎšÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÏ„Î·Î½ Κεφαλίδα του μηνÏματος δηλώνουν αν το μήνυμα που διαβάζετε είναι υπογεγÏαμμένο και/ή κÏυπτογÏαφημένο και αν η υπογÏαφή είναι έγκυÏη, το μήνυμα δεν αλλάχτηκε μετά την υπογÏαφή του. Αν το μήνυμα έχει αλλαχτεί, το εικονίδιο Πένας θα αντικατασταθεί από το εικονιδίου Σπασμένου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï„Î¿ οποίο δηλώνει ότι η υπογÏαφή δεν είναι έγκυÏη. Κάνοντας δεξί κλικ σε ένα από τα δÏο εικονίδια θα εμφανιστεί ένα Î¼ÎµÎ½Î¿Ï Î¼Îµ τις ακόλουθες επιλογές:
    • ΠληÏοφοÏίες ασφαλείας OpenPGP: σας εμφανίζει την κατάσταση εξόδου του GnuPG για το μήνυμα.
    • ΑντιγÏαφή πληÏοφοÏιών ασφαλείας OpenPGP: αντιγÏάφει την κατάσταση εξόδου του GnuPG στο Ï€ÏόχειÏο· για να την επικολλήσετε σε κάποιο μήνυμα κλπ.
    • Εμφάνιση ID φωτογÏαφίας OpenPGP: σας εμφανίζει το ID φωτογÏαφίας του ατόμου που σας έστειλε το μήνυμα, αν βέβαια αυτή υπάÏχει στο Δημόσιο Κλειδί του. (Αυτή η επιλογή είναι διαθέσιμο μόνο αν το ID φωτογÏαφίας OpenPGP υπάÏχει στο κλειδί.)
    • ΠληÏοφοÏίες ασφαλείας S/MIME: σας εμφανίζει τις πληÏοφοÏίες ασφαλείας S/MIME για το μήνυμα.

    Αν δεν έχετε ενεÏγοποιημένη την επιλογή keyserver-options auto-key-retrieve στο αÏχείο gpg.conf σας, και διαβάζετε ένα μήνυμα που είναι υπογεγÏαμμένο ή κÏυπτογÏαφημένο, στην κεφαλίδα του μηνÏματος θα εμφανιστεί το εικονίδιο Πένας με ένα ΕÏωτηματικό πάνω του, ενώ το μήνυμα στη γÏαμμή κατάστασης του Enigmail θα λέει Τμήμα του μηνÏματος υπογεγÏαμμένο· κάντε κλικ στο εικονίδιο Πένας για πληÏοφοÏίες και στην πεÏιοχή κειμένου του μηνÏματος θα εμφανίζονται όλα τα OpenPGP μπλοκ και το μπλοκ της υπογÏαφής.

    Αυτό μποÏεί επίσης να συμβεί όταν το κλειδί δεν υπάÏχει στον Ï€ÏοκαθοÏισμένο εξυπηÏετητή κλειδιών, ακόμα κι αν έχετε ενεÏγοποιημένη την επιλογήkeyserver-options auto-key-retrieve στο gpg.conf σας.

    Κάνοντας κλικ στο εικονίδιο Πένας και ΕÏÏ‰Ï„Î·Î¼Î±Ï„Î¹ÎºÎ¿Ï Î¸Î± εμφανιστεί ένα παÏάθυÏο που θα σας πληÏοφοÏεί ότι το κλειδί δεν είναι διαθέσιμο στη λίστα κλειδιών σας. Πατώντας OK θα εμφανιστεί ένα άλλο παÏάθυÏο με μία λίστα εξυπηÏετητών κλειδιών για να επιλέξετε από ποιον θα γίνει λήψη του δημόσιου ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï„Î¿Ï… αποστολέα.

    Για να οÏίσετε τη λίστα των εξυπηÏετητών κλειδιών που θέλετε να χÏησιμοποιείτε, πηγαίνετε στην καÏτέλα Enigmail -> ΠÏοτιμήσεις -> Βασικές και εισάγετε τις διευθÏνσεις στο πεδίο ΕξυπηÏετητής(ές) κλειδιών:, χωÏισμένες με κόμματα. Ο Ï€Ïώτος εξυπηÏετητής στη λίστα θα χÏησιμοποιηθεί ως ο Ï€ÏοκαθοÏισμένος.

  • Άνοιγμα κÏυπτογÏαφημένων επισυνάψεων / εισαγωγή ενσωματωμένων κλειδιών OpenPGP
    Επισυνάψεις με όνομα *.pgp, *.asc και *.gpg αναγνωÏίζονται ως επισυνάψεις που το Enigmail θα τις διαχειÏιστεί με ειδικό Ï„Ïόπο. Κάνοντας δεξί κλικ σε μία τέτοια επισÏναψη θα ενεÏγοποιήσει δÏο ειδικές καταχωÏήσεις στο Î¼ÎµÎ½Î¿Ï Ï€Î¿Ï… θα εμφανιστεί: ΑποκÏυπτογÏάφηση και Άνοιγμα και ΑποκÏυπτογÏάφηση και Αποθήκευση. ΧÏησιμοποιήστε τις αν θέλετε το Enigmail αποκÏυπτογÏαφήσει την επισυνάψεις Ï€Ïιν το άνοιγμα ή την αποθήκευσή της. Αν η επισÏναψη αναγνωÏιστεί ως αÏχείο ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP, θα εÏωτηθείτε αν θέλετε να γίνει εισαγωγή του ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï ÏƒÏ„Î· λίστα κλειδιών σας.

ΠεÏισσότεÏη βοήθεια είναι διαθέσιμη στο δικτυακό τόπο του Enigmail
Αν έχετε εÏωτήσεις ή σχόλια σχετικά με το enigmail, παÏακαλώ στείλτε ένα μήνυμα στη λίστα του Enigmail OpenPGP

Το Enigmail OpenPGP είναι λογισμικό Î±Î½Î¿Î¹ÎºÏ„Î¿Ï ÎºÏŽÎ´Î¹ÎºÎ± και κυκλοφοÏεί υπό την Mozilla Public License και την GNU General Public License

enigmail/lang/el/help/rulesEditor.html000066400000000000000000000122151266701624400203140ustar00rootroot00000000000000 Βοήθεια του Enigmail: ΕπεξεÏγασία κανόνων

Βοήθεια του Enigmail

ΧÏήση του ΕπεξεÏγαστή κανόνων του Enigmail

Στον ΕπεξεÏγαστή κανόνων, μποÏείτε να καθοÏίσετε τις Ï€ÏοκαθοÏισμένες επιλογές για κάθε παÏαλήπτη για την ενεÏγοποίηση της κÏυπτογÏάφησης, υπογÏαφής και χÏήση PGP/MIME, και να επιλέξετε τα κλειδιά OpenPGP που θα χÏησιμοποιηθοÏν. Κάθε κανόνας αποτελείται από πέντε πεδία:

  • Email: οι διευθÏνσεις αλληλογÏαφίας που μποÏοÏν να χÏησιμοποιηθοÏν στα πεδία To:, Cc: και Bcc:. Ο έλεγχός τους γίνεται με χÏήση υποσυμβολοσειÏών (ΠεÏισσότεÏες λεπτομέÏειες υπάÏχουν στο διάλογο του ΕπεξεÏγαστή κανόνων)
  • Κλειδί(ιά) OpenPGP: η λίστα ID κλειδιών OpenPGP για χÏήση με τον αποστολέα
  • ΥπογÏαφή: ενεÏγοποίηση ή απενεÏγοποίηση της υπογÏαφής του μηνÏματος. Αυτό είτε χÏησιμοποιεί ή παÏακάμπτει την επιλογή που κάνατε στο παÏάθυÏο ΣÏνταξης του μηνÏματος. Διαθέσιμες τιμές είναι οι:
    • Ποτέ: απενεÏγοποιεί την υπογÏαφή, ακόμα και αν έχει ενεÏγοποιηθεί στο παÏάθυÏο ΣÏνταξης του μηνÏματος
    • Πιθανή: θα χÏησιμοποιηθεί η επιλογή που έγινε στο παÏάθυÏο ΣÏνταξης του μηνÏματος
    • Πάντα: ενεÏγοποιεί την υπογÏαφή, ακόμα και αν δεν έχει ενεÏγοποιηθεί στο παÏάθυÏο ΣÏνταξης του μηνÏματος
Αυτές οι επιλογές εφαÏμόζονται σε όσους κανόνες ταιÏιάζουν. Αν κάποιος κανόνας απενεÏγοποιεί την υπογÏαφή, το μήνυμα δε θα υπογÏαφεί, ανεξάÏτητα από άλλους κανόνες που χÏησιμοποιοÏν το Πάντα.
  • ΚÏυπτογÏάφηση: ενεÏγοποιεί ή απενεÏγοποιεί την κÏυπτογÏάφηση του μηνÏματος. Οι επιτÏεπόμενες τιμές και το νόημά τους είναι ίδιες με αυτές της υπογÏαφής.
  • PGP/MIME: ενεÏγοποιεί ή απενεÏγοποιεί τη χÏήση της κωδικοποίησης PGP/MIME (RFC 3156) για το μήνυμα. Αν απενεÏγοποιηθεί, τα μηνÏματα θα κωδικοποιοÏνται με "εμβόλιμο PGP". Οι επιτÏεπόμενες τιμές και το νόημά τους είναι ίδιες με αυτές της υπογÏαφής.

Οι κανόνες εφαÏμόζονται με τη σειÏά που βÏίσκονται στη λίστα. Κάθε φοÏά που ένας κανόνας ταιÏιάζει με έναν παÏαλήπτη και πεÏιέχει ένα ID ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï OpenPGP, εκτός του ότι θα χÏησιμοποιηθεί το καθοÏισμένο ID κλειδιοÏ, ο παÏαλήπτης δε θα θεωÏείται διαθέσιμος για τους υπόλοιπους κανόνες.

Σημείωση: Ο ΕπεξεÏγαστής κανόνων δεν είναι ακόμα ολοκληÏωμένος. Είναι δυνατή η συγγÏαφή πιο Ï€ÏοχωÏημένων κανόνων με απευθείας επεξεÏγασία του αÏχείου κανόνων (δε θα Ï€Ïέπει να γίνει πλέον επεξεÏγασία αυτών των κανόνων με τον ΕπεξεÏγαστή). ΠεÏισσότεÏες πληÏοφοÏίες για την απευθείας επεξεÏγασία του αÏχείου κανόνων υπάÏχουν στο δικτυακό τόπο του Enigmail


ΠεÏισσότεÏη βοήθεια είναι διαθέσιμη στο δικτυακό τόπο του Enigmail

enigmail/lang/el/help/sendingPrefs.html000066400000000000000000000047771266701624400204600ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/es-AR/000077500000000000000000000000001266701624400145035ustar00rootroot00000000000000enigmail/lang/es-AR/enigmail.dtd000066400000000000000000001070011266701624400167640ustar00rootroot00000000000000 NOTA: Generar la clave puede tardar varios minutos. No salga del programa mientras se est\u00E9 generando la clave. Navegue activamente o realice distintas operaciones que requieran un uso intensivo del disco durante el proceso, repercutir\u00E1n en la aleatoridad y velocidad del mismo. Cuando las claves se hayan generado, se le avisar\u00E1."> ' no es v\u00E1lido"> NOTA: La generaci\u00F3n de las claves puede tardar varios minutos. No salga del programa mientras se est\u00E1n generando. Se le avisar\u00E1 cuando las claves se hayan terminado de generar."> Para hacerlo todo sencillo, asumimos ciertos valores sobre la configuraci\u00F3n. Estos valores intentar\u00E1n proporcionar un alto nivel de seguridad para el usuario medio sin crear confusi\u00F3n. Por supuesto, puede cambiar todas estas opciones despu\u00E9s de que termine el asistente. Puede averiguar m\u00E1s acerca de las caracter\u00EDsticas de Enigmail en el men\u00FA Ayuda o en el "> NOTA: Enigmail siempre comprobar\u00E1 las firmas en los correos de cada cuenta o identidad, tanto si est\u00E1 activado como si no"> Para verificar su correo firmado, la gente necesita un programa de correo que interprete OpenPGP. Si no tienen un programa que entienda OpenPGP, podr\u00E1n leer su correo, pero la firma se ver\u00E1 como un adjunto o como texto alrededor del mensaje. Esto puede molestar a algunas personas. Necesita elegir si desea firmar todo el correo que env\u00EDe, o si desea evitar correo firmado a algunas personas."> Gracias por usar Enigmail."> Gracias por usar Enigmail."> enigmail/lang/es-AR/enigmail.properties000066400000000000000000000623241266701624400204150ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerta de Enigmail enigConfirm=Confirmación de Enigmail enigError=Error de Enigmail enigPrompt=Línea de comandos Enigmail dlgYes=Si dlgNo=No dlgKeepSetting=Recordar mi respuesta y no volver a preguntarme dlgNoPrompt=No volver a mostrar este diálogo dlg.button.delete=&Borrar dlg.button.cancel=&Cancelar dlg.button.close=&Cerrar dlg.button.continue=Con&tinuar dlg.button.skip=&Omitir dlg.button.view=&Ver repeatPrefix=\n\nEste alerta se repetirá %S repeatSuffixSingular=vez más. repeatSuffixPlural=veces más. noRepeat=\n\nEste alerta no se repetirá hasta que actualice Enigmail. noLogDir=Por favor, active la opción 'Directorio de registro' para crear el archivo de registro. noLogFile=¡El archivo de registro todavía no ha sido creado! restartForLog=Por favor, reinicie el programa para crear el archivo de registro pgpNotSupported=Parece que está usando Enigmail junto con PGP 6.x\n\nDesafortunadamente, PGP 6.x tiene algunas características que impiden que Enigmail funcione correctamente. Por lo tanto, Enigmail ya no soporta más PGP 6.x; por favor, utilice GnuPG (GPG) en su lugar.\n\nSi necesita ayuda para cambiar a GnuPG, visite la sección de Ayuda en el sitio Web de Enigmail. avoidInitErr=Para evitar este alerta permanentemente, arregle el problema o desinstale Enigmail utilizando el menú Herramientas->Extensiones passphraseCleared=La frase contraseña ha sido eliminada. passphraseCannotBeCleared=Est\u00E1 utilizando gpg-agent para el manejo de la contrase\u00F1a. PorYou are using gpg-agent for passphrase handling. Por lo tanto no es posible eliminar la contrase\u00F1a desde Enigmail. noPhotoAvailable=No hay foto disponible usingVersion=Ejecutando Enigmail versión %S usingAgent=Usando %S ejecutable %S para cifrar y descifrar. agentError=ERROR: ¡No se pudo acceder al servicio Enigmime! accessError=Error al acceder al servicio Enigmail. onlyGPG=¡Generar la clave sólo funciona con GnuPG (no con PGP)! keygenComplete=¡Se ha terminado de generar la clave! La Identidad <%S> se usará para firmar. revokeCertRecommended=Recomendamos firmemente crear un certificado de revocación para su clave. Este certificado puede usarse para invalidar su clave, por ejemplo si su clave secreta se pierde o queda comprometida. ¿Desea crear ahora el certificado de revocación? keyMan.button.generateCert=&Generate Certificate genCompleteNoSign=¡La clave ha sido generada! genGoing=¡Ya se está generando la clave! passNoMatch=La frase contraseña ingresada no coincide; inténtelo de nuevo. passCheckBox=Por favor, marque la casilla si no especifica una frase contraseña para la clave. passUserName=Por favor, indique un nombre de usuario para esta identidad passCharProblem=Ha utilizado caracteres especiales en la frase contraseña. Desafortunadamente, esto puede crear problemas en otros programas. Por favor, elija una frase contraseña con cualquiera de estos caracteres:\na-z A-Z 0-9 /.;:-,!?(){}[]%* changePassFailed=No se pudo cambiar la frase contraseña. removePassphrase=¿Desea borrar la frase contraseña actual sin crear una nueva? keyMan.button.removePass=&Remover Contrase\u00F1a keyConfirm=¿Generar la clave pública y privada para '%S'? keyMan.button.generateKey=&Generar Clave keyAbort=¿Cancelar generar la clave? keyMan.button.generateKeyAbort=&Abortar Generacion de Clave keyMan.button.generateKeyContinue=&Continuar Generaci\u00F3n de Clave expiryTooLong=No se puede crear una clave que expire dentro de más de 100 años. expiryTooShort=Su clave debe ser válida al menos durante un día. keyGenFailed=No se pudo generar la clave. Por favor, compruebe la consola de Enigmail (Menú Enigmail > Depurar Enigmail) para detalles. securityInfo=Información de seguridad Enigmail.\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Los adjuntos de este mensaje no han sido firmados ni cifrados*\n\n possiblyPgpMime=El mensaje posiblemente esté firmado o cifrado con PGP/MIME; pulse el botón Descifrar para comprobarlo. noDecrypted=¡No hay mensajes descifrados para guardar!\nUse el comando Guardar del menú Archivo noMessage=¡No hay mensajes para guardar! useButton=Por favor, pulse el botón Descifrar para descifrar el mensaje saveHeader=Enigmail: Guardar mensaje descifrado saveAttachmentHeader=Enigmail: Guardar adjunto descifrado noTempDir=No se pudo encontrar un directorio temporal para escribir\nPor favor, compruebe el valor de la variable TEMP attachmentPgpKey=El adjunto '%S' que está abriendo parece un archivo de claves OpenPGP.\n\nPulse Si para importar las claves que contenga o No para ver el contenido del archivo en una ventana del navegador beginPgpPart=********* *PRINCIPIO DE LA PARTE CIFRADA o FIRMADA* ********* endPgpPart=********** *FIN DE LA PARTE CIFRADA o FIRMADA* ********** notePartEncrypted=Enigmail: *Partes del mensaje que NO se han firmado o cifrado* noteCutMessage=Enigmail: *Multiple message blocks found -- decryption/verification aborted* decryptOkNoSig=Aviso\n\nSe pudo descifrar correctamente, pero no se pudo comprobar la firma. msgOvl.button.contAnyway=&Continuar De Todos Modos keysToExport=Seleccionar claves OpenPGP a adjuntar keysToUse=Seleccionar la(s) clave(s) OpenPGP a usar para %S pubKey=Clave pública para %S\n windowLocked=La ventana de redactar está bloqueada; envío cancelado sendUnencrypted=No se pudo inicializar Enigmail.\n¿Enviar mensaje sin cifrar? composeSpecifyEmail=Por favor, especifique su dirección de correo principal, que se usará para elegir la clave que firma los mensajes salientes.\nSi lo deja en blanco, se usará el campo DE de la dirección de correo para elegir la clave que firme el mensaje. sendingHiddenRcpt=Este mensaje tiene destinatarios BCC (copia oculta). Si el mensaje es cifrado, es posible esconder los destinatarios BCC, pero usuarios de otros productos (por ej. PGP Corp) no podr\u00E1n descifrar el mensaje. Por eso, recomendamos evitar correos con copia oculta con mensajes cifrados. sendWithHiddenBcc=Esconder destinatarios BCC sendWithShownBcc=Cifrar normalmente sendingNews=Se canceló la operación de envío cifrado.\n\nEste mensaje no se puede cifrar porque hay destinatarios de grupos de noticias. Por favor, vuelva a enviar el mensaje sin cifrado. sendToNewsWarning=Advertencia: usted est\u00E1 por enviar un mensaje cifrado a un grupo de noticias.\n\nEsto se desaconseja porque s\u00F3lo tiene sentido si todos los miembros del grupo pueden descifrar el mensaje, por ej. el mensaje debe ser cifrado con las claves de todos los participantes del grupo. Por favor env\u00EDe este mensaje solamente si sabe exactamente lo que est\u00E1 haciendo.\n\nContinuar? hasHTML=Aviso de correo HTML:\nEste es un mensaje en formato HTML, lo que podría causar que falle la firma/cifrado. Para evitar esto en el futuro, debe pulsar la tecla MAYUSCULAS mientras pulsa el botón de Redactar/Responder para enviar correo cifrado.\nSi firma el correo de manera predeterminada, debería desmarcar la opción 'Redactar mensajes en formato HTML' para desactivar permanentemente el correo en formato HTML para esta cuenta. strippingHTML=El mensaje contiene información en formato HTML que se perderá al convertir a texto plano para firmar o cifrar. ¿Desea continuar? msgCompose.button.sendAnyway=&Enviar Mensaje de Todos Modos attachWarning=Los adjuntos a este mensaje no son locales, no se pueden cifrar. Para cifrar los adjuntos, primero guárdelos como archivos locales y luego adjunte los archivos. ¿Desea continuar? quotedPrintableWarn=Ha activado la codificación 'quoted-printable' para enviar mensajes. Esto puede producir un cifrado y/o verificación incorrectos de su mensaje.\n¿Desea desactivar ahora el envío de mensajes en formato 'quoted-printable'? minimalLineWrapping=Tiene que poner el ajuste de línea a %S caracteres. Para un cifrado y/o firmado correctos, este valor necesita ser de al menos 68.\n¿Desea cambiar ahora el ajuste de línea a 68 caracteres? warning=Aviso signIconClicked=Ha modificado el firmado manualmente. Por lo tanto, mientras esté redactando el mensaje, (des)activar el firmado ya no depende de la opción de (des)activar. sendAborted=Operación de envío cancelada.\n\n statPGPMIME=PGP/MIME statSigned=FIRMADO statEncrypted=CIFRADO statPlain=TEXTO PLANO offlineSave=¿Guardar el mensaje %S para %S en la carpeta de mensajes No enviados? onlineSend=¿Enviar el mensaje %S a %S? encryptKeysNote=NOTA: El mensaje está cifrado con los siguientes IDs de usuario / Clave: %S signFailed=Error en Enigmail; no se pudo cifrar/firmar; ¿enviar el correo sin cifrar? msgCompose.button.sendUnencrypted=&Enviar Mensaje Sin Cifrar acctNotConfigured=No ha configurado esta identidad para usar seguridad Enigmail.\n¿Enviar el mensaje sin cifrar? recipientsSelectionHdr=Seleccionar destinatarios para cifrar configureNow=No ha configurado la seguridad Enigmail para la identidad seleccionada. ¿Desea hacerlo ahora? signYes=El mensaje se firmará signNo=El mensaje no se firmará encryptYes=El mensaje se cifrará encryptNo=El mensaje no se cifrará rulesConflict=Se ha detectado un conflicto en reglas por destinatario\n%S\n\n¿Enviar el mensaje con esta configuración? msgCompose.button.configure=&Configure msgCompose.button.send=&Enviar Mensaje msgCompose.button.save=&Guardar Mensaje keyNeeded=Se necesita la clave pública %S para verificar la firma clickDecrypt=; pulse el botón Descifrar clickDecryptRetry=; pulse el botón Descifrar para volver a intentarlo clickPen=; pulse el icono del Lápiz clickPenDetails=; pulse el icono del Lápiz para detalles clickQueryPenDetails=; pulse el icono del Lápiz para detalles clickKey=; pulse el icono de la Llave clickQueryKeyDetails=; pulse el icono de la Llave para detalles clickKeyDetails=; pulse el icono de la Llave para detalles clickPenKeyDetails=; pulse el icono del Lápiz o Llave para detalles msgPart=Parte del mensaje %S msgSigned=firmado msgEncrypted=cifrado msgSignedAndEnc=firmado y cifrado unverifiedSig=Firma sin verificar incompleteDecrypt=Descifrado incompleto failedSig=Error - No se pudo comprobar la firma. needKey=Error - Se necesita la clave secreta para descifrar el mensaje. failedDecrypt=Error - No se pudo descifrar. badPhrase=Error - Frase contraseña incorrecta. failedDecryptVerify=Error - No se pudo descifrar/verificar. viewInfo=; Ver > Información de seguridad del mensaje para detalles decryptedMsg=Mensaje descifrado testNoSvc=EnigTest: No se pudo acceder al servicio Enigmail testNoEmail=EnigTest: Por favor, indique la dirección de correo para probar. testSucceeded=Enigmail está funcionando correctamente. Para detalles, examine la consola disponible en el menú Enigmail. oldGpgVersion=No se pudo iniciar Enigmail.\n\nEstá usando la versión %S de GnuPG, que ya no se actualiza. Enigmail requiere GnuPG versión 1.4 o superior; Por favor, actualice su instalación de GnuPG, o Enigmail no funcionará. locateGpg=Localizar el agente GnuPG invalidGpgPath=No se puede ejecutar GnuPG con la ruta proporcionada. Por lo tanto, se desactiva Enigmail hasta que se cambie la ruta a GnuPG otra vez o se reinicie el programa. warningsAreReset=Todos los avisos serán restablecidos. prefs.gpgFound=Se encontr\u00F3 GnuPG en %S prefs.gpgNotFound=No se pudo encontrar GnuPG prefs.warnAskNever=Aviso: activar esta opci\u00F3n tendr\u00E1 como resultado que los correos en donde no haya clave para uno de los destinatarios el correo ir\u00E1 sin cifrar, sin m\u00E1s informaci\u00F3n. \u00A1Enigmail no informar\u00E1 si esto ocurre! prefEnigmail.oneKeyserverOnly=Error - s\u00F3lo se puede especificar un servidor de claves para la descarga autom\u00E1tica de claves OpenPGP faltantes. enterPass=Por favor, escriba su frase contraseña OpenPGP. enterPassOrPin=Por favor, escriba su frase contraseña OpenPGP o el PIN de su tarjeta inteligente. repeatPass=Por favor, repita su frase contraseña OpenPGP rememberPass=Recordar durante %S minutos de inactividad enterAdminPin=Por favor, escriba el PIN administrativo de su tarjeta inteligente enterCardPin=Por favor, escriba el PIN de su tarjeta inteligente notInit=Error - No se ha iniciado todavía el servicio Enigmail. badCommand=Error - Falló el comando de cifrado. cmdLine=línea de comandos y salida: notRequired=Error - No se requiere cifrado. notComplete=Error - No se ha terminado de generar la clave. invalidEmail=Error - Dirección/direcciones de correo no válida(s). noPassphrase=Error - No se suministró la frase contraseña. noPGPblock=Error - No se encontró un bloque con armadura OpenPGP válido. unverifiedReply=La parte indentada del mensaje (respuesta) probablemente ha sido modificada decryptToImport=Pulse el botón Descifrar para importar el bloque de clave pública en el mensaje sigMismatch=Error - La firma no coincide. cantImport=Error al importar la clave pública.\n\n sc.wrongCardAvailable=La tarjeta inteligente %S encontrada en su lector no puede ser usada para procesar el mensaje.\nPor favor inserte su tarjeta inteligente %S y repita la operaci\u00F3n. sc.insertCard=La operaci\u00F3n requiere su tarjeta inteligente %S.\nPor favor inserte la tarjeta inteligente requerida y repita la operaci\u00F3n. sc.removeCard=La operaci\u00F3n require que no haya tarjetas inteligentes en el lector.\nPor favor retire su tarjeta inteligente y repita la operaci\u00F3n. sc.noCardAvailable=No se pudo encontrar ninguna tarjeta inteligente en su lectora\nPor favor, inserte su tarjeta inteligente y repita la operación sc.noReaderAvailable=No se pudo acceder a su lectora de tarjetas inteligentes.\nPor favor, conecte su lectora de tarjetas inteligentes, inserte la tarjeta y repita la operación. gpgNotFound=No se pudo encontrar el agente GnuPG '%S'.\nAsegúrese de haber puesto correctamente la ruta al ejecutable GnuPG en las preferencias de Enigmail. gpgNotInPath=No se pudo encontrar el ejecutable GnuPG en el PATH.\nAsegúrese que haya puesto correctamente la ruta al ejecutable GnuPG en las preferencias de Enigmail. enigmimeNotAvail=El servicio Enigmime no está disponible gpgAgentNotStarted=No se pudo iniciar el programa del agente gpg necesario para su versi\u00F3n de GnuPG %S. prefUntrusted=SIN CONFIANZA prefRevoked=CLAVE REVOCADA prefExpiredKey=CLAVE EXPIRADA prefExpired=EXPIRADO prefGood=La firma de %S es correcta. prefBad=Firma INCORRECTA de %S failCancel=Error - Recepción de clave cancelada por el usuario. failNoServer=Error - No se especificó el servidor de claves para recibir la clave. failNoID=Error - No se especificó el ID que va a recibir la clave. failKeyExtract=Error - Falló el comando de extracción de clave. notFirstBlock=Error - El primer bloque OpenPGP no es un bloque de clave pública. importKeyConfirm=¿Importar la(s) clave(s) pública(s) incluida(s) en el mensaje? failKeyImport=Error - No se pudo importar la clave. fileWriteFailed=No se pudo escribir en el archivo %S successKeyImport=Clave(s) importada(s) exitosamente. importKey=Importar la clave pública %S desde el servidor de claves: uploadKey=Enviar la clave pública %S al servidor de claves: keyId=ID de clave keyAndSigDate=ID de clave: 0x%S / Firmado el: %S keyFpr=Huella de clave: %S noEmailProvided=¡No se proporcionó la dirección de correo! keyAlreadySigned=La clave ya está firmada, no se puede firmar dos veces. selKeyExpired=expiró %S createdHeader=Creada atLeastOneKey=¡No se seleccionó una clave! Tiene que seleccionar al menos una para aceptar este diálogo fewerKeysThanRecipients=Usted ha seleccionado un n\u00FAmero menor de claves que de destinatarios. Est\u00E1 seguro de que la lista de claves para cifrar est\u00E1 completa? userSel.button.goBack=Seleccione m\u00E1s Claves userSel.secretKeySel.title=Seleccione una Clave Secreta OpenPGP para Firmar Sus Mensajes pgpMimeNote=NOTA: PGP/MIME sólo está soportado en un número limitado de clientes de correo. En Windows sólo Mozilla/Thunderbird, Sylpheed, Pegasus y Mulberry se sabe que soportan este estándar; en Linux/UNIX y Mac OS X la mayoría de los clientes de correo lo soportan. Si no está seguro, seleccione la %S opción. first=primera second=segunda encryptKeyHeader=Seleccione clave OpenPGP para cifrar identityName=Identidad: %S noEncryption=Tiene el cifrado activado, pero no seleccionó una clave. Para enviar correo cifrado a %S, necesita especificar una o varias claves válidas de la lista de claves. ¿Desea desactivar el cifrado para %S? noKeyToUse=(ninguna - sin cifrado) noEmptyRule=¡La regla no puede estar vacía! Por favor, ponga una dirección de correo electrónico en el campo Regla. invalidAddress=La(s) dirección/direcciones de correo introducida(s) no es/son válida(s). No hay que poner los nombres de los destinatarios, sólo las direcciones. Ejemplo:\nNo válido: El nombre \nVálido: usuario@servidor.net noCurlyBrackets=Los corchetes {} tienen un significado especial y no se deben usar en las direcciones de correo electrónico. Si desea modificar el comportamiento de esta regla, use la opción 'Aplicar regla si el destinatario...'\nPara más información pulse el botón Ayuda. never=Nunca always=Siempre possible=Posible deleteRule=¿Realmente quiere borrar la regla seleccionada? nextRcpt=(Destinatario siguiente) negateRule=No needOnline=La función seleccionada no está disponible en modo sin conexión. Por favor, pase a modo con conexión y vuelva a intentarlo. protocolNotSupported=El protocolo '%S://' que ha seleccionado no está soportado para descargar claves OpenPGP. gpgkeysDisabled=Podría ayudar si se activa la opción 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=No se pudo conectar con el servidor de claves %S keyDownloadFailed=No se pudo descargar la clave del servidor de claves. El mensaje de estado es:\n%S internalError=Ha ocurrido un error interno. No se pudieron descargar o importar las claves. noKeyFound=Lo siento, no se pudo encontrar ninguna clave que coincidiera con el criterio de búsqueda especificado.\nPor favor, tenga en cuenta que el ID de clave debe tener el prefijo "0x" (ejemplo: 0xABCDEF12). gpgKeysFailed=Fallo al buscar o descargar la clave del servidor de claves: no se pudo ejecutar gpgkeys_%S. setKeyTrustFailed=Fallo al establecer la confianza de clave. signKeyFailed=Fallo al firmar la clave. undefinedError=Ocurrió un error no definido. alreadySigned.label=Nota: la clave %S ya est\u00E1 firmada con la clave secreta seleccionada. keyMan.loadingKeys=Cargando claves. Por favor, espere... keyValid.unknown=desconocida keyValid.invalid=no es válida keyValid.disabled=desactivada keyValid.revoked=revocada keyValid.expired=expirada keyValid.noSubkey=subclave no válida keyValid.valid=v\u00E1lida keyTrust.untrusted=sin confianza keyTrust.marginal=poca confianza keyTrust.full=confiable keyTrust.ultimate=absoluta keyTrust.group=(group) keyType.public=pública keyType.publicAndSec=pública/secreta keyMan.enableKey=Activar clave keyMan.disableKey=Desactivar clave userAtt.photo=Aspecto de usuario (imagen JPEG) asciiArmorFile=Archivos con armadura ASCII (*.asc) gnupgFile=Archivos GnuPG saveRevokeCertAs=Crear y guardar certificado de revocación revokeCertOK=El certificado de revocación se ha creado correctamente. Puede usarlo para invalidar su clave pública, por ejemplo si pierde su clave secreta.\n\nPor favor, póngalo en un soporte que se pueda guardar de forma segura, como un CD o un disquete. Si alguien tiene acceso a este certificado, puede usarlo para inutilizar su clave. revokeCertFailed=No se pudo crear el certificado de revocación. addUidOK=ID del usuario agregado correctamente addUidFailed=Fallo al agregar el ID del usuario noKeySelected=Debe seleccionar al menos una clave para realizar la operación seleccionada. exportToFile=Exportar clave pública a un archivo exportSecretKey=¿Desea incluir la clave secreta en el archivo de claves OpenPGP a guardar? saveKeysOK=Las claves se guardaron satisfactoriamente. saveKeysFailed=Fallo al guardar las claves. importKeysFailed=Fallo al importar las claves. enableKeyFailed=Fallo al activar/desactivar las claves. specificPubKeyFilename=%S (0x%S) púb specificPubSecKeyFilename=%S (0x%S) púb-sec defaultPubKeyFilename=Claves-públicas-exportadas defaultPubSecKeyFilename=Claves-públicas-y-secretas-exportadas noSecretKeys=No se encontraron claves secretas.\n\n¿Desea generar su propia clave secreta ahora? sendKeysOk=Clave(s) enviada(s) exitosamente. sendKeysFailed=Fallo al enviar las claves. receiveKeysOk=Clave(s) actualizada(s) exitosamente. receiveKeysFailed=Fallo al descargar las claves. importFromClip=¿Desea importar alguna(s) clave(s) desde el portapapeles? copyToClipbrdFailed=No se logró copiar la(s) clave(s) seleccionada(s) al portapapeles. copyToClipbrdOK=Clave(s) copiada(s) al portapapeles. deleteSecretKey=AVISO: ¡Está a punto de borrar una clave secreta!\nSi borra la clave secreta, ya no podrá descifrar ningún mensaje que vaya cifrado para esa clave.\n\n¿Realmente desea borrar AMBAS claves, la pública y la secreta\n'%S'? deleteMix=AVISO: ¡Está a punto de borrar las claves secretas!\nSi borra las claves secretas, ya no será posible descifrar ningún mensaje que haya sido cifrado con esas claves.\n\n¿Realmente desea borrar AMBAS, las claves secretas y públicas seleccionadas? deletePubKey=¿Desea borrar la clave pública\n'%S'? deleteSelectedPubKey=¿Desea borrar las claves públicas? deleteKeyFailed=No se pudo borrar la clave. revokeKeyAsk=Esta función crea e importa un certificado de revocación. ¿Realmente desea revocar la clave %S? revokeKeyOk=La clave ha sido revocada. Si la clave está disponible en un servidor de claves, se recomienda volver a subirla, de forma que otros puedan ver la revocación. revokeKeyFailed=No se pudo revocar la clave. refreshAllQuestion=No ha seleccionado ninguna clave. ¿Desea actualizar TODAS las claves? refreshKey.warn=AVISO: Dependiendo del número de claves y la velocidad de la conexión, actualizar todas las claves puede ser un proceso bastante lento.\n\n¿Continuar? keyMan.button.exportSecKey=&Exportar Claves Secretas keyMan.button.exportPubKey=Export S\u00F3lo Claves &P\u00FAblicas keyMan.button.import=&Importar keyMan.button.refreshAll=&Refrescar Todas las Claves keyMan.button.revokeKey=&Revocar Clave keylist.noOtherUids=No tiene otras identidades keylist.hasOtherUids=Tambi\u00E9n conocido como keylist.noPhotos=No hay fotograf\u00ED disponible keylist.hasPhotos=Fotograf\u00EDas keySignatureLocal=Local keySignatureExportable=Exportable keySignatureNoKey=Sin clave userIdNotFound=(No se encontró el ID del usuario) signatureValid=S\u00ED retrieveKeyConfirm=La clave no está disponible - ¿Desea descargarla de un servidor de claves? changePrimUidFailed=Fallo al cambiar el ID del usuario primario changePrimUidOK=El ID del usuario primario se cambió correctamente deleteUidFailed=Fallo al borrar el ID del usuario %S deleteUidOK=El ID del usuario %S se borró correctamente revokeUidFailed=Fallo al revocar el ID del usuario %S revokeUidOK=El ID del usuario %S se revocó correctamente. Si la clave está disponible en un servidor de claves, se recomienda volver a subirla, de forma que otros puedan ver la revocación. revokeUidQuestion=¿Realmente desea revocar el ID del usuario %S? deleteUidQuestion=¿Realmente desea borrar el ID del usuario %S?\n\nPor favor, tenga en cuenta que si la clave pública está en un servidor de claves, el borrar el ID del usuario no cambiará nada. En este caso hay que usar 'Revocar ID de usuario'. keyTypePublic=clave pública keyTypePrimary=clave primaria keyTypeSubkey=subclave keyTypePair=par de claves keyExpiryNever=nunca keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keygen.started=Por favor, espere mientras se está generando la clave... keygen.completed=Clave generada. El nuevo ID de clave es: 0x%S keygen.keyBackup=Se ha respaldado la clave como %S keygen.passRequired=Por favor, especifique una frase contraseña si desea crear una copia de respaldo de su clave fuera de su tarjeta inteligente. cardPin.dontMatch=El PIN introducido no coincide; por favor, vuelva a intentarlo. cardPin.minLength=El PIN debe tener al menos %S caracteres o números. cardPin.processFailed=Se produjo un fallo al cambiar el PIN. keyserverProgress.refreshing=Actualizando las claves. Por favor, espere... keyserverProgress.uploading=Subiendo claves; por favor, espere... keyserverTitle.refreshing=Actualizando claves keyserverTitle.uploading=Subir claves passphrase.min8keys=¡Su frase contraseña debe contener al menos 8 caracteres! setupWizard.applyAllId=Activar Enigmail para todas las identidades setupWizard.applySomeId=Activar Enigmail para las identidades: %S setupWizard.applySingleId=Activar Enigmail para su cuenta de correo setupWizard.setAllPrefs=Ajustar todas las opciones recomendadas del programa setupWizard.setSomePrefs=Ajustar las opciones del programa recomendadas que ha seleccionado setupWizard.setNoPrefs=No ajustar ninguna opción del programa setupWizard.createKey=Crear una nueva clave OpenPGP de 2048 bits, válida durante 5 años setupWizard.useKey=Usar la clave OpenPGP existente con ID %S para firmar setupWizard.encryptAll=Por defecto, cifrar todos los correos setupWizard.encryptNone=Por defecto, no cifrar todos los correos setupWizard.signAll=Por defecto, firmar todos los correos setupWizard.signNone=Por defecto, no firmar los correos setupWizard.reallyCancel=¿Realmente desea cancelar el asistente de instalación de Enigmail? addUidDlg.nameOrEmailError=Debe introducir un nombre y una direcci\u00F3n email addUidDlg.nameMinLengthError=El nombre debe tener al menos 5 caracteres addUidDlg.invalidEmailError=Debe especificar una direcci\u00F3n email v\u00E1lida addUidDlg.commentError=No se permite par\u00E9ntesis en los comentarios enigmail/lang/es-AR/help/000077500000000000000000000000001266701624400154335ustar00rootroot00000000000000enigmail/lang/es-AR/help/compose.html000066400000000000000000000105311266701624400177660ustar00rootroot00000000000000 Ayuda de Enigmail: Redacción de mensajes

Ayuda de Enigmail

Usando Enigmail para redactar mensajes

  • Menú Enigmail en la ventana de redacción de mensajes
    • Firmar mensaje: Activa/desactiva el envío de correo firmado. El usuario recibe una notificación si hay un fallo en la firma.
    • Cifrar mensaje: Activa/desactiva el cifrado para todos los destinatarios antes de enviarlo. El usuario recibe una notificación si hay un fallo al cifrar.

      Si está activada la opción Mostrar la selección si es necesario en Preferencias -> pestaña Selección de clave, se abrirá una ventana con una lista de claves si hay direcciones en la lista de destinatarios del mensaje de las que no se tiene la clave pública.

      Si está activada la opción Nunca mostrar el diálogo de selección de clave OpenPGP en Preferencias -> pestaña Selección de clave, y hay direcciones en la lista de destinatarios del mensaje de las que no se tiene la clave pública, el mensaje se enviará sin cifrar.

  • Usar PGP/MIME en este mensaje: Activa/desactiva el uso de PGP/MIME en este mensaje.

    Si sabe con certeza que los destinatarios pueden leer el correo usando el formato PGP/MIME, entonces se debe usar.

    Esta característica depende de la configuración en Preferencias -> pestaña PGP/MIME si está establecida en Usar PGP/MIME si es posible o Siempre usar PGP/MIME.

    • Opciones predeterminadas de redacción: Submenú
    • Opciones de firmado/cifrado...: acceder a Configuración de cuentas... -> Seguridad OpenPGP.
    • Opciones de envío...: acceder a Preferencias -> pestaña Enviar.
    • Opciones de selección de clave...: acceder a Preferencias -> pestaña Selección de clave.
    • Opciones PGP/MIME...: acceder a Preferencias -> pestaña PGP/MIME.
  • Deshacer cifrado: Si hay algún problema al enviar el correo, como un fallo en el servidor POP que no acepta la solicitud, Enigmail no lo sabrá, y el mensaje cifrado seguirá mostrándose en la ventana de redacción. Con esta opción de menú, se deshacerá el cifrado/firma, volviendo a la ventana de redacción con su texto original.
    Como solución temporal, también se puede usar para descifrar el texto citado al contestar a mensajes cifrados. Enigmail debe descifrar automáticamente el mensaje citado, pero si se produce un fallo por cualquier motivo, se puede usar esta opción del menú para forzarlo.
  • Adjuntar clave pública...: Adjunta el bloque de la clave pública al mensaje, en un archivo con armadura ASCII. Se le preguntará el ID de usuario de las claves que se van a adjuntar.
  • Borrar frase contraseña guardada: Elimina de la caché las frases contraseñas introducidas manualmente. Esto es útil si se tienen varias frases contraseñas.
  • Ayuda: Muestra información de ayuda (esta página).

Más ayuda disponible en la página Web de ayuda de Enigmail

enigmail/lang/es-AR/help/editRcptRule.html000066400000000000000000000133441266701624400207340ustar00rootroot00000000000000 Ayuda de Enigmail: Editar regla OpenPGP

Ayuda de Enigmail

Usando el editor de reglas de Enigmail: Editar regla OpenPGP

En el editor de reglas, se pueden especificar opciones predeterminadas para cada destinatario, activando el cifrado, la firma y PGP/MIME; y para definir qué clave(s) OpenPGP va a usar. En este diálogo, se pueden especificar las reglas para un único destinatario, y para un grupo de destinatarios con atributos muy similares.

  • Definir reglas OpenPGP para: Contiene las direcciones de correo electrónico de los destinatarios (sin nombre, por ejemplo una dirección como alguien@correo.org). Se pueden especificar varias direcciones de correo, separadas por espacios. La dirección especificada aquí puede consistir de sólo la sección del dominio, para que se aplique al correo de cualquier dirección de ese dominio, como @correo.org se aplicará a alguien@correo.org, cualquiera@correo.org, otro@correo.org, etc.
  • Aplicar regla si el destinatario: Esto modifica si coinciden las direcciones de correo electrónico. Si se introducen varias direcciones, la opción se aplicará a todas. Los ejemplos de abajo están basados en que se ha introducido alguien@correo.org en el campo Reglas openPGP de arriba.
    • Es exactamente: Con esta opción, la regla sólo se activará en los correos a alguien@correo.org (exacto, no se tienen en cuenta las mayúsculas).
    • Contiene: Con esta opción, cualquier dirección de correo que contenga la cadena, cumplirá la regla, como unnombre@correo.dominio o nombre@correo.dominio.org
    • Comienza con: Con esta opción, cualquier dirección de correo que empiece por la cadena, cumplirá la regla, como alguien@correo.dominio.net, alguien@correo.nombre-dominio.com.
    • Acaba en: Con esta opción, cualquier dirección de correo que acabe en la cadena, cumplirá la regla, como otronombre@correo.org, alguien@correo.org
  • Continuar con la regla siguiente para la dirección coincidente
    Activar esta función permitirá definir una regla pero no tener que especificar un ID de clave en el campo Usar las siguientes claves OpenPGP: para que se use la dirección de correo electrónico para comprobar una clave en el momento del envío. También se procesarán las reglas posteriores para la misma dirección.
  • No comprobar las reglas siguientes para la dirección coincidente
    Activar esta función detiene el procesamiento de cualquier otra regla para las direcciones que cumplan la regla. Es decir, las reglas se reanudan procesando el próximo destinatario.
  • Usar las siguientes claves OpenPGP:
    Use el botón Seleccionar clave(s)... para seleccionar las claves del destinatario que se usen para el cifrado. Al igual que la acción anterior, no se continúan procesando las reglas para las direcciones que cumplan la regla.
  • Predeterminada para firmar: Activa o desactiva la firma del mensaje. Esta opción usa o ignora lo especificado en la ventana de redacción de mensajes. Los valores son:
    • Nunca: Desactiva la firma, incluso si se activó en la ventana de redacción de mensajes (tiene preferencia sobre los otros valores).
    • Sí, si está seleccionada en la redacción del mensaje: Deja la firma como se haya especificado en la ventana de redacción de mensajes.
    • Siempre: Activa la firma, incluso si no estaba activada en la ventana de redacción de mensajes.
Estas opciones de firma se aplican a todas las reglas que coincidan con el criterio. Si una de las reglas desactiva la firma, el mensaje no se firmará, independientemente de que otras especifiquen Siempre.
  • Cifrar: Activa o desactiva el cifrado del mensaje. Las opciones permitidas y su significado son las mismas que para la firma de mensajes.
  • PGP/MIME: Activa o desactiva el uso de la codificación PGP/MIME (RFC 3156) en el mensaje. Si PGP/MIME está desactivado, los mensajes se codifican usando "PGP integrado". Los valores permitidos y su significado son los mismos que para la firma de mensajes.

Las reglas se procesan en el orden mostrado en la lista de OpenPGP - Editar reglas por destinatario. Cuando una regla coincida con un destinatario y contenga un ID de clave OpenPGP, además de usar el ID de clave especificado, el destinatario ya no se considera cuando se procesen más reglas.


Más ayuda disponible en la página de configuración por destinatario de Enigmail

enigmail/lang/es-AR/help/initError.html000066400000000000000000000052521266701624400203020ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Ayuda de Enigmail

Cómo Resolver Problemas al Iniciar OpenPGP

Hay varias razones por las que no se tiene éxito al inicializar OpenPGP. Las más comunes son descritas más abajo & para más información por favor visite la página de Soporte de Enigmail.

No se pudo encontrar GnuPG

Para que funcione OpenPGP, la herramienta GnuPG debe ser instalada. Si GnuPG no puede ser encontrado, entonces primero asegúrese de que el ejecutable gpg.exe (en Windows& gpg en otras plataformas) esté instalado en su computador. Si GnuPG está instalado, y OpenPGP no puede encontrarlo, entonces usted necesitará configurar manualmente la ruta a GnuPG en las Preferencias de OpenPGP (menú OpenPGP > Preferencias)

Enigmime falló al inicilizarse

OpenPGP solamente funciona si es compilado usando el mismo ambiente de compilación en que Thunderbird o SeaMonkey fue compilado. Esto significa que usted sólo puede usar la versión oficial de Enigmail si utiliza las versiones oficiales de Thunderbird o SeaMonkey provistas por mozilla.org.

Si usted utiliza una versión de Thunderbird o SeaMonkey provista por otra fuente (p.ej. el proveedor de su distribución de Linux), o si usted compiló la aplicación por si mismo, ustede debe, o bien usar una versión de Enigmail del mismo proveedor, o compilar Enigmail usted mismo. Para compilar Enigmail, refiérase a la sección de Código Fuente en la página de Enigmail. Por favor no envie reportes de bugs acerca de este problema, no puede ser solucionado.

Más ayuda está disponible en el Sitio Web de Soporte de Enigmail.

enigmail/lang/es-AR/help/messenger.html000066400000000000000000000115261266701624400203160ustar00rootroot00000000000000 Ayuda de Enigmail: Lectura de mensajes

Ayuda de Enigmail

Usando Enigmail para leer mensajes

  • Botón Descifrar en la ventana principal de correo
    Este botón se puede usar para varios propósitos: descifrar, verificar o importar claves públicas. Normalmente el descifrado/verificación se realiza automáticamente, aunque hay una opción para desactivar esto. Sin embargo, si esto falla, normalmente aparecerá un breve mensaje de error en la línea de estado de Enigmail. Si se pulsa el botón Descifrar, podrá ver un mensaje de error más detallado, incluyendo la salida del comando GnuPG.
  • Los iconos Lápiz y Llave mostrados en la cabecera del mensaje
    Los iconos Lápiz y Llave en la cabecera del mensaje indican si el mensaje que se está leyendo está firmado y/o cifrado y si la firma es buena, es decir; que el mensaje no se ha modificado desde el momento de su firma. Si el mensaje ha sido modificado, el icono del Lápiz cambiará a un Lápiz roto para indicar que la firma no es correcta. Al pulsar con el botón derecho del ratón en los iconos del Lápiz o Llave, se obtendrá un menú con las siguientes opciones:

    • Información de seguridad OpenPGP: permite ver el estado de salida de GnuPG para el mensaje.
    • Copiar información de seguridad OpenPGP: copia el estado de salida de GnuPG al portapapeles; para pegarlo en un mensaje de respuesta, etc.
    • Ver ID fotográfico OpenPGP: permite ver la Foto ID de la persona que envió el mensaje, si tiene una foto incrustada en su clave pública (Esta opción sólo se activará si existe un ID fotográfico en su clave).
    • Información de seguridad S/MIME: permite ver la información de seguridad S/MIME del mensaje.

    Si no tiene puesta la opción keyserver-options auto-key-retrieve en su archivo gpg.conf y lee un mensaje que está firmado o cifrado, verá un icono de un Lápiz en el área de visión de las cabeceras con un Signo de interrogación y, la línea de estado de Enigmail en el área de las cabeceras dirá: Parte del mensaje firmado; pulse el icono del lápiz para más detalles y el mensaje en el panel de mensajes mostrará todos los indicadores del bloque del mensaje OpenPGP y el bloque de la firma.

    También se puede ver esto si tiene activada la opción keyserver-options auto-key-retrieve en su archivo gpg.conf y la clave OpenPGP no está disponible en el servidor de claves predeterminado.

    Al pulsar en el icono del Lápiz y Signo de interrogación abrirá una ventana avisando que la clave no está disponible en el anillo de claves. Al pulsar en Aceptar abrirá otra ventana con una lista de servidores de claves en los que puede seleccionar para descargar la clave pública del remitente.

    Para configurar la lista de servidores de claves que desee usar, vaya a la pestaña Enigmail -> Preferencias -> Básicas e introduzca la dirección de los servidores de claves en el recuadro Servidor(es) de claves: separados por una coma. El primer servidor de claves de la lista se usará como predeterminado.

  • Abrir adjuntos cifrados / importar claves OpenPGP adjuntas
    Los adjuntos con el nombre *.pgp, *.asc y *.gpg se reconocen como adjuntos que se pueden manejar especialmente con Enigmail. Al pulsar con el botón derecho en un adjunto de este tipo se activan dos elementos especiales en el menú contextual: Descifrar y Abrir y Descifrar y Guardar. Use estos elementos si desea que Enigmail descifre un adjunto antes de abrirlo o guardarlo. Si se reconoce un adjunto como un archivo de clave OpenPGP, se le ofrece la posibilidad de importar las claves a sus anillos.

Más ayuda disponible en la página Web de ayuda de Enigmail

enigmail/lang/es-AR/help/rulesEditor.html000066400000000000000000000066751266701624400206400ustar00rootroot00000000000000 Ayuda de Enigmail: Editor de reglas

Ayuda de Enigmail

Usando el editor de reglas de Enigmail

En el editor de reglas, se pueden especificar opciones predeterminadas por destinatario para activar el cifrado, firma y PGP/MIME, así como definir qué clave(s) OpenPGP usar. Cada regla consiste de 5 campos y se representa en una sola línea:

  • Correo electrónico: Las direcciones de correo en los campos Para:, Cc: y Cco: tienen que coincidir. La coincidencia funciona en subcadenas (Más detalles en el diálogo de Editar regla)
  • Clave(s) OpenPGP: Una lista de IDs de claves OpenPGP para usar con el destinatario.
  • Firmar: Activar o desactivar el firmado de mensajes. Esta opción usa o ignora lo que se haya especificado en la ventana de redacción de mensajes. Los valores son:
    • Nunca: Desactiva la firma, incluso si estaba activada en la ventana de redacción del mensaje (tiene preferencia sobre los otros valores).
    • Posible: Deja la firma como se haya especificado en la ventana de redacción de mensajes.
    • Siempre: Activar la firma, incluso si no está activada en la ventana de redacción de mensajes.
Estas opciones de firma se aplican a todas las reglas que las cumplan. Si una de las reglas desactiva la firma, el mensaje no se firmará, independientemente de otras reglas que especifiquen Siempre.
  • Cifrar: Activa o desactiva el cifrado del mensaje. Las opciones permitidas y su significado son las mismas que para la firma.
  • PGP/MIME: Activa o desactiva el uso de la codificación del mensaje PGP/MIME (RFC 3156). Si PGP/MIME está desactivado, los mensajes se codifican usando "PGP integrado". Los valores permitidos y su significado son los mismos que para la firma de mensajes.

Las reglas se procesan en el orden mostrado en la lista. Cuando una regla coincida con un destinatario y contenga un ID de clave OpenPGP, además de usar el ID de clave especificado, el destinatario no se tendrá en consideración al procesar más reglas.

NOTA: El editor de reglas aún no está completo. Es posible escribir algunas reglas más avanzadas editando directamente el archivo de reglas (en cuyo caso, éstas no se deben volver a editar mediante el editor). Más información para editar el archivo directamente se encuentra disponible en la página Web de Enigmail.


Más ayuda disponible en la página Web de ayuda de Enigmail

enigmail/lang/es-AR/help/sendingPrefs.html000066400000000000000000000047771266701624400207670ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/es-ES/000077500000000000000000000000001266701624400145105ustar00rootroot00000000000000enigmail/lang/es-ES/am-enigprefs.properties000066400000000000000000000001221266701624400211760ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Seguridad OpenPGP enigmail/lang/es-ES/enigmail.dtd000066400000000000000000001313551266701624400170020ustar00rootroot00000000000000 Seguridad OpenPGP)"> NOTA: Generar la clave puede llegar a tardar varios minutos. No salga de la aplicación mientras se esté generando la clave. Navegar por internet o realizar operaciones que hagan un uso intensivo del disco volverá a llenar la 'fuente de aleatoriedad' y acelerará el proceso. Se le avisará cuando se haya completado la generación de claves."> ' no es válido."> NOTA: la generación de claves puede tardar varios minutos en completarse. No abandone la aplicación mientras se están generado. Se le avisará cuando las claves se hayan terminado de generar."> Nota: Enigmail siempre comprobará las firmas en los correos de cada cuenta o identidad, tanto si está activada como si no"> clave pública es para que otros el envíen correos cifrados. Puede distribuirla a todo el mundo."> clave privada es para que usted mismo descifre estos correos y envía correos firmados. No debería dársela a nadie."> clave privada es para que usted descrifre estos correos ye envíe correos cifrados. No debería dársela a nadie. Para asegurar su clave privada, se le pedirá una contraseña en los siguientes dos diálogos."> contraseña es una palabra para proteger su clave privada. Evita el mal uso de su clave privada."> Se le pedirá que escriba una contraseña para esto."> Gracias por usar Enigmail."> enigmail/lang/es-ES/enigmail.properties000066400000000000000000000766151266701624400204320ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerta de Enigmail enigConfirm=Confirmación de Enigmail enigError=Error de Enigmail enigPrompt=Línea de comandos de Enigmail dlgYes=&Sí dlgNo=&No dlgKeepSetting=Recordar mi respuesta y no volver a preguntarme dlgNoPrompt=No volver a mostrarme este diálogo dlg.button.delete=&Borrar dlg.button.cancel=&Cancelar dlg.button.close=&Cerrar dlg.button.continue=Con&tinuar dlg.button.skip=&Omitir dlg.button.view=&Ver dlg.button.retry=&Reintentar dlg.button.ignore=&Ignorar repeatPrefix=Esta alerta se repetirá %S repeatSuffixSingular=vez más. repeatSuffixPlural=veces más. noRepeat=\n\nEsta alerta no se repetirá hasta que actualice Enigmail. pgpNotSupported=Parace que está usando Enigmail junto con PGP 6.x\n\ndesafortunadamente, PGP 6.x tiene algunos problemas que impiden que Enigmail funcione correctamente. Por ello, Enigmail ya no soporta PGP 6.x. Por favor, use GnuPG (GPG) en su lugar.\n\nSi necesita ayuda para cambiar a GnuPG, compruebe la sección de Ayuda en la página web de Enigmail. initErr.howToFixIt=Para poder usar Enigmail es necesario GnuPG. Si no lo ha instalado todavía, la forma más fácil de hacerlo es usar el botón «Asistente de Configuración» de abajo. initErr.setupWizard.button=Asistente de &Configuración passphraseCleared=Se ha eliminado la contraseña. noPhotoAvailable=No hay foto disponible debugLog.title=Registro de depuración de Enigmail error.photoPathNotReadable=La ubicación de la foto '%S' no es accesible # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=La nueva versión de Enigmail contiene cambios significativos en la gestión de las preferencias y opciones. Se ha intentado transferir la configuración antigua a la nueva versión. Sin embargo, no podemos cubrir todos los casos automáticamente. Por favor, compruebe dos veces las preferencias y opciones resultante. enigmailCommon.checkPreferences=Comprobar preferencias... usingVersion=Ejecutando Enigmail versión %S usingAgent=Usando el ejecutable %S %S para cifrar y descifrar agentError=ERROR: ¡Fallo al acceder al servicio Enigmime! accessError=Error al acceder al servicio Enigmail onlyGPG=¡Generar la clave funciona sólo con GnuPG (no con PGP)! keygenComplete=!Se ha terminado de generar la clave! Se usará la identidad <%S> para firmar. revokeCertRecommended=Recomendamos firmemente crear un certificado de revocación para su clave. Este certificado puede usarse para invalidar su clave, p. ej. si su clave privada se pierde o resulta comprometida. ¿Desea crear ahora dicho certificado de revocación? keyMan.button.generateCert=&Generar certificado genCompleteNoSign=¡La clave ha sido generada! genGoing=!Ya se está generando la clave! passNoMatch=Las entradas de la contraseña no coinciden. Por favor, inténtelo de nuevo passCheckBox=Por favor, marque la casilla si no quiere especificar una contraseña para la clave passUserName=Por favor, indique un nombre de usuario para esta identidad keygen.passCharProblem=Está usando caracteres especiales en su contraseña. Por desgracia, esto puede causar problemas en otras aplicaciones. Le recomendamos que use una contraseña que contenga solo estos caracteres:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Debido a razones técnicas, su contraseña no puede comenzar con un espacio. changePassFailed=Fallo al cambiar la contraseña. keyConfirm=¿Generar claves públicas y privadas para '%S'? keyMan.button.generateKey=&Generar clave keyAbort=¿Abortar la generación de la clave? keyMan.button.generateKeyAbort=&Abortar la generación de la clave keyMan.button.generateKeyContinue=&Continuar la generación de la clave expiryTooLong=No se puede crear una clave que caduque dentro de más de 100 años. expiryTooLongShorter=No se puede crear una clave que caduque dentro de más de 90 años. expiryTooShort=Su clave debe ser válida al menos durante un día. dsaSizeLimit=Las claves de firmado DSA están limitadas a 3072 bits. El tamaño de la clave se reducirá en consecuencia. keyGenFailed=Ha fallado la generación de la clave. Por favor, compruebe la consola de Enigmail (menú Enigmail > Depurar Enigmail) para ver los detalles. setKeyExpirationDateFailed=No se pudo cambiar la fecha de caducidad # Strings in enigmailMessengerOverlay.js securityInfo=Información de seguridad Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Los adjuntos de este mensaje no han sido firmados ni cifrados*\n\n possiblyPgpMime=El mensaje posiblemente está firmado o cifrado con PGP/MIME. Pulse el botón Descifrar para comprobarlo noDecrypted=¡No hay mensajes descifrados para guardar!\nUse el comando Guardar del menú Archivo noMessage=¡No hay mensajes para guardar! useButton=Por favor, pulse el botón Descifrar para descifrar el mensaje saveHeader=Enigmail: Guardar mensaje descifrado saveAttachmentHeader=Enigmail: Guardar adjunto descifrado noTempDir=No se pudo encontrar un directorio temporal para escribir\nPor favor, establezca la variable de entorno TEMP attachmentPgpKey=El adjunto '%S' que está abriendo parece un fichero de clave OpenPGP.\n\nPulse 'Importar' para importar las claves que contenga o 'Ver' para ver el contenido del fichero en una ventana del navegador beginPgpPart=********* *PRINCIPIO DE LA PARTE CIFRADA o FIRMADA* ********* endPgpPart=********** *FIN DE LA PARTE CIFRADA o FIRMADA* ********** notePartEncrypted=Enigmail: *Partes del mensaje NO han sido firmadas o cifradas* noteCutMessage=Enigmail: *Se han encontrado múltiples bloques de mensajes. Se ha abortado el descifrado o verificación* decryptOkNoSig=Aviso:\n\nSe pudo descifrar correctamente, pero no se pudo verificar la firma. msgOvl.button.contAnyway=&Continuar de todos modos signature.verifiedOK=La firma del adjunto %S ha sido verificada correctamente signature.verifyFailed=La firma del adjunto %S no se ha podido verificar attachment.noMatchToSignature=No se ha podido asociar el adjunto '%S' a un fichero de firma attachment.noMatchFromSignature=No se ha podido asociar el fichero de firma '%S' a un adjunto fixBrokenExchangeMsg.failed=No se pudo reparar el mensaje. keysToExport=Seleccionar claves OpenPGP a insertar keysToUse=Seleccione la(s) clave(s) OpenPGP a usar para %S pubKey=Clave pública para %S\n windowLocked=La ventana de Redactar está bloqueada. Envío cancelado sendUnencrypted=Fallo al inicializar Enigmail.\n¿Enviar mensaje sin cifrar? composeSpecifyEmail=Por favor, especifique su dirección de correo principal, que se usará para elegir la clave para firmar los mensajes salientes.\nSi la deja en blanco, se usará la dirección que aparece en el campo DE del mensaje para elegir la clave de firmado. sendingHiddenRcpt=Este mensaje tiene destinatarios BCC (copia oculta). Si se cifra este mensaje, es posible ocultar los destinatarios BCC, pero los usuarios de algunos productos (por ej. PGP Corp.) no podrán descifrar el mensaje. Por eso, recomendamos evitar correos con copia oculta con mensajes cifrados. sendWithHiddenBcc=Ocultar destinatarios BCC sendWithShownBcc=Cifrar normalmente sendingNews=Se canceló la operación de envío cifrado.\n\nEste mensaje no se puede cifrar porque hay destinatarios que son grupos de noticias. Por favor, vuelva a enviar el mensaje sin cifrado. sendToNewsWarning=Advertencia: usted está por enviar un mensaje cifrado a un grupo de noticias.\n\nEsto se desaconseja porque sólo tiene sentido si todos los miembros del grupo pueden descifrar el mensaje, por ej. el mensaje debe ser cifrado con las claves de todos los participantes del grupo. Por favor envíe este mensaje solamente si sabe exactamente lo que está haciendo.\n\n¿Continuar? hasHTML=Aviso de correo HTML:\nEste mensaje puede contener HTML, lo que podría causar que falle la firma o el cifrado. Para evitar esto en el futuro, debe pulsar la tecla MAYÚSCULAS mientras pulsa el botón de Redactar o Responder para enviar correo cifrado.\nSi firma el correo de manera predeterminada, debería desmarcar la opción 'Redactar mensajes en formato HTML' para desactivar permanentemente el correo en formato HTML para esta cuenta. strippingHTML=El mensaje contiene información de formato HTML que se perderá al convertirlo a texto simple para firmar o cifrar. ¿Desea continuar? msgCompose.button.sendAnyway=&Enviar el mensaje de todos modos attachWarning=Los adjuntos de este mensaje no son locales, por lo que no se pueden cifrar. Para cifrar estos adjuntos, primero guárdelos como ficheros locales y adjúntelos. ¿Desea continuar? quotedPrintableWarn=Ha activado la codificación 'quoted-printable' para enviar mensajes. Esto puede resultar en un cifrado o verificación incorrectos de su mensaje.\n¿Desea desactivar ahora el envío de mensajes en formato 'quoted-printable'? minimalLineWrapping=Tiene que establecer el ajuste de línea a %S caracteres. Para un cifrado y/o firmado correctos, este valor necesita ser al menos 68.\n¿Desea cambiar ahora el ajuste de línea a 68 caracteres? warning=Aviso signIconClicked=Ha modificado el firmado manualmente. Por lo tanto, mientras esté redactando el mensaje (des)activar el firmado ya no depende de (des)activar el cifrado. pgpMime_sMime.dlg.text=Ha activado PGP/MIME y S/MIME al mismo tiempo. Desafortunadamente no es posible soportar ambos protocolos al mismo tiempo. Por favor seleccione si desea usar PGP/MIME o S/MIME. pgpMime_sMime.dlg.pgpMime.button=Usar &PGP/MIME pgpMime_sMime.dlg.sMime.button=Usar &S/MIME errorKeyUnusable=La dirección de correo electrónico o la clave con identificador '%S' no puede ser asociado a una clave OpenPGP válida y que no haya caducado.\nPor favor, asegúrese de que tiene una clave OpenPGP válida, y de que la configuración de su cuenta apunta a dicha clave. msgCompose.internalEncryptionError=Error interno: desactivada el cifrado prometido msgCompose.toolbarTxt.signAndEncrypt=Este mensaje se firmará y cifrará msgCompose.toolbarTxt.signOnly=Este mensaje se firmará msgCompose.toolbarTxt.encryptOnly=Este mensaje se cifrará msgCompose.toolbarTxt.noEncryption=Este mensaje no será firmado ni cifrado msgCompose.toolbarTxt.disabled=Enigmail está desactivado para la identidad seleccionada msgCompose.toolbarTxt.smime=S/MIME está activo - conflicto potencial con Enigmail # note: should end with double newline: sendAborted=Operación de envío abortada. # details: keyNotTrusted=Confianza insuficiente para la clave «%S» keyNotFound=Clave «%S» no encontrada keyRevoked=Clave «%S» revocada keyExpired=Clave «%S» expirada statPGPMIME=PGP/MIME statSigned=FIRMADO statEncrypted=CIFRADO statPlain=SIN CIFRAR y SIN FIRMAR offlineSave=¿Guardar el mensaje %S para %S en la carpeta de mensajes no enviados? onlineSend=¿Enviar el mensaje %S a %S? encryptKeysNote=Nota: el mensaje está cifrado con los siguientes identificadores de usuario o claves: %S hiddenKey= signFailed=Error en Enigmail: Fallo al cifrar o firmar. ¿Enviar el mensaje sin cifrar? msgCompose.button.sendUnencrypted=&Enviar mensaje sin cifrar recipientsSelectionHdr=Seleccionar destinatarios para cifrado configureNow=No ha configurado la seguridad Enigmail para la identidad seleccionada. ¿Desea hacerlo ahora? encryptOff=Cifrado: desactivado encryptOnWithReason=Cifrado: activado (%S) encryptOffWithReason=Cifrado: desactivado (%S) encryptOn=Cifrado: activado signOn=Firmado: activado signOff=Firmado: desactivado signOnWithReason=Firmado: activado (%S) signOffWithReason=Firmado: desactivado (%S) reasonEnabledByDefault=activo por defecto reasonManuallyForced=forzado manualmente reasonByRecipientRules=forzado por reglas de destinatarios reasonByAutoEncryption=fozado por auto-cifrado reasonByConflict=debido a conflicto en reglas de destinatarios reasonByEncryptionMode=debido al modo de cifrado # should not be used anymore: encryptYes=El mensaje se cifrará encryptNo=El mensaje no se cifrará # should not be used anymore: signYes=El mensaje se firmará signNo=El mensaje no se firmará # should not be used anymore pgpmimeYes=Se usará PGP/MIME pgpmimeNo=Se usará PGP integrado. rulesConflict=Se ha detectado un conflicto en las reglas por destinatario\n%S\n\n¿Enviar el mensaje con esta configuración? msgCompose.button.configure=&Configurar msgCompose.button.send=&Enviar mensaje msgCompose.button.save=&Guardar mensaje # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Se necesita la clave pública %S para verificar la firma keyUsed=Usada clave pública %S para verificar la firma clickDecrypt=; pulse el botón Descifrar clickDecryptRetry=; pulse el botón Descifrar para volver a intentarlo clickDetailsButton=; pulse el botón «Detalles» para más información clickImportButton=; pulse el botón «Importar clave» para descargar la clave keyTypeUnsupported=; el tipo de clave no está soportado por su versión de GnuPG msgPart=Parte del mensaje %S msgSigned=firmado msgSignedUnkownKey=firmado con clave desconocida msgEncrypted=cifrado msgSignedAndEnc=firmado y cifrado unverifiedSig=Firma sin verificar incompleteDecrypt=Descifrado incompleto needKey=Error - se necesita la clave secreta para descifrar el mensaje failedDecrypt=Error - fallo al descifrar badPhrase=Error - contraseña incorrecta failedDecryptVerify=Error - fallo al descifrar o verificar viewInfo=; Ver -> Información de seguridad del mensaje para detalles decryptedMsg=Mensaje descifrado decryptedMsgWithFormatError=Mensaje descifrado (restaurado formato de correo PGP roto causado probablemente por un servidor Exchange antiguo, así que el resultado puede no ser perfecto para leer) locateGpg=Buscar programa GnuPG invalidGpgPath=No se puede ejecutar GnuPG con la ruta proporcionada. Por lo tanto, se desactiva Enigmail hasta que vuelva a cambiar la ruta a GnuPG otra vez o se reinicie la aplicación. warningsAreReset=Todos los avisos han sido restaurados. prefs.gpgFound=Se encontró GnuPG en %S prefs.gpgNotFound=No se pudo encontrar GnuPG prefs.warnAskNever=Aviso: activar esta opción tendrá como resultado que los correos en donde no haya clave para uno de los destinatarios el correo irá sin cifrar, sin más información. ¡Enigmail no le informará si esto ocurre! prefs.warnIdleTimeForUnknownAgent=No se puede conectar con el agente gpg. Quizá su sistema use una herramienta especializada para la gestión de contraseñas, tal como gnome-keyring o seahorse-agent. Desafortunadamente Enigmail no puede controlar el tiempo de espera de las contraseñas para la herramienta que está usando. Por lo tanto, se omiten los parámetros de los respectivos tiempos de espera en Enigmail. prefEnigmail.oneKeyserverOnly=Error - sólo se puede especificar un servidor de claves para la descarga automática de claves OpenPGP faltantes. enterAdminPin=Por favor, escriba el PIN ADMINISTRATIVO de su tarjeta inteligente enterCardPin=Por favor, escriba el PIN de su tarjeta inteligente notInit=Error - No se iniciado todavía el servicio Enigmail badCommand=Error - falló el comando de cifrado cmdLine=línea de comandos y salida: notRequired=Error - no es necesario cifrado notComplete=Error - no se ha terminado de generar la clave invalidEmail=Error - Las direcciones de correo no son válidas noPassphrase=Error - no se suministró contraseña noPGPblock=Error - No se encontró un bloque OpenPGP blindado válido unverifiedReply=La parte indentada del mensaje (la respuesta) probablemente ha sido modificada sigMismatch=Error - La firma no coincide cantImport=Error al importar la clave pública\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=La tarjeta inteligente %S encontrada en su lector no puede ser usada para procesar el mensaje.\nPor favor, inserte su tarjeta inteligente %S y repita la operación. sc.insertCard=La operación requiere su tarjeta inteligente %S.\nPor favor, inserte la tarjeta inteligente requerida y repita la operación. sc.removeCard=La operación requiere que no haya tarjetas inteligentes en el lector.\nPor favor, retire su tarjeta inteligente y repita la operación. sc.noCardAvailable=No se pudo encontrar ninguna tarjeta inteligente en su lector\nPor favor, inserte su tarjeta inteligente y repita la operación. sc.noReaderAvailable=No se pudo acceder a su lectora de tarjetas inteligentes\nPor favor, conecte su lector de tarjetas inteligentes, inserte la tarjeta y repita la operación. gpgNotFound=No se pudo encontrar el agente GnuPG '%S'.\nAsegúrese de que ha puesto correctamente la ruta al ejecutable GnuPG en las preferencias de Enigmail. gpgNotInPath=No se pudo encontrar el ejecutable GnuPG en el PATH.\nAsegúrese de que ha puesto correctamente la ruta al ejecutable GnuPG en las preferencias de Enigmail. gpgAgentNotStarted=No se pudo iniciar el programa gpg-agent necesario para su versión de GnuPG %S. prefUntrusted=SIN CONFIANZA prefRevoked=CLAVE REVOCADA prefExpiredKey=CLAVE CADUCADA prefExpired=CADUCADA prefGood=La firma de %S es correcta prefBad=Firma INCORRECTA de %S failCancel=Error - Recepción de clave cancelada por el usuario failNoServer=Error - No se especificó el servidor de claves para recibir la clave failNoID=Error - No se especificó un identificador para recibir la clave failKeyExtract=Error - falló el comando de extracción de clave notFirstBlock=Error - El primer bloque OpenPGP no es un bloque de clave pública importKeyConfirm=¿Importar la(s) clave(s) pública(s) incluida(s) en el mensaje? failKeyImport=Error - fallo al importar la clave fileWriteFailed=No se pudo escribir en el fichero %S importKey=Importar clave pública %S del servidor de claves: uploadKey=Enviar clave pública %S al servidor de claves: keyId=Identificador de clave keyAndSigDate=Identificador de clave: 0x%S / Firmada el: %S keyFpr=Huella digital de la clave: %S noEmailProvided=¡No se proporcionó una dirección de correo electrónico! keyAlreadySigned=La clave ya está firmada, no se puede firmar dos veces. gnupg.invalidKey.desc=La clave %S no se ha encontrado o no es válida. Es posible que la (sub)clave haya caducado. selKeyExpired=caducada %S createdHeader=Creada atLeastOneKey=¡No se seleccionó una clave! Tiene que seleccionar al menos una clave para aceptar este diálogo fewerKeysThanRecipients=Ha seleccionado un número menor de claves que de destinatarios. ¿Está seguro de que la lista de claves para cifrar está completa? userSel.button.goBack=Seleccione más claves userSel.secretKeySel.title=Seleccione una clave secreta OpenPGP para firmar sus mensajes userSel.problemNoKey=Clave no válida userSel.problemMultipleKeys=Claves múltiples # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Enviar más tarde # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: ¡PGP/MIME sólo está soportado en un número reducido de clientes de correo! En Windows, sólo Mozilla/Thunderbird, Sylpheed, Pegasus y Mulberry son conocidos por soportar esta norma; en Linux/UNIX y Mac OS X la mayoría de los clientes de correo lo soportan. Si no está seguro, seleccione la opción %S. first=primero second=segundo # Strings used in am-enigprefs.js encryptKeyHeader=Seleccione clave OpenPGP para cifrar identityName=Identidad: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Tiene el cifrado activado, pero no seleccionó una clave. Para cifrar correo para %S, necesita especificar una o varias claves válidas de la lista de claves. ¿Desea desactivar el cifrado para %S? noKeyToUse=(ninguno - sin cifrado) noEmptyRule=¡La regla no puede estar vacía! Por favor, establezca una dirección de correo electrónico en el campo Regla. invalidAddress=Las direcciones de correo introducidas no son válidas. No debería poner los nombres de los destinatarios, sólo las direcciones de correo electrónico. Ej:\nNo válido: Algún Nombre \nVálido: algun.nombre@direccion.net noCurlyBrackets=Las llaves {} tienen un significado especial y no se deben usar en las direcciones de correo electrónico. Si desea modificar el comportamiento de esta regla, use la opción 'Aplicar regla si el destinatario ...'\nHay más información en el botón de Ayuda. # Strings used in enigmailRulesEditor.js never=Nunca always=Siempre possible=Posible deleteRule=¿Realmente quiere borrar la regla seleccionada? nextRcpt=(Siguiente destinatario) negateRule=No addKeyToRule=Añadir clave %S (%S) a la regla por destinatario # Strings used in enigmailSearchKey.js needOnline=La función seleccionada no está disponible en modo sin conexión. Por favor, pase a modo con conexión y vuelva a intentarlo. protocolNotSupported=El protocolo '%S://' que ha seleccionado no está soportado para descargar claves OpenPGP. gpgkeysDisabled=Podría ser útil activar la opción 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=No se pudo conectar con el servidor de claves en %S. keyDownloadFailed=Fallo al descargar la clave del servidor de claves. El mensaje de estado es:\n%S internalError=Ha ocurrido un error interno. No se pudieron descargar o importar las claves. noKeyFound=Lo siento, no se pudo encontrar ninguna clave que coincidiera con el criterio de búsqueda especificado. Por favor, tenga en cuenta que el identificador de la clave debe estar prefijado con "0x" (p. ej. 0XABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Fallo al buscar o descargar la clave del servidor de claves: no se pudo ejecutar gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Fallo al establecer confianza en el propietario # Strings in enigmailSignKeyDlg.js signKeyFailed=Fallo al firmar la clave alreadySigned.label=Nota: la clave %S ya está firmada con la clave secreta seleccionada. partlySigned.label=Nota: algunos IDs de usuario de la clave %S ya están firmados con la clave secreta seleccionada. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Cargando claves. Por favor, espere ... keyValid.unknown=desconocida keyValid.invalid=inválida keyValid.disabled=desactivada keyValid.revoked=revocada keyValid.expired=caducada keyValid.noSubkey=subclave no váida keyTrust.untrusted=sin confianza keyTrust.marginal=poca keyTrust.full=total keyTrust.ultimate=absoluta keyTrust.group=(grupo) keyType.public=pública keyType.publicAndSec=pública/secreta keyMan.enableKey=Activar clave keyMan.disableKey=Desactivar clave userAtt.photo=Atributo de usuario (imagen JPEG) asciiArmorFile=Ficheros ASCII armado (*.asc) importKeyFile=Importar fichero de clave OpenPGP gnupgFile=Ficheros GnuPG saveRevokeCertAs=Crear y guardar certificado de revocación revokeCertOK=El certificado de revocación se ha creado correctamente. Puede usarlo para invalidar su clave pública, p. ej, si pierde su clave secreta.\n\nPor favor, transfiéralo a un soporte que se pueda guardar de forma segura, como un CD o un disquete. Si alguien obtiene acceso a este certificado, puede usarlo para inutilizar su clave. revokeCertFailed=No se pudo crear el certificado de revocación. addUidOK=Identificador de usuario añadido correctamente addUidFailed=Fallo al añadir el identificador de usuario noKeySelected=Debe seleccionar al menos una clave para realizar la operación seleccionada exportToFile=Exportar clave pública a un fichero exportKeypairToFile=Exportar clave pública y secreta a un archivo exportSecretKey=¿Desea incluir la clave privada en el fichero guardado de claves OpenPGP? saveKeysOK=Las claves se guardaron correctamente saveKeysFailed=Fallo al guardar las claves importKeysFailed=Fallo al importar las claves enableKeyFailed=Fallo al activar o desactivar las claves specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Claves públicas exportadas defaultPubSecKeyFilename=Claves-públicas-y-secretas-exportadas noSecretKeys=No se encontraron claves secretas.\n\n¿Desea generar su propia clave secreta ahora? sendKeysOk=Clave(s) enviada(s) correctamente sendKeysFailed=Fallo al enviar las claves receiveKeysOk=Las claves se actualizaron correctamente receiveKeysFailed=Fallo al descargar las claves importFromClip=¿Desea importar alguna(s) clave(s) desde el portapapeles? copyToClipbrdFailed=No se pudieron copiar las claves seleccionadas al portapapeles. copyToClipbrdOK=Clave(s) copiada(s) al portapapeles deleteSecretKey=AVISO: ¡Está a punto de borrar una clave privada!\nSi borra su clave privada, ya no será capaz de descifrar los mensajes cifrados para esa clave, y no podrá revocar su clave.\n\n¿Realmente desea borrar AMBAS, la clave privada y la pública\n'%S'? deleteMix=AVISO: ¡Está a punto de borrar claves privadas!\nSi borra su clave privada, ya no será capaz de descifrar los mensajes cifrados para esa clave.\n\n¿Realmente desea borrar AMBAS, las claves privada y pública seleccionadas? deletePubKey=¿Desea borrar la clave pública\n'%S'? deleteSelectedPubKey=¿Desea borrar las claves públicas? deleteKeyFailed=No se pudo borrar la clave. revokeKeyQuestion=Está a punto de revocar la clave «%S».\n\nNo podrá volver a firmar con esta clave y cuando se distribuya los demás tampoco podran cifrar con esta clave. Aún podrá usar la clave para descifrar mensajes antiguos.\n\n¿Quiere continuar? revokeKeyOk=La clave ha sido revocada. Si su clave está disponible en un servidor de claves, se recomienda volver a subirla, de forma que otros puedan ver la revocación. revokeKeyFailed=No se pudo revocar la clave. refreshAllQuestion=No ha seleccionado ninguna clave. ¿Desea refrescar TODAS las claves? refreshKey.warn=Aviso: dependiendo del número de claves y la velocidad de la conexión, ¡refrescar todas las claves puede ser un proceso bastante lento! downloadContactsKeys.warn=Advertencia: dependiendo del número de contactos y de la velocidad de conexión, descargar todas las claves puede que llevar bastante tiempo, downloadContactsKeys.importFrom=¿Importar los contactos de la libreta de direcciones '%S'? keyMan.button.exportSecKey=&Exportar claves secretas keyMan.button.exportPubKey=Exportar sólo claves &públicas keyMan.button.import=&Importar keyMan.button.refreshAll=&Refrescar todas las claves keyMan.button.revokeKey=&Revocar clave keyMan.button.skip=&Omitir clave keylist.noOtherUids=No tiene otras identidades keylist.hasOtherUids=También conocido como keylist.noPhotos=No hay fotografía disponible keylist.hasPhotos=Fotografías keyMan.addphoto.filepicker.title=Seleccione una foto para añadir keyMan.addphoto.warnLargeFile=El fichero que ha seleccionado parece mayor de 25 kB.\nNo se recomienda añadir ficheros demasiado grandes porque esto hace que las claves sean demasiado grandes. keyMan.addphoto.noJpegFile=El fichero seleccionado no parece ser un fichero JPEG. Por favor, seleccione un fichero diferente. keyMan.addphoto.failed=No se ha podido añadir la foto. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Fallo al cambiar el identificador del usuario primario changePrimUidOK=El identificador de usuario primario se cambió correctamente deleteUidFailed=Fallo al borrar el identificador de usuario %S deleteUidOK=El identificador de usuario %S se borró correctamente revokeUidFailed=Fallo al revocar el identificador de usuario %S revokeUidOK=El identificador de usuario %S se revocó correctamente. Si su clave está disponible en un servidor de claves, se recomienda volver a subirla, de forma que otros puedan ver la revocación. revokeUidQuestion=¿Realmente desea revocar el identificador de usuario %S? deleteUidQuestion=¿Realmente desea borrar el identificador de usuario %S?\n\nPor favor, tenga en cuenta que si ha enviado la clave pública a un servidor de claves, el borrar el identificador de usuario no cambiará nada. En este caso, debería usar 'Revocar identificador de usuario'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=clave pública keyTypePrimary=clave primaria keyTypeSubkey=subclave keyTypePair=par de claves keyExpiryNever=nunca keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyUsageEncrypt=Cifrar keyUsageSign=Firmar keyUsageCertify=Certificar keyUsageAuthentication=Autenticación # Strings in enigmailGenCardKey.xul keygen.started=Por favor, espere mientras se está generando la clave .... keygen.completed=Clave generada. El nuevo identificador de la clave es: 0x%S keygen.keyBackup=Se ha respaldado la clave como %S keygen.passRequired=Por favor, especifique una contraseña si desea crear una copia de seguridad de su clave fuera de su tarjeta inteligente. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=El PIN introducido no coincide; por favor, introdúzcalo de nuevo cardPin.minLength=El PIN debe tener al menos %S caracteres o números cardPin.processFailed=Se produjo un fallo al cambiar el PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Refrescando las claves. Por favor, espere ... keyserverProgress.uploading=Subiendo claves. Por favor, espere ... keyserverTitle.refreshing=Refrescar claves keyserverTitle.uploading=Subir claves # Strings in enigmailSetupWizard passphrase.min8keys=¡Su contraseña debería contener al menos 8 caracteres! setupWizard.reallyCancel=¿Realmente desea cancelar el asistente de instalación de Enigmail? setupWizard.invalidGpg=El fichero que ha especificado no es ejecutable GnuPG. Por favor, especifique un fichero diferente. setupWizard.specifyFile=Necesita especificar al menos un fichero de clave pública para proceder. setupWizard.installFailed=Parece que la instalación no ha tenido éxito. Intente de nuevo la instalación o instale GnuPG de forma manual y selecciónelo usando el botón Navegar. setupWizard.downloadForbidden=Por su propia seguridad, no descargaremos GnuPG. Visite http://www.gnupg.org/ para hacerlo. setupWizard.downloadImpossible=Actualmente no podemos descargar GnuPG. Inténtelo más tarde o visite http://www.gnupg.org/ para hacerlo. setupWizard.hashSumError=El asistente no ha podido verificar la integridad del archivo descargado. El archivo puede estar roto o manipulado. ¿Quiere continuar la instalación de todas formas? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Se ha producido un error al intentar descargar GnuPG. Comprube el registro de la consola para más detalles. installGnuPG.installFailed=Se ha producido un error al instalar GnuPG. Compruebe el registro de la consola para más detalles. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Debe introducir un nombre y una dirección de correo electrónico addUidDlg.nameMinLengthError=El nombre debe tener al menos 5 caracteres addUidDlg.invalidEmailError=Debe especificar una dirección de correo electrónico válida addUidDlg.commentError=No se permiten corchetes en los comentarios # Strings in enigmailCardDetails.js Carddetails.NoASCII=Las tarjetas inteligentes de OpenGPG solo permiten caracteres ASCII en Nombre. # network error types errorType.SecurityCertificate=El certificado de seguridad presentado por el servicio web no es válido. errorType.SecurityProtocol=El protocolo de seguridad usado por el servicio web es desconocido. errorType.Network=Se ha producido un error de red. # filter stuff filter.folderRequired=Debe seleccionar una carpeta destino. filter.decryptMove.label=Descifrar permanentemente (Enigmail) filter.decryptCopy.label=Crear una copia no cifrada (Enigmail) filter.decryptMove.warnExperimental=Advertencia - la acción de filtro «Descrifrar permanentemente» puede conducir a mensajes destruidos.\n\nLe recomendamos encarecidamente que primero intente el filtro «Crear una copia no cifrada», compruebe los resultados con cuidado y solo comience a usar este filtro una vez que esté satisfecho con el resultado. # strings in enigmailConvert.jsm converter.decryptBody.failed=No se pudo descifrar el mensaje con asunto\n«%S».\n¿Quiere intentarlo de nuevo con una contraseña diferente o quiere omitir el mensaje? converter.decryptAtt.failed=No se pudo descifrar el adjunto «%1$S»\ndel mensaje con asunto\n«%2$S».\n¿Quiere intentarlo de nuevo con una contraseña diferente o quiere omitir el mensaje? saveLogFile.title=Guardar archivo de trazas enigmail/lang/es-ES/help/000077500000000000000000000000001266701624400154405ustar00rootroot00000000000000enigmail/lang/es-ES/help/compose.html000066400000000000000000000105511266701624400177750ustar00rootroot00000000000000 Enigmail Help: Message Composition

Ayuda de Enigmail

Uso de Enigmail al redactar mensajes

  • Menú Enigmail en la ventana de Redacción de Correo
    • Firmar mensaje: Activa/Desactiva el envío de mensajes firmados. El usuario es notificado si el firmado falla.
    • Cifrar mensaje: Activa/Desactiva el cifrado para el(los) destinatario(s) antes del envío. El usuario es notificado si el cifrado falla.

      Si Mostrar selección cuando sea necesario está seleccionado en Preferencias -> pestaña Selección de Claves, una lista de claves aparecerá si hay direcciones en la lista de destinatarios para los que usted no tenga clave pública.

      Si Nunca mostrar diálogo de selección de clave OpenPGP está seleccionado en Preferencias -> pestaña Selección de Claves, y hay direcciones en la lista de destinatarios para los cuales usted no tiene clave pública, el mensaje será enviado sin cifrar.

    • Usar PGP/MIME para este mensaje : Activa/Desactiva el uso de PGP/MIME para este mensaje.

      Si usted sabe que el(los) destinatario(s) pueden leer correos usando el formato PGP/MIME, usted debiera usarlo.

      Esta característica depende de la configuración en Preferencias -> pestaña PGP/MIME estando configurada para Permitir el uso de PGP/MIME o Siempre usar PGP/MIME.

    • Opciones por defecto para redacción: Submenú.
      • Opciones de Firma/Cifrado...: atajo a Configuración de Cuentas -> Opciones de OpenPGP.
      • Opciones de Envío...: atajo a la pestaña Opciones -> Enviando.
      • Opciones de Selección de Clave...: atajo a la pestaña Preferencias -> Selección de Clave.
      • Opciones PGP/MIME...: atajo a la pestaña Preferencias -> PGP/MIME.
    • Deshacer cifrado: Si hay un fallo al momento del envío, tal como el servidor POP no aceptando la petición, Enigmail no sabrá al respecto, y el mensaje cifrado continuará siendo mostrado en la ventana de Redacción. Elegir este ítem de menú deshará el cifrado/firmado, devolviendo la ventana de Redacción a su texto original.
      Como una solución temporal, esta opción puede también ser usada para descifrar el texto citado cuando se responde a mensajes cifrados. Enigmail debiera descifrar automáticamente el texto citado, pero si eso falla por alguna razón, usted puede utilizar este ítem de menú para forzarlo.
    • Insertar clave pública: inserta la clave pública como un bloque de texto ASCII-blindado en la posición actual del cursor en la ventana de Redacción. Se le preguntará por la dirección email de la(s) clave(s) a ser insertada(s). Las Claves insertadas de esta manera serán reconocidas automáticamente en el lado receptor por Enigmail. Luego de la inserción de clave, usted aún puede elegir firmar/cifrar el mensaje como sea necesario. Además, no inserte más de un bloque de claves en un mensaje; sólo especifique múltiples direcciones email, separadas por comas o espacios, cuando se le pregunte.
    • Limpiar clave salvada: Limpia la contraseña retenida. útil si usted tiene múltiples contraseñas.
    • Ayuda: Despliega la información de Ayuda del sitio web (esta página).

Más ayuda disponible en la Página web de Ayuda de Enigmail

enigmail/lang/es-ES/help/editRcptRule.html000066400000000000000000000132331266701624400207360ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Ayuda de Enigmail

Usando el Editor de Reglas de Enigmail: Editar Regla OpenPGP

En el Editor de Reglas, usted puede especificar valores por defecto por destinatarios para activar cifrado, firmado y PGP/MIME, y para definir qué clave(s) OpenPGP utilizar. En este diálogo, usted puede especificar reglas para un único destinatario, y para un grupo de destinatarios con atributos muy similares.

  • Poner Regla OpenPGP para : Contiene la(s) dirección(es) email de el/los destinatario(s) (sin nombres, p.ej. sólo una dirección como alguien@email.dom). Usted puede especificar varias direcciones email, separadas por espacios. La dirección especificada aquí puede consistir sólo de la sección de dominio de modo que cualquier dirección en ese dominio concuerde, p.ej. @email.domain permitirá concordancia a body@email.comain, somebody@email.domain, anybody@email.domain, etc.
  • Aplicar regla si el destinatario ...: Esto modifica la concordancia de las direcciones email. Si se ingresa múltiples direcciones, la configuración se aplicará a todas. Los ejemplos abajo están basados en body@email.domain ingresado en el campo Poner Regla OpenPGP para más arriba.
    • Es exactamente: con esta configuración, la regla sólo se disparará en emails para body@email.domain (comparación exacta, sin considerar mayúsculas/minúsculas).
    • Contiene: con esta configuración, cualquier dirección email que contenga el patrón concuerda, p.ej. anybody@email.domain o body@email.domain.net
    • Empieza por : con esta configuración, cualquier dirección email comenzando con el patrón concuerda, p.ej. body@email.domain.net, body@email.domain-name.com.
    • Acaba en: con esta configuración, cualquier dirección email finalizando en el patrón concuerda, p.ej. anybody@email.domain, somebody@email.domain.
  • Continuar con la siguiente regla para la dirección que coincida
    Activar esta función le permitirá definir una regla pero no tener que especificar un KeyID en el campo Usar las siguientes claves OpenPGP: , de modo que la dirección email es usada para buscar una clave al momento de enviar. Además, reglas adicionales para la(s) misma(s) dirección(es) también será(n) procesada(s).
  • No comprobar más reglas para la dirección que coincida
    Activar esta función detiene el procesamiento de cualquier otra regla para la(s) dirección(es) que coincide(n) si es que la regla coincide; p.ej. el procesamiento de reglas continúa con el siguiente destinatario.
  • Usar las siguientes claves OpenPGP:
    Use el botón Seleccionar Clave(s).. para seleccionar las claves receptoras a ser usadas para el cifrado. Como en la acción de arriba, no se sigue procesando más reglas para la(s) dirección(es) coincidentes.
  • Por defecto para Firmado: activa o desactiva la firma de mensaje. Esto o bien usa o anula lo que usted ha especificado en la ventana de redacción de mensaje. Los valores son:
    • Nunca: desactiva el firmado, incluso si está activado en la ventana de redacción de mensaje (anula los otros valores)
    • Sí, si está seleccionado en la redacción del mensaje: deja el firmado tal como está especificado en la ventana de redacción del mensaje
    • Siempre: activa el firmado, incluso si no estaba activado en la ventana de redacción del mensaje
Esas configuraciones para firmado son aplicadas para todas las reglas que coinciden. Si una de las reglas desactiva el firmado, el mensaje no será firmado, sin importar otras reglas que especifiquen Siempre.
  • Cifrado: activa o desactiva el cifrado de mensaje. Las configuraciones permitidas y su significado son las mismas que para la firma de mensajes.
  • PGP/MIME: activa o desactiva el uso de la codificación de mensaje PGP/MIME (RFC 3156). Si PGP/MIME está desactivado, los mensajes son codificados utilizando "inline PGP". Los valores permitidos y sus significados son los mismos que para la firma de mensajes.

Las reglas son procesadas en el orden en que se muestran en la lista en el Editor de Reglas OpenPGP. Siempre que una regla coincide con un destinatario y contiene una KeyID OpenPGP, adicionalmente a usar la KeyID especificada, el destinatario deja de ser considerado al procesar otras reglas adicionales.


Ayuda adicional disponible en la página de Configuración Por-Destinatario de Enigmail

enigmail/lang/es-ES/help/initError.html000066400000000000000000000045361266701624400203130ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/es-ES/help/messenger.html000066400000000000000000000115261266701624400203230ustar00rootroot00000000000000 Ayuda de Enigmail: Lectura de mensajes

Ayuda de Enigmail

Usando Enigmail para leer mensajes

  • Botón Descifrar en la ventana principal de correo
    Este botón se puede usar para varios propósitos: descifrar, verificar o importar claves públicas. Normalmente el descifrado/verificación se realiza automáticamente, aunque hay una opción para desactivar esto. Sin embargo, si esto falla, normalmente aparecerá un breve mensaje de error en la línea de estado de Enigmail. Si se pulsa el botón Descifrar, podrá ver un mensaje de error más detallado, incluyendo la salida del comando GnuPG.
  • Los iconos Lápiz y Llave mostrados en la cabecera del mensaje
    Los iconos Lápiz y Llave en la cabecera del mensaje indican si el mensaje que se está leyendo está firmado y/o cifrado y si la firma es buena, es decir; que el mensaje no se ha modificado desde el momento de su firma. Si el mensaje ha sido modificado, el icono del Lápiz cambiará a un Lápiz roto para indicar que la firma no es correcta. Al pulsar con el botón derecho del ratón en los iconos del Lápiz o Llave, se obtendrá un menú con las siguientes opciones:

    • Información de seguridad OpenPGP: permite ver el estado de salida de GnuPG para el mensaje.
    • Copiar información de seguridad OpenPGP: copia el estado de salida de GnuPG al portapapeles; para pegarlo en un mensaje de respuesta, etc.
    • Ver ID fotográfico OpenPGP: permite ver la Foto ID de la persona que envió el mensaje, si tiene una foto incrustada en su clave pública (Esta opción sólo se activará si existe un ID fotográfico en su clave).
    • Información de seguridad S/MIME: permite ver la información de seguridad S/MIME del mensaje.

    Si no tiene puesta la opción keyserver-options auto-key-retrieve en su archivo gpg.conf y lee un mensaje que está firmado o cifrado, verá un icono de un Lápiz en el área de visión de las cabeceras con un Signo de interrogación y, la línea de estado de Enigmail en el área de las cabeceras dirá: Parte del mensaje firmado; pulse el icono del lápiz para más detalles y el mensaje en el panel de mensajes mostrará todos los indicadores del bloque del mensaje OpenPGP y el bloque de la firma.

    También se puede ver esto si tiene activada la opción keyserver-options auto-key-retrieve en su archivo gpg.conf y la clave OpenPGP no está disponible en el servidor de claves predeterminado.

    Al pulsar en el icono del Lápiz y Signo de interrogación abrirá una ventana avisando que la clave no está disponible en el anillo de claves. Al pulsar en Aceptar abrirá otra ventana con una lista de servidores de claves en los que puede seleccionar para descargar la clave pública del remitente.

    Para configurar la lista de servidores de claves que desee usar, vaya a la pestaña Enigmail -> Preferencias -> Básicas e introduzca la dirección de los servidores de claves en el recuadro Servidor(es) de claves: separados por una coma. El primer servidor de claves de la lista se usará como predeterminado.

  • Abrir adjuntos cifrados / importar claves OpenPGP adjuntas
    Los adjuntos con el nombre *.pgp, *.asc y *.gpg se reconocen como adjuntos que se pueden manejar especialmente con Enigmail. Al pulsar con el botón derecho en un adjunto de este tipo se activan dos elementos especiales en el menú contextual: Descifrar y Abrir y Descifrar y Guardar. Use estos elementos si desea que Enigmail descifre un adjunto antes de abrirlo o guardarlo. Si se reconoce un adjunto como un archivo de clave OpenPGP, se le ofrece la posibilidad de importar las claves a sus anillos.

Más ayuda disponible en la página Web de ayuda de Enigmail

enigmail/lang/es-ES/help/rulesEditor.html000066400000000000000000000066651266701624400206440ustar00rootroot00000000000000 Ayuda de Enigmail: Editor de reglas

Ayuda de Enigmail

Usando el editor de reglas de Enigmail

En el editor de reglas, se pueden especificar opciones predeterminadas por destinatario para activar el cifrado, firma y PGP/MIME, así como definir qué clave(s) OpenPGP usar. Cada regla consiste de 5 campos y se representa en una sola línea:

  • Correo electrónico: Las direcciones de correo en los campos Para:, Cc: y Cco: tienen que coincidir. La coincidencia funciona en subcadenas (Más detalles en el diálogo de Editar regla)
  • Clave(s) OpenPGP: Una lista de IDs de claves OpenPGP para usar con el destinatario.
  • Firmar: Activar o desactivar el firmado de mensajes. Esta opción usa o ignora lo que se haya especificado en la ventana de redacción de mensajes. Los valores son:
    • Nunca: Desactiva la firma, incluso si estaba activada en la ventana de redacción del mensaje (tiene preferencia sobre los otros valores).
    • Posible: Deja la firma como se haya especificado en la ventana de redacción de mensajes.
    • Siempre: Activar la firma, incluso si no está activada en la ventana de redacción de mensajes.
Estas opciones de firma se aplican a todas las reglas que las cumplan. Si una de las reglas desactiva la firma, el mensaje no se firmará, independientemente de otras reglas que especifiquen Siempre.
  • Cifrar: Activa o desactiva el cifrado del mensaje. Las opciones permitidas y su significado son las mismas que para la firma.
  • PGP/MIME: Activa o desactiva el uso de la codificación del mensaje PGP/MIME (RFC 3156). Si PGP/MIME está desactivado, los mensajes se codifican usando "PGP integrado". Los valores permitidos y su significado son los mismos que para la firma de mensajes.

Las reglas se procesan en el orden mostrado en la lista. Cuando una regla coincida con un destinatario y contenga un ID de clave OpenPGP, además de usar el ID de clave especificado, el destinatario no se tendrá en consideración al procesar más reglas.

NOTA: El editor de reglas aún no está completo. Es posible escribir algunas reglas más avanzadas editando directamente el archivo de reglas (en cuyo caso, éstas no se deben volver a editar mediante el editor). Más información para editar el archivo directamente se encuentra disponible en la página Web de Enigmail.


Más ayuda disponible en la página Web de ayuda de Enigmail

enigmail/lang/es-ES/help/sendingPrefs.html000066400000000000000000000047771266701624400207740ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/eu/000077500000000000000000000000001266701624400142055ustar00rootroot00000000000000enigmail/lang/eu/am-enigprefs.properties000066400000000000000000000001241266701624400206750ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Sekurtasuna enigmail/lang/eu/contents.rdf000077500000000000000000000011561266701624400165450ustar00rootroot00000000000000 enigmail/lang/eu/enigmail.dtd000066400000000000000000001047031266701624400164740ustar00rootroot00000000000000 OHARRA: Gakoa sortzeko prozesua zenbait minutu iraun ditzake. Ez zaitez aplikaziotik atera gakoa sortzen ari den bitartean. Bitartean ordenagailua erabiltzea edo disko gogorran eragiketak egiten dituzten ekintzak egiten badituzu, ausazko datuen sorreran lagunduko du eta prozesua azkartuko du. Jakinarazi egingo zaizu gako sorrera prozesua bukatzerakoan."> ' ez du balio"> OHARRA: Gakoa sortzeko prozesua minutu batzuk iraun ditzake. Ez zaitez aplikaziotik atera gakoa sortzen ari den bitartean. Gakoa sortu eta gero abisu bat agertuko zaizu."> Oharra: Enigmail-k sinadurak kontu eta nortasun guztientzat egiaztatuko ditu, gaituta egon ez arren."> Mila esker Enigmail erabiltzeagatik."> Mila esker Enigmail erabiltzeagatik."> enigmail/lang/eu/enigmail.properties000066400000000000000000000625531266701624400201230ustar00rootroot00000000000000Enigmail=Enigmail # Strings used within enigmailCommon.js # Strings in enigmailAbout.js # Strings in enigmailKeygen.js enigAlert=Enigmail Abisua enigConfirm=Enigmail Baieztapena enigError=Enigmail Errorea enigPrompt=Enigmail Mezua dlgYes=&Bai dlgNo=&Ez dlgKeepSetting=Nire erantzuna gogoratu eta ez galdetu berriro dlgNoPrompt=Ez erakutsi gehiago mezu hau dlg.button.delete=&Ezabatu dlg.button.cancel=&Utzi dlg.button.close=&Itxi dlg.button.continue=&Jarraitu dlg.button.skip=&Saltatu dlg.button.view=I&kusi repeatPrefix=\n\nAbisu hau %S errepikatuko da. repeatSuffixSingular=behin gehiago repeatSuffixPlural=gehiagotan noRepeat=\n\nAbisua hau ez da errepikatuko Enigmail eguneratzen duzun arte. noLogDir=Mesedez, 'Log karpeta' arazketa ezaugarria ezarri ezazu log fitxategia sortzeko noLogFile=Log fitxategia ez da oraindik sortu! restartForLog=Mesedez, aplikazioa berrabiatu log fitxategia sortzeko pgpNotSupported=Dirudienez Enigmail PGP 6.x-rekin batera erabiltzen ari zara.\n\nZoritxarrez, PGP 6.x zenbait arazo ditu eta horrek Enigmail gaizki ibiltzea dakar. Hortaz, Enigmail-ek ez du PGP 6.x onartzen; mesedez, horren ordez GnuPG (GPG) erabili ezazu.\n\nGnuPG-ra aldatzeko laguntzarik behar baldin baduzu, Enigmail weborriaren Laguntza atala begiratu ezazu. avoidInitErr=Mezu hau betirako kentzeko, arazoa konpondu ezazu edo Enigmail desinstalatu ezazu. Laguntza botoian sakatu ezazu xehetasun gehiago behar badituzu. passphraseCleared=Pasahitza ezabatu egin da. passphraseCannotBeCleared=Pasahitzak kudeatzeko gpg-agent erabiltzen ari zara. Horregatik, Enigmail-etik ezin da pasahitza ezabatu. noPhotoAvailable=Ez Dago Argazkirik # Strings in enigmailMessengerOverlay.js # Strings in enigmailMsgComposeOverlay.js # Strings in enigmailMsgHdrViewOverlay.js usingVersion=Enigmail %S bertsioa martxan dago usingAgent=%S exekutagarria %s erabiltzen zifratu eta argitzeko agentError=ERROREA: Ezin izan da Enigmime serbitzuarekin konexioa egin # Strings in enigmailNavigatorOverlay.js # Strings in pref-enigmail.js # Strings used in components/enigmail.js accessError=Enigmail serbitzura sartzean errore bat gertatu da onlyGPG=Gako sorrera GnuPG-rekin bakarrik (ez PGP-rekin) dabil! keygenComplete=Gakoaren sorrera bukatu da! Sinatzeko <%S> nortasuna erabiliko da. revokeCertRecommended=Gogor gomendatzen dugu zure gakoarentzat ezeztapen ziurtagiri bat sortzea. Ziurtagiri hau zure gakoa ezgaitzeko erabili daiteke, adibidez, zure gako sekretua galdu edo arriskuan badago. Ezeztapen ziurtagiri hau orain sortu nahi al duzu? keyMan.button.generateCert=&Ziurtagiria Sortu genCompleteNoSign=Gakoaren sorrera bukatu da! genGoing=Gakoaren sorrera prozesua dagoeneko martxan dago! passNoMatch=Pasahitzak ez datoz bat, mesedez, berriz sartu itzazu passCheckBox=Mesedez, laukitxoa sakatu ezazu gakoarentzak pasahitzik ez badago passUserName=Mesdez, nortasun honentzako erabiltzailearen izena sartu ezazu passCharProblem=Zure pasahitzan karaktere bereziak erabiltzen ari zara. Zoritxarrez, honek beste zenbait aplikazioetan arazoak sortu ditzake. Horregatik karaktere hauek bakarik dituen pasahitza aukeratu ezazu:\na-z A-Z 0-9 /.;:-,!?(){}[]%* changePassFailed=Pasahitzaren aldaketak huts egin du. removePassphrase=Orain dagoen pasahitza ezabatu nahi al duzu pasahitz berririk sartu gabe? keyMan.button.removePass=&Pasahitza Ezabatu keyConfirm='%S'-rentzat gako publiko eta pribatuak sortu nahi al duzu? keyMan.button.generateKey=Gakoa &Sortu keyAbort=Gako sorrera geldiarazi nahi al duzu? keyMan.button.generateKeyAbort=Gako Sorrera &Geldiarazi keyMan.button.generateKeyContinue=Gako Sorrera &Jarraitu expiryTooLong=Ezin da 100 urte baino gehiagoko iraungipena duen gakoa sortu. expiryTooShort=Zure gakoa gutxienez egun baterako balio behar du. keyGenFailed=Gako sorrerak huts egin du. Xehetasunak ikusteko, mesedez, Enigmail konsola begiratu ezazu (Enigmail Menua > Enigmail Araztu). # (said file also re-uses some strings from above) securityInfo=Enigmail Sekurtasun Informazioa\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Mezu honen eranskinak ez dira sinatu edo zifratu*\n\n possiblyPgpMime=Ziurenik PGP/MIME-k mezua sinatu edo zifratu egin du; Argitu botoia klikatu ezazu egiatzatzeko noDecrypted=Ez dago argituko mezurik gordetzeko!\nFitxategia menuan dagoen Gorde komandoa erabili ezazu noMessage=Ez dago mezurik gordetzeko! useButton=Mesedez Argitu botoia sakatu ezazu mezua argitzeko saveHeader=Enigmail: Argitutako mezua gorde saveAttachmentHeader=Enigmail: Argitutako eranskina gorde noTempDir=Ez da idatzi daitekeen aldi baterako karpetarik aurkitu.\nMesedez, TEMP ingurune aldagaia ezarri ezazu attachmentPgpKey=Irekitzen ari zaren '%S' eranskina OpenPGP gako fitxategi bat dirudi.\n\n'Inportatu' sakatu ezazu gakoa inportatzeko edo 'Ikusi' sakatu ezazu haren edukia azpian dagoen arakatzailean ikusteko. beginPgpPart=********* *ZIFRATU edo SINATUTAKO GUNEAREN HASIERA* ********* endPgpPart=********** *ZIFRATU edo SINATUTAKO GUNEAREN BUKAERA* ********** notePartEncrypted=Enigmail: *Mezu honen zati batzuk EZ dira sinatu edo zifratu* noteCutMessage=Enigmail: *Mezu bloke anitz aurkitu dira -- argitze/egiaztatze prozesua bertan behera utzi da* decryptOkNoSig=Kontuz\n\nArgitze prozesua ondo bukatu da, baina sinadura ezin izan da ondo egiaztatu. msgOvl.button.contAnyway=Edonola Ere &Jarraitu # Strings used in enigmailUserSelection.js keysToExport=Txertatko Diren OpenPGP Gakoak Aukeratu keysToUse=%S-rentzat erabiliko den(diren) OpenPGP Gako(ak) aukeratu pubKey=%S-rentzat gako publikoa\n windowLocked=Idazteko lehioa blokeatuta dago; bidaltzea ezeztatu da sendUnencrypted=Enigmail-ek hasieratzerakoan huts egin du.\nMezua zifratu gabe bidali? composeSpecifyEmail=Mesedez zure lehendabiziko helbide elektronikoa jarri ezazu. Hau bidaliko diren mezuak sinatzeko gakoa aukeratzeko erabiliko da.\nBete gabe uzten baduzu, NORK halbidea erabiliko da sinatzeko gakoa aukeratzeko. sendingHiddenRcpt=Mezu hau BCC (ezkutuko kopia) hartzaileak ditu. Mezu hau zifratuta bidaltzen bada, BCC hartzaileak ezkutatu ahal daitezke baina produktu batzuen erabiltzaileak (adib. PGP Corp.) ezin izango dute mezua argitu. Hau hartuta, BCC emailak zifratutako mezuekin ez bidaltzea gomendatzen dugu. sendWithHiddenBcc=BCC hartzaileak ezkutatu sendWithShownBcc=Normaltasunez zifratu sendingNews=Zifratutako mezua bidaltzeko operazioa bertan behera utzi da.\n\nMezu hau ezin da zifratu hartzaileen artean berri-taldeak daudelako. Mesedez, mezua zifratu gabe bidali ezazu. sendToNewsWarning=Kontuz: zifratutako email bat berri-talde batera bidaltzera zoaz.\n\nHau ez dago comendatua, honek bakarrik zentzuzkoa izango da baldin eta hartzaile guztiak mezua argitu dezakete, hau da, mezua hartzaile guztien gakoekin zifratuta badago. Mesedez, mezu hau bidali ezazu bakarrik egiten hari zarenaz ziur bazaude.\n\nJarraitu? hasHTML=HTML email-aren abisua:\nMezu honek HTML izan dezake, honek sinadura/zifraketa-ren hutsegitea ekar dezake. Etorkizunean hau eragozteko, sinatutako email bat bidaltzeko SHIFT tekla sakatu ezazu Idatzi/Erantzun botoia sakatzerakoan.\nZure aukera lehenetsita email-a sinatzea bada, 'Mezuak HTML-n Idatzi' laukitxoa ezgaitu beharko zenuke HTML posta kontu honetan betirako ezgaitzeko. strippingHTML=Mezuak HTML formatu informazioa dauka eta hau galuko da sinatu/zifratzeko testu arruntan bilakatzerakoan. Jarraitu nahi al duzu? msgCompose.button.sendAnyway=&Mezua Bidali Edonola attachWarning=Mezu honen eranskinak ez dira lokalak eta ezin dira zifratu. Eranskinak zifratu ahal izateko, fitxategi lokal bezala gorde itzazu eta gero erantsi itzazu. Mezua edonola bidali nahi al duzu? quotedPrintableWarn=Mezuak bidaltzeko 'quoted-printable' kodifikazioa gaitu duzu. Hau zure mezuaren argitze edo/eta egiaztatze okerra ekar dezake.\nMezuak 'quoted-printable' kodifikazioa erabiliz bidaltzeko aukera ezgaitu nahi al duzu? minimalLineWrapping=Lerroek %S karaktertara iristerakoan salto egitea konfiguratu duzu. Zifraketa eta/edo sinatze on batentzako, balio hau gutxienez 68 izan behar du.\nLerroen gehienezko luzeera 68 karakteretara orain aldatu nahi al duzu? warning=Kontuz signIconClicked=Sinadura eskuz aldatu duzu. Hortaz, mezua idazten ari zaren bitartean, sinadura (des)aktibatzea ez dator bat zifraketa (des)aktibatzearekin. sendAborted=Bidaltze eragiketa bertan bera utzi da\n\n statPGPMIME=PGP/MIME statSigned=SINATUTA statEncrypted=ZIFRATUTA statPlain=SINATU eta ZIFRATU GABE offlineSave=%S mezua Bidali Gabeko Mezuen karpetako %S-n gorde nahi al duzu? onlineSend=%S mezua %S-ri bidali nahi al diozu? encryptKeysNote=Oharra: mezu hau ondorengo erabiltzaile ID-ak/gakoak erabiliz zifratu da: signFailed=Enigmail-n errore bat egon da eta zifraketak/sinadurak huts egin du; mezua zifratu gabe bidali nahi al duzu? msgCompose.button.sendUnencrypted=Mezua Zifratu Gabe &Bidali acctNotConfigured=Ez duzu nortasun hau Enigmail sekurtasuna erabiltzeko konfiguratu.\nMezua zifratu gabe bidali nahi al duzu? recipientsSelectionHdr=Zifraketarako Hartzaileak Aukeratu configureNow=Aukeratutako nortasunarentzat oraindik ez duzu Enigmail sekurtasuna konfiguratu. Orain egin nahi al duzu? signYes=Mezua sinatuko da signNo=Mezua ez da sinatuko # Strings used in enigmailAttachmentDialog.js # Strings used in am-enigprefs.js encryptYes=Mezua zifratuko da encryptNo=Mezua ez da zifratuko rulesConflict=Hartzaileen arauen artean gatazka dago\n%S\n\nEzarpen hauekin mezua bidali nahi al duzu? msgCompose.button.configure=&Konfiguratu msgCompose.button.send=Mezua &Bidali msgCompose.button.save=Mezua &Gorde # Strings used in enigmailSingleRcptSettings.js keyNeeded=%S gako publikoa sinadura egiaztatzeko behar da clickDecrypt=; Argitu botoia sakatu clickDecryptRetry=; Argitu botoia sakatu berriz saiatzeko clickPen=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickPenDetails=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickQueryPenDetails=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickKey=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickQueryKeyDetails=;'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickKeyDetails=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko clickPenKeyDetails=; 'Xehetasunak' botoian klik egin ezazu informazio gehiago eskuratzeko msgPart=%S mezuaren zatia msgSigned=Sinatutako msgEncrypted=Zifratutako msgSignedAndEnc=Sinatu eta zifratutako unverifiedSig=Egiaztatu gabeko sinadura incompleteDecrypt=Bukatu gabeko argitzea failedSig=Errorea - sinaduraren egiaztapenak huts egin du needKey=Errorea - mezua argitzeko gako sekretua behar da failedDecrypt=Errorea - argitzeak huts egin du badPhrase=Errorea - pasahitz okerra failedDecryptVerify=Errorea - argitzeak/egiaztapenak huts egin du viewInfo=; Xehetasunentzako Ikusi > Mezuaren Sekurtasun Informazioa decryptedMsg=Argitutako mezua # Strings used in enigmailRulesEditor.js testNoSvc=EnigTest: Ezin izan da Enigmail serbitzura konektatu testNoEmail=EnigTest: Frogarako e-posta helbidea jarri ezazu testSucceeded=Enigmail ondo funtzionatzen ari da. Xehetasunak nahi badituzu, Enigmail menutik ireki daitekeen kontsola begiratu ezazu oldGpgVersion=Enigmail-ren hasieraketak huts egin du.\n\nGnuPG %S bertsioa erabiltzen ari zara eta ez dago eguneratua. Enigmailek GnuPG 1.4 bertsioa edo berriago bat behar du. Mesedez, zure GnuPG instalazioa eguneratu ezazu edo Enigmail-k ez du funtzionatuko. locateGpg=GnuPG programa bilatu invalidGpgPath=Emandako helbidearekin ezin da GnuPG exekutatu. Hortaz, Enigmail ezgaituta egongo da GnuPG-ren helbidea berriz sartu arte edo aplikazioa berrabiatu arte. warningsAreReset=Abisu guztiak berrezarri dira. prefs.gpgFound=GnuPG hemen aurkitu da: %S prefs.gpgNotFound=Ezin izan da GnuPG aurkitu prefs.warnAskNever=Kontuz: aukera hau aktibatzen bada hartzaile batentzako gakorik ez badago ez da e-posta zifratuko eta ez da horren abisurik egongo -- Enigmail-k ez dizu hori gertatzen delaren berri emango! prefEnigmail.oneKeyserverOnly=Errorea - gako-serbitzari bakarra jarri dezakezu falta diren OpenPGP gakoak deskargatzeko. # Strings used in enigmailSearchKey.js # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. enterPass=Mesedez, zure OpenPGP pasahitza sartu ezazu enterPassOrPin=Mesedez, zure OpenPGP pasahitza edo zure SmartCard-aren PIN-a sartu ezazu repeatPass=Mesedez, zure OpenPGP pasahitza berriz sartu ezazu rememberPass=Pasahitza %S minutuz gogoratu enterAdminPin=Mesedez, zure SmartCard-aren ADMIN PIN-a sartu ezazu enterCardPin=Mesedez, zure SmartCard-aren PIN-a sartu ezazu notInit=Errorea - Enigmail serbitzua ez da oraindik hasieratu badCommand=Errorea - zifraketa komandoak huts egin du cmdLine=komando lerroa eta output: notRequired=Errorea - ez da zifraketarik behar notComplete=Errorea - gako sorketa ez da oraindik bukatu invalidEmail=Errorea - baliogabeko e-posta helbidea(k) noPassphrase=Errorea - ez da pasahitzik sartu noPGPblock=Errorea - Ez da OpenPGP babestutako datu blokerik aurkitu unverifiedReply=Mezuaren tabulatutako zatia (erantzuna) ziruenik aldatu zen decryptToImport=Argitu botoia sakatu ezazu mezuan dagoen gako publikoaren blokea inportatzeko sigMismatch=Errorea - Sinadurak ez datoz bat cantImport=Errorea gako publikoa inportatzerakoan\n\n sc.wrongCardAvailable=Zure irakurgailuan aurkitutako %S SmartCard-a ezin da mezua prozesatzeko erabili.\nMesedez, zure %S SmartCard-a sartu ezazu eta eragiketa errepikatu ezazu. sc.insertCard=Eragiketak zure %S SmartCard-a behar du.\nMesedez, behar den SmartCard-a sartu ezazu eta eragiketa errepikatu ezazu. sc.removeCard=Eragiketak irakurgailuan SmartCard-ik ez egotea behar du.\nMesedez, zure SmartCard-a atera ezazu eta eragiketa errepikatu ezazu. sc.noCardAvailable=Irakurgailuan ez da SmartCard-ik aurkitu.\nMesedez, zure SmartCard-a sartu eta eragiketa errepikatu ezazu. sc.noReaderAvailable=Zure SmartCard irakurgailua ezin da aurkitu.\nMesedez, zure SmartCard irakurgailua konektatu ezazu, zure txartela sartu eta eragiketa errepikatu ezazu. gpgNotFound=Ezin izan da '%S' GnuPG programa aurkitu.\nZiurtatu zaitez GnuPG exekutagarriaren helbidea zuzen jarri duzula Enigmail Lehentasunetan. gpgNotInPath=Ezin izan da PATH-ean GnuPG exekutagarria aurkitu.\nZiurtatu zaitez GnuPG exekutagarriaren helbidea zuzen jarri duzula Enigmail Lehentasunetan. enigmimeNotAvail=Enigmime Serbitzua ez dago eskuragarri gpgAgentNotStarted=Zure GnuPG %S bertsiorako behar den gpg-agent-a ezin izan da abiatu. prefUntrusted=MESFIDAGARRIA prefRevoked=EZEZTATUTAKO GAKOA prefExpiredKey=IRAUNGITAKO GAKOA prefExpired=IRAUNGITA prefGood=%S-ren sinadura ona prefBad=%S-ren sinadura OKERRA failCancel=Errorea - Gakoaren harrera erabiltzaileak utzi egin du failNoServer=Errorea - Gakoak jasotzeko gako-serbitzari iturubururik ez da jarri failNoID=Errorea - Ez da jasoko den gakoaren ID-a jarri failKeyExtract=Errorea - gakoaren aterapen komandoak huts egin du notFirstBlock=Errorea - Lehendabiziko OpenPGP blokea ez da gako publiko batena importKeyConfirm=Mezuan txertatuta dauden gakoak inportatu nahi al dituzu? failKeyImport=Errorea - Gakoaren inportazioak huts egin du fileWriteFailed=%S fitxategian idazterakoan huts egin du successKeyImport=Gakoa(k) arazorik gabe inportatu da/dira importKey=%S gako publikoa gako-serbitzaritik inportatu: uploadKey=%S gakoa gako-serbitzarira bidali: keyId=Gakoaren ID-a keyAndSigDate=Gakoaren ID-a: 0x%S / Sinatuta: %S keyFpr=Gakoaren hatz-marka: %S noEmailProvided=Ez duzu e-posta helbiderik eman! keyAlreadySigned=Gakoa dagoeneko sinatuta dago, ezin duzu bitan sinatu. # Strings in enigmailEditKeyTrustDlg.xul selKeyExpired=%S-n iraungita createdHeader=Sortuta atLeastOneKey=Ez da gakorik aukeratu! Gutxienez gako bat aukeratu behar duzu lehio hau adosteko fewerKeysThanRecipients=Hartzaile baino gako gutxiago aukeratu dituzu. Ziru zaude zifratzeko gakoen zerrenda osorik dagoela? userSel.button.goBack=Gako gehiago aukeratu userSel.secretKeySel.title=OpenPGP Gako Sekretu Bat Aukeratu Zure Mezuak Sinatzekoa # Strings in enigmailSignKeyDlg.js # Strings in enigmailKeyManager.js pgpMimeNote=OHARRA: PGP/MIME e-posta bezero kopuru txiki batek onartzen du! Windowsen bakarrik Mozilla/Thunderbird, Sylpheed, Pegasus eta Mulberry estandar hau honartzen dute; Lunux/UNIX eta Mac OS X-ko bezero hedatuenak onartzen dute. Ziur ez bazaude, %S aukera hautatu ezazu. first=lehendabiziko second=bigarren # Strings in enigmailViewKeySigDlg.xul encryptKeyHeader=Zifratzeko OpenPGP Gako Bat Aukeratu identityName=Nortasuna: %S # Strings in enigmailManageUidDlg.xul noEncryption=Zifraketa aktibatu duzu, baina ez duzu gakorik aukeratu. %S-ri bidalitako e-postak zifratzeko, zure gako zerrendaren baliodun gako bat edo gehiago hautatu behar duzu. %S-rentzat zifraketa ezgaitu nahi al duzu? noKeyToUse=(ezer - zifraketarik ez) noEmptyRule=Araua agian ez dago hutsik! Mesedez, e-posta helbide bat sartu ezazu Araua eremuan. invalidAddress=Sartutako e-posta(k) ez dira baliodunak. Ez zenituzke hartzaileen izenak sartu behar, bakarrik helbide elektronikoak. Adib.:\nBaliogabea: Izen Bat \nBalioduna: izen.bat@helbidea.net noCurlyBrackets=Giltzek {} esanahi berezia daukate eta ez lirateke helbide elektronikoetan erabili behar. Arau honen baterapen portaera aldatu nahi baduzu, 'Araua erabili hartzaileak ...' aukera erabili ezazu.\nInformazio gehiago Laguntza botoian eskuragarri dago. # Strings in enigmailKeyDetailsDlg.xul never=Inoiz always=Beti possible=Posible deleteRule=(Hurrengo hartzailea) negateRule=Ez # Strings in enigmailGenCardKey.xul needOnline=Aukeratu duzun ekintza ez dago eskuragarri konexiorik gabe. Mesedez, konektatu zaitez eta berriz saiatu. protocolNotSupported=Aukeratu duzun '%S://' protokoloa ez dago onartuta OpenPGP gakoak deskargatzeko. gpgkeysDisabled=Agian 'extensions.enigmail.useGpgKeysTool' aukera gaitzea lagundu dezake. noKeyserverConn=%S-n dagoen gako-serbitzarira ezin izan da konektatu. keyDownloadFailed=Gakoa deskargatzerakoan huts egin du. Egoera mezua:\n%S internalError=Barneko errore bat gertatu da. Gakoak ezin izan dira deskargatu edo inportatu. noKeyFound=Sentitzen dut baina ezin izan da jarri dituzun bilaketa irizpideekin gakorik aurkitu.\nOhartu zaitez gakoaren ID-a "0x" aurrizkia eraman behar duela (adib.: 0xABCDEF12). # Strings in enigmailSetCardPin.xul gpgKeysFailed=Gako-sebritzarian gakoa bilatu edo deskargatzerakoan errore bat egon da: gpgkeys_%S ezin izan da exekutatu. # Strings in enigRetrieveProgres.xul setKeyTrustFailed=Jabearekiko konfidantza jartzerakoan huts egin du # Strings in enigmailSetupWizard signKeyFailed=Gakoaren sinadurak huts egin du undefinedError=Errore ezezagun bat gertatu da. alreadySigned.label= Oharra: %S gakoa dagoeneko aukeratutako gako sekretuarekin sinatuta dago. # Strings in enigmailAddUidDlg.xul keyMan.loadingKeys=Gakoak kargatzen, mesedez itxaron ... keyValid.unknown=ezezaguna keyValid.invalid=baliogabea keyValid.disabled=ezgaituta keyValid.revoked=ezeztatuta keyValid.expired=iraungita keyValid.noSubkey=ubgako baliogabea keyValid.valid=balioduna keyTrust.untrusted=konfidantzarik ez keyTrust.marginal=txikia keyTrust.full=konfidagarria keyTrust.ultimate=azkenekoa keyTrust.group=(taldea) keyType.public=pub keyType.publicAndSec=pub/seg keyMan.enableKey=Gakoa Gaitu keyMan.disableKey=Gakoa Ezgaitu userAtt.photo=Erabiltzailearen ezaugarria (JPEG irudia) asciiArmorFile=ASCII Fitxategi Babestuak (*.asc) gnupgFile=GnuPG Fitxategiak saveRevokeCertAs=Ezeztapen Ziurtagiria Sortu eta Gorde revokeCertOK==Ezeztapen ziurtagiria sortu egin da. Zure gako publikoa ezgaitzeko erabili dezakezu, adibidez, zure gako sekretua galtzen baduzu.\n\nMesedez, toki seguru batean gorde daitekeen unitate batean gorde ezazu, CD edo flash memoria gailu batera adibidez. Norbaitek ziurtagiri hau lortuko balu zure gakoa baliogabetu lezake. revokeCertFailed=Ezeztapen ziurtagiria ezin izan da sortu. addUidOK=Erabiltzeile IDa gehitu egin da addUidFailed=Erabiltzaile IDa gehitzerakoan errore bat egon da noKeySelected=Aukeratutako eragiketa egiteko gutxienez gako bat aukeratu behar duzu exportToFile=Gako Publikoa Fitxategi Batera Esportatu exportSecretKey=Gako sekretua OpenPGP gako pribatuan fitxategian gorde nahi al duzu? saveKeysOK=Gakoak gorde egin dira saveKeysFailed=Gakoak ezin izan dira gorde importKeysFailed=Gakoak ezin izan dira inportatu enableKeyFailed=Gakoak ezin izan dira gaitu/ezgaitu specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Esportatutako gako publikoak defaultPubSecKeyFilename=Esportatutako gako publiko eta pribatuak noSecretKeys=Ez da gako sekreturik aurkitu.\n\nZure gakoa orain sortu nahi al duzu? sendKeysOk=Gakoa(k) bidali egin dira sendKeysFailed=Gakoak ezin izan dira bidali receiveKeysOk=Gakoa(k) eguneratu dira receiveKeysFailed=Gakoak ezin izan dira deskargatu importFromClip=Arbeletik gakoak inportatu nahi al dituzu? copyToClipbrdFailed=Aukeratutako gakoak ezin izan dira arbelera kopiatu. copyToClipbrdOK=Gakoak arbelera kopiatu dira deleteSecretKey=KONTUZ: Gako pribatu bat ezabatzera zoaz!\nZure gako pribatua ezabatzen baduzu, ezin izango dituzu gako horrentzat zifratu diren mezuak argitu, eta ezin izango duzu zure gakoa ezeztatu.\n\nZiur zaude BI gakoak, gako publikoa eta gako pribatua, ezabatu nahi al dituzula\n'%S'? deleteMix=KONTUZ: Gako pribatuak ezabatzera zoaz!nZure gako pribatua ezabatzen baduzu, ezin izango dituzu gako horrentzat zifratu diren mezuak argitu.\n\nZiur zaude BI gakoak, aukeratutako gako publiko eta pribatua, ezabatu nahi dituzula? deletePubKey=Gako publikoa ezabatu nahi al duzu\n'%S'? deleteSelectedPubKey=Zure gako publikoak ezabatu nahi al dituzu? deleteKeyFailed=Gakoa ezin izan da ezabatu. revokeKeyAsk=Funtzio honek ezeztapen ziurtagiria sortu eta inportatzen du. Ziur zaude %S gakoa ezeztatu nahi duzula? revokeKeyOk=Gakoa ezeztatu egin da. Gakoa gako-serbitzari batean eskuragarri badago, gomendatzenda berriz igotzea, horrela besteek ezeztapena ikusi ahal izango dute. revokeKeyFailed=Gakoa ezin izan da ezeztatu. refreshAllQuestion=Ez duzi gakorik aukeratu. Gako GUZTIAK freskatu nahi al dituzu? refreshKey.warn=Kontuz. Gako kopuruaren arabera eta konexioaren abiaduraren arabera, gako guztiak freskatzea prozesu luzea izan daiteke! keyMan.button.exportSecKey=Gako &Sekretuak Esportatu keyMan.button.exportPubKey=Gako &Publikoak Esporatatu keyMan.button.import=&Inportatu keyMan.button.refreshAll=Gako Guztiak &Freskatu keyMan.button.revokeKey=Gakoa &Ezeztatu keylist.noOtherUids=Ez dauka beste nortasunik keylist.hasOtherUids=Goitizena keylist.noPhotos=Ez dago argazkirik keylist.hasPhotos=Argazkiak # strings in pref-enigmail.js keySignatureLocal=Lokala keySignatureExportable=Esportagarria keySignatureNoKey=Gakorik ez userIdNotFound=(Erabiltzaile ID-a ez da aurkitu) signatureValid=Bai retrieveKeyConfirm=Gakoa ez dago eskuragarri - gako-serbitzari batetik deskargatu nahi al duzu? changePrimUidFailed=Erabiltzaile ID primarioa aldatzerakoan huts egin du changePrimUidOK==Erabiltzaile ID primarioa aldatu egin da deleteUidFailed=Erabiltzaile ID %S-a ezabatzerakoan huts egin du deleteUidOK=Erabiltzaile ID %S-a ezabatu egin da revokeUidFailed=Ezin izan da erabiltzaile ID %S-a ezeztatu revokeUidOK=Erabiltzaile ID %S-a ezeztatu egin da. Zure gakoa gako-serbitzari batean eskuragarri badago, berriz igotzea gomendatzen da, horrela beste erabiltzaileek ezeztapena ikusi ahal izango dute. revokeUidQuestion=Ziur zaude %S erabiltzaile ID-a ezeztatu nahi duzula? deleteUidQuestion=Ziur zaude %S erabiltzaile ID-a ezabatu nahi duzula?\n\nOharra: zure gako publikoa gako-serbitzari batera igo baduzu, zure erabiltzaile ID-a ezabatzeak ez du ezer aldatuko. Kasu horretan 'Erabiltzaile ID-a Ezeztatu' erabili beharko zenuke. keyTypePublic=gako publikoa keyTypePrimary=gako primarioa keyTypeSubkey=sub-gakoa keyTypePair=gako bikotea keyExpiryNever=inoiz keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keygen.started=Mesedez, itxaron gakoa sortzen ari den bitartean .... keygen.completed=Gakoa sortu da. Gako berriaren ID berria: 0x%S keygen.keyBackup=Gakoa %S bezela babeskopiatu da keygen.passRequired=Mesedez, zure SmartCard-aren kanpoan babeskopia sortu nahi baduzu pasahitz bat sartu ezazu. cardPin.dontMatch=Sartu duzun PIN-a ez dator bat; mesedez berriz sartu cardPin.minLength=PIN-a gutxienez %S karaktere edo zenbaki izan behar ditu cardPin.processFailed=PIN-a ezin izan da aldatu keyserverProgress.refreshing=Gakoak freskatzen, mesedez itxaron... keyserverProgress.uploading=Gakoak igotzen, mesedez itxaron... keyserverTitle.refreshing=Gakoak Freskatu keyserverTitle.uploading=Gakoa Igo passphrase.min8keys=Zure pasahitzak gutxienez 8 karaktere izan beharko lituzke! setupWizard.applyAllId=Nortasun guztientzat Enigmail aktibatu setupWizard.applySomeId=Nortasun hauentzat Enigmail aktibatu: %S setupWizard.applySingleId=Zure e-posta kontuarentzat Enigmail aktibatu setupWizard.setAllPrefs=Gomendatutako aplikazioaren ezarpen guztiak aldatu setupWizard.setSomePrefs=Aukeratu dituzun gomendatutako aplikazioaren ezarpenak aldatu setupWizard.setNoPrefs=Ez aldatu aplikazioaren ezarpenik setupWizard.createKey=OpenPGP 2048-biteko gako berria sortu, 5 urteko balioarekin setupWizard.useKey=Esistitzen den OpenPGP %S gako ID-a erabili sinatzeko setupWizard.encryptAll=Lehenetsita e-posta guztiak zifratu setupWizard.encryptNone=Lehenetsita ez zifratu e-postarik setupWizard.signAll=Lehenetsita e-posta guztiak sinatu setupWizard.signNone=Lehenetsita ez sinatu e-postarik setupWizard.reallyCancel=Ziur zaude Enigmail Instalatzaile Laguntzailea itxi nahi duzula? addUidDlg.nameOrEmailError=Ezena eta helbide elektronikoa bete behar dituzu addUidDlg.nameMinLengthError=Izenak gutxienez 5 karaktere izan behar ditu addUidDlg.invalidEmailError=Baliodun helbide elektronikoa sartu behar duzu addUidDlg.commentError=Parentesiak ez dira komentarioetan onartzen enigmail/lang/eu/help/000077500000000000000000000000001266701624400151355ustar00rootroot00000000000000enigmail/lang/eu/help/compose.html000066400000000000000000000104621266701624400174730ustar00rootroot00000000000000 Enigmail Laguntza: Mezua Idatzi

Enigmail Laguntza

Enigmail erabiltzen mezuak idazterakoan

Enigmail menua e-posta idazteko lehioan
Mezua sinatu
Mezua sinatuta bidaltzeko aukera gaitu/ezgaitu. Erabiltzaileari ohar bat aterako zaio sinadurak huts egiten badu.
Mezua zifratu

Bidali aurretik hartzaile guztientzat mezua zifratzeko aukera gaitu/ezgaitu. Erabiltzaileari ohar bat aterako zaio zifraketak huts egiten badu.

Aukeraketa behar denean erakutsi Lehentasunak -> Gako Aukeraketa fitxan aktibatuta badago, gako zerrenda bat agertuko da hartzaile zerrendan dauden eta euren gako publikorik ez duzun hartzaileentzako.

Ez erakutsi inoiz OpenPGP gako aukeraketa lehioa Lehentasunak -> Gako Aukeraketa fitxan gaituta badago, eta hartzaile zerrendan dagoen hartzaile baten gako publikoa baldin ez baduzu, mezua zifratu gabe bidaliko da.

Mezu honetan PGP/MIME erabili
Mezu honetarako PGP/MIME erabilera gaitu/ezgaitu.

Hartzaileek e-postak PGP/MIME formatuan irakurri ditzaketela baldin badakizu, erabili beharko zenuke.

Ezaugarri honek Lehentasuanak -> PGP/MIME fitxan dauden PGP/MIME erabiltzen utzi edo Beti PGP/MIME erabili aukerekin dependentzia dauka.

Idazteko aukera lehenetsitak
  • Sinatu/Zifratu Aukerak...: Kontu Ezarpenak -> OpenPGP Aukerak-rantz laisterbidea
  • Bidalketa Aukerak...: Lehentasunak -> Bidali fitxarako laisterbidea
  • Gako aukeraketa aukerak...: Lehentasunak -> Gako aukeraketa fitxarako laisterbidea.
  • PGP/MIME aukerak...: Lehentasunak -> PGP/MIME fitxarako laisterbidea.
Zifraketa desegin

Mezua bidaltzerakoan arazoren bat baldin badago, adibidez, POP serbitzariak eskaera onartzen ez badu, Enigmail-ek ez du horren berri izango eta zifratutako mezua Idatzi lehioan agertzen jarraituko du. Menuaren aukera hau hautatuz sinadura/zifraketa desegingo du, Idatzi lehioa hasieran zegoen testura bueltatuz

Behin-behineko konponketa bezala, aukera hau erabili daiteke zifratutako mezuak erantzuterakoan aipatutako testua argitzeko. Enigmailek automatikoki aipatutako mezua argitu beharko luke, baina horrek huts egiten badu, menu aukera hau erabili dezakezu hori behartzeko

Gako publikoa txertatu
Idatzi lehioan, kurtsorea dagoen tokian ASCII-babestua formatuan gako publiko bloke bat txertatzen du. Txertatuko den/diren gakoen helbide elektronikoak eskatuko zaizkizu. Modu honetan sartzen diren gakoak, heltzerakoan Enigmailek automatikoki detektatuko ditu. Txertatu eta gero, e-posta oraindik sinatu edo zifratu dezakezu. Horretaz gain, ez ezazu gako bloke bat baino gehiago sartu mezu bakoitzeko; helbide elektroniko bat baino gehiago jarri nahi baduzu, eskatzen dizkizunean komen edo espazioen bitartez bereizita sartu itzazu.
Ezabatu gordetako pasahitza
Katxeatu den pasahitza ezabatzen du. Erabilgarria da pasahitz baino gehiago dituzunean.
Laguntza
Laguntza informazio weborria (orri hau) erakusten du.

Laguntza gehiago nahi baduzu, Enigmail Laguntza weborrian aurkitu dezakezu.

enigmail/lang/eu/help/editRcptRule.html000066400000000000000000000122271266701624400204350ustar00rootroot00000000000000 Enigmail Laguntza: OpenPGP Araua Editatu

Enigmail Laguntza

Enigmail Arau Editorea Erabiltzen: OpenPGP Araua Editatu

Arau editorean, hartzaile bakoitzaren lehenetsitako aukerak jarri ditzakezu zifraketa, sinadura, PGP/MIME eta ze OpenPGP gakoak erabiliko diren arloetan. Lehio honetan, hartzaile bakar batentzat arauak sartu ditzakezu eta, baita ere, antzeko ezaugarriak dituzten hartzaileentzat..

OpenPGP Arauak honetarako ezarri
Hartzaileen helbide elektronikoak izango ditu (izenik gabe, hau da, helbidea bakarrik norbait@helbidea.domeinua bezala). Helbide elektroniko bat baino gehiago sartu dezakezu hutsuneekin tartekatuz. Hemen sartzen diren helbideak domeinuaren zatiarekin bakarrik sartu daitezke, horrela domeniu horretako edozein helbide elektronikoarekin bat egingo du, adibidez @helbidea.domeinua domeinua norbait@helbidea.domeinua, edonor@helbidea.domeinua, eta abarrekin bat etorriko da.
Araua aplikatu hartzaileak...
Hoek helbide elektronikoen bateratzea aldatuko du. Helbide bat baino gehiago sartu badira, ezaugarri hau guztietara aplikatuko dira. Azpian dauden adibideak izena@helbidea.domeinua erabiliko dute goian dagoen OpenPGP Arauak eremuan.
  • Zehazki bada: ezaugarri honekin araua bakarrik aplikatuko da izena@helbidea.domeinua helbidearekin (zehazki, letra larriak eta xeheak ezberdindu gabe).
  • Badauka: ezaugarri honekin, testu hori daukan edozein helbiderekin bateratuko da, adibidez abizena_izena@helbidea.domeinua edo izena@helbidea.domeinua.net
  • Honekin hasten da: ezaugarri honekin, testu honekin hasten den edozein helbiderekin bateratuko da, adibidez izena@helbidea.domeinua.net, izena@helbidea.domeinua-izena.com.
  • Honekin bukatzen da da:ezaugarri honekin, testu honekin bukatzen den edozein helbiderekin bateratuko da, adibidez abizena_izena@helbidea.domeinua , ezizena@helbidea.domeinua.
Bat datozen helbideekin hurrengo arauarekin jarraitu
Funtzio honek arau bat definitzen uzten dizu Hurrengo OpenPGP gakoak erabili: eremuan GakoID-rik zehaztu behar izan gabe, horrela bidaltzeko momentuan helbide elektronikoa erabiliko da gakoa bilatzeko. Horretaz gain, helbide berdinentzat arau gehiago badaude, hauek ere prozesatuko dira.
Ez bilatu arau gehiago bateratutako helbideentzat
Aukera hau gaitzen baduzu, arau honekin bateratzen bada, prozesamenduak ez ditu arau gehiago bilatuko helbide honentzako; hau da, hurrengo hartzailearekin hasiko da.
Hurrengo OpenPGP gakoak erabili:
Gakoa(k) Aukeratu.. botoia erabili ezazu zifratzeko erabiliko diren hartzailearen gakoak aukeratzeko. Goiko ekintzaren moduan, arau honekin baterantzen diren helbideek ez dute prozesua jarraituko.
Sinatzeko Lehenetsita
Mezuaren sinadura gaitu edo ezgaitu. Honek mezua idazteko lehioan jarri duzuna erabili edo jaramonik ez egitea zehazten du. Balioak hauek izan daitezke:
  • Inoiz: sinadura ezgaitu, nahiz eta mezua idazteko lehioan bestela esanda (beste balioei ez die jaramonik egiten)
  • Bai, Mezua idazteko lehioan aukeratzen bada: sinadura mezua idazteko lehioan jartzen duen bezela egin
  • Beti: sinadura gaitu, mezua idazteko lehioan aukera hori gaituta egonez arren
Sinadura ezarpen hauek bateratzen diren arau guztietara aplikatuko da. Arau batek sinadura ezgatzen badu, mezua ez da sinatuko, nahiz eta beste arau batzuk Beti esaten duten.
Zifraketa
Mezuaren zifraketa gaitu edo ezgaitu. Jarri daitezken ezaugarriak eta euren esanahia sinaduran daudenen berdinak dira.
PGP/MIME
PGP/MIME (RFC 3156) mezu kodifikazioa gaitu edo ezgaitu. PGP/MIME ezgaituta badago, mezuak "txertatutako PGP" erabiliz kodifikatuko dira. Jarri daitezken ezaugarriak eta euren esanahia sinaduran daudenen berdinak dira.

Arauak OpenPGP Arau Editorean dagoen zerrendaren ordenean prozesatuko dira. Hartzaile batek arau batekin bat datorrenean eta arau horrek OpenPGP gako ID-a badauka, gako ID hori erabiltzeaz gain, hartzailea ez da gehiago kontutan izango ondorengo arauak prozesatzerakoan.


Laguntza gehiago nahi baduzu Enigmail Hartzaile Bakoitzeko Ezaugarriak weborrian aurkitu dezakezu

enigmail/lang/eu/help/initError.html000066400000000000000000000046451266701624400200110ustar00rootroot00000000000000 Enigmail Laguntza: Nola Konpondu OpenPGP Hasieratzerakoan Dauden Arazoak

Enigmail Laguntza

Nola Konpondu OpenPGP Hasieratzerakoan Dauden Arazoak

Arrazoi asko egon daitezke OpenPGP hasieratzerakoan errorea emateko. Ohikoenak azpian agertzen dira; informazio gehiago nahi baduzu, Enigmail Laguntza weborrian aurkitu dezakezu.

GnuPG ezom ozam da aurkitu

OpenPG funtzionatu dezan GnuPG tresna instalatuta egon behar du. GnuPG ezin izan bada aurkitu, lehendabizi gpg.exe (Windows-en; gpg beste plataformetan) exekutagarria zure ordenagailuan instalatuta dagoela ziurtatu zaitez. GnuPG instalatuta badago eta OpenPGP-k ezn badu aurkitu, OpenPGP lehentasunetan (menua OpenPGP > Lehentasunak) GnuPG-ren helbidea eskuz jarri beharko diozu.

Enigmime hasieratzerakoan huts egin du

OpenPGP bakarrik funtzionatuko du Thunderbird edo SeaMonkey eraiki ziren ingurune berdinean eraki bada. Horrek esan nahi du, Enigmail-en bertsio ofiziala bakarrik mozilla.org argitaratutako Thunderbird edo SeaMonkey bertsio ofizialekin bakarrik erabili daitekeela.

Beste jatorri bat daukan Thunderbird edo SeaMonkey erabiltzen baduzu (adibidez, zure Linux banaketarekin datorrena), edo zuk zeuk aplikazioa eraiki baduzu, jatorri berdinarekin eraiki den Enigmail bertsio bat erabili beharko zenuke, edo zuk zeuk Enigmail eraiki. Enigmail erakitzeko Iturburu Kodea atalera jo ezazu Enigmail weborrian. Mesedez, ez bidali akats txosten bat arazo honekin, konponketarik ez baitauka.

Informazio gehiago nahi baduzu Enigmail Laguntza weborrian aurkitu dezakezu.

enigmail/lang/eu/help/messenger.html000066400000000000000000000105311266701624400200130ustar00rootroot00000000000000 Enigmail Laguntza: Mezuak Irakurri

Enigmail Laguntza

Enigmail erabili mezuak irakurtzeko

Posta lehioan dagoen Argitu botoia
Botoi hau gauza askotarako erabili daiteke: argitu, egiaztatu edo gako publikoak inportatzeko. Normalean, argitzea/egiaztatzea automatikoki egiten da, baina aukera hau ezgaitu daiteke lehentasun baten bitartez. Honek huts egiten badu, normalean Enigmailen egoera-lerroan mezu motz bat agertuko da. Argitu botoian klik eginez, xehetasun gehiago dituen errore mezua ikusi ahal izango duzu, GnuPG komandoaren irteeera barne.
Idazluma eta Giltza ikonoak Mezuaren Goiburuan
Idazluma eta Giltza ikonoek mezua sinatuta edo/eta zifratuta dagoela erakusten dute, baita sinadura ona bada ere, hau da, mezua sinatu zenetik aldatu baldin ez bada. Mezua aldatu baldin bada, Idazluma ikonoa Idazluma Apurtu batera aldatuko da sinadura oker dagoela adierazteko. Idazluma eta giltza ikonoetan eskubiko klik eginez hurrengo aukerak dituen menua agertuko da:
  • OpenPGP Sekurtasun informazioa: GnuPG-k mezuarentzat atera duen egoera erakutsiko dizu.
  • OpenPGP Sekurtasun informazioa kopiatu: GnuPG-k atera duen egorea arbelera kopiatuko du; adibidez, erantzun batean itxasteko e.a.
  • OpenPGP argazki ID-a ikusi: mezua bidali zuen pertsonaren Argazki ID-a erakutsiko dizu, euren argazkia gako publikoaren barruan txertatu baldin badu.(Aukera hau gaituta agertuko da bakarrik beraren gakoan Argazki ID-a txertatuta baldin badago.)
  • S/MIME Sekurtasun informazioa: mezuaren S/MIME sekurtasun informazioa erakutsiko dizu.

Zure gpg.conf fitxategian gako-serbitzari-aukerak gakoak-auto-inportatu gaituta ez baldin baduzu eta sinatutako edo zifratutako mezu bat irakurtzen baduzu, goiburuan dagoen Idazluma ikonoak Galdera ikur bat izango du, eta goiburuan dagoen Enigmail egoera-lerroak hurrengoa esango du: Mezuaren zati bat sinatuta dago; xehetasunentzako idazluma ikonoak klik egin ezazu; horretaz gain mezu panelean OpenPGP mezu bolkearen adierazleak eta sinadura blokeak erakutsiko ditu.

Hau ere ikusi dezakezu zure gpg.conf fitxategian gako-serbitzari-aukerak gakoak-auto-inportatu gaituta gaituta badaukazu eta mezuaren OpenPGP gakoa lehenetsitako gako-serbitzarian eskuragarri ez baldin badago.

Idazluma eta Galdera ikurra ikonoan klik egiten baduzu, gakoa zure gako giltzatakoan ez dagoela abisatzeko lehioa agertuko da. Ados sakatuz, beste lehio bat erakutsiko da, honetan gako-zerbitzari zerrenda bat agertuko da eta bertan igorlearen gako publikoa deskargatzeko serbitzaria aukeratu ahal izango duzu.

Erabiliko diren gako-serbitzaren zerrenda konfiguratzeko, Enigmail -> Lehentasunak -> Oinarrizkoak fitxara joan zaitez eta gako-serbitzarien helbideak Gako-serbitzaria(k): eremuan sartu itzazu koma bitartez bananduz. Zerrendan dagoen lehendabiziko gako-serbitzaria lehenetsitakoa bezela erabiliko da

Zifratutako eranskikak ireki / Erantsitako OpenPGP gakoak inportatu
*.pgp, *.asc eta *.gpg luzapena duten eranskinak Enigmailek bereziak bezala identifikatuko ditu eta tratamendu berezia emango die. Eranskin hauetan eskubiko klik egiten baduzu, laister-menuan bi sarrera berezi agertuko dira: Argitu eta Ireki eta Argitu eta Gorde. Bi menu sarrera hauek erabili itzazu eranskinak ireki edo gorde baino lehen argitu nahi badituzu. Eranskin bat OpenPGP gako fitxategi bat bezela antzematen badu, zure giltzatakoan gakoak inportatzeko aukera emango dizu.

Laguntza gehiago nahi baldin baduzu Enigmail Laguntza weborrian aurkitu dezakezu.

enigmail/lang/eu/help/rulesEditor.html000066400000000000000000000061611266701624400203300ustar00rootroot00000000000000 Enigmail Laguntza: Arau Editorea

Enigmail Laguntza

Enigmail Arau Editorea Erabiltzen

Arau editorean, hartzaile bakoitzaren lehentasunak jarri ditzakezu zifraketa, sinadura eta PGP/MIME gaitzeko, baita ze OpenPGP gako erabiliko diren. Arau bakotzak lerro batean agertzen diren 5 eremu dira:

E-posta
Hartzailea:, Cc: eta Bcc: eremuekin bateratuko den helbide elektronikoa(k). Bateratzea testu zatietan lan egiten du (Xehetasun geiago Araua Editatu lehioan aurkitu daitezke)
OpenPGP Gakoa(s)
hartzailearentzat erabiliko diren OpenPGP gako ID zerrenda
Sinatu
mezuaren sinadura gaitu edo ezgaitu. Honek mezua idazteko lehioan jarrtzen diozunaren arabera edo haiei jaramonik egin gabe lan egin dezake. Balioak honakoak dira:
  • Inoiz: sinadura ezgaitu, mezua idazteko lehioan gaituta egon arren (beste balioei ez die jaramonik egiten)
  • Posible: sinadura mezua idazteko lehioan agertzen denaren arabera egingo da
  • Beti: sinaduar gaitu, mezua idazteko lehioan aukera hori gaituta egon ez arren

Sinadura ezarpen hauek bateratzen diren arau guztiekin aplikatzen da. Arau batek sinadura ezgaitzen badu, mezua ez da sinatuko, nahiz eta beste arauek Beti esaten duten.

Zifratu
mezuaren zifraketa gaitu edo ezgaitu. Onartutako ezarpenak eta euren esanahia sinadurarenak bezalakoak dira.
PGP/MIME
PGP/MIME (RFC 3156) mezu kodifikazioaren erabilera gaitu edo ezgaitu. PGP/MIME ezgaituta badago, mezuak "txertatutako PGP" erabiliz erabiliko dira. Onartutako ezarpenak eta euren esanahia sinadurarenak bezalakoak dira.

Arauak zerrendan agertzen diren ordenean prozesatuko dira. Hartzaile batek arau batekin bat datorrenean eta arau horrek OpenPGP gako ID-a badauka, gako ID hori erabiltzeaz gain, hartzailea ez da gehiago kontutan izango ondorengo arauak prozesatzerakoan.

Oharra: Arau editorea oraindik bukatu gabe dago. Arau aurreratuagoak egin daitezke arau fitxategia zuzenean editatuz (arau hauek ez lirateke inoiz gehiago arau editorearekin editatu behar).Informazio gehiago nahi baduzu arau fitxategia zuzenean editatzeari buruz Enigmail weborrian aurkitu dezakezu


Laguntza gehiago nahi baduzu Enigmail Laguntza weborrian aurkitu dezakezu

enigmail/lang/eu/help/sendingPrefs.html000066400000000000000000000047771266701624400204710ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/fi/000077500000000000000000000000001266701624400141725ustar00rootroot00000000000000enigmail/lang/fi/am-enigprefs.properties000066400000000000000000000001251266701624400206630ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP-turvallisuus enigmail/lang/fi/enigmail.dtd000066400000000000000000000765121266701624400164670ustar00rootroot00000000000000 Huom: Avaimen luominen voi kestää jopa useita minuutteja. Älä sulje ohjelmaa kun avainta luodaan. Tietokoneen aktiivinen käyttäminen avainta luotaessa lisää avaimen luontiin tarvittavaa satunnaisuutta ja siten nopeuttaa luontiprosessia. Enigmail ilmoittaa kun avain on valmis."> " on virheellinen"> Huom: Avaimen luominen voi kestää jopa useita minuutteja. Älä sulje ohjelmaa kun avainta luodaan. Enigmail ilmoittaa kun avain on valmis."> Huom.: Enigmail varmentaa jokaisen sähköpostin allekirjoitukset riippumatta tilistä tai käyttäjätunnuksesta"> Kiitos Enigmail-tiimin puolesta."> enigmail/lang/fi/enigmail.properties000066400000000000000000000523571266701624400201110ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail-hälytys enigConfirm=Enigmail-vahvistus enigError=Enigmail-virhe enigPrompt=Enigmail-kehote dlgYes=Kyllä dlgNo=Ei dlgKeepSetting=Muista vastaukseni, äläkä kysy uudestaan dlgNoPrompt=Älä näytä tätä huomioikkunaa uudestaan dlg.button.delete=&Poista dlg.button.cancel=&Peruuta dlg.button.close=&Sulje dlg.button.continue=Jatka dlg.button.skip=&Ohita dlg.button.view=&Näytä repeatPrefix=\n\nTämä hälytys toistetaan %S repeatSuffixSingular=kerran. repeatSuffixPlural=kertaa. noRepeat=\n\nTämä hälytys toistetaan vasta Enigmailin seuraavan päivityksen yhteydessä. pgpNotSupported=Käytät ilmeisesti PGP 6.x:ä Enigmail:n kanssa.\n\nPGP 6.x:n toiminnassa on kuitenkin ongelmia, joiden takia Enigmail ei toiminut kunnolla ja siksi Enigmail ei enää tue PGP 6.x:ä. Käytä PGP:n sijaan GnuPG:tä.\n\nTarvittaessa Enigmailin kotisivujen ohjesivulta löytyy ohjeita GnuPG:n siirtymisestä passphraseCleared=Salasanamuisti tyhjennettiin. noPhotoAvailable=Ei kuvaa debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Kuvan polku '%S' ei ole luettavissa # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Enigmailin uudessa versiossa on olennaisia muutoksia asetuksissa ja vaihtoehdoissa. Pyrimme siirtämään vanhat asetukset uuteen versioon. Emme kuitenkaan voi varmistaa kaikkia tapauksia automaattisesti. Ole hyvä, tarkista eri asetukset ja vaihtoehdot asennuksen jälkeen. enigmailCommon.checkPreferences=Tarkista asetukset.. usingVersion=Enigmailin versio %S käynnissä usingAgent=Salaamiseen ja salauksen purkamiseen käytetään ohjelman %S tiedostoa %S agentError=VIRHE: Enigmime-palveluun ei saatu yhteyttä accessError=Virhe käytettäessä Enigmail-palvelua onlyGPG=Avaimen luominen onnistuu vain GnuPG-ohjelman kanssa (Ei PGP:n kanssa). keygenComplete=Avain luotu! Käyttäjätieto <%S> käyttää avainta viestien allekirjoittamiseen. revokeCertRecommended=Mitätöintivarmenteen luominen avaimelle on suositeltua. Avaimen voi mitätöidä sillä jos avain esimerkiksi hukkuu tai joutuu vääriin käsiin. Luodaanko mitätöintivarmenne? keyMan.button.generateCert=&Luo sertifikaatti genCompleteNoSign=Avain luotu! genGoing=Avaimen luonti on jo käynnissä. passNoMatch=Salasanat eivät täsmää. Kirjoita ne uudelleen passCheckBox=Valitse, jos avaimelle ei aseteta salasanaa passUserName=Kirjoita käyttäjätiedoista puuttuva käyttäjätunnus passSpaceProblem=Teknisistä syistä, tunnuslauseen voi aloittaa tai päättää välilyöntiin changePassFailed=Salasanan vaihtaminen epäonnistui. keyConfirm=Luodaanko julkinen ja salain avain käyttäjälle "%S"? keyMan.button.generateKey=&Luo avain keyAbort=Peruutetaanko avaimen luonti? keyMan.button.generateKeyAbort=&Keskeytä avainten luonti keyMan.button.generateKeyContinue=&Jatka varmenteen luontia expiryTooLong=Avaimen vanhenemisaika ei voi ylittää 100:a vuotta. expiryTooLongShorter=Et pysty määrittämään avaimen vanhenenemista yli 90 vuoden päähän. expiryTooShort=Avain ei voi vanheta alle päivässä. keyGenFailed=Avaimen luonti epäonnistui. Tarkista yksityiskohdat Enigmail-konsolin viesteistä (Valitse Enigmail > Enigmail:n virheenjäljitys). setKeyExpirationDateFailed=Päättymispäivää ei ole muutettu # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail-turvallisuustietoja\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Tämän viestin liitteitä ei ole allekirjoitettu tai salattu*\n\n possiblyPgpMime=Viesti on mahdollisesti PGP/MIME-salattu tai -allekirjoitettu. Napsauta Pura-painiketta varmistaaksesi noDecrypted=Ei purettua viestiä, jota tallentaa.\nKäytä Tiedosto-valikon Tallenna-komentoa noMessage=Ei tallennettavaa viestiä. useButton=Napsauta Pura-painiketta purkaaksesi viestin salauksen saveHeader=Enigmail: Tallenna purettu viesti saveAttachmentHeader=Enigmail: Tallenna purettu liitetiedosto noTempDir=Väliaikaista tallennuskansiota ei löytynyt\nAseta TEMP-ympäristömuuttuja attachmentPgpKey=Avattava liite "%S" vaikuttaa OpenPGP-avaintiedostolta.\n\nTuo avaimet napsauttamalla Kyllä tai napsauta Ei näyttääksesi tiedoston sisällön beginPgpPart=********* *SALATTU tai ALLEKIRJOITETTU OSA ALKAA* ********* endPgpPart=********** *SALATTU tai ALLEKIRJOITETTU OSA LOPPUU* ********** notePartEncrypted=Enigmail: *Osia viestistä EI OLE allekirjoitettu tai salattu* noteCutMessage=Enigmail: *Viesti on jaettu useaan lohkoon -- Salauksen purku tai allekirjoituksen varmistus peruutettiin* decryptOkNoSig=Varoitus\n\nSalauksen purkaminen onnistui, mutta allekirjoitus ei varmistunut oikein msgOvl.button.contAnyway=&Jatka signature.verifyFailed=Allekirjoituksen liitetiedostoja %S ei voitu vahvistaa keysToExport=Valitse viestiin liitettävät OpenPGP-avaimet keysToUse=Valitse OpenPGP-avaimet osoitesuotimelle %S pubKey=Käyttäjätunnuksen %S julkinen avain\n windowLocked=Viestin kirjoitusikkuna on lukittu. Viestin lähetys peruttu. sendUnencrypted=Enigmailin alustus epäonnistui.\nLähetetäänkö viesti salaamattomana? composeSpecifyEmail=Anna ensisijainen sähköpostiosoitteesi, jonka perusteella lähtevien viestien allekirjoitusavain valitaan.\nJos et anna sähköpostiosoitetta, jokaisen viestin allekirjoitusavain valitaan viestin lähettäjäkentän perusteella. sendWithShownBcc=Salaa normaalisti sendingNews=Salatun viestin lähetys peruttiin.\n\nTätä viestiä ei voi salata koska yksi vastaanottajista on keskusteluryhmä. Lähetä viesti uudestaan salaamattomana. sendToNewsWarning=Varoitus: olet aikeissa lähettää salattua sähköpostia uutisryhmään.\n\nTämä ei ole suotavaa. Se on järkevää ainoastaan silloin, kun kaikki ryhmän jäsenet voivat purkaa viestin. Eli viesti on salattu ja avain on kaikilla ryhmään osallistujilla. Lähetä tämä viesti vain, jos tiedät tarkalleen mitä olet tekemässä.\n\nHaluatko jatkaa? hasHTML=HTML-postin varoitus:\nViesti saattaa sisältää HTML-koodia, jonka vuoksi viestin salaus tai allekirjoitus voi epäonnistua. Voit vastaisuudessa lähettää allekirjoitettuja viestejä painamalla Shift-näppäintä napsauttaessasi Kirjoita viesti tai Vastaa viestiin -painiketta.\nJos allekirjoitat viestisi oletuksena, sinun kannattaa ottaa HTML-muotoisten viestien lähetys pois päältä tiliasetuksista. strippingHTML=Viestissä on HTML-muotoiluja, jotka katoavat kun viesti muunnetaan allekirjoituksen tai salauksen vuoksi pelkäksi tekstiksi. Jatketaanko muuntoa? msgCompose.button.sendAnyway=&Lähetä viesti joka tapauksessa attachWarning=Tämän viestin liitteet ovat linkitettyjä ja niitä ei voi salata. Salataksesi tiedostot, tallenna ne ensin kiintolevyllesi ja liitä ne sitten viestiin. Jatketaanko kaikesta huolimatta? quotedPrintableWarn=Lähtevien viestien "quoted printable"-koodaus on käytössä. Koodauksen takia viestiesi allekirjoitus ja salaus voidaan tulkita virheelliseksi.\nOtetaanko "quoted-printable"-koodaus pois käytöstä? minimalLineWrapping=Viestit rivittyvät tällä hetkellä %S merkin leveyteen. Jotta viestejä voi salata tai allekirjoittaa, merkkejä täytyy mahtua riville vähintään 68.\nMuutetaanko riville mahtuvien merkkien määrä 68:ksi? warning=Varoitus signIconClicked=Olet muokannut allekirjoitusta. Tämän takia kirjoittaessasi tätä viestiä, allekirjoittaminen ja viestin salaaminen eivät enää riipu toisistaan. pgpMime_sMime.dlg.pgpMime.button=Käytä & PGP / MIME pgpMime_sMime.dlg.sMime.button=Käytä &S/MIME msgCompose.toolbarTxt.signAndEncrypt=Tämä viesti tullaan allekirjoittamaan ja salataan # note: should end with double newline: sendAborted=Viestin lähetys peruttiin.\n\n statPGPMIME=PGP/MIME statSigned=ALLEKIRJOITETTU statEncrypted=SALATTU statPlain=SELKOKIELINEN offlineSave=Tallennetaanko %S viesti vastaanottajalle %S lähtevien viestien kansioon? onlineSend=Lähetä %S viesti vastaanottajalle %S? encryptKeysNote=Huom.: viesti on salattu seuraavilla käyttäjätunnuksilla / avaimilla: %S signFailed=Enigmail-virhe. Salaus tai allekirjoitus epäonnistui. Lähetetäänkö viesti salaamatta? msgCompose.button.sendUnencrypted=Lähetä salaamaton viesti recipientsSelectionHdr=Valitse vastaanottajat joiden viestit salataan configureNow=Valittua käyttäjää ei ole asetettu käyttämään Enigmail-turvallisuutta. Muokataanko asetuksia nyt? # should not be used anymore: encryptYes=Viesti salataan encryptNo=Viestiä ei salata # should not be used anymore: signYes=Viesti allekirjoitetaan signNo=Viestiä ei allekirjoiteta rulesConflict=Vastaanottajakohtaisissa säännöissä ristiriitoja\n%S\n\nLähetetäänkö viesti näillä asetuksilla? msgCompose.button.configure=&Määritä msgCompose.button.send=&Lähetä viesti msgCompose.button.save=&Talllenna viesti # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Allekirjoituksen varmistamiseen tarvitaan osoitteen %S julkinen avain clickDecrypt=. Napsauta Salauksen purkamis -painiketta clickDecryptRetry=. Napsauta Salauksen purkamis -painiketta yrittääksesi uudestaan msgPart=Osa viestistä %S msgSigned=allekirjoitettu msgEncrypted=salattu msgSignedAndEnc=allekirjoitettu ja salattu unverifiedSig=Varmistamaton allekirjoitus incompleteDecrypt=Salauksen purkaminen ei ole täydellinen needKey=Virhe - salauksen purkaminen vaatii salaisen avaimen failedDecrypt=Virhe - salauksen purkaminen epäonnistui badPhrase=Virhe - väärä salasana failedDecryptVerify=Virhe - salauksen purkaminen tai viestin varmistus epäonnistui viewInfo=. Näytä > Viestin turvallisuustiedot lukeaksesi lisätietoja decryptedMsg=Viesti, jonka salaus on purettu locateGpg=Osoita GnuPG-ohjelman sijainti invalidGpgPath=GnuPG:tä ei voida käynnistää annetusta sijainnista. Enigmail on pois käytöstä kunnes GnuPG:n sijainti muutetaan tai ohjelma käynnistetään uudestaan. warningsAreReset=Kaikki varoitusikkuna-asetukset on nollattu. prefs.gpgFound=GnuPG:tä ei löytynyt sijainnista %S prefs.gpgNotFound=GnuPG:tä ei löytynyt prefs.warnAskNever=Varoitus: Asetuksen seurauksena sähköpostiviestit lähetetään salaamatta siitä erikseen ilmoittamatta jos jollekin vastaanottajista ei löydy avainta! enterAdminPin=Kirjoita älykorttisi ADMIN PIN-koodi enterCardPin=Kirjoita älykorttisi PIN-koodi notInit=Virhe - Enigmail-palvelua ei ole vielä alustettu badCommand=Virhe - salauskomento epäonnistui cmdLine=-komento ja -tuloste: notRequired=Virhe - salausta ei vaadita notComplete=Virhe - avaimen luonti ei ole vielä valmis invalidEmail=Virhe - virheellisiä sähköpostiosoitteita noPassphrase=Virhe - salasanaa ei ole annettu noPGPblock=Virhe - Ei löydetty kelvollista koodattua OpenPGP-dataosiota unverifiedReply=Viestin sisennettyä osaa (vastausta) on luultavasti muokattu sigMismatch=Virhe - Allekirjoitus ei ole täsmää cantImport=Julkisen avaimen tuonnissa tapahtui virhe\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Älykorttia %S löydetty, lukija ei osaa käsitellä viestiä\nPyydän lisäämään älykortti %S, toista toimenpide. sc.insertCard=Toiminta vaatii älykorttin %S.\nOle hyvä ja lisää vaadittava älykortti, toista toimenpide. sc.noCardAvailable=Älykorttia ei löydetty lukijasta.\nAseta älykortti kortinlukijaan ja yritä uudestaan sc.noReaderAvailable=Älykortinlukijaan ei saatu yhteyttä\nKiinnitä älykortinlukija tietokoneeseen, aseta kortti lukijaan ja yritä uudestaan gpgNotFound=GnuPG-ohjelmaa %S ei löytynyt.\nTarkista, että GnuPG:n ohjelmatiedoston kansio on asetettu oikein Enigmail:n asetuksissa gpgNotInPath=GnuPG-ohjelmaa ei löytynyt PATH-muuttujan kansioista.\\Tarkista, että GnuPG:n ohjelmakansio on asetettu oikein Enigmail:n asetuksissa gpgAgentNotStarted=GnuPG versiosi %S tarvitseman gpg-agentin käynnistäminen ei onnistunut. prefUntrusted=EI LUOTETTU prefRevoked=MITÄTÖITY AVAIN prefExpiredKey=VANHENTUNUT AVAIN prefExpired=VANHENTUNUT prefGood=Hyvä allekirjoitus lähettäjältä %S prefBad=VääRä allekirjoitus lähettäjältä %S failCancel=Virhe - Avaimen nouto peruutettiin failNoServer=Virhe - Ei annettu avainpalvelinta, jolta avain noudetaan failNoID=Virhe - Ei annettu käyttäjätunnusta, jolle avain noudetaan failKeyExtract=Virhe - avaimen tuonti viestistä epäonnistui notFirstBlock=Virhe - Ensimmäinen OpenPGP-osio ei ole julkinen avain importKeyConfirm=Tuodaanko viestiin sisällytetyt avaimet? failKeyImport=Virhe - avainten tuonti epäonnistui fileWriteFailed=Kirjoitus tiedostoon %S epäonnistui importKey=Tuo julkinen avain %S avainpalvelimelta: uploadKey=Lähetetäänkö julkinen avain %S avainpalvelimelle: keyId=Avaintunnus keyAndSigDate=Avaintunnus: 0x%S / Allekirjoitettu: %S keyFpr=Avaimen sormenjälki: %S noEmailProvided=Sähköpostiosoitetta ei ole asetettu. keyAlreadySigned=Avain on jo kertaalleen allekirjoitettu. selKeyExpired=vanhenee %S createdHeader=Luotu atLeastOneKey=Avainta ei ole valittu! Valitse ainakin yksi avain ennen kuin suljet ikkunan userSel.button.goBack=Valitse lisää avaimia userSel.secretKeySel.title=Valitse salainen OpenPGP avain jolla allekirjoitat viestit # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Lähetä myöhemmin # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Huom.: Kaikki sähköpostiohjelmat eivät tue PGP/MIME-standardia. Windowsilla sitä tiettävästi tukee Mozilla/Thunderbird, Sylpheed, Pegasus ja Mulberry. Linuxilla, muilla Unixeilla ja Mac OS X:llä useimmat sähköpostiohjelmat tukevat sitä. Jos et ole varma, valitse %S vaihtoehto. first=ensimmäinen second=toinen # Strings used in am-enigprefs.js encryptKeyHeader=Valitse salaukseen käytettävä OpenPGP-avain identityName=Käyttäjätiedot: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Salaus on otettu käyttöön, mutta yhtäkään avainta ei ole valittu. Salataksesi osoitteeseen %S lähetettävät viestit, valitse avainlistasta yksi tai useampi voimassaoleva avaimesi. Poistetaanko salaus käytöstä osoitteelle %S? noKeyToUse=(ei avainta - ei salausta) noEmptyRule=Sääntö täytyy antaa. Kirjoita sääntökenttään sähköpostiosoite. invalidAddress=Antamasi sähköpostiosoitteet ovat virheellisesti muotoiltuja. Anna ainoastaan vastaanottajien sähköpostiosoitteet, älä heidän nimiään. Esimerkki:\nVäärin: Joku Nimi \nOikein: joku.nimi@osoite.fi noCurlyBrackets=Aaltosulkeilla {} on erikoismerkitys ja niitä ei tule käyttää sähköpostiosoitteissa. Jos haluat muuttaa säännön täsmäysperusteita, käytä "Sääntö pätee jos ylläoleva ..." -kenttää.\nLue lisätietoja ohjeesta. # Strings used in enigmailRulesEditor.js never=Ei koskaan always=Aina possible=Mahdollisesti deleteRule=Poistetaanko valittu sääntö? nextRcpt=(Seuraava vastaanottaja) negateRule=Ei # Strings used in enigmailSearchKey.js needOnline=Valitsemasi toiminto ei ole käytettävissä ilman verkkoyhteyttä. Siirry verkkoyhteystilaan ja yritä uudelleen. protocolNotSupported=OpenPGP-avaimia ei voi noutaa käyttäen antamaasi yhteyskäytäntöä "%S://". gpgkeysDisabled=Asetuksen "extensions.enigmail.useGpgKeysTool" ottaminen käyttöön voisi olla avuksi. noKeyserverConn=Yhteys avainpalvelimeen %S epäonnistui. keyDownloadFailed=Avaimen nouto avainpalvelimelta epäonnistui. Virheilmoitus oli:\n%S internalError=Tapahtui sisäinen virhe. Avainten nouto tai tuonti epäonnistui. noKeyFound=Ikävä kyllä yhtään avainta annetulle sähköpostiosoitteelle ei löytynyt. # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Avainten haku tai nouto avainpalvelimelta epäonnistui: ohjelmaa gpgkeys_%S ei kyetty suorittamaan. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Avaimen omistajan luottamustason asettaminen epäonnistui # Strings in enigmailSignKeyDlg.js signKeyFailed=Avaimen allekirjoittaminen epäonnistui # Strings in enigmailKeyManager.js keyMan.loadingKeys=Ladataan avaimia... keyValid.unknown=tuntematon keyValid.invalid=virheellinen keyValid.disabled=ei käytössä keyValid.revoked=mitätöity keyValid.expired=vanhentunut keyValid.noSubkey=ei kelvollista aliavainta keyTrust.untrusted=ei luotettu keyTrust.marginal=osittain luotettu keyTrust.full=luotettu keyTrust.ultimate=ehdottomasti luotettu keyTrust.group=(ryhmä) keyType.public=julk keyType.publicAndSec=julk/sal keyMan.enableKey=Ota avain käyttöön keyMan.disableKey=Poista avain käytöstä userAtt.photo=Käyttäjätieto (JPEG-kuva) asciiArmorFile=ASCII-koodatut tiedostot (*.asc) importKeyFile=Tuo OpenPGP avain tiedoston gnupgFile=GnuPG-tiedostot saveRevokeCertAs=Luo ja tallenna mitätöintivarmenne revokeCertOK=Mitätöintivarmenne luotiin. Voit mitätöidä varmenteella julkisen avaimesi jos esimerkiksi hukkaat salaisen avaimesi.\n\nMitätöintivarmenne on parasta tallentaa erilliselle, turvallisessa paikassa säilytetylle CD:lle tai korpulle. Jos varmenne joutuu vääriin käsiin sillä voi tehdä avaimestasi käyttökelvottoman. revokeCertFailed=Mitätöintivarmenteen luonti epäonnistui. addUidOK=Käyttäjätunnuksen lisäys onnistui addUidFailed=Käyttäjätunnuksen lisäys epäonnistui noKeySelected=Vähintään yksi avain täytyy valita, jotta operaatio voidaan suorittaa exportToFile=Valitse tiedostonimi vietäville avaimille exportSecretKey=Tallennetaanko OpenPGP-tiedostoon myös salainen avaimesi? saveKeysOK=Avainten tallennus onnistui saveKeysFailed=Avainten tallennus epäonnistui importKeysFailed=Avainten tuonti epäonnistui enableKeyFailed=Avaimen käyttöön otto tai käytöstä poisto epäonnistui specificPubKeyFilename=%S (0x%S) julk specificPubSecKeyFilename=%S (0x%S) julk-sal defaultPubKeyFilename=Viedyt-julkiset-avaimet defaultPubSecKeyFilename=Viedyt-julkiset-ja-salaiset-avaimet noSecretKeys=Salaisia avaimia ei löytynyt.\n\nLuodaanko avain nyt? sendKeysOk=Avaimet lähetittiin onnistuneesti sendKeysFailed=Avainten lähettäminen epäonnistui receiveKeysOk=Avainten päivitys onnistui receiveKeysFailed=Avainten nouto epäonnistui importFromClip=Tuodaanko leikepöydällä olevat avaimet? copyToClipbrdFailed=Avainten vienti leikepöydälle epäonnistui. copyToClipbrdOK=Avaimet kopioitiin leikepöydälle deleteSecretKey=VAROITUS: Olet poistamassa salaista avainta!\nAvaimelle salattuja viestejä ei voida enää purkaa jos avain poistetaan.\n\nPoistetaanko SEKÄ julkinen ETTÄ salainen avain\n"%S"? deleteMix=VAROITUS: Olet poistamassa salaisia avaimia!\nAvaimelle salattuja viestejä ei voida enää purkaa jos avain poistetaan.\n\nPoistetaanko SEKÄ valitut julkiset ETTÄ salaiset avaimet? deletePubKey=Poistetaanko julkinen avain tunnukselle\n%S? deleteSelectedPubKey=Poistetaanko julkinen avain? deleteKeyFailed=Avaimen poisto epäonnistui. revokeKeyOk=Avain on mitätöity. Jos avain on saatavilla avainpalvelimelta, siirrä mitätöity avain palvelimelle, jotta muutkin näkevät mitätöinnin. revokeKeyFailed=Avaimen mitätöinti epäonnistui. refreshAllQuestion=Yhtään avainta ei valittu. Päivitetäänkö kaikki avaimet? refreshKey.warn=Varoitus: riippuen avainten lukumäärästä ja verkkoyhteyden nopeudesta, kaikkien avainten päivittäminen voi kestää kauan!\n\nJatketaanko? downloadContactsKeys.importFrom=Import contacts from address book '%S'? keyMan.button.exportSecKey=&Export Secret Keys keyMan.button.import=&Tuo keyMan.button.refreshAll=&Päivitä kaikki avaimet keyMan.button.revokeKey=&Peruuta avain keyMan.button.skip=&Ohita avain keylist.noOtherUids=Ei ole muuta identiteettiä keylist.noPhotos=Ei valokuvaa saatavilla keylist.hasPhotos=Valokuvat keyMan.addphoto.filepicker.title=Valokuva keyMan.addphoto.failed=Valokuvaa ei voitu lisätä # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Ensisijaisen käyttäjätunnuksen vaihto epäonnistui changePrimUidOK=Ensisijaisen käyttäjätunnuksen vaihto onnistui deleteUidFailed=Käyttäjätunnuksen %S poisto epäonnistui deleteUidOK=Käyttäjätunnuksen %S poisto onnistui revokeUidFailed=Käyttäjätunnuksen %S mitätöinti epäonnistui revokeUidOK=Käyttäjätunnuksen %S mitätöinti onnistui. Jos avain on saatavilla avainpalvelimelta, siirrä mitätöity avain palvelimelle, jotta muutkin näkevät mitätöinnin. revokeUidQuestion=Mitätöidäänkö käyttäjätunnus %S? deleteUidQuestion=Poistetaanko käyttäjätunnus %S?\n\nHuom.: Jos käyttäjätunnuksen julkinen avain on saatavilla avainpalvelimelta, käyttäjätunnuksen poisto ei muuta mitään. Saadaksesi aikaan pysyvän muutoksen käytä "Mitätöi käyttäjätunnus" -toimintoa. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=julkinen avain keyTypeSubkey=aliavain keyTypePair=avainpari keyExpiryNever=ei koskaan keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG # Strings in enigmailGenCardKey.xul keygen.started=Odota avaimen luonnin valmistumista.... keygen.completed=Avain luotu. Uuden avaimen tunnus on: 0x%S keygen.keyBackup=Avaimesta luotiin varmuuskopio nimellä %S keygen.passRequired=Kirjoita salasana jos haluat luoda varmuuskopion avaimesta toiselle medialle. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Annettu PIN-koodi ei ole oikea. Yritä uudestaan cardPin.minLength=PIN-koodissa täytyy olla vähintään %S kirjainta tai numeroa cardPin.processFailed=PIN-koodin vaihtaminen ei onnistunut # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Päivitetään avaimia, ole hyvä ja odota... keyserverProgress.uploading=Siirretään avaimia avainpalvelimella, ole hyvä ja odota... keyserverTitle.refreshing=Päivitetään avaimia keyserverTitle.uploading=Avainten siirto # Strings in enigmailSetupWizard passphrase.min8keys=Salasanan tulee olla ainakin 8-kirjainta pitkä. setupWizard.reallyCancel=Peruutetaanko Enigmail:n ohjattu asennus? enigmail/lang/fi/help/000077500000000000000000000000001266701624400151225ustar00rootroot00000000000000enigmail/lang/fi/help/compose.html000066400000000000000000000071551266701624400174650ustar00rootroot00000000000000 Enigmailin ohje: Viestien kirjoittamisesta

Enigmailin ohje

Enigmailin käyttö kirjoitettaessa viestejä

  • Enigmailin valikko Posti tai viestin kirjoitusikkunassa
    • Allekirjoita viesti: Ota käyttöön tai poista käytöstä viestin allekirjoitus. Käyttäjälle ilmoitetaan allekirjoituksen epäonnistumisesta.
    • Salaa viesti: Ota käyttöön tai poista käytöstä viestin salaus kaikille vastaanottajille. Käyttäjälle ilmoitetaan salaamisen epäonnistumisesta.

      Jos sinulla ei ole salatun viestin kaikkien vastaanottajien julkisia avaimia ja asetuksissa on valittuna Näytä avainten valintaikkuna kun se on välttämätöntä, avainlista avautuu.

      Jos sinulla ei ole salatun viestin kaikkien vastaanottajien julkisia avaimia ja asetuksissa on valittuna Älä koskaan näytä avainten valintaikkunaa, viesti lähetetään selkokielisenä.

    • Käytä PGP/MIME:ä tässä viestissä: Ota käyttöön tai poista käytöstä PGP/MIME tässä viestissä.

      Jos tiedät, että viestin vastaanottajien sähköpostiohjelmat ymmärtävät PGP/MIME-muotoa, sitä tulisi käyttää.

      Tämä toiminto otetaan käyttöön valitsemalla PGP/MIME-asetuksista Salli PGP/MIME:n käyttö tai Käytä aina PGP/MIME:ä.

    • Viestien kirjoituksen oletusasetukset: Alavalikko.
      • Allekirjoitus-/salausasetukset...: pikalinkki Tilin asetukset -> OpenPGP-asetuksiin.
      • Lähetysasetukset...: pikalinkki Asetukset -> Lähetys-välilehteen.
      • Avainten valinnan asetukset...: pikalinkki Asetukset -> Avainten valinta-välilehteen.
      • PGP/MIME-asetukset...: pikalinkki Asetukset -> PGP/MIME-välilehteen.
    • Kumoa salaus: Jos viestin lähettämisessä tapahtuu jokin virhe, kuten esimerkiksi POP-palvelinvirhe, Enigmail ei voi tietää sitä ja salattu viesti jää salatuksi viestin kirjoitusikkunaan. Palauta viesti selkokieliseksi valitsemalla Kumoa salaus.
      Kun Enigmail ei virheellisesti pura salausta lainatusta tekstistä kun salattuun viestiin vastataan, tai salausta ei pureta automaattisesti jostain muusta syystä, tätä toimintoa voi käyttää väliaikaisena korjauksena. Yleensä salauksen purku toimii automaattisesti.
    • Lisää julkinen avain: Lisää julkisen avaimen ASCII-koodattuna viestiin osoittimen sijainnista alkaen. Avaimeen sisällytettävät sähköpostiosoitteet kysytään erikseen. Lisää viestiin vain yksi avainosio ja valitse halutut julkiset avaimet. Jos vastaanottaja käyttää Enigmailia, avainosio huomataan automaattisesti. Kun avaimet on lisätty, viesti voidaan vielä salata ja allekirjoittaa.
    • Tyhjennä salasana muistista: Tyhjentää salasanan muistista. Toiminto on hyödyllinen, jos sinulla on useita avaimia ja useita salasanoja.
    • Ohje: Näyttää ohjeen (tämä sivu).

Lisää ohjeita Enigmailin ohjesivulta

enigmail/lang/fi/help/editRcptRule.html000066400000000000000000000112011266701624400204110ustar00rootroot00000000000000 Enigmailin ohje: OpenPGP-sääntöjen muokkaaminen

Enigmailin ohje

Enigmailin sääntömuokkaimen käyttö: OpenPGP-sääntöjen muokkaus

Sääntömuokkaimessa voit asettaa oletukset viestin allekirjoittamiselle, salaamiselle, PGP/MIME-koodauksen käytölle, ja määrittää käytettävät OpenPGP-avaimet vastaanottajakohtaisesti. Oletukset voidaan asettaa yhdelle vastaanottajalle tai usealle vastaanottajalle, jolla on toisensa kaltaiset sähköpostiosoitteet.

  • Aseta OpenPGP-säännöt osoitteille: Kentässä on täydelliset sähköpostiosoitteet (tai osa osoitteista) joille alla olevat säännöt pätevät suotimen tavoin. Jos osoitesuotimia on useita, ne erotetaan välilyönnillä. Suotimet voivat olla esimerkiksi pelkkä verkkoalue @sposti.fi, johon täsmäisivät kaikki @sposti.fi:n loppuvat osoitteet.
  • Sääntö pätee jos ylläoleva: Osoitesuotimen käyttäytymisen voi valita. Jos yllä olevassa kentässä on useita osoitteita, käyttäytymisasetus pätee kaikille osoitteille. Alla olevissa esimerkeissä osoitesuodinkenttään on kirjoitettu nieminen@sposti.fi.
    • on täsmälleen vastaanottajan osoite: Tällä asetuksella sääntö pätee viesteille, jotka lähetetään osoitteeseen nieminen@sposti.fi (täsmäys on kirjainkoon huomioiva).
    • on osa vastaanottajan osoitetta: Tällä asetuksella sääntö pätee viesteille, jotka lähetetään esim. osoitteisiin matti.nieminen@sposti.fi, nieminen@sposti.fi.com jne.
    • ja vastaanottajan osoitteen alku täsmäävät: Tällä asetuksella sääntö pätee viesteille, jotka lähetetään esim. osoitteeseen nieminen@sposti.fi.com
    • ja vastaanottajan osoitteen loppu täsmäävät: Tällä asetuksella sääntö pätee viesteille, jotka lähetetään esim. osoitteeseen maija.nieminen@sposti.fi
  • Jatka seuraavaan sääntöön täsmäävälle osoitteelle
    Jos asetus on valittu, Enigmail hakee osoitteeseen kuuluvaa OpenPGP-avainta vasta viestiä lähetettäessä, ja muut säännöt voivat muuttaa täsmäävien viestien lähetysasetuksia.
  • Älä tarkista enää sääntöjä täsmäävälle osoitteelle
    Jos asetus on valittu, täsmääviin osoitteisiin ei sovelleta muita sääntöjä. Täsmäävä osoite jätetään siis huomiotta muita sääntöjä käsiteltäessä.
  • Käytä seuraavia OpenPGP-avaimia:
    Valitse käytettävät vastaanottajien avaimet napsauttamalla Valitse avaimet-painiketta. Kuten yllä, jos asetus on valittu, muita sääntöjä ei huomioida täsmääville sähköpostiosoitteille.
  • Allekirjoittaminen: Allekirjoita tai älä allekirjoita viestejä tälle vastaanottajalle. Tämä asetus joko noudattaa viestin kirjoitusikkunassa antamaasi käskyä tai muuttaa sen. Mahdolliset arvot:
    • Ei koskaan: Älä ikinä allekirjoita viestiä vastaanottajalle, huolimatta viestin kirjoitusikkunan asetuksista.
    • Vain jos valitaan erikseen viestiä kirjoitettaessa: Allekirjoita viesti jos niin on viestin kirjoitusikkunassa asetettu
    • Aina: Allekirjoita viestit vastaanottajalle aina, huolimatta viestin kirjoitusikkunan asetuksista
Jokainen sääntö pätee kaikille täsmääville viesteille. Jos jokin säännöistä ottaa allekirjoituksen pois päältä, viestiä ei allekirjoiteta huolimatta siitä, mitä muut säännöt määräisivät.
  • Salaa: Salaa tai älä salaa viestiä. Asetusvalinnat ja niiden merkitykset ovat samat kuin viestin allekirjoitukselle.
  • PGP/MIME: Ota käyttöön tai poista käytöstä PGP/MIME (RFC 3156) -koodaus. Jos PGP/MIME ei ole käytössä, viestit allekirjoitetaan ja salataan käyttäen viestinsisäistä PGP:tä. Asetusvalinnat ja niiden merkitykset ovat samat kuin viestin allekirjoitukselle.

Säännöt käsitellään niiden listausjärjestyksessä OpenPGP-sääntömuokkaimessa. Jos säännössä on annettu vastaanottajan OpenPGP-avaintunnus ja osoite täsmää vastaanottajan osoitteeseen, muita viestin kanssa täsmääviä sääntöjä ei enää käsitellä.


Lisää ohjeita Enigmailin vastaanottajakohtaisten asetusten ohjesivuilta

enigmail/lang/fi/help/initError.html000066400000000000000000000045361266701624400177750ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/fi/help/messenger.html000066400000000000000000000067601266701624400200110ustar00rootroot00000000000000 Enigmailin ohje: Viestien lukeminen

Enigmailin ohje

Enigmailin käyttö luettaessa viestejä

  • Pura salaus -painike posti-ikkunassa
    Pura-painikkeella voi purkaa salauksen, varmistaa allekirjoituksen tai tuoda julkisia avaimia. Normaalisti salauksen purku tai allekirjoituksen varmistus tapahtuu automaattisesti, mutta jos näin ei käy, Enigmailin tilariville ilmestyy lyhyt virheilmoitus. Pura-painikkeesta saa tarkemman virheilmoituksen jossa on mukana GnuPG-komennon virheilmoitus.
  • Allekirjoitus- ja salauskuvakkeet viestin otsaketiedoissa
    Allekirjoitus (kynä) ja salaus (avain) -kuvakkeet ovat viestiotsakkeissa riippuen siitä, onko viesti allekirjoitettu hyvin (eli viestiä ei ole muokattu siirrettäessä) tai salattu. Jos viestiä on jollain tapaa muutettu siirrettäessä eli sen allekirjoitus on huono, tämä näkyy allekirjoituskuvakkeessa (se on esimerkiksi rikkinäinen tai yliviivattu kynä). Napsauttamalla kuvaketta hiiren oikealla painikkeella avautuu ponnahdusvalikko, jossa on seuraavat kohdat:
    • OpenPGP-turvallisuustiedot: Näyttää GnuPG:n tulosteen tälle viestille.
    • Kopioi OpenPGP-turvallisuustiedot: Kopiot leikepöydälle GnuPG:n tulosteen tälle viestille.
    • Näytä OpenPGP-kuva: Näyttää kuvan, jonka viestin lähettäjä on liittänyt julkiseen avaimeensa (vain jos kuva on olemassa).
    • S/MIME-turvallisuustiedot: Näyttää viestin S/MIME-turvallisuustiedot.

    Kun saat viestin, joka on allekirjoitettu sinulta puuttuvalla avaimella, ja jos sinulla ei ole keyserver-options auto-key-retrieve asetusta gpg.conf-tiedostossa (eli että kaikki tuntemattomat avaimet yritetään hakea avainpalvelimelta), Enigmail näyttää viestiotsakkeissa allekirjoituskuvakkeen, jossa on kysymysmerkki ja tekstirivin, jossa lukee Osa viestistä allekirjoitettu. Napsauta allekirjoituskuvaketta saadaksesi lisätietoja.

    Sama allekirjoituskuvake voi näkyä vaikka keyserver-options auto-key-retrieve olisikin asetettu, koska haettua avainta ei ehkä löydy oletusavainpalvelimelta.

    Napsauttamalla allekirjoituskuvaketta, jossa on kysymysmerkki, avautuu ikkuna, joka ilmoittaa, että avainta ei löydy avainrenkaastasi. Sulkemalla tämän ikkunan OK:ta napsauttamalla avautuu ikkuna, josta voit valita avainpalvelimen, jolta julkista avainta tulisi hakea.

    Voit muokata valittavissa olevia avainpalvelimia Enigmailin asetuksista: Enigmail -> Asetukset -> Yleiset-välilehti, ja muokkaamalla pilkulla erotettuja avainpalvelinten osoitteita Avainpalvelimet:-kentässä. Oletusavainpalvelin on listassa ensimmäisenä.

  • Salattujen liitetiedostojen avaaminen ja liitettyjen OpenPGP-avainten tuonti
    Enigmail käsittelee liitteet, joiden tiedostopääte on pgp, asc tai gpg. Tällaisen liitteen ponnahdusvalikossa (napsauta hiiren oikealla painikkeella liitettä) on kaksi erityistä valintaa: Pura ja avaa sekä Pura ja tallenna. Näillä valinnoilla voit purkaa liitteen salauksen ennen kuin avaat tai tallennat sen. Jos liite tunnistetaan OpenPGP-avaintiedostoksi, sinulta kysytään haluatko tuoda avaimet.

Lisää ohjeita Enigmailin ohjesivuilta

enigmail/lang/fi/help/rulesEditor.html000066400000000000000000000056131266701624400203160ustar00rootroot00000000000000 Enigmailin ohje: Sääntömuokkain

Enigmailin ohje

Enigmailin sääntömuokkaimen käyttö

Sääntömuokkaimessa voit muokata vastaanottajakohtaisia lähetysasetuksia. Voit määrätä, missä PGP/MIME-muodossa viesti lähetetään, mitä avainta käytetään ja allekirjoitetaanko tai salataanko se. Jokainen sääntö muodostuu viidestä kentästä ja on kirjoitettu yhdelle riville:

  • Sähköpostiosoite: Osoitteet, joiden vastaanottaja-, kopio- tai piilokopiokentässä on ehdon täyttävä osoite. Ehto voi koskea myös vain osaa osoitteesta (lisätietoja muokkaa sääntöjä -ikkunasta)
  • OpenPGP-avaimet: Lista vastaanottajalle käytettävistä OpenPGP-avaimista
  • Allekirjoita: Allekirjoita tai älä allekirjoita viestejä tälle vastaanottajalle. Tämä asetus joko noudattaa viestin kirjoitusikkunassa antamaasi käskyä tai muuttaa sen. Mahdolliset arvot:
    • Ei koskaan: Älä ikinä allekirjoita viestiä vastaanottajalle, huolimatta viestin kirjoitusikkunan asetuksista.
    • Mahdollisesti: Allekirjoita viesti jos niin on viestin kirjoitusikkunassa asetettu
    • Aina: Allekirjoita viestit vastaanottajalle aina, huolimatta viestin kirjoitusikkunan asetuksista
Jokainen sääntö pätee kaikille täsmääville viesteille. Jos jokin säännöistä ottaa allekirjoituksen pois päältä, viestiä ei allekirjoiteta huolimatta siitä, mitä muut säännöt määräisivät.
  • Salaa: Salaa tai älä salaa viestiä. Asetusvalinnat ja niiden merkitykset ovat samat kuin viestin allekirjoitukselle.
  • PGP/MIME: Ota käyttöön tai poista käytöstä PGP/MIME (RFC 3156) -koodaus. Jos PGP/MIME ei ole käytössä, viestit allekirjoitetaan ja salataan käyttäen viestinsisäistä PGP:tä. Asetusvalinnat ja niiden merkitykset ovat samat kuin viestin allekirjoitukselle.

Säännöt käsitellään niiden listausjärjestyksessä. Jos säännössä on annettu vastaanottajan OpenPGP-avaintunnus ja osoite täsmää vastaanottajan osoitteeseen, muita viestin kanssa täsmääviä sääntöjä ei enää käsitellä.

Huom.: Sääntömuokkain ei ole vielä valmis. Monimutkaisempia sääntöjä on mahdollista kirjoittaa muokkaamalla sääntötiedostoa käsin (näin muokattuihin sääntöihin ei pitäisi enää koskea sääntömuokkaimella). Tarkempia ohjeita sääntötiedoston muokkaamisesta Enigmailin kotisivulta.


Lisää ohjeita Enigmailin ohjesivuilta

enigmail/lang/fi/help/sendingPrefs.html000066400000000000000000000047771266701624400204560ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/fr/000077500000000000000000000000001266701624400142035ustar00rootroot00000000000000enigmail/lang/fr/am-enigprefs.properties000066400000000000000000000001231266701624400206720ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Sécurité OpenPGP enigmail/lang/fr/enigmail.dtd000066400000000000000000001477101266701624400164770ustar00rootroot00000000000000 NOTE: La génération d'une clef peut prendre plusieurs minutes. Ne quittez pas l'application tant que la génération est en cours. La navigation intensive sur le web ou les opérations intenses sur les disques durs pendant la génération de la clef augmenteront l'entropie et accélèreront le processus. Vous serez averti quand l'opération sera terminée.">  » est invalide"> Nota : la génération de la clef peut prendre plusieurs minutes. Veuillez ne pas quitter l'application tant que cette opération est en cours. Vous serez prévenu lorsque la génération sera terminée."> Note : Enigmail vérifiera toujours les signatures des messages pour tous les comptes et identités, qu'il y soit actif ou pas."> clef publique est pour les autres pour envoyer des messages chiffrés à vous. Vous pouvez le distribuer à tout le monde."> clef privée est pour vous même pour déchiffrer des messages chiffrés pour vous, et pour signer vos messages à d'autres. Vous ne devez la donner à personne."> clef privée est pour vous pour déchiffrer des messages chiffrés pour vous, et pour signér vos messages à autres. Vous ne devez la donner à personne. Pour protéger votre clef privée, vous serez invité à entrer une phrase secrète dans les deux dialogues suivantes."> phrase secrète est un mot de passe pour protéger votre clef privée. Elle empêche une utilisation abusive de votre clef privée."> ne sont pas recommandés."> Votre mot de passe vous sera demandé pour cette création."> exporter votre données depuis le système originale, utilisant l'assistant de sauvegarder dans les Préférences Enigmail importer les données dans le système nouveau, utilisant l'assitant ici. "> Merci d'utiliser Enigmail."> Exporter votre données depuis le système originale, utilisant l'assistant ici. Importer les données dans le système nouveau, utilisant l'assitant Setup. "> enigmail/lang/fr/enigmail.properties000066400000000000000000001224231266701624400201120ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerte Enigmail enigConfirm=Confirmation Enigmail enigError=Erreur Enigmail enigPrompt=Question Enigmail dlgYes=&Oui dlgNo=&Non dlgKeepSetting=Retenir la réponse et ne plus reposer la question dlgNoPrompt=Ne plus afficher cette fenêtre de dialogue dlg.button.delete=&Supprimer dlg.button.cancel=&Annuler dlg.button.close=&Fermer dlg.button.continue=Con&tinuer dlg.button.skip=&Passer dlg.button.overwrite=&Écraser dlg.button.view=&Voir dlg.button.retry=&Refaire dlg.button.ignore=&Sauter repeatPrefix=\n\nCette alerte sera répétée %S repeatSuffixSingular=fois. repeatSuffixPlural=fois. noRepeat=\n\nCette alerte ne sera répétée jusqu'à ce que vous mettiez à jour Enigmail. pgpNotSupported=Vous semblez utiliser Enigmail avec la version 6.x de PGP\n\nMalheureusement, PGP 6.x comporte un certain nombre de problèmes qui empêche Enigmail de fonctionner correctement. Pour cette raison Enigmail ne supporte plus PGP 6.x ; veuillez passer à GnuPG (GPG) à la place.\n\nSi vous désirez de l'aide pour passer à GnuPG, voyez la section Help du site Enigmail. initErr.howToFixIt=GnuPG est nécessaire pour l'utilisation d'Enigmail. Si vous ne l'avez pas encore installé, le plus pratique est de se servir du bouton "Setup Wizard" ci-dessous. initErr.setupWizard.button=&Setup Wizard passphraseCleared=La phrase secrète a été oubliée. cannotClearPassphrase=Vous utilisez une outil non standard (comme gnome-keyring) pour gérer les phrases secrètes. Il n'est ainsi pas possible d'affacer la phrase secrète depuis Enigmail noPhotoAvailable=Pas de photo disponible debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Le chemin de la photo '%S' n'est pas accessible # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Cette nouvelle version d'Engmail a changé significativement la manipulation des préférences et des options. Nous avons essayé de transférer vos anciens paramètres vers cette nouvelle version. Cependant tous les cas ne peuvent pas forcément être traités automatiquement. Merci de vérifier les nouvelles préférences et options résultantes. enigmailCommon.checkPreferences=Vérifier les préférences... preferences.defaultToPgpMime=Nous avons changé l'encodage par défaut dans Enigmail de Inline-PGP à PGP/MIME. Nous vous recommandons de conserver ce réglage.\n\nSi vous souhaitez vraiment utiliser Inline-PGP par défaut, vous pouvez le faire dans les Paramètres de compte, dans Sécurité OpenPGP usingVersion=Enigmail version %S usingAgent=Le programme %S (%S) est utilisé pour chiffrer et déchiffrer agentError=ERREUR: impossible d'accéder au service Enigmail ! accessError=Erreur lors de l'accès au service Enigmail onlyGPG=La génération de clef ne fonctionne qu'avec GnuPG (pas avec PGP) ! keygenComplete=Génération de la clef terminée! L'identifiant <%S> sera utilisé pour la signature. revokeCertRecommended=Il est grandement recommandé de créer un certificat de révocation pour la clef. Ce certificat peut être utilisé pour invalider votre clef dans le cas où votre clef privée soit perdue ou compromise. Désirez-vous créer un certificat de révocation maintenant ? keyMan.button.generateCert=&Générer le certificat genCompleteNoSign=Génération de clef terminée ! genGoing=Une génération de clef est déjà en cours ! passNoMatch=Les phrases secrètes ne concordent pas ; veuillez les saisir à nouveau passCheckBox=Veuillez cocher la case en cas d'absence de phrase secrète pour la clef passUserName=Veuillez indiquer un nom d'utilisateur pour cet identité keygen.missingUserName=Il n'y a pas de nom spécifié pour le compte/l'identité sélectioné. Merci de saisir une valeur dans le champ "Nom" dans les Paramètres de compte. keygen.passCharProblem=Vous avez des caractères spéciaux dans votre phrase secrète. Ceci pourrait, malheureusement, poser un problème pour d'autres applications. Nous vous conseillons de choisir une phrase secrète ne comprenant que ces caractères : \na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Pour des raisons techniques votre phrase secrète ne peut commencer ou se terminer par un espace. changePassFailed=Échec de la modification de la phrase secrète. keyConfirm=Générer les clefs publique et privée de %S ? keyMan.button.generateKey=&Générer la clef keyAbort=Abandonner la génération de clef ? keyMan.button.generateKeyAbort=&Abandonner la génération de clef keyMan.button.generateKeyContinue=&Continuer la génération de clef expiryTooLong=Il est impossible de créer une clef qui expire dans plus de 100 ans. expiryTooLongShorter=Vous ne pouvez pas créer une clé qui expire dans plus de 90 ans. expiryTooShort=Votre clef doit être valide au minimum un jour. dsaSizeLimit=Les clés de signature DSA sont limitée à 3072 bits. La taille de la clé sera réduite à cette limite. keyGenFailed=La génération de la clef a échoué. Veuillez consulter la console Enigmail (Menu Enigmail > Débogage d'Enigmail) pour plus de détails. setKeyExpirationDateFailed=La date d'expiration ne peut pas être changée # Strings in enigmailMessengerOverlay.js securityInfo=Information de sécurité d'Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail : *les pièces jointes à ce message n'ont pas été signées ni chiffrées*\n\n possiblyPgpMime=Message probablement chiffré ou signé au format PGP/MIME; cliquez le bouton Déchiffrer pour vérifier noDecrypted=Aucun message déchiffré à enregistrer!\nUtilisez la commande «enregistrer» du menu fichier noMessage=Aucun message à enregistrer ! useButton=Veuillez cliquer sur le bouton «Déchiffrer» pour déchiffrer le message saveHeader=Enigmail : enregistrer le message déchiffré saveAttachmentHeader=Enigmail : enregistrer la pièce jointe déchiffrée noTempDir=Impossible de trouver un répertoire temporaire\nVeuillez définir la variable d'environnement TEMP attachmentPgpKey=La pièce jointe « %S » que vous tenter d'ouvrir semble être un fichier de clef OpenPGP.\n\nCliquez Oui pour importer la clef contenue ou Non pour visualiser le contenu du fichier dans une fenêtre de navigateur beginPgpPart=********* *DÉBUT CONTENU CHIFFRÉ ou SIGNÉ* ********* endPgpPart=********** *FIN CONTENU CHIFFRÉ ou SIGNÉ* ********** notePartEncrypted=Enigmail : *Des parties du message n'ont pas été signées ou chiffrées* noteCutMessage=Enigmail : *Plusieurs blocs de message trouvés -- déchiffrement/vérification abandonné* decryptOkNoSig=Attention\n\nLe déchiffrement a réussi, mais la signature ne peut pas être vérifiée correctement msgOvl.button.contAnyway=&Continuer quand même signature.verifiedOK=La signature pour la pièce jointe %S a été vérifiée avec succès signature.verifyFailed=La signature pour la pièce jointe %S n'a pas pu être vérifiée attachment.noMatchToSignature=Impossible de faire correspondre la pièce jointe '%S' à un fichier de signature attachment.noMatchFromSignature=Impossible de faire correspondre le fichier de signature '%S' à une pièce jointe fixBrokenExchangeMsg.failed=Échec de réparation du message keysToExport=Choisissez les clefs OpenPGP à insérer keysToUse=Sélectionnez la ou les clefs OpenPGP à utiliser pour %S pubKey=Clef publique de %S\n windowLocked=La fenêtre de rédaction est verrouillée ; envoi annulé sendUnencrypted=Erreur lors de l'initialisation d'Enigmail.\nEnvoyer le message sans chiffrement ? composeSpecifyEmail=Veuillez spécifier votre adresse de messagerie principale, celle-ci sera utilisée pour déterminer la clef de signature des messages sortants.\n Si vous laissez le champ vide, l'adresse de l'expéditeur du message sera utilisée pour déterminer la clef. sendingHiddenRcpt=Ce message a des destinataires cachés (BCC : copie cachée). Si ce message est encrypté, il est possible de cacher ces destinataires mais les utilisateurs de certains logiciels (ex. : PGP Corp.) ne pourront pas décrypter le message. Pour cette raison nous déconseillons l'utilisation de copie cachée pour les messages chiffrés. sendWithHiddenBcc=Cacher les destinataires en copie cachée (BCC) sendWithShownBcc=Encrypter normalement sendingNews=Échec de l'envoi chiffré.\n\nCe message ne peut-être chiffré car il s'adresse à des forums. Veuillez renvoyer le message sans chiffrement. sendToNewsWarning=Attention : vous êtes en train d'envoyer un courriel chiffré à un forum.\n\nCeci est déconseillé car ce n'est utile que si tout les membres du forum peuvent déchiffrer le message, c'est-à-dire que le message doit être chiffré avec les clefs de tous les membres. Envoyez ce message uniquement si vous savez bien ce que vous faites.\n\nContinuer ? hasHTML=Avertissement courrier HTML:\nCe message peut contenir du code HTML, qui pourrait empêcher la signature ou le chiffrement. Pour éviter cela à l'avenir, vous devriez appuyer sur la touche MAJ en cliquant sur les boutons «Nouveau» ou «Répondre» pour envoyer un courrier signé.\nSi vous signez le courrier par défaut, vous devriez décocher l'option «Rédiger les messages en HTML» afin de désactiver le courrier HTML pour ce compte de messagerie. strippingHTML=Ce message contient des balises de formatage HTML qui seront perdues lors de la conversion en texte brut pour la signature ou le chiffrement. Voulez-vous continuer ? msgCompose.button.sendAnyway=&Envoyer le message quand même attachWarning=Les pièces jointes dans ce message ne sont pas stockées localement, elles ne peuvent donc pas être chiffrées. Pour pouvoir chiffrer des pièces jointes, stockez-les d'abord localement puis attachez-les. Désirez-vous poursuivre malgré tout ? quotedPrintableWarn=Vous avez activé l'encodage 'quoted-printable' pour l'envoi de messages. Ceci peut entrainer un déchiffrement ou une vérification incorrect du message.\n Désirez-vous désactiver l'envoi des messages en 'quoted-printable' ? minimalLineWrapping=Votre réglage de formatage des lignes est de %S caractères. Pour un chiffrement et/ou une signature correct, cette valeur doit être au moins 68.\nDésirez-vous changer le formatage des lignes à 68 caractères ? warning=Attention signIconClicked=Vous avez modifié manuellement la signature. De ce fait, pendant la rédaction de ce message, activer ou non la signature ne dépend plus de l'activation ou non du chiffrement. pgpMime_sMime.dlg.text=Vous avez activé PGP/MIME et S/MIME ensemble. Malheureusement il n'est pas possible d'utiliser les deux protocoles en même temps. Merci de choisir si vous voulez utiliser PGP/MIME ou S/MIME. pgpMime_sMime.dlg.pgpMime.button=Utiliser &PGP/MIME pgpMime_sMime.dlg.sMime.button=Utiliser &S/MIME errorKeyUnusable=L'adresse courriel ou 'ID de clef '%S' ne correspond pas à une clef OpenPGP valide et non-expirée.\nMerci de vous assurer que votre clef OpenPGP est valide et que vos paramètres de compte font référence à cette clef. errorOwnKeyUnusable=L'identifiant de clé « %S » configuré pour l'identité courante ne correspond à aucune clé OpenPGP valide.\n\nMerci de vérifier que vous avez bien une clé OpenPGP valide, non expirée et que les préférences de votre compte pointent bien sur cette clé.\nSi votre clé n'est pas expirée, merci de vérifier que vous lui avez bien placé un degré de confiance élevé ou absolu. msgCompose.cannotSaveDraft=Erreur lors de l'enregistrement du brouillon msgCompose.internalEncryptionError=chiffrage promis désactivé msgCompose.internalError=Une erreur interne s'est produite. msgCompose.toolbarTxt.signAndEncrypt=Ce message sera signé et chiffré msgCompose.toolbarTxt.signOnly=Ce message sera signé msgCompose.toolbarTxt.encryptOnly=Ce message sera chiffré msgCompose.toolbarTxt.noEncryption=Ce message ne sera ni signé et ni chiffré msgCompose.toolbarTxt.disabled=Enigmail est désactivé pour l'identité sélectionnée msgCompose.toolbarTxt.smime=S/MIME est activé - potentiellement en conflit avec Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME n'est donc pas utilisé msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME est activé - Enigmail n'est donc pas utilisé msgCompose.toolbarTxt.smimeNoDraftEncryption=- les brouillons ne seront pas chiffrés msgCompose.toolbarTxt.smimeConflict=Enigmail n'est pas utilisé car S/MIME est activé. Merci de désactiver le chiffrement/la signature S/MIME et ensuite activer le chiffrement Enigmail msgCompose.encryptedSubjectStub=Message chiffré msgCompose.detailsButton.label=Détails... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Envoi de courrier abandonné.\n\n # details: keyNotTrusted=Pas assez de confiance pour la clef '%S' keyNotFound=Clef '%S' introuvable keyRevoked=Clef '%S' révoquée keyExpired=Clef '%S' n'est plus valide statPGPMIME=PGP/MIME statSigned=SIGNÉ statEncrypted=CHIFFRÉ statPlain=TEXTE BRUT offlineSave=Enregistrer le message %S pour %S dans le dossier « Messages en attente » ? onlineSend=Envoyer le message %S à destination de %S ? encryptKeysNote=Note : le message est chiffré avec le couple « ID utilisateur/clef » suivant : %S hiddenKey= signFailed=Erreur Enigmail : le chiffrement ou la signature ont échoué. Envoyer un message en clair et non signé ? msgCompose.button.sendUnencrypted=&Envoyé le message non chiffré recipientsSelectionHdr=Sélectionnez les destinataires pour le chiffrement configureNow=La sécurité Enigmail n'a pas encore été configurée pour cette identité. Désirez-vous le faire maintenant ? # encryption/signing status and associated reasons: encryptMessageAuto=Chiffre le message (auto) encryptMessageNorm=Chiffre le message signMessageAuto=Signe le message (auto) signMessageNorm=Signe le message encryptOff=Chiffrage : OFF encryptOnWithReason=Chiffrage : ON (%S) encryptOffWithReason=Chiffrage : OFF (%S) encryptOn=Chiffrage : ON signOn=Signature : ON signOff=Signature : OFF signOnWithReason=Signature : ON (%S) signOffWithReason=Signature : OFF (%S) reasonEnabledByDefault=activé par défaut reasonManuallyForced=forcé manuellement reasonByRecipientRules=forcé par les règles par destinataires reasonByAutoEncryption=forcé par le cryptage automatique reasonByConflict=en raison du conflit dans les règles par destinataires reasonByEncryptionMode=à cause du mode de chiffrement reasonSmimeConflict=car S/MIME est activé à la place # should not be used anymore: encryptYes=Le message sera chiffré encryptNo=Le message ne sera pas chiffré # should not be used anymore: signYes=Le message sera signé signNo=Le message ne sera pas signé # PGP/MIME status: pgpmimeNormal=Protocole : PGP/MIME inlinePGPNormal=Protocole : Inline PGP pgpmimeAuto=Protocole : PGP/MIME (auto) inlinePGPAuto=Protocole : Inline PGP (auto) # should not be used anymore pgpmimeYes=PGP/MIME sera utilisé pgpmimeNo=PGP en ligne (inline PGP) sera utilisé # Attach own key status (tooltip strings): attachOwnKeyNo=Votre propre clef ne sera pas jointe attachOwnKeyYes=Votre propre clef sera jointe attachOwnKeyDisabled=Votre propre clef ne peut pas être jointe. Vous devez sélectionner une clé spécifique\ndans la section OpenPGP des Paramètres de compte pour activer cette fonctionnalité rulesConflict=Conflit de règles par destinataire détecté\n%S\n\nEnvoyer le message avec ces réglages ? msgCompose.button.configure=Con&figurer msgCompose.button.send=&Envoyer le message msgCompose.button.save=Enregi&strer le message # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Clef publique «%S» est nécessaire à la vérification de la signature keyUsed=Clef publique %S utilisée pour vérification de la signature clickDecrypt=; cliquez sur le bouton « Déchiffrer » clickDecryptRetry=; cliquez sur le bouton « Déchiffrer » pour réessayer clickDetailsButton=; pour plus d'informations, cliquez sur le bouton 'Détails' clickImportButton=; pour télécharger la clef, cliquez sur le bouton «Importer la clef» keyTypeUnsupported=; le type de clef n'est pas pris en charge par votre version de GnuPG msgPart=Partie du message %S msgSigned=signée msgSignedUnkownKey=signé avec une clef inconnue msgEncrypted=chiffrée msgSignedAndEnc=signée et chiffrée unverifiedSig=Signature non vérifiée incompleteDecrypt=Déchiffrement incomplet needKey=Erreur - une clef privée est nécessaire au déchiffrement du message failedDecrypt=Erreur - le déchiffrement a échoué badPhrase=Erreur - mauvaise phrase secrète failedDecryptVerify=Erreur - le déchiffrement ou la vérification ont échoué viewInfo=; pour plus de détails, consultez « Infos de sécurité des messages » dans le menu Affichage decryptedMsg=Message déchiffré decryptedMsgWithFormatError=Message déchiffré (restauration d'un format de message corrompu probablement causé par un ancien serveur Exchange ; le résultat peut ne pas être complètement lisible) usedAlgorithms=Algorithmes utilisés : %S et %S # strings in pref-enigmail.js oldGpgVersion14=L'initialisation d'Enigmail a échoué.\n\nVous utilisez actuellement GnuPG version %S qui n'est plus supporté. Enigmail requiert une version de GnuPG supérieure ou égale à la 2.0.7. Merci de bien vouloir mettre à jour votre installation de GnuPG ou Enigmail ne pourra pas fonctionner. locateGpg=Localiser l'agent GnuPG invalidGpgPath=GnuPG ne peut être exécuté depuis le chemin indiqué. Enigmail est donc désactivé jusqu'au changement du chemin de GnuPG ou au redémarrage de l'application. warningsAreReset=Tous les messages d'avertissements ont été réinitialisés. prefs.gpgFound=GnuPG trouvé dans %S prefs.gpgNotFound=Impossible de trouver GnuPG prefs.warnAskNever=Attention : activer cette option impliquera l'envoi de messages non chiffré sans aucun avertissement s'il manque une clef pour un des destinataires -- Enigmail n'avertira pas si un tel cas se produit ! prefs.warnIdleTimeForUnknownAgent=Votre système utilise un outil externe pour la gestion de votre mot de passe (comme gnome-keyring ou seahorse-agent). Malheureusement Enigmail ne peut pas contrôler la durée de mémorisation pour cet outil. Les paramètres de mémorisation d'Enigmail ne seront donc pas utilisés. prefEnigmail.oneKeyserverOnly=Erreur : vous ne pouvez spécifier qu'un seul serveur pour le téléchargement automatique des clefs OpenPGP manquantes. enterAdminPin=Veuillez saisir le code PIN d'administration de votre carte à puce enterCardPin=Veuillez saisir le code PIN de votre carte à puce notInit=Erreur - le service Enigmail n'a pas encore été initialisé badCommand=Erreur - la commande de chiffrement a échoué cmdLine=ligne de commande et sortie : notRequired=Erreur - aucun chiffrement nécessaire notComplete=Erreur - la génération de la clef n'est pas encore terminée invalidEmail=Erreur - adresse(s) de messagerie incorrecte(s) noPassphrase=Erreur - aucune phrase secrète saisie noPGPblock=Erreur - Aucun bloc de données OpenPGP (blindage) correct n'a été trouvé unverifiedReply=La partie indentée du message (réponse) a probablement été modifiée keyInMessageBody=Clef trouvée dans le corps du message. Cliquer "Importer la clef" pour l'importer sigMismatch=Erreur - la signature ne correspond pas cantImport=Erreur lors de l'importation de la clef publique\n\n doImportOne=Importer %1$S (%2$S) ? doImportMultiple=Importer la clef ci-dessous ?\n\n%S previewFailed=Impossible de lire le fichier de la clef publique. # Strings used in errorHandling.jsm sc.wrongCardAvailable=La carte à puce %S détectée dans votre lecteur ne peut pas être utilisée pour faire l'opération sur le message.\nMerci d'insérer votre carte à puce %S et de recommencer l'opération. sc.insertCard=Cette opération nécessite la carte à puce %S.\nMerci d'insérer la carte à puce requise et de recommencer l'opération. sc.removeCard=Cette opération n'a pas besoin de carte à puce dans le lecteur.\nMerci d'enlever la carte et de recommencer l'opération. sc.noCardAvailable=Aucune carte à puce n'a été trouvée dans votre lecteur\nVeuillez insérer votre carte et recommencer l'opération sc.noReaderAvailable=Impossible d'accéder à votre lecteur de cartes à puce\nVeuillez connecter votre lecteur de cartes, insérer votre carte et recommencer l'opération keyError.keySpecNotFound=L'adresse email "%S" n'a pas de clef correspondante dans votre trousseau. keyError.keyIdNotFound=L'identifiant de clé « %S » fourni n'a pas pu être trouvé dans votre trousseau. keyError.resolutionAction=Merci de saisir un identifiant de clé valide dans la section OpenPGP des préférences de votre compte. missingPassphrase=Phrase secrète manquante errorHandling.gpgAgentInvalid=Votre système utilise une version de gpg-agent qui n'est pas compatible avec votre version de GnuPG. errorHandling.gpgAgentError=GnuPG a rapporté une erreur de communication avec gpg-agent (un composant de GnuPG). errorHandling.dirmngrError=GnuPG a rapporté une erreur de communication avec dirmngr (un composant de GnuPG). errorHandling.pinentryError=GnuPG ne peut pas vous demander votre phrase de passe à l'aide de pinentry. errorHandling.readFaq=Ceci est une erreur d'installation ou de configuration qui empêche Enigmail de fonctionner correctement et qui ne peut pas être corrigée automatiquement.\n\nNous vous conseillons vivement de consulter notre page de support sur notre site internet à l'adresse https://enigmail.net/faq. gpgNotFound=Impossible de localiser l'agent GnuPG « %S ».\nAssurez-vous d'avoir saisie le chemin correct pour l'exécutable GnuPG dans les préférences Enigmail gpgNotInPath=Impossible de localiser l'exécutable GnuPG dans le chemin par défaut (PATH).\nAssurez-vous d'avoir saisie le chemin correct pour l'exécutable GnuPG dans les préférences Enigmail enigmailNotAvailable=Enigmail core Service n'est pas disponible gpgAgentNotStarted=Impossible de démarrer le programme gpg-agent qui est requis avec votre version GnuPG %S. prefUntrusted=NON CERTIFIÉE prefRevoked=CLEF REVOQUÉE prefExpiredKey=CLEF EXPIRÉE prefExpired=EXPIRÉE prefGood=Signature correcte de %S prefBad=MAUVAISE signature de %S failCancel=Erreur - Le téléchargement de clef a été annulé par l'utilisateur failNoServer=Erreur - Aucun serveur de clefs n'a été spécifié pour le téléchargement de clefs failNoID=Erreur - Aucun identifiant spécifié pour le téléchargement de la clef failKeyExtract=Erreur - l'extraction de la clef a échoué notFirstBlock=Erreur - Le premier bloc de données OpenPGP ne contient pas de clef publique importKeyConfirm=Importer la/les clef(s) publique(s) incorporée(s) au message ? failKeyImport=Erreur - l'importation de clef a échouée fileWriteFailed=Échec de l'écriture dans le fichier %S importKey=Importer la clef publique %S du serveur de clefs : uploadKey=Envoyer la clef publique %S au serveur de clefs : keyId=Identifiant de clef keyAndSigDate=Id de clef : 0x%S / Signée le : %S keyFpr=Empreinte de la clef : %S noEmailProvided=Vous n'avez pas fourni d'adresse de messagerie ! keyAlreadySigned=La clef est déjà signée, il est impossible de la signer deux fois. gnupg.invalidKey.desc=La clef %S est introuvable ou invalide. La (sous-)clef peut avoir expiré. selKeyExpired=expire %S createdHeader=Créée atLeastOneKey=Aucune clef sélectionnée ! Vous devez sélectionner au moins une clef pour accepter cette boîte de dialogue fewerKeysThanRecipients=Vous avez sélectionné moins de clefs que de destinataires. Êtes-vous sûr que la liste de clefs pour chiffrer est complète ? userSel.button.goBack=Sélectionnez plus de clefs userSel.secretKeySel.title=Sélectionnez une clef privée OpenPGP pour signer vos messages userSel.problemNoKey=Pas de clef valide userSel.problemMultipleKeys=plusieurs clefs # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Envoyer plus tard # Strings used in enigmailAttachmentDialog.js pgpMimeNote=PGP/MIME n'est supporté que par un nombre limité de logiciels de messagerie ! Sous Windows seuls Mozilla/Thunderbird, Sylpheed, Pegasus et Mulberry sont connus pour supporter ce standard; sous Linux, UNIX et MacOS X la plupart des logiciels de messagerie le supportent. Dans le doute, sélectionnez la %S option. first=première second=seconde # Strings used in am-enigprefs.js encryptKeyHeader=Sélectionnez la clef OpenPGP pour le chiffrement identityName=Identité : %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Vous avez activé le chiffrement mais vous n'avez pas sélectionné de clef. Afin de chiffrer les messages destinés à %1$S, vous devez indiquer une ou plusieurs clefs valides dans votre liste de clefs. Désirez-vous désactiver le chiffrement pour %2$S ? noKeyToUse=(aucune - pas de chiffrement) noEmptyRule=La règle ne peut être vide ! Veuillez définir une adresse de messagerie dans le champ Règle. invalidAddress=Les adresses électroniques que vous avez saisies ne sont pas valides. Vous ne devez pas définir le nom des destinataires, uniquement les adresses électroniques. Par ex. :\nInvalide : Un nom \nValide : un.nom@adresse.net noCurlyBrackets=Les accolades {} ont une signification particulière et ne peuvent pas apparaitre dans les adresses électroniques. Si vous désirez modifier le comportement de correspondance pour cette règle, utiliser l'option « Appliquer la règle si le destinataire... ».\nPlus d'information est disponible via le bouton Aide. # Strings used in enigmailRulesEditor.js never=Jamais always=Toujours possible=Possible deleteRule=Effacer la règle sélectionnée ? nextRcpt=(destinataire suivant) negateRule=Non addKeyToRule=Ajouter la clef %S (%S) à la règle par destinataire # Strings used in enigmailSearchKey.js needOnline=La fonction sélectionnée n'est pas disponible en mode hors ligne. Veuillez passer en mode connecté et réessayer. protocolNotSupported=Le protocole « %S:// » que vous avez sélectionné n'est pas supporté pour le téléchargement de clefs OpenPGP. gpgkeysDisabled=Il peut être utile d'activer l'option « extensions.enigmail.useGpgKeysTool ». noKeyserverConn=Impossible de se connecter au serveur %S. keyDownloadFailed=Impossible de télécharger la clef depuis le serveur de clefs. Le message d'état est :\n%S internalError=Une erreur interne est survenue. Les clefs n'ont pas pu être téléchargées ou importées. noKeyFound=Désolé, impossible de trouver une clef qui corresponde aux critères de recherche spécifiés.\nVeuillez noter que les identifiants de clefs doivent être préfixés par « 0x » (ex. : 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Impossible de rechercher ou télécharger la clef depuis le serveur de clefs : impossible d'exécuter gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Échec de la définition du niveau de confiance du propriétaire # Strings in enigmailSignKeyDlg.js signKeyFailed=Échec de la signature de la clef alreadySigned.label=Note : la clef %S est déjà signée avec la clef privée sélectionnée. alreadySignedexportable.label=Note : la clé %S a déjà été signée publiquement à l'aide de la clé privée sélectionnée. Une signature locale ne fait donc pas sens ici. partlySigned.label=Remarque : certains ID utilisateurs %S sont déjà signés avec la clef secrète sélectionnée. noTrustedOwnKeys=Aucune clé éligible n'a été trouvée pour signature ! Vous devez posséder au minimum une clé privée en laquelle vous avez une confiance pleine pour pouvoir signer d'autres clés. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Chargement des clefs, veuillez patienter... keyValid.unknown=inconnue keyValid.invalid=invalide keyValid.disabled=désactivée keyValid.revoked=révoquée keyValid.expired=expirée keyValid.noSubkey=pas de sous-clef valide keyTrust.untrusted=pas confiance keyTrust.marginal=confiance modérée keyTrust.full=pleine confiance keyTrust.ultimate=confiance absolue keyTrust.group=(groupe) keyType.public=publique keyType.publicAndSec=publique/privée keyMan.enableKey=Activer la clef keyMan.disableKey=Désactiver la clef userAtt.photo=Attribut utilisateur (image JPEG) asciiArmorFile=Fichiers de blindage ASCII (*.asc) importKeyFile=Importer un fichier de clef OpenPGP gnupgFile=Fichiers GnuPG saveRevokeCertAs=Créer et enregistrer le certificat de révocation revokeCertOK=Le certificat de révocation a été créé avec succès. Il est utilisable pour invalider votre clef publique, en cas de perte de votre clef privée.\n\nVeuillez le transférer sur un support pouvant être stocké en sécurité comme un CD ou une disquette. Si quelqu'un met la main sur ce certificat, il pourra rendre votre clef inutilisable. revokeCertFailed=Impossible de créer le certificat de révocation. addUidOK=Identifiant utilisateur ajouté avec succès addUidFailed=L'ajout de l'identifiant utilisateur a échoué noKeySelected=Il est nécessaire de sélectionner au moins une clef pour effectuer l'opération exportToFile=Exporter la clef publique dans un fichier exportKeypairToFile=Export des clefs Secret et Publique dans un fichier exportSecretKey=Désirez-vous inclure la clef privée dans le fichier OpenPGP enregistré ? saveKeysOK=Les clefs ont été enregistrées avec succès saveKeysFailed=L'enregistrement des clefs a échoué importKeysFailed=L'import des clefs a échoué enableKeyFailed=L'activation/La désactivation des clefs a échoué specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-priv defaultPubKeyFilename=Clefs-publiques-exportées defaultPubSecKeyFilename=clefs-publique-et-privée-exportées noSecretKeys=Pas de clef secrète trouvée.\n\nDésirez-vous créer votre propre clef maintenant ? sendKeysOk=Clefs envoyées avec succès sendKeysFailed=L'envoi des clefs a échoué receiveKeysOk=clef(s) mise(s) à jour avec succés receiveKeysFailed=Le téléchargement des clefs a échoué importFromClip=Désirez-vous importer des clefs depuis le presse-papiers ? importFromUrl=Télécharger une clé publique depuis cette URL : copyToClipbrdFailed=Impossible de copier les clefs sélectionnées dans le presse-papiers. copyToClipbrdOK=Clefs copiées dans le presse-papiers deleteSecretKey=ATTENTION : Vous êtes sur le point de supprimer une clef privée !\nSi vous supprimer votre clef privée, vous ne serez plus en mesure de déchiffrer les messages chiffrés pour cette clef ni révoquer cette clef.\n\nDésirez-vous réellement supprimer à la fois la clef privée et la clef publique\n« %S » ? deleteMix=ATTENTION : Vous êtes sur le point de supprimer des clefs privées !\nSi vous supprimez votre clef privée, vous ne serez plus en mesure de déchiffrer les messages chiffrés pour cette clef.\n\nDésirez-vous réellement supprimer à la fois les clefs privées et publiques sélectionnées ? deletePubKey=Désirez-vous supprimer la clef publique\n« %S » ? deleteSelectedPubKey=Désirez-vous supprimer les clefs publiques ? deleteKeyFailed=Impossible de supprimer la clef. revokeKeyQuestion=Vous êtes sur le point de révoquer la clef '%S'.\n\nVous ne serez plus en mesure de signer avec cette clef, et une fois distribuée, d'autres ne seront plus en mesure de chiffrer avec cette clef. Vous pouvez toujours utiliser la clef pour déchiffrer les anciens messages.\n\nVoulez-vous continuer? revokeKeyOk=La clef a été révoquée. Si cette clef est disponible sur un serveur de clefs, il est recommandé de l'envoyer à nouveau afin que les autres utilisateurs puissent voir la révocation. revokeKeyFailed=Impossible de révoquer la clef. refreshAllQuestion=Vous n'avez sélectionné aucune clef. Désirez-vous rafraîchir toutes les clefs ? refreshKey.warn=Attention : en fonction du nombre de clefs et de la vitesse de la connexion, le rafraîchissement de toutes les clefs pourrait prendre beaucoup de temps !\n\nContinuer ? downloadContactsKeys.warn=Attention : selon le nombre de contacts et de votre vitesse de connexion, le téléchargement de toutes les clefs pourrait prendre beaucoup de temps ! downloadContactsKeys.importFrom=Importer les contacts à partir du carnet d'adresse '%S' ? keyMan.button.exportSecKey=&Exporter les clefs privées keyMan.button.exportPubKey=Exporter uniquement les clés &publiques keyMan.button.import=&Importer keyMan.button.refreshAll=&Rafraîchir toutes les clefs keyMan.button.revokeKey=&Révoquer la clef keyMan.button.skip=&Passer la clef keylist.noOtherUids=N'a pas d'autre identité keylist.hasOtherUids=Connu aussi sous keylist.noPhotos=Pas de photo disponible keylist.hasPhotos=Photo keyMan.addphoto.filepicker.title=Sélectionner une photo à ajouter keyMan.addphoto.warnLargeFile=Le fichier que vous avez choisi fait plus de 25 ko.\nIl n'est pas recommandé d'ajouter de trop gros fichier car les clefs deviennent très grosses. keyMan.addphoto.noJpegFile=Le fichier sélectionné ne semble pas être au format JPEG. Merci de choisir un autre fichier. keyMan.addphoto.failed=La photo ne peut pas être ajoutée # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Échec de la modification de l'identifiant utilisateur principal changePrimUidOK=Identifiant utilisateur principal modifié avec succès deleteUidFailed=Échec de la suppression de l'identifiant %S deleteUidOK=L'identifiant %S a été supprimé avec succès revokeUidFailed=Échec de la révocation de l'identifiant %S revokeUidOK=L'identifiant %S a été révoqué avec succès. Si cette clef est disponible sur un serveur de clefs, il est recommandé de l'envoyer à nouveau afin que les autres utilisateurs puissent voir la révocation. revokeUidQuestion=Voulez-vous vraiment révoquer l'identifiant %S ? deleteUidQuestion=Voulez-vous vraiment supprimer l'identifiant %S ?\n\nÀ noter : si cette clef a été soumise sur un serveur de clef, supprimer un identifiant utilisateur ne changera rien du tout. Dans ce cas vous devez utiliser « Révoquer un identifiant ». # Strings in enigmailKeyImportInfo.xul importInfoTitle=Succès ! Les clés ont été importées importInfoSuccess=✅ importInfoBits=Bits importInfoCreated=Créées importInfoFpr=Empreinte importInfoDetails=(Détails) importInfoNoKeys=Aucune clé n'a été importée. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=clef publique keyTypePrimary=clé primaire keyTypeSubkey=sous-clef keyTypePair=paire de clefs keyExpiryNever=jamais keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=CCE keyAlgorithm_19=CCE keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Chiffrer keyUsageSign=Signer keyUsageCertify=Certifier keyUsageAuthentication=Authentification keyDoesNotExpire=Cette clé n'expire pas # Strings in enigmailGenCardKey.xul keygen.started=Veuillez patienter pendant la génération de la clef... keygen.completed=Clef générée. Le nouvel identifiant de clef est : 0x%S keygen.keyBackup=La clef est sauvegardée en %S keygen.passRequired=Veuillez spécifier une phrase secrète si vous désirez créer une copie de sauvegarde de votre clef en dehors de votre carte à puce. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Le code PIN saisi ne correspond pas ; veuillez essayer à nouveau cardPin.minLength=Le code PIN doit comporter au moins %S caractères ou chiffres cardPin.processFailed=Échec de la modification du code PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Rafraîchissement des clefs, veuillez patienter... keyserverProgress.uploading=Envoi des clefs, veuillez patienter... keyserverTitle.refreshing=Rafraîchissement des clefs keyserverTitle.uploading=Envoi des clefs # Strings in enigmailSetupWizard passphrase.min8keys=Votre phrase secrète doit comporter au moins 8 caractères ! setupWizard.reallyCancel=Voulez-vous vraiment abandonner l'assistant de configuration Enigmail ? setupWizard.invalidGpg=Le fichier spécifié n'est pas un exécutable GnuPG. Choisissez un autre fichier. setupWizard.specifyFile=Vous devez au moins spécifier un fichier de clef publique pour poursuivre. setupWizard.installFailed=Il semble que l'installation n'ait pas réussi. Merci de réessayer l'installation ou d'installer GnuPG manuellement puis de sélectionner l'exécutable avec le bouton Parcourir. setupWizard.downloadForbidden=Pour votre sécurité nous ne téléchargerons pas GnuPG. Rendez-vous sur http://www.gnupg.org/ pour télécharger GnuPG. setupWizard.downloadImpossible=Nous ne pouvons pas télécharger GnuPG actuellement. Essayez plus tard ou rendez-vous sur http://www.gnupg.org/ pour télécharger GnuPG. setupWizard.hashSumError=L'assistant ne peut pas vérifier l'intégrité du fichier téléchargé. Le fichier peut avoir été corrompu ou modifié. Souhaitez-vous quand même poursuivre l'installation ? setupWizard.importSettingsFile=Spécifier un fichier de sauvegarde depuis lequel importer setupWizard.invalidSettingsFile=Le fichier spécifié n'est pas une sauvegarde Enigmail correcte. setupWizard.gpgConfExists=Le fichier de configuration Enigmail existe déjà. Souhaitez-vous le remplacer par celui de votre ancienne installation ? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Une erreur est intervenue lors du téléchargement de GnuPG. Consultez la console pour plus de détails. installGnuPG.installFailed=Une erreur est intervenue lors de l'installation de GnuPG. Consultez la console pour plus de détails. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Vous devez saisir un nom et une adresse e-mail addUidDlg.nameMinLengthError=Le nom doit faire au minimum 5 caractères addUidDlg.invalidEmailError=Vous devez spécifier une adresse e-mail valide addUidDlg.commentError=Les parenthèse sont interdites dans les commentaires # Strings in enigmailCardDetails.js Carddetails.NoASCII=Les smartcards OpenPGP ne supportent que les caractère ASCII dans le prénom/nom. # network error types errorType.SecurityCertificate=Le certificat de sécurité présenté par le service web n'est pas valide. errorType.SecurityProtocol=Le protocole de sécurité utilisé par le service web est inconnu. errorType.Network=Une erreur réseau est intervenue. # filter stuff filter.folderRequired=Vous devez sélectionner un dossier cible. filter.decryptMove.label=Déchiffrage permanent (Enigmail) filter.decryptCopy.label=Créer une copie décryptée (Enigmail) filter.decryptMove.warnExperimental=Attention - l'action de filtrage "Déchiffrage permanent" pourrait conduire à des messages détruits.\n\nNous vous recommandons fortement d'essayer d'abord le filtre "Créer une copie décryptée", de tester le résultat avec soin, et de ne commencer à utiliser ce filtre qu'une fois que vous êtes satisfait de la résultat. # strings in enigmailConvert.jsm converter.decryptBody.failed=Impossible de déchiffrer le message avec objet\n"%S".\nVoulez-vous recommencer avec une phrase secrète différente ou voulez-vous sauter ce message? converter.decryptAtt.failed=Impossible de déchiffrer l'attache "%1$S"\ndu message avec objet\n"%2$S".\nVoulez-vous recommencez avec une phrase secrète différente ou voulez-vous sauter ce message? saveLogFile.title=Enregistrer le fichier journal # strings in gpg.jsm unknownSigningAlg=Algorithme de signature inconnu (ID : %S) unknownHashAlg=Empreinte cryptographique inconnue (ID : %S) # strings in keyRing.jsm keyring.photo=Photo keyRing.pubKeyRevoked=La clé %1$S (identifiant de clé %2$S) a été révoquée. keyRing.pubKeyExpired=La clé %1$S (identifiant de clé %2$S) a expiré. keyRing.pubKeyNotForSigning=La clé %1$S (identifiant de clé %2$S) ne peut pas être utilisée pour signer. keyRing.pubKeyNotForEncryption=La clé %1$S (identifiant de clé %2$S) ne peut pas être utilisée pour chiffrer. keyRing.keyDisabled=La clé %1$S (identifiant de clé %2$S) a été desactivée ; elle ne peut pas être utilisée. keyRing.keyNotTrusted=Vous n'avez pas placer un niveau de confiance suffisant dans la clé %1$S (identifiant de clé %2$S). Merci de sélectionner un niveau de confiance absolu pour pouvoir l'utiliser dans une signature. keyRing.keyInvalid=La clé %1$S (identifiant de clé %2$S) est invalide (par ex. elle n'a pas été auto-signée). keyRing.signSubKeysRevoked=Toutes les sous-clefs de signature de la clef %1$S (ID de clef %2$S) ont été révoquées. keyRing.signSubKeysExpired=Toutes les sous-clefs de signature de la clef %1$S (ID de clef %2$S) ont expiré. keyRing.signSubKeysUnusable=Toutes les sous-clefs de signature de la clef %1$S (ID de clef %2$S) ont été révoquées, ont expiré ou sont inutilisables. keyRing.encSubKeysRevoked=Toutes les sous-clefs de chiffrement de la clef %1$S (ID de clef %2$S) ont été révoquées. keyRing.encSubKeysExpired=Toutes les sous-clefs de chiffrement de la clef %1$S (ID de clef %2$S) ont expiré. keyRing.noSecretKey=Vous ne semblez pas avoir de clef secrète pour %1$S (ID de clef %2$S) dans votre trousseau ; vous ne pouvez pas utiliser la clef pour signer. keyRing.encSubKeysUnusable=Toutes les sous-clefs de chiffrement de la clef %1$S (ID de clef %2$S) ont été révoquées, ont expiré ou sont inutilisables. #strings in exportSettingsWizard.js cannotWriteToFile=Impossible de sauver la clé '%S'. Merci de sélectionner un autre fichier. dataExportError=Une erreur a eu lieu en exportant vos données. enigmailSettings=ParametresEnigmail defaultBackupFileName=Enigmail-export specifyExportFile=Précisez le nom du fichier d'export homedirParamNotSUpported=Les paramètres additionnels configurant des chemins, comme --homedir et --keyring, ne sont pas supportés lors de l'import/export de vos paramètres. Merci d'utiliser d'autres méthodes comme la création d'une variable d'environnement GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Votre clef %1$S expirera dans moins de %2$S jours.\n\nNous vous recommandons de créer une nouvelle paire de clefs et de configurer les comptes correspondants pour utiliser la nouvelle clef. expiry.keysExpireSoon=Vos clefs suivantes expireront dans moins de %1$S jours : %2$S\n\nNous vous recommandons de créer de nouvelles clefs et de configurer les comptes correspondants pour utiliser les nouvelles clefs. enigmail/lang/fr/help/000077500000000000000000000000001266701624400151335ustar00rootroot00000000000000enigmail/lang/fr/help/compose.html000066400000000000000000000103041266701624400174640ustar00rootroot00000000000000 Aide Enigmail : Rédaction de message

Aide Enigmail

Utiliser Enigmail lors de la rédaction de messages

  • Menu Enigmail dans la fenêtre de composition
    • Signer le message : Activer/Désactiver l'envoi de messages signés. L'utilisateur est prévenu si l'opération de signature échoue.
    • Chiffrer le message : Activer/Désactiver le chiffrement pour tous les destinataires avant l'envoi. L'utilisateur est prévenu si l'opération de chiffrement échoue.

      Si l'option Afficher une sélection si nécessaire est définie dans Préférences -> onglet Sélection clef, une liste de clefs apparaitra s'il y a dans le message des adresses de destination pour lesquelles vous n'avez pas de clef publique.

      Si l'option Ne jamais afficher le dialogue de sélection de clef est définie dans Préférences -> onglet Sélection clef et qu'il y a dans le message des adresses de destination pour lesquelles vous n'avez pas de clef publique, le message sera envoyé non chiffré.

    • Utiliser PGP/MIME pour ce message : Activer/Désactiver l'utilisation de PGP/MIME pour ce message.

      Si vous savez que le destinataire peut lire les messages utilisant le format PGP/MIME, il est conseillé de l'utiliser.

      Cette fonctionnalité est dépendante du réglage dans Préférences -> onglet PGP/MIME qui doit être Utiliser PGP/MIME si possible ou Toujours utiliser PGP/MIME.

    • Options de rédaction par défaut : Sous-menu.
      • Options de signature/chiffrement... : raccourci vers Paramètres des comptes -> Sécurité OpenPGP ;
      • Options d'envoi... : raccourci vers l'onglet Préférences -> Envoi ;
      • Options de sélection de clef... : raccourci vers l'onglet Préférences -> Sélection clef ;
      • Options PGP/MIME... : raccourci vers l'onglet Préférences -> PGP/MIME.
    • Annuler le chiffrement : S'il y a un problème lors de l'envoi effectif du message, par exemple parceque le serveur POP n'accepte pas la requête, Enigmail n'en sera pas informé, et le message sera toujours affiché chiffré dans la fenêtre de rédaction. En choississant ce menu, le chiffrement et la signature seront annulés et le message restauré dans sa forme texte originelle.
      Cette option peut être également utilisée en tant que solution temporaire pour déchiffrer les citations lors de la réponse à des messages chiffrés. Enigmail devrait automatiquement déchiffrer les citations mais si cela échoue pour une raison inconnue, il est possible d'utiliser ce menu pour forcer le déchiffrement.
    • Insérer une clef publique: insérer un bloc armure-ASCII d'une clef publique à la position courante du curseur dans la fenêtre de rédaction. L'adresse électronique de la clef à insérer sera demandée. Les clefs insérées de cette manière seront automatiquement reconnues par Enigmail du coté du destinataire. Après l'insertion de la clef, il est toujours possible de choisir de signer/chiffrer le message si nécessaire. De plus, il ne faut pas insérer plus d'un bloc de clef dans un message ; if faut juste spécifier plusieurs adresses, séparées par virgules ou des espaces, lors de la demande.
    • Oublier la phrase secrète: Effacer de la mémoire la phrase secrète mémorisée. Utile si vous avez plusieurs phrases secrètes.
    • Aide: Afficher les informations d'aide depuis le site Web (cette page).

De l'aide supplémentaire est disponible sur la page Web d'Enigmail

enigmail/lang/fr/help/editRcptRule.html000066400000000000000000000134741266701624400204400ustar00rootroot00000000000000 Aide Enigmail : Modifier les règles OpenPGP

Aide Enigmail

Utiliser l'éditeur de règles d'Enigmail : modifier les règles OpenPGP

Avec l'éditeur de règles, il est possible de définir les paramètres par défaut par destinataire concernant l'activation du chiffrement, de la signature, de PGP/MIME et de choisir quelle(s) clef(s) utiliser. Dans cette boite de dialogue, vous pouvez spécifier les règles pour un destinataire unique ou pour un groupe de destinataires ayant des attributs très proches.

  • Définir les règles OpenPGP pour : contient les adresses électroniques des destinataires (sans leur nom, c.à.d. juste une adresse comme personne@adresse.domaine). Il est possible de spécifier plusieurs adresses séparées par des espaces. L'adresse indiquée ici peut être réduite uniquement à la partie domaine de l'adresse afin de faire correspondre toutes les adresses vers ce domaine, par exemple @adresse.domaine correspondra à nafnaf@adresse.domaine, nifnif@adresse.domaine, noufnouf@adresse.domaine, etc ;
  • Appliquer la règle si le destinataire... : Ceci modifie la correspondance des adresses. Si plusieurs adresses sont saisies, le réglages s'applique à toutes. Les exemples ci-dessous sont basés sur le fait que naf@adresse.domaine à été saisi dans le champ règles OpenPGP ci-dessus :
    • Est exactement : avec ce réglage, la règle s'appliquera uniquement sur des messages à destination de naf@adresse.domaine (correspondance exacte, insensible à la casse),
    • Contient : avec ce réglage, n'importe quelle adresse contenant la chaîne correspond, par exemple nafnaf@adresse.domaine ou aeronaf@adresse.domaine.net,
    • Débute par : avec ce réglage, n'importe quelle adresse commençant par la chaîne correspond, par exemple naf@adresse.domaine.net, naf@adresse.domaine-nom.com,
    • Se termine par : avec ce réglage, n'importe quelle adresse finissant par la chaîne correspond, par exemple nafnaf@adresse.domaine, nafnafnaf@adresse.domaine ;
  • Continuer avec la prochaine règle pour l'adresse correspondante
    Activer cette fonctionnalité vous permettra de définir une règle sans avoir à spécifier un ID de clef dans le champ Utiliser les clefs OpenPGP suivantes : , de ce fait l'adresse électronique est utilisée pour trouver une clef au moment de l'envoi. De plus, les règles suivantes pour la (les) même(s) adresse(s) seront traitées également.
  • Ne pas vérifier les prochaines règles pour l'adresse correspondante
    Activer cette fonctionnalité interrompra le traitement des autres règles pour l'adresse correspondante si la règle en cours correspond ; c.à.d. que le traitement des règles continu avec le destinataire suivant.
  • Utiliser les clefs OpenPGP suivantes :
    Utilisez le bouton Sélectionner les clefs... pour sélectionner la clef du destinataire à utiliser pour le chiffrement. Comme dans l'option ci-dessus, plus aucune règle pour l'adresse correpondante n'est traitée.
  • Par défaut pour signature : activer ou désactiver la signature des messages. Ceci utilise ou outrepasse les réglages effectués dans la fenêtre de rédaction. Les valeurs possibles sont :
    • Jamais: désactiver la signature, même si elle est activée dans la fenêtre de rédaction du messages (prévaut sur les autres valeurs),
    • Oui, si sélectionné lors de la composition du message: laisser le réglage de signature tel qu'il est spécifié dans la fenêtre de rédaction,
    • Toujours: activer la signature, même si elle n'est pas activée dans la fenêtre de rédaction,
Ces paramètres de signature sont appliqués pour toutes les règles qui correspondent. Si l'une des règles désactive la signature, le message ne sera pas signé, même si d'autres règles spécifiaient Toujours ;
  • Chiffrement : activer ou désactiver le chiffrement des messages. Les valeurs autorisées ainsi que leur signification sont les mêmes que pour la signature des messages ;
  • PGP/MIME : activer ou désactiver l'utilisation du codage de message PGP/MIME (RFC 3156). Si PGP/MIME est désactivé, les messages sont codés en utilisant le format « PGP en ligne ». Les valeurs autorisées ainsi que leur signification sont les mêmes que pour la signature des messages.

Les règles sont appliquées dans l'ordre d'affichage de la liste de l'éditeur de règles OpenPGP. Dès lors qu'une règle correspond à un destinataire et contient un identifiant de clef OpenPGP, non seulement l'identifiant de clef spécifié est utilisé, mais le destinataire n'est plus pris en compte dans le traitement des règles suivantes.


De l'aide supplémentaire est disponible sur la page des réglages par destinataire d'Enigmail

enigmail/lang/fr/help/initError.html000066400000000000000000000045361266701624400200060ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/fr/help/messenger.html000066400000000000000000000105251266701624400200140ustar00rootroot00000000000000 Aide Enigmail : Lecture de messages

Aide Enigmail

Utiliser Enigmail lors de la lecture de messages

  • Bouton Déchiffrer dans la fenêtre principale
    Ce bouton peut être utilisé pour plusieurs actions : déchiffrer, vérifier ou importer des clefs publiques. En temps normal, bien que cela soit optionnellement désactivable, le déchiffrement et la vérification seront effectués automatiquement. Toutefois, en cas d'échec, un court message apparaitra dans la barre d'état d'Enigmail. Un clic sur le bouton Déchiffrer permettra d'obtenir un message d'erreur plus détaillé, contenant les messages de sortie de la commande GnuPG.
  • Icônes stylo et clef dans l'affichage de l'en-tête du message
    Les icônes Stylo et Clef dans l'affichage de l'en-tête du message indique si le message affiché a été signé et/ou chiffré et si la signature est correcte, c.à.d. que le message n'a pas été modifié depuis qu'il a été signé. Si le message a été modifié, l'icône Stylo se changera en un Stylo brisé afin d'indiquer que la signature est incorrecte. Un clic droit sur l'icône de stylo ou celle de clef fera apparaitre un menu contenant les options suivantes :
    • Infos de sécurité OpenPGP : permet d'obtenir l'état de sortie de GnuPG pour le message ;
    • Copier les infos de sécurité OpenPGP : copie l'état de sortie de GnuPG dans le presse papier afin de le coller dans un message de réponse par exemple ;
    • Voir l'ID photo OpenGPG : permet de voir l'ID photo de l'expéditeur du message, uniquement s'il y a une photo intégrée dans sa clef publique (cette option ne sera active que si un ID photo existe dans la clef) ;
    • Infos de sécurité S/MIME : permet de visualiser les informations de sécurité S/MIME du message.

    Si vous n'avez pas l'option keyserver-options auto-key-retrieve définie dans votre fichier gpg.conf et que vous lisez un message signé ou chiffré, vous verrez une icône de Stylo comportant un point d'interrogation dans la zone d'affichage des en-têtes, la ligne d'état Enigmail affichera Partie du message signée ; cliquez sur l'icône « stylo » pour plus de détails. De plus le message dans le panneau de message affichera tous les blocs de message OpenPGP et le bloc de signature.

    Il est également possible d'observer ce comportement même si vous l'option keyserver-options auto-key-retrieve est bien définie dans votre fichier gpg.conf mais que la clef OpenPGP n'est pas disponible sur le serveur de clefs par défaut.

    En cliquant sur l'icône Stylo et point d'interrogation apparaitra une fenêtre vous avertissant que la clef n'est pas disponible dans votre trousseau de clefs. Fermer la fenêtre par OK ouvrira une autre fenêtre contenant une liste de serveurs de clefs que vous pouvez sélectionner afin de télécharger la clef publique de l'expéditeur.

    Pour configurer la liste des serveurs de clefs que vous désirez utiliser, allez dans Enigmail -> Préférences -> onglet Général et saisissez les adresses des serveurs de clefs dans la zone Serveur(s) de clefs : séparées par des virgules. Le premier serveur de la liste sera utilisé comme serveur par défaut.

  • Ouverture de pièces jointes chiffrées / importation de clefs OpenPGP attachées
    Les pièces jointes nommées *.pgp, *.asc et *.gpg sont reconnues par Enigmail comme pouvant être traitées spécialement. Cliquer droit sur une de ces pièces jointes active deux entrées de menu spéciales dans le menu contextuel : Déchiffrer et ouvrir et Déchiffrer et enregistrer sous. Utilisez ces deux menus si vous désirez qu'Enigmail déchiffre une pièce jointe avant de l'ouvrir ou de l'enregistrer. Si une pièce jointe est reconnue comme un fichier de clef OpenPGP, il vous est proposé d'importer les clefs qu'il contient dans votre trousseau de clefs.

De l'aide supplémentaire est disponible sur la page web d'Enigmail

enigmail/lang/fr/help/rulesEditor.html000066400000000000000000000067131266701624400203310ustar00rootroot00000000000000 Aide Enigmail : Éditeur de règles

Aide Enigmail

Utilisation de l'éditeur de règles

Dans l'éditeur de règles, vous pouvez spécifier les paramètres par défaut par destinataire, concernant l'activation du chiffrement, de la signature, de PGP/MIME et de choisir quelle(s) clef(s) utiliser. Chaque règle consiste en 5 champs et est représentée sur une seule ligne :

  • Adresse : l'adresse électronique des champs Pour, Cc et Bcc pour la correspondance. Cette correspondance est faite sur des sous-chaînes (plus de détails se trouvent dans la boite de dialogue d'édition des règles) ;
  • Clef(s) à utiliser : une liste d'identifiants de clefs OpenPGP à utiliser pour le destinataire ;
  • Signature : activer ou désactiver la signature des messages. Ceci utilise ou outrepasse les réglages effectués dans la fenêtre de rédaction. Les valeurs possibles sont :
    • Jamais : désactiver la signature, même si elle est activée dans la fenêtre de rédaction du messages (prévaut sur les autres valeurs),
    • Oui, si sélectionné lors de la composition du message : laisser le réglage de signature tel qu'il est spécifié dans la fenêtre de rédaction,
    • Toujours : activer la signature, même si elle n'est pas activée dans la fenêtre de rédaction,
Ces paramètres de signature sont appliqués pour toutes les règles qui correspondent. Si l'une des règles désactive la signature, le message ne sera pas signé, même si d'autres règles spécifiaient Toujours ;
  • Chiffrement: activer ou désactiver le chiffrement des messages. Les valeurs autorisées ainsi que leur signification sont les mêmes que pour la signature des messages ;
  • PGP/MIME: activer ou désactiver l'utilisation du codage de message PGP/MIME (RFC 3156). Si PGP/MIME est désactivé, les messages sont codés en utilisant le format « PGP en ligne ». Les valeurs autorisées ainsi que leur signification sont les mêmes que pour la signature des messages.

Les règles sont appliquées dans l'ordre d'affichage de la liste. Dès lors qu'une règle correspond à un destinataire et contient un identifiant de clef OpenPGP, non seulement l'identifiant de clef spécifié est utilisé, mais le destinataire n'est plus pris en compte dans le traitement des règles suivantes.

Note : l'éditeur de règles n'est pas encore terminé. Il est possible d'écrire des règles plus avancées en modifiant directement le fichier de règles (ces règles ne devront alors plus être modifiées dans l'éditeur de règles). Des informations complémentaires pour modifier directement le fichier sont disponibles sur le site Web d'Enigmail


De l'aide supplémentaire est disponible sur la page Web d'Enigmail

enigmail/lang/fr/help/sendingPrefs.html000066400000000000000000000047771266701624400204670ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/gd/000077500000000000000000000000001266701624400141665ustar00rootroot00000000000000enigmail/lang/gd/am-enigprefs.properties000066400000000000000000000001271266701624400206610ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Tèarainteachd OpenPGP enigmail/lang/gd/enigmail.dtd000066400000000000000000001521001266701624400164470ustar00rootroot00000000000000 às-phortaich an dàta agad on t-seann choimpiutair agad le draoidh às-phortadh nan roghainnean Enigmail ion-phortaich an dàta dhan choimpiutair ùr agad leis an draoidh seo. "> às-phortaich an dàta agad on t-seann choimpiutair agad leis an draoidh seo ion-phortaich an dàta dhan choimpiutair ùr agad le draoidh an rèiteachaidh. "> enigmail/lang/gd/enigmail.properties000066400000000000000000001340631266701624400201000ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Caismeachd Enigmail enigConfirm=Dearbhadh Enigmail enigError=Mearachd Enigmail enigPrompt=Ceist Enigmail dlgYes=&Tha dlgNo=&Chan eil dlgKeepSetting=Cuir an fhreagairt agam an cuimhne is na faighnich a-rithist dlgNoPrompt=Na seall an còmhradh seo a-rithist dlg.button.delete=&Sguab às dlg.button.cancel=&Sguir dheth dlg.button.close=&Dùin dlg.button.continue=Lean air adhar&t dlg.button.skip=Gearr &leum dlg.button.overwrite=&Sgrìobh thairis air dlg.button.view=&Seall dlg.button.retry=Feuch ris a-&rithist dlg.button.ignore=Le&ig seachad repeatPrefix=\n\nNochdaidh a’ chaismeachd seo a-rithist %S repeatSuffixSingular=turas eile. repeatSuffixPlural=tursan/turas eile. noRepeat=\n\nChan nochd a’ chaismeachd seo a-rithist gus an àrdaich thu Enigmail. pgpNotSupported=Tha coltas gu bheil thu a’ chleachdadh Enigmail còmhla ri PGP 6.x\n\nGu mì-fhortanach, cha duilgheadasan aig PGP 6.x a dh’adhbharaicheas nach obraich Enigmail mar bu chòir. Mar sin, cha chuir Enigmail taic ri PGP 6.x tuilleadh; cleachd GnuPG (GPG) ’na àite.\n\nMa tha thu feumach air taic gus atharrachadh gu GnuPG, thoir sùil air earrann na cobharach air an duilleag-dhachaigh aig Enigmail. initErr.howToFixIt=Tha thu feumach air GnuPG mus urrainn dhut Enigmail a chleachdadh. Mur an do stàlaich thu GnuPG fhathast, ’s e an dòigh as fhasa gun cleachd thu putan “Draoidh an rèiteachaidh†gu h-ìosal. initErr.setupWizard.button=Draoidh an &rèiteachaidh passphraseCleared=Tha an abairt-fhaire air fhalamhachadh. cannotClearPassphrase=Tha thu a’ cleachdadh inneal neo-àbhaisteach (mar gnome-keyring) gus abairtean-faire a làimhseachadh. Chan eil Enigmail fhèin comasach air an abairt-fhaire fhalamhachadh air an adhbhar seo. noPhotoAvailable=Chan eil dealbh ri làimh debugLog.title=Loga dì-bhugachaidh Enigmail error.photoPathNotReadable=Cha ghabh slighe an deilbh “%S†leughadh # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Thàinig atharrachadh mòr air mar a thèid roghainnean a làimhseachadh leis an tionndadh ùr seo de dh’Enigmail. Dh’fheuch sinn ris na seann roghainnean a thar-aiseag dhan tionndadh ùr seo. Co-dhiù, chan urrainn dhut dèiligeadh ris a h-uile roghainn gu fèin-obrachail. Thoir sùil air na roghainnean ùra a fhuair thu mar thoradh. enigmailCommon.checkPreferences=Dearbhaich na roghainnean... preferences.defaultToPgpMime=Dh’atharraich sinn còdachadh tùsail nan teachdaireachdan ann an Enigmail o Inline-PGP gu PGP/MIME. Mholamaid gun cum thu seo mar a’ bhun-roghainn.\n\nNam gu toigh leat Inline-PGP a chleachdadh a ghnàth fhathast, ’s urrainn dhut seo a dhèanamh ann an “Roghainnean nan Cunntasan†fo “Tèarainteachd OpenPGPâ€. usingVersion=A’ ruith Enigmail tionndadh %S usingAgent=A’ chleachdadh faidhle so-ghnìomhaichte %1$S %2$S airson crioptachadh is dì-chrioptachadh agentError=MEARACHD: Cha deach leinn seirbheis Enigmail inntrigeadh! accessError=Mearachd le inntrigeadh seirbheis Enigmail onlyGPG=Chan obraich gintinn iuchraichean ach le GnuPG (chan obraich e le PGP)! keygenComplete=Tha na h-iuchraichean air an gintinn! Thèid an dearbh-aithne <%S> a chleachdadh airson soidhneadh. revokeCertRecommended=Mholamaid gun cruthaich thu teisteanas cùl-ghairm dhen iuchair agad. ’S urrainn dhut an teisteanas a chleachdadh gus an iuchair agad a dhèanamh mì-dhligheach, m.e. ma thèid an iuchair phrìobhaideach agad air a call no briseadh a-steach oirre. A bheil thu airson teisteanas cùl-ghairm a chruthachadh an-dràsta? keyMan.button.generateCert=&Gin teisteanas genCompleteNoSign=Tha gintinn nan iuchraichean coileanta! genGoing=Tha iuchraichean ’gan gintinn mar-thà! passNoMatch=Chan eil an dà abairt-fhaire co-ionnann; cuir a-steach a-rithist iad passCheckBox=Cuir cromag sa bhogsa mur eil thu ag iarraidh abairt-fhaire airson na h-iuchrach passUserName=Sònraich ainm cleachdaiche airson na dearbh-aithne seo keygen.missingUserName=Cha deach ainm a shònrachadh airson a’ chunntais/na h-aithne a thagh thu. Cuir a-steach luach san raon “D’ ainm†ann an roghainnean a’ chunntais. keygen.passCharProblem=Chleachd thu caractaran sònraichte san abairt-fhaire agad. Gu mì-fhortanach, dh’fhaoidte gun adhbharaich seo trioblaid airson aplacaidean eile. Mholamaid gun tagh thu abairt-fhaire anns nach eil ach na caractaran seo:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Air adhbharan teicnigeach, chan fhaod an abairt-fhaire agad tòiseachadh no crìochnachadh le beàrn. changePassFailed=Dh’fhàillig le atharrachadh na h-abairt-fhaire. keyConfirm=A bheil thu airson iuchraichean poblach is prìobhaideach a ghintinn airson “%Sâ€? keyMan.button.generateKey=&Gin iuchair keyAbort=A bheil thu airson sgur de ghintinn nan iuchair? keyMan.button.generateKeyAbort=&Sguir de ghintinn nan iuchair keyMan.button.generateKeyContinue=&Lean air adhart le gintinn nan iuchair expiryTooLong=Chan urrainn dhut iuchair a chruthachadh a dh’fhalbhas an ùine air an ceann corr is 100 bliadhna. expiryTooLongShorter=Chan urrainn dhut iuchair a chruthachadh a dh’fhalbhas an ùine air an ceann corr is 90 bliadhna. expiryTooShort=Feumaidh an iuchair agad a bhith dligheach fad latha air a char as lugha. dsaSizeLimit=Tha iuchraichean soidhnidh DSA cuingichte le 3072 biodan. Thèid meud na h-iuchrach a lùghdachadh gus seo a choileanadh. keyGenFailed=Dh’fhàillig le gintinn nan iuchraichean. Thoir sùil air consoil Enigmail (clàr-taice Enigmail > Dì-bhugachadh Enigmail) airson barrachd fiosrachaidh. setKeyExpirationDateFailed=Cha b’ urrainn dhuinn a’ chrìoch ùine atharrachadh # Strings in enigmailMessengerOverlay.js securityInfo=Fiosrachadh tèarainteachd Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Cha deach na ceanglachain aig an teachdaireachd seo a shoidhneadh no a chrioptachadh*\n\n possiblyPgpMime=Teachdaireachd air a crioptachadh no soidhneadh le PGP/MIME ’s dòcha; briog air a’ phutan “Dì-chrioptaich†airson dearbhadh noDecrypted=Chan eil teachdaireachd dhì-chrioptaichte ri sàbhaladh ann!\nCleachd an àithne “Sabhail†on chlàr-taice “Faidhle†noMessage=Chan eil teachdaireachd ri sàbhaladh ann! useButton=Briog air a’ phutan “Dì-chrioptaich†gus an teachdaireachd a dhì-chrioptachadh saveHeader=Enigmail: Sàbhail teachdaireachd air a dì-chrioptachadh saveAttachmentHeader=Enigmail: Sàbhail ceanglachan air a dhì-chrioptachadh noTempDir=Cha deach leinn pasgan sealach a lorg gus sgrìobhadh ann\nFeuch an suidhich thu caochladair na h-àrainneachd TEMP attachmentPgpKey=’S e faidhle iuchrach OpenPGP a tha sa cheanglachan “%S†a tha thu a’ fosgladh a-rèir coltais.\n\nBriog air “Ion-phortaich†gus na h-iuchraichean ’na bhroinn ion-phortachadh no air “Seall†gus susbaint an fhaidhle a shealltainn ann an uinneag brabhsair beginPgpPart=***** *TOISEACH NA PÀIRT CHRIOPTAICHTE no AIR A SOIDHNEADH* ***** endPgpPart=***** *DEIREADH NA PÀIRT CHRIOPTAICHTE no AIR A SOIDHNEADH* ***** notePartEncrypted=Enigmail: *CHA deach a h-uile pàirt dhen teachdaireachd a shoidhneadh no a chrioptachadh* noteCutMessage=Enigmail: *Chaidh iomadh bloca teachdaireachd a lorg -- chaidh sgur dhen dì-chrioptachadh/dearbhadh* decryptOkNoSig=Rabhadh\n\nShoirbhich leis an dì-chrioptachadh ach cha b’ urrainn dhuinn an soidhneadh a dhearbhadh mar bu chòir msgOvl.button.contAnyway=Lean air adhart &co-dhiù signature.verifiedOK=Chaidh an soidhneadh airson a’ cheanglachain %S a dhearbhadh gu soirbheachail signature.verifyFailed=Cha deach leinn an soidhneadh airson a’ cheanglachain %S a dhearbhadh attachment.noMatchToSignature=Cha deach leinn an ceanglachan “%S†a mhaidseadh ri faidhle soidhnidh attachment.noMatchFromSignature=Cha deach leinn am faidhle soidhnidh “%S†a mhaidseadh ri ceanglachan fixBrokenExchangeMsg.failed=Cha deach leinn an teachdaireachd a chàradh keysToExport=Tagh iuchraichean OpenPGP gus an chur ris keysToUse=Tagh iuchair/iuchraichean OpenPGP gus an cleachdadh airson %S pubKey=An iuchair phoblach airson %S\n windowLocked=Tha an uinneag sgrìobhaidh glaiste; chaidh sgur dhen chur sendUnencrypted=Dh’fhàillig le tòiseachadh Enigmail.\nA bheil thu airson an teachdaireachd a chur gun chrioptachadh? composeSpecifyEmail=Sònraich am prìomh sheòladh puist-d agad a chleachdas sinn gus iuchair an t-soidhnidh a thaghadh airson teachdaireachdan a-mach.\nMa dh’fhàgas tu bàn e, thèid an seòladh O aig an teachdaireachd a chleachdadh gus iuchair an t-soidhnidh a thaghadh. sendingHiddenRcpt=Tha faightearan BCC (lethbhreac dall) aig an teachdaireachd seo. Ma thèid an teachdaireachd seo a chrioptachadh, gabhaidh na faightearan BCC fhalach ach chan urrainn do chuid a bhathar-bhog (can PGP Corp.) a chleachdas faightear ma dh’fhaoidte an teachdaireachd a dhì-chrioptachadh. Air sàilleibh seo, mholamaid gun seachnaich thu puist-d BCC le crioptachadh. sendWithHiddenBcc=Falaich na faightearan BCC sendWithShownBcc=Crioptaich gu h-àbhaisteach sendingNews=Chaidh sgur dhen chur crioptaichte.\n\nChan urrainn dhuinn an teachdaireachd seo a chrioptachadh on a tha faightearan buidhinn-naidheachd innte. Feuch an cuir thu an teachdaireachd a-rithist gun chrioptachadh. sendToNewsWarning=Rabhadh: tha thu gu bhith cur post-d crioptaichte gu buidheann-naidheachd.\n\nCha mholamaid seo air sgàth ’s nach eil e gu ciall sam bith ach mas urrainn dhan a h-uile ball dhen bhuidheann-naidheachd an teachdaireachd a dhì-chrioptachadh, ’s e seo gum feum thu an teachdaireachd a chrioptachadh le iuchraichean gach buill. Na cuir an teachdaireachd seo ach ma tha thu làn eòlach air na tha thu a’ dèanamh.\n\nA bheil thu airson leantainn air adhart? hasHTML=Rabhadh post HTML:\nTha HTML am broinn na teachdaireachd seo ma dh’fhaoidte agus b’ urrainn seo adhbharachadh nach dèid leis an t-soidhneadh/a’ chrioptachadh. Gus seo a sheachnadh san àm ri teachd, cum an iuchair SHIFT sìos fhad ’s a bhriogas tu air a’ phutan Sgrìobh/Freagair gus post air a shoidhneadh a chur.\nMa nì thu soidhneadh a’ phuist a ghnàth, bu chòir dhut a’ chromag a thoirt far bogsa na roghainn “Sgrìobh teachdaireachdan ann an cruth HTML†gus post HTML a chur à comas gu buan airson a’ chunntais puist seo. strippingHTML=Tha fiosrachadh fòrmatadh HTML am broinn na teachdaireachd seo a thèid air chall nuair a thèid iompachadh gu teacsa lom airson an t-soidhnidh/a’ chrioptachaidh. A bheil thu airson leantainn air adhart? msgCompose.button.sendAnyway=&Cuir an teachdaireachd co-dhiù attachWarning=Chan eil na ceanglachain aig an teachdaireachd seo ionadail, mar sin cha ghabh an crioptachadh. Gus na ceanglachain a chrioptachadh, glèidh iad ’nam faidhlichean ionadail an toiseach agus cuir na faidhlichean ris an uairsin. A bheil thu airson an teachdaireachd a chur co-dhiù? quotedPrintableWarn=Chuir thu còdachadh “quoted-printable†an comas airson cur nan teachdaireachdan. Faodaidh seo dì-chrioptachadh/dearbhadh cearr adhbharachadh airson na teachdaireachd agad.\nA bheil thu airson cur theachdaireachdan “quoted-printable†a chur à comas a-nis? minimalLineWrapping=Shuidhich thu pasgadh nan loidhnichean air %S caractar. Airson crioptachadh/soidhneadh mar bu chòir, feumaidh an luach seo a bhith 68 no nas motha.\nA bheil thu airson pasgadh nan loidhnichean atharrachadh gu 68 caractar a-nis? warning=Rabhadh signIconClicked=Dh’atharraich thu an soidhneadh a làimh. Mar sin, fad ’s a tha thu a’ sgrìobhadh an teachdaireachd seo, chan eil cur an/à comas an t-soidhnidh an eisimeil air cur an/à comas a’ chrioptachaidh. pgpMime_sMime.dlg.text=Chuir thu an dà chuid PGP/MIME agus S/MIME an comas. Gu mì-fhortanach, cha ghabh taic a chur ris an dà phròtacal aig an aon àm. Tagh a bheil thu airson PGP/MIME no S/MIME a chleachdadh. pgpMime_sMime.dlg.pgpMime.button=Cleachd &PGP/MIME pgpMime_sMime.dlg.sMime.button=Cleachd &S/MIME errorKeyUnusable=Cha ghabh an seòladh puist-d no ID na h-iuchrach “%S†a mhaidseadh ri iuchair OpenPGP dhligheach ’s nach do dh’fhalbh an ùine oirre.\nDèan cinnteach gu bheil iuchair OpenPGP dhligheach agad agus gun tomh roghainnean a’ chunntais agad ris an iuchair sin. errorOwnKeyUnusable=Cha lìbhrig ID na h-iuchrach “%S†a chaidh a rèiteachadh airson na h-aithne làithrich iuchair OpenPGP a ghabhas cleachdadh.\n\nDèan cinnteach gu bheil iuchair OpenPGP dhligheach agad nach do dh’fhalbh an ùine oirre agus gun tomh roghainnean a’ chunntais agad ris an iuchair sin.\nMur an do dh’fhalbh an ùine air an iuchair agad, dearbhaich gun do shuidhich thu earbsa an t-seilbheadair air “earbsach†no “cho earbsach ’s a ghabhasâ€. msgCompose.cannotSaveDraft=Mearachd le sàbhaladh an dreachd msgCompose.internalEncryptionError=Mearachd taobh a-staigh: Chaidh an crioptachadh geallta a chur à comas msgCompose.internalError=Thachair mearachd taobh a-staigh. msgCompose.toolbarTxt.signAndEncrypt=Thèid an teachdaireachd seo a shoidhneadh agus a chrioptachadh msgCompose.toolbarTxt.signOnly=Thèid an teachdaireachd seo a shoidhneadh msgCompose.toolbarTxt.encryptOnly=Thèid an teachdaireachd seo a chrioptachadh msgCompose.toolbarTxt.noEncryption=Cha dèid an teachdaireachd seo a shoidhneadh no a chrioptachadh msgCompose.toolbarTxt.disabled=Chaidh Enigmail a chur à comas airson na dearbh-aithne a thagh thu msgCompose.toolbarTxt.smime=Tha S/MIME an comas - còmhstri le Enigmail ’s dòcha msgCompose.toolbarTxt.smimeOff=- chan eil S/MIME ’ga chleachdadh ri linn seo msgCompose.toolbarTxt.smimeSignOrEncrypt=Tha S/MIME an comas - chan eil Enigmail ’ga chleachdadh ri linn seo msgCompose.toolbarTxt.smimeNoDraftEncryption=- cha dèid dreachdan a chrioptachadh msgCompose.toolbarTxt.smimeConflict=Chan eil Enigmail ’ga chleachdadh air sgàth ’s gu bheil S/MIME an comas an-dràsta. Cuir soidhneadh agus/no crioptachadh S/MIME dheth agus an uairsin cuir an comas crioptachadh Enigmail msgCompose.encryptedSubjectStub=Teachdaireachd le crioptachadh msgCompose.detailsButton.label=Mion-fhiosrachadh ... msgCompose.detailsButton.accessKey=f # note: should end with double newline: sendAborted=Chaidh sgur dhen chur.\n\n # details: keyNotTrusted=Chan eil earbsa gu leòr san iuchair “%S†keyNotFound=Cha deach an iuchair “%S†a lorg keyRevoked=Chaidh an iuchair “%S†a chùl-ghairm keyExpired=Dh’fhalbh an ùine air an iuchair “%S†statPGPMIME=PGP/MIME statSigned=AIR A SHOIDHNEADH statEncrypted=CRIOPTAICHTE statPlain=GUN SOIDHNEADH no CRIOPTACHADH offlineSave=A bheil thu airson an teachdaireachd %1$S a shàbhaladh gu %2$S ann am pasgan nan teachdaireachdan nach deach a chur? onlineSend=A bheil thu airson an teachdaireachd %1$S a chur gu %2$S? encryptKeysNote=An aire: Tha an teachdaireachd ’ga crioptachadh le IDan/iuchraichean a’ chleachdaiche seo: %S hiddenKey= signFailed=Mearachd le Enigmail; dh’fhàillig leis a’ chrioptachadh/ an t-soidhnidh; an cuir sinn an teachdaireachd gun chrioptachadh? msgCompose.button.sendUnencrypted=&Cuir an teachdaireachd gun chrioptachadh recipientsSelectionHdr=Tagh na faightearan airson a’ chrioptachaidh configureNow=Cha do rèitich thu tèarainteachd Enigmail airson na dearbh-aithne a thagh thu fhathast. A bheil thu airson seo a dhèanamh a-nis? # encryption/signing status and associated reasons: encryptMessageAuto=Crioptaich an teachdaireachd (fèin-obrachail) encryptMessageNorm=Crioptaich an teachdaireachd signMessageAuto=Soidhnich an teachdaireachd (fèin-obrachail) signMessageNorm=Soidhnich an teachdaireachd encryptOff=Crioptachadh: DHETH encryptOnWithReason=Crioptachadh: AIR (%S) encryptOffWithReason=Crioptachadh: DHETH (%S) encryptOn=Crioptachadh: AIR signOn=Soidhneadh: AIR signOff=Soidhneadh: DHETH signOnWithReason=Soidhneadh: AIR (%S) signOffWithReason=Soidhneadh: DHETH (%S) reasonEnabledByDefault=an comas a ghnàth reasonManuallyForced=air a sparradh a làimh reasonByRecipientRules=air a sparradh le riaghailtean an fhaighteir reasonByAutoEncryption=air a sparradh leis a’ chrioptachadh fhèin-obrachail reasonByConflict=ri linn còmhstri ann an riaghailtean an fhaighteir reasonByEncryptionMode=ri linn modh a’ chrioptachaidh reasonSmimeConflict=air sgàth ’s gu bheil S/MIME an comas ’na àite # should not be used anymore: encryptYes=Thèid an teachdaireachd a chrioptachadh encryptNo=Cha dèid an teachdaireachd a chrioptachadh # should not be used anymore: signYes=Thèid an teachdaireachd a shoidhneadh signNo=Cha dèid an teachdaireachd a shoidhneadh # PGP/MIME status: pgpmimeNormal=Pròtacal: PGP/MIME inlinePGPNormal=Pròtacal: PGP ion-loidhne pgpmimeAuto=Pròtacal: PGP/MIME (fèin-obrachail) inlinePGPAuto=Pròtacal: PGP ion-loidhne (fèin-obrachail) # should not be used anymore pgpmimeYes=Thèid PGP/MIME a chleachdadh pgpmimeNo=Thèid PGP ion-loidhne a chleachdadh # Attach own key status (tooltip strings): attachOwnKeyNo=Cha dèid an iuchair agad fhèin a chur ris attachOwnKeyYes=Thèid an iuchair agad fhèin a chur ris attachOwnKeyDisabled=Chan urrainn dhuinn an iuchair agad fhèin a chur ris. Feumaidh tu iuchair shònraichte a thaghadh\nann an earrann OpenPGP aig “Roghainnean nan cunntasan†gus am feart seo a chur an comas. rulesConflict=Mhothaich sinn do chòmhstri ann an riaghailtean a-rèir faighteir\n%S\n\nA bheil thu airson an teachdaireachd a chur leis na roghainnean seo? msgCompose.button.configure=&Rèitich msgCompose.button.send=&Cuir an teachdaireachd msgCompose.button.save=&Sàbhail an teachdaireachd # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Tha feum air an iuchair phoblach %S gus an soidhneadh a dhearbhadh keyUsed=An iuchair phoblach %S a chaidh a chleachdadh gus an soidhneadh a dhearbhadh clickDecrypt=; briog air a’ phutan “Dì-chrioptaich†clickDecryptRetry=; briog air a’ phutan “Dì-chrioptaich†gus feuchainn ris a-rithist clickDetailsButton=; briog air a’ phutan “Mion-fhiosrachadh†airson barrachd fiosrachaidh clickImportButton=; briog air a’ phutan “Ion-phortaich iuchair†gus an iuchair a luchdadh a-nuas keyTypeUnsupported=; cha chuir an tionndadh agad de GhnuPG taic ris an seòrsa iuchrach seo msgPart=Pàirt dhen teachdaireachd %S msgSigned=air a soidhneadh msgSignedUnkownKey=air a shoidhneadh le iuchair nach aithne dhuinn msgEncrypted=air a crioptachadh msgSignedAndEnc=air a soidhneadh is crioptachadh unverifiedSig=Soidhneadh gun dearbhadh incompleteDecrypt=Chan eil an dì-chrioptachadh coileanta needKey=Mearachd - cha deach iuchair phrìobhaideachd a fhreagras a lorg gus an teachdaireachd a dhì-chrioptachadh failedDecrypt=Mearachd - dh’fhàillig leis an dì-chrioptachadh badPhrase=Mearachd - droch abairt-fhaire failedDecryptVerify=Mearachd - dh’fhàillig leis an dì-chrioptachadh/soidhneadh viewInfo=; Sealladh > Tèarainteachd na teachdaireachd airson barrachd fiosrachaidh decryptedMsg=Teachdaireachd air a dì-chrioptachadh decryptedMsgWithFormatError=Teachdaireachd air a dì-chrioptachadh (chaidh fòrmat puist-d PGP briste aiseag a dh’adhbharaich seann fhrithealaiche Exchange ma dh’fhaoidte, mar sin chan eil sinn an dùil gum bi an toradh foirfe ri leughadh) usedAlgorithms=Algairimean ’gan cleachdadh: %S agus %S # strings in pref-enigmail.js oldGpgVersion14=Dh’fhàillig le tòiseachadh Enigmail.\n\nTha thu a’ cleachdadh tionndadh %S dhe GnuPG ’s cha chuir sinn taic ris tuilleadh. Tha Enigmail feumach air GnuPG tionndadh 2.0.7 no nas ùire. Àrdaich an stàladh dhe GnuPG agad air neo chan obraich Enigmail. locateGpg=Lorg prògram GnuPG invalidGpgPath=Cha ghabh GnuPG a ruith leis an t-slighe a chaidh a shònrachadh. Chaidh Enigmail a chur à comas gus an atharraich thu an t-slighe gu GnuPG a-rithist no gus an tòisich thu an aplacaid às ùr. warningsAreReset=Chaidh gach rabhadh ath-shuidheachadh. prefs.gpgFound=Chaidh GnuPG a lorg an-seo: %S prefs.gpgNotFound=Cha deach GnuPG a lorg prefs.warnAskNever=Rabhadh: ma chuireas tu an roghainn seo an comas, bidh teachdaireachdan gun chrioptachadh agad gun fhiosrachadh a bharrachd sam bith mur eil iuchair airson aon dhe na faightearan ann -- chan innis Enigmail dhut nuair a thachras seo! prefs.warnIdleTimeForUnknownAgent=Chan urrainn dhuinn ceangal ri gpg-agent. ’S dòcha gun cleachd an siostam agad inneal sònraichte gus abairtean-faire a làimhseachadh (m.e. gnome-keyring, seahorse-agent, KDE wallet manager, ...). Gu mì-fhortanach, chan eil smachd aig Enigmail air nuair a dh’fhalbhas an ùine air abairt-fhaire airson an inneal a tha thu a’ chleachdadh. Mar sin, thèid roghainnean falbh na h-ùine aig Enigmail a leigeil seachad. prefEnigmail.oneKeyserverOnly=Mearachd - chan urrainn dhut barrachd air aon fhrithealaiche iuchraichean a shònrachadh airson luchdadh a-nuas fèin-obrachail nan iuchraichean OpenPGP a tha a dhìth. enterAdminPin=Cuir a-steach PIN an RIANAIRE airson a’ SmartCard agad enterCardPin=Cuir a-steach PIN a’ SmartCard agad a-rithist notInit=Mearachd - chan eil seirbheis Enigmail air a tòiseachadh fhathast badCommand=Mearachd - dh’fhàillig le àithne dì-chrioptachaidh cmdLine=loidhne-àithne is às-chur: notRequired=Mearachd - chan eil crioptachadh riatanach notComplete=Mearachd - cha deach gintinn na h-iuchrach a choileanadh fhathast invalidEmail=Mearachd - seòladh no seòlaidhean puist-d mì-dhligheach noPassphrase=Mearachd - cha deach abairt-fhaire a sholar noPGPblock=Mearachd - cha deach bloca dàta OpenPGP armaichte dligheach a lorg unverifiedReply=Eagachadh ann am pàirt dhen teachdaireachd (freagairt), tha sinn an dùil gun deach atharrachadh keyInMessageBody=Lorg sinn iuchaidh ann am bodhaig na teachdaireachd. Briog air “Ion-phortaich iuchair†gus an iuchair ion-phortadh sigMismatch=Mearachd - soidhneadh neo-ionnann cantImport=Mearachd le ion-phortadh na h-iuchrach poblaich\n\n doImportOne=A bheil thu airson %1$S (%2$S) ion-phortadh? doImportMultiple=A bheil thu airson na h-iuchraichean seo ion-phortadh?\n\n%S previewFailed=Chan urrainn dhuinn faidhle nan iuchraichean poblach a leughadh. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Cha ghabh an SmartCard %1$S a lorg sinn san inneal-leughaidh agad cleachdadh gus an teachdaireachd seo a phròiseasadh.\nCuir a-steach an SmartCard %S agad is feuch ris a-rithist. sc.insertCard=Tha an t-obrachadh feumach air a’ SmartCard %S agad.\nCuir a-steach an SmartCard a tha a dhìth is feuch ris a-rithist. sc.removeCard=Tha an t-obrachadh ag iarraidh nach eil SmartCard san inneal-leughaidh agad.\nThoir air falbh an SmartCard agad is feuch ris a-rithist. sc.noCardAvailable=Cha deach SmartCard a lorg san inneal-leughaidh agad.\nCuir a-steach an SmartCard a tha a dhìth is feuch ris a-rithist. sc.noReaderAvailable=Cha b’ urrainn dhuinn an t-inneal-leughaidh SmartCard agad inntrigeadh\nCeangail an t-inneal-leughaidh SmartCard agad, cuir a-steach a’ chairt agad agus feuch ris a-rithist. keyError.keySpecNotFound=Cha do lorg sinn iuchair air an dul-iuchrach agad a fhreagras ris an t-seòladh puist-d “%Sâ€. keyError.keyIdNotFound=Cha do lorg sinn ID na h-iuchrach “%S†air an dul-iuchrach agad. keyError.resolutionAction=Tagh iuchair dhligheach ann an earrann OpenPGP dhe “Roghainnean nan cunntasan†agad. missingPassphrase=Tha abairt-fhaire a dhìth errorHandling.gpgAgentInvalid=Tha an siostam agad a’ ruith tionndadh dhe gpg-agent nach eil iomchaidh airson an tionndaidh agad dhe GnuPG. errorHandling.gpgAgentError=Dh’aithris GnuPG mearachd sa chonaltradh le gpg-agent (seo co-phàirt dhe GnuPG). errorHandling.dirmngrError=Dh’aithris GnuPG mearachd sa chonaltradh le dirmngr (seo co-phàirt dhe GnuPG). errorHandling.pinentryError=Chan urrainn dha GnuPG an abairt-fhaire agad iarraidh le pinentry. errorHandling.readFaq=Seo mearachd le suidheachadh no rèiteachadh an t-siostaim nach leig le Enigmail obair mar bu chòir ’s a ghabh a càradh gu fèin-obrachail.\n\nMholamaid gun doir thu sùil air an làrach-lìn taice againn air https://enigmail.net/faq. gpgNotFound=Cha deach am prògram GnuPG “%S†a lorg.\nDèan cinnteach gun do shònraich thu slighe an fhaidhle sho-ghnìomhaichte GnuPG mar bu chòir ann an roghainnean Enigmail. gpgNotInPath=Cha deach prògram GnuPG a lorg am broinn PATH.\nDèan cinnteach gun do shònraich thu slighe an fhaidhle sho-ghnìomhaichte GnuPG mar bu chòir ann an roghainnean Enigmail. enigmailNotAvailable=Chan eil bun-seirbheis Enigmail ri fhaighinn gpgAgentNotStarted=Cha b’ urrainn dhuinn am prògram gpg-agent a thòiseachadh air a bheil feum airson GnuPG tionndadh %S. prefUntrusted=GUN EARBSA prefRevoked=IUCHAIR AIR A CÙL-GHAIRM prefExpiredKey=IUCHAIR A DH’FHALBH AN ÙINE OIRRE prefExpired=DH’FHALBH AN ÙINE AIR prefGood=Deagh shoidhneadh o %S prefBad=DROCH shoidhneadh o %S failCancel=Mearachd - chaidh sgur de dh’fhaighinn na h-iuchrach leis a’ chleachdaiche failNoServer=Mearachd - Cha deach frithealaiche iuchraichean a shònrachadh gus iuchair fhaighinn uaithe failNoID=Mearachd - Cha deach ID na h-iuchrach a shònrachadh gus iuchair fhaighinn air a shon failKeyExtract=Mearachd - Dh’fhàillig le àithne às-tharraing na h-iuchrach notFirstBlock=Mearachd - Chan eil a’ chiad bhloca OpenPGP ’na bhloca iuchrach poblaich importKeyConfirm=A bheil thu airson an iuchair/na h-iuchraichean a tha leabaichte san teachdaireachd ion-phortadh? failKeyImport=Mearachd - Dh’fhàillig le ion-phortachadh iuchrach fileWriteFailed=Cha deach leinn sgrìobhadh san fhaidhle %S importKey=Ion-phortaich an iuchair phoblach %S on fhrithealaiche iuchraichean: uploadKey=Cuir an iuchair phoblach %S dhan fhrithealaiche iuchraichean: keyId=ID na h-iuchrach keyAndSigDate=ID na h-iuchrach: 0x%1$S / Air a soidhneadh: %2$S keyFpr=Lorg-mheòir na h-iuchrach: %S noEmailProvided=Tha dug thu seòladh puist-d seachad! keyAlreadySigned=Chaidh an iuchair a shoidhneadh mar-thà, chan urrainn dhut a soidhneadh dà thuras. gnupg.invalidKey.desc=Cha deach an iuchair %S a lorg air neo chan eil i dligheach. Dh’fhaoidte gun do dh’fhalbh an ùine air an (fho-)iuchair. selKeyExpired=dh’fhalbh an ùine air %S createdHeader=Air a chruthachadh atLeastOneKey=Cha deach iuchair a thaghadh! Feumaidh tu iuchair no dhà a thaghadh airson gabhail ris a’ chòmhradh seo fewerKeysThanRecipients=Thagh thu uiread nas lugha de dh’iuchraichean na tha faightearan ris. A bheil thu cinnteach gu bheil liosta nan iuchraichean crioptachaidh coileanta? userSel.button.goBack=Tagh barrachd iuchraichean userSel.secretKeySel.title=Tagh iuchair OpenPGP prìobhaideach gus na teachdaireachdan agad a shoidhneadh userSel.problemNoKey=Gun iuchair dhligheach userSel.problemMultipleKeys=Iomadh iuchair # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Cuir uaireigin eile # Strings used in enigmailAttachmentDialog.js pgpMimeNote=AN AIRE: Cha chuir ach corra cliant puist-d taic ri PGP/MIME! Air Windows, chan eil sinn eòlach ach air Mozilla/Thunderbird, Sylpheed, Pegasus agus Mulberry a chuireas taic ris an stannard seo; air Linux/UNIX agus Mac OS X, cuiridh a’ mhòrchuid a chliantan puist mòr-chòrdte taic ris. Ma tha thu mì-chinnteach, tagh %S roghainn. first=a’ chiad second=an dàrna # Strings used in am-enigprefs.js encryptKeyHeader=Tagh iuchair OpenPGP airson a’ chrioptachaidh identityName=Dearbh-aithne: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Ghnìomhaich thu an crioptachadh ach cha do thagh thu iuchair. Feumaidh tu iuchair dhligheach no dhà a shònrachadh o liosta nan iuchraichean gus puist-d a chuireas tu gu %1$S a chrioptachadh. A bheil thu airson an crioptachadh a chur à comas airson %2$S? noKeyToUse=(gun iuchair - gun chrioptachadh) noEmptyRule=Chan fhaod an riaghailt a bhith falamh! Suidhich seòladh puist-d ann an raon na riaghailt. invalidAddress=Chan eil an seòladh/na seòlaidhean puist-d a chuir thu a-steach dligheach. Cha bu chòir dhut ainmean nam faightearan a shònrachadh, na sònraich ach na seòlaidhean puist-d. M.e.:\nMì-dhligheach: Ainm \nDligheach: ainm@seòladh.net noCurlyBrackets=Tha ciall sònraichte air na camagan dualach {} agus cha bu chòir dhut an cleachdadh ann an seòladh puist-d. Ma tha thu airson giùlan na riaghailt seo a fhreagras atharrachadh, cleachd an roghainn “Cuir an riaghailt an sàs ma ... an fhaightearâ€.\nGheibh thu barrachd fiosrachadh le putan na cobharach. # Strings used in enigmailRulesEditor.js never=Chan ann idir always=An-còmhnaidh possible=Comasach deleteRule=A bheil thu airson an riaghailt a thagh thu a sguabadh às? nextRcpt=(An ath-fhaightear) negateRule=Gun a bhith addKeyToRule=Cuir an iuchair %1$S (%2$S) ris an riaghailt a-rèir faighteir # Strings used in enigmailSearchKey.js needOnline=Chan eil am feart a thagh thu ri fhaighinn sa mhodh far loidhne. Rach air loidhne is feuch ris a-rithist. protocolNotSupported=Cha chuir sinn taic ris a’ phròtacal “%S://†a thagh thu gus iuchraichean OpenPGP a luchdadh a-nuas. gpgkeysDisabled=’S dòcha gum b’ fheairrde thu an roghainn “extensions.enigmail.useGpgKeysTool†a chur an comas. noKeyserverConn=Cha b’ urrainn dhuinn ceangal ri frithealaiche iuchraichean air %S. keyDownloadFailed=Cha deach leinn an iuchair a luchdadh a-nuas on fhrithealaiche iuchraichean. Seo teachdaireachd na staide:\n%S internalError=Thachair mearachd taobh a-staigh. Cha b’ urrainn dhuinn na h-iuchraichean a luchdadh a-nuas no an ion-phortadh. noKeyFound=Tha sinn duilich ach cha deach leinn iuchair a lorg a fhreagras ris na faclan-luirg.\nThoir an aire nach bu chòir dhut “0x†a chur an toiseach ID iuchrach (m.e. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Cha deach leinn an iuchair a lorg no a luchdadh a-nuas on fhrithealaiche iuchraichean: cha b’ urrainn dhuinn gpgkeys_%S a ghnìomhachadh. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Dh’fhàillig le suidheachadh earbsa an t-seilbheadair # Strings in enigmailSignKeyDlg.js signKeyFailed=Dh’fhàillig le soidhneadh na h-iuchrach alreadySigned.label=An aire: chaidh an iuchair %S a shoidhneadh leis an iuchair phrìobhaideach a thagh thu mar-thà. alreadySignedexportable.label=An aire: chaidh an iuchair %S a shoidhneadh mar thè a ghabhas às-phortadh leis an iuchair phrìobhaideach a thagh thu. Chan eil soidhneadh ionadail gu ciall sam bith. partlySigned.label=An aire: chaidh cuid dhe na IDan cleachdaiche aig an iuchair %S a shoidhneadh leis an iuchair phrìobhaideach a thagh thu mar-thà. noTrustedOwnKeys=Cha deach iuchair iomchaidh a lorg gus a shoidhneadh! Feumaidh iuchair phrìobhaideach e làn-earbsa innte a bhith agad mus urrainn dhut iuchraichean a shoidhneadh. # Strings in enigmailKeyManager.js keyMan.loadingKeys=A’ luchdadh nan iuchraichean, fuirich ort... keyValid.unknown=chan eil fios keyValid.invalid=mì-dhligheach keyValid.disabled=à comas keyValid.revoked=air chùl-ghairm keyValid.expired=dh’fhalbh an ùine air keyValid.noSubkey=chan eil fo-iuchair dligheach ann keyTrust.untrusted=gun earbsa ann keyTrust.marginal=cugallach keyTrust.full=earbsach keyTrust.ultimate=cho earbsach ’s a ghabhas keyTrust.group=(buidheann) keyType.public=poblach keyType.publicAndSec=poblach/prìobhaideach keyMan.enableKey=Cuir an iuchair an comas keyMan.disableKey=Cuir an iuchair à comas userAtt.photo=Buadh a’ chleachdaiche (dealbh JPEG) asciiArmorFile=Faidhlichean ASCII armaichte (*.asc) importKeyFile=Ion-phortaich faidhle iuchrach OpenPGP gnupgFile=Faidhlichean GnuPG saveRevokeCertAs=Cruthach ⊠sàbhail teisteanas cùl-ghairm revokeCertOK=Chaidh an teisteanas cùl-ghairm a chruthachadh gu soirbheachail. ’S urrainn dhut a chleachdadh gus an iuchair phoblach agad a dhèanamh mì-dhligheach,m. e. ma chaill thu an iuchair phrìobhaideach agad.\n\nCuir e air meadhan a ghabhas glèidheadh gu sàbhailte a leithid CD no USB stick. Ma gheibh cuideigin inntrigeadh dhan teisteanas seo, ’s urrainn dha a chleachdadh gus an iuchair agad a chur a-mach à feum. revokeCertFailed=Cha b’ urrainn dhuinn an teisteanas cùl-ghairm a chruthachadh. addUidOK=Chaidh ID a’ chleachdaiche a chur ris gu soirbheachail addUidFailed=Cha deach leinn ID a’ chleachdaiche a chur ris noKeySelected=Bu chòir dhut iuchair no dhà a thaghadh gus na thagh thu a dhèanamh exportToFile=Às-phortaich an iuchair phoblach gu faidhle exportKeypairToFile=Às-phortaich an iuchair phrìobhaideach is phoblach gu faidhle exportSecretKey=A bheil thu airson an iuchair phrìobhaideach a ghabhail a-steach san fhaidhle iuchrach OpenPGP air a shàbhaladh? saveKeysOK=Chaidh na h-iuchraichean a shàbhaladh gu soirbheachail saveKeysFailed=Cha deach leinn na h-iuchraichean a shàbhaladh importKeysFailed=Cha deach leinn na h-iuchraichean ion-phortadh enableKeyFailed=Dh’fhàillig le cur an/à comas nan iuchraichean specificPubKeyFilename=%1$S (0x%2$S) pobl specificPubSecKeyFilename=%1$S (0x%2$S) pobl-priobh defaultPubKeyFilename=Iuchraichean-poblach-air-as-phortadh defaultPubSecKeyFilename=Iuchraichean-poblach-is-priobhaideach-air-as-phortadh noSecretKeys=Cha deach iuchair phrìobhaideach a lorg.\n\nA bheil thu airson an iuchair agad fhèin a ghintinn a-nis? sendKeysOk=Chaidh an iuchair/na h-iuchraichean a chur gu soirbheachail sendKeysFailed=Dh’fhàillig le cur nan iuchraichean receiveKeysOk=Chaidh an iuchair/na h-iuchraichean ùrachadh gu soirbheachail receiveKeysFailed=Dh’fhàillig le luchdadh a-nuas nan iuchraichean importFromClip=A bheil thu airson iuchair no dhà ion-phortadh on stòr-bhòrd? importFromUrl=Luchdaich a-nuas iuchair phoblach on URL seo: copyToClipbrdFailed=Cha b’ urrainn dhuinn lethbhreac dhen iuchair/dhe na h-iuchraichean a chur dhan stòr-bhòrd. copyToClipbrdOK=Chaidh lethbhreac dhen iuchair/dhe na h-iuchraichean a chur dhan stòr-bhòrd. deleteSecretKey=RABHADH: Tha thu gu bhith iuchair phrìobhaideach a sguabadh às!\nMa sguabas tu às an iuchair phrìobhaideach agad, chan urrainn dhut teachdaireachd sam bith a chaidh a chrioptachadh air a son a dhì-chrioptachadh agus chan urrainn dhut an iuchair agad a chùl-ghairm tuilleadh.\n\nA bheil thu cinnteach gu bheil thu airson AN DÀ CHUID an iuchair phrìobhaideach is an iuchair phoblach\n“%Sâ€\na sguabadh às? deleteMix=RABHADH: Tha thu gu bhith iuchraichean prìobhaideach a sguabadh às!\nMa sguabas tu às iuchair phrìobhaideach agad, chan urrainn dhut teachdaireachd sam bith a chaidh a chrioptachadh air a son a dhì-chrioptachadh agus chan urrainn dhut an iuchair agad ais-ghairm tuilleadh.\n\nA bheil thu cinnteach gu bheil thu airson AN DÀ CHUID na h-iuchraichean prìobhaideach is na h-iuchraichean poblach a sguabadh às? deletePubKey=A bheil thu airson an iuchair phoblach\n“%Sâ€\na sguabadh às? deleteSelectedPubKey=A bheil thu airson na h-iuchraichean poblach a sguabadh às? deleteKeyFailed=Cha b’ urrainn dhuinn an iuchair a sguabadh às. revokeKeyQuestion=Tha thu gu bhith an iuchair “%S†a chùl-ghairm.\n\nChan urrainn dhut soidhneadh leis an iuchair seo agus nuair a bhios i air a sgaoileadh, chan urrainn do chàch soidhneadh leatha tuilleadh. ’S urrainn dhut an iuchair a chleachdadh fhathast gus seann theachdaireachdan a dhì-chrioptachadh.\n\nA bheil thu airson leantainn air adhart? revokeKeyOk=Chaidh an iuchair agad a chùl-ghairm. Ma tha an iuchair agad ri fhaighinn air frithealaiche iuchraichean, mholamaid gun luchdaidh thu suas a-rithist i ach am faic càch gun deach a cùl-ghairm. revokeKeyFailed=Cha b’ urrainn dhuinn an iuchair a chùl-ghairm. refreshAllQuestion=Cha do thagh thu iuchair. Am bu toil leat a h-UILE iuchair ath-nuadhachadh? refreshKey.warn=Rabhadh: a’ crochadh air uiread nan iuchraichean is luaths a’ cheangail, dh’fhaoidte gun toir e fada fada gus a h-uile iuchair ath-nuadhachadh! downloadContactsKeys.warn=Rabhadh: a’ crochadh air uiread an luchd-aithne is luaths a’ cheangail, dh’fhaoidte gun toir e fada fada gus a h-uile iuchair ath-nuadhachadh! downloadContactsKeys.importFrom=A bheil thu airson an luchd-aithne o leabhar nan seòladh “%S†ion-phortadh? keyMan.button.exportSecKey=À&s-phortaich na h-iuchraichean prìobhaideach keyMan.button.exportPubKey=Na às-phortaich ach na h-iuchraichean &poblach keyMan.button.import=&Ion-phortaich keyMan.button.refreshAll=Ath-nuadhaich a h-uile iuchai&r keyMan.button.revokeKey=Cùl-ghai&rm an iuchair keyMan.button.skip=&Gearr leum thar na h-iuchrach keylist.noOtherUids=Chan eil dearbh-aithne eile aig an neach seo keylist.hasOtherUids=Tha seo air cuideachd: keylist.noPhotos=Chan eil dealbh ri làimh keylist.hasPhotos=Dealbhan keyMan.addphoto.filepicker.title=Tagh dealbh gus a chur ris keyMan.addphoto.warnLargeFile=Tha am faidhle a thagh thu nas motha na 25 kB.\nCha mholamaid gun cuir thu faidhle glè mhòr ris on a gheibh thu iuchair glè mhòr an uairsin. keyMan.addphoto.noJpegFile=Tha coltas nach eil am faidhle a thagh thu ’na fhaidhle JPEG. Feuch an tagh thu faidhle eile. keyMan.addphoto.failed=Cha b’ urrainn dhuinn an dealbh a chur ris. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Dh’fhàillig le atharrachadh prìomh ID a’ chleachdaiche changePrimUidOK=Chaidh prìomh ID a’ chleachdaiche atharrachadh gu soirbheachail deleteUidFailed=Dh’fhàillig le sguabadh às ID a’ chleachdaiche %S deleteUidOK=Chaidh ID a’ chleachdaiche %S a sguabadh às gu soirbheachail revokeUidFailed=Dh’fhàillig le cùl-ghairm ID a’ chleachdaiche %S revokeUidOK=Chaidh ID a’ chleachdaiche %S a chùl-ghairm gu soirbheachail. Ma tha an iuchair agad ri fhaighinn air frithealaiche iuchraichean, mholamaid gun luchdaich thu suas a-rithist i ach am faic càch gun deach a cùl-ghairm. revokeUidQuestion=A bheil thu cinnteach gu bheil thu airson ID a’ chleachdaiche %S a chùl-ghairm? deleteUidQuestion=A bheil thu cinnteach gu bheil thu airson ID a’ chleachdaiche %S a sguabadh às?\n\nThoir an aire: ma chuir thu an iuchair phoblach agad a-null gu frithealaiche iuchraichean, cha dèan sguabadh às ID a’ chleachdaiche diofar sam bith. Ma rinn thu seo, bu chòir dhut “Cùl-ghairm ID a’ chleachdaiche†a chleachdadh. # Strings in enigmailKeyImportInfo.xul importInfoTitle=SOIRBHEAS! Chaidh na h-iuchraichean ion-phortadh importInfoSuccess=✅ importInfoBits=Biodan importInfoCreated=Air a chruthachadh importInfoFpr=Lorg-mheòir importInfoDetails=(Mion-fhiosrachadh) importInfoNoKeys=Cha deach iuchair ion-phortadh. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=iuchair phoblach keyTypePrimary=prìomh iuchair keyTypeSubkey=fo-iuchair keyTypePair=càraid iuchrach keyExpiryNever=gun chrìoch keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Crioptachadh keyUsageSign=Soidhneadh keyUsageCertify=Teisteanachadh keyUsageAuthentication=Dearbhadh keyDoesNotExpire=Chan fhalbh an ùine air an iuchair # Strings in enigmailGenCardKey.xul keygen.started=Fuirich ort fhad ’s a tha an iuchair ga gintinn.... keygen.completed=Chaidh an iuchair a ghintinn. Is “0x%S†ID na h-iuchrach ùire keygen.keyBackup=Chaidh lethbhreac-glèidhidh dhen iuchair a dhèanamh mar %S keygen.passRequired=Sònraich abairt-fhaire ma tha thu airson lethbhreac-glèidhidh dhen iuchair agad a chruthachadh taobh a-muigh a’ SmartCard agad. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Chan eil am PIN a chuir thu a-steach co-ionnann; cuir a-steach a-rithist e cardPin.minLength=Feumaidh %S caractaran no àireamhan a bhith sa PhIN air a char as lugha cardPin.processFailed=Cha deach leinn am PIN atharrachadh # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Ag ath-nuadhachadh nan iuchraichean, fuirich ort... keyserverProgress.uploading=Ag luchdadh suas nan iuchraichean, fuirich ort... keyserverTitle.refreshing=Ath-nuadhaich na h-iuchraichean keyserverTitle.uploading=Luchdadh suas iuchraichean # Strings in enigmailSetupWizard passphrase.min8keys=Bu chòir do 8 caractaran a bhith san abairt-fhaire agad air a char a lugha! setupWizard.reallyCancel=A bheil thu cinnteach gu bheil thu airson draoidh an rèiteachaidh Enigmail a dhùnadh? setupWizard.invalidGpg=Chan eil am faidhle a shònraich thu ’na fhaidhle so-ghnìomhaichte GnuPG. Feuch an sònraich thu faidhle eile. setupWizard.specifyFile=Feumaidh tu faidhle iuchrach poblaich a shònrachadh mus urrainn dhut leantainn air adhart. setupWizard.installFailed=Tha coltas nach do shoirbhich leis an stàladh. Feuch ris an stàladh a-rithist no stàlaich GnuPG a làimh agus lorg e leis a’ phutan “Rùraichâ€. setupWizard.downloadForbidden=Air sàilleibh do thèarainteachd fhèin, cha luchdaich sinn a-nuas GnuPG. Tadhail air http://www.gnupg.org/ gus GnuPG a luchdadh a-nuas. setupWizard.downloadImpossible=Chan urrainn dhuinn GnuPG a luchdadh a-nuas an-dràsta. Feuch ris a-rithist an ceann greis no tadhail air http://www.gnupg.org/ gus GnuPG a luchdadh a-nuas. setupWizard.hashSumError=Cha b’ urrainn dhan draoidh fìreantachd an fhaidhle air a luchdadh a-nuas a dhearbhadh. Dh’fhaoidte gu bheil am faidhle briste no gun deach beantainn ris. A bheil thu airson leantainn air adhart leis an stàladh co-dhiù? setupWizard.importSettingsFile=Sònraich faidhle lethbhric-ghlèidhidh gus a luchdadh uaithe setupWizard.invalidSettingsFile=Chan eil am faidhle a shònraich thu ’na fhaidhle lethbhric-ghlèidhidh airson roghainnean Enigmail. setupWizard.gpgConfExists=Tha faidhle rèiteachaidh GnuPG ann mar-thà. A bheil thu airson sgrìobhadh thairis air leis an fhear on t-seann-stàladh agad? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Thachair mearachd rè luchdadh a-nuas GnuPG. Thoir sùil air loga na consoil airson barrachd fiosrachaidh. installGnuPG.installFailed=Thachair mearachd rè stàladh GnuPG. Thoir sùil air loga na consoil airson barrachd fiosrachaidh. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Feumaidh tu ainm is seòladh puist-d a chur a-steach addUidDlg.nameMinLengthError=Feumaidh 5 caractaran a bhith san ainm air a char as lugha addUidDlg.invalidEmailError=Feumaidh tu seòladh puist-d dligheach a thoirt seachad addUidDlg.commentError=Chan eil camagan ceàrnach ceadaichte ann am beachdan # Strings in enigmailCardDetails.js Carddetails.NoASCII=Cha chuir SmartCard OpenPGP taic ach ri caractaran ASCII san ainm. # network error types errorType.SecurityCertificate=Chan eil an teisteanas tèarainteachd a thug an t-seirbheis-lìn seachad dligheach. errorType.SecurityProtocol=Chan aithne dhuinn am pròtacal tèarainteachd a chleachdas an t-seirbheis-lìn. errorType.Network=Thachair mearachd lìonraidh. # filter stuff filter.folderRequired=Feumaidh tu pasgan-uidhe a thaghadh. filter.decryptMove.label=Dì-chrioptaich gu buan (Enigmail) filter.decryptCopy.label=Cruthaich lethbhreac dì-chrioptaichte (Enigmail) filter.decryptMove.warnExperimental=Rabhadh - dh’fhaoidte gum mill an roghainn criathraidh “Dì-chrioptaich gu buan†teachdaireachdan.\n\nMholamaid gu dìon gum feuch thu ris a’ chriathrag “Cruthaich lethbhreac dì-chrioptaichte†an toiseach, gun dearbhaich thu an toradh gu cùramach agus nach cleachd thu a’ chriathrag seo ach ma tha thu toilichte leis an toradh. # strings in enigmailConvert.jsm converter.decryptBody.failed=Cha deach leinn an teachdaireachd a dhì-chrioptachadh air a bheil an cuspair\n“%Sâ€.\nA bheil thu airson feuchainn ris a-rithist le abairt-fhaire eile no a bheil thu airson leum a ghearradh thar na teachdaireachd? converter.decryptAtt.failed=Cha deach leinn an ceanglachan “%1$Sâ€\na dhì-chrioptachadh aig an teachdaireachd air a bheil an cuspair\n“%2$Sâ€.\nA bheil thu airson feuchainn ris a-rithist le abairt-fhaire eile no a bheil thu airson leum a ghearradh thar na teachdaireachd? saveLogFile.title=Sàbhail faidhle loga # strings in gpg.jsm unknownSigningAlg=Algairim soidhnidh nach aithne dhuinn (ID: %S) unknownHashAlg=Hais soidhnidh nach aithne dhuinn (ID: %S) # strings in keyRing.jsm keyring.photo=Dealbh-camara keyRing.pubKeyRevoked=Chaidh an iuchair %1$S (ID na h-iuchrach %2$S) a chùl-ghairm. keyRing.pubKeyExpired=Dh’fhalbh an ùine air an iuchair %1$S (ID na h-iuchrach %2$S). keyRing.pubKeyNotForSigning=Cha ghabh an iuchair %1$S (ID na h-iuchrach %2$S) cleachdadh airson soidhneadh. keyRing.pubKeyNotForEncryption=Cha ghabh an iuchair %1$S (ID na h-iuchrach %2$S) cleachdadh airson crioptachadh. keyRing.keyDisabled=Chaidh an iuchair %1$S (ID na h-iuchrach %2$S) a chur à comas; cha ghabh a cleachdadh. keyRing.keyNotTrusted=Chan eil earbsa gu leòr san iuchair %1$S (ID na h-iuchrach %2$S). Suidhich ìre earbsa na h-iuchrach agad air “cho earbsach ’s a ghabhas†gus a cleachdadh airson soidhneadh. keyRing.keyInvalid=Chan eil an iuchair %1$S (ID na h-iuchrach %2$S) dhligheach (’s dòcha nach deach a fèin-shoidhneadh). keyRing.signSubKeysRevoked=Chaidh gach fo-iuchair soidhnidh aig an iuchair %1$S (ID na h-iuchrach %2$S) a chùl-ghairm. keyRing.signSubKeysExpired=Dh’fhalbh an ùine air gach fo-iuchair soidhnidh aig an iuchair %1$S (ID na h-iuchrach %2$S). keyRing.signSubKeysUnusable=Chaidh gach fo-iuchair soidhnidh aig an iuchair %1$S (ID na h-iuchrach %2$S) a chùl-ghairm, dh’fhalbh an ùine orra no cha ghabh an cleachdadh air adhbhar eile air choireigin. keyRing.encSubKeysRevoked=Chaidh gach fo-iuchair crioptachaidh aig an iuchair %1$S (ID na h-iuchrach %2$S) a chùl-ghairm. keyRing.encSubKeysExpired=Dh’fhalbh an ùine air gach fo-iuchair crioptachaidh aig an iuchair %1$S (ID na h-iuchrach %2$S). keyRing.noSecretKey=Chan eil an iuchair dhìomhair airson %1$S (ID na h-iuchrach %2$S) air an dul-iuchrach agad a-rèir coltais; chan urrainn dhut an iuchair a chleachdadh airson soidhneadh. keyRing.encSubKeysUnusable=Chaidh gach fo-iuchair crioptachaidh aig an iuchair %1$S (ID na h-iuchrach %2$S) a chùl-ghairm, dh’fhalbh an ùine orra no cha ghabh an cleachdadh air adhbhar eile air choireigin. #strings in exportSettingsWizard.js cannotWriteToFile=Chan urrainn dhuinn sàbhaladh dhan fhaidhle “%Sâ€. Feuch an tagh thu faidhle eile. dataExportError=Tachair mearachd rè às-phortadh an dàta agad. enigmailSettings=RoghainneanEnigmail defaultBackupFileName=Enigmail-às-phortadh specifyExportFile=Sònraich ainm faile airson an às-phortaidh homedirParamNotSUpported=Cha chuir sinn taic ri paramadairean a bharrachd a rèiticheas slighean, can --homedir agus --keyring rè às-phortadh/aiseag nan roghainnean agad. Cleachd dòighean eile, can suidheachadh caochladair GNUPGHOME na h-arainneachd. #strings in expiry.jsm expiry.keyExpiresSoon=Falbhaidh an ùine air an iuchair %1$S agad ro %2$S là(ithean).\n\nMholamaid gun cruthaich thu càraid iuchrach ùr ’s gun rèitich thu na cunntasan a fhreagras rithe ach an cleachd iad an iuchair ùr. expiry.keysExpireSoon=Falbhaidh an ùine air na h-iuchraichean seo agad ro %1$S là(ithean):\n%2$S. Mholamaid gun cruthaich thu iuchraichean ùra ’s gun rèitich thu na cunntasan agad ach an cleachd iad na h-iuchraichean ùra. enigmail/lang/gd/help/000077500000000000000000000000001266701624400151165ustar00rootroot00000000000000enigmail/lang/gd/help/compose.html000066400000000000000000000100751266701624400174540ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/gd/help/editRcptRule.html000066400000000000000000000116031266701624400204130ustar00rootroot00000000000000 Enigmail Help: Edit Per-Recipient Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit Per-Recipient Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set Enigmail Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the Enigmail Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the Per-Recipient Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/gd/help/help.html000066400000000000000000000104671266701624400167440ustar00rootroot00000000000000 Enigmail Help

Enigmail Help

Using Enigmail when reading messages

  • Decrypt button in main Mail window
    This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
  • Pen and Key icons in Message Header display
    The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
    • Enigmail Security info: allows you to view the output status from GnuPG for the message.
    • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
    • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
    • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

    If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

    You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

    Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

    To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

  • Opening encrypted attachments / importing attached OpenPGP keys
    Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page
If you have questions or comments about enigmail, please send a message to the Enigmail mailing list

Enigmail is open source and licensed under the Mozilla Public License and the GNU General Public License

enigmail/lang/gd/help/initError.html000066400000000000000000000045461266701624400177720ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing Enigmail

Enigmail Help

How to Resolve Problems with Initializing Enigmail

There are several reasons why initializing Enigmail does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for Enigmail to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and Enigmail cannot find it, then you need to manually set the path to GnuPG in the Enigmail Preferences (menu Enigmail > Preferences)

Enigmime failed to initialize

Enigmail works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/gd/help/messenger.html000066400000000000000000000101411266701624400177710ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • Enigmail Security info: allows you to view the output status from GnuPG for the message.
  • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/gd/help/rulesEditor.html000066400000000000000000000060311266701624400203050ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/gd/help/sendingPrefs.html000066400000000000000000000047571266701624400204500ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of Enigmail to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/gl/000077500000000000000000000000001266701624400141765ustar00rootroot00000000000000enigmail/lang/gl/am-enigprefs.properties000066400000000000000000000001231266701624400206650ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Seguridade OpenPGP enigmail/lang/gl/enigmail.dtd000066400000000000000000001376221266701624400164730ustar00rootroot00000000000000 Seguranza OpenPGP)"> NOTA: A xeración de chaves pode levar varios minutos. Non saia da aplicación mentres se xera a chave. Unha navegación activa ou realizar operacións intensivas co disco durante a xeración das chaves acelerará o proceso e beneficiará a aleatoriedade. Recibirá un aviso cando se complete a xeración das chaves."> ' non é válido"> NOTA: A xeración da chave pode levar varios minutos. Non saia da aplicación mentres se estea a xerar a chave. Recibirá un aviso en canto remate o proceso."> Nota: Enigmail verificará sempre sinaturas nos correos para todas as contas ou identidades, estean ou non activadas"> chave pública é para que outros lle poidan enviar os correos electrónicos cifrados. Pode distribuirlla a quen desexe."> chave privada é só para que vostede poida descifrar estes correos e mais enviar correos asinados. Non debería darlla a ninguén."> chave privada é só para que vostede poida descifrar estes correos e mais enviar correos asinados. Non debería darlla a ninguén. Para asegurar a chave privada, pediráselle o contrasinal nos seguintes dous diálogos."> contrasinal protexe a chave privada impedindo un mal uso dela."> non se recomendan."> Pediráselle que introduza o seu contrasinal."> exportar os datos usando o asistente de copias de seguranza nas preferencias do Enigmail importar os datos ao novo computador usando este asistente. "> Grazas por usar Enigmail."> exportar os datos desde o computador antigo usando este asistente importar os datos ao novo computador usando o asistente de configuración. "> enigmail/lang/gl/enigmail.properties000066400000000000000000001134531266701624400201100ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerta do Enigmail enigConfirm=Confirmación do Enigmail enigError=Erro do Enigmail enigPrompt=Diálogo do Enigmail dlgYes=&Si dlgNo=&Non dlgKeepSetting=Lembrar a resposta e non preguntar de novo dlgNoPrompt=Non mostrar este diálogo de novo dlg.button.delete=Eliminar dlg.button.cancel=&Cancelar dlg.button.close=Pe&char dlg.button.continue=Con&tinuar dlg.button.skip=&Omitir dlg.button.overwrite=&Sobrescribir dlg.button.view=&Ver dlg.button.retry=&Reintentar dlg.button.ignore=&Ignorar repeatPrefix=\n\nEsta alerta repetirase %S repeatSuffixSingular=vez máis. repeatSuffixPlural=veces máis. noRepeat=\n\nEsta alerta non se repetirá até que actualice Enigmail. pgpNotSupported=Semella que está a usar Enigmail xunto con PGP 6.x\n\nDesafortunadamente, PGP 6.x ten problemas que impiden que Enigmail traballe correctamente. Ademais, Enigmail xa non acepta PGP 6.x. Cambie a GnuPG (GPG) no seu lugar.\n\nSe precisa axuda para cambiar a GnuPG, comprobe a sección da Axuda no sitio web de Enigmail. initErr.howToFixIt=Para poder usar o Enigmail, precisa instalar o GnuPG. Se aínda non o ten, o xeito máis doado de instalalo é usando o botón inferior do «Asistente de configuración». initErr.setupWizard.button=Configurar o a&sistente passphraseCleared=O contrasinal foi borrado. cannotClearPassphrase=Está usando unha ferramenta non estándar (como gnome-keyring) para manexar os contrasinais. Por este motivo non é posíbel limpar o contrasinal desde o Enigmail. noPhotoAvailable=A foto non está dispoñíbel debugLog.title=Rexistro da depuración do Enigmail error.photoPathNotReadable=A ruta da imaxe '%S' non se pode ler # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Esta nova versión de Enigmail ten cambios importantes no manexo das preferencias e das opcións. Tentamos conservar os vellos axustes na nova versión. Con todo, non podemos cubrir todos os casos automaticamente. Por favor, comprobe as novas preferencias e opcións. enigmailCommon.checkPreferences=Comprobar as preferencias... preferences.defaultToPgpMime=Cambiamos a codificación predeterminada de mensaxes no Enigmail de Inline-PGP a PGP/MIME. Recomendámoslle que o manteña así.\n\nSe aínda desexa usar Inline-PGP de xeito predeterminado, pode facelo nos axustes da conta en Seguridade OpenPGP. usingVersion=Executando Enigmail versión %S usingAgent=Usando %S executábel %S para cifrar e descifrar agentError=ERRO: Produciuse un fallo ao acceder ao servizo Enigmime! accessError=Produciuse un erro ao acceder ao servizo Enigmail onlyGPG=A xeración de chaves só funciona con GnuPG (non con PGP)! keygenComplete=Completouse a xeración da chave! Usarase a identidade <%S> para asinar. revokeCertRecommended=Recoméndase crear un certificado de revogación para a súa chave. Este certificado pode utilizarse para invalidar a súa chave, p.ex. no caso de que perda a súa chave privada ou esta se vexa comprometida. Quere crear un certificado de revogación agora? keyMan.button.generateCert=Xerar certificado genCompleteNoSign=Completouse a xeración da chave! genGoing=Xa se están a xerar as chaves! passNoMatch=Os contrasinais non coinciden; introdúzaos de novo passCheckBox=Marque a caixa se non quere contrasinal para a chave passUserName=Especifique o nome de usuario/a para esta identidade keygen.missingUserName=Non se especificou un nome para a conta/identidade seleccionada. \nIntroduza un valor no campo «Nome» nos axustes da conta. keygen.passCharProblem=Está a usar caracteres especiais no seu contrasinal. Desafortunadamente, isto pode causar problemas noutros aplicativos. Recomendámoslle que escolla un contrasinal utilizando os seguintes caracteres:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Debido a razóns técnicas, o contrasinal non pode comezar ou rematar cun espazo. changePassFailed=Produciuse un fallo ao cambio de contrasinal. keyConfirm=Xerar chaves pública e privada para '%S'? keyMan.button.generateKey=Xerar chave keyAbort=Desexa interromper a xeración de chaves? keyMan.button.generateKeyAbort=Cancelar a xeración da chave keyMan.button.generateKeyContinue=Continuar coa xeración da chave expiryTooLong=Non é posíbel crear unha chave con unha caducidade de máis de 100 anos. expiryTooLongShorter=Non é posíbel crear unha chave que caduque en máis de 90 anos. expiryTooShort=A súa chave debe ser válida alomenos durante un día. dsaSizeLimit=As chaves de asinado DSA limítanse a 3072 bits. O tamaño da chave reducirase en consecuencia. keyGenFailed=Produciuse un fallo durante a xeración da chave. Comprobe a consola de Enigmail (Menú Enigmail > Depuración Enigmail) para saber os detalles. setKeyExpirationDateFailed=Non foi posíbel cambiar a data de caducidade # Strings in enigmailMessengerOverlay.js securityInfo=Información de seguridade de Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Os anexos de esta mensaxe non foron asinados nin cifrados*\n\n possiblyPgpMime=Posíbelmente é unha mensaxe PGP/MIME cifrada ou asinada; prema no botón Descifrar para verificalo noDecrypted=Non hai ningunha mensaxe descifrada que gardar!\nUse o comando Gardar desde o menú Ficheiro noMessage=Non hai ningunha mensaxe que gardar! useButton=Prema no botón Descifrar para descifrar a mensaxe saveHeader=Enigmail: Gardar mensaxe descifrada saveAttachmentHeader=Enigmail: Gardar anexo descifrado noTempDir=Non foi posíbel atopar un cartafol temporal no que escribir. Defina a variábel de contorno TEMP attachmentPgpKey=O anexo '%S' que quere abrir parece ser un ficheiro de chave OpenPGP.\n\nPrema 'Importar' para importar as chaves contidas ou 'Ver' para ver o contido do ficheiro en unha xanela do navegador beginPgpPart=********* *INICIO DA PARTE CIFRADA OU ASINADA* ********* endPgpPart=********** *FIN DA PARTE CIFRADA OU ASINADA* ********** notePartEncrypted=Enigmail: *Hai partes da mensaxe que NON están asinadas ou cifradas* noteCutMessage=Enigmail: *Atopáronse múltiples bloques da mensaxe -- interrompeuse o descifrado/verificación* decryptOkNoSig=Aviso\n\nDescifrouse satisfactoriamente, mais a sinatura non se puido verificar correctamente. msgOvl.button.contAnyway=&Continuar igualmente signature.verifiedOK=A sinatura do anexo %S comprobouse correctamente signature.verifyFailed=Non foi posíbel comprobar a sinatura do anexo %S attachment.noMatchToSignature=Non foi posíbel asociar o anexo '%S' a un ficheiro de sinatura attachment.noMatchFromSignature=Non foi posíbel asociar o ficheiro de sinatura '%S' a un anexo fixBrokenExchangeMsg.failed=Non se conseguiu repara a mensaxe. keysToExport=Seleccionar chaves OpenPGP a inserir keysToUse=Seleccionar chaves OpenPGP que usar para %S pubKey=Chave pública para %S\n windowLocked=A xanela de composición está bloqueada; o envío foi cancelado sendUnencrypted=Produciuse un fallo ao arrancar Enigmail.\nQuere enviar o mensaxe sen cifrar? composeSpecifyEmail=Especifique o seu enderezo de correo principal, o que se utilizará para escoller a chave para asinar as mensaxes saíntes.\n Se o deixa en branco, usarase o enderezo de REMITE da mensaxe para escoller a chave para asinar. sendingHiddenRcpt=Esta mensaxe ten destinos ocultos Cco (Copia carbón oculta). Se esta mensaxe está cifrada, é posíbel agochar os/as destinatarios/as ocultos/as (Cco) mais usuarios/as dalgúns productos (p.e. PGP Corp.) non poderán descifrar a mensaxe. Dito isto, recomendase evitar correos con Cco con mensaxes cifradas. sendWithHiddenBcc=Agochar destinatarios/as Cco sendWithShownBcc=Cifrar normalmente sendingNews=Cancelouse o envío cifrado.\n\nEsta mensaxe non se pode cifrar porque hai destinos de grupos de novas. Reenvíe a mensaxe sen cifrar. sendToNewsWarning=Aviso: está a piques de enviar unha mensaxe cifrada a un grupo de novas.\n\nIsto non é aconsellábel xa que só ten sentido se todoas as persoas do grupo poden descifrar a mensaxe, p.e. a mensaxe precisa ser cifrada coas chaves de todos/as participantes do grupo. Envíe esta mensaxe só se sabe exactamente o que está a facer.\n\nContinuar? hasHTML=Aviso de correo HTML:\nEsta mensaxe pode conter HTML, o que podería causar fallos na sinatura/cifrado. Para evitar isto no futuro, debería premer a tecla SHIFT cando prema no botón Compoñer/Responder para enviar correo asinado.\nSe asina o correo de xeito predeterminado, debería desmarcar a opción 'Compoñer mensaxes en HTML' para desactivar o correo HTML de xeito permanente para esta conta de correo. strippingHTML=A mensaxe contén información de formato en HTML que se perderá ao facer a conversión a texto plano para asinar/cifrar. Quere continuar? msgCompose.button.sendAnyway=Enviar a mensaxe igualmente&Send Message Anywa attachWarning=Os anexos a esta mensaxe non son locais e non se poden cifrar. Para cifrar os anexos, gárdeos primeiro como ficheiros locais e despois engádaos como ficheiros adxuntos. Quere enviar a mensaxe igualmente? quotedPrintableWarn=Activou a codificación 'entrecomiñado-imprimíbel' para o envío de mensaxes. Isto pode producir erros ao descifrar ou verificar a mensaxe.\nQuere desactivar o envío de mensaxes 'entrecomiñados-imprimíbeis' agora? minimalLineWrapping=Definiu o axuste de liña a %S caracteres. Para un cifrado ou sinatura correcta, este valor ten que ser como mínimo 68.\nQuere mudar o axuste de liña a 68 caracteres agora? warning=Aviso signIconClicked=Modificou manualmente a sinatura de mensaxes. Polo tanto, mentres que compón esta mensaxe, (des)activar a sinatura non depende de (des)activar o cifrado. pgpMime_sMime.dlg.text=Ten activados PGP/MIME e S/MIME. Desgraciadamente non é posíbel utilizar ambos os protocolos ao mesmo tempo. Seleccione cal desexa usar. pgpMime_sMime.dlg.pgpMime.button=Usar &PGP/MIME pgpMime_sMime.dlg.sMime.button=Usar &S/MIME errorKeyUnusable=Non é posíbel asociar o enderezo de correo nin o identificador da chave '%S' a unha chave OpenPGP válida e non caducada.\nAsegúrese de que ten unha chave OpenPGP válida e que os axustes da conta apuntan a esa chave. errorOwnKeyUnusable=O ID da chave «%S» configurado para a identidade actual non fornece unha chave OpenPGP válida.\n\nAsegúrese que ten unha chave OpenPGP non caducada e que os axustes da conta dirixen a esta chave.\nSe a chave non está caducada, comprobe que ten a confianza no propietario estabelecida como Completa ou Definitiva. msgCompose.cannotSaveDraft=Produciuse un erro gardando o borrador msgCompose.internalEncryptionError=Erro interno: desactivouse o cifrado prometido. msgCompose.internalError=Produciuse un erro interno msgCompose.toolbarTxt.signAndEncrypt=Esta mensaxe asinarase e cifrarase msgCompose.toolbarTxt.signOnly=Esta mensaxe asinarase msgCompose.toolbarTxt.encryptOnly=Esta mensaxe cifrarase msgCompose.toolbarTxt.noEncryption=Esta mensaxe non se asinará nin cifrará msgCompose.toolbarTxt.disabled=Desactivouse o Enigmail para a identidade seleccionada msgCompose.toolbarTxt.smime=S/MIME está activado, en conflito potencial co Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME polo tanto non se usa msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME está activado - O Enigmail polo tanto non se usa msgCompose.toolbarTxt.smimeNoDraftEncryption=-os borradores non se cifrarán msgCompose.toolbarTxt.smimeConflict=O Enigmail non está operatiavo porque o S/MIME está activado. Desactive o cifrado e/o asinado de S/MIME e despois active o Enigmail. msgCompose.encryptedSubjectStub=Mensaxe cifrada msgCompose.detailsButton.label=Detalles... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Cancelouse o envío.\n\n # details: keyNotTrusted=A chave «%S» non é fiábel dabondo keyNotFound=Non foi posíbel atopar a chave «%S» keyRevoked=A chave «%S» revogouse keyExpired=A chave «%S» caducou statPGPMIME=PGP/MIME statSigned=ASINADO statEncrypted=CIFRADO statPlain=SEN ASINAR e SEN CIFRAR offlineSave=Gardar %S mensaxe a %S no cartafol de mensaxes sen enviar? onlineSend=Enviar %S mensaxe a %S? encryptKeysNote=Nota: a mensaxe está cifrada co seguinte ID de usuario/a / Chaves: %S hiddenKey= signFailed=Produciuse un erro en Enigmail; fallou Cifrado/sinatura; enviar mensaxe sen cifrar? msgCompose.button.sendUnencrypted=Enviar mensaxe sen cifrar recipientsSelectionHdr=Seleccionar destinatarios/as para o cifrado configureNow=Aínda non configurou a seguridade Enigmail para a identidade seleccionada. Quere facer isto agora? # encryption/signing status and associated reasons: encryptMessageAuto=Cifrar mensaxe (automaticamente) encryptMessageNorm=Cifrar mensaxe signMessageAuto=Asinar mensaxe (automaticamente) signMessageNorm=Asinar mensaxe encryptOff=Cifrado: DESACTIVADO encryptOnWithReason=Cifrado: ACTIVADO (%S) encryptOffWithReason=Cifrado: DESACTIVADO (%S) encryptOn=Cifrado: ACTIVADO signOn=Asinado: ACTIVADO signOff=Asinado: DESACTIVADO signOnWithReason=Asinado: ACTIVADO (%S) signOffWithReason=Asinado: DESACTIVADO (%S) reasonEnabledByDefault=activado de forma predeterminada reasonManuallyForced=forzado manualmente reasonByRecipientRules=forzado polas regras do destinatario reasonByAutoEncryption=forzado polo cifrado automático reasonByConflict=debido a un conflito nas regras do destinatario reasonByEncryptionMode=debido ao modo de cifrado reasonSmimeConflict=porque S/MIME está activado # should not be used anymore: encryptYes=Vaise cifrar a mensaxe encryptNo=Non se vai a cifrar a mensaxe # should not be used anymore: signYes=Vaise asinar a mensaxe signNo=Non se vai asinar a mensaxe # PGP/MIME status: pgpmimeNormal=Protocolo: PGP/MIME inlinePGPNormal=Protocolo: Inline PGP pgpmimeAuto=Protocolo: PGP/MIME (automaticamente) inlinePGPAuto=Protocolo: Inline PGP (automaticamente) # should not be used anymore pgpmimeYes=Usarase PGP/MIME pgpmimeNo=Usarase o Inline PGP # Attach own key status (tooltip strings): attachOwnKeyNo=Non se anexará a súa chave attachOwnKeyYes=Anexarase a súa chave attachOwnKeyDisabled=Non pode anexar a súa chave. Ten que seleccionar unha chave na\nsección de OpenPGP nos axustes da conta para activar esta función. rulesConflict=Detectáronse conflitos nas regras por destinatario%S\n\nEnviar a mensaxe con esta configuración? msgCompose.button.configure=&Configurar msgCompose.button.send=Enviar mensaxe msgCompose.button.save=Gardar mensaxe # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Necesítase a chave pública %S para verificar a sinatura keyUsed=A chave pública %S usouse para comprobar a sinatura clickDecrypt=; premer botón Descifrar clickDecryptRetry=; premer botón Descifrar para tentar de novo clickDetailsButton=; premer no botón 'Detalles' para ver máis información clickImportButton=; prema no botón «Importar chave» para descargar a chave keyTypeUnsupported=; o tipo de chave non é compatíbel coa versión de GnuPG msgPart=Parte da mensaxe %S msgSigned=asinado msgSignedUnkownKey=asinado cunha chave descoñecida msgEncrypted=cifrado msgSignedAndEnc=asinado e cifrado unverifiedSig=Sinatura sen verificar incompleteDecrypt=Descifrado incompleto needKey=Erro - precísase a chave privada para descifrar a mensaxe failedDecrypt=Erro - fallou o descifrado badPhrase=Erro - contrasinal incorrecto failedDecryptVerify=Erro - fallou o descifrado/verificación viewInfo=; Ver > Información de seguridade da mensaxe para ver os detalles decryptedMsg=Mensaxe descifrada decryptedMsgWithFormatError=Mensaxe descifrada (restabeleceuse o formato de correo PGP, roto probabelmente por un servidor Exchange antigo, así que o resultado pode non ser perfecto para a súa lectura) usedAlgorithms=Algoritmos usados: %S e %S # strings in pref-enigmail.js oldGpgVersion14=Fallou a iniciación do Enigmail.\n\nEstá usando a versión %S de GnuPG, que xa non ten asistencia. O Enigmail require a versión 2.0.7 ou superior. Anove a instalación de GnuPG ou o Enigmail non funcionará. locateGpg=Localizar o programa GnuPG invalidGpgPath=GnuPG non se pode executar coa ruta especificada. Enigmail ficará desactivado até que cambie a ruta de GnuPG de novo ou reinicie o aplicativo. warningsAreReset=Restablecéronse todos os avisos. prefs.gpgFound=Atopouse GnuPG en %S prefs.gpgNotFound=Non se atopou o GnuPG prefs.warnAskNever=Aviso: activar esta opción causará que non se cifre ningún correo se falta algunha das chaves dos/das destinatarios/as -- Enigmail non informará disto cando suceda! prefs.warnIdleTimeForUnknownAgent=Non é posíbel conectar co gpg-agent. Quizais o seu sistema usa unha ferramenta especializada para manexar contrasinais (como gnome-keyring ou seahorse-agent, KDE wallet manager...). Desafortunadamente Enigmail non pode controlar o tempo límite dos contrasinais na ferramenta que está usando. Polo tanto a configuración do tempo límite respectivo en Enigmail é ignorada. prefEnigmail.oneKeyserverOnly=Erro - so se pode especificar un servidor de chaves para a descarga automática das chaves OpenPGP que falten. enterAdminPin=Introduza o PIN de administración da súa SmartCard enterCardPin=Introduza o PIN da súa SmartCard notInit=Erro - non se iniciou o servizo Enigmail badCommand=Erro - fallou o comando de cifrado cmdLine=liña de comando e saída: notRequired=Erro - non se precisa cifrado notComplete=Erro - non se completou a xeración da chave invalidEmail=Erro - enderezo(s) de correo non válido(s) noPassphrase=Erro - non se proporcionou o contrasinal noPGPblock=Erro - non se atopou un bloque de datos armado OpenPGP válido unverifiedReply=Probabelmente modificouse a parte sangrada da mensaxe (resposta) keyInMessageBody=Hai unha chave no corpo da mensaxe. Prema «Importar chave» para importala sigMismatch=Erro - A sinatura non coincide cantImport=Produciuse un erro importando a chave pública\n\n doImportOne=Desexa importar %1$S (%2$S)? doImportMultiple=Desexa importar as seguintes chaves?\n\n%S previewFailed=Non é posíbel ler o ficheiro da chave pública. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Non se pode utilizar a SmartCard %S atopada no seu lector para procesar a mensaxe.\nInsira a súa SmartCard %S e repita a operación. sc.insertCard=A operación require o uso da súa SmartCard %S.\nInsira a SmartCard requerida e repita a operación. sc.removeCard=A operación non require que teña a súa SmartCard no lector.\nRetire a súa SmartCard e repita a operación. sc.noCardAvailable=Non se puido atopar ningunha SmartCard no seu lector\nInsira de novo a SmartCard e repita a operación. sc.noReaderAvailable=Non se puido acceder ao lector de tarxetas SmartCard \nConecte o lector de tarxetas, insira a SmartCard, e repita a operación. keyError.keySpecNotFound=O enderezo de correo-e «%S» non obtivo ningunha coincidencia cunha chave do anel de chaves. keyError.keyIdNotFound=O ID da chave configurada «%S» non se atopa no anel de chaves. keyError.resolutionAction=Seleccione unha chave válida na sección OpenPGP dos axustes da conta missingPassphrase=Falta o contrasinal errorHandling.gpgAgentInvalid=O sistema está executando unha versión do gpg-agent que non é axeitada para a súa versión de GnuPG. errorHandling.gpgAgentError=GnuPG informou dun erro na comunicación co gpg-agent (un compoñente do GnuPG). errorHandling.dirmngrError=GnuPG informou dun erro na comunicación co dirmngr (un compoñente do GnuPG). errorHandling.pinentryError=GnuPG non puido consultar o contrasinal por medio de pinentry, errorHandling.readFaq=Este é un erro de configuración do sistema que impide que o Enigmail funcione correctamente. Non se pode arranxar automaticamente.\n\nRecomendámoslle moito que consulte o noso sitio de asistencia en https://enigmail.net/faq. gpgNotFound=Non se puido localizar o programa GnuPG '%S'.\nAsegúrese de que a ruta ao executábel GnuPG é correcto nas Preferencias de Enigmail. gpgNotInPath=Non se puido localizar o executábel de GnuPG na ruta (PATH).\nAsegúrese de que a ruta ao executábel GnuPG é correcto nas Preferencias de Enigmail. enigmailNotAvailable=O servizo principal do Enigmail non está dispoñíbel gpgAgentNotStarted=Non foi posíbel iniciar o programa gpg-agent, necesario para a súa versión do GnuPG %S. prefUntrusted=NON FIÃBEL prefRevoked=CHAVE REVOCADA prefExpiredKey=CHAVE CADUCADA prefExpired=CADUCADO prefGood=Sinatura correcta de %S prefBad=Sinatura INCORRECTA de %S failCancel=Erro - A descarga da chave foi cancelada polo usuario failNoServer=Erro- Non se especificou un servidor do que descargar as chaves failNoID=Erro - Non se especificou un ID de chave para descargar failKeyExtract=Erro - fallou o comando de extración de chave notFirstBlock=Erro - o primeiro bloque OpenPGP non é un bloque de chave pública importKeyConfirm=Importar chave(s) pública(s) integradas na mensaxe? failKeyImport=Erro - fallou a importación de chaves fileWriteFailed=Houbo un erro ao escribir ao ficheiro %S importKey=Importar chave pública %S desde o servidor de chaves. uploadKey=Enviar chave pública %S ao servidor de chaves: keyId=ID de chave keyAndSigDate=ID de chave: 0x%S / Asinado en: %S keyFpr=Pegada dixital da chave: %S noEmailProvided=Non proporcionou un enderezo de correo! keyAlreadySigned=A chave xa está asinada, non pode asinala dúas veces. gnupg.invalidKey.desc=Non se encontrou a chave %S ou esta non é valida. É posíbel que a (sub-)chave xa caducase. selKeyExpired=caducada %S createdHeader=Creada atLeastOneKey=Non se seleccionou ningunha chave! Ten que seleccionar polo menos unha chave para aceptar este diálogo fewerKeysThanRecipients=Seleccionou un número máis pequeno de chaves que de remitentes. Está seguro/a de que a lista de chaves para cifrar está completa? userSel.button.goBack=Seleccionar máis chaves userSel.secretKeySel.title=Seleccionar unha chave privada OpenPGP para asinar as mensaxes userSel.problemNoKey=Ningunha chave válida userSel.problemMultipleKeys=Múltiples chaves # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Enviar máis tarde # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: PGP/MIME só está soportado por un número limitado de clientes de correo! En Windows só Mozilla/Thunderbird, Sylpheed, Pegasus e Mulberry soportan este estándar; en Linux/UNIX e Mac OS X está soportado polos clientes de correo máis populares. Se non está seguro/a, seleccione a opción %S. first=primeiro second=segundo # Strings used in am-enigprefs.js encryptKeyHeader=Seleccionar chave OpenPGP para o cifrado identityName=Identidade: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Activou o cifrado, mais non seleccionou unha chave. Para cifrar correos enviados a %S, precisa especificar unha ou varias chaves válidas da súa lista de chaves. Quere desactivar o cifrado para %S? noKeyToUse=(ningún - sen cifrado) noEmptyRule=A regra non pode estar baleira! Defina un enderezo de correo no campo da regra. invalidAddress=Os enderezos de correo que introduciu non son válidos. Non debería definir os nomes dos/as destinatarios/as, defina só os enderezos de correo. P.e.:\nInválido: Un nome\nVálido: un.nome@enderezo.net noCurlyBrackets=As chaves {} teñen un significado especial e non se deberían utilizar nos enderezos de correo. Se quere modificar o comportamento desta regra, utilice a opción 'Aplicar regra se o destinatario...'.\nPode ver máis información premendo sobre o botón de Axuda. # Strings used in enigmailRulesEditor.js never=Nunca always=Sempre possible=Posíbel deleteRule=Está seguro de que quere eliminar a regra? nextRcpt=(Seguinte destinatario) negateRule=Non addKeyToRule=Engadir unha chave %S (%S) á regra por-receptor # Strings used in enigmailSearchKey.js needOnline=A función seleccionada non está dispoñíbel en modo sen conexión. Conéctese e ténteo de novo. protocolNotSupported=O protocolo '%S://' que seleccionou non está soportado para a descarga de chaves OpenPGP. gpgkeysDisabled=Activar a opción 'extensions.enigmail.useGpgKeysTool' podería axudar. noKeyserverConn=Non se puido conectar co servidor de chaves en %S. keyDownloadFailed=Houbo un erro ao descargar a chave do servidor. A mensaxe de estado é:\n%S internalError=Produciuse un erro interno. Non se puido descargar ou importar as chaves. noKeyFound=Sentímolo, non se puido atopar ningunha chave que coincida cos criterios de busqueda especificados.\nOs ID's de chave deberían ter como prefixo \\"0x\\" (e.g. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Produciuse un erro ao buscar ou descargar a chave do servidor: non se puido executar gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Fallou ao definir a confianza no propietario # Strings in enigmailSignKeyDlg.js signKeyFailed=Fallou ao asinar a chave alreadySigned.label=Nota: a chave %S xa está asinada coa chave privada seleccionada. alreadySignedexportable.label=Nota: a chave %S xa está asinada exportábel coa chave privada seleccionada. Unha sinatura local non ten sentido. partlySigned.label=Nota: algunhas ID de chave de usuario %S xa están asinadas coa chave secreta seleccionada. noTrustedOwnKeys=Non se atopou ningunha chave axeitada para asinar. Precisa, cando menos, unha chave privada plenamente confiábel para asinar as chaves. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Cargando chaves, espere ... keyValid.unknown=descoñecido keyValid.invalid=incorrecto keyValid.disabled=desactivado keyValid.revoked=revogado keyValid.expired=caducado keyValid.noSubkey=subchave non válida keyTrust.untrusted=non fiábel keyTrust.marginal=marxinal keyTrust.full=fiábel keyTrust.ultimate=definitiva keyTrust.group=(groupo) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Activar chave keyMan.disableKey=Desactivar chave userAtt.photo=Usar atributo (imaxe JPEG) asciiArmorFile=Ficheiros con armadura ASCII (*.asc) importKeyFile=Importar o ficheiro coa chave OpenPGP gnupgFile=Ficheiros GnuPG saveRevokeCertAs=Crear e gardar certificado de revogación revokeCertOK=Creouse con éxito o certificado de revogación. Pode usalo para invalidar a súa chave pública, p.e. en caso de que perda a súa chave privada.\n\nTransfírao a un medio que poida almacenarse dun xeito seguro como un CD ou un disco floppy. Se alguén ten acceso a este certificado pode utilizalo para volver a súa chave inútil. revokeCertFailed=Non se puido crear o certificado de revogación. addUidOK=O ID do usuario foi engadido correctamente addUidFailed=Produciuse un fallou ao engadir o ID de usuario noKeySelected=Debe seleccionar alomenos unha chave para realizar a operación selecionada exportToFile=Exportar chave pública a un ficheiro exportKeypairToFile=Exportar as chaves secreta e pública a un ficheiro exportSecretKey=Quere incluír a chave privada no ficheiro de chave OpenPGP que vai a gardar? saveKeysOK=O ficheiro de chave foi gardado correctamente saveKeysFailed=Produciuse un fallo ao gardar as chaves importKeysFailed=Produciuse un fallo ao importar as chaves enableKeyFailed=Produciuse un erro ao activar/desactivar as chaves specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Chaves-públicas-exportadas defaultPubSecKeyFilename=Chaves-públicas-e-privadas-exportadas noSecretKeys=Non se atopou ningunha chave privada.\n\nQuere xerar a súa propia chave agora? sendKeysOk=As chaves foron enviadas correctamente sendKeysFailed=Produciuse un fallo ao enviar as chaves receiveKeysOk=As chaves foron actualizadas correctamente receiveKeysFailed=Produciuse un erro ao descargar as chaves importFromClip=Quere importar algunha(s) chaves do portarretallos? importFromUrl=Descargue a chave pública nesta URL: copyToClipbrdFailed=Non foi posíbel copiar a(s) chave(s) seleccionada(s) ao portarretallos. copyToClipbrdOK=Chave(s) copiada(s) ao portarretallos deleteSecretKey=AVISO: Vai eliminar unha chave privada!\nSe elimina a súa chave privada, non poderá descifrar ningunha mensaxe cifrada para esa chave, e tampouco poderá revogar a súa chave.\n\nEstá seguro de que quere eliminar AMBAS as chaves, a chave privada e a pública '%S'? deleteMix=AVISO: vai eliminar chaves privadas!\nSe elimina a súa chave privada non poderá descifrar calquera mensaxe cifrado para esa chave.\n\nEstá seguro de que quere eliminar AMBAS as chaves, as chaves privadas e públicas seleccionadas? deletePubKey=Desexa eliminar a chave pública\n'%S'? deleteSelectedPubKey=Desexa eliminar as chaves públicas? deleteKeyFailed=Non foi posíbel eliminar a chave. revokeKeyQuestion=Vai a revogar a chave «%S»\n\nXa non lle será posíbel volver asinar con esta chave. Unha vez revogada, os demais non serán quen de cifrar con ela. Pode seguir a usar a chave para descifrar as mensaxes antigas.\n\nDesexa continuar?\n\n revokeKeyOk=A chave foi revogada. Se a súa chave está dispoñíbel nalgún servidor de chaves, é recomendábel que a suba de novo, para que outras persoas poidan ver a revogación. revokeKeyFailed=Non se puido revogar a chave. refreshAllQuestion=Non seleccionou ningunha chave. Desexa recargar TODAS as chaves? refreshKey.warn=Aviso: dependendo do número de chaves e da velocidade da conexión, a recarga de todas as chaves pode ser un proceso bastante lento! downloadContactsKeys.warn=Aviso: dependendo do número de contactos e da velocidade da conexión, a descarga de todas as chaves pode durar unha boa miga. downloadContactsKeys.importFrom=Desexa importar contactos da axenda de enderezos «%S»? keyMan.button.exportSecKey=Exportar chaves privadas keyMan.button.exportPubKey=Exportar só chaves &públicas keyMan.button.import=&Importar keyMan.button.refreshAll=&Recargar todas as chaves keyMan.button.revokeKey=&Revogar chave keyMan.button.skip=&Saltar a chave keylist.noOtherUids=Non ten outras identidades keylist.hasOtherUids=Tamén coñecido como keylist.noPhotos=Non hai fotografías dispoñíbeis keylist.hasPhotos=Fotografías keyMan.addphoto.filepicker.title=Seleccione unha foto para engadir keyMan.addphoto.warnLargeFile=O ficheiro seleccionado é maior de 25kB.\nNon é recomendábel engadir ficheiros grandes porque a chave resulta longa de máis. keyMan.addphoto.noJpegFile=O ficheiro seleccionado non semella un ficheiro JPEG. Seleccione outro diferente. keyMan.addphoto.failed=Non foi posíbel engadir a foto. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Produciuse un erro cambiando o ID de usuario principal changePrimUidOK=O ID de usuario principal foi cambiado correctamente deleteUidFailed=Produciuse un erro ao eliminar o ID de usuario %S deleteUidOK=O ID de usuario %S foi eliminado correctamente revokeUidFailed=Produciuse un erro revogando o ID de usuario %S revokeUidOK=O ID de usuario %S revogouse correctamente. Se a súa chave está dispoñíbel nalgún servidor de chaves, é recomendábel que a suba de novo, para que outras persoas poidan ver a revogación. revokeUidQuestion=Está seguro de que quere revogar o ID de usuario %S? deleteUidQuestion=Está seguro de que quere eliminar o ID de usuario %S?\n\nSe enviou a súa chave pública a un servidor de chaves, eliminar un ID de usuario non cambiará nada. Neste caso debería 'Revogar o ID de usuario'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=A chave importouse correctamente importInfoSuccess=✅ importInfoBits=Bits importInfoCreated=Creado importInfoFpr=Pegada dixital importInfoDetails=(Detalles) importInfoNoKeys=Non hai chaves importadas # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=chave pública keyTypePrimary=chave primaria keyTypeSubkey=subchave keyTypePair=par de chaves keyExpiryNever=nunca keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Cifrar keyUsageSign=Asinar keyUsageCertify=Certificar keyUsageAuthentication=Autenticación keyDoesNotExpire=A chave non caduca # Strings in enigmailGenCardKey.xul keygen.started=Agarde mentres se xera a chave ... keygen.completed=Chave xerada. O novo ID da chave é: 0x%S keygen.keyBackup=Fíxose unha copia de seguridade da chave a %S keygen.passRequired=Especifique un contrasinal se quere crear unha copia de seguranza da súa chave fora da súa SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=O PIN que introduciu non coincide; introdúzao de novo cardPin.minLength=O PIN debe ter polo menos %S caracteres ou números cardPin.processFailed=Produciuse un erro ao cambiar o PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Recargando chaves, agarde ... keyserverProgress.uploading=Subindo chaves, agarde ... keyserverTitle.refreshing=Recargar chaves keyserverTitle.uploading=Subir chave # Strings in enigmailSetupWizard passphrase.min8keys=O seu contrasinal debería conter polo menos 8 caracteres! setupWizard.reallyCancel=Está seguro que quere pechar o Asistente de instalación de Enigmail? setupWizard.invalidGpg=O ficheiro especificado non é un executábel de GnuPG. Indique outro ficheiro. setupWizard.specifyFile=Debe especificar polo menos un ficheiro coa chave pública para continuar. setupWizard.installFailed=Parece que a instalación non se realizou correctamente. Tente facela de novo ou instale GnuPG manualmente e localíceo usando o botón Explorar. setupWizard.downloadForbidden=Pola súa seguranza, non descargaremos GnuPG. Visite http://www.gnupg.org/ para descargalo. setupWizard.downloadImpossible=Neste intre non podemos descargar GnuPG. Ténteo máis tarde ou visite http://www.gnupg.org/ para descargalo. setupWizard.hashSumError=O asistente non puido verificar a integridade do ficheiro descargado. Pode que estea roto ou manipulado. Desexa continuar a instalación? setupWizard.importSettingsFile=Especificar a copia de seguridade que cargar setupWizard.invalidSettingsFile=O ficheiro indicado non é unha copia de seguridade dos axustes de Enigmail correcta. setupWizard.gpgConfExists=O ficheiro config de GnuPG xa existe. Desexa sobrescribilo co ficheiro da instalación antiga? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Produciuse un erro mentres se tentaba descargar GnuPG. Comprobe o rexistro da consola para máis información. installGnuPG.installFailed=Produciuse un erro mentres se instalaba GnuPG. Comprobe o rexistro da consola para máis información. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Debe que indicar un nome e un enderezo de correo addUidDlg.nameMinLengthError=O nome debe ter polo menos 5 caracteres addUidDlg.invalidEmailError=Debe especificar un enderezo de correo válido addUidDlg.commentError=Non se permiten chaves nos comentarios # Strings in enigmailCardDetails.js Carddetails.NoASCII=A Smartcards OpenPGP unicamente aceptan caracteres ASCII no nome # network error types errorType.SecurityCertificate=O certificado de seguranza presentado polo servizo web non é válido. errorType.SecurityProtocol=O protocolo de seguranza usado polo servizo web é descoñecido. errorType.Network=Produciuse un erro de rede. # filter stuff filter.folderRequired=Debe seleccionar un cartafol de destino. filter.decryptMove.label=Descifrar permanentemente (Enigmail) filter.decryptCopy.label=Crear unha copia descifrada (Enigmail) filter.decryptMove.warnExperimental=Aviso: a acción do filtro «Descifrar permanentemente» pode provocar a destrución de mensaxes.\n\nRecomendámoslle que probe primeiro o filtro «Crear copia descifrada», comprobe o resultado con coidado e use este filtro unicamente se está satisfeito co resultado. # strings in enigmailConvert.jsm converter.decryptBody.failed=Non foi posíbel descifrar a mensaxe\n«%S».\nDesexa tentalo cun contrasinal diferente ou prefire saltar a mensaxe? converter.decryptAtt.failed=Non foi posíbel descifrar o anexo «%1$S»\nda mensaxe co asunto\n«%2$S».\nDesexa tentalo de novo cun contrasinal distinto ou prefire saltar a mensaxe? saveLogFile.title=Gardar o ficheiro do rexistro # strings in gpg.jsm unknownSigningAlg=Algoritmo de asinado descoñecido (ID: %S) unknownHashAlg=Hash de cifrado descoñecido (ID: %S) # strings in keyRing.jsm keyring.photo=Imaxe keyRing.pubKeyRevoked=A chave %1$S (ID da chave %2$S) revogouse. keyRing.pubKeyExpired=A chave %1$S (ID da chave %2$S) caducou. keyRing.pubKeyNotForSigning=A chave %1$S (ID da chave %2$S) non se pode usar para asinar. keyRing.pubKeyNotForEncryption=A chave %1$S (ID da chave %2$S) non se pode usar para cifrar. keyRing.keyDisabled=A chave %1$S (ID da chave %2$S) está desactivada e non se pode usar. keyRing.keyNotTrusted=A chave %1$S (ID da chave %2$S) non ten suficiente nivel de confianza. Estabeleza o nivel de confianza a «definitiva» para poder asinar con ela. keyRing.keyInvalid=A chave %1$S (ID da chave %2$S) non é válida (p.e: non ten unha auto-sinatura). keyRing.signSubKeysRevoked=Todas as sub-chaves de asinado da chave %1$S (ID da chave %2$S) revogáronse. keyRing.signSubKeysExpired=Todas as sub-chaves de asinado da chave %1$S (ID da chave %2$S) caducaron. keyRing.signSubKeysUnusable=Todas as subchaves de asinado da chave %1$S (ID da chave %2$S) revogáronse, caducaron ou non son utilizábeis. keyRing.encSubKeysRevoked=Revogáronse todas as sub-chaves de cifrado da chave %1$S (ID da chave %2$S). keyRing.encSubKeysExpired=Caducaron todas as sub-chaves de cifrado da chave %1$S (ID da chave %2$S). keyRing.noSecretKey=Non parece ter a chave secreta de %1$S (ID da chave %2$S) no anel de chaves. Non pode usar a chave para asinar. keyRing.encSubKeysUnusable=Todas as sub-chaves de cifrado da chave %1$S (ID da chave %2$S) revogáronse, caducaron ou non son utilizábeis. #strings in exportSettingsWizard.js cannotWriteToFile=Non é posíbel gardar no ficheiro «%S». Seleccione un ficheiro diferente. dataExportError=Produciuse un erro na exportación dos datos. enigmailSettings=Axustes do Enigmail defaultBackupFileName=Exportar-export. specifyExportFile=Especificar o nome do ficheiro para exportar homedirParamNotSUpported=Os parámetros adicionais que configuran a ruta, tales como --homedir e --keyring non se aceptan para exportar/restabelecer os seus axustes. Use métodos alternativos como axustar a variábel de contorno GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=A súa chave %1$S caducará en menos de %2$S days.\n\nRecomendámoslle crear unha nova parella de chaves e configurar as correspondentes contas para usar esta nova chave. expiry.keysExpireSoon=As súas chaves seguintes caducarán en menos de %1$S días:\n%2$S. Recomendámoslle que cree novas chaves e configure as súas contas para usalas. enigmail/lang/gl/help/000077500000000000000000000000001266701624400151265ustar00rootroot00000000000000enigmail/lang/gl/help/compose.html000066400000000000000000000103501266701624400174600ustar00rootroot00000000000000 Axuda de Enigmail: Composición de Mensaxe

Axuda de Enigmail

Usando Enigmail para compoñer mensaxes

  • Menú de Enigmail na ventá de Composición de correo
    • Asinar mensaxe: Activa/Desactiva o envío de correo asinado. O usuario ou usuaria son notificados se a sinatura falla.
    • Cifrar mensaxe: Activar/Desactiva o cifrado a todos os destinatarios ou destinatarias antes do envío. Notifícase en caso de que se produza un erro no cifrado.

      Se Mostrar selección cando sexa necesario está definido na pestana de Preferencias -> Selección de chaves, mostrarase unha listaxe de chaves se hai algún enderezo na lista de destinatarios/as da mensaxe para os/as que non ten chave pública.

      Se a opción de non mostrar nunca o diálogo de selección de chaves OpenPGP está activado na pestana Preferencias -> Selección de chaves, e hai enderezos na lista de destinatarios/as para os que non ten a chave pública, a mensaxe enviaras sen cifrar.

    • Usar PGP/MIME para esta mensaxe: Activa/Desactiva o uso de PGP/MIME para esta mensaxe.

      Se sabe que o(s) destinatario(s) ou destinataria(s) poden ler correo utilizando o formato PGP/MIME, debería utilizalo.

      Esta característica depende da configuración na pestana Preferencias -> PGP/MIME sendo a opción Permitir o uso de PGP/MIME ou Usar sempre PGP/MIME.

    • Opcións predeterminadas para a composición: Submenú.
      • Opcións de Sinatura/Cifrado...: atallo a Configuración das contas -> Opcións OpenPGP.
      • Opcións de envío...: atallo á pestana Preferencias -> Envío.
      • Opcións de selección de chaves...: atallo á pestana Preferencias -> Selección de chaves.
      • Opcións PGP/MIME...: atallo á pestana Preferencias -> PGP/MIME.
    • Desfacer cifrado: Se hai un fallo ao enviar un correo, como o servidor POP que non acepta unha solicitude, Enigmail non pode sabelo, e a mensaxe cifrada seguirá na ventá de composición. Escollendo este elemento do menú desfarase o cifrado/sinatura, volvendo o texto orixial á ventá de composición.
      Como un arranxo temporal, esta opción pode utilizarse para descifrar o texto comentado ao responder mensaxes cifradas. Enigmail debería descifrar a mensaxe automaticamente, mais se falla por algunha razón, pode utilizar este elemento do menú para forzalo.
    • Inserir chave pública: insire a chave pública nun bloque ASCII-armado na posición actual do cursos na ventá de composición. Pediráselle o enderezo da chave que quere inserir. As chaves inseridas desta maneira serán recoñecidas automaticamente ao seren recividas por Enigmail. Despois da inserción da chave, pode tamén escoller asinar/cifrar o correo se é preciso. De todos xeitos, non insira máis dun bloque de chaves nunha mensaxe; simplemente especifique múltiples enderezos de correo, separados por comas ou espazos, cando se lle pregunte.
    • Limpar contrasinais gardados: Limpa os contrasinais gardados en caché. Útil se ten múltiples contrasinais.
    • Axuda: Mostra información de axuda desde o sitio web (esta páxina).

Máis axuda dispoñíbel na páxina web de Axuda de Enigmail

enigmail/lang/gl/help/editRcptRule.html000066400000000000000000000131401266701624400204210ustar00rootroot00000000000000 Axuda de Enigmail: Editar regra OpenPGP

Axuda de Enigmail

Usando o Editor de regras de Enigmail Rules Editor: Editar regra OpenPGP

No Editor de regras, pode especificar configuracións predeterminadas por destinatario/a para a activación de cifrado, sinatura e PGP/MIME, e definir que chave(s) OpenPGP utilizar. Neste diálogo, pode especificar as regras para un único ou unha única destinataria, e para un grupo de destinatarios/as con atributos mois similares.

  • Definiar regras OpenPGP para: Contén os enderezos de correo dos destinos (sen nomes, p.e. so un enderezo como alguen@correo.dominio). Pode especificar varios enderezos de correo, separados por espazos. O enderezo especificado aquí pode consistir só na parte do dominio de xeito que calquera enderezo deste dominio coincidirá, p.e. @correo.dominio funcionará con calquera@correo.dominio, algun@correo.dominio, algunha@correo.dominio, etc.
  • Aplicar regra se o/a destinatario/a ...: Isto modifica a coincidencia dos enderezos de correo. Se se introducen múltiples enderezos, a configuración aplicaráselles a todos eles. Os seguintes exemplos están baseados en calquera@correo.dominio introducidos no seguinte campo de Regras OpenPGP.
    • É exactamente: con esta configuración, a regra só se dispara con correos a calquera@correo.dominio (exacto, coincidencia sensíbel a maiúsculas)
    • Contén: con esta configuración, calquera correo que conteña a cadea coincide p.e son.calquera@correo.dominio ou calquera@correo.dominio.net
    • Comeza por: con esta configuración, calquera correo que comece coa cadea coincidirá, p.e. calquera@correo.dominio.net, calquera@correo.dominio-nome.com.
    • Remata con: con esta configuración, calquera enderezo que remate coa cadea coincidirá, p.e. soncalquera@correo.dominio, nonson.calquera@correo.dominio.
  • Continuar coa seguinte regra que coincida co enderezo
    Activando esta función permitirase definir unha regra sen ter que especificar un ID de chave no campo Usar as seguintes chaves OpenPGP:, de xeito que o enderezo se utilizar para buscar unha chave no momento do envío. Tamén se procesarán outras regras para o(s) mesmo(s) enderezos igualmente.
  • Non comprobar outras regras para os enderezos que coinciden
    Activando esta función párase o procesamento de outras regras para un enderezo que xa coincidiu; p.e. o procesado de regras continúa co seguinte destinatario
  • Usar as seguintes chaves OpenPGP:
    Use o botón Seleccionar chave(s).. para seleccionar as chaves dos/as destinatarios/as que utilizar para o cifrado. Como na anterior acción, non se procesan máis regras para enderezos que xa coincidiron.
  • Predeterminado para sinatura: activa ou desactiva a sinatura de mensaxes. Isto afirmar ou anula o que especificou na ventá de composición de mensaxe. Os valores son:
    • Nunca: desactiva a sintaura, aínda que estea activada na ventá de composición da mensaxe (anula outros valores)
    • Si, se está seleccionado na Composición da mensaxe: deixa a sinatura tal e como se especificou na ventá de composición da mensaxe
    • Sempre: activa a sinatura, aínda que non estea activada na ventá de composición da mensaxe
Esta configuració de sinatura aplícase para todas as regras que coincidan. Se unha das regras desactiva a sinatura, a mensaxe non se asina, a pesar do que especifiquen outras regras Sempre.
  • Cifrado: activa ou desactiva o cifrado de mensaxes. As configuracións permitidas e o seu significado é o mesmo que para a sinatura.
  • PGP/MIME: activar ou desactivar o uso da codificación de mensaxes PGP/MIME (RFC 3156). Se PGP/MIME está desactivado, as mensaxes codifícanse usando "PGP en liña". Os valores permitidos e os seus significados son os mesmos que para a sinatura.

As regras son procesadas no orde mostrado na lista no Editor de regras OpenPGP. Cando unha regras coincide con un destinatario e contén un ID de chave OpenPGP, ademais de utilizar o ID de chave especificado, o destinatario non se utiliza para procesar máis regras.


Pode atopar máis información de axuda dispoñíbel na páxina de configuracións por-destinatario/a de Enigmail

enigmail/lang/gl/help/initError.html000066400000000000000000000045361266701624400200010ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/gl/help/messenger.html000066400000000000000000000110061266701624400200020ustar00rootroot00000000000000 Axuda de Enigmail: Lectura de mensaxes

Axuda de Enigmail

Usando Enigmail para ler o correo

  • Botón Descifra na ventá principal do correo
    Este botón pode utilizarse para diferentes propósitos: descifrar, verificar, ou importar chaves públicas. Normalmente o descifrado/verificación sucede de xeito automático, mais isto pode desactivarse a través das preferencias. De todos xeitos, se isto falla, normalmente aparecerá unha mensaxe de erro na liañ de estdo de Enigmail. Se fai clic no botón Descifrar, poderá ver unha mensaxe de erro máis detallada, incluída a saída do comando GnuPG.
  • Iconas do lápis e a chave na cabeceira da mensaxe
    As iconas do lápis e a chave ca cabeceira da mensaxe indican que a mensaxe que está a ler está asinada e/ou cifrada e que a sinatura é correcta, p.e. a mensaxe non mudou desde que foi asinada. Se a mensaxe tivese mudado, a icona do lápis mudaría nun láspis roto para indicar que a sinatura non é correcta. Se fai clic co botón dereito sobre o lápis ou a chave aparecerá un menú coas seguintes opcións:
    • Información de seguridade OpenPGP: permite ver o estado da saída de GnuPG para esta mensaxe.
    • Copiar información de seguridade OpenPGP: copia o estado da saída de GnuPG ao portarretallos; para pegala nunha mensaxe de resposta, etc.
    • Ver ID de foto OpenPGP: permite ver o ID de fotoda persoa que enviou a mensaxe, se é que tiña unha foto integrada na súa chave pública (Esta opción só estará activada se hai un ID de foto na chave.)
    • Información de seguridade S/MIME: permite ver a información sobre seguridade S/MIME para a mensaxe.

    Se non ten definido keyserver-options auto-key-retrieve no seu ficheiro gpg.conf e quere ler unha mensaxe asinada ou cifrada verá unha icona con un lápis na área da cabeceira con un símbolo de interrogación enriba, a liña de estado de Enigmail na cabeceira mostrará a mensaxe Parte da mensaxe asinada; prema na icona do lápis para máis detalles e a mensaxe no panel da mensaxe mostrará todos os bloques de sinaturas e indicadores de bloques de mensaxe OpenPGP.

    Tamén pode ver isto se ten definido keyserver-options auto-key-retrieve no seu ficheiro gpg.conf e a chave OpenPGP non está dispoñíbel no seu sevidor de chaves.

    Premendo na icona do lapis e símbolo de interrogación aparecerá unha ventá advertindo que a chave non está dispoñíbel no seu anel de chaves. Premendo en OK aparecerá outra ventá con unha lista de servidores de chaves dos cales pode seleccionar desde onde descargar a chave pública da persoa que lle enviou o correo.

    Para configurar a lista de servidores de chaves que quere usar, vaia á pestana Enigmail -> Preferencias -> Básico e introduza os enderezos dos servidores de chaves na caixa Servidor(es) de chaves: separados por comas. O primeiro servidor da lista será o que se utilice como servidor de chaves predeterminado.

  • Abrir ficheiros adxuntos cifrados / importar chaves OpenPGP adxuntas
    Anexos nomeados *.pgp, *.asc e *.gpg son recoñecidos como anexos que poden ser manexados especialmente por Enigmail. Facendo clic co botón dereito neses ficheiros adxuntos actívanse dous elementos de menú especiais no menú contextual: Descifrar e abrir e Descifrar e gardar. Use estes dous elementos do menú se quere que Enigmail descifre un anexo antes de abrilo ou gardalo. Se un anexo é recoñecido como un ficheiro de chave OpenPGP, ofreceráselle importar as chaves no seu anel de chaves.

Pode consultar máis información na páxina web de axuda de Enigmail

enigmail/lang/gl/help/rulesEditor.html000066400000000000000000000065261266701624400203260ustar00rootroot00000000000000 Axuda de Enigmail: Editor de regras

Axuda de Enigmail

Usando o Editor de regras de Enigmail

No Editor de regras, pode especificar as opcións predeterminadas por destinatario/a para activar cifrado, sinatura e PGP/MIME, e definir que chave(s) OpenPGP utilizar. Cada regra consiste en 5 campos e está representada por unha soa liña:

  • Correo: os campos de remite do(s) correo(s) o Para:, Cc: e Cco:the To:, Cc: and Bcc: que teñen que coincidir. A coincidencia funciona en subcadeas (Pódense consultar máis detalles no diálogo de edición da regra)
  • Chave(s) OpenPGP: unha lista de ID's de chaves para utilizar cos enderezos destinatarios
  • Asinar: activa ou desactiva a sinatura de mensaxes. Isto afirma ou anula o que especificou na ventá de composición da mensaxe. Os valores son:
    • Nunca: desactiva a sinatura, aínda que estea activa na ventá de composición da mensaxe (anular outros valores)
    • Posíbel: deixa a sinatura tal e como se especificou na ventá de composición da mensaxe.
    • Sempre: activa a sinatura, aínda que non estea activada na ventá de composición da mensaxe
Estas configuracións da sinatura aplícanse para todas as regras que coincidan. Se algunha das regras desactiva a sinatura, a mensaxe non se asinará, a pesar do que digan outras regras Sempre.
  • Cifrar: activa ou desactiva o cifrado de mensaxes. As configuracións permitidas e o seu significado é o mesmo que para as sinaturas.
  • PGP/MIME: activa ou desactiva o uso da codificación de mensaxes PGP/MIME (RFC 3156). Se PGP/MIME está desactivado, as mensaxes codifícanse usando "PGP en-liña". Os valores permitidos e o seu significado son os mesmos que para a sinatura.

As regras procésanse no orde que se mostra na lista. Cando unha regra coincide co/a destinatario/a e contén un ID de chave OpenPGP, ademais de usar o ID de chave especificado, o/a destinatario/a non se terá en conta ao procesar máis regras.

Nota: O editor de regras aínda non está completo. É posíbel escribir regras máis avanzadas editando directamente o ficheiro de regras (estas regras non poderás ser editadas despois no editor de regras) Máis información sobre como editar directamente o ficheiro está dispoñíbel na páxina web de Enigmail


Pode atopar máis información de axuda na páxina web de Axuda de Enigmail

enigmail/lang/gl/help/sendingPrefs.html000066400000000000000000000047771266701624400204620ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/hr/000077500000000000000000000000001266701624400142055ustar00rootroot00000000000000enigmail/lang/hr/am-enigprefs.properties000066400000000000000000000002051266701624400206750ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Nizovi koriÅ¡teni u Mozilla upravitelju raÄuna\n\nOpenPGP sigurnost enigmail/lang/hr/enigmail.dtd000066400000000000000000001374021266701624400164760ustar00rootroot00000000000000 OpenPGP sigurnost)"> NAPOMENA: Generiranje kljuÄeva može trajati nekoliko minuta. Ne izlazite iz aplikacije dok se kljuÄevi generiraju. Aktivno pregledavanje interneta ili provoÄ‘enje operacija koje su zahtjevne za disk prilikom generiranja kljuÄeva će napuniti 'bazen nasumiÄnosti' i ubrzati proces. Bit će te obavijeÅ¡teni kad je generiranje kljuÄeva gotovo."> NAPOMENA: Generiranje kljuÄa može potrajati nekoliko minuta. Ne izlazite iz aplikacije dok se kljuÄ generira. Bit će te obavijeÅ¡teni kad je deneriranje zavrÅ¡eno."> Obavijest: Enigmail će uvijek provjeravati potpise na email-ovima za svaki raÄun i identitet, bez obzira da li je omogućen ili ne"> javni kljuÄ je za druge da Vam poÅ¡alju enkriptirane email-ove. Možete ga distribuirati svima."> privatni kljuÄ je za Vas tako da možete dekriptirati i slati potpisane email-ove. Ne bi ga trebali dati nikom."> privatni kljuÄ je za Vas da bi dekriptirali ove email-ove i slali potpisane email-ove. Ne bi ga trebali dati nikom. Da bi osigurali VaÅ¡ privatni kljuÄ, bit ćete upitani za lozinku u sljedeća dva dijaloga."> lozinka je lozinka za zaÅ¡titu VaÅ¡eg privatnog kljuÄa. SprijeÄava zloupotrebu VaÅ¡eg privatnog kljuÄa."> nisu preporuÄeni."> Od Vas će se tražiti unos VaÅ¡e lozinke za to."> izvezite svoje podatke sa svog starog raÄunala koristeći Äarobnjak za sigurnosne kopije iz Enigmail postavki uvezite podatke na novo raÄunalo koristeći ovaj Äarobnjak. "> Hvala Vam Å¡to koristite Enigmail."> izvezite svoje podatke sa starog raÄunala koristeći ovaj Äarobnjak uvezite podatke na novo raÄunalo koristeći ÄŒarobnjak za postavljanje. "> enigmail/lang/hr/enigmail.properties000066400000000000000000001122141266701624400201110ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail upozorenje enigConfirm=Enigmail potvrda enigError=Enigmail greÅ¡ka enigPrompt=Enigmail prompt dlgYes=&Da dlgNo=&Ne dlgKeepSetting=Zapamti moj odgovor i ne pitaj me viÅ¡e dlgNoPrompt=Ne pokazuj mi ovaj okvir ponovno dlg.button.delete=&ObriÅ¡i dlg.button.cancel=&Otkaži dlg.button.close=&Zatvori dlg.button.continue=Nastavi dlg.button.skip=&PreskoÄi dlg.button.overwrite=&PrepiÅ¡i dlg.button.view=&Pregledaj dlg.button.retry=&PokuÅ¡aj ponovno dlg.button.ignore=&Ignoriraj repeatPrefix=\n\nOvo upozorenje će se ponoviti joÅ¡ %S repeatSuffixSingular=put. repeatSuffixPlural=puta. noRepeat=\n\nOvo upozorenje se neće ponavljati dok ne nadogradite Enigmail. pgpNotSupported=Izgleda da koristite Enigmail zajedno s PGP 6.x\n\nNažalost, PGP 6.x ima niz problema koji sprijeÄavaju Enigmail da radi ispravno. Zbog toga Enigmail ne podržava PGP 6.x viÅ¡e; molimo Vas da se prebacite na GnuPG (GPG) umjesto toga.\n\nAko Vam treba pomoć pri prebacivanju na GnuPG, provjerite dio Enigmail naslovne stranice na kojem se nalazi Pomoć. initErr.howToFixIt=Da bi koristili Enigmail morate imati GnuPG. Ako joÅ¡ niste instalirali GnuPG, najjednostavniji naÄin da to napravite je koristeći "ÄŒarobnjak postavljanja" gumb niže. initErr.setupWizard.button=&ÄŒarobnjak postavljanja passphraseCleared=Lozinka je oÄišćena. cannotClearPassphrase=Koristite ne standardni alat (npr. gnome-keyring) za upravljanje lozinkama. Zbog toga Äišćenje lozinke nije moguće iz Enigmail-a. noPhotoAvailable=Slika nije dostupna debugLog.title=Enigmail zapis o otklanjanju pogreÅ¡ke error.photoPathNotReadable=Putanja '%S' slike nije Äitljiva # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Ova nova verzija Enigmail-a ima znaÄajne promjene u rukovanju postavki i opcija. PokuÅ¡ali smo prenijeti stare postavke na ovu novu verziju, no ne možemo pokriti sve sluÄajeve automatski. Molimo Vas da provjerite nove postavke i opcije. enigmailCommon.checkPreferences=Provjeri postavke... preferences.defaultToPgpMime=Promjenili smo zadano enkodiranje poruka u Enigmail-u sa Inline-PGP-a u PGP/MIME. PreporuÄamo Vam da to zadržite kao zadano.\n\nAko i dalje želite koristiti Inline-PGP kao zadani, možete to napraviti u postavkama raÄunaa, pod OpenPGP sigurnost. usingVersion=Koristim Enigmail verziju %S usingAgent=Koristim %1$S izvrÅ¡nu datoteku %2$S za enkripciju i dekripciju agentError=POGREÅ KA: Pristup Enigmime usluzi nije uspio! accessError=PogreÅ¡ka u pristupanju Enigmail usluzi onlyGPG=Generiranje kljuÄeva radi jedino s GnuPG-om (ne s PGP-om)! keygenComplete=Generiranje kljuÄa zavrÅ¡eno! Identitet <%S> će biti koriÅ¡ten za potpisivanje. revokeCertRecommended=PreporuÄamo stvaranje certifikata za opoziv za VaÅ¡ kljuÄ. Ovaj certifikat se može iskoristiti za poniÅ¡tavanje VaÅ¡eg kljuÄa u sluÄaju da se VaÅ¡ tajni kljuÄ izgubi ili postane kompromitiran. Želite li stvoriti certifikat za opoziv sad? keyMan.button.generateCert=&Generiraj certifikat genCompleteNoSign=Generiranje kljuÄa zavrÅ¡eno! genGoing=Generiranje kljuÄa je već u tijeku! passNoMatch=Lozinke se ne podudaraju; molimo Vas da ih ponovno unesete passCheckBox=OznaÄite kvaÄicom kutiju ako ne odreÄ‘ujete lozinku za kljuÄ passUserName=Molimo Vas da odredite korisniÄko ime za ovaj identitet keygen.missingUserName=Nije odreÄ‘eno ime za odabranu državu/identitet. Molimo unesite vrijednost u polje "VaÅ¡e ime" u postavkama raÄunama. keygen.passCharProblem=Koristite posebne znakove u svojoj lozinci. Nažalost, ovo može prouzroÄiti probleme drugim aplikacijama. PreporuÄamo da odaberete lozinku koja se sastoji jedino od ovih znakova:\na-z A-Z 0-9 /.;:,!?(){}[]%* passSpaceProblem=Zbog tehniÄkih razloga VaÅ¡a lozinka ne može zapoÄeti ili zavrÅ¡iti s razmakom. changePassFailed=Promjena lozinke nije uspjela. keyConfirm=Generiraj javni i privatni kljuÄ za '%S'? keyMan.button.generateKey=&Generiraj kljuÄ keyAbort=Prekini generiranje kljuÄa? keyMan.button.generateKeyAbort=&Prekini generiranje kljuÄa keyMan.button.generateKeyContinue=&Nastavi generiranje kljuÄa expiryTooLong=Ne možete stvoriti kljuÄ koji istiÄe za viÅ¡e od 100 godina. expiryTooLongShorter=Ne možete stvoriti kljuÄ koji istiÄe za viÅ¡e od 90 godina. expiryTooShort=VaÅ¡ kljuÄ mora biti valjan za najmanje jedan dan. dsaSizeLimit=DSA kljuÄevi za potpisivanje su ograniÄeni na 3072 bita. VeliÄina kljuÄa će biti smanjena sukladno. keyGenFailed=Generiranje kljuÄa nije uspjelo. Molimo Vas provjerite Enigmail konzolu (Izbornik Enigmail > Otklanjanje pogreÅ¡ki Enigmail-a) za detalje. setKeyExpirationDateFailed=Datum isteka nije mogao biti promjenjen # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail sigurnosne informacije\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Privitci ove poruke nisu potpisani ili enkriptirani*\n\n possiblyPgpMime=Potencionalno PGP/MIME enkriptirana ili potpisana poruka; kliknite gumb Dekriptiraj za provjeru noDecrypted=Nema dekriptirane poruke za pohranu!\nUpotrijebite Pohrani naredbu iz izbornika Datoteka noMessage=Nema poruke za pohranu! useButton=Molimo Vas kliknite gumb Dekriptiraj kako bi dekriptirali poruku saveHeader=Enigmail: Pohrani dekriptiranu poruku saveAttachmentHeader=Enigmail: Pohrani dekriptirani privitak noTempDir=Nije pronaÄ‘ena privremena mapa u koju se piÅ¡e\nMolimo Vas da postavite TEMP varijablu attachmentPgpKey=ÄŒini se da je privitak '%S' koji otvarate datoteka OpenPGP kljuÄa.\n\nKliknte 'Uvezi' da bi uveli kljuÄeve ili 'Pregledaj' da bi pregledali sadržaj datoteke u prozoru preglednika beginPgpPart=********* *POÄŒNI ENKRIPTRANI ili POTPISANI DIO* ********* endPgpPart=********** *ZAVRÅ I ENKRIPTIRANI ili POTPISANI DIO* ********** notePartEncrypted=Enigmail: *Dijelovi poruke NISU potpisani ili enkriptirani* noteCutMessage=Enigmail: *PronaÄ‘eni viÅ¡estruki blokovi poruke -- dekripcija/provjera prekinuta* decryptOkNoSig=Upozorenje!\n\nDekripcija je provedena uspjeÅ¡no, ali potpisa nije mogao biti provjeren toÄno msgOvl.button.contAnyway=&Svejedno nastavi signature.verifiedOK=Potpis za privitak %S je uspjeÅ¡no provjeren signature.verifyFailed=Potpis za privitak %S nije moguće provjeriti attachment.noMatchToSignature=Nije moguće usporediti privitak '%S' s potpisnom datotekom attachment.noMatchFromSignature=Nije moguće usporediti potpisnu datoteku '%S' s privitkom fixBrokenExchangeMsg.failed=Popravak poruke nije uspio. keysToExport=Odaberite OpenPGP kljuÄeve za umetanje keysToUse=Odabeirte OpenPGP kljuÄ(eve) za uporabu za %S pubKey=Javni kljuÄ za %S\n windowLocked=Prozor stvaranja poruke je zakljuÄan; slanje otkazano sendUnencrypted=Inicijalizacija Enigmail-a nije uspjela.\nPoslati neenkriptiranu poruku? composeSpecifyEmail=Molimo Vas da odredite svoju primarnu email adresu koja će biti koriÅ¡tena pri odabiru potpisnog kljuÄa za odlazne poruke.\nAko ostavite prazno, OD adresa poruke će biti iskoriÅ¡tena za odabir potpisnog kljuÄa. sendingHiddenRcpt=Ova poruka ima BCC (slijepe kopije - skrivene) primatelje. Ukoliko je ova poruka enkriptirana moguće je sakriti BCC primatelje ali korisnici nekih proizvoda (npr. PGP Corp.) neće biti u mogućnosti dekriptirati poruku. S tim na umu, savjetujemo Vam da izbjegavate BCC email-ove kad radite s enkriptiranim porukama. sendWithHiddenBcc=Sakrij BCC primatelje sendWithShownBcc=Enkriptiraj normalno sendingNews=Operacija Enkriptiranog slanja prekinuta.\n\nOva poruka ne može biti dekriptirana jer postoje grupe primatelja. Molimo Vas da ponovno poÅ¡aljete poruku bez enkripcije. sendToNewsWarning=Upozorenje: poslati ćete neenkriptirani email grupi primatelja.\n\nOvo se ne potiÄe jer ima smisla jedino ako svi Älanovi grupe mogu dekriptirati poruku, odnosno poruka mora biti enkriptirana s kljuÄevima svih Älanova grupe. PoÅ¡aljite ovu poruku jedino ako znate toÄno Å¡to radite.\n\nNastaviti? hasHTML=HTML mail upozorenje:\nOva poruka može sadržavati HTML, Å¡to bi moglo prouzroÄiti neuspjeh potpisivanja/enkripcije. Da bi se to izbjeglo, u budućnosti bi trebali pritisnuti SHIFT tipku kad klikćete na Stvori/Odgovori gumb tako da poÅ¡aljete potpisan email.\nAko potpisujete email pod zadano, trebali bi odznaÄiti 'Stvori poruku u HTML-u' tako da trajno onemogućite HTML mail za ovaj raÄun. strippingHTML=Poruka sadrži HTML informacije formatiranja koje će biti izgubljene prilikom pretvorbe u obiÄan tekst za potpisivanje/enkripciju. Želite li nastaviti? msgCompose.button.sendAnyway=&PoÅ¡alji poruku svejedno attachWarning=Privitci ovoj poruci nisu lokalni, ne mogu biti enkriptirani. Da bi enkriptirali te privitke prvo ih pohranite kao lokalne datoteke, a zatim dodajte kao privitke. Želite li svejedno poslati poruku? quotedPrintableWarn=Omogućili ste enkodiranje 'citirano - pogodno za ispis' za poruke koje se Å¡alju. Ovo može rezultirati netoÄnom dekripcijom i/ili provjerom VaÅ¡e poruke.\nŽelite li iskljuÄiti slanje takvih poruka sad? minimalLineWrapping=Postavili ste omatanje linije na %S znakova. Za ispravnu enkripciju i/ili potpisivanje, ova vrijednost mora biti najmanje 68.\nŽelite li promjeniti omatanje linije na 68 znakova sad? warning=Upozorenje signIconClicked=RuÄno ste modificirali potpisivanje, stoga, dok stvarate ovu poruku, (de)aktiviranje potpisivanja ne ovisi viÅ¡e o (de)aktiviranju enkripcije. pgpMime_sMime.dlg.text=Omogućili ste PGP/MIME i S/MIME zajedno. Nažalost nije moguće podržati oba protokola u isto vrijeme. Molimo Vas da odaberete želite li koristiti PGP/MIME ili S/MIME. pgpMime_sMime.dlg.pgpMime.button=Koristi &PGP/MIME pgpMime_sMime.dlg.sMime.button=Koristi &S/MIME errorKeyUnusable=Email adresa ili ID kljuÄa '%S' ne može biti spojena s važećim, ne isteklim OpenPGP kljuÄem.\nMolimo Vas da osigurate da imate važeći OpenPGP kljuÄ, te da VaÅ¡e postavke pokazuju na taj kljuÄ. errorOwnKeyUnusable=ID '%S' kljuÄa konfiguriranog za trenutni identitet ne daje iskoristiv OpenPGP kljuÄ.\n\nUvjerite se da imate važeći, ne istekli OpenPGP kljuÄ i da postavke VaÅ¡eg raÄuna pokazuju na taj kljuÄ.\nAko VaÅ¡ kljuÄ nije istekao, provjerite jeste li postavili povjerenje prema vlasniku na puno ili ultimativno. msgCompose.cannotSaveDraft=PogreÅ¡ka prilikom spremanja predloÅ¡ka msgCompose.internalEncryptionError=Interna pogreÅ¡ka: obećana enkripcija onemogućena msgCompose.internalError=DoÅ¡lo je do interne pogreÅ¡ke. msgCompose.toolbarTxt.signAndEncrypt=Ova poruka će biti potpisana i enkriptirana msgCompose.toolbarTxt.signOnly=Ova poruka će biti potpisana msgCompose.toolbarTxt.encryptOnly=Ova poruka će biti enkriptirana msgCompose.toolbarTxt.noEncryption=Ova poruka će biti nepotpisana i neenkriptirana msgCompose.toolbarTxt.disabled=Enigmail je onemogućen za odabrani identitet msgCompose.toolbarTxt.smime=S/MIME je omogućen - potencijalno konfliktan s Enigmail-om msgCompose.toolbarTxt.smimeOff=- S/MIME se zbog toga ne koristi. msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME je omogućen - Enigmail se zbog toga ne koristi msgCompose.toolbarTxt.smimeNoDraftEncryption=- predloÅ¡ci neće biti enkriptirani msgCompose.toolbarTxt.smimeConflict=Enigmail se ne koristi jer je S/MIME trenutno omogućen. Molimo ugasite S/MIME potpisivanje i/ili S/MIME enkripciju te omogućite Enigmail enkripciju msgCompose.encryptedSubjectStub=Enkriptirana poruka msgCompose.detailsButton.label=Detalji... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Operacija slanja prekinuta.\n\n # details: keyNotTrusted=Nema dovoljno povjerenja za kljuÄ '%S' keyNotFound=KljuÄ '%S' nije pronaÄ‘en keyRevoked=KljuÄ '%S' opozvan keyExpired=KljuÄ '%S' je istekao statPGPMIME=PGP/MIME statSigned=POTPISANO statEncrypted=ENKRIPTIRANO statPlain=NEPOTPISANO i NEENKRIPTIRANO offlineSave=Pohrani %1$S poruku za %2$S u mapi neposlanih poruka? onlineSend=PoÅ¡alji %1$S poruku %2$S? encryptKeysNote=Napomena: poruka je enkriptirana za sljedeće ID-e korisnika / kljuÄeve: %S hiddenKey= signFailed=PogreÅ¡ka u Enigmail-u; Enkripcija/potpisivanje nije uspjelo; poÅ¡alji neenkriptiranu poruku? msgCompose.button.sendUnencrypted=&PoÅ¡alji neenkriptiranu poruku recipientsSelectionHdr=Odaberi primatelje za enkripciju configureNow=JoÅ¡ niste postavili Enigmail sigurnost za odabrani identitet. Želite li to uÄiniti sad? # encryption/signing status and associated reasons: encryptMessageAuto=Enkriptiraj poruku (automatski) encryptMessageNorm=Enkriptiraj poruku signMessageAuto=PotpiÅ¡i poruku (automatski) signMessageNorm=PotpiÅ¡i poruku encryptOff=Enkripcija: ISKLJUÄŒENA encryptOnWithReason=Enkripcija: UKLJUÄŒENA (%S) encryptOffWithReason=Enkripcija: ISKLJUÄŒENA (%S) encryptOn=Enkripcija: UKLJUÄŒENA signOn=Potpisivanje: UKLJUÄŒENO signOff=Potpisivanje: ISKLJUÄŒENO signOnWithReason=Potpisivanje: UKLJUÄŒENO (%S) signOffWithReason=Potpisivanje: ISKLJUÄŒENO (%S) reasonEnabledByDefault=omogućeno pod zadano reasonManuallyForced=prisiljeno ruÄno reasonByRecipientRules=prisiljeno po pravilima primatelja reasonByAutoEncryption=prisiljeno po auto enkripciji reasonByConflict=zbog sukoba u pravilima primatelja reasonByEncryptionMode=zbog enkripcijskog naÄina rada reasonSmimeConflict=jer je S/MIME omogućen umjesto toga # should not be used anymore: encryptYes=Poruka će biti enkriptirana encryptNo=Poruka neće biti enkriptirana # should not be used anymore: signYes=Poruka će biti potpisana signNo=Poruka neće biti potpisana # PGP/MIME status: pgpmimeNormal=Protokol: PGP/MIME inlinePGPNormal=Protokol: Inline PGP pgpmimeAuto=Protokol: PGP/MIME (automatski) inlinePGPAuto=Protokol: Inline PGP (automatski) # should not be used anymore pgpmimeYes=PGP/MIME će biti koriÅ¡ten pgpmimeNo=Inline PGP će biti koriÅ¡ten # Attach own key status (tooltip strings): attachOwnKeyNo=VaÅ¡ kljuÄ neće biti privijen attachOwnKeyYes=VaÅ¡ kljuÄ Ä‡e biti privijen attachOwnKeyDisabled=VaÅ¡ kljuÄ ne može biti privijen. Morate odabrati specifiÄan kljuÄ\nu OpenPGP sekciji Postavki raÄuna kako bi omogućili ovu znaÄajku. rulesConflict=Otkrivena konfliktna pravila po primatelju\n%S\n\nPoÅ¡alji poruku s ovim postavkama? msgCompose.button.configure=&Postavi msgCompose.button.send=&PoÅ¡alji poruku msgCompose.button.save=&Spremi poruku # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Potreban je javni kljuÄ %S da bi verificirali potpis keyUsed=Javni kljuÄ %S koriÅ¡ten za provjeru potpisa clickDecrypt=; kliknite Dekriptiraj gumb clickDecryptRetry=; kliknite Dekriptiraj gumb da bi pokuÅ¡ali ponovno clickDetailsButton=; kliknite na 'Detalji' za viÅ¡e informacija clickImportButton=; kliknite na 'Uvezi kljuÄ' da bi preuzeli kljuÄ keyTypeUnsupported=; vrsta kljuÄa nije podržana od strane VaÅ¡e verzije GnuPG-a msgPart=Dio poruke %S msgSigned=potpisan msgSignedUnkownKey=potpisano nepoznatim kljuÄem msgEncrypted=enkriptiran msgSignedAndEnc=potpisan i enkriptiran unverifiedSig=Neverificiran potpis incompleteDecrypt=Dekripcija nepotpuna needKey=GreÅ¡ka - nije pronaÄ‘en odgovarajući privatni/tajni kljuÄ za dekripciju poruke failedDecrypt=GreÅ¡ka - dekripcija nije uspjela badPhrase=GreÅ¡ka - loÅ¡a lozinka failedDecryptVerify=GreÅ¡ka - dekripcija/verifikacija nije uspjela viewInfo=; Pogledajte > Informacije o sigurnosti poruke za detalje decryptedMsg=Dekriptiraj poruku decryptedMsgWithFormatError=Dekriptirana poruka (obnovljen potrgani PGP email format vjerovatno uzrokovan starim Exchange poslužitelje, tako da bi rezultat mogao biti nesavrÅ¡en za Äitanje) usedAlgorithms=KoriÅ¡teni algoritmi: %S i %S # strings in pref-enigmail.js oldGpgVersion14=Enigmail inicijalizacija nije uspjela.\n\nKoristite GnuPG verziju %S, koja viÅ¡e nije podržana. Enigmail zahtjeva GnuPG verziju 2.0.7 ili noviju. Molimo Vas da nadogradite svoju GnuPG instalaciju ili Enigmail neće raditi. locateGpg=Lociraj GnuPG program invalidGpgPath=GnuPG ne može biti izvrÅ¡en s danom putanjom. Enigmail je deaktiviran dok ne promjenite putanju za GnuPG ili ne pokrenete ponovno aplikaciju. warningsAreReset=Sva upozorenja su ponovno postavljena. prefs.gpgFound=GnuPG je pronaÄ‘en u %S prefs.gpgNotFound=Nije pronaÄ‘en GnuPG prefs.warnAskNever=Upozorenje: aktiviranje ove opcije će rezultirati neenkriptiranim email-ovima bez daljnjih informacija u sluÄaju nedostatka kljuÄa za nekog od primatelja -- Enigmail Vas neće obavijestiti ako se to dogodi! prefs.warnIdleTimeForUnknownAgent=Nije moguće spajanje s gpg-agent. Možda VaÅ¡ sustav koristi specijalizirani alat za upravljanje lozinkama (npr. gnome-keyring, seahorse-agent, KDE wallet manager...). Nažalost Enigmail ne može kontrolirati timeout lozinki za alat koji koristite. Zbog toga su pripadajuće postavke timeout-a u Enigmailu zanemarene. prefEnigmail.oneKeyserverOnly=PogreÅ¡ka - možete odrediti samo jedan poslužitelj kljuÄeva za automatsko preuzimanje OpenPGP kljuÄeva koji nedostaju. enterAdminPin=Molimo unesite administratorski PIN VaÅ¡e SmartCard enterCardPin=Molimo unesite svoj SmartCard PIN notInit=PogreÅ¡ka - Enigmail usluga joÅ¡ nije inicijalizirana badCommand=PogreÅ¡ka - naredba enkripcije nije uspjela cmdLine=naredbena linija i izlaz: notRequired=PogreÅ¡ka - enkripcija nije zahtjevana notComplete=PogreÅ¡ka - generiranje kljuÄa joÅ¡ nije zavrÅ¡eno invalidEmail=PogreÅ¡ka - pogreÅ¡na email adresa ili adrese noPassphrase=PogreÅ¡ka - nije dana lozinka noPGPblock=PogreÅ¡ka - nije pronaÄ‘en valjan oklopljeni OpenPGP blok podataka unverifiedReply=UvuÄeni dio poruke (odgovor) je vjerovatno modificiran keyInMessageBody=PronaÄ‘en kljuÄ u tjelu poruke. Stisnite 'Uvezi kljuÄ' kako bi uvezli kljuÄ sigMismatch=PogreÅ¡ka - potpisi se ne slažu cantImport=PogreÅ¡ka pri uvozu javnog kljuÄa\n\n doImportOne=Uvezi %1$S (%2$S)? doImportMultiple=Uvezi sljedeće kljuÄeve?\n\n%S previewFailed=Ne mogu proÄitati datoteku javnog kljuÄa. # Strings used in errorHandling.jsm sc.wrongCardAvailable=SmartCard %1$S pronaÄ‘ena u VaÅ¡em ÄitaÄu ne može biti koriÅ¡tena za obradu poruke.\nMolimo umetnite svoju SmartCard %S i ponovite operaciju. sc.insertCard=Operacija zahtjeva VaÅ¡u SmartCard %S.\nMolimo umetnite zahtjevanu SmartCard i ponovite operaciju. sc.removeCard=Operacija ne zahtjeva SmartCard u ÄitaÄu.\nMolimo uklonite svoju SmartCard i ponovite operaciju. sc.noCardAvailable=Nije pronaÄ‘ena nijedna SmartCard u VaÅ¡em ÄitaÄu\nMolimo Vas umetnite SmartCard i ponovite operaciju. sc.noReaderAvailable=VaÅ¡oj SmartCard se ne može pristupiti\nMolimo spojite VaÅ¡ SmartCard ÄitaÄ, umetnite karticu i ponovite operaciju. keyError.keySpecNotFound=Email adresa "%S" ne može biti usporeÄ‘ena sa kljuÄem na VaÅ¡em privjesku kljuÄeva. keyError.keyIdNotFound=Konfigurirani ID "%S" kljuÄa ne može biti pronaÄ‘en na VaÅ¡em privjesku kljuÄeva. keyError.resolutionAction=Molimo odaberite ispravan kljuÄ u OpenPGP odjelu u Postavkama raÄuna. missingPassphrase=Nedostaje lozinka errorHandling.gpgAgentInvalid=VaÅ¡ sustav koristi verziju gpg-agent koja ne odgovara VaÅ¡oj GnuPG verziji. errorHandling.gpgAgentError=GnuPG je prijavio pogreÅ¡ku u komunikaciji s gpg-agent -om (komponenta GnuPG-a). errorHandling.dirmngrError=GnuPG je prijavio pogreÅ¡ku u komunikaciji s dirmngr-om (komponenta GnuPG-a). errorHandling.pinentryError=GnuPG ne može poslati upit za VaÅ¡u lozinku putem unosa pin-a. errorHandling.readFaq=Ovo je greÅ¡ka sustava ili konfiguracije koja onemogućava da Enigmail radi ispravno i ne može biti popravljena automatski.\n\nPreporuÄamo da se posavjetujete s naÅ¡om stranicom https://enigmail.net/faq. gpgNotFound=Nije pronaÄ‘en GnuPG program '%S'.\nBudite sigurni da ste postavili toÄnu putanju do izvrÅ¡ne datoteke u Enigmail postavkama. gpgNotInPath=Nije pronaÄ‘ena GnuPG izvrÅ¡na datoteka na PUTANJI.\nBudite sigurni da ste postavili toÄnu putanju do izvrÅ¡ne datoteke u Enigmail postavkama. enigmailNotAvailable=Enigmail jezgrena usluga nije dostupna gpgAgentNotStarted=Nije moguće pokrenuti gpg-agent program koji je potreban za VaÅ¡u GnuPG verziju %S. prefUntrusted=NESIGURNI prefRevoked=REVOCIRANI KLJUÄŒ prefExpiredKey=ISTEKLI KLJUÄŒ prefExpired=ISTEKLI prefGood=Dobar potpis od %S prefBad=LOÅ  potpis od %S failCancel=PogreÅ¡ka - primanje kljuÄa otkazano od strane korisnika failNoServer=PogreÅ¡ka - nije odreÄ‘en poslužitelj kljuÄeva s kojeg bi se preuzeo kljuÄ failNoID=PogreÅ¡ka - nije odreÄ‘en ID kljuÄa za koji se preuzima kljuÄ failKeyExtract=PogreÅ¡ka - naredba ekstrakcije kljuÄa nije uspjela notFirstBlock=PogreÅ¡ka - Prvi OpenPGP blok nije blok javnog kljuÄa importKeyConfirm=Uvezi javni kljuÄ(eve) ugraÄ‘en(e) u poruku? failKeyImport=PogreÅ¡ka - uvoz kljuÄa nije uspio fileWriteFailed=Pisanje u datoteku %S nije uspjelo importKey=Uvezi javni kljuÄ %S sa poslužitelja kljuÄeva: uploadKey=PoÅ¡alji javni kljuÄ %S na poslužitelj kljuÄeva: keyId=ID kljuÄa keyAndSigDate=ID kljuÄa: 0x%1$S / potpisan: %2$S keyFpr=Otisak prsta kljuÄa: %S noEmailProvided=Niste dali email adresu! keyAlreadySigned=KljuÄ je već potpisan, ne možete ga potpisati dva puta. gnupg.invalidKey.desc=KljuÄ %S nije pronaÄ‘en ili nije valjan. (Pod)kljuÄ je možda istekao. selKeyExpired=istekao %S createdHeader=Stvoren atLeastOneKey=Nije odabran kljuÄ! Morate odabrati najmanje jedan kljuÄ da bi prihvatili ovaj dijalog fewerKeysThanRecipients=Odabrali ste manji broj kljuÄeva nego primatelja. Jeste li sigurni da je popis kljuÄeva za enkripciju potpun? userSel.button.goBack=Odaberi viÅ¡e kljuÄeva userSel.secretKeySel.title=Odabei tajni OpenPGP kljuÄ za potpisivanje poruka userSel.problemNoKey=Nema važećih kljuÄeva userSel.problemMultipleKeys=ViÅ¡estruki kljuÄevi # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=PoÅ¡alji kasnije # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NAPOMENA: PGP/MIME je podržan od strane ograniÄenog broja email klijenata! Na Windows-ima se sa sigurnošću zna jedino da Mozilla/Thunderbird, Sylpheed, Pegasus i Mulberry podržavaju ovaj standard; na Linux/UNIX-u i Mac OS X-u ga podržavaju najpopularniji klijenti. Ako niste sigurni odaberite %S opciju. first=prvu second=drugu # Strings used in am-enigprefs.js encryptKeyHeader=Odaberite OpenPGP kljuÄ za enkripciju identityName=Identitet: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Aktivirali ste enkripciju ali niste odabrali kljuÄ. Kako bi enkriptirali email-ove poslane prema %1$S morate odrediti jedan ili viÅ¡e važećih kljuÄeva iz VaÅ¡eg popisa kljuÄeva. Želite li onemogućiti enkripciju za %2$S? noKeyToUse=(niÅ¡ta - bez enkripcije) noEmptyRule=Pravilo ne smije biti prazno! Molimo Vas postavite email adresu u polju Pravila. invalidAddress=Jedna ili viÅ¡e email adresa koje ste unijeli nisu valjane. Ne bi trebali postavljati imena primatelja, samo email adrese. Npr:\nNeispravno: Neko Ime \nIspravno: neko.ime@adresa.net noCurlyBrackets=VitiÄaste zagrade {} imaju posebno znaÄenje i ne bi trebale biti koriÅ¡tene u email adresama. Ako želite urediti odgovarajuće ponaÅ¡anje za ovo pravilo upotrijebite opciju 'Primjeni pravilo ako korisnik...'.\nViÅ¡e informacija dostupno na gumbu Pomoć. # Strings used in enigmailRulesEditor.js never=Nikad always=Uvijek possible=Moguće deleteRule=Stvarno obrisati odabrano pravilo? nextRcpt=(Sljedeći primatelj) negateRule=Ne addKeyToRule=Dodaj kljuÄ %1$S (%2$S) pravilu po primatelju # Strings used in enigmailSearchKey.js needOnline=Funkcija koju ste odabrali nije dostupna u izvanmrežnom naÄinu rada. Molimo Vas da se povežete s mrežom i probate opet. protocolNotSupported=Protokol '%S://' koji ste odabrali nije podržan za preuzimanje OpenPGP kljuÄeva. gpgkeysDisabled=Možda bi pomoglo da omogućite opciju 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Spajanje na poslužitelj kljuÄeva %S nije uspjelo. keyDownloadFailed=Preuzimanje kljuÄa s poslužitelja kljuÄeva nije uspjelo. Poruka je:\n%S internalError=Dogodila se interna pogreÅ¡ka. KljuÄevi se nisu mogli preuzeti ili uvesti. noKeyFound=Žao nam je, ali nismo mogli pronaći kljuÄ koji odgovara zadanim kriterijima pretrage.\nMolimo Vas da obratite pozornost da bi ID kljuÄa trebao poÄeti s "0x= (npr. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Pretraga ili preuzimanje kljuÄa sa poslužitelja kljuÄeva nijo uspjelo: gpgkeys_%S nije moguće izvrÅ¡iti. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Postavljanje povjerenja valsnika nije uspjelo # Strings in enigmailSignKeyDlg.js signKeyFailed=Potpisivanje kljuÄa nije uspjelo alreadySigned.label=Napomena: kljuÄ %S je već potpisan s odabranim tajnim kljuÄem. alreadySignedexportable.label=Napomena: kljuÄ %S je već potpisan za izvoz sa odabranim privatnim kljuÄem. Lokalni potpis nema smisla. partlySigned.label=Napomena: neki ID-evi korisnika kljuÄa %S su već potpisani s odabranim tajnim kljuÄem. noTrustedOwnKeys=Nije pronaÄ‘en kvalificirani kljuÄ za potpisivanje! Trebate barem jedan privatni kljuÄ kojem se potpuno vjeruje kako bi potpisivali kljuÄeve. # Strings in enigmailKeyManager.js keyMan.loadingKeys=UÄitavam kljuÄeve, priÄekajte... keyValid.unknown=nepoznat keyValid.invalid=neisprava keyValid.disabled=onemogućen keyValid.revoked=opozvan keyValid.expired=istekao keyValid.noSubkey=nema valjanog podkljuÄa keyTrust.untrusted=nesiguran keyTrust.marginal=marginalan keyTrust.full=siguran keyTrust.ultimate=ultimativan keyTrust.group=(grupa) keyType.public=javni keyType.publicAndSec=javni/tajni keyMan.enableKey=Omogući kljuÄ keyMan.disableKey=Onemogući kljuÄ userAtt.photo=Koristi atribut (JPEG slike) asciiArmorFile=ASCII oklopljene datoteke (*.asc) importKeyFile=Uvezi OpenPGP datoteku kljuÄa gnupgFile=GnuPG datoteke saveRevokeCertAs=Stvori i pohrani certifikat za opoziv revokeCertOK=Certifikat za opoziv je uspjeÅ¡no stvoren. Možete ga iskoristiti za poniÅ¡tavanje valjanosti svog javnog kljuÄa, npr. u sluÄaju da izgubite svoj tajni kljuÄ.\n\nMolimo Vas da ga prenesete na medij koji može biti pohranjen sigurno, primjerice USB ili CD. Ako netko dobije pristup ovom certifikatu može ga iskoristiti da uÄini VaÅ¡ kljuÄ neiskoristivim. revokeCertFailed=Certifikat za opoziv nije mogao biti stvoren. addUidOK=KorisniÄki ID uspjeÅ¡no dodan addUidFailed=Dodavanje korisniÄkog ID-a nije uspjelo noKeySelected=Trebali bi odabrati barem jedan kljuÄ kako bi proveli odabranu operaciju exportToFile=Izvezi javni kljuÄ u datoteku exportKeypairToFile=Izvezi tajni i javni kljuÄ u datoteku exportSecretKey=Želite li ukljuÄiti tajni kljuÄ u pohranjenu OpenPGP datoteku kljuÄa? saveKeysOK=KljuÄevi uspjeÅ¡no pohranjeni saveKeysFailed=Pohrana kljuÄeva nije uspjela importKeysFailed=Uvoz kljuÄeva nije uspio enableKeyFailed=Omogućivanje/onemogućivanje kljuÄeva nije uspjelo specificPubKeyFilename=%1$S (0x%2$S) javni specificPubSecKeyFilename=%1$S (0x%2$S) javni-tajni defaultPubKeyFilename=Izvezeni-javni-kljuÄevi defaultPubSecKeyFilename=Izvezeni-javni-i-tajni-kljuÄevi noSecretKeys=Nisu pronaÄ‘eni tajni kljuÄevi.\n\nŽelite li generirati svoj kljuÄ sad? sendKeysOk=KljuÄ(evi) poslan(i) uspjeÅ¡no sendKeysFailed=Slanje kljuÄeva nije uspjelo receiveKeysOk=KljuÄ(evi) uspjeÅ¡no ažuriran(i) receiveKeysFailed=Preuzimanje kljuÄeva nije uspjelo importFromClip=Želite li uvesti neke kljuÄeve iz meÄ‘uspremnika? importFromUrl=Preuzmite javni kljuÄ sa ovog URL-a: copyToClipbrdFailed=Kopiranje odabranih kljuÄeva u meÄ‘uspremnik nije moguće. copyToClipbrdOK=KljuÄ(evi) kopiran(i) u meÄ‘uspremnik deleteSecretKey=UPOZORENJE: PokuÅ¡avate obrisati tajni kljuÄ!\nAko obriÅ¡ete tajni kljuÄ, nećete viÅ¡e moći dekriptirati poruke enkriptirane za taj kljuÄ, i nećete viÅ¡e moći opozvati svoj kljuÄ.\n\nŽelite li uistinu obrisati OBA kljuÄa, tajni i javni?\n'%S' deleteMix=UPOZORENJE: PokuÅ¡avate obrisati tajne kljuÄeve!\nAko obriÅ¡ete tajni kljuÄ, nećete viÅ¡e moći dekriptirati poruke enkriptirane za taj kljuÄ.\n\nŽelite li uistinu obrisati odabrane kljuÄeve, tajne i javne? deletePubKey=Želite li obrisati javni kljuÄ\n'%S'? deleteSelectedPubKey=Želite li obrisati javne kljuÄeve? deleteKeyFailed=KljuÄ se ne može obrisati. revokeKeyQuestion=Opozvati će te kljuÄ '%S'.\n\nViÅ¡e nećete biti u mogućnosti potpisivati ovim kljuÄem, i jednom distribuirano, ostali neće moći dekriptirati s tim kljuÄem. JoÅ¡ uvjek možete koristit kljuÄ za dekripciju starih poruka.\n\nŽelite li nastaviti? revokeKeyOk=KljuÄ je opozvan. Ako je VaÅ¡ kljuÄ dostupan na poslužitelju kljuÄeva, preporuÄa se ponovno postavljanje tako da drugi mogu vidjeti opoziv. revokeKeyFailed=KljuÄ se ne može opozvati. refreshAllQuestion=Niste odabrali nijedan kljuÄ. Želite li osvježiti SVE kljuÄeve? refreshKey.warn=Upozorenje: ovisno o broju kljuÄeva i brzini veze, osvježenje svih kljuÄeva može biti dugotrajan proces! downloadContactsKeys.warn=Upozorenje: ovisno o broju kontakta i brzini veze, preuzimanje kljuÄeva može biti dugotrajan proces! downloadContactsKeys.importFrom=Uvesti kontakte iz adresara '%S'? keyMan.button.exportSecKey=Izvezi &Tajne kljuÄeve keyMan.button.exportPubKey=Izvezi samo &Javne kljuÄeve keyMan.button.import=&Uvezi keyMan.button.refreshAll=&Osvježi sve kljuÄeve keyMan.button.revokeKey=&Opozovi kljuÄ keyMan.button.skip=&PreskoÄi kljuÄ keylist.noOtherUids=Nema drugih identiteta keylist.hasOtherUids=TakoÄ‘er poznat kao keylist.noPhotos=Slika nije dostupna keylist.hasPhotos=Slike keyMan.addphoto.filepicker.title=Odaberite sliku za dodavanje keyMan.addphoto.warnLargeFile=Datoteka koju ste odabrali je veća od 25 kB.\nNije preporuÄeno dodavati vrlo velike datoteke jer se tako povećavaju kljuÄevi. keyMan.addphoto.noJpegFile=Izgleda da odabrana datoteka nije JPEG datoteka. Molimo Vas da odaberete drugu datoteku. keyMan.addphoto.failed=Slika se ne može dodati. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Mijenjanje primarnog korisniÄkog ID-a nije uspjelo changePrimUidOK=Primarni korisniÄki ID uspjeÅ¡no promijenjen deleteUidFailed=Brisanje korisniÄkog ID-a %S nije uspjelo deleteUidOK=KorisniÄki ID %S je uspjeÅ¡no obrisan revokeUidFailed=Opoziv korisniÄkog ID-a %S nije uspio revokeUidOK=KorisniÄki ID %S je uspjeÅ¡no opozvan. Ako je VaÅ¡ kljuÄ dostupan na poslužitelju kljuÄeva, preporuÄa se ponovno postavljanje, tako da ostali mogu vidjeti opoziv. revokeUidQuestion=Želite li stvarno opozvati korisniÄki ID %S? deleteUidQuestion=Želite li stvarno izbrisati korisniÄki ID %S?\n\nNapomena: ako ste predali svoj javni kljuÄ na poslužitelj kljuÄeva, brisanje korisniÄkog ID-a neće promijeniti niÅ¡ta. U tom sluÄaju bi trebali koristiti 'Opozovi korisniÄki ID'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=USPJEH! KljuÄevi uvedeni importInfoSuccess=✅ importInfoBits=Bitovi importInfoCreated=Stvoreno importInfoFpr=Otisak prsta importInfoDetails=(Detalji) importInfoNoKeys=Nema uvedenih kljuÄeva. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=javni kljuÄ keyTypePrimary=primarni kljuÄ keyTypeSubkey=podkljuÄ keyTypePair=par kljuÄeva keyExpiryNever=nikad keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Enkriptiraj keyUsageSign=PotpiÅ¡i keyUsageCertify=Certificiraj keyUsageAuthentication=Autentikacija keyDoesNotExpire=KljuÄ ne istiÄe # Strings in enigmailGenCardKey.xul keygen.started=Molimo priÄekajte dok se kljuÄ generira... keygen.completed=KljuÄ generiran. Novi ID kljuÄa je: 0x%S keygen.keyBackup=Sigurnosna kopija kljuÄa je %S keygen.passRequired=Molimo Vas da odredite lozinku ako želite stvoriti sigurnosnu kopiju VaÅ¡eg kljuÄa izvan SmartCard-a. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN koji ste unijeli ne odgovara; unesite ponovno cardPin.minLength=PIN mora imati najmanje %S slova ili brojeva cardPin.processFailed=Promjena PIN-a nije uspjela # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Osvježujem kljuÄeve, priÄekajte... keyserverProgress.uploading=Postavljam kljuÄeve, priÄekajte... keyserverTitle.refreshing=Osvježi kljuÄeve keyserverTitle.uploading=Postavljanje kljuÄa # Strings in enigmailSetupWizard passphrase.min8keys=VaÅ¡a lozinka bi trebala sadržavati najmanje 8 znakova! setupWizard.reallyCancel=Želite li stvarno zatvoriti Enigmail Äarobnjak za postavljanje? setupWizard.invalidGpg=Datoteka koju ste odredili nije izvrÅ¡na datoteka GnuPG-a. Molimo odredite drugu datoteku. setupWizard.specifyFile=Morate odrediti barem javni kljuÄ da bi nastavili. setupWizard.installFailed=Izgleda da instalacija nije uspjela. Ili ponovno pokuÅ¡ajte ili instalirajte GnuPG ruÄno te ga locirajte koristeći Pregledaj gumb. setupWizard.downloadForbidden=Za VaÅ¡u osobnu sigurnost nećemo preuzeti GnuPG. Posjetite http://www.gnupg.org/ kako bi preuzeli GnuPG. setupWizard.downloadImpossible=Trenutno ne možemo preuzeti GnuPG. Probajte ponovno kasnije ili posjetite http://www.gnupg.org/ da bi preuzeli GnuPG. setupWizard.hashSumError=ÄŒarobnjak nije mogao potvrditi integritet preuzete datoteke. Datoteka može biti oÅ¡tećena ili obraÄ‘ivana od treće strane. Želite li svejedno nastaviti instalaciju? setupWizard.importSettingsFile=Odredite datoteku sigurnosne kopije iz koje će se uÄitavati setupWizard.invalidSettingsFile=Specificirana datoteka nije toÄna Enigmail datoteka sigurnosne kopije postavki. setupWizard.gpgConfExists=Datoteka GnuPG postavki već postoji. Želite li ju prepisati s onom iz stare instalacije? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Dogodila se pogreÅ¡ka pri preuzimanju GnuPG-a. Molimo provjerite konzolni zapis za daljnje detalje. installGnuPG.installFailed=Dogodila se pogreÅ¡ka prilikom instalacije GnuPG-a. Provjerite konzolni zapis za daljnje detalje. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Morate ispuniti ime i email adresu. addUidDlg.nameMinLengthError=Ime mora imati minimalno 5 znakova addUidDlg.invalidEmailError=Morate odrediti valjanu email adresu addUidDlg.commentError=Zagrade nisu dozvoljene u komentarima # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP SmartCard podržava jedino ASCII znakove u imenu/prezimenu. # network error types errorType.SecurityCertificate=Sigurnosni certifikat pružen od strane web usluge nije valjan. errorType.SecurityProtocol=Sigurnosni protokol koriÅ¡ten od strane web usluge je nepoznat. errorType.Network=Dogodila se mrežna pogreÅ¡ka. # filter stuff filter.folderRequired=Morate odabrati ciljnu mapu. filter.decryptMove.label=Dekriptiraj trajno (Enigmail) filter.decryptCopy.label=Kreiraj dekriptiranu kopiju (Enigmail) filter.decryptMove.warnExperimental=Upozorenje - filter akcija "Dekriptiraj trajno" može dovesti do uniÅ¡tenih poruka.\n\nSnažno preporuÄamo da prvo probate filter "Kreiraj dekriptiranu kopiju", pozorno testirate rezultate, te poÄnete koristit ovaj filter tek kad ste zadovoljni rezultatima. # strings in enigmailConvert.jsm converter.decryptBody.failed=Nije uspjelo dekriptiranje poruke s predmetom\n"%S".\nŽelite li pokuÅ¡ati ponovno s drugom lozinkom ili želite preskoÄiti poruku? converter.decryptAtt.failed=Nije uspjelo dekriptiranje privitka "%1$S"\nporuke s predmetom\n"%2$S".\nŽelite li pokuÅ¡ati ponovno s drugom lozinkom ili želite preskoÄiti poruku? saveLogFile.title=Pohrani datoteku zapisa # strings in gpg.jsm unknownSigningAlg=Nepoznat algoritam potpisivanja (ID: %S) unknownHashAlg=Nepoznat kriptografski hash (ID: %S) # strings in keyRing.jsm keyring.photo=Slika keyRing.pubKeyRevoked=KljuÄ %1$S (ID kljuÄa %2$S) je opozvan. keyRing.pubKeyExpired=KljuÄ %1$S (ID kljuÄa %2$S) je istekao. keyRing.pubKeyNotForSigning=KljuÄ %1$S (ID kljuÄa %2$S) ne može biti koriÅ¡ten za potpisivanje. keyRing.pubKeyNotForEncryption=KljuÄ %1$S (ID kljuÄa %2$S) ne može biti koriÅ¡ten za enkripciju. keyRing.keyDisabled=KljuÄ %1$S (ID kljuÄa %2$S) je onemogućen; ne može biti koriÅ¡ten. keyRing.keyNotTrusted=KljuÄu %1$S (ID kljuÄa %2$S) se ne vjeruje dovoljno. Molimo postavite razinu povjerenja na "ultimativno" kako bi ga koristili za potpisivanje. keyRing.keyInvalid=KljuÄ %1$S (ID kljuÄa %2$S) je nevažeći (možda nema samo-potpis). keyRing.signSubKeysRevoked=Svi poptisni podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su opozvani. keyRing.signSubKeysExpired=Svi poptisni podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su istekli. keyRing.signSubKeysUnusable=Svi poptisni podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su opozvani, istekli ili drugaÄije neiskoristivi. keyRing.encSubKeysRevoked=Svi enkripcijski podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su opozvani. keyRing.encSubKeysExpired=Svi enkripcijski podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su istekli. keyRing.noSecretKey=Izgleda da nemate tajni kljuÄ za %1$S (ID kljuÄa %2$S) na VaÅ¡em privjesku kljuÄeva; ne možete koristiti taj kljuÄ za potpisivanje. keyRing.encSubKeysUnusable=Svi enkripcijski podkljuÄevi kljuÄa %1$S (ID kljuÄa %2$S) su opozvani, istekli ili drugaÄije neiskoristivi. #strings in exportSettingsWizard.js cannotWriteToFile=Ne može se spremiti u datoteku '%S'. Molimo odredite drugu datoteku. dataExportError=DoÅ¡lo je do greÅ¡ke prilikom izvoza VaÅ¡ih podataka. enigmailSettings=EnigmailPostavke defaultBackupFileName=Enigmail-izvoz specifyExportFile=Odredite ime za izvoz homedirParamNotSUpported=Dodatni parametri koji konfiguriraju putanje, primjerice --homedir i --keyring nisu podržani za izvoz/uvoz VaÅ¡ih postavki. Molimo koristite alternativne metode, primjerice postavite varijablu okoline na GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=VaÅ¡ kljuÄ %1$S istiÄe za manje od %2$S dana.\n\nPreporuÄamo da stvorite novi par kljuÄeva i postavite raÄune tako da ih koriste. expiry.keysExpireSoon=Sljedeći VaÅ¡i kljuÄevi istiÄu za manje od %1$S dana:\n%2$S. PreporuÄamo da stvorite nove kljuÄeve i konfigurirate raÄune tako da ih koriste. enigmail/lang/hr/help/000077500000000000000000000000001266701624400151355ustar00rootroot00000000000000enigmail/lang/hr/help/compose.html000066400000000000000000000100751266701624400174730ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/hr/help/editRcptRule.html000066400000000000000000000116031266701624400204320ustar00rootroot00000000000000 Enigmail Help: Edit Per-Recipient Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit Per-Recipient Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set Enigmail Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the Enigmail Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the Per-Recipient Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/hr/help/help.html000066400000000000000000000104671266701624400167630ustar00rootroot00000000000000 Enigmail Help

Enigmail Help

Using Enigmail when reading messages

  • Decrypt button in main Mail window
    This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
  • Pen and Key icons in Message Header display
    The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
    • Enigmail Security info: allows you to view the output status from GnuPG for the message.
    • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
    • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
    • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

    If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

    You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

    Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

    To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

  • Opening encrypted attachments / importing attached OpenPGP keys
    Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page
If you have questions or comments about enigmail, please send a message to the Enigmail mailing list

Enigmail is open source and licensed under the Mozilla Public License and the GNU General Public License

enigmail/lang/hr/help/initError.html000066400000000000000000000045461266701624400200110ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing Enigmail

Enigmail Help

How to Resolve Problems with Initializing Enigmail

There are several reasons why initializing Enigmail does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for Enigmail to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and Enigmail cannot find it, then you need to manually set the path to GnuPG in the Enigmail Preferences (menu Enigmail > Preferences)

Enigmime failed to initialize

Enigmail works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/hr/help/messenger.html000066400000000000000000000101411266701624400200100ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • Enigmail Security info: allows you to view the output status from GnuPG for the message.
  • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/hr/help/rulesEditor.html000066400000000000000000000060311266701624400203240ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/hr/help/sendingPrefs.html000066400000000000000000000047571266701624400204670ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of Enigmail to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/hu/000077500000000000000000000000001266701624400142105ustar00rootroot00000000000000enigmail/lang/hu/am-enigprefs.properties000066400000000000000000000001271266701624400207030ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP adatbiztonság enigmail/lang/hu/enigmail.dtd000066400000000000000000001464631266701624400165100ustar00rootroot00000000000000 MEGJEGYZÉS: A kulcskészítés több percet is igénybe vehet. Ne lépjen ki az alkalmazásból a kulcskészítés alatt. A kulcspár elkészültekor egy tájékoztató ablak fog megjelenni a képernyÅ‘n."> Megjegyzés: Az Enigmail minden e-mail esetén ellenÅ‘rzi az aláírást, figyelmen kívül hagyva a postafiókok és azonosítók beállításait."> nyilvános kulcs-át odaadhatjamásoknak, akik így tudnak Önnek titkosított levelet küldeni. A nyilvános kulcs bárkinek odaadható."> titkos kulcs-át kizárólag Ön használja. Ezzel tudja visszafejteni az Önnek küldött leveleket és aláírni az Ön által küldött leveleket. Soha, semmilyen körülmény között ne adja oda másnak."> titkos kulcs-át kizárólag Ön használja. Ezzel tudja visszafejteni az Önnek küldött leveleket és aláírni az Ön által küldött leveleket. Soha, semmilyen körülmény között ne adja oda másnak. A titkos kulcs biztonságos tárolásához jelmondatot kell megadnia a következÅ‘ két párbeszédablakon."> jelmondat a jelszó, amit a titkos kulcsát védi. Megvédi titkos kulcsát az illetéktelen használattól."> kerülendÅ‘."> Meg kell adni majd ehhez egy jelszót."> adatok mentése a régi számítógéprÅ‘l az Enigmail Beállítások közül elérhetÅ‘ MentÅ‘ Tündér segítségével, adatok betöltése az új számítógépen ennek a tündérnek a segítségével. "> Köszönjük, hogy az Enigmail programot használja."> adatok mentése a régi számítógéprÅ‘l ennek a tündérnek a segítségével, adatok betöltése az új számítógépen a Beállítás Tündér segítségével. "> enigmail/lang/hu/enigmail.properties000066400000000000000000001226141266701624400201210ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail figyelmeztetés enigConfirm=Enigmail jóváhagyás enigError=Enigmail hiba enigPrompt=Enigmail kérdés dlgYes=&Igen dlgNo=&Nem dlgKeepSetting=Emlékezzen a válaszaimra, és ne kérdezze meg újra dlgNoPrompt=Ne mutassa újra ezt az ablakot dlg.button.delete=&Törlés dlg.button.cancel=&Mégse dlg.button.close=&Bezárás dlg.button.continue=Foly&tatás dlg.button.skip=&Kihagyás dlg.button.overwrite=&Felülírás dlg.button.view=&Megtekintés dlg.button.retry=Új&ra dlg.button.ignore=&MellÅ‘zés repeatPrefix=\n\nAz értesítés ismétlÅ‘dik még %S repeatSuffixSingular=alkalommal. repeatSuffixPlural=alkalommal. noRepeat=\n\nEz az értesítés nem ismétlÅ‘dik, amíg nem frissíti az Enigmail programot. pgpNotSupported=Úgy tűnik, hogy az Enigmail a PGP 6.x rendszerrel dolgozik együtt.\n\nSajnos a PGP 6.x számos esetben akadályozza az Enigmail helyes működését. Emiatt az Enigmail nem támogatja többé a PGP 6.x rendszert. Használja inkább a GnuPG (GPG) csomagot.\n\nHa szüksége van segítségre a GPG-re történÅ‘ átálláshoz, nézze meg az Enigmail honlapján a Help szakaszt. initErr.howToFixIt=Az Enigmail használatához szükség van a GnuPG programra. Ha még nem telepítette a GnuPG programot, akkor a legegyszerűbben a „Beállítás Tündér†gombra kattintva teheti meg. initErr.setupWizard.button=Beállítá&s Tündér passphraseCleared=A jelmondat törölve. cannotClearPassphrase=A jelmondatok kezeléséhez a nem szabványos programot (például: gnome-keyring) használja, ezért a kulcstároló ürítése nem lehetséges az Enigmail programban. noPhotoAvailable=Nem érhetÅ‘ el fénykép debugLog.title=Enigmail hibanapló error.photoPathNotReadable=A(z) „%S†fénykép elérési útja nem olvasható. # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Az Enigmail új verziójának beállításai jelentÅ‘sen eltérnek a régebbi verziótól. A régi beállítások átvétele az új verzióba megtörtént. Mindazonáltal nem minden esetben működik tökéletesen. Kérjem ellenÅ‘rizzen minden beállítást az új verzióban. enigmailCommon.checkPreferences=Beállítások ellenÅ‘rzése… preferences.defaultToPgpMime=Megváltozott az Enigmail alapértelmezett üzenetkódolása a beágyazott PGP beállításról a PGP/MIME beállításra. Ajánlott az új alapértelmezett érték megtartása.\n\nHa ennek ellenére a beágyazott PGP szeretné használni, akkor azt a Postafiók beállításai párbeszédablakban az \nOpenPGP biztonság részben teheti meg. usingVersion=A használatban levÅ‘ Enigmail verziószáma: %S usingAgent=A titkosításhoz és visszafejtéshez a(z) %1$S program %2$S példányát használja. agentError=HIBA: Sikertelen az Enigmime szolgáltatás elérése! accessError=Hiba az Enigmail szolgáltatás elérésekor onlyGPG=A kulcskészítés csak a GPG-vel működik (PGP-vel nem)! keygenComplete=A kulcs elkészült. A következÅ‘ azonosító tartozik az aláíráshoz: „%Sâ€. revokeCertRecommended=ErÅ‘sen ajánljuk, hogy készítsen visszavonási tanúsítványt a kulcsához. Ez a tanúsítvány használható a kulcs érvénytelenítéséhez abban az esetben, ha a titkos kulcs elveszik vagy megsérül. Szeretné most létrehozni a visszavonási tanúsítványt? keyMan.button.generateCert=&Tanúsítvány létrehozása genCompleteNoSign=A kulcs elkészült! genGoing=A kulcs készítése folyamatban! passNoMatch=A megadott jelmondatok nem egyeznek, adja meg újra passCheckBox=Jelölje be a négyzetet, ha nem ad meg a kulcshoz jelmondatot passUserName=Adja meg a felhasználónevet ehhez az azonosítóhoz keygen.missingUserName=Nincs a megadott néven szereplÅ‘ postafiók. A Postafiók beállításainál adja meg nevét a „Név†mezÅ‘ben. keygen.passCharProblem=A jelmondatban különleges (például ékezetes) karaktereket használt. Sajnos ez más alkalmazásoknál gondot okozhat. Válasszon olyan jelmondatot, amelyben csak ezek a karakterek szerepelnek:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Technikai okokból a jelmondata nem kezdÅ‘dhet vagy zárulhat szóköz karakterrel. changePassFailed=A jelmondat megváltoztatása nem sikerült. keyConfirm=Létre kíván hozni nyilvános és titkos kulcsot „%S†részére? keyMan.button.generateKey=&Kulcs létrehozása keyAbort=Meg kívánja szakítani a kulcs létrehozását? keyMan.button.generateKeyAbort=&Megszakítás keyMan.button.generateKeyContinue=&Folytatás expiryTooLong=Nem hozhat létre 100 évnél késÅ‘bb lejáró kulcsot. expiryTooLongShorter=Nem hozhat létre 90 évnél késÅ‘bb lejáró kulcsot. expiryTooShort=A kulcsnak legalább 1 napig érvényesnek kell lennie. dsaSizeLimit=A DSA aláírókulcsok 3072 bitre vannak korlátozva. A kulcs mérete ennek megfelelÅ‘en lesz csökkentve. keyGenFailed=A kulcs létrehozása nem sikerült. EllenÅ‘rizze az Enigmail konzolban a részleteket (Enigmail menü → Hibakeresési beállítások). setKeyExpirationDateFailed=A lejárati idÅ‘ nem változtatható meg # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail biztonsági adatok\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *A levél mellékletei nem lettek aláírva vagy titkosítva*\n\n possiblyPgpMime=Lehetséges, hogy az üzenet PGP/MIME-mal titkosított vagy aláírt. Kattintson a „Visszafejtés†gombra az ellenÅ‘rzéshez. noDecrypted=Nincs mentendÅ‘ visszafejtett levél!\nHasználja a Fájl menü Mentés parancsát. noMessage=Nincs mentendÅ‘ üzenet. useButton=Kattintson a Visszafejtés gombra a levél visszafejtéséhez. saveHeader=Enigmail: Visszafejtett levél mentése saveAttachmentHeader=Enigmail: Visszafejtett melléklet mentése noTempDir=Nincs ideiglenes könyvtár a mentéshez.\nÃllítsa be a „TEMP†környezeti változó értékét. attachmentPgpKey=A megnyitott melléklet („%Sâ€) egy OpenPGP-kulcsfájl.\n\nVálassza az „Importálás†gombot a kulcs rögzítéséhez, vagy a „Megtekintés†gombot a fájl tartalmának böngészÅ‘ablakban történÅ‘ megtekintéséhez. beginPgpPart=********* *A TITKOSÃTOTT vagy ALÃÃRT TARTALOM KEZDETE* ********* endPgpPart=********** *A TITKOSÃTOTT vagy ALÃÃRT TARTALOM VÉGE* *********** notePartEncrypted=Enigmail: *A levél ezen része NINCS aláírva vagy titkosítva* noteCutMessage=Enigmail: *Az üzenetben több blokk szerepel -- visszafejtés és ellenÅ‘rzés megszakítva* decryptOkNoSig=Figyelmeztetés!\n\nA visszafejtés sikerült, de az aláírást nem lehetett megfelelÅ‘en ellenÅ‘rizni. msgOvl.button.contAnyway=&Folytatás mindenképp signature.verifiedOK=A(z) „%S†melléklet aláírása sikeresen ellenÅ‘rizve lett. signature.verifyFailed=A(z) „%S†melléklet aláírása nem ellenÅ‘rizhetÅ‘. attachment.noMatchToSignature=A(z) „%S†melléklet aláírása nem jó. attachment.noMatchFromSignature=A(z) „%S†aláírásfájlhoz nem található melléklet. fixBrokenExchangeMsg.failed=Az üzenet megjavítása nem sikerült. keysToExport=Válasszon beszúrandó OpenPGP-kulcsokat keysToUse=OpenPGP-kulcsok választása %S számára pubKey=%S nyilvános kulcsa\n windowLocked=SzerkesztÅ‘ablak zárolva; küldés megszakítva sendUnencrypted=Enigmail indítási hiba.\nElküldi titkosítás nélkül az üzenetet? composeSpecifyEmail=Adja meg az elsÅ‘dleges e-mail címét, amely a kimenÅ‘ levelek aláírásának kulcsaként lesz kiválasztva.\n Ha üresen hagyja, úgy a levél feladójának címe lesz kiválasztva az aláírás kulcsaként. sendingHiddenRcpt=Ennek az üzenetnek rejtett másolat címzettjei is vannak. Amennyiben az üzenet titkosításra kerül, a rejtet másolat címzettjei el lesznek rejtve, de néhány termék (például: PGP Corp.) felhasználója nem tudja majd visszafejteni az üzenetet. Ennek megfelelÅ‘en nem javasolt rejtett másolat címzetteket megadni a titkosított üzenetekben. sendWithHiddenBcc=Rejtett másolat címzettjeinek elrejtése sendWithShownBcc=Hagyományos titkosítás sendingNews=Titkosított üzenetküldés megszakítva.\n\nAz üzenetet nem lehet titkosítani, mivel hírcsoport is szerepel a címzettek között. Küldje el ismét az üzenetet titkosítás nélkül. sendToNewsWarning=FIGYELMEZTETÉS: Titkosított üzenetet szeretett volna elküldeni egy hírcsoportnak.\n\nEz lehet, hogy nem helyes cselekedet, mert csak akkor elfogadható, ha a hírcsoport összes tagja vissza tudja fejteni az üzenetet. Például az üzenet a hírcsoport összes tagjának nyilvános kulcsával kerül titkosításra. Csak akkor küldje el ezt az üzenetet, ha valóban tudja, hogy mit csinál.\n\nKívánja folytatni? hasHTML=HTML-levél figyelmeztetés:\nAz üzenet tartalmazhat HTML tartalmat, ami megakadályozhatja az aláírást, illetve a titkosítást. A jövÅ‘ben ennek elkerülése végett használja a SHIFT billentyűt, amikor az Új üzenet/Válasz/Továbbítás gombokra kattint, hogy a küldéskor egyszerű levél legyen.\nHa a levél automatikus aláírása használatban van, be kell állítani a postafióknál, hogy a „Levelek írása HTML formátumban†jelölÅ‘négyzet ki legyen kapcsolva. strippingHTML=Az üzenet HTML formázásokra vonatkozó információkat tartalmaz, ami törlÅ‘dik az egyszerű szöveggé történÅ‘ átalakításkor, amire az aláíráskor/titkosításkor kerül sor. Szeretné folytatni? msgCompose.button.sendAnyway=Ü&zenet küldése attachWarning=A levélhez csatolt állomány nem helyi, ezért nem lehet titkosítani. A melléklet titkosításához elÅ‘bb tárolja le az állományt a saját gépére, majd ez után csatolja a levélhez. Folytatni kívánja a figyelmeztetés figyelmen kívül hagyásával? quotedPrintableWarn=Engedélyezte a „quoted-printable†kódolást a levélküldéshez. Ez a levele téves visszafejtését, illetve ellenÅ‘rzését okozhatja.\nSzeretné kikapcsolni a „quoted-printable†alapú üzenetküldést most? minimalLineWrapping=Beállította a sortördelést %S karakterre. A helyes titkosításhoz, illetve aláíráshoz ennek az értéknek legalább 68-nak kell lennie.\nSzeretné átállítani a sortördelést 68 karakterre most? warning=Figyelem signIconClicked=Manuálisan módosította a postafiók Enigmail beállítását! Amennyiben folytatja a levél írását, úgy a postafiókhoz beállított Enigmail funkció (titkosítás, aláírás) érvényét veszti. pgpMime_sMime.dlg.text=Együttesen engedélyezte a PGP/MIME és az S/MIME protokollok használatát. Sajnálatos módon egyszerre nem használható mindkét protokoll. Válassza ki, hogy a PGP/MIME vagy az S/MIME protokoll szeretné használni. pgpMime_sMime.dlg.pgpMime.button=&PGP/MIME használatával pgpMime_sMime.dlg.sMime.button=&S/MIME használatával errorKeyUnusable=Az e-mail cím vagy a(z) „%S†azonosítójú kulcs nem rendelhetÅ‘ össze, mint érvényes és le nem járt OpenPGP kulcs.\nKérem bizonyosodjon meg róla, hogy érvényes OpenPGP kulccsal rendelkezik, és a postafiók beállításai alapján ezt a kulcsot használja. errorOwnKeyUnusable=Az aktuális azonosítónál beállított „%S†kulcs nem használható az OpenPGP számára.\n\nGyÅ‘zÅ‘djön meg róla, hogy a használandó kulcs érvényes, nem lejárt OpenPGP kulcs, és ellenÅ‘rizze, hogy Postafiók beállításainál megfelelÅ‘ kulcs van megadva.\nHa a kulcs nem járt le, akkor ellenÅ‘rizze, hogy a tulajdonos megbízhatóság teljesen- vagy véglegesen megbízhatóra van állítva. msgCompose.cannotSaveDraft=Hiba lépett fel a piszkozat mentése közben msgCompose.internalEncryptionError=BelsÅ‘ hiba: az ígért titkosítási támogatás le van tiltva msgCompose.internalError=BelsÅ‘ hiba történt. msgCompose.toolbarTxt.signAndEncrypt=Ez az üzenet alá lesz írva és titkosítva lesz msgCompose.toolbarTxt.signOnly=Ez az üzenet alá lesz írva msgCompose.toolbarTxt.encryptOnly=Ez az üzenet titkosítva lesz msgCompose.toolbarTxt.noEncryption=Ez az üzenet aláírás nélküli és titkosítatlan lesz msgCompose.toolbarTxt.disabled=Az Enigmail le van tiltva a kijelölt postafiókhoz msgCompose.toolbarTxt.smime=Az S/MIME engedélyezett – lehet, hogy nem fog jól működni az Enigmail msgCompose.toolbarTxt.smimeOff=– S/MIME ezért használaton kívül msgCompose.toolbarTxt.smimeSignOrEncrypt=Az S/MIME engedélyezett – ezért az Enigmail használaton kívül msgCompose.toolbarTxt.smimeNoDraftEncryption=- a piszkozat nem lesz titkosítva msgCompose.toolbarTxt.smimeConflict=Az Enigmail nem használható, mert a S/MIME be van kapcsolva. Kapcsolja ki a S/MIME aláírást és titkosítást az Enigmail titkosítás használatához. msgCompose.encryptedSubjectStub=Titkosított üzenet msgCompose.detailsButton.label=Részletek… msgCompose.detailsButton.accessKey=R # note: should end with double newline: sendAborted=Küldés művelet megszakítva.\n\n # details: keyNotTrusted=Nem eléggé megbízható kulcs: „%S†keyNotFound=Nem található a kulcs: „%S†keyRevoked=A(z) „%S†kulcs vissza lett vonva keyExpired=A(z) „%S†kulcs lejárt statPGPMIME=PGP/MIME statSigned=ALÃÃRT statEncrypted=TITKOSÃTOTT statPlain=SIMA SZÖVEG offlineSave=Mentse a(z) %1$S üzenetet %2$S részére a Postázandó üzenetek közé? onlineSend=Küldje el a(z) %1$S üzenetet %2$S részére? encryptKeysNote=Megjegyzés: az üzenet titkosítva van a következÅ‘ felhasználói azonosítókkal/kulcsokkal: %S hiddenKey= signFailed=Hiba az Enigmail programban: titkosítási/aláírási hiba. Elküldi a levelet titkosítás nélkül? msgCompose.button.sendUnencrypted=&Titkosítatlan üzenet küldése recipientsSelectionHdr=Válassza ki a címzetteket a titkosításhoz configureNow=Még nem állította be az Enigmail védelmet a kijelölt azonosítóhoz. Szeretné most megtenni? # encryption/signing status and associated reasons: encryptMessageAuto=Üzenet titkosítása (auto) encryptMessageNorm=Üzenet titkosítása signMessageAuto=Üzenet aláírása (auto) signMessageNorm=Üzenet aláírása encryptOff=Titkosítás: KI encryptOnWithReason=Titkosítás: BE (%S) encryptOffWithReason=Titkosítás: KI (%S) encryptOn=Titkosítás: BE signOn=Aláírás: BE signOff=Aláírás: KI signOnWithReason=Aláírás: BE (%S) signOffWithReason=Aláírás: KI (%S) reasonEnabledByDefault=mindig bekapcsolva reasonManuallyForced=kézzel kényszerítve reasonByRecipientRules=címzettenkénti szabállyal kényszerítve reasonByAutoEncryption=automatikus titkosítással kényszerítve reasonByConflict=a címzettenkénti szabályok ütközése miatt reasonByEncryptionMode=az automatikus titkosítás miatt reasonSmimeConflict=mert helyette az S/MIME engedélyezett # should not be used anymore: encryptYes=A levél titkosítva lesz encryptNo=A levél nem lesz titkosítva # should not be used anymore: signYes=A levél alá lesz írva signNo=A levél nem lesz aláírva # PGP/MIME status: pgpmimeNormal=Protokoll: PGP/MIME inlinePGPNormal=Protokoll: Beágyazott PGP pgpmimeAuto=Protokoll: PGP/MIME (auto) inlinePGPAuto=Protokoll: Beágyazott PGP (auto) # should not be used anymore pgpmimeYes=&PGP/MIME használatával pgpmimeNo=Beágyazott PGP használatával # Attach own key status (tooltip strings): attachOwnKeyNo=A saját kulcs nem lesz mellékelve. attachOwnKeyYes=A saját kulcs mellékelve lesz. attachOwnKeyDisabled=A saját kulcs nem mellékelhetÅ‘. A szolgáltatás engedélyezéséhez\nki kell választania egy kulcsot a Postafiók beállításai párbeszédablakban az OpenPGP részben. rulesConflict=A címzettenkénti szabályok többszörösen egyeznek:\n%S\n\nElküldi az üzenetet ezekkel a beállításokkal? msgCompose.button.configure=&Beállítás msgCompose.button.send=Ü&zenet küldése msgCompose.button.save=Üzenet &mentése # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=%S nyilvános kulcs szükséges az aláírás ellenÅ‘rzéséhez keyUsed=%S nyilvános kulcs szükséges az aláírás ellenÅ‘rzéséhez clickDecrypt=; kattintson a „Visszafejtés†gombra clickDecryptRetry=; kattintson a „Visszafejtés†gombra az ismétléshez clickDetailsButton=; További információkért kattintson a „Részletek†gombra clickImportButton=; kattintson az „Importálás†gombra a kulcs letöltéséhez keyTypeUnsupported=; ezt a kulcstípust nem támogatja a telepített GnuPG verzió msgPart=A levél része: %S msgSigned=aláírt msgSignedUnkownKey=ismeretlen kulccsal aláírt msgEncrypted=titkosított msgSignedAndEnc=aláírt és titkosított unverifiedSig=Nem ellenÅ‘rzött aláírás incompleteDecrypt=Visszafejtés nem teljes needKey=Hiba – Titkos kulcs szükséges az üzenet visszafejtéséhez failedDecrypt=Hiba – Visszafejtés sikertelen badPhrase=Hiba – Rossz jelmondat failedDecryptVerify=Hiba – A visszafejtés és az ellenÅ‘rzés sikertelen viewInfo=; további részletek: „Nézet → Üzenet biztonsági adatai†decryptedMsg=Visszafejtett üzenet decryptedMsgWithFormatError=Üzenet visszafejtése (visszaállítás hibás PGP levélformátumból, amelyet valószínűleg egy régi Exchange kiszolgáló okozott, így az eredménye esetleg nem lesz tökéletes) usedAlgorithms=Alkalmazott algoritmus: %S és %S # strings in pref-enigmail.js oldGpgVersion14=Nem sikerült az Enigmail elindítása!\n\nÖn a GnuPG %S verzióját használja, amely nem naprakész. Az Enigmail számára szükséges a GnuPG 2.0.7 vagy újabb változata. Kérem frissítse a GnuPG programot, különben az Enigmail nem fog működni. locateGpg=GnuPG program elérési útja invalidGpgPath=GnuPG nem indítható a megadott útvonalról. Az Enigmail kikapcsolt állapotba kerül mindaddig, amíg a GnuPG útvonala nincs kijavítva, vagy az alkalmazás újra nem indul. warningsAreReset=A figyelmeztetések törölve lettek. prefs.gpgFound=A talált GnuPG helye: %S prefs.gpgNotFound=GnuPG nem található prefs.warnAskNever=Figyelmeztetés: Az opció kiválasztása mindenféle további figyelmeztetés nélkül hatással lesz a nem titkosított levelekre, ha nincs kulcs valamelyik címzettnél -- Enigmail nem fogja értesíteni, ha ez történik. prefs.warnIdleTimeForUnknownAgent=Nem sikerült csatlakozni a gpg-agent programhoz. ElÅ‘fordulhat hogy az Ön rendszere speciális eszközt – gnome-keyring vagy seahorse-agent – használ a jelmondatok kezeléséhez. Sajnos az Enigmail így nem tudja befolyásolni az jelmondatok lejáratát az Ön által használt eszközben. Ennek megfelelÅ‘en az Enigmail programban megadott lejárati idÅ‘k figyelmen kívül lesznek hagyva. prefEnigmail.oneKeyserverOnly=Hiba – Csak egy kulcskiszolgálót adhat meg a hiányzó OpenPGP-kulcsok automatikus letöltéséhez. enterAdminPin=Ãrja be az intelligens kártya adminisztrátori PIN-kódját. enterCardPin=Ãrja be az intelligens kártya PIN-kódját. notInit=Hiba – Az Enigmail szolgáltatás még nem indult el badCommand=Hiba – A titkosító parancs sikertelen volt cmdLine=parancssor és kimenet: notRequired=Hiba – Titkosítás nem szükséges notComplete=Hiba – A kulcskészítés még nem fejezÅ‘dött be invalidEmail=Hiba – Érvénytelen email cím(ek) noPassphrase=Hiba – Nincs jelmondat megadva noPGPblock=Hiba – Nem található érvényes védett OpenPGP-adatblokk unverifiedReply=A beljebb kezdett üzenetrész (válasz) valószínűleg módosult keyInMessageBody=Az üzenettörzsben kulcs található. kattintson az „Importálás†gombra a kulcs importálásához. sigMismatch=Hiba – EltérÅ‘ aláírás cantImport=Hiba a nyilvános kulcs importálásakor\n\n doImportOne=Importálja a következÅ‘t: %1$S (%2$S)? doImportMultiple=Importálja a következÅ‘ OpenPGP-kulcsot?\n\n%S previewFailed=A nyilvános kulcsfájl nem olvasható. # Strings used in errorHandling.jsm sc.wrongCardAvailable=A kártyaolvasóban a(z) „%1$S†intelligens kártya található, amely nem használható a művelet végrehajtásához.\nKérem, helyezze be a(z) „%2$S†intelligens kártyát és ismételje meg a műveletet. sc.insertCard=A művelet végrehajtásához a(z) „%S†intelligens kártyára van szükség.\nKérem, helyezze be az intelligens kártyát és ismételje meg a műveletet. sc.removeCard=A művelet végrehajtásához nincs szükség intelligens kártyára.\nKérem, távolítsa el az intelligens kártyát és ismételje meg a műveletet. sc.noCardAvailable=Nem található intelligens kártya az olvasóban.\nKérem, helyezze be az Intelligens kártyát és ismételje meg a műveletet. sc.noReaderAvailable=Az intelligens kártyaolvasó nem elérhetÅ‘.\nKérem, csatlakoztassa az Intelligens kártyaolvasót, helyezze be a kártyát, majd ismételje meg a műveletet. keyError.keySpecNotFound=A(z) „%S†e-mail cím nem egyeztethetÅ‘ össze a kulcstartón található kulccsal. keyError.keyIdNotFound=A beállított „%S†azonosítójú kulcs nem található meg a kulcstartón. keyError.resolutionAction=Adjon meg egy érvényes OpenPGP kulcsot a Postafiók beállításai párbeszédablakban az OpenPGP részben. missingPassphrase=Hiányzó jelmondat errorHandling.gpgAgentInvalid=A számítógépen olyan gpg-agent verzió található, amely nem működik együtt a telepített GnuPG verzióval. errorHandling.gpgAgentError=A GnuPG nem képes kommunikálni a gpg-agent programmal (amely a GnuPG része). errorHandling.dirmngrError=A GnuPG nem képes kommunikálni a dirmngr programmal (amely a GnuPG része). errorHandling.pinentryError=A GnuPG nem tudja lekérdezni a jelmondatot a pinentry segítségével. errorHandling.readFaq=Ez egy rendszer telepítési vagy beállítási hiba, amely meggátolja az Enigmail programot a helyes működésben. Ez a hiba nem javítható automatikusan.\n\nA hibaelhárítással kapcsolatos teendÅ‘kért látogassa meg az Enigmail terméktámogatási weboldalát:https://enigmail.net/faq. gpgNotFound=A GnuPG program („%Sâ€) nem található.\nGyÅ‘zÅ‘djön meg róla, hogy a GnuPG útvonala megfelelÅ‘en van beállítva az Enigmail beállításainál. gpgNotInPath=A GPG program nem található az útvonalban (PATH).\nGyÅ‘zÅ‘djön meg róla, hogy a GPG útvonala megfelelÅ‘en van beállítva az Enigmail beállításainál. enigmailNotAvailable=Az Enigmail alapszolgáltatások nem érhetÅ‘k el gpgAgentNotStarted=Nem tudom elindítani a gpg-agent programot, amely szükséges a GnuPG program %S verziójához. prefUntrusted=MEGBÃZHATATLAN prefRevoked=VISSZAVONT KULCS prefExpiredKey=LEJÃRT KULCS prefExpired=LEJÃRT prefGood=Jó aláírás: %S prefBad=ROSSZ aláírás: %S failCancel=Hiba – Kulcslekérés a felhasználó által megszakítva failNoServer=Hiba – Nincs kulcskiszolgáló megadva, ahonnan letölthetÅ‘ a kulcs failNoID=Hiba – Nincs kulcsazonosító megadva a kulcs lekéréséhez failKeyExtract=Hiba – A kulcskinyerÅ‘ parancs sikertelen volt notFirstBlock=Hiba – Az elsÅ‘ OpenPGP-blokk nem nyilvános kulcs blokkja importKeyConfirm=Importálja a levélbe ágyazott nyilvános kulcsokat? failKeyImport=Hiba – A kulcsok importálása sikertelen fileWriteFailed=Hiba történt a fájl írásakor: %S importKey=Nyilvános kulcs importálása a kulcskiszolgálóról: %S uploadKey=Nyilvános kulcs küldése a kulcskiszolgálóra: %S keyId=Kulcsazonosító keyAndSigDate=Kulcsazonosító: 0x%1$S / Aláírva: %2$S keyFpr=Kulcs ujjlenyomata: %S noEmailProvided=Nem adott meg e-mail címet. keyAlreadySigned=A kulcs korábban már alá lett írva. gnupg.invalidKey.desc=A(z) „%S†kulcs nem található vagy nem érvényes. Esetleg lejárt az érvényessége az (al)kulcsnak. selKeyExpired=lejár %S createdHeader=Létrehozva atLeastOneKey=Nincs kulcs kiválasztva. Ki kell választani legalább egy kulcsot az elfogadáshoz. fewerKeysThanRecipients=Kevesebb kulcsot választott ki, mint amennyi címzett van. Biztos benne, hogy a titkosítókulcsok listája teljes? userSel.button.goBack=Válasszon ki több kulcsot userSel.secretKeySel.title=Válasszon ki titkos OpenPGP-kulcsot az üzenet aláírásához userSel.problemNoKey=Nincs érvényes kulcs userSel.problemMultipleKeys=Több kulcs # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Küldés késÅ‘bb # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Megjegyzés: PGP/MIME formátum csak néhány levelezÅ‘programban használható. Windows alatt csak a Mozilla/Thunderbird, Sylpheed, Pegasus és Mulberry támogatja ezt a szabványt; Linux/UNIX és Mac OS X legjobban elterjedt levelezÅ‘programjai támogatják. Ha nem biztos benne, válassza a %S lehetÅ‘séget. first=elsÅ‘ second=második # Strings used in am-enigprefs.js encryptKeyHeader=Válasszon ki OpenPGP-kulcsot a titkosításhoz identityName=Azonosító: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Aktiválta a titkosítást, de nem jelölt ki egy kulcsot. Ha %1$S számára küldött leveleit titkosítani szeretné, meg kell adnia egy vagy több kulcsot a kulcslistáról. Szeretné kikapcsolni a titkosítást %2$S számára? noKeyToUse=(nincs – nincs titkosítás) noEmptyRule=A szabály nem lehet üres. Adjon meg egy e-mail címet a Szabály mezÅ‘ben. invalidAddress=A beírt e-mail címek nem érvényesek. A címzettek nevét nem szabad beírni, csak az e-mail címet. Például:\nRossz: Senki Alfonz \nJó: alfonz.senki@cime.net noCurlyBrackets=A kapcsos zárójeleknek {} különleges jelentésük van, és nem használhatók e-mail címekben. Ha módosítani szeretné a szabály illeszkedési viselkedését, használja a „Szabály alkalmazása, ha a címzett…†lehetÅ‘séget.\nA „Súgó†gomb megnyomásával további segítséget kaphat. # Strings used in enigmailRulesEditor.js never=Soha always=Mindig possible=Ha lehet deleteRule=Valóban szeretné törölni a kijelölt szabályt? nextRcpt=(KövetkezÅ‘ címzett) negateRule=Nem addKeyToRule=A(z) „%1$S†kulcs (%2$S) hozzáadása címzettenkénti szabályhoz # Strings used in enigmailSearchKey.js needOnline=A kiválasztott funkció nem érhetÅ‘ el kapcsolat nélküli módban. Kérem, jelentkezzen be az Internetre, és próbálja ismét. protocolNotSupported=OpenPGP-kulcsok letöltését a kiválasztott protokoll ('%S://') nem támogatja. gpgkeysDisabled=Segíthet, ha engedélyezi az 'extensions.enigmail.useGpgKeysTool' lehetÅ‘séget. noKeyserverConn=Nem lehet kapcsolódni a kulcskiszolgálóhoz: %S. keyDownloadFailed=A kulcskiszolgálóról nem sikerült letölteni a kulcsot. Ãllapotüzenet:\n%S internalError=BelsÅ‘ hiba lépett fel. A kulcsot nem lehetett letölteni, illetve importálni. noKeyFound=Nem található egyetlen kulcs sem, amely megfelel a megadott keresési feltételeknek.\nKérem, jegyezze meg azt a kulcsazonosítót, amely „0xâ€-el kezdÅ‘dik (például: 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=A kulcsot nem találtam, illetve nem tudtam letölteni a kulcskiszolgálóról: gpgkeys_%S nem futtatható. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nem sikerült a tulajdonos megbízhatóságát beállítani. # Strings in enigmailSignKeyDlg.js signKeyFailed=Kulcs aláírása nem sikerült. alreadySigned.label=Megjegyzés: A(z) „%S†kulcs már alá van írva a kiválasztott titkos kulccsal. alreadySignedexportable.label=Megjegyzés: A(z) „%S†kulcs már exportálhatóan alá van írva a kiválasztott titkos kulccsal. A helyi aláírást nem használja. partlySigned.label=Megjegyzés: A(z) „%S†kulcshoz tartozó néhány felhasználói azonosító már alá van írva a kiválasztott titkos kulccsal. noTrustedOwnKeys=Nem található megfelelÅ‘ kulcs az aláíráshoz. Legalább egy teljesen megbízható titkos kulcsra van szükség a kulcsok aláírásához. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Kulcsok betöltése, kérem várjon… keyValid.unknown=ismeretlen keyValid.invalid=érvénytelen keyValid.disabled=letiltott keyValid.revoked=visszavont keyValid.expired=lejárt keyValid.noSubkey=nincs érvényes kulcsrész keyTrust.untrusted=megbízhatatlan keyTrust.marginal=részben megbízható keyTrust.full=megbízható keyTrust.ultimate=teljesen megbízható keyTrust.group=(csoport) keyType.public=nyilvános keyType.publicAndSec=nyilvános/titkos keyMan.enableKey=Kulcs engedélyezése keyMan.disableKey=Kulcs tiltása userAtt.photo=Felhasználói tulajdonság (JPEG-kép) asciiArmorFile=ASCII-adat fájlok (*.asc) importKeyFile=OpenPGP-kulcsfájl importálása gnupgFile=GnuPG fájlok saveRevokeCertAs=Visszavonási tanúsítvány készítése és mentés revokeCertOK=A visszavonási tanúsítvány létrejött. Ez használandó a nyilvános kulcs visszavonásához, például abban az esetben, ha elveszett a titkos kulcs.\n\nKérjük, biztonságos adathordozón helyezze el (például CD-n vagy floppylemezen). Ha valaki hozzáfér ehhez a tanúsítványhoz, akkor használhatatlanná tudja tenni a kulcsot. revokeCertFailed=A visszavonási tanúsítvány létrehozása nem sikerült. addUidOK=Felhasználói azonosító hozzáadva. addUidFailed=Nem sikerült hozzáadni a felhasználói azonosítót. noKeySelected=Legalább egy kulcsot ki kell választani a listából, hogy a kijelölt művelet elvégezhetÅ‘ legyen. exportToFile=Nyilvános kulcsok fájlba mentése exportKeypairToFile=Titkos és nyilvános kulcsok fájlba mentése exportSecretKey=Szeretné menteni a titkos kulcsot is az OpenPGP kulcs-fájlhoz? saveKeysOK=A kulcsok mentése sikerült saveKeysFailed=Nem sikerült a kulcsokat elmenteni. importKeysFailed=Nem sikerült a kulcsokat beolvasni. enableKeyFailed=Kulcsok engedélyezése/tiltása nem sikerült specificPubKeyFilename=%1$S (0x%2$S) nyilvános specificPubSecKeyFilename=%1$S (0x%2$S) nyilvános-titkos defaultPubKeyFilename=Mentett-nyilvanos-kulcsok defaultPubSecKeyFilename=Mentett-nyilvanos-es-titkos-kulcsok noSecretKeys=Nem található titkos kulcs.\n\nSzeretne most létrehozni egy saját kulcsot? sendKeysOk=Kulcs(ok) elküldése sikerült sendKeysFailed=Nem sikerült a kulcs(ok) elküldése receiveKeysOk=Kulcs(ok) frissítése sikerült receiveKeysFailed=Kulcs(ok) letöltése nem sikerült importFromClip=Szeretné a vágólapról betölteni a kulcs(ok)at? importFromUrl=Publikus kulcs letöltése errÅ‘l az URL-címrÅ‘l: copyToClipbrdFailed=Nem sikerült a vágólapra másolni a kijelölt kulcs(ok)at. copyToClipbrdOK=A kulcs(ok) a vágólapra kerültek deleteSecretKey=FIGYELMEZTETÉS: A titkos kulcs törlését kezdeményezte.\nHa letörli a titkos kulcsot, akkor a korábban ezzel a kulccsal titkosított leveleit soha többé nem tudja visszafejteni, illetve a kulcsot sem tudja visszavonni többé.\n\nBiztosan törölni akarja MINDKÉT, a titkos és a nyilvános kulcsot is\n„%Sâ€? deleteMix=FIGYELMEZTETÉS: A titkos kulcsok törlését kezdeményezte.\nHa letörli a titkos kulcsot, akkor a korábban ezzel a kulccsal titkosított leveleit soha többé nem tudja visszafejteni.\n\nBiztosan törölni akar MINDEN kiválasztott titkos és nyilvános kulcsot? deletePubKey=Szeretné törölni a következÅ‘ nyilvános kulcsot\n„%Sâ€? deleteSelectedPubKey=Szeretné törölni a kijelölt nyilvános kulcsokat? deleteKeyFailed=A kulcs nem törölhetÅ‘. revokeKeyQuestion=A következÅ‘ kulcs visszavonását kezdte el: „%Sâ€.\n\nA kulcs visszavonása után Ön nem tud majd aláírni ezzel a kulccsal és a visszavonás közreadása után, mások sem tudnak majd – ehhez a kulcshoz tartozó – titkosított üzenetet küldeni. Továbbra is használhatja a kulcsot a régi üzenetek visszafejtésére.\n\nKívánja folytatni a visszavonást? revokeKeyOk=A kulcs visszavonása sikerült. Ha a kulcs elérhetÅ‘ a kulcskiszolgálón, javasoljuk, hogy töltse fel oda is, hogy a nyilvánosság felé is látszódjon a visszavonás. revokeKeyFailed=A kulcs nem vonható vissza. refreshAllQuestion=Nincs kiválasztva egyetlen kulcs sem. Szeretné frissíteni az összes kulcsot? refreshKey.warn=Figyelmeztetés: Az összes kulcs frissítése hosszabb ideig eltarthat, a kulcsok mennyiségétÅ‘l és a kapcsolat sebességétÅ‘l függÅ‘en.\n\nFolytatja? downloadContactsKeys.warn=Figyelmeztetés: Az összes kulcs frissítése hosszabb ideig eltarthat, a kulcsok mennyiségétÅ‘l és a kapcsolat sebességétÅ‘l függÅ‘en. downloadContactsKeys.importFrom=Kívánja importálni a névjegyeket a következÅ‘ címjegyzékbÅ‘l: %S? keyMan.button.exportSecKey=Titkos kulcs &exportálása keyMan.button.exportPubKey=Csak a &nyilvános kulcs exportálása keyMan.button.import=&Importálás keyMan.button.refreshAll=Összes kulcs f&rissítése keyMan.button.revokeKey=Kulcs &visszavonás keyMan.button.skip=Kulcs kihagyá&sa keylist.noOtherUids=Nincs több azonosító keylist.hasOtherUids=Más néven keylist.noPhotos=Nem érhetÅ‘ el fotó keylist.hasPhotos=Fotók keyMan.addphoto.filepicker.title=Válassza ki a fotót keyMan.addphoto.warnLargeFile=A kiválasztott fájl nagyobb mint 25 kilobyte.\nNem ajánlatos túl nagy fájlt kiválasztani, mert a kulcs nagyon nagy méretű lesz. keyMan.addphoto.noJpegFile=A kiválasztott fájl nem tűnik JPEG-fájlnak. Válasszon ki egy JPEG-fájlt. keyMan.addphoto.failed=A fotó nem adható hozzá. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Az elsÅ‘dleges felhasználói azonosító módosítása sikertelen. changePrimUidOK=Sikerült módosítani az elsÅ‘dleges felhasználói azonosítót. deleteUidFailed=%S felhasználó azonosítójának törlése sikertelen deleteUidOK=%S felhasználó azonosítója sikeresen törölve revokeUidFailed=%S felhasználó azonosítójának visszavonása nem sikerült revokeUidOK=%S felhasználói azonosító visszavonása sikerült. Ha a kulcs elérhetÅ‘ a kulcskiszolgálón, javasoljuk, hogy töltse fel oda is, hogy a nyilvánosság felé is látszódjon a visszavonás. revokeUidQuestion=Valóban szeretné visszavonni a(z) %S felhasználó azonosítót? deleteUidQuestion=Valóban szeretné törölni a(z) %S felhasználó azonosítót?\n\nMegjegyzés: ha feltölti a nyilvános kulcsát a kulcskiszolgálóra, akkor a felhasználói azonosító törlése nem változtat semmit. Ebben az esetben használandó a „Felhasználói azonosító visszavonásaâ€. # Strings in enigmailKeyImportInfo.xul importInfoTitle=Sikerült a kulcsok importálása importInfoSuccess=✅ importInfoBits=Bit importInfoCreated=Létrehozva importInfoFpr=Ujjlenyomat importInfoDetails=(Részletek) importInfoNoKeys=Nincsenek kulcsok importálva. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=nyilvános kulcs keyTypePrimary=elsÅ‘dleges kulcs keyTypeSubkey=kulcsrész keyTypePair=kulcspár keyExpiryNever=soha keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Titkosítás keyUsageSign=Aláírás keyUsageCertify=Tanúsítás keyUsageAuthentication=Hitelesítés keyDoesNotExpire=A kulcs soha nem jár le # Strings in enigmailGenCardKey.xul keygen.started=Kérem várjon, amíg a kulcs elkészül… keygen.completed=Kulcs elkészült. Az új kulcsazonosító: 0x%S keygen.keyBackup=A kulcs lementve mint %S keygen.passRequired=Adja meg a jelmondatát, ha szeretne biztonsági másolatot készíteni a kulcsról az intelligens kártyán kívülre. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=A megadott PIN-kódok nem egyeznek. Kérem, ismételje meg PIN-kódok megadását. cardPin.minLength=A PIN-kódnak legalább %S karakterbÅ‘l kell állnia. cardPin.processFailed=PIN-kód módosítása nem sikerült. # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Kulcsok frissítése, kérem várjon… keyserverProgress.uploading=Kulcsok feltöltése, kérem várjon… keyserverTitle.refreshing=Kulcsok frissítése keyserverTitle.uploading=Kulcs feltöltése # Strings in enigmailSetupWizard passphrase.min8keys=A jelszavának legalább 8 karaktert kell tartalmaznia. setupWizard.reallyCancel=Valóban ki szeretne lépni az Enigmail Beállítás TündérbÅ‘l? setupWizard.invalidGpg=A megadott fájl nem egy GnuPG végrehajtható fájl. Adjon meg egy másik fájlt. setupWizard.specifyFile=Legalább a nyilvános kulcsot meg kell adnia a művelet végrehajtásához. setupWizard.installFailed=Az telepítés nem sikerült. Próbálja meg újra a telepítést, vagy telepítse a GnuPG programot kézzel és adja meg az elérési útját a „Tallózás†gombbal. setupWizard.downloadForbidden=Biztonsága érdekében a GnuPG nem kerül letöltésre. Látogassa meg a http://www.gnupg.org/ weboldalt a GnuPG letöltéséhez. setupWizard.downloadImpossible=A GnuPG jelenleg nem tölthetÅ‘ le. Próbálja meg késÅ‘bb vagy látogassa meg a http://www.gnupg.org/ weboldalt a GnuPG letöltéséhez. setupWizard.hashSumError=A tündér nem tudja ellenÅ‘rizni a letöltött fájl érvényességét. A fájl esetleg hibás vagy rossz szándékkal megváltoztatott lehet. Ennek ellenére folytatni kívánja a telepítést? setupWizard.importSettingsFile=Adja meg a betöltendÅ‘ mentés fájlt setupWizard.invalidSettingsFile=A megadott fájl nem érvényes Enigmail beállítások mentésfájl. setupWizard.gpgConfExists=A GnuPG beállítófájl már létezik. Felül kívánja írni a fájlt egy régebbi telepítésbÅ‘l származó fájllal? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Hiba lépett fel a GnuPG letöltése során. További részleteket a konzol naplóban talál. installGnuPG.installFailed=Hiba lépett fel a GnuPG telepítése során. További részleteket a konzol naplóban talál. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Ki kell töltenie a név és e-mail mezÅ‘ket. addUidDlg.nameMinLengthError=A névnek legalább 5 karakter hosszúnak kell lennie. addUidDlg.invalidEmailError=Érvényes e-mail címet kell megadnia. addUidDlg.commentError=Zárójelek nem szerepelhetnek a megjegyzésekben # Strings in enigmailCardDetails.js Carddetails.NoASCII=Az OpenPGP intelligens kártya kizárólag ASCII karaktereket támogat a keresztnévben és a névben. # network error types errorType.SecurityCertificate=A webszolgáltatás által megadott biztonsági tanúsítvány nem érvényes. errorType.SecurityProtocol=A webszolgáltatás által alkalmazott protokoll ismeretlen. errorType.Network=Hálózati hiba történt. # filter stuff filter.folderRequired=Ki kell választania a célmappát. filter.decryptMove.label=Végleges visszafejtés (Enigmail) filter.decryptCopy.label=Visszafejtett másolat létrehozása (Enigmail) filter.decryptMove.warnExperimental=Figyelmeztetés – a „Végleges visszafejtés†szűrÅ‘művelet tönkreteheti az üzeneteket.\n\nErÅ‘sen ajánlott, hogy elÅ‘ször a „Visszafejtett másolat létrehozása†szűrÅ‘vel próbálkozzon, ellenÅ‘rizze az eredményt és csak akkor használja ezt a szűrÅ‘t, ha nem talált semmi problémát. # strings in enigmailConvert.jsm converter.decryptBody.failed=Nem fejthetÅ‘ vissza az üzenet, amelynek tárgya:\n„%Sâ€.\nMegpróbálja visszafejteni egy másik jelmondattal, vagy kihagyja ezt az üzenetet? converter.decryptAtt.failed=Nem fejthetÅ‘ vissza a(z) „%1$Sâ€\nüzenet mellékelte, amelynek tárgya:\n„%2$Sâ€.\nMegpróbálja visszafejteni egy másik jelmondattal, vagy kihagyja ezt az üzenetet? saveLogFile.title=Naplófájl mentése # strings in gpg.jsm unknownSigningAlg=Ismeretlen aláíró algoritmus (azonosító: %S) unknownHashAlg=Ismeretlen kriptográfiai algoritmus (azonosító: %S) # strings in keyRing.jsm keyring.photo=Fénykép keyRing.pubKeyRevoked=A(z) „%1$S†kulcs (azonosító: %2$S) vissza lett vonva. keyRing.pubKeyExpired=A(z) „%1$S†kulcs (azonosító: %2$S) lejárt. keyRing.pubKeyNotForSigning=A(z) „%1$S†kulcs (azonosító: %2$S) nem használható aláíráshoz. keyRing.pubKeyNotForEncryption=A(z) „%1$S†kulcs (azonosító: %2$S) nem használható titkosításhoz. keyRing.keyDisabled=A(z) „%1$S†kulcs (azonosító: %2$S) le van tiltva, nem használható. keyRing.keyNotTrusted=A(z) „%1$S†kulcs (azonosító: %2$S) nem eléggé megbízható. Amennyiben mégis ezt a kulcsot szeretné használni aláíráshoz állítsa be a kulcs megbízhatóságát „teljesen megbízható†szintre. keyRing.keyInvalid=A(z) „%1$S†kulcs (azonosító: %2$S) érvénytelen (például nem rendelkezik önaláírással). keyRing.signSubKeysRevoked=A(z) „%1$S†kulcs (azonosító: %2$S) összes aláíró alkulcsa vissza lett vonva. keyRing.signSubKeysExpired=A(z) „%1$S†kulcs (azonosító: %2$S) összes aláíró alkulcsa lejárt. keyRing.signSubKeysUnusable=A(z) „%1$S†kulcs (azonosító: %2$S) összes aláíró alkulcsa vissza lett vonva, lejárt, vagy más okból nem használható. keyRing.encSubKeysRevoked=A(z) „%1$S†kulcs (azonosító: %2$S) összes titkosító alkulcsa vissza lett vonva. keyRing.encSubKeysExpired=A(z) „%1$S†kulcs (azonosító: %2$S) összes titkosító alkulcsa lejárt. keyRing.noSecretKey=Úgy tűnik nem rendelkezik a(z) %1$S titkos kulcsával (azonosító: %2$S) a számítógép kulcstartóján, így ezt a kulcsot nem használhatja aláírásra. keyRing.encSubKeysUnusable=A(z) „%1$S†kulcs (azonosító: %2$S) összes titkosító alkulcsa vissza lett vonva, lejárt, vagy más okból nem használható. #strings in exportSettingsWizard.js cannotWriteToFile=Hiba lépett fel a fájl mentése során: „%Sâ€. Válasszon egy másik fájlt. dataExportError=Hiba történt az adatok exportálása során: %s. enigmailSettings=EnigmailBeallitasok defaultBackupFileName=Enigmail-export specifyExportFile=Adja meg a fájlnevet az exportáláshoz homedirParamNotSUpported=További paraméterek, amelyek az elérési utat állítják be – például: „--homedir†és „--keyring†– nem támogatottak a beállítások mentésekor és visszatöltésekor. Használjon más megoldást, például a „GNUPGHOME†környezeti változót. #strings in expiry.jsm expiry.keyExpiresSoon=A következÅ‘ kulcs lejár %1$S nap múlva:\n%2$S. Készítse el az új kulcsot és a postafiókját állítsa át az új kulcs használatára. expiry.keysExpireSoon=A következÅ‘ kulcsok lejárnak %1$S nap múlva:\n%2$S. Készítse el az új kulcsokat és a postafiókját állítsa át az új kulcsok használatára. enigmail/lang/hu/help/000077500000000000000000000000001266701624400151405ustar00rootroot00000000000000enigmail/lang/hu/help/compose.html000066400000000000000000000100751266701624400174760ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/hu/help/editRcptRule.html000066400000000000000000000116031266701624400204350ustar00rootroot00000000000000 Enigmail Help: Edit Per-Recipient Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit Per-Recipient Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set Enigmail Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the Enigmail Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the Per-Recipient Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/hu/help/help.html000066400000000000000000000104671266701624400167660ustar00rootroot00000000000000 Enigmail Help

Enigmail Help

Using Enigmail when reading messages

  • Decrypt button in main Mail window
    This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
  • Pen and Key icons in Message Header display
    The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
    • Enigmail Security info: allows you to view the output status from GnuPG for the message.
    • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
    • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
    • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

    If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

    You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

    Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

    To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

  • Opening encrypted attachments / importing attached OpenPGP keys
    Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page
If you have questions or comments about enigmail, please send a message to the Enigmail mailing list

Enigmail is open source and licensed under the Mozilla Public License and the GNU General Public License

enigmail/lang/hu/help/initError.html000066400000000000000000000045461266701624400200140ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing Enigmail

Enigmail Help

How to Resolve Problems with Initializing Enigmail

There are several reasons why initializing Enigmail does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for Enigmail to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and Enigmail cannot find it, then you need to manually set the path to GnuPG in the Enigmail Preferences (menu Enigmail > Preferences)

Enigmime failed to initialize

Enigmail works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/hu/help/messenger.html000066400000000000000000000101411266701624400200130ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • Enigmail Security info: allows you to view the output status from GnuPG for the message.
  • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/hu/help/rulesEditor.html000066400000000000000000000060311266701624400203270ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/hu/help/sendingPrefs.html000066400000000000000000000047571266701624400204720ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of Enigmail to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/it/000077500000000000000000000000001266701624400142105ustar00rootroot00000000000000enigmail/lang/it/am-enigprefs.properties000066400000000000000000000001101266701624400206730ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP enigmail/lang/it/enigmail.dtd000066400000000000000000001416361266701624400165050ustar00rootroot00000000000000 Sicurezza OpenPGP)"> NOTA: La creazione della chiave può richiedere anche parecchi minuti. Non uscire dall'applicazione prima del termine dell'operazione. Navigare su internet o svolgere attività che sfruttino intensamente il disco durante la creazione della chiave potrà facilitare la generazione dei numeri casuali e accelerare il processo stesso. Sarai avvertito quando la creazione della chiave sarà completata."> ' non è valido"> NOTA: La creazione della chiave può richiedere anche diversi minuti per essere completata. Non uscire dall'applicazione mentre la creazione della chiave è in corso. Sarai avvertito al termine del processo."> Nota: Enigmail verificherà comunque le firme sulle email di tutti gli account o identità, indipendentemente dal fatto che sia abilitato o meno"> chiave pubblica è per gli altri per inviare a te messaggi cifrati. Puoi distribuirla a chiunque."> chiave privata è solo per te per decifrare questi messaggi e per inviare messaggi firmati. Non dovresti fornirla a nessuno."> chiave privata è solo per te per decifrare questi messaggi e per inviare messaggi firmati. Non dovresti fornirla a nessuno. Per proteggere la tua chiave privata, ti sarà richiesta una frase segreta nelle due finestre seguenti."> frase segreta è una password per proteggere la tua chiave privata. Impedisce utilizzi impropri della tua chiave privata."> non sono consigliati."> Ti sarà richiesta la digitazione della tua password."> esporta i tuoi dati dal vecchio computer utilizzando la procedura di backup dalle preferenze di Enigmail importa i dati nel nuovo computer utilizzando questa procedura. "> Grazie per aver scelto Enigmail."> esporta i tuoi dati dal vecchio computer utilizzando questa procedura importa i dati nel nuovo computer utilizzando la procedura di configurazione. "> enigmail/lang/it/enigmail.properties000066400000000000000000001163371266701624400201260ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Avviso Enigmail enigConfirm=Conferma Enigmail enigError=Errore Enigmail enigPrompt=Richiesta Enigmail dlgYes=&Sì dlgNo=&No dlgKeepSetting=Ricorda la risposta e non chiedere ancora dlgNoPrompt=Non mostrare ancora questa finestra dlg.button.delete=&Elimina dlg.button.cancel=&Annulla dlg.button.close=&Chiudi dlg.button.continue=Con&tinua dlg.button.skip=&Salta dlg.button.overwrite=S&ovrascrivi dlg.button.view=&Visualizza dlg.button.retry=&Riprova dlg.button.ignore=&Ignora repeatPrefix=\n\nQuesto avviso sarà ripetuto %S repeatSuffixSingular=altra volta. repeatSuffixPlural=altre volte. noRepeat=\n\nQuesto avviso non sarà ripetuto fino a che non aggiornerai Enigmail. pgpNotSupported=Sembra che tu stia usando Enigmail insieme a PGP 6.x\n\nSfortunatamente, PGP 6.x ha una serie di problemi che impediscono a Enigmail di operare correttamente. Pertanto, Enigmail non supporta più PGP 6.x ed è necessario usare GnuPG (GPG) al suo posto.\n\nSe hai bisogno di aiuto su come passare da PGP a GnuPG, controlla la sezione 'Help' della pagina web di Enigmail. initErr.howToFixIt=Per utilizzare Enigmail, è richiesto GnuPG. Se non hai ancora installato GnuPG, il modo più semplice per farlo è utilizzare il pulsante "Procedura guidata di configurazione" initErr.setupWizard.button=Procedura guidata di configura&zione passphraseCleared=La frase segreta è stata cancellata. cannotClearPassphrase=Stai utilizzando uno strumento non standard (come gnome-keyring) per la gestione della frase segreta. Non è perciò possibile cancellare la frase segreta dall'interno di Enigmail. noPhotoAvailable=Nessuna foto disponibile debugLog.title=Log di debug di Enigmail error.photoPathNotReadable=Il percorso '%S' della foto non è leggibile # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Questa nuova versione di Enigmail apporta modifiche significative alla gestione delle preferenze e delle opzioni. Abbiamo provato a trasferire le vecchie impostazioni in questa nuova versione. Tuttavia, non siamo in grado di verificarle tutte automaticamente. Controlla le nuove preferenze e opzioni risultanti. enigmailCommon.checkPreferences=Controlla preferenze... preferences.defaultToPgpMime=Abbiamo modificato la cifratura predefinita del messaggio in Enigmail da PGP in linea a PGP/MIME. Ti consigliamo di mantenerla come predefinita.\n\nSe desideri utilizzare ancora PGP in linea in modo predefinito, puoi farlo nelle impostazioni dell'account sotto Sicurezza OpenPGP. usingVersion=In esecuzione la versione %S di Enigmail usingAgent=L'eseguibile di %S in uso per cifrare e decifrare è: %S agentError=ERRORE: accesso al servizio Enigmime non riuscito! accessError=Errore durante l'accesso al servizio Enigmail onlyGPG=La creazione delle chiavi funziona solo con GnuPG (non con PGP)! keygenComplete=Creazione della chiave completata! L'identità <%S> sarà utilizzata per la firma. revokeCertRecommended=Ti consigliamo decisamente di creare un certificato di revoca per la tua chiave. Questo certificato può essere usato per invalidare la tua chiave, se ad esempio la tua chiave privata viene smarrita o compromessa. Vuoi creare un certificato di revoca adesso? keyMan.button.generateCert=&Genera certificato genCompleteNoSign=Creazione certificato completata! genGoing=La creazione della chiave è già in corso! passNoMatch=Le frasi segrete digitate non corrispondono; prova a reinserirle passCheckBox=Marca la casella se non vuoi specificare una frase segreta per la chiave passUserName=Specifica un nome utente per questa identità keygen.missingUserName=Non è stato specificato alcun nome per l'account/identità selezionato. Digita un valore nel campo "Il tuo nome" nelle impostazioni dell'account. keygen.passCharProblem=Stai utilizzando caratteri speciali nella tua frase segreta. Sfortunatamente, ciò può causare problemi con altre applicazione. Ti consigliamo di scegliere una frase segreta che contenga solo i caratteri che seguono:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Due to technical reasons, your passphrase may not start or end with a space character. changePassFailed=Cambiamento della frase segreta non riuscito. keyConfirm=Creare chiave pubblica e privata per '%S'? keyMan.button.generateKey=&Genera chiave keyAbort=Interrompere la creazione della chiave? keyMan.button.generateKeyAbort=&Interrompi la creazione della chiave keyMan.button.generateKeyContinue=&Continua la creazione della chiave expiryTooLong=Non puoi creare una chiave che scadrà tra più di 100 anni. expiryTooLongShorter=You cannot create a key that expires in more than 90 years. expiryTooShort=La tua chiave deve essere valida per almeno un giorno. dsaSizeLimit=DSA signing keys are limited to 3072 bits. The key size will be reduced accordingly. keyGenFailed=Creazione della chiave non riuscita. Controlla la console di Enigmail (Menu Enigmail -> Debug di Enigmail) per maggiori dettagli. setKeyExpirationDateFailed=La data di scadenza non dovrebbe essere modificata # Strings in enigmailMessengerOverlay.js securityInfo=Informazioni di sicurezza Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Gli allegati di questo messaggio non sono stati firmati o cifrati*\n\n possiblyPgpMime=Il messaggio potrebbe essere firmato o cifrato nel formato PGP/MIME; fai clic sul pulsante Decifra per verificare noDecrypted=Nessun messaggio decifrato da salvare!\nUsa il comando Salva dal menu File noMessage=Nessun messaggio da salvare! useButton=Fai clic sul pulsante Decifra per decifrare il messaggio saveHeader=Enigmail: salva messaggio decifrato saveAttachmentHeader=Enigmail: salva allegato decifrato noTempDir=Impossibile trovare una cartella temporanea in cui poter scrivere\nImposta la variabile di ambiente TEMP attachmentPgpKey=L'allegato '%S' che stai aprendo sembra essere un file contenente chiavi OpenPGP.\n\nFai clic su 'Importa' per importare le chiavi contenute al suo interno oppure 'Visualizza' per visualizzare il file in una finestra del browser beginPgpPart=********* *INIZIO PARTE CIFRATA o FIRMATA* ********* endPgpPart=********** *FINE PARTE CIFRATA o FIRMATA* ********** notePartEncrypted=Enigmail: *Alcune parti del messaggio NON sono state cifrate o firmate* noteCutMessage=Enigmail: *Sono stati trovati blocchi di messaggio multipli -- decifratura/verifica interrotta* decryptOkNoSig=Attenzione\n\nLa decifratura è riuscita, ma non è stato possibile verificare correttamente la firma msgOvl.button.contAnyway=&Continua comunque signature.verifiedOK=La firma per l'allegato %S è stata verificata correttamente signature.verifyFailed=La firma per l'allegato %S non può essere verificata attachment.noMatchToSignature=L'allegato '%S' non corrisponde a un file di firma attachment.noMatchFromSignature=Il file di firma '%S' non corrisponde a un allegato fixBrokenExchangeMsg.failed=La riparazione del messaggio non è riuscita. keysToExport=Scegli le chiavi OpenPGP da inserire keysToUse=Scegli la/le chiave/i OpenPGP da usare per %S pubKey=Chiave pubblica per %S\n windowLocked=La finestra di composizione è bloccata; invio annullato sendUnencrypted=Inizializzazione di Enigmail non riuscita.\nInviare il messaggio non cifrato? composeSpecifyEmail=Specifica il tuo indirizzo email principale, che sarà usato per scegliere la chiave che firmerà i messaggi in uscita.\n Se lasci in bianco, l'indirizzo del mittente nel campo DA di ogni messaggio sarà usato per scegliere la chiave per la firma. sendingHiddenRcpt=Questo messaggio ha destinatari in CCN (copia nascosta). Se questo messaggio verrà cifrato, sarà possibile tenere nascosti i destinatari in CCN, ma gli utenti di alcuni programmi (come PGP Corp.) non saranno in grado di decifrare il messaggio. Pertanto, consigliamo di evitare di spedire messaggi cifrati a destinatari in CCN. sendWithHiddenBcc=Nascondi i destinatari in CCN sendWithShownBcc=Cifra normalmente sendingNews=Operazione di invio cifrato interrotta.\n\nQuesto messaggio non può essere cifrato perché il destinatario è un gruppo di discussione. Invia nuovamente il messaggio senza cifratura. sendToNewsWarning=Attenzione: stai per inviare un messaggio cifrato a un gruppo di discussione.\n\nCiò è altamente sconsigliabile, perché ha senso solo se tutti i membri del gruppo sono in grado di decifrare il messaggio, cioè se il messaggio viene cifrato con le chiavi di tutti i membri del gruppo. Invia questo messaggio solo se sai perfettamente cosa stai facendo.\n\nVuoi continuare? hasHTML=Attenzione, email in formato HTML:\nQuesto messaggio potrebbe contenere parti in formato HTML, che potrebbero impedire la firma/cifratura. Per evitare questo in futuro, dovrai tenere premuto il tasto MAIUSC mentre fai clic sul pulsante Componi/Rispondi per inviare messaggi firmati.\nSe hai scelto di firmare le email in modo predefinito, deseleziona l'opzione 'Componi messaggi in HTML' per disabilitare permanentemente la creazione di email in HTML per questo account. strippingHTML=Il messaggio contiene una formattazione in HTML che andrà persa con la conversione in testo semplice per la firma/cifratura. Desideri continuare? msgCompose.button.sendAnyway=&Invia il messaggio comunque attachWarning=Gli allegati di questo messaggio non sono locali e non possono essere cifrati. Per cifrare gli allegati, salvali prima come file locali e allega di nuovo questi ultimi. Vuoi inviare il messaggio comunque? quotedPrintableWarn=Hai abilitato la codifica 'quoted-printable' per l'invio dei messaggi. Questo può provocare errori nella decifratura e/o nella verifica del messaggio.\nVuoi disattivare ora l'invio di messaggi 'quoted-printable'? minimalLineWrapping=Hai impostato l'interruzione di riga automatica ogni %S caratteri. Per una corretta cifratura e/o firma, questo valore deve essere almeno 68.\nVuoi impostare subito l'interruzione di riga dopo 68 caratteri? warning=Attenzione signIconClicked=Hai modificato manualmente la firma. Pertanto, durante la composizione di questo messaggio, (dis)attivare la firma non dipende più dalla (dis)attivazione della cifratura. pgpMime_sMime.dlg.text=Hai abilitato sia PGP/MIME che S/MIME. Sfortunatamente non è possibile supportare i due protocolli contemporaneamente. Seleziona PGP/MIME o S/MIME. pgpMime_sMime.dlg.pgpMime.button=Usa &PGP/MIME pgpMime_sMime.dlg.sMime.button=Usa &S/MIME errorKeyUnusable=L'indirizzo email o l'ID della chiave '%S' non corrisponde a una chiave OpenPGP valida, non scaduta.\nAssicurati di avere una chiave OpenPGP valida, e che le impostazioni dell'account si riferiscano a tale chiave. errorOwnKeyUnusable=L'ID della chiave '%S' configurato per l'identità corrente non fornisce una chiave OpenPGP utilizzabile.\n\nAssicurati di avere una chiave OpenPGP valida e non scaduta e che le impostazioni del tuo account puntino a tale chiave.\nSe la tua chiave non è scaduta, controlla se hai impostato la fiducia nel proprietario a completa o definitiva. msgCompose.cannotSaveDraft=Errore durante il salvataggio della bozza msgCompose.internalEncryptionError=Errore interno: cifratura promessa disabilitata msgCompose.internalError=Si è verificato un errore interno. msgCompose.toolbarTxt.signAndEncrypt=Questo messaggio sarà firmato e cifrato msgCompose.toolbarTxt.signOnly=Questo messaggio sarà firmato msgCompose.toolbarTxt.encryptOnly=Questo messaggio sarà cifrato msgCompose.toolbarTxt.noEncryption=Questo messaggio non sarà né firmato, né cifrato msgCompose.toolbarTxt.disabled=Enigmail è disabilitato per l'identità selezionata msgCompose.toolbarTxt.smime=S/MIME è abilitato - è potenzialmente in conflitto con Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME perciò non è utilizzato msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME è abilitato - Enigmail perciò non è utilizzato msgCompose.toolbarTxt.smimeNoDraftEncryption=- le bozze non saranno cifrate msgCompose.toolbarTxt.smimeConflict=Enigmail non è utilizzato poiché S/MIME è attualmente abilitato. Disabilita la firma e/o la cifratura S/MIME e abilita quindi la cifratura di Enigmail msgCompose.encryptedSubjectStub=Messaggio cifrato msgCompose.detailsButton.label=Dettagli... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Operazione di invio interrotta.\n\n # details: keyNotTrusted=La chiave '%S' non è sufficientemente affidabile keyNotFound=Chiave '%S' non trovata keyRevoked=Chiave '%S' revocata keyExpired=Chiave '%S' scaduta statPGPMIME=PGP/MIME statSigned=FIRMATO statEncrypted=CIFRATO statPlain=NON FIRMATO E IN CHIARO offlineSave=Salvo il messaggio %S destinato a %S nella cartella 'Da inviare'? onlineSend=Invio il messaggio %S destinato a %S? encryptKeysNote=Nota: il messaggio è cifrato con i seguenti ID utente / chiavi: %S hiddenKey= signFailed=Errore in Enigmail; Cifratura/firma non riuscita; spedire il messaggio in chiaro? msgCompose.button.sendUnencrypted=&Invia messaggio in chiaro recipientsSelectionHdr=Scegli i destinatari per la cifratura configureNow=Non hai ancora configurato le impostazioni di sicurezza Enigmail per questa identità. Vuoi farlo adesso? # encryption/signing status and associated reasons: encryptMessageAuto=Cifra messaggio (auto) encryptMessageNorm=Cifra messaggio signMessageAuto=Firma messaggio (auto) signMessageNorm=Firma messaggio encryptOff=Cifratura: DISATTIVA encryptOnWithReason=Cifratura: ATTIVA (%S) encryptOffWithReason=Cifratura: DISATTIVA (%S) encryptOn=Cifratura: ATTIVA signOn=Firma: ATTIVA signOff=Firma: DISATTIVA signOnWithReason=Firma: ATTIVA (%S) signOffWithReason=Firma: DISATTIVA (%S) reasonEnabledByDefault=abilitato in modo predefinito reasonManuallyForced=forzato manualmente reasonByRecipientRules=forzato dalle regole per destinatario reasonByAutoEncryption=forzato dalla cifratura automatica reasonByConflict=a causa di un conflitto nelle regole per destinatario reasonByEncryptionMode=a causa della modalità di cifratura reasonSmimeConflict=poiché S/MIME è invece abilitato # should not be used anymore: encryptYes=Il messaggio sarà cifrato encryptNo=Il messaggio non sarà cifrato # should not be used anymore: signYes=Il messaggio sarà firmato signNo=Il messaggio non sarà firmato # PGP/MIME status: pgpmimeNormal=Protocollo: PGP/MIME inlinePGPNormal=Protocollo: PGP in linea pgpmimeAuto=Protocollo: PGP/MIME (auto) inlinePGPAuto=Protocollo: PGP in linea (auto) # should not be used anymore pgpmimeYes=Sarà utilizzato PGP/MIME pgpmimeNo=Sarà utilizzato PGP in linea # Attach own key status (tooltip strings): attachOwnKeyNo=La tua chiave non sarà allegata attachOwnKeyYes=La tua chiave sarà allegata attachOwnKeyDisabled=La tua chiave non può essere allegata. Devi selezionare una chiave specifica\nnella sezione OpenPGP delle impostazioni account per abilitare questa funzionalità. rulesConflict=Alcune delle regole impostate per i destinatari sono in conflitto fra di loro\n%S\n\nInviare il messaggio con queste impostazioni? msgCompose.button.configure=&Configura msgCompose.button.send=&Invia messaggio msgCompose.button.save=&Salva messaggio # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Chiave pubblica %S richiesta per verificare la firma keyUsed=Chiave pubblica %S utilizzata per verificare la firma clickDecrypt=; fai clic sul pulsante 'Decifra' clickDecryptRetry=; fai clic sul pulsante 'Decifra' per riprovare clickDetailsButton=; fai clic sul pulsante 'Dettagli' per ulteriori informazioni clickImportButton=; fai clic sul pulsante 'Importa chiave' per scaricare la chiave keyTypeUnsupported=; il tipo di chiave non è supportato dalla tua versione di GnuPG msgPart=Parte del messaggio %S msgSigned=firmato msgSignedUnkownKey=firmato con una chiave sconosciuta msgEncrypted=cifrato msgSignedAndEnc=firmato e cifrato unverifiedSig=Firma non verificata incompleteDecrypt=Decifratura incompleta needKey=Errore - serve la chiave segreta per decifrare il messaggio failedDecrypt=Errore - decifratura non riuscita badPhrase=Errore - frase segreta non valida failedDecryptVerify=Errore - decifratura/verifica non riuscita viewInfo=; Visualizza > Informazioni di sicurezza messaggio per i dettagli decryptedMsg=Messaggio decifrato decryptedMsgWithFormatError=Messaggio decifrato (ripristinato formato dell'email PGP danneggiata, probabilmente a causa di un server Exchange datato. Il risultato potrebbe non essere perfettamente leggibile) usedAlgorithms=Algoritmi utilizzati: %S e %S # strings in pref-enigmail.js oldGpgVersion14=Inizializzazione di Enigmail non riuscita.\n\nStai utilizzando la versione %S di GnuPG, che non è più supportata.\nEnigmail richiede GnuPG versione 2.0.7 o successiva. Aggiorna la tua installazione di GnuPG, o Enigmail non funzionerà. locateGpg=Trova l'eseguibile di GnuPG invalidGpgPath=GnuPG non può essere eseguito dal percorso impostato. Enigmail rimarrà quindi disattivato fino a quando non imposterai di nuovo il percorso di GnuPG o non riavvierai l'applicazione. warningsAreReset=Tutti gli avvisi sono stati riattivati. prefs.gpgFound=GnuPG è stato trovato in %S prefs.gpgNotFound=Impossibile trovare GnuPG prefs.warnAskNever=Attenzione: l'attivazione di questa opzione implica l'invio automatico di email in chiaro senza nessuna ulteriore comunicazione in mancanza di chiavi disponibili per anche uno solo dei destinatari -- Enigmail non mostrerà nessun messaggio di avvertimento nel caso in cui questa eventualità si verifichi! prefs.warnIdleTimeForUnknownAgent=Impossibile connettersi a gpg-agent. Il tuo sistema utilizza uno strumento specializzato per la gestione della chiave segreta come gnome-keyring o seahorse-agent. Sfortunatamente, Enigmail non può controllare il timeout della frase segreta per lo strumento utilizzato. Perciò le relative impostazioni di timeout in Enigmail sono ignorate. prefEnigmail.oneKeyserverOnly=Errore - puoi specificare un solo server per lo scaricamento automatico delle chiavi OpenPGP mancanti. enterAdminPin=Inserisci l'Admin PIN della tua smartcard enterCardPin=Inserisci il PIN della tua smartcard notInit=Errore - servizio Enigmail non ancora inizializzato badCommand=Errore - comando di cifratura non riuscito cmdLine=riga di comando e risultato: notRequired=Errore - cifratura non richiesta notComplete=Errore - la creazione della chiave non è ancora completata invalidEmail=Errore - indirizzo/i email non valido/i noPassphrase=Errore - passphrase non inserita noPGPblock=Errore - non è stato trovato nessun blocco valido di dati OpenPGP unverifiedReply=La parte di messaggio citata (in risposta) è stata probabilmente modificata keyInMessageBody=Trovata chiave nel corpo del messaggio. Fai clic su 'Importa chiave' per importare la chiave sigMismatch=Errore - firma non corrispondente cantImport=Errore nell'importazione della chiave pubblica\n\n doImportOne=Vuoi importare %1$S (%2$S)? doImportMultiple=Vuoi importare le seguenti chiavi?\n\n%S previewFailed=Impossibile leggere il file della chiave pubblica. # Strings used in errorHandling.jsm sc.wrongCardAvailable=La smartcard %S trovata nel lettore non può essere utilizzata per elaborare il messaggio.\nInserisci la smartcard %S e ripeti l'operazione. sc.insertCard=L'operazione richiede la tua smartcard %S.\nInserisci la smartcard richiesta e ripeti l'operazione. sc.removeCard=L'operazione richiede che non ci siano smartcard nel lettore.\nRimuovi la tua smartcard e ripeti l'operazione. sc.noCardAvailable=Nessuna smartcard trovata nel lettore\nInserisci la smartcard e ripeti l'operazione. sc.noReaderAvailable=Impossibile accedere al lettore di smartcard \nCollega il lettore, inserisci la scheda e ripeti l'operazione. keyError.keySpecNotFound=L'indirizzo email "%S" non può corrisponde a una chiave nel tuo portachiavi. keyError.keyIdNotFound=L'ID della chiave configurata "%S" non può essere trovato nel tuo portachiavi. keyError.resolutionAction=Seleziona un chiave valida nella sezione OpenPGP delle impostazioni del tuo account. missingPassphrase=Frase segreta mancante errorHandling.gpgAgentInvalid=Il tuo sistema esegue una versione di gpg-agent non appropriata alla tua versione di GnuPG. errorHandling.gpgAgentError=GnuPG ha segnalato un errore nella comunicazione con gpg-agent (un componente di GnuPG). errorHandling.dirmngrError=GnuPG ha segnalato un errore nella comunicazione con dirmngr (un componente di GnuPG). errorHandling.pinentryError=GnuPG non è in grado di interrogare la tua frase segreta tramite pinentry. errorHandling.readFaq=Questa è una configurazione di sistema o un errore di configurazione che impedisce a Enigmail di funzionare correttamente e non può essere corretta automaticamente.\n\nTi consigliamo di consultare il nostro sito web di supporto su https://enigmail.net/faq. gpgNotFound=Impossibile trovare l'eseguibile di GnuPG '%S'.\nAssicurati di aver impostato correttamente il percorso dell'eseguibile di GnuPG nelle impostazioni di Enigmail. gpgNotInPath=Impossibile trovare l'eseguibile di GnuPG nel PATH.\nAssicurati di aver impostato correttamente il percorso dell'eseguibile di GnuPG nelle impostazioni di Enigmail. enigmailNotAvailable=Il servizio principale di Enigmail non è disponibile gpgAgentNotStarted=Impossibile avviare il programma gpg-agent che è necessario per la tua versione di GnuPG %S. prefUntrusted=SENZA FIDUCIA prefRevoked=CHIAVE REVOCATA prefExpiredKey=CHIAVE SCADUTA prefExpired=SCADUTA prefGood=Firma autentica per %S prefBad=Firma NON autentica per %S failCancel=Errore - ricezione chiave annullata dall'utente failNoServer=Errore - nessun server specificato da cui ricevere la chiave failNoID=Errore - non è stato specificato nessun ID chiave per cui scaricare la chiave failKeyExtract=Errore - comando di estrazione chiave non riuscito notFirstBlock=Errore - il primo blocco di dati OpenPGP non è una chiave pubblica importKeyConfirm=Importare la/e chiave/i pubblica/he inserita/e nel messaggio? failKeyImport=Errore - importazione chiave non riuscita fileWriteFailed=Impossibile scrivere nel file %S importKey=Importa la chiave pubblica %S dal server: uploadKey=Invia la chiave pubblica %S al server: keyId=ID chiave keyAndSigDate=ID chiave: 0x%S / Firmata il: %S keyFpr=Impronta della chiave: %S noEmailProvided=Non hai fornito nessun indirizzo email! keyAlreadySigned=La chiave è già firmata, non puoi firmarla due volte. gnupg.invalidKey.desc=Chiave %S non trovata o non valida. La (sotto)chiave potrebbe essere scaduta. selKeyExpired=scaduta %S createdHeader=Creata atLeastOneKey=Nessuna chiave selezionata! Devi selezionare almeno una chiave per proseguire fewerKeysThanRecipients=Hai selezionato un numero di chiavi inferiore a quello dei destinatari. Sei sicuro che l'elenco delle chiavi con cui cifrare sia completo? userSel.button.goBack=Seleziona altre chiavi userSel.secretKeySel.title=Seleziona una chiave segreta OpenPGP per firmare i messaggi userSel.problemNoKey=Nessuna chiave valida userSel.problemMultipleKeys=Chiavi multiple # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Invia più tardi # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: PGP/MIME è supportato solamente da un numero limitato di client email! Sotto Windows, solo Mozilla/Thunderbird, Sylpheed, Pegasus e Mulberry supportano con certezza questo standard; sotto Linux/UNIX e Mac OS X lo supportano invece i più comuni client email. Se hai dei dubbi su cosa fare, seleziona il %S dei tre punti qui sopra. first=primo second=secondo # Strings used in am-enigprefs.js encryptKeyHeader=Scegli la chiave OpenPGP per la cifratura identityName=Identità: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Hai attivato la cifratura, ma non hai selezionato nessuna chiave. Per cifrare i messaggi inviati a %S, devi specificare una o più chiavi valide dalla tua lista delle chiavi. Vuoi disattivare la cifratura per %S? noKeyToUse=(nessuna - nessuna cifratura) noEmptyRule=La regola non può essere vuota! Specifica un indirizzo email nel campo della regola. invalidAddress=Gli indirizzi email che hai specificato non sono validi. Non devi digitare anche il nome dei destinatari, ma solo gli indirizzi email. Ad es.:\nNon valido: Nome Cognome \nValido: nome.cognome@indirizzo.net noCurlyBrackets=Le parentesi graffe {} hanno un significato speciale e non dovrebbero essere usate negli indirizzi email. Se vuoi modificare il comportamento di questa regola, usa l'opzione 'Applica la regola se il destinatario...'.\nUlteriori informazioni sono disponibili con il pulsante Aiuto. # Strings used in enigmailRulesEditor.js never=Mai always=Sempre possible=Possibile deleteRule=Vuoi davvero eliminare la regola selezionata? nextRcpt=(Destinatario successivo) negateRule=Non addKeyToRule=Aggiungi la chiave %S (%S) a una regola per destinatario # Strings used in enigmailSearchKey.js needOnline=La funzione che hai selezionato non è disponibile nella modalità non in linea. Vai in linea e riprova. protocolNotSupported=Il protocollo '%S://' che hai selezionato non è supportato per lo scaricamento delle chiavi OpenPGP. gpgkeysDisabled=Potrebbe aiutare abilitare l'opzione 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Impossibile collegarsi al server delle chiavi a %S. keyDownloadFailed=Scaricamento della chiave dal server non riuscito. Il messaggio di stato è:\n%S internalError=Si è verificato un errore interno. Non è stato possibile né scaricare le chiavi, né importarle. noKeyFound=Spiacenti, non è stata trovata alcuna chiave che corrisponda ai criteri di ricerca specificati.\nRicorda che l'ID della chiave deve essere preceduto da "0x" (ad es. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Impossibile cercare o scaricare la chiave dal server: non è stato possibile eseguire gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Impostazione della fiducia nel proprietario non riuscita # Strings in enigmailSignKeyDlg.js signKeyFailed=Firma della chiave non riuscita alreadySigned.label=Nota: la chiave %S è già stata firmata con la chiave segreta selezionata. alreadySignedexportable.label=Nota: la chiave %S è già firmata come esportabile con la chiave privata selezionata. Una firma locale non ha senso. partlySigned.label=Nota: alcuni ID utente della chiave %S sono già firmati con la chiave segreta selezionata. noTrustedOwnKeys=Non è stata trovata alcuna chiave idonea per firmare! Hai bisogno almeno di una chiave privata definitivamente affidabile per firmare le chiavi. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Caricamento delle chiavi in corso, attendere... keyValid.unknown=sconosciuta keyValid.invalid=non valida keyValid.disabled=disabilitata keyValid.revoked=revocata keyValid.expired=scaduta keyValid.noSubkey=non ci sono sottochiavi valide keyTrust.untrusted=senza fiducia keyTrust.marginal=marginale keyTrust.full=fidata keyTrust.ultimate=definitiva keyTrust.group=(gruppo) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Abilita chiave keyMan.disableKey=Disabilita chiave userAtt.photo=Attributo dell'utente (immagine JPEG) asciiArmorFile=File con armatura ASCII (*.asc) importKeyFile=Importa file di chiave OpenPGP gnupgFile=File di GnuPG saveRevokeCertAs=Crea e salva certificato di revoca revokeCertOK=Il certificato di revoca è stato creato correttamente. Puoi usarlo per togliere validità alla tua chiave pubblica, come nel caso in cui tu perda la tua chiave privata.\n\nTrasferiscilo su un supporto in cui possa essere conservato al sicuro, come un CD o un floppy. Se qualcuno dovesse avere accesso a questo certificato, potrebbe usarlo per rendere la tua chiave inutilizzabile. revokeCertFailed=Il certificato di revoca non può essere creato. addUidOK=ID utente aggiunto correttamente addUidFailed=Aggiunta dello ID utente non riuscita noKeySelected=Devi selezionare almeno una chiave per poter eseguire l'operazione selezionata exportToFile=Esporta la chiave pubblica in un file exportKeypairToFile=Esporta chiave privata e pubblica su file exportSecretKey=Vuoi includere anche la chiave privata nel file di chiave OpenPGP che viene salvato? saveKeysOK=Le chiavi sono state salvate correttamente saveKeysFailed=Salvataggio delle chiavi non riuscito importKeysFailed=Importazione delle chiavi non riuscita enableKeyFailed=Abilitazione/disabilitazione delle chiavi non riuscita specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Chiavi-pubbliche-esportate defaultPubSecKeyFilename=Chiavi-pubbliche-e-private-esportate noSecretKeys=Non sono state trovate chiavi segrete.\n\nVuoi generare la tua chiave ora? sendKeysOk=Chiave/i inviata/e correttamente sendKeysFailed=Invio delle chiavi non riuscito receiveKeysOk=Chiave/i aggiornata/e correttamente receiveKeysFailed=Scaricamento della/e chiave/i non riuscito importFromClip=Vuoi importare alcune chiavi dagli appunti? importFromUrl=Scarica la chiave pubblica da questo URL: copyToClipbrdFailed=Impossibile copiare le chiavi selezionate negli appunti. copyToClipbrdOK=Chiave/i copiata/e negli appunti deleteSecretKey=ATTENZIONE: stai per eliminare una chiave privata!\nSe elimini la tua chiave privata, non sarai più in grado di decifrare alcun messaggio cifrato per quella chiave.\n\nVuoi veramente eliminarle ENTRAMBE, sia la chiave privata che la chiave pubblica\n'%S'? deleteMix=ATTENZIONE: Stai per eliminare delle chiavi private!\nSe elimini la tua chiave privata, non sarai più in grado di decifrare alcun messaggio cifrato per quella chiave.\n\nVuoi davvero eliminarle TUTTE, sia le chiavi private che le chiavi pubbliche? deletePubKey=Vuoi eliminare la chiave pubblica\n'%S'? deleteSelectedPubKey=Vuoi eliminare le chiavi pubbliche? deleteKeyFailed=La chiave non può essere eliminata. revokeKeyQuestion=Stai per revocare la chiave '%S'.\n\nNon sarai più in grado di firmare con questa chiave, e, una volta distribuita, gli altri non saranno in grado di cifrare con la tale chiave. Puoi ancora utilizzare la chiave per decifrare i vecchi messaggi.\n\nVuoi continuare? revokeKeyOk=La chiave è stata revocata. Se la tua chiave è disponibile su un server, è consigliabile spedirgliela di nuovo, così che tutti possano vedere la revoca. revokeKeyFailed=La chiave non può essere revocata. refreshAllQuestion=Non hai selezionato nessuna chiave. Vuoi ricaricare TUTTE le chiavi? refreshKey.warn=Attenzione: in base al numero delle chiavi e alla velocità di connessione, ricaricare tutte le chiavi può essere un processo molto lungo! downloadContactsKeys.warn=Avviso: in base al numero di contatti e alla velocità di connessione, lo scaricamento di tutte le chiavi potrebbe risultare un processo molto lungo. downloadContactsKeys.importFrom=Vuoi importare i contatti dalla rubrica '%S'? keyMan.button.exportSecKey=Esporta chiavi &segrete keyMan.button.exportPubKey=Esporta solo le chiavi &pubbliche keyMan.button.import=&Importa keyMan.button.refreshAll=&Ricarica tutte le chiavi keyMan.button.revokeKey=&Revoca chiave keyMan.button.skip=&Salta chiave keylist.noOtherUids=Non ha altre identità keylist.hasOtherUids=Noto anche come keylist.noPhotos=Non ci sono fotografie disponibili keylist.hasPhotos=Fotografie keyMan.addphoto.filepicker.title=Seleziona foto da aggiungere keyMan.addphoto.warnLargeFile=Il file scelto è più grande di 25 kB.\nNon è consigliato aggiungere file molto grandi per non rendere eccessivamente pesanti le chiavi. keyMan.addphoto.noJpegFile=Il file selezionato non sembra essere un file JPEG. Scegli un altro file. keyMan.addphoto.failed=La foto non può essere aggiunta. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Cambiamento dell'ID utente primario non riuscito changePrimUidOK=L'ID utente primario è stato cambiato correttamente deleteUidFailed=Eliminazione dell'ID utente %S non riuscita deleteUidOK=L'ID utente %S è stato eliminato correttamente revokeUidFailed=Revoca dell'ID utente %S non riuscita revokeUidOK=L'ID utente %S è stato revocato con successo. Se la tua chiave è disponibile su un server delle chiavi, è consigliabile caricarla di nuovo, così che tutti possano vedere la revoca. revokeUidQuestion=Vuoi veramente revocare l'ID utente %S? deleteUidQuestion=Vuoi veramente eliminare l'ID utente %S?\n\nNota: se hai inviato la tua chiave a un server delle chiavi, eliminare un ID utente non serve a nulla. In tal caso devi usare 'Revoca ID utente'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=SUCCESSO! Chiavi importate importInfoSuccess=✅ importInfoBits=Bit importInfoCreated=Creato il importInfoFpr=Impronta digitale importInfoDetails=(Dettagli) importInfoNoKeys=Nessuna chiave importata. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=chiave pubblica keyTypePrimary=chiave principale keyTypeSubkey=sottochiave keyTypePair=coppia di chiavi keyExpiryNever=mai keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Cifra keyUsageSign=Firma keyUsageCertify=Certifica keyUsageAuthentication=Autenticazione keyDoesNotExpire=La chiave non scade # Strings in enigmailGenCardKey.xul keygen.started=Attendi mentre la chiave viene generata... keygen.completed=Chiave generata. Il nuovo ID chiave è: 0x%S keygen.keyBackup=La copia della chiave viene salvata in %S keygen.passRequired=Inserisci una frase segreta se vuoi creare una copia di sicurezza della tua chiave al di fuori della tua smartcard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Il PIN che hai inserito non corrisponde; digitalo nuovamente cardPin.minLength=Il PIN deve avere almeno %S caratteri o numeri cardPin.processFailed=Cambiamento di PIN non riuscito # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Aggiornamento chiavi in corso, attendere... keyserverProgress.uploading=Invio chiavi in corso, attendere... keyserverTitle.refreshing=Ricarica le chiavi keyserverTitle.uploading=Invia la chiave # Strings in enigmailSetupWizard passphrase.min8keys=La tua frase segreta deve contenere almeno 8 caratteri! setupWizard.reallyCancel=Vuoi veramente chiudere la procedura guidata di configurazione di Enigmail? setupWizard.invalidGpg=Il file specificato non è un eseguibile GnuPG. Scegli un altro file. setupWizard.specifyFile=Devi specificare almeno un file di chiave pubblica per continuare. setupWizard.installFailed=Sembra che l'installazione non sia avvenuta correttamente. Prova nuovamente l'installazione o installa GnuPG manualmente e individua l'eseguibile utilizzando il pulsante Sfoglia. setupWizard.downloadForbidden=Per la tua sicurezza, non scaricheremo GnuPG. Visita http://www.gnupg.org/ per scaricare GnuPG. setupWizard.downloadImpossible=Non è possibile scaricare GnuPG al momento. Prova più tardi o visita http://www.gnupg.org/ per scaricare GnuPG. setupWizard.hashSumError=La procedura guidata non è in grado di verificare l'integrità del file scaricato. Il file potrebbe essere danneggiato o manipolato. Vuoi continuare comunque l'installazione? setupWizard.importSettingsFile=Specifica il file di backup da caricare setupWizard.invalidSettingsFile=Il file specificato non è un file di backup delle impostazioni di Enigmail corretto. setupWizard.gpgConfExists=Il file di configurazione di GnuPG esiste già. Vuoi sovrascriverlo con quello della tua vecchia installazione? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Si è verificato un errore durante il tentativo di scaricamento di GnuPG. Controlla il log per ulteriori dettagli. installGnuPG.installFailed=Si è verificato un errore durante l'installazione di GnuPG. Controlla il log per ulteriori dettagli. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Devi inserire un nome e un indirizzo email addUidDlg.nameMinLengthError=Il nome deve contenere almeno 5 caratteri addUidDlg.invalidEmailError=Devi specificare un indirizzo email valido addUidDlg.commentError=I commenti non possono contenere parentesi # Strings in enigmailCardDetails.js Carddetails.NoASCII=Le smartcard OpenPGP supportano solo caratteri ASCII in Nome/Cognome. # network error types errorType.SecurityCertificate=Il certificato di sicurezza presentato dal servizio web non è valido. errorType.SecurityProtocol=Il protocollo di sicurezza utilizzato dal servizio web è sconosciuto. errorType.Network=Si è verificato un errore di rete. # filter stuff filter.folderRequired=Devi selezionare una cartella di destinazione. filter.decryptMove.label=Decifra permanentemente (Enigmail) filter.decryptCopy.label=Crea copia decifrata (Enigmail) filter.decryptMove.warnExperimental=Avviso - l'azione di filtraggio "Decifra permanentemente" potrebbe provocare il danneggiamento dei messaggi.\n\nTi consigliamo vivamente di provare prima il filtro "Crea copia decifrata", verificare attentamente il risultato e iniziare a utilizzare questo filtro solo quando sei soddisfatto del risultato. # strings in enigmailConvert.jsm converter.decryptBody.failed=Impossibile decifrare il messaggio con oggetto con oggetto\n"%S".\nVuoi riprovare con una frase segreta diversa o vuoi saltare il messaggio? converter.decryptAtt.failed=Impossibile decifrare l'allegato "%1$S"\ndel messaggio con oggetto\n"%2$S".\nVuoi riprovare con una frase segreta diversa o vuoi saltare il messaggio? saveLogFile.title=Salva file di registro # strings in gpg.jsm unknownSigningAlg=Algoritmo di firma sconosciuto (ID: %S) unknownHashAlg=Hash crittografico sconosciuto (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=La chiave %1$S (ID chiave %2$S) è revocata. keyRing.pubKeyExpired=La chiave %1$S (ID chiave %2$S) è scaduta. keyRing.pubKeyNotForSigning=La chiave %1$S (ID chiave %2$S) non può essere utilizzata per firmare. keyRing.pubKeyNotForEncryption=La chiave %1$S (ID chiave %2$S) non può essere utilizzata per cifrare. keyRing.keyDisabled=La chiave %1$S (ID chiave %2$S) è disabilitata; non può essere utilizzata. keyRing.keyNotTrusted=La chiave %1$S (ID chiave %2$S) non è abbastanza affidabile. Imposta il livello di fiducia a "definitiva" per utilizzarla per firmare. keyRing.keyInvalid=La chiave %1$S (ID chiave %2$S) non è valida (ad es. non è autofirmata) keyRing.signSubKeysRevoked=Tutte le sottochiavi di firma della chiave %1$S (ID chiave %2$S) sono scadute. keyRing.signSubKeysExpired=Tutte le sottochiavi di firma della chiave %1$S (ID chiave %2$S) sono scadute. keyRing.signSubKeysUnusable=Tutte le sottochiavi di firma della chiave %1$S (ID chiave %2$S) sono revocate, scadute o altrimenti non utilizzabili. keyRing.encSubKeysRevoked=Tutte le sottochiavi di cifratura della chiave %1$S (ID chiave %2$S) sono revocate. keyRing.encSubKeysExpired=Tutte le sottochiavi di cifratura della chiave %1$S (ID chiave %2$S) sono scadute. keyRing.noSecretKey=Sembra che tu non abbia una chiave segreta per %1$S (ID chiave %2$S) nel tuo portachiavi; non puoi utilizzare la chiave per firmare. keyRing.encSubKeysUnusable=Tutte le sottochiavi di cifratura della chiave %1$S (ID chiave %2$S) sono revocate, scadute o altrimenti non utilizzabili. #strings in exportSettingsWizard.js cannotWriteToFile=Impossibile salvare sul file '%S'. Seleziona un altro file. dataExportError=Si è verificato un errore durante l'esportazione dei tuoi dati. enigmailSettings=Impostazioni di Enigmail defaultBackupFileName=Esportazione di Enigmail specifyExportFile=Specifica il nome del file per l'esportazione homedirParamNotSUpported=I parametri aggiuntivi che configurano i percorsi come --homedir e --keyring non sono supportati per l'esportazione/ripristino delle tue impostazioni. Usa metodi alternativi come l'impostazione della variabile d'ambiente GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=La chiave %1$S scadrà in meno di %2$S giorni.\n\nTi consigliamo di creare una nuova coppia di chiavi e configurare gli account corrispondenti per usare la nuova chiave. expiry.keysExpireSoon=Le seguenti chiavi scadranno in meno di %1$S giorni:\n%2$S. Ti consigliamo di creare delle nuove chiavi e configurare i tuoi account per usare le nuove chiavi. enigmail/lang/it/help/000077500000000000000000000000001266701624400151405ustar00rootroot00000000000000enigmail/lang/it/help/compose.html000066400000000000000000000104041266701624400174720ustar00rootroot00000000000000 Enigmail Help: Composizione del Messaggio

Enigmail Help

Usare Enigmail durante la composizione dei messaggi

  • Menu di Enigmail nella finestra di Composizione dei messaggi
    • Firma il messaggio: Abilita/disabilita l'invio del messaggio firmato. L'utente viene avvertito se l'operazione di firma fallisce.
    • Cifra il messaggio: Abilita/disabilita la cifratura per tutti i destinatari prima dell'invio. L'utente viene avvertito se l'operazione di cifratura fallisce.

      Se in Impostazioni -> Scelta della chiave è stato impostato Mostra la finestra di selezione solo quando è necessario, e tra i destinatari del messaggio figurano indirizzi a cui non corrisponde nessuna delle chiavi pubbliche in tuo possesso, al momento dell'invio verrà mostrata una lista di chiavi tra cui scegliere.

      Se in Impostazioni -> Scelta della chiave è stato impostato Non mostrare mai la finestra di selezione delle chiavi OpenPGP, e tra i destinatari del messaggio figurano indirizzi a cui non corrisponde nessuna delle chiavi pubbliche in tuo possesso, il messaggio sarà inviato come testo in chiaro, senza venire cifrato.

    • Usa PGP/MIME per questo messaggio: Abilita/disabilita l'uso del formato PGP/MIME per il messaggio corrente.

      Se sai che i destinatari sono in grado di ricevere messaggi in formato PGP/MIME, allora faresti meglio ad usarlo.

      La possibilità di attivare questa funzione dipende dall'avere impostato o meno Consenti l'uso di PGP/MIME, o Usa sempre PGP/MIME, in Impostazioni -> PGP/MIME.

    • Impostazioni predefinite per la composizione: Sotto-menu.
      • Impostazioni di firma/cifratura...: scorciatoia per Configurazione account posta -> OpenPGP.
      • Impostazioni di invio...: scorciatoia per Impostazioni -> invio.
      • Impostazioni per la scelta della chiave...: scorciatoia per Impostazioni -> Scelta della chiave.
      • Impostazioni PGP/MIME...: scorciatoia per Impostazioni -> PGP/MIME.
    • Annulla cifratura: Se si verifica un problema durante l'invio del messaggio, se ad esempio il server rifiuta la richiesta, Enigmail non avrà modo di saperlo e il messaggio continuerà ad essere mostrato in formato cifrato nella finestra di composizione. Scegliendo questa voce di menu, la firma/cifratura verranno annullate e nella finestra di composizione apparirà nuovamente il testo in chiaro.
      Come soluzione temporanea, questa opzione può anche essere usata per decifrare il testo quotato quando si risponde a un messaggio cifrato. Enigmail dovrebbe decifrare automaticamente il messaggio quotato, ma se cioò non dovesse funzionare per qualche ragione, puoi usare questa voce di menu.
    • Inserisci chiave pubblica: inserisci una chiave pubblica in formato ASCII-armored a partire dalla posizione corrente del cursore nella finestra di composizione. Ti verranno chiesti gli indirizzi email delle chiavi da inserire. Le chiavi inserite in questo modo saranno automaticamente riconosciute da Enigmail sul computer del destinatario. Dopo l'inserimento della chiave, puoi ancora scegliere di cifrare/firmare il messaggio, se necessario. Attenzione a non inserire più di un blocco di chiavi pubbliche in un messaggio; specifica nel caso più indirizzi email, separati da virgole o spazi, per lo stesso blocco.
    • Cancella la passphrase memorizzata: Cancella la passphrase salvata in memoria. Utile se hai più di una passphrase.
    • Aiuto: Mostra le informazioni di aiuto (questa pagina).

Ulteriore aiuto è disponibile sul sito web di Enigmail

enigmail/lang/it/help/editRcptRule.html000066400000000000000000000134021266701624400204340ustar00rootroot00000000000000 Enigmail Help: Modifica regole OpenPGP

Enigmail Help

Usare l'editor delle regole di Enigmail: Modifica di una regola OpenPGP

Nell'editor delle regole puoi specificare le impostazioni predefinite per ogni destinatario per abilitare la cifratura, la firma, il formato PGP/MIME e per definire quali chiavi OpenPGP usare. In questa finestra di dialogo, puoi specificare le regole per un singolo destinatario o per un gruppo di destinatari con caratteristiche simili.

  • Imposta regole OpenPGP per : Contiene gli indirizzi email dei destinatari (senza i nomi, ovvero solo indirizzi del tipo nome.cognome@indirizzo.email). Puoi specificare indirizzi multipli, separati sa spazi. Gli indirizzi specificati qui possono consistere anche del solo dominio, in modo da comprendere tutti i destinatari di quel dominio, ad esempio @indirizzo.email corrisponderà sia a nome@indirizzo.email, nome2@indirizzo.email, nome3@indirizzo.email, ecc.
  • Applica la regola se il destinatario ...: Questo modifica la corrispondenza dell'indirizzo email. Se sono stati specificati indirizzi multipli, l'impostazione si applica a tutti. Gli esempi qui sotto assumono che si stato immesso l'indirizzo nome@indirizzo.email nel campo Regole OpenPGP sopra.
    • È esattamente: con questa impostazione, la regola viene applicata solo ai messaggi indirizzati a nome@indirizzo.email (corrispondenza esatta, maiuscole/minuscole ignorate).
    • Contiene: con questa impostazione, la regola si applica a ogni indirizzo contenente quello specificato, ad esempio tuo.nome@indirizzo.email o altro.nome@indirizzo.email.suo
    • Comincia con: con questa impostazione, la regola viene applicata a ogni indirizzo che inizia con quello specificato, ad esempio nome@indirizzo.email.suo, nome@indirizzo.email-2.suo.
    • Finisce con: Con questa impostazione la regola viene applicata a ogni indirizzo che finisce con quello specificato, ad esempio tuonome@indirizzo.email o altro.nome@indirizzo.email
  • Continua con la regola successiva per l'indirizzo corrispondente
    Abilitare questa funzione ti permette di definire una regola senza dover specificare un ID chiave nel campo Usa le seguenti chiavi OpenPGP:. In tal caso la chiave da usare sarà scelta al momento dell'invio in base all'indirizzo email del destinatario. Inoltre, saranno anche applicate le eventuali ulteriori regole per lo stesso indirizzo.
  • Non controllare le regole successive per l'indirizzo corrispondente
    Abilitando questa funzione si impedisce l'applicazione di qualunque altra regola per gli indirizzi corrispondenti, se questa regola viene applicata; il controllo delle regole passa al destinatario seguente.
  • Usa le seguenti chiavi OpenPGP:
    Usa il pulsante Seleziona chiave/i.. per scegliere la chiave pubblica del destinatario da usare per la cifratura. Come nel caso precedente, nessuna ulteriore regola viene applicata allo stesso indirizzo.
  • Impostazioni predefinite per... Firma: abilita o disabilita l'invio di messaggi firmati. Questa impostazione usa o ha la precedenza su quella specificata nella finestra di composizione del messaggio. I valori possibili sono:
    • Mai: disabilita la firma, anche se è attivata nella finestra di composizione del messaggio (ha la precedenza sulle altre impostazioni)
    • Sì, se selezionato durante la composizione del messaggio: usa l'impostazione specificata nella finestra di composizione del messaggio
    • Sempre: abilita la firma, anche se essa non è abilitata nella finestra di composizione del messaggio
Le impostazioni sulla firma vengono applicate per tutte le regole che corrispondono. Se una regola disabilita la firma, il messaggio non verrà firmato, indipendentemente dalle altre eventuali regole che specificano Sempre.
  • Impostazioni predefinite per... Cifratura: abilita o disabilita la cifratura del messaggio. Le possibili impostazioni sono le stesse della firma e hanno lo stesso significato.
  • Impostazioni predefinite per... PGP/MIME:abilita o disabilita l'uso della codifica PGP/MIME (RFC 3156) per il messaggio. Se PGP/MIME è disabilitato, i messaggi saranno codificati usando "inline PGP". Le possibili impostazioni sono le stesse della firma e hanno lo stesso significato.

Le regole sono elaborate nell'ordine in cui appaiono nella lista dell'Editor delle regole OpenPGP. Se una regola è applicabile a un destinatario e contiene un ID chiave OpenPGP, il destinatario, oltre a usare l'ID specificato, sarà ignorato nell'elaborazione delle altre regole.


Ulteriore aiuto è disponibile sulla pagina web di Enigmail sulle regole per singolo destinatario

enigmail/lang/it/help/initError.html000066400000000000000000000045361266701624400200130ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/it/help/messenger.html000066400000000000000000000101001266701624400200060ustar00rootroot00000000000000 Enigmail Help: Lettura dei messaggi

Enigmail Help

Usare Enigmail durante la lettura dei messaggi

  • Pulsante Decifra nella finestra principale della posta
    Questo pulsante può essere usato per molti scopi: decifrare, verificare, o importare chiavi pubbliche. Di solito, la decifratura/verifica dei messaggi viene fatta automaticamente, anche se questo può essere disabilitato nelle impostazioni. Tuttavia, in caso di errori, apparirebbe solo un breve messaggio nella barra di stato di Enigmail. Se premi il pulsante Decifra, verrà mostrato un messaggio di errore più dettagliato, che include anche l'output esatto di GnuPG.
  • Icone della penna e della chiave tra le intestazioni del messaggio
    Le icone Penna e Chiave tra le intestazioni del messaggio indicano se esso è stato cifrato/firmato e se la firma è valida, cioè se il messaggio non è stato modificato dopo la firma. Se ci sono state modifiche, l'icona Penna apparirà come una Penna spezzata per indicare che la firma non è valida. Premendo con il tasto destro sulla penna o sulla chiave si visualizzerà un menu con le seguenti opzioni:
    • Informazioni di sicurezza OpenPGP: mostra l'output di GnuPG per il messaggio.
    • Copia le informazioni di sicurezza OpenPGP: copia l'output di GnuPG negli appunti, ad esempio per incollarlo in un messaggio, ecc.
    • Mostra la foto-ID OpenPGP: Visualizza la Foto-ID del mittente del messaggio, se una foto è presente nella sua chiave pubblica. (Questa opzione è attiva solo se c'è una foto nella chiave pubblica.)
    • Informazioni di sicurezza S/MIME: mostra le informazioni di sicurezza S/MIME per il messaggio.

    Se non hai impostato keyserver-options auto-key-retrieve nel file gpg.conf file e visualizzi un messaggio firmato e/o cifrato, vedrai una icona Penna tra le intestazioni del messaggio con un Punto interrogativo su di essa, la riga di stato di Enigmail mostrerà la scritta Parte del messaggio firmata; premi sull'icona della penna per i dettagli e il messaggio nella finestra mostrerà tutte le intestazioni OpenPGP e la firma in calce.

    Puoi vedere questo messaggio anche se hai impostato keyserver-options auto-key-retrieve nel file gpg.conf e la chiave OpenPGP richiesta non è disponibile sul server della chiavi predefinito.

    Premendo sull'icona Penna e punto interrogativo apparirà una finestra che avverte che la chiave pubblica richiesta non è disponibile nel tuo portachiavi. Premendo su OK apparirà un'altra finestra con una lista di server di chiavi da cui potrai scegliere di scaricare la chiave pubblica del mittente.

    Per configurare la lista dei server di chiavi che vuoi usare, vai su Enigmail -> Impostazioni -> Generali e inserisci gli indirizzi dei server nella riga Keyserver:, separati da una virgola. Il primo server sarà considerato il predefinito.

  • Apertura di allegati cifrati / importazioni di chiavi OpenPGP allegate
    Gli allegati con estensioni *.pgp, *.asc e *.gpg sono riconosciuti da Enigmail come allegati da trattare in modo speciale. Premendo con il tasto destro su tali allegati, appariranno due speciali voci del menu contestuale: Decifra e apri e Decifra e salva. Usa queste due voci se vuoi che Enigmail decifri un allegato prima di aprirlo o salvarlo. Se un allegato è riconosciuto essere una chiave OpenPGP, ti sarà offerta la possibilità di importarla nel tuo portachiavi.

Ulteriore aiuto è disponibile sul sito web di Enigmail

enigmail/lang/it/help/rulesEditor.html000066400000000000000000000064341266701624400203360ustar00rootroot00000000000000 Enigmail Help: Editor delle regole

Enigmail Help

Usare l'editor delle regole di Enigmail

Nell'Editor delle regole, puoi specificare le impostazioni predefinite per ogni destinatario sull'abilitazione della cifratura, della firma del formato PGP/MIME, e sulla scelta della chiave OpenPGP da usare. Ogni regole è composta da 5 campi ed è rappresentata su una singola linea:

  • Email: L'indirizzo email che compare nei campi A:, Cc: e Bcc:. La corrispondenza funziona anche per sottostringhe (Ulteriori dettagli possono essere trovati nella finestra di dialogo Modifica regola)
  • Chiave/i OpenPGP: una lista di ID chiave OpenPGP da usare per il destinatario
  • Firma: abilita o disabilita l'invio di messaggi firmati. Questa impostazione usa o ha la precedenza su quella specificata nella finestra di composizione del messaggio. I valori possibili sono:
    • Mai: disabilita la firma, anche se è attivata nella finestra di composizione del messaggio (ha la precedenza sulle altre impostazioni)
    • Possibile: usa l'impostazione specificata nella finestra di composizione del messaggio
    • Sempre: abilita la firma, anche se essa non è abilitata nella finestra di composizione del messaggio
Le impostazioni sulla firma vengono applicate per tutte le regole che corrispondono. Se una regola disabilita la firma, il messaggio non verrà firmato, indipendentemente dalle altre eventuali regole che specificano Sempre.
  • Cifra: abilita o disabilita la cifratura del messaggio. Le possibili impostazioni sono le stesse della firma e hanno lo stesso significato.
  • PGP/MIME: abilita o disabilita l'uso della codifica PGP/MIME (RFC 3156) per il messaggio. Se PGP/MIME è disabilitato, i messaggi saranno codificati usando "inline PGP". Le possibili impostazioni sono le stesse della firma e hanno lo stesso significato.

Le regole sono elaborate nell'ordine in cui appaiono nella lista. Se una regola è applicabile a un destinatario e contiene un ID chiave OpenPGP, il destinatario, oltre a usare l'ID specificato, sarà ignorato nell'elaborazione delle altre regole.

Nota: L'editor delle regole non è ancora completo. Regole più avanzate possono essere create modificando direttamente il file delle regole (tali regole non dovranno essere più modificate con l'editor delle regole). Ulteriori informazioni sulla modifica diretta del file delle regole sono disponibili sulla home page di Enigmail.


Ulteriore aiuto è disponibile sul sito web di Enigmail

enigmail/lang/it/help/sendingPrefs.html000066400000000000000000000047771266701624400204740ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/ja/000077500000000000000000000000001266701624400141665ustar00rootroot00000000000000enigmail/lang/ja/am-enigprefs.properties000066400000000000000000000001331266701624400206560ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP セキュリティ enigmail/lang/ja/enigmail.dtd000066400000000000000000001535521266701624400164630ustar00rootroot00000000000000 注æ„:éµç”Ÿæˆã«ã¯æ•°åˆ†ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚生æˆé€”中ã§ã‚¢ãƒ—リケーションを終了ã—ãªã„ã§ãã ã•ã„。生æˆé€”中ã§ãƒ–ラウザを使用ã™ã‚‹ã€ã‚‚ã—ãã¯ãƒ‡ã‚£ã‚¹ã‚¯ã‚¢ã‚¯ã‚»ã‚¹ãŒæ¿€ã—ã„処ç†ã‚’行ã†ã¨ã€Œä¹±æ•°ãƒ—ールã€ãŒæº€ãŸã•れã€å‡¦ç†ãŒæ—©ã終ã‚りã¾ã™ã€‚éµã®ç”ŸæˆãŒçµ‚了ã™ã‚‹ã¨é€šçŸ¥ã—ã¾ã™ã€‚"> 注æ„: éµç”Ÿæˆã«ã¯æ•°åˆ†ã‹ã‹ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚éµç”Ÿæˆä¸­ã¯ã‚¢ãƒ—リケーションを終了ã—ãªã„ã§ãã ã•ã„。終了時ã«ã¯ãŠçŸ¥ã‚‰ã›ã—ã¾ã™ã€‚"> 注æ„: Enigmail ã¯ã€æœ‰åŠ¹ç„¡åŠ¹ã«é–¢ã‚ら㚠ã™ã¹ã¦ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚‚ã—ã㯠ID å®›ã®ãƒ¡ãƒ¼ãƒ«ã®ç½²åを検証ã—ã¾ã™ã€‚"> å…¬é–‹éµ ã¯ã€ã‚ãªãŸå®›ã«æš—å·åŒ–メッセージをé€ã‚‹ã¨ããŠã‚ˆã³ã€ã‚ãªãŸã«ã‚ˆã‚‹ç½²åメッセージを検証ã™ã‚‹ã¨ã㫠第三者ã«ã‚ˆã£ã¦ 使用ã•れã¾ã™ã€‚公開éµã¯ç¬¬ä¸‰è€…ã«é…布ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"> ç§˜å¯†éµ ã¯ã€æš—å·åŒ–メッセージを復å·ã™ã‚‹ã¨ããŠã‚ˆã³ç½²åメッセージをé€ã‚‹ã¨ãã« ã‚ãªãŸè‡ªèº«ã«ã‚ˆã£ã¦ 使用ã•れã¾ã™ã€‚ 秘密éµã‚’第三者ã«å…¬é–‹ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。"> ç§˜å¯†éµ ã¯ã€ã‚ãªãŸå®›ã«é€ã‚‰ã‚ŒãŸæš—å·åŒ–メッセージを復å·ã™ã‚‹ã¨ããŠã‚ˆã³ã€ã‚ãªãŸãŒç½²åメッセージをé€ã‚‹ã¨ãã« ã‚ãªãŸè‡ªèº«ã«ã‚ˆã£ã¦ 使用ã•れã¾ã™ã€‚ 秘密éµã‚’第三者ã«å…¬é–‹ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“。 秘密éµã®å®‰å…¨æ€§ã‚’ä¿ã¤ãŸã‚ã«ã€ãƒ‘スフレーズを設定ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚以下㮠2 ã¤ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã«ãƒ‘スフレーズを入力ã—ã¦ãã ã•ã„。"> パスフレーズ ã¯ã€ç§˜å¯†éµã‚’ä¿è­·ã™ã‚‹ãŸã‚ã®ãƒ‘スワードã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚ãªãŸè‡ªèº«ã«ã‚ˆã‚‹ç§˜å¯†éµã®èª¤ä½¿ç”¨ã‚„ã€ç¬¬ä¸‰è€…ã«ã‚ˆã‚‹ä¸æ­£ä½¿ç”¨ãŒé˜²æ­¢ã•れã¾ã™ã€‚"> 推奨ã•れã¾ã›ã‚“。"> 失効証明書ã®ç”Ÿæˆã®ãŸã‚パスフレーズを入力ã—ã¦ãã ã•ã„。"> å¤ã„環境ã§ã€ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’ä¿å­˜ã™ã‚‹ æ–°ã—ã„環境ã§ã€ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚€ "> ã“ã®åº¦ã¯ã€Enigmail ã‚’ã”利用ã„ãŸã ãã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚"> å¤ã„環境ã§ã€ã“ã®ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’ä¿å­˜ã™ã‚‹ æ–°ã—ã„環境ã§ã€ã‚¦ã‚£ã‚¶ãƒ¼ãƒ‰ã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’読ã¿è¾¼ã‚€ "> enigmail/lang/ja/enigmail.properties000066400000000000000000001323601266701624400200760ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail 警告 enigConfirm=Enigmail ç¢ºèª enigError=Enigmail エラー enigPrompt=Enigmail プロンプト dlgYes=ã¯ã„(&Y) dlgNo=ã„ã„ãˆ(&N) dlgKeepSetting=設定をä¿å­˜ã—ã€æ¬¡å›žã‹ã‚‰å°‹ã­ãªã„ dlgNoPrompt=次回ã‹ã‚‰ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’表示ã—ãªã„ dlg.button.delete=削除(&D) dlg.button.cancel=キャンセル(&C) dlg.button.close=é–‰ã˜ã‚‹(&C) dlg.button.continue=続行(&T) dlg.button.skip=スキップ(&S) dlg.button.overwrite=上書ã(&O) dlg.button.view=表示(&V) dlg.button.retry=å†è©¦è¡Œ(&R) dlg.button.ignore=無視(&I) repeatPrefix=\n\nã“ã®è­¦å‘Šã¯ %S repeatSuffixSingular=回繰り返ã•れã¾ã™ repeatSuffixPlural=回繰り返ã•れã¾ã™ noRepeat=\n\nEnigmail をアップグレードã™ã‚‹ã¾ã§ã€ã“ã®è­¦å‘Šã¯ç¹°ã‚Šè¿”ã•れã¾ã›ã‚“ pgpNotSupported=Enigmail ã‚’ PGP 6.x ã¨å…±ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™\n\n残念ãªãŒã‚‰ã€PGP 6.x 㯠Enigmail を誤動作ã•ã›ã‚‹å•題を多数抱ãˆã¦ã„ã¾ã™ã€‚ãã®ãŸã‚ã€Enigmail 㯠PGP 6.x をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。GnuPG (GPG) を代ã‚りã«ä½¿ç”¨ã—ã¦ãã ã•ã„\nã‚‚ã—ã€GnuPG ã¸ã®åˆ‡ã‚Šæ›¿ãˆã«ãƒ˜ãƒ«ãƒ—ãŒå¿…è¦ã§ã—ãŸã‚‰ã€Enigmail ã®ãƒ›ãƒ¼ãƒ ãƒšãƒ¼ã‚¸ã®ãƒ˜ãƒ«ãƒ—ã‚’å‚ç…§ã—ã¦ãã ã•ã„ initErr.howToFixIt=Enigmail ã®ä½¿ç”¨ã«ã¯ GnuPG ãŒå¿…è¦ã§ã™ã€‚GnuPG ã‚’ã¾ã ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã„ãªã„å ´åˆã«ã¯ã€ä¸‹ã®ã€Œã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ウィザードã€ãƒœã‚¿ãƒ³ã‹ã‚‰ GnuPG をインストールã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ initErr.setupWizard.button=セットアップウィザード(&S) passphraseCleared=パスフレーズを消去ã—ã¾ã—㟠cannotClearPassphrase=パスフレーズã®ç®¡ç†ã« gnome-keyring ãªã©ã®éžæ¨™æº–ã®ãƒ„ールを使用ã—ã¦ã„ã‚‹ãŸã‚ã€Enigmail ã¯ãƒ‘スフレーズを消去ã§ãã¾ã›ã‚“ noPhotoAvailable=写真ãŒã‚りã¾ã›ã‚“ debugLog.title=Enigmail デãƒãƒƒã‚°ãƒ­ã‚° error.photoPathNotReadable=写真ã¸ã®ãƒ‘ス '%S' ã¯èª­ã¿è¾¼ã‚ã¾ã›ã‚“ # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=ã“ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® Enigmail ã§ã¯ã€è¨­å®šé …ç›®ãŒä»¥å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‹ã‚‰å¤§ãã変化ã—ã¦ã„ã¾ã™ã€‚å¤ã„設定ã¯è‡ªå‹•çš„ã«ç§»è¡Œã•れã¦ã„ã¾ã™ãŒã€ã™ã¹ã¦ã®ã‚±ãƒ¼ã‚¹ã«ã¤ã„ã¦æ­£å¸¸ã«ç§»è¡Œã§ãã¦ã„ã‚‹ã“ã¨ã¯ä¿è¨¼ã§ãã¾ã›ã‚“ã€‚ç§»è¡Œå¾Œã®æ–°ã—ã„設定を改ã‚ã¦ç¢ºèªã™ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ enigmailCommon.checkPreferences=設定を確èªã™ã‚‹... preferences.defaultToPgpMime=Enigmail ã§ã®æ—¢å®šã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰æ–¹æ³•ã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ PGP ã‹ã‚‰ PGP/MIME ã¸å¤‰æ›´ã•れã¾ã—ãŸã€‚ã“ã®è¨­å®šã‚’ç¶­æŒã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™\n\n既定ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰æ–¹æ³•をインライン PGP ã¸å¤‰æ›´ã—ãŸã„å ´åˆã«ã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®š → OpenPGP セキュリティã‹ã‚‰å¤‰æ›´ã§ãã¾ã™ usingVersion=実行中㮠Enigmail ã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %S ã§ã™ usingAgent=%1$S ã¯å®Ÿè¡Œãƒ•ァイル %2$S を用ã„ã¦æš—å·åŒ–・復å·ã‚’ã—ã¦ã„ã¾ã™ agentError=エラー: Enigmail コアサービスã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—ãŸï¼ accessError=Enigmail サービスã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“ã§ã—㟠onlyGPG=éµã®ç”Ÿæˆã¯ GnuPG ã§ã®ã¿åˆ©ç”¨ã§ãã¾ã™ (PGP ã§ã¯å‹•作ã—ã¾ã›ã‚“ï¼) keygenComplete=éµã®ç”ŸæˆãŒçµ‚了ã—ã¾ã—ãŸã€‚<%S> ãŒç½²åã«åˆ©ç”¨ã•れã¾ã™ revokeCertRecommended=失効証明書を作æˆã™ã‚‹ã“ã¨ã‚’å¼·ãæŽ¨å¥¨ã—ã¾ã™ã€‚失効証明書ã¯éµã‚’無効ã«ã—ãŸã„時ã€ä¾‹ãˆã°ã€ç§˜å¯†éµã‚’ãªãã—ãŸã‚Šãƒ‘ã‚¹ãƒ•ãƒ¬ãƒ¼ã‚ºã‚’å¿˜ã‚ŒãŸæ™‚ã‚„ã€ãƒ‘スフレーズãŒç¬¬ä¸‰è€…ã«æ¼æ´©ã™ã‚‹ãªã©ç§˜å¯†éµã®ä¿¡ç”¨ãŒå¤±ã‚ã‚ŒãŸæ™‚ã«åˆ©ç”¨ã§ãã¾ã™ã€‚ãã®ã‚ˆã†ãªå¤±åŠ¹è¨¼æ˜Žæ›¸ã‚’ä»Šä½œæˆã—ã¾ã™ã‹ï¼Ÿ keyMan.button.generateCert=証明書を生æˆ(&G) genCompleteNoSign=éµã®ç”ŸæˆãŒçµ‚了ã—ã¾ã—㟠genGoing=éµã®ç”ŸæˆãŒæ—¢ã«å®Ÿè¡Œä¸­ã§ã™ passNoMatch=パスフレーズãŒä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸã€‚å†åº¦å…¥åŠ›ã—ã¦ãã ã•ã„ passCheckBox=éµã«å¯¾ã—ã¦ãƒ‘スフレーズを設定ã—ãªã„å ´åˆã¯ã€ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„ passUserName=ユーザåã‚’ã“ã® ID ã«æŒ‡å®šã—ã¦ãã ã•ã„ keygen.missingUserName=é¸æŠžã•れãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«é–¢é€£ä»˜ã‘られãŸåå‰ãŒå­˜åœ¨ã—ã¾ã›ã‚“。アカウント設定ã®ã€Œåå‰ã€æ¬„ã«é©åˆ‡ãªå€¤ã‚’入力ã—ã¦ãã ã•ã„ keygen.passCharProblem=パスフレーズã«ç‰¹æ®Šè¨˜å·ã‚’使用ã—ã¦ã„ã¾ã™ã€‚残念ãªãŒã‚‰ã€ä»–ã®ã‚¢ãƒ—リケーションã§ãƒˆãƒ©ãƒ–ルã®å…ƒã¨ãªã‚Šã¾ã™ã€‚パスフレーズã«ã¯ã€æ¬¡ã®æ–‡å­—ã®ã¿ã‚’使用ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=技術的制é™ã«ã‚ˆã‚Šã€ãƒ‘スフレーズã¯ã‚¹ãƒšãƒ¼ã‚¹è¨˜å·ã§é–‹å§‹ã‚ã‚‹ã„ã¯çµ‚了ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ changePassFailed=パスフレーズã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—㟠keyConfirm='%S' ã®å…¬é–‹éµã¨ç§˜å¯†éµã‚’生æˆã—ã¾ã™ã‹ï¼Ÿ keyMan.button.generateKey=éµã‚’生æˆ(&G) keyAbort=éµã®ç”Ÿæˆã‚’中止ã—ã¾ã™ã‹ï¼Ÿ keyMan.button.generateKeyAbort=éµç”Ÿæˆã‚’中止(&A) keyMan.button.generateKeyContinue=éµç”Ÿæˆã‚’継続(&C) expiryTooLong=100 年より長ã„間有効ãªéµã¯ç”Ÿæˆã§ãã¾ã›ã‚“ expiryTooLongShorter=90 年より長ã„間有効ãªéµã¯ç”Ÿæˆã§ãã¾ã›ã‚“ expiryTooShort=éµã¯å°‘ãªãã¨ã‚‚ 1 æ—¥é–“ã¯æœ‰åйã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ dsaSizeLimit=DSA ç½²åéµã®ã‚µã‚¤ã‚ºã¯ 3072 ビットã¾ã§ã«åˆ¶é™ã•れã¦ã„ã¾ã™ã€‚éµã®ã‚µã‚¤ã‚ºã¯ç¸®å°ã•れã¾ã™ keyGenFailed=éµã®ç”Ÿæˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚詳細ã¯ã€Enigmail ã®ã‚³ãƒ³ã‚½ãƒ¼ãƒ« (メニュー Enigmail -> Enigmail ã®ãƒ‡ãƒãƒƒã‚°) を確èªã—ã¦ãã ã•ã„ setKeyExpirationDateFailed=有効期é™ã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—㟠# Strings in enigmailMessengerOverlay.js securityInfo=Enigmail セキュリティ情報\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Attachments to this message have not been signed or encrypted*\n\n possiblyPgpMime=ãŠãらã PGP/MIME ã§æš—å·åŒ–ã‚‚ã—ãã¯ç½²åã•れã¦ã„ã¾ã™ã€‚「復å·/æ¤œè¨¼ã€æ©Ÿèƒ½ã‚’使用ã—ã¦ãã ã•ã„ noDecrypted=ä¿å­˜ã™ã¹ã復å·ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“ï¼\nファイルメニューã‹ã‚‰ä¿å­˜ã‚’é¸æŠžã—ã¦ãã ã•ã„ noMessage=ä¿å­˜ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“ï¼ useButton=復å·ã™ã‚‹ã«ã¯ã€Œå¾©å·/æ¤œè¨¼ã€æ©Ÿèƒ½ã‚’使用ã—ã¦ãã ã•ã„ saveHeader=Enigmail: 復å·ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä¿å­˜ saveAttachmentHeader=Enigmail: 復å·ã—ãŸæ·»ä»˜ãƒ•ァイルをä¿å­˜ noTempDir=書ãè¾¼ã¿å¯èƒ½ãªãƒ†ãƒ³ãƒãƒ©ãƒªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n環境変数 TEMP ã‚’é©åˆ‡ãªå ´æ‰€ã«è¨­å®šã—ã¦ãã ã•ã„ attachmentPgpKey=é–‹ã“ã†ã¨ã—ãŸæ·»ä»˜ãƒ•ァイル '%S' ã¯ã€OpenPGP éµãƒ•ァイルã®ã‚ˆã†ã§ã™\n\néµã‚’インãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€Œã‚¤ãƒ³ãƒãƒ¼ãƒˆã€ã‚’クリックã—ã¦ãã ã•ã„。「表示ã€ã‚’クリックã™ã‚‹ã¨ãƒ–ラウザウインドウã§ä¸­èº«ã‚’確èªã§ãã¾ã™ beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* ********* endPgpPart=********** *END ENCRYPTED or SIGNED PART* ********** notePartEncrypted=Enigmail: * Parts of the message have NOT been signed or encrypted* noteCutMessage=Enigmail: *Multiple message blocks found -- decryption/verification aborted* decryptOkNoSig=警告\n\n復å·ã«æˆåŠŸã—ã¾ã—ãŸãŒã€ç½²åã¯æ­£ã—ãæ¤œè¨¼ã§ãã¾ã›ã‚“ã§ã—㟠msgOvl.button.contAnyway=ãれã§ã‚‚続行ã—ã¾ã™ã‹ï¼Ÿ(&C) signature.verifiedOK=添付ファイル %S ã®ç½²åã®æ¤œè¨¼ã«æˆåŠŸã—ã¾ã—㟠signature.verifyFailed=添付ファイル %S ã®ç½²åã®æ¤œè¨¼ã«å¤±æ•—ã—ã¾ã—㟠attachment.noMatchToSignature=添付ファイル '%S' ã¯ç½²åファイルã«é©åˆã—ã¾ã›ã‚“ã§ã—㟠attachment.noMatchFromSignature=ç½²åファイル '%S' ã¯æ·»ä»˜ãƒ•ァイルã«é©åˆã—ã¾ã›ã‚“ã§ã—㟠fixBrokenExchangeMsg.failed=メッセージを修復ã§ãã¾ã›ã‚“ã§ã—㟠keysToExport=エクスãƒãƒ¼ãƒˆã™ã‚‹ OpenPGP éµã®ãƒ¦ãƒ¼ã‚¶ ID (メールアドレス) keysToUse=%S ã«ä½¿ç”¨ã™ã‚‹ OpenPGP éµã‚’é¸æŠžã—ã¦ãã ã•ã„ pubKey=%Sã®å…¬é–‹éµ \n windowLocked=作æˆç”»é¢ãŒãƒ­ãƒƒã‚¯ã•れã¦ã„ã¾ã™ã€‚é€ä¿¡ã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—㟠sendUnencrypted=Enigmail ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ\n何もã—ãªã„ã§å¹³æ–‡ã‚’é€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ composeSpecifyEmail=主ã«ä½¿ã†ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’決ã‚ã¦ãã ã•ã„。ãれã¯é€ä¿¡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ç½²åã™ã‚‹éš›ã«ä½¿ç”¨ã•れã¾ã™\n空白ã«ã—ãŸå ´åˆã€å·®å‡ºäººã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç½²åã‚’ã™ã‚‹éš›ã®éµã® ID ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ sendingHiddenRcpt=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ BCC (blind carbon copy) ã§ã®å—å–人ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æš—å·åŒ–ã—ãŸå ´åˆã€BCC å—信者を隠蔽ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ãŒ PGP Corp. ã®è£½å“ã®ã‚ˆã†ã«å¾©å·ã§ããªã„製å“ãŒã‚りã¾ã™ã€‚ã“ã®ã‚ˆã†ãªã“ã¨ã‹ã‚‰æš—å·åŒ–メッセージã«ã¯ BCC ã®ä½¿ç”¨ã‚’é¿ã‘ã‚‹ã“ã¨ã‚’ãŠå‹§ã‚ã—ã¾ã™ sendWithHiddenBcc=BCC å—信者を隠蔽ã™ã‚‹ sendWithShownBcc=BCC å—信者を隠蔽ã—ãªã„ sendingNews=æš—å·åŒ–é€ä¿¡ã¯ä¸­æ–­ã—ã¾ã—ãŸ\n\nニュースグループã®å—å–人ãŒå«ã¾ã‚Œã¦ã„ã‚‹ãŸã‚æš—å·åŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚æš—å·åŒ–ã›ãšã«å†åº¦ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã—ã¦ãã ã•ã„ sendToNewsWarning=警告: ã‚ãªãŸã¯ãƒ‹ãƒ¥ãƒ¼ã‚¹ã‚°ãƒ«ãƒ¼ãƒ—ã«é€ä¿¡ã™ã‚‹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æš—å·åŒ–ã—よã†ã¨ã—ã¦ã„ã¾ã™\n\nã“れã¯ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼å…¨å“¡ãŒå¾©å·å¯èƒ½ã¨åˆ¤æ–­ã§ãã‚‹å ´åˆä»¥å¤–ã¯ãŠå‹§ã‚ã§ãã¾ã›ã‚“。ã™ãªã‚ã¡ã€ã‚°ãƒ«ãƒ¼ãƒ—å‚加者全員ã®å…¬é–‹éµãŒå¿…è¦ã ã¨ã„ã†ã“ã¨ã§ã™ã€‚何をã—よã†ã¨ã—ã¦ã„ã‚‹ã‹ã‚’判ã£ã¦ã„ã‚‹å ´åˆã ã‘é€ä¿¡ã—ã¦ä¸‹ã•ã„\n\nç¶šã‘ã¾ã™ã‹ï¼Ÿ hasHTML=HTML メールã®è­¦å‘Š:\nã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ HTML ã‚’å«ã‚€ã¨æ€ã‚れã¾ã™ãŒã€ãã®å ´åˆã€ç½²å/æš—å·åŒ–ã«å¤±æ•—ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚今後ã«ã‚ãŸã‚Šå›žé¿ã™ã‚‹ãŸã‚ã«ã¯ã€ç½²å付ãメールをé€ã‚‹ã¨ãã«ã¯ä½œæˆ/返信ボタンを SHIFT キーを押ã—ãªãŒã‚‰ã‚¯ãƒªãƒƒã‚¯ã—ã¦ãã ã•ã„\nã‚‚ã—æ—¢å®šã§ç½²åã™ã‚‹è¨­å®šã®å ´åˆã¯ã€ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®è¨­å®šã§ã€ŒHTML å½¢å¼ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’作æˆã™ã‚‹ã€ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‹ã‚‰ãƒã‚§ãƒƒã‚¯ã‚’ã¯ãšã—ã€æ’久的㫠HTML メールを作æˆã—ãªã„よã†ã«ã—ã¦ãã ã•ã„ strippingHTML=メッセージã«å«ã¾ã‚Œã‚‹ HTML å½¢å¼ã¯ã€ç½²å/æš—å·åŒ–ã™ã‚‹æ™‚ã«ãƒ—レーンテキストã«å¤‰æ›ã•れるãŸã‚ã«ã€å¤±ã‚れã¾ã™ã€‚ãれã§ã‚‚ç¶šã‘ã¾ã™ã‹ï¼Ÿ msgCompose.button.sendAnyway=ã¨ã«ã‹ãé€ä¿¡ã™ã‚‹(&S) attachWarning=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«æ·»ä»˜ã—よã†ã¨ã—ã¦ã„ã‚‹ã®ã¯ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ァイルã§ã¯ãªã„ã®ã§ã€æš—å·åŒ–ã§ãã¾ã›ã‚“。添付ファイルを暗å·åŒ–ã™ã‚‹ãŸã‚ã«ã¯ã€ã¾ãšãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ァイルã¨ã—ã¦ä¿å­˜ã—ã¦ã‹ã‚‰æ·»ä»˜ã—ã¦ãã ã•ã„。構ã‚ãšæ¬¡ã¸é€²ã¿ã¾ã™ã‹ï¼Ÿ quotedPrintableWarn=Quoted-Printable エンコーディングãŒé€ä¿¡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«å¯¾ã—ã¦æœ‰åйã«ãªã£ã¦ã„ã¾ã™ã€‚ ã“れã«ã‚ˆã‚Šã€æš—å·åŒ–ã‚„ã€ç½²åã®æ¤œè¨¼ã®å‹•ä½œã«æ‚ªå½±éŸ¿ã‚’åŠã¼ã™å¯èƒ½æ€§ãŒã‚りã¾ã™\n今ã™ã Quoted-Printable エンコーディングを無効ã«ã—ã¾ã™ã‹ï¼Ÿ minimalLineWrapping=%S æ–‡å­—ã§æ”¹è¡Œã™ã‚‹è¨­å®šã«ãªã£ã¦ã„ã¾ã™ã€‚æ­£ã—ã„æš—å·åŒ–åŠã³ç½²åã«ã¯ã€å°‘ãªãã¨ã‚‚ 68 æ–‡å­—ã§æ”¹è¡Œã™ã‚‹å¿…è¦ãŒã‚りã¾ã™\n今ã™ã改行文字数を 68 ã¸å¤‰æ›´ã—ã¾ã™ã‹ï¼Ÿ warning=警告 signIconClicked=ç½²åã®è¨­å®šã‚’手動ã§å¤‰æ›´ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä½œæˆä¸­ã¯ã€ç½²åã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) を無視ã—ã¾ã™ pgpMime_sMime.dlg.text=PGP/MIME 㨠S/MIME ã‚’åŒæ™‚ã«æœ‰åйã«ã—ã¾ã—ãŸãŒã€ã“れらã®ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã‚’åŒæ™‚ã«ã‚µãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ã©ã¡ã‚‰ã‚’利用ã™ã‚‹ã‹é¸æŠžã—ã¦ãã ã•ã„ pgpMime_sMime.dlg.pgpMime.button=&PGP/MIME を利用ã™ã‚‹ pgpMime_sMime.dlg.sMime.button=&S/MIME を利用ã™ã‚‹ errorKeyUnusable=メールアドレスã‚ã‚‹ã„ã¯éµ ID '%S' ã¯æœ‰åйã‹ã¤æœŸé™åˆ‡ã‚Œã§ãªã„ OpenPGP éµã«é©åˆã—ã¾ã›ã‚“ã§ã—ãŸ\nã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®šã§æœ‰åŠ¹ãª OpenPGP éµãŒæŒ‡å®šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„ errorOwnKeyUnusable=ç¾åœ¨ã®å·®å‡ºäººã«æŒ‡å®šã•れã¦ã„ã‚‹éµ ID '%S' ã¯åˆ©ç”¨å¯èƒ½ãª OpenPGP éµã«é©åˆã—ã¾ã›ã‚“ã§ã—ãŸ\n\nã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®šã§æœ‰åйã‹ã¤æœŸé™åˆ‡ã‚Œã§ãªã„ OpenPGP éµãŒæŒ‡å®šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„\néµãŒæœŸé™åˆ‡ã‚Œã§ã¯ãªã„ã«ã‚‚ã‹ã‹ã‚らãšã“ã®ã‚¨ãƒ©ãƒ¼ãŒè¡¨ç¤ºã•れる場åˆã«ã¯ã€æ‰€æœ‰è€…ã«ã‚ˆã‚‹ä¿¡ç”¨åº¦ãŒã€Œå®Œå…¨ã«ä¿¡ç”¨ã€ã‚ã‚‹ã„ã¯ã€Œçµ¶å¯¾çš„ã«ä¿¡ç”¨ã€ã«ãªã£ã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„ msgCompose.cannotSaveDraft=下書ãã‚’æš—å·åŒ–ã—ã¦ä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: msgCompose.internalEncryptionError=内部エラー: 期待ã•ã‚ŒãŸæš—å·åŒ–ã¯ç„¡åŠ¹åŒ–ã•れã¾ã—㟠msgCompose.internalError=内部エラーãŒç™ºç”Ÿã—ã¾ã—㟠msgCompose.toolbarTxt.signAndEncrypt=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æš—å·åŒ–ãŠã‚ˆã³ç½²åã•れã¾ã™ msgCompose.toolbarTxt.signOnly=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ç½²åã•れã¾ã™ msgCompose.toolbarTxt.encryptOnly=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æš—å·åŒ–ã•れã¾ã™ msgCompose.toolbarTxt.noEncryption=ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æš—å·åŒ–ã‚‚ç½²åã‚‚ã•れã¾ã›ã‚“ msgCompose.toolbarTxt.disabled=é¸æŠžã—ãŸå·®å‡ºäººã«ã¤ã„㦠Enigmail ã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™ msgCompose.toolbarTxt.smime=S/MIME ãŒæœ‰åŠ¹åŒ–ã•れã¦ã„ã¾ã™ - Enigmail ã¨è¡çªã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ msgCompose.toolbarTxt.smimeOff=- S/MIME ã¯ä½¿ç”¨ã•れã¾ã›ã‚“ msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME ãŒæœ‰åŠ¹åŒ–ã•れã¦ã„ã¾ã™ - Enigmail ã¯ä½¿ç”¨ã•れã¾ã›ã‚“ msgCompose.toolbarTxt.smimeNoDraftEncryption=- 下書ãã¯æš—å·åŒ–ã•れã¾ã›ã‚“ msgCompose.toolbarTxt.smimeConflict=S/MIME ãŒæœ‰åŠ¹åŒ–ã•れã¦ã„ã‚‹ãŸã‚ã€Enigmail ã¯ä½¿ç”¨ã•れã¾ã›ã‚“。S/MIME ã«ã‚ˆã‚‹ç½²å/æš—å·åŒ–を無効化ã—ã¦ã‹ã‚‰ Enigmail ã«ã‚ˆã‚‹æš—å·åŒ–を有効化ã—ã¦ãã ã•ã„ msgCompose.encryptedSubjectStub=æš—å·åŒ–ã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ msgCompose.detailsButton.label=詳細... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=é€ä¿¡ãŒä¸­æ–­ã•れã¾ã—ãŸ\n\n # details: keyNotTrusted=éµ '%S' ã«ã¯å分ãªä¿¡ç”¨åº¦ãŒã‚りã¾ã›ã‚“ keyNotFound=éµ '%S' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ keyRevoked=éµ '%S' ã¯å¤±åйã—ã¦ã„ã¾ã™ keyExpired=éµ '%S' ã¯æœŸé™åˆ‡ã‚Œã§ã™ statPGPMIME=PGP/MIME statSigned=ç½²åã•れ㟠statEncrypted=æš—å·åŒ–ã•れ㟠statPlain=ç½²åã‚‚æš—å·åŒ–ã‚‚ã•れã¦ã„ãªã„ offlineSave=%2$S 宛㮠%1$S メッセージを未é€ä¿¡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ•ォルダã¸ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ onlineSend=%2$S 宛㮠%1$S メッセージをé€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ encryptKeysNote=注æ„: ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯æ¬¡ã®ãƒ¦ãƒ¼ã‚¶ ID/éµã«å¯¾ã—ã¦æš—å·åŒ–ã•れã¦ã„ã¾ã™: %S hiddenKey=<隠蔽ã•れãŸéµ> signFailed=Enigmail エラー; ç½²å/æš—å·åŒ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚æš—å·åŒ–ã›ãšã«å¹³æ–‡ã‚’é€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ msgCompose.button.sendUnencrypted=æš—å·åŒ–ã›ãšã«å¹³æ–‡ã‚’é€ä¿¡ã™ã‚‹(&S) recipientsSelectionHdr=æš—å·åŒ–ã®ãŸã‚ã®å—å–人を指定ã—ã¦ãã ã•ã„ configureNow=ã“ã® ID ã«å¯¾ã—㦠Enigmail セキュリティ ãŒã¾ã è¨­å®šã•れã¦ã„ã¾ã›ã‚“。今ã™ã設定ã—ã¾ã™ã‹ï¼Ÿ # encryption/signing status and associated reasons: encryptMessageAuto=æš—å·åŒ–: 有効 (自動) encryptMessageNorm=æš—å·åŒ–: 有効 signMessageAuto=ç½²å: 有効 (自動) signMessageNorm=ç½²å: 有効 encryptOff=æš—å·åŒ–: 無効 encryptOnWithReason=æš—å·åŒ–: 有効 (%S) encryptOffWithReason=æš—å·åŒ–: 無効 (%S) encryptOn=æš—å·åŒ–: 有効 signOn=ç½²å: 有効 signOff=ç½²å: 無効 signOnWithReason=ç½²å: 有効 (%S) signOffWithReason=ç½²å: 無効 (%S) reasonEnabledByDefault=æ—¢å®šã§æœ‰åй reasonManuallyForced=æ‰‹å‹•ã§æŒ‡å®š reasonByRecipientRules=å—å–人ã”ã¨ã®è¨­å®šã«ã‚ˆã‚‹æŒ‡å®š reasonByAutoEncryption=é€ä¿¡æ™‚ã®è¨­å®šã«ã‚ˆã‚‹æŒ‡å®š reasonByConflict=å—å–人ã”ã¨ã®è¨­å®šã«çŸ›ç›¾ãŒå­˜åœ¨ reasonByEncryptionMode=æš—å·åŒ–モードã«ã‚ˆã‚‹æŒ‡å®š reasonSmimeConflict=S/MIME ãŒæœ‰åŠ¹åŒ–ã•れã¦ã„ã¾ã™ # should not be used anymore: encryptYes=æš—å·åŒ–ã™ã‚‹ encryptNo=æš—å·åŒ–ã—ãªã„ # should not be used anymore: signYes=ç½²åã™ã‚‹ signNo=ç½²åã—ãªã„ # PGP/MIME status: pgpmimeNormal=プロトコル: PGP/MIME inlinePGPNormal=プロトコル: インライン PGP pgpmimeAuto=プロトコル: PGP/MIME (自動) inlinePGPAuto=プロトコル: インライン PGP (自動) # should not be used anymore pgpmimeYes=PGP/MIME pgpmimeNo=インライン PGP # Attach own key status (tooltip strings): attachOwnKeyNo=ã‚ãªãŸã®å…¬é–‹éµã¯æ·»ä»˜ã•れã¾ã›ã‚“ attachOwnKeyYes=ã‚ãªãŸã®å…¬é–‹éµãŒæ·»ä»˜ã•れã¾ã™ attachOwnKeyDisabled=ã‚ãªãŸã®å…¬é–‹éµã‚’添付ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。éµã‚’添付ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®š → OpenPGP セキュリティ\nã«ãŠã„ã¦ã“ã®æ©Ÿèƒ½ã‚’有効化ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ rulesConflict=å—å–人ã”ã¨ã®è¨­å®šã«çŸ›ç›¾ãŒã‚りã¾ã™\n%S\n\nã“れらã®è¨­å®šã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã—ã¾ã™ã‹ï¼Ÿ msgCompose.button.configure=設定ã™ã‚‹(&C) msgCompose.button.send=メッセージをé€ä¿¡ã™ã‚‹(&S) msgCompose.button.save=メッセージをä¿å­˜ã™ã‚‹(&S) # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=ç½²åã®æ¤œè¨¼ã«ã¯å…¬é–‹éµ %S ãŒå¿…è¦ã§ã™ keyUsed=ç½²åã®æ¤œè¨¼ã«ã¯å…¬é–‹éµ %S ãŒä½¿ã‚れã¾ã—㟠clickDecrypt=; 「復å·/æ¤œè¨¼ã€æ©Ÿèƒ½ã‚’使用ã—ã¦ãã ã•ã„ clickDecryptRetry=; å†åº¦è©¦ã™ã«ã¯ã€ã€Œå¾©å·/æ¤œè¨¼ã€æ©Ÿèƒ½ã‚’使用ã—ã¦ãã ã•ã„ clickDetailsButton=; 詳ã—ãã¯ã€Œè©³ç´°ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦ãã ã•ã„ clickImportButton=; 「éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã¦éµã‚’インãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„ keyTypeUnsupported=; ã“ã®å½¢å¼ã®éµã¯ãŠä½¿ã„ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GnuPG ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ msgPart=メッセージã®ä¸€éƒ¨åˆ†ãŒ %S ã•れã¦ã„ã¾ã™ msgSigned=ç½²å msgSignedUnkownKey=䏿˜Žãªéµã§ç½²å msgEncrypted=æš—å·åŒ– msgSignedAndEnc=ç½²åã‹ã¤æš—å·åŒ– unverifiedSig=検証ã§ããªã„ç½²åã§ã™ incompleteDecrypt=復å·ãŒä¸å®Œå…¨ã§ã™ needKey=エラー - メッセージã®å¾©å·ã«é©åˆã™ã‚‹ç§˜å¯†éµãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ failedDecrypt=エラー - 復å·ã«å¤±æ•—ã—ã¾ã—㟠badPhrase=エラー - 無効ãªãƒ‘スフレーズã§ã™ failedDecryptVerify=エラー - 復å·/検証ã«å¤±æ•—ã—ã¾ã—㟠viewInfo=; 詳細ã¯ã€Œãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£æƒ…å ±ã€ã‚’確èªã—ã¦ãã ã•ã„ decryptedMsg=復å·ã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ decryptedMsgWithFormatError=復å·ã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ (å¤ã„ Exchange サーãƒã«ã‚ˆã‚‹ PGP フォーマットã®ç ´æã‚’修復ã—ã¦ã„ã‚‹ãŸã‚ã€å¾©å·çµæžœã‚’æ­£ã—ã読むã“ã¨ãŒã§ããªã„å¯èƒ½æ€§ãŒã‚りã¾ã™) usedAlgorithms=使用アルゴリズム: %S ãŠã‚ˆã³ %S # strings in pref-enigmail.js oldGpgVersion14=Enigmail ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—ãŸ\n\nGnuPG ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %S ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã¾ã™ãŒã€ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® GnuPG 㯠Enigmail ã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。Enigmail ã®å‹•作ã«ã¯ GnuPG ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.0.7 以é™ãŒå¿…è¦ã§ã™ã€‚GnuPG をアップグレードã—ã¦ãã ã•ã„ locateGpg=GnuPG プログラムを指定ã™ã‚‹ invalidGpgPath=GnuPG ã¯è¨­å®šã•れã¦ã„るパスã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。Enigmail 㯠GnuPG ã®ãƒ‘スをå†è¨­å®šã™ã‚‹ã‹ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã™ã‚‹ã¾ã§ç„¡åйã¨ãªã‚Šã¾ã™ warningsAreReset=ã™ã¹ã¦ã®è­¦å‘Šã¯ãƒªã‚»ãƒƒãƒˆã•れã¾ã—㟠prefs.gpgFound=GnuPG 実行ファイル:%S prefs.gpgNotFound=GnuPG ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—㟠prefs.warnAskNever=警告: ã“ã®è¨­å®šã‚’有効ã«ã™ã‚‹ã¨ã€å—å–人ã®ä¸€äººã«ã§ã‚‚éµãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«ã€ä¸€åˆ‡ã®é€šçŸ¥ã‚‚ãªãæš—å·åŒ–ã•れãªããªã‚Šã¾ã™ã€‚Enigmail ã¯ã“ã®ã‚ˆã†ãªã“ã¨ãŒèµ·ã“ã£ã¦ã‚‚一切通知ã—ã¾ã›ã‚“ prefs.warnIdleTimeForUnknownAgent=gpg-agent ã«æŽ¥ç¶šã§ãã¾ã›ã‚“。ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ãƒ‘スフレーズã®ç®¡ç†ã« gpg-agent ã§ã¯ãªã特別ãªãƒ„ール (例:gnome-keyringã€seahorse-agentã€KDE wallet manager ãªã©) ãŒä½¿ã‚れã¦ã„るよã†ã§ã™ã€‚Enigmail ã¯ã“れらã®ãƒ„ールã«ã‚ˆã‚‹ãƒ‘スフレーズã®è¨˜æ†¶æ™‚間を制御ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。ãã®ãŸã‚ã€Enigmail ã§ã®ãƒ‘スフレーズã®è¨˜æ†¶æ™‚é–“ã®è¨­å®šã¯ç„¡è¦–ã•れã¾ã™ prefEnigmail.oneKeyserverOnly=エラー - OpenPGP éµã®è‡ªå‹•çš„ãªãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã®ãŸã‚ã®å…¬é–‹éµã‚µãƒ¼ãƒã¯ 1 ã¤ã—ã‹æŒ‡å®šã§ãã¾ã›ã‚“ enterAdminPin=スマートカードã®ç®¡ç†è€… PIN を入力ã—ã¦ãã ã•ã„ enterCardPin=スマートカード㮠PIN を入力ã—ã¦ãã ã•ã„ notInit=エラー - Enigmail サービスã¯ã¾ã åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“ badCommand=エラー - æš—å·åŒ–コマンドã¯å¤±æ•—ã—ã¾ã—㟠cmdLine=コマンドラインã¨å‡ºåŠ›: notRequired=エラー - æš—å·åŒ–ã¯å¿…è¦ã‚りã¾ã›ã‚“ notComplete=エラー - éµã®ç”ŸæˆãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“ invalidEmail=エラー - 無効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã™ noPassphrase=エラー - パスフレーズãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“ noPGPblock=エラー - 有効㪠OpenPGP データブロックãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ unverifiedReply=インデントã•れ㟠(返信) 部分ãŒãŠãらã修正ã•れã¦ã„ã¾ã™ keyInMessageBody=メッセージ中ã«éµãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚「éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã€ã‚’クリックã—ã¦éµã‚’インãƒãƒ¼ãƒˆã—ã¦ãã ã•ã„ sigMismatch=エラー - ç½²åãŒä¸æ­£ã§ã™ cantImport=公開éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸ\n\n doImportOne=éµ %1$S (%2$S) をインãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ doImportMultiple=ã“れらã®éµã‚’インãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ\n\n%S previewFailed=公開éµã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—㟠# Strings used in errorHandling.jsm sc.wrongCardAvailable=ã‚«ãƒ¼ãƒ‰ãƒªãƒ¼ãƒ€ã«æŒ¿å…¥ã•れã¦ã„るスマートカード %1$S ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å‡¦ç†ã«ä½¿ç”¨ã§ãã¾ã›ã‚“\nスマートカード %2$S を挿入ã—ã¦ã‚‚ã†ä¸€åº¦æ“作をã—ã¦ä¸‹ã•ã„ sc.insertCard=ã“ã®æ“作ã«ã¯ã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ %S ãŒå¿…è¦ã§ã™\nå¿…è¦ãªã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’挿入ã—ã¦ã‚‚ã†ä¸€åº¦æ“作をã—ã¦ä¸‹ã•ã„ sc.removeCard=ã“ã®æ“作ã«ã¯ã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã¯ä¸è¦ã§ã™\nスマートカードを抜ã„ã¦ã‚‚ã†ä¸€åº¦æ“作をã—ã¦ä¸‹ã•ã„ sc.noCardAvailable=スマートカードãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\nスマートカードを挿入ã—ã¦ã€ã‚‚ã†ä¸€åº¦æ“作を行ã£ã¦ãã ã•ã„ sc.noReaderAvailable=スマートカードリーダã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“\nカードリーダを接続ã—ã€ã‚¹ãƒžãƒ¼ãƒˆã‚«ãƒ¼ãƒ‰ã‚’挿入ã—ã¦ã€ã‚‚ã†ä¸€åº¦æ“作を行ã£ã¦ãã ã•ã„ keyError.keySpecNotFound=メールアドレス "%S" ã«é©åˆã™ã‚‹éµãŒéµæŸã®ä¸­ã«ã‚りã¾ã›ã‚“ keyError.keyIdNotFound=指定ã•れãŸéµ ID "%S" ãŒéµæŸã®ä¸­ã«ã‚りã¾ã›ã‚“ keyError.resolutionAction=アカウント設定 → OpenPGP セキュリティã«ãŠã„ã¦æ­£å½“ãªéµã‚’指定ã—ã¦ãã ã•ã„ missingPassphrase=パスフレーズãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ errorHandling.gpgAgentInvalid=システムã§åˆ©ç”¨ã•れã¦ã„ã‚‹ gpg-agent ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€GnuPG ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨äº’æ›æ€§ãŒã‚りã¾ã›ã‚“ errorHandling.gpgAgentError=GnuPG ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ä¸€éƒ¨ã§ã‚ã‚‹ gpg-agent ã¨ã®ã‚³ãƒŸãƒ¥ãƒ‹ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«é–¢ã™ã‚‹ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ã¦ã„ã¾ã™ errorHandling.dirmngrError=GnuPG ãŒã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆã®ä¸€éƒ¨ã§ã‚ã‚‹ dirmngr ã¨ã®ã‚³ãƒŸãƒ¥ãƒ‹ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã«é–¢ã™ã‚‹ã‚¨ãƒ©ãƒ¼ã‚’報告ã—ã¦ã„ã¾ã™ errorHandling.pinentryError=GnuPG ã¯ã‚ãªãŸã®ãƒ‘スフレーズを pinentry 経由ã§å•ã„åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—㟠errorHandling.readFaq=ã“れã¯ã‚·ã‚¹ãƒ†ãƒ ã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã‚ã‚‹ã„ã¯è¨­å®šã®ã‚¨ãƒ©ãƒ¼ã§ã‚りã€Enigmail ãŒè‡ªå‹•çš„ã«ä¿®æ­£ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“\n\n以下ã®ã‚¦ã‚§ãƒ–サイトをå‚ç…§ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™: https://enigmail.net/faq gpgNotFound=GnuPG プログラムを '%S' ã«è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\nEnigmail ã®è¨­å®šã§ã€GnuPG 実行ファイルã®ãƒ‘ã‚¹ãŒæ­£ã—ã設定ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„ gpgNotInPath=GnuPG 実行ファイルを PATH ã®ä¸­ã‹ã‚‰è¦‹ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\nEnigmail ã®è¨­å®šã§ã€GnuPG 実行ファイルã®ãƒ‘ã‚¹ãŒæ­£ã—ã設定ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„ enigmailNotAvailable=Enigmail コアサービスを利用ã§ãã¾ã›ã‚“ gpgAgentNotStarted=使用ã—ã¦ã„ã‚‹ GnuPG ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %S ã§å¿…è¦ãª gpg-agent ã‚’é–‹å§‹ã§ãã¾ã›ã‚“ prefUntrusted=ä¿¡é ¼ã—ã¦ã„ãªã„ prefRevoked=失効済ã¿ã®éµ prefExpiredKey=期é™åˆ‡ã‚Œã®éµ prefExpired=期é™åˆ‡ã‚Œ prefGood=%S ã«ã‚ˆã‚‹æ­£å½“ãªç½²åã§ã™ prefBad=%S ã«ã‚ˆã‚‹ä¸æ­£ãªç½²åã§ã™ failCancel=エラー - ユーザーã«ã‚ˆã£ã¦éµã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒä¸­æ­¢ã•れã¾ã—㟠failNoServer=エラー - éµã‚’ダウンロードã™ã‚‹ãŸã‚ã®éµã‚µãƒ¼ãƒãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ failNoID=エラー - éµã‚’ダウンロードã™ã‚‹ãŸã‚ã® ID ãŒæŒ‡å®šã•れã¦ã„ã¾ã›ã‚“ failKeyExtract=エラー - éµã®å±•開コマンドã«å¤±æ•—ã—ã¾ã—㟠notFirstBlock=エラー - 最åˆã® OpenPGP ブロックã¯å…¬é–‹éµã§ã¯ã‚りã¾ã›ã‚“ importKeyConfirm=メッセージ中ã«åŸ‹ã‚è¾¼ã¾ã‚ŒãŸéµã‚’インãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ failKeyImport=エラー - éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—㟠fileWriteFailed=ファイル %S ã¸ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—㟠importKey=å…¬é–‹éµ %S ã‚’éµã‚µãƒ¼ãƒã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¾ã™: uploadKey=å…¬é–‹éµ %S ã‚’éµã‚µãƒ¼ãƒã¸ã‚¢ãƒƒãƒ—ロードã—ã¾ã™: keyId=éµ ID keyAndSigDate=éµ ID: 0x%1$S / ç½²åæ—¥æ™‚: %2$S keyFpr=フィンガープリント: %S noEmailProvided=メールアドレスãŒå…¥åŠ›ã•れã¦ã„ã¾ã›ã‚“ï¼ keyAlreadySigned=ã“ã®éµã¯æ—¢ã«ç½²åã•れã¦ã„ã¾ã™ã€‚2 度ã¯ç½²åã§ãã¾ã›ã‚“ gnupg.invalidKey.desc=éµ %S ã¯æœ‰åйã§ã¯ãªã„ã€ã‚ã‚‹ã„ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。期é™åˆ‡ã‚Œã®å¯èƒ½æ€§ãŒã‚りã¾ã™ selKeyExpired=期é™åˆ‡ã‚Œã® %S createdHeader=生æˆã•れã¾ã—㟠atLeastOneKey=éµãŒ 1 ã¤ã‚‚é¸æŠžã•れã¦ã„ã¾ã›ã‚“。少ãªãã¨ã‚‚ 1 ã¤ã®éµã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ fewerKeysThanRecipients=å—å–人より少ãªã„æ•°ã®éµã—ã‹é¸æŠžã•れã¦ã„ã¾ã›ã‚“。éµã®é¸æŠžã‚’終了ã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ userSel.button.goBack=éµã®é¸æŠžã«æˆ»ã‚‹ userSel.secretKeySel.title=ç½²å用ã®ç§˜å¯†éµã‚’é¸æŠžã™ã‚‹ userSel.problemNoKey=有効ãªéµãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ userSel.problemMultipleKeys=複数ã®éµãŒã‚りã¾ã™ # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=後ã§é€ä¿¡ # Strings used in enigmailAttachmentDialog.js pgpMimeNote=注æ„: PGP/MIME ã¯é™ã‚‰ã‚ŒãŸãƒ¡ãƒ¼ãƒ©ã§ã—ã‹ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼Windows ã§ã‚れã°ã€Thunderbird + Enigmailã€Sylpheedã€Pegasusã€Mulberryã€Becky! Internet Mailã€QMAIL3ã€Edmax ãªã©ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã‚‹ã“ã¨ã§çŸ¥ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚Linux/UNIX 㨠Mac OS X ã®ãƒãƒ”ュラーãªãƒ¡ãƒ¼ãƒ©ã¯ PGP/MIME をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚よãã‚ã‹ã‚‰ãªã„å ´åˆã¯ã€%S è¨­å®šã‚’é¸æŠžã—ã¦ãã ã•ã„ first=1 番目㮠second=2 番目㮠# Strings used in am-enigprefs.js encryptKeyHeader=æš—å·åŒ–ã®ãŸã‚ã® OpenPGP éµã®é¸æŠž identityName=ID: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=æš—å·åŒ–を有効ã«ã—ã¾ã—ãŸãŒã€éµã‚’é¸æŠžã—ã¦ã„ã¾ã›ã‚“。%1$S ã¸é€ä»˜ã™ã‚‹ãƒ¡ãƒ¼ãƒ«ã‚’æš—å·åŒ–ã™ã‚‹ãŸã‚ã«ã¯ã€æœ‰åйãªéµã‚’éµãƒªã‚¹ãƒˆã‹ã‚‰é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚%2$S ã¸ã®æš—å·åŒ–を無効ã«ã—ã¾ã™ã‹ï¼Ÿ noKeyToUse=(ç„¡ã— - æš—å·åŒ–ã—ãªã„) noEmptyRule=空ã®ãƒ«ãƒ¼ãƒ«ã¯ç„¡åйã§ã™ã€‚ルール欄ã«ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’設定ã—ã¦ãã ã•ã„ invalidAddress=入力ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç„¡åйã§ã™ã€‚å—å–人ã®åå‰ã¯è¨­å®šã§ãã¾ã›ã‚“。メールアドレスã ã‘ã«ã—ã¦ãã ã•ã„。例:\n 無効ãªä¾‹: 日本 èŠ±å­ \næ­£ã—ã„例: hanako.nippon@address.net noCurlyBrackets=中括弧 {} ã¯ç‰¹åˆ¥ãªæ„味をæŒã¡ã¾ã™ã®ã§ã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ä½¿ç”¨ã—ãªã„ã§ãã ã•ã„。ã“ã®ãƒ«ãƒ¼ãƒ«ã«å½“ã¦ã¯ã¾ã‚‹æ™‚ã®å‹•作を修正ã—ãŸã„ã™ã‚‹å ´åˆã¯ã€'å—å–人ãŒä¸Šè¨˜ã‚¢ãƒ‰ãƒ¬ã‚¹...' オプションを使用ã—ã¦ãã ã•ã„\nè©³ç´°ãªæƒ…å ±ã¯ãƒ˜ãƒ«ãƒ—ボタンを押ã—ã¦ãã ã•ã„ # Strings used in enigmailRulesEditor.js never=無効 always=有効 possible=返信時ã®ã¿ deleteRule=é¸æŠžã—ãŸãƒ«ãƒ¼ãƒ«ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ nextRcpt=(次ã®å—å–人) negateRule=Not addKeyToRule=éµ %1$S (%2$S) ã‚’å—å–人ã”ã¨ã®è¨­å®šã«è¿½åŠ ã™ã‚‹ # Strings used in enigmailSearchKey.js needOnline=é¸æŠžã•ã‚ŒãŸæ©Ÿèƒ½ã¯ã‚ªãƒ•ラインモードã§ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。オンラインã®ã¨ãã«ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„ protocolNotSupported=é¸æŠžã—ãŸãƒ—ロトコル '%S://' ã¯ã€OpenPGP éµã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ç”¨ã«ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ gpgkeysDisabled=次ã®ã‚ªãƒ—ションを有効ã«ã™ã‚‹ã¨è‰¯ã„ã‹ã‚‚ã—れã¾ã›ã‚“。'extensions.enigmail.useGpgKeysTool' noKeyserverConn=éµã‚µãƒ¼ãƒ %S ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—㟠keyDownloadFailed=éµã‚µãƒ¼ãƒã‹ã‚‰éµã‚’ダウンロードã™ã‚‹ã“ã¨ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ステータスメッセージã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n%S internalError=内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚éµã‚’ダウンロードã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—㟠noKeyFound=残念ãªãŒã‚‰ã€æŒ‡å®šã•ã‚ŒãŸæ¤œç´¢æ¡ä»¶ã«é©åˆã™ã‚‹éµã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—㟠# gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=éµã‚µãƒ¼ãƒã§ã®æ¤œç´¢ã‚‚ã—ãã¯ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ: gpgkeys_%S ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“ã§ã—㟠# Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=所有者ã®ä¿¡ç”¨åº¦ã‚’設定ã§ãã¾ã›ã‚“ã§ã—㟠# Strings in enigmailSignKeyDlg.js signKeyFailed=éµã¸ã®ç½²åã«å¤±æ•—ã—ã¾ã—㟠alreadySigned.label=注æ„: éµ ID %S ã¯é¸æŠžã•れãŸç§˜å¯†éµã«ã‚ˆã£ã¦æ—¢ã«ç½²åã•れã¦ã„ã¾ã™ alreadySignedexportable.label=注æ„: éµ ID %S ã¯é¸æŠžã•れãŸç§˜å¯†éµã«ã‚ˆã£ã¦æ—¢ã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆå¯èƒ½ãªç½²åãŒã•れã¦ã„ã¾ã™ã€‚ã“れã«åŠ ãˆã¦ãƒ­ãƒ¼ã‚«ãƒ«ç½²åã‚’è¡Œã†æ„味ã¯ã‚りã¾ã›ã‚“ partlySigned.label=注記: éµ ID %S ã®ä¸€éƒ¨ã®ãƒ¦ãƒ¼ã‚¶ ID ã¯é¸æŠžã•れãŸç§˜å¯†éµã«ã‚ˆã£ã¦æ—¢ã«ç½²åã•れã¦ã„ã¾ã™ noTrustedOwnKeys=ç½²åã«åˆ©ç”¨å¯èƒ½ãªéµãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚éµã«ç½²åã™ã‚‹ãŸã‚ã«ã¯ã€çµ¶å¯¾çš„ã«ä¿¡ç”¨ã—ã¦ã„る秘密éµã‚’最低ã§ã‚‚ä¸€ã¤æ‰€æœ‰ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ # Strings in enigmailKeyManager.js keyMan.loadingKeys=éµã‚’読ã¿è¾¼ã¿ä¸­ã§ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„... keyValid.unknown=䏿˜Ž keyValid.invalid=無効 keyValid.disabled=無効化 keyValid.revoked=失効 keyValid.expired=期é™åˆ‡ã‚Œ keyValid.noSubkey=有効ãªå‰¯éµãªã— keyTrust.untrusted=信用ã—ã¦ã„ãªã„ keyTrust.marginal=ã‚る程度ã®ä¿¡ç”¨ keyTrust.full=完全ã«ä¿¡ç”¨ keyTrust.ultimate=絶対的ã«ä¿¡ç”¨ keyTrust.group=(グループ) keyType.public=å…¬é–‹éµ keyType.publicAndSec=公開éµ/ç§˜å¯†éµ keyMan.enableKey=éµã‚’有効化 keyMan.disableKey=éµã‚’無効化 userAtt.photo=ユーザー属性 (JPEG イメージ) asciiArmorFile=ASCII å½¢å¼ (*.asc) importKeyFile=OpenPGP éµãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ gnupgFile=GnuPG ファイル saveRevokeCertAs=失効証明書を生æˆã—ã¦ä¿å­˜ revokeCertOK=失効証明書を生æˆã—ã¾ã—ãŸã€‚ã“れã¯ç§˜å¯†éµã‚’ãªãã—ã¦ã—ã¾ã£ãŸã¨ããªã©ã«å…¬é–‹éµã‚’無効ã«ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã§ãã¾ã™\n\nã“れをã€CD-R ã‚„ USB メモリã®ã‚ˆã†ãªã‚ªãƒ•ラインã§å®‰å…¨ã«ä¿å­˜ã§ãるメディアã«ç§»ã—ã¦ãã ã•ã„。もã—ã€èª°ã‹ãŒã“ã®å¤±åŠ¹è¨¼æ˜Žæ›¸ã‚’æ‰‹ã«å…¥ã‚ŒãŸå ´åˆã€ã‚ãªãŸã®éµã‚’使ãˆãªãã•れるæã‚ŒãŒã‚りã¾ã™ revokeCertFailed=失効証明書ã®ä½œæˆã«å¤±æ•—ã—ã¾ã—㟠addUidOK=ユーザ ID ã®è¿½åŠ ã«æˆåŠŸã—ã¾ã—㟠addUidFailed=ユーザ ID ã®è¿½åŠ ã«å¤±æ•—ã—ã¾ã—㟠noKeySelected=é¸æŠžã—ãŸæ“作を実行ã™ã‚‹ã«ã¯ã€å°‘ãªãã¨ã‚‚ 1 ã¤ã®éµã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ exportToFile=公開éµã‚’ファイルã¸ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ exportKeypairToFile=公開éµ/秘密éµã®ãƒšã‚¢ã‚’ファイルã¸ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ exportSecretKey=エクスãƒãƒ¼ãƒˆã™ã‚‹ OpenPGP éµãƒ•ァイルã«ç§˜å¯†éµã‚’å«ã‚ã¾ã™ã‹ï¼Ÿ saveKeysOK=éµã‚’ä¿å­˜ã—ã¾ã—㟠saveKeysFailed=éµã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—㟠importKeysFailed=インãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—㟠enableKeyFailed=éµã®æœ‰åŠ¹åŒ–/無効化ã«å¤±æ•—ã—ã¾ã—㟠specificPubKeyFilename=%1$S (0x%2$S) pub specificPubSecKeyFilename=%1$S (0x%2$S) pub-sec defaultPubKeyFilename=Exported-public-keys defaultPubSecKeyFilename=Exported-public-and-secret-keys noSecretKeys=秘密éµãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n\n今ã‚ãªãŸã®éµã‚’生æˆã—ã¾ã™ã‹ï¼Ÿ sendKeysOk=éµã®é€ä¿¡ã«æˆåŠŸã—ã¾ã—㟠sendKeysFailed=éµã®é€ä¿¡ã«å¤±æ•—ã—ã¾ã—㟠receiveKeysOk=éµã®å—ä¿¡ã«æˆåŠŸã—ã¾ã—㟠receiveKeysFailed=éµã®å—ä¿¡ã«å¤±æ•—ã—ã¾ã—㟠importFromClip=éµã‚’クリップボードã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ã¾ã™ã‹ï¼Ÿ importFromUrl=公開éµã‚’次㮠URL ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™: copyToClipbrdFailed=é¸æŠžã—ãŸéµã‚’クリップボードã¸ã‚³ãƒ”ーã§ãã¾ã›ã‚“ã§ã—㟠copyToClipbrdOK=éµã‚’クリップボードã«ã‚³ãƒ”ーã—ã¾ã—㟠deleteSecretKey=警告: ã‚ãªãŸã¯ç§˜å¯†éµã‚’削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ï¼\nã‚‚ã—秘密éµã‚’削除ã—ãŸå ´åˆã€ã‚ãªãŸå®›ã«æš—å·åŒ–ã•れãŸã™ã¹ã¦ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’復å·ã§ããªããªã‚Šã€éµã‚’失効ã™ã‚‹ã“ã¨ã‚‚ã§ããªããªã‚Šã¾ã™\n\n本当ã«ç§˜å¯†éµã¨å…¬é–‹éµã®ä¸¡æ–¹ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ\n'%S'? deleteMix=警告: ã‚ãªãŸã¯ç§˜å¯†éµã‚’削除ã—よã†ã¨ã—ã¦ã„ã¾ã™ï¼\n秘密éµã‚’削除ã™ã‚‹ã¨ã‚ãªãŸå®›ã«æš—å·åŒ–ã•れãŸãƒ¡ãƒ¼ãƒ«ã‚’復å·ã§ããªããªã‚Šã¾ã™\n\n本当ã«é¸æŠžã—ãŸç§˜å¯†éµã¨å…¬é–‹éµã‚’削除ã—ã¾ã™ã‹ï¼Ÿ deletePubKey=公開éµã‚’削除ã—ã¾ã™ã‹ï¼Ÿ "%S" deleteSelectedPubKey=é¸æŠžã—ãŸå…¬é–‹éµã‚’削除ã—ã¾ã™ã‹ï¼Ÿ deleteKeyFailed=éµã‚’削除ã§ãã¾ã›ã‚“ã§ã—㟠revokeKeyQuestion=éµ '%S' を失効ã•ã›ã‚ˆã†ã¨ã—ã¦ã„ã¾ã™\n\n失効ã•ã›ã‚‹ã¨ã€ã‚ãªãŸãŒã“ã®éµã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ç½²åã‚’ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚‹ã»ã‹ã€éµã‚µãƒ¼ãƒãªã©ã§é…布後ã¯ä»–ã®åˆ©ç”¨è€…ãŒã“ã®éµã§ã‚ãªãŸå®›ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æš—å·åŒ–ã™ã‚‹ã“ã¨ãŒã§ããªããªã‚Šã¾ã™ã€‚失効後もã€ã‚ãªãŸå®›ã®æ—¢å­˜ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å¾©å·ã‚’行ã†ã“ã¨ã¯ã§ãã¾ã™\n\n本当ã«å¤±åйã•ã›ã¾ã™ã‹ï¼Ÿ revokeKeyOk=éµã¯æ­£å¸¸ã«å¤±åйã—ã¾ã—ãŸã€‚ã‚‚ã—ã‚ãªãŸã®å…¬é–‹éµãŒéµã‚µãƒ¼ãƒã§åˆ©ç”¨å¯èƒ½ã§ã‚れã°ã€å†ã‚¢ãƒƒãƒ—ロードã™ã‚‹äº‹ã‚’推奨ã—ã¾ã™ã€‚ãã†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚ãªãŸã®éµãŒå¤±åйã—ã¦ã„ã‚‹ã“ã¨ãŒå‘¨çŸ¥ã•れã¾ã™ revokeKeyFailed=éµã‚’失効ã§ãã¾ã›ã‚“ã§ã—㟠refreshAllQuestion=éµãŒ 1 ã¤ã‚‚é¸æŠžã•れã¦ã„ã¾ã›ã‚“。ã™ã¹ã¦ã®éµã‚’æ›´æ–°ã—ã¾ã™ã‹ï¼Ÿ refreshKey.warn=警告: éµã®æ•°ã‚„回線速度ã«ã‚ˆã£ã¦ã¯ã€ã™ã¹ã¦ã®éµã®æ›´æ–°ã«éžå¸¸ã«æ™‚é–“ãŒã‹ã‹ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼ downloadContactsKeys.warn=注æ„ï¼šé€£çµ¡å…ˆã®æ•°ã‚„接続速度ã«ã‚ˆã£ã¦ã¯ã€ã™ã¹ã¦ã®éµã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã«éžå¸¸ã«æ™‚é–“ãŒã‹ã‹ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼ downloadContactsKeys.importFrom=アドレス帳 '%S' ã®é€£çµ¡å…ˆã®éµã‚’検索ã—ã¾ã™ã‹ï¼Ÿ keyMan.button.exportSecKey=秘密éµã‚’å«ã‚ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ(&S) keyMan.button.exportPubKey=公開éµã®ã¿ã‚’エクスãƒãƒ¼ãƒˆ(&P) keyMan.button.import=インãƒãƒ¼ãƒˆ(&I) keyMan.button.refreshAll=ã™ã¹ã¦ã®éµã‚’æ›´æ–°(&R) keyMan.button.revokeKey=éµã®å¤±åй(&R) keyMan.button.skip=éµã‚’スキップ(&S) keylist.noOtherUids=ä»–ã® ID ã¯ã‚りã¾ã›ã‚“ keylist.hasOtherUids=別å keylist.noPhotos=写真ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“ keylist.hasPhotos=写真 keyMan.addphoto.filepicker.title=追加ã™ã‚‹å†™çœŸã®é¸æŠž keyMan.addphoto.warnLargeFile=é¸æŠžã—ãŸãƒ•ァイルã®ã‚µã‚¤ã‚ºãŒ 25 kB ã‚’è¶…ãˆã¦ã„ã¾ã™\néµã®ã‚µã‚¤ã‚ºãŒå¤§ãããªã‚‹ãŸã‚ã€å¤§ããªå†™çœŸã®è¿½åŠ ã¯æŽ¨å¥¨ã•れã¦ã„ã¾ã›ã‚“ keyMan.addphoto.noJpegFile=é¸æŠžã—ãŸãƒ•ァイル㯠JPEG å½¢å¼ã§ã¯ãªã„よã†ã§ã™ã€‚é•ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ keyMan.addphoto.failed=写真を追加ã§ãã¾ã›ã‚“ã§ã—㟠# Strings in enigmailManageUidDlg.xul changePrimUidFailed=主ã«ä½¿ã†ãƒ¦ãƒ¼ã‚¶ ID ã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—㟠changePrimUidOK=主ã«ä½¿ã†ãƒ¦ãƒ¼ã‚¶ ID を変更ã—ã¾ã—㟠deleteUidFailed=ユーザ ID %S ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—㟠deleteUidOK=ユーザ ID %S を削除ã—ã¾ã—㟠revokeUidFailed=ユーザ ID %S ã®å¤±åйã«å¤±æ•—ã—ã¾ã—㟠revokeUidOK=ユーザ ID %S を失効ã•ã›ã¾ã—ãŸã€‚ã‚‚ã—ã‚ãªãŸã®å…¬é–‹éµãŒéµã‚µãƒ¼ãƒã§åˆ©ç”¨å¯èƒ½ã§ã‚れã°ã€å†ã‚¢ãƒƒãƒ—ロードã™ã‚‹äº‹ã‚’推奨ã—ã¾ã™ã€‚ãã†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ ID ãŒå¤±åйã—ã¦ã„ã‚‹ã“ã¨ãŒå‘¨çŸ¥ã•れã¾ã™ revokeUidQuestion=本当ã«ãƒ¦ãƒ¼ã‚¶ ID %S を失効ã•ã›ã¾ã™ã‹ï¼Ÿ deleteUidQuestion=本当ã«ãƒ¦ãƒ¼ã‚¶ ID %S を削除ã—ã¾ã™ã‹ï¼Ÿ\n\n注æ„:公開éµã‚’éµã‚µãƒ¼ãƒã¸é€ä¿¡ã—ã¦ã„ã‚‹ã®ã§ã‚れã°ã€ãƒ¦ãƒ¼ã‚¶ ID を削除ã—ãŸã ã‘ã§ã¯æ„味ãŒã‚りã¾ã›ã‚“。ã“ã®å ´åˆã€"ユーザ ID ã®å¤±åй"を使用ã—ã¦ãã ã•ã„ # Strings in enigmailKeyImportInfo.xul importInfoTitle=éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã«æˆåŠŸã—ã¾ã—ãŸï¼ importInfoSuccess=✅ importInfoBits=ビット importInfoCreated=ä½œæˆæ—¥æ™‚ importInfoFpr=フィンガープリント importInfoDetails=(詳細) importInfoNoKeys=éµã¯ã‚¤ãƒ³ãƒãƒ¼ãƒˆã•れã¾ã›ã‚“ã§ã—㟠# Strings in enigmailKeyDetailsDlg.xul keyTypePublic=å…¬é–‹éµ keyTypePrimary=ä¸»éµ keyTypeSubkey=å‰¯éµ keyTypePair=公開éµ/秘密éµã®ãƒšã‚¢ keyExpiryNever=ç„¡æœŸé™ keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECDH keyAlgorithm_19=ECDSA keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=æš—å·åŒ– keyUsageSign=ç½²å keyUsageCertify=証明 keyUsageAuthentication=èªè¨¼ keyDoesNotExpire=ç„¡æœŸé™ # Strings in enigmailGenCardKey.xul keygen.started=éµã‚’生æˆä¸­ã§ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„... keygen.completed=éµã‚’生æˆã—ã¾ã—ãŸã€‚æ–°ã—ã„éµ ID ã¯æ¬¡ã®é€šã‚Šã§ã™: 0x%S keygen.keyBackup=%S ã¨ã—ã¦éµã‚’ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã—ã¾ã—㟠keygen.passRequired=スマートカード以外ã®å ´æ‰€ã«ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã‚’ã¨ã‚‹ã®ã§ã‚れã°ã€ãƒ‘スフレーズを指定ã—ã¦ãã ã•ã„ # Strings in enigmailSetCardPin.xul cardPin.dontMatch=入力ã•れ㟠PIN ãŒä¸€è‡´ã—ã¾ã›ã‚“。å†å…¥åŠ›ã—ã¦ãã ã•ã„ cardPin.minLength=PIN ã¯å°‘ãªãã¨ã‚‚ %S 文字以上ã®è‹±æ•°å­—ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“ cardPin.processFailed=PIN ã®å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—㟠# Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=éµã®æ›´æ–°ä¸­ã§ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ä¸‹ã•ã„ keyserverProgress.uploading=éµã®ã‚¢ãƒƒãƒ—ロード中ã§ã™ã€ã—ã°ã‚‰ããŠå¾…ã¡ä¸‹ã•ã„ keyserverTitle.refreshing=éµã®æ›´æ–° keyserverTitle.uploading=éµã®ã‚¢ãƒƒãƒ—ロード # Strings in enigmailSetupWizard passphrase.min8keys=パスフレーズã«ã¯å°‘ãªãã¨ã‚‚ 8 文字指定ã—ã¦ãã ã•ã„ setupWizard.reallyCancel=本当㫠Enigmail セットアップウィザードを中止ã—ã¾ã™ã‹ï¼Ÿ setupWizard.invalidGpg=指定ã•れãŸãƒ•ァイル㯠GnuPG ã®å®Ÿè¡Œãƒ•ァイルã§ã¯ã‚りã¾ã›ã‚“。他ã®ãƒ•ァイルを指定ã—ã¦ãã ã•ã„ setupWizard.specifyFile=å°‘ãªãã¨ã‚‚公開éµãƒ•ァイルを指定ã—ã¦ãã ã•ã„ setupWizard.installFailed=インストールã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™ã€‚ã‚‚ã†ä¸€åº¦ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’試ã¿ã‚‹ã‹ã€GnuPG を手動ã§ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸå¾Œã§ã€Œé¸æŠžã€ãƒœã‚¿ãƒ³ã‹ã‚‰æŒ‡å®šã—ã¦ãã ã•ã„ setupWizard.downloadForbidden=セキュリティ上ã®ç†ç”±ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯è¡Œã‚れã¾ã›ã‚“。http://www.gnupg.org/ ã«ã‚¢ã‚¯ã‚»ã‚¹ã—㦠GnuPG をダウンロードã—ã¦ãã ã•ã„ setupWizard.downloadImpossible=GnuPG を正常ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚時間をãŠã„ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã‚’試ã¿ã‚‹ã‹ã€http://www.gnupg.org/ ã«ã‚¢ã‚¯ã‚»ã‚¹ã—㦠GnuPG をダウンロードã—ã¦ãã ã•ã„ setupWizard.hashSumError=ダウンロードã—ãŸãƒ•ァイルã®å®Œå…¨æ€§ã‚’検証ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ファイルãŒç ´æã—ã¦ã„ã‚‹ã‹ã€æ”¹ç«„ã•れã¦ã„ã‚‹æã‚ŒãŒã‚りã¾ã™ã€‚ã“ã®ã¾ã¾ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’続行ã—ã¾ã™ã‹ï¼Ÿ setupWizard.importSettingsFile=読ã¿è¾¼ã‚€ãƒ•ã‚¡ã‚¤ãƒ«ã®æŒ‡å®š setupWizard.invalidSettingsFile=指定ã•れãŸãƒ•ァイル㯠Enigmail ã®è¨­å®šæƒ…報ファイルã§ã¯ã‚りã¾ã›ã‚“ setupWizard.gpgConfExists=GnuPG ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚å¤ã„環境ã®è¨­å®šãƒ•ァイルã§ä¸Šæ›¸ãã—ã¾ã™ã‹ï¼Ÿ # Strings in installGnuPG.jsm installGnuPG.downloadFailed=GnuPG ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚詳細ã¯ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ãƒ­ã‚°ã‚’確èªã—ã¦ãã ã•ã„ installGnuPG.installFailed=GnuPG ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚詳細ã¯ã‚³ãƒ³ã‚½ãƒ¼ãƒ«ãƒ­ã‚°ã‚’確èªã—ã¦ãã ã•ã„ # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=åå‰ã¨ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ä¸‹ã•ã„ addUidDlg.nameMinLengthError=åå‰ã¯ 5 文字以上必è¦ã§ã™ addUidDlg.invalidEmailError=有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ã‚りã¾ã›ã‚“ addUidDlg.commentError=ã‚³ãƒ¡ãƒ³ãƒˆã«æ‹¬å¼§ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“ # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP スマートカードã§ã¯ã€åå‰ã« ASCII 文字ã®ã¿åˆ©ç”¨å¯èƒ½ã§ã™ # network error types errorType.SecurityCertificate=ウェブサービスã§ä½¿ç”¨ã•れã¦ã„ã‚‹ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è¨¼æ˜Žæ›¸ã¯æ­£å½“ãªã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“ errorType.SecurityProtocol=ウェブサービスã§ä½¿ç”¨ã•れã¦ã„ã‚‹ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã¯æœªçŸ¥ã®ã‚‚ã®ã§ã™ errorType.Network=ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠# filter stuff filter.folderRequired=ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠžã—ã¦ãã ã•ã„ filter.decryptMove.label=メッセージをæ’ä¹…çš„ã«å¾©å·ã™ã‚‹ (Enigmail) filter.decryptCopy.label=復å·ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã‚³ãƒ”ーを作æˆã™ã‚‹ (Enigmail) filter.decryptMove.warnExperimental=警告:「メッセージをæ’ä¹…çš„ã«å¾©å·ã™ã‚‹ã€ãƒ•ィルタã¯ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ç ´æã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™\n\nã¯ã˜ã‚ã«ã€Œå¾©å·ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ã‚³ãƒ”ーを作æˆã™ã‚‹ã€ãƒ•ィルタを試験的ã«åˆ©ç”¨ã—ã€ãã®çµæžœã«å•題ãŒãªã„ã“ã¨ã‚’確èªã—ãŸã†ãˆã§ã€Œãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æ’ä¹…çš„ã«å¾©å·ã™ã‚‹ã€ãƒ•ィルタを使用ã™ã‚‹ã“ã¨ã‚’å¼·ãæŽ¨å¥¨ã—ã¾ã™ # strings in enigmailConvert.jsm converter.decryptBody.failed=以下ã®ä»¶åã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’復å·ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\nä»¶å: "%S"\nç•°ãªã‚‹ãƒ‘スフレーズã§å†è©¦è¡Œã™ã‚‹ã‹ã€å¾©å·ã‚’スキップã™ã‚‹ã‹é¸æŠžã—ã¦ãã ã•ã„ converter.decryptAtt.failed=以下ã®ä»¶åã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ·»ä»˜ãƒ•ァイル "%1$S" を復å·ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n"ä»¶å: %2$S"\nç•°ãªã‚‹ãƒ‘スフレーズã§å†è©¦è¡Œã™ã‚‹ã‹ã€å¾©å·ã‚’スキップã™ã‚‹ã‹é¸æŠžã—ã¦ãã ã•ã„ saveLogFile.title=ログをファイルã«ä¿å­˜ # strings in gpg.jsm unknownSigningAlg=未知ã®ç½²åアルゴリズム (ID: %S) unknownHashAlg=未知ã®ãƒãƒƒã‚·ãƒ¥é–¢æ•° (ID: %S) # strings in keyRing.jsm keyring.photo=写真 keyRing.pubKeyRevoked=éµ %1$S (éµ ID %2$S) ã¯å¤±åйã—ã¦ã„ã¾ã™ keyRing.pubKeyExpired=éµ %1$S (éµ ID %2$S) ã¯æœ‰åŠ¹æœŸé™åˆ‡ã‚Œã§ã™ keyRing.pubKeyNotForSigning=éµ %1$S (éµ ID %2$S) ã¯ç½²åã«ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“ keyRing.pubKeyNotForEncryption=éµ %1$S (éµ ID %2$S) ã¯æš—å·åŒ–ã«ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“ keyRing.keyDisabled=éµ %1$S (éµ ID %2$S) ã¯ç„¡åŠ¹åŒ–ã•れã¦ã„ã¾ã™is disabled; it cannot be used. keyRing.keyNotTrusted=éµ %1$S (éµ ID %2$S) ã¯å分ã«ä¿¡ç”¨ã•れã¦ã„ã¾ã›ã‚“。署åã«åˆ©ç”¨ã™ã‚‹ãŸã‚ã«ã¯ä¿¡ç”¨åº¦ã‚’「絶対的ã«ä¿¡ç”¨ã€ã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ keyRing.keyInvalid=éµ %1$S (éµ ID %2$S) ã¯æ­£å½“ã§ã¯ã‚りã¾ã›ã‚“ (例:自己署åãŒå­˜åœ¨ã—ãªã„) keyRing.signSubKeysRevoked=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®ç½²å用ã®å‰¯éµã¯å¤±åйã—ã¦ã„ã¾ã™ keyRing.signSubKeysExpired=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®ç½²å用ã®å‰¯éµã¯æœ‰åŠ¹æœŸé™åˆ‡ã‚Œã§ã™ keyRing.signSubKeysUnusable=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®ç½²å用ã®å‰¯éµã¯å¤±åŠ¹ã€æœ‰åŠ¹æœŸé™åˆ‡ã‚Œãªã©ã®ç†ç”±ã«ã‚ˆã‚Šåˆ©ç”¨ã§ãã¾ã›ã‚“ keyRing.encSubKeysRevoked=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®æš—å·åŒ–用ã®å‰¯éµã¯å¤±åйã—ã¦ã„ã¾ã™ keyRing.encSubKeysExpired=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®æš—å·åŒ–用ã®å‰¯éµã¯æœ‰åŠ¹æœŸé™åˆ‡ã‚Œã§ã™ keyRing.noSecretKey=éµ %1$S (éµ ID %2$S) ã®ç§˜å¯†éµãŒå­˜åœ¨ã—ãªã„ãŸã‚ã€ã“ã®éµã‚’ç½²åã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ keyRing.encSubKeysUnusable=éµ %1$S (éµ ID %2$S) ã®ã™ã¹ã¦ã®æš—å·åŒ–用ã®å‰¯éµã¯å¤±åŠ¹ã€æœ‰åŠ¹æœŸé™åˆ‡ã‚Œãªã©ã®ç†ç”±ã«ã‚ˆã‚Šåˆ©ç”¨ã§ãã¾ã›ã‚“ #strings in exportSettingsWizard.js cannotWriteToFile=Cannot save to fileファイル '%S' ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚é•ã†ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠžã—ã¦ãã ã•ã„ dataExportError=データã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠enigmailSettings=EnigmailSettings defaultBackupFileName=Enigmail-export specifyExportFile=ä¿å­˜ã™ã‚‹ãƒ•ァイルåを指定 homedirParamNotSUpported=--homedir ã‚„ --keyring ãªã©ã®ã€ãƒ‘スを指定ã™ã‚‹è¿½åŠ ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã®ä¿å­˜/読ã¿è¾¼ã¿ã«ã¯å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“ã€‚ãƒ‘ã‚¹ã®æŒ‡å®šã«ã¯ã€ç’°å¢ƒå¤‰æ•° GNUPGHOME ã®è¨­å®šãªã©ä»–ã®æ–¹æ³•を利用ã—ã¦ãã ã•ã„ #strings in expiry.jsm expiry.keyExpiresSoon=ã‚ãªãŸã®éµ %1$S 㯠%2$S æ—¥ä»¥å†…ã«æœŸé™åˆ‡ã‚Œã¨ãªã‚Šã¾ã™\n\næ–°ã—ã„éµãƒšã‚¢ã‚’作æˆã—ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®šã‚’é©åˆ‡ã«æ›´æ–°ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ expiry.keysExpireSoon=以下ã®éµã¯ %1$S æ—¥ä»¥å†…ã«æœŸé™åˆ‡ã‚Œã¨ãªã‚Šã¾ã™:\n%2$S\n\næ–°ã—ã„éµãƒšã‚¢ã‚’作æˆã—ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆè¨­å®šã‚’é©åˆ‡ã«æ›´æ–°ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ enigmail/lang/ja/help/000077500000000000000000000000001266701624400151165ustar00rootroot00000000000000enigmail/lang/ja/help/compose.html000066400000000000000000000133701266701624400174550ustar00rootroot00000000000000 Enigmail ヘルプ: メールã®ä½œæˆ

Enigmail ヘルプ

メールを作æˆã™ã‚‹ã¨ãã® Enigmail ã®ä½¿ç”¨æ–¹æ³•

メール作æˆç”»é¢ã§ã® Enigmail メニュー
ç½²å
  • 有効 (自動): ç½²åã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ç½²åã™ã‚‹ã‚ˆã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • 無効 (自動): ç½²åã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«ç½²åã—ãªã„よã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • 有効: メッセージã«ç½²åã™ã‚‹ã‚ˆã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
  • 無効: メッセージã«ç½²åã—ãªã„よã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
æš—å·åŒ–
  • 有効 (自動): æš—å·åŒ–ã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æš—å·åŒ–ã™ã‚‹ã‚ˆã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • 無効 (自動): æš—å·åŒ–ã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’æš—å·åŒ–ã—ãªã„よã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • 有効: メッセージを暗å·åŒ–ã™ã‚‹ã‚ˆã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
  • 無効: メッセージを暗å·åŒ–ã—ãªã„よã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
PGP/MIME
  • PGP/MIME (自動): PGP/MIME ã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€PGP/MIME ã§é€ä¿¡ã™ã‚‹ã‚ˆã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • インライン PGP (自動): PGP/MIME ã«é–¢ã™ã‚‹è¨­å®š (アカウントã”ã¨ã®è¨­å®šã€å—å–人ã”ã¨ã®è¨­å®šã€é€ä¿¡æ™‚ã®è¨­å®šãªã©) ã«å¾“ã£ã¦ã€ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ PGP ã§é€ä¿¡ã™ã‚‹ã‚ˆã†è‡ªå‹•çš„ã«æŒ‡å®šã•れã¦ã„ã¾ã™ã€‚
  • PGP/MIME: PGP/MIME ã§é€ä¿¡ã™ã‚‹ã‚ˆã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
  • インライン PGP: インライン PGP ã§é€ä¿¡ã™ã‚‹ã‚ˆã†è¨­å®šã‚’上書ãã—ã¦ã„ã¾ã™ã€‚
ã™ã¹ã¦ã®å—å–人ã®éµã‚’ä¿¡é ¼ã™ã‚‹
å®›å…ˆã«æŒ‡å®šã•れãŸå—å–人ã®éµã‚’ã™ã¹ã¦ä¿¡é ¼ã—ã¾ã™ã€‚
æ¨™æº–è¨­å®šã«æˆ»ã™
ã‚‚ã—ã€ãƒ¡ãƒ¼ãƒ«ã®é€ä¿¡ã«å¤±æ•—ã—ãŸæ™‚ã€ãŸã¨ãˆã° POP サーãƒãŒè¦æ±‚ã‚’æ‹’å¦ã—ãŸæ™‚ãªã©ã€Enigmail ã¯ãã®ã“ã¨ãŒåˆ†ã‹ã‚‰ãªã„ã®ã§ã€æš—å·åŒ–ã•れãŸãƒ¡ãƒ¼ãƒ«ã‚’メール作æˆã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã«ãã®ã¾ã¾è¡¨ç¤ºã—ç¶šã‘ã¾ã™ã€‚ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’é¸ã¶ã“ã¨ã«ã‚ˆã‚Šæš—å·åŒ–・署åã‚’å…ƒã«æˆ»ã—ã€ãƒ¡ãƒ¼ãƒ«ä½œæˆã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã«å…ƒã®æ–‡æ›¸ã‚’表示ã—ã¾ã™ã€‚
暫定回é¿ç­–ã¨ã—ã¦ã€ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã¯æš—å·åŒ–ã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«å¯¾ã—ã¦è¿”ä¿¡ã™ã‚‹æ™‚ã«ã€å¼·åˆ¶çš„ã«å¾©å·ã™ã‚‹ã“ã¨ã«ã‚‚使用ã§ãã¾ã™ã€‚
自分ã®å…¬é–‹éµã®æ·»ä»˜
ASCII å½¢å¼ã®è‡ªåˆ†ã®å…¬é–‹éµã‚’添付ã—ã¾ã™ã€‚ã“ã®æ–¹æ³•ã«ã‚ˆã£ã¦æŒ¿å…¥ã•れãŸå…¬é–‹éµã¯ã€å—ã‘å–りå´ã® Enigmail ã«ã‚ˆã£ã¦è‡ªå‹•çš„ã«èªè­˜ã•れã¾ã™ã€‚公開éµã‚’添付ã—ãŸå¾Œã§ã‚‚ã€å¿…è¦ã«å¿œã˜ã¦ãã®ãƒ¡ãƒ¼ãƒ«ã‚’ç½²åãŠã‚ˆã³æš—å·åŒ–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
公開éµã®æ·»ä»˜
ASCII å½¢å¼ã®å…¬é–‹éµã‚’添付ã—ã¾ã™ã€‚挿入ã™ã‚‹å…¬é–‹éµã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’é¸æŠžã™ã‚‹ãƒãƒƒãƒ—アップ画é¢ãŒã§ã¾ã™ã€‚ã“ã®æ–¹æ³•ã«ã‚ˆã£ã¦æŒ¿å…¥ã•れãŸå…¬é–‹éµã¯ã€å—ã‘å–りå´ã® Enigmail ã«ã‚ˆã£ã¦è‡ªå‹•çš„ã«èªè­˜ã•れã¾ã™ã€‚公開éµã‚’添付ã—ãŸå¾Œã§ã‚‚ã€å¿…è¦ã«å¿œã˜ã¦ãã®ãƒ¡ãƒ¼ãƒ«ã‚’ç½²åãŠã‚ˆã³æš—å·åŒ–ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
パスフレーズã®ã‚¯ãƒªã‚¢
キャッシュã•れã¦ã„るパスフレーズをクリアã—ã¾ã™ã€‚複数ã®ãƒ‘スフレーズを使用ã—ã¦ã„ã‚‹ã¨ãã«ä¾¿åˆ©ã§ã™ã€‚
設定
  • ç½²å/æš—å·åŒ–設定...: アカウント設定 -> OpenPGP オプション ã¸ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã§ã™ã€‚
  • é€ä¿¡è¨­å®š...: Enigmail 設定 -> é€ä¿¡ ã¸ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã§ã™ã€‚
  • éµé¸æŠžè¨­å®š...: Enigmail 設定 -> éµã®é¸æŠž ã¸ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã§ã™ã€‚

æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Help web page

enigmail/lang/ja/help/editRcptRule.html000066400000000000000000000127351266701624400204220ustar00rootroot00000000000000 Enigmail ヘルプ: å—å–人ã”ã¨ã®è¨­å®šã®ç·¨é›†

Enigmail ヘルプ

å—å–人ã”ã¨ã®è¨­å®šã®ç·¨é›†

å—å–人ã”ã¨ã®è¨­å®šã®ç·¨é›†ã§ã€å—å–人ã”ã¨ã«ç½²åã€æš—å·åŒ–ã€PGP/MIME ã®å¯å¦ãŠã‚ˆã³ä½¿ç”¨ã™ã‚‹ OpenPGP éµã‚’指定ã§ãã¾ã™ã€‚ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã§ 1 人ã®å—å–人ã€ãŠã‚ˆã³åŒæ§˜ãªæ–¹æ³•ã§ã‚°ãƒ«ãƒ¼ãƒ—ã«å¯¾ã—ã¦è¨­å®šã§ãã¾ã™ã€‚

メールアドレス
å—å–人ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒè¡¨ç¤ºã•れã¾ã™ (åå‰ã¯è¡¨ç¤ºã•れãšã‚¢ãƒ‰ãƒ¬ã‚¹ã ã‘ã§ã™ 例: somebody@email.domain)。åŠè§’スペースã§åŒºåˆ‡ã£ã¦è¤‡æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã“ã“ã§æŒ‡å®šã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ã€ãƒ‰ãƒ¡ã‚¤ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ (@ ã®å³å´) ã ã‘を指定ã§ãã¾ã™ã€‚ãã†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€åŒã˜ãƒ‰ãƒ¡ã‚¤ãƒ³ã® (@ マークã®å³å´ãŒåŒã˜) ã©ã‚“ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã‚‚ルールをé©ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚例ãˆã° @email.domain ã¨å…¥åŠ›ã—ãŸå ´åˆã€body@email.domain, somebody@email.domain, anybody@email.domain ãªã©ã«ã‚‚ルールãŒé©ç”¨ã•れã¾ã™ã€‚
å—å–人ãŒä¸Šè¨˜ã‚¢ãƒ‰ãƒ¬ã‚¹ ... ã¨ãã€ãƒ«ãƒ¼ãƒ«ã‚’é©ç”¨
é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®é©ç”¨æ–¹æ³•を指定ã—ã¾ã™ã€‚ã‚‚ã—ã€è¤‡æ•°ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒå…¥åŠ›ã•れã¦ã„ã‚‹å ´åˆã€ã“ã®è¨­å®šã¯å…¨å“¡ã«å¯¾ã—ã¦é©ç”¨ã•れã¾ã™ã€‚以下㯠body@email.domain ㌠メールアドレス 欄ã«å…¥åŠ›ã•れãŸå ´åˆã®ä¾‹ã§ã™ã€‚
  • ã¨åŒä¸€ã®: 指定ã—ãŸãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨åŒä¸€ã®å ´åˆã®ã¿ãƒžãƒƒãƒã—ã¾ã™ã€‚body@email.domain (å¤§æ–‡å­—å°æ–‡å­—ã®é•ã„ã¯ç„¡è¦–ã•れã¾ã™)
  • ã‚’å«ã‚€: 指定ã—ãŸæ–‡å­—列をå«ã‚€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒƒãƒã—ã¾ã™ã€‚例: anybody@email.domain, body@email.domain.net
  • ã‹ã‚‰å§‹ã¾ã‚‹: 指定ã—ãŸæ–‡å­—列ã‹ã‚‰å§‹ã¾ã‚‹ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒãƒžãƒƒãƒã—ã¾ã™ã€‚例: body@email.domain.net, body@email.domain-name.com
  • ã§çµ‚ã‚ã‚‹: 指定ã—ãŸæ–‡å­—列ã§çµ‚ã‚るメールアドレスãŒãƒžãƒƒãƒã—ã¾ã™ã€‚例: anybody@email.domain, somebody@email.domain.
当ã¦ã¯ã¾ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¤ã„ã¦ã¯ã€æ¬¡ã®ãƒ«ãƒ¼ãƒ«ã‚’ç¶šã„ã¦é©ç”¨
ã“れã«ãƒã‚§ãƒƒã‚¯ã‚’ã™ã‚‹ã¨ã€ä»¥ä¸‹ã® OpenPGP éµã‚’使用ã™ã‚‹ ã®æ¬„ã§éµ ID ã®æŒ‡å®šã‚’ã™ã‚‹å¿…è¦ãŒãªããªã‚Šã¾ã™ã€‚メールアドレスã¯ã€é€ä¿¡æ™‚ã«ãƒã‚§ãƒƒã‚¯ã•れã€ãã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¤ã„ã¦ã®ãƒ«ãƒ¼ãƒ«ãŒç¶šã„ã¦é©ç”¨ã•れã¾ã™ã€‚
当ã¦ã¯ã¾ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¤ã„ã¦ã¯ã€ã“れ以上ã®ãƒ«ãƒ¼ãƒ«ã‚’é©ç”¨ã—ãªã„
ã“れã«ãƒã‚§ãƒƒã‚¯ã‚’ã™ã‚‹ã¨ã€ã“ã®ãƒ«ãƒ¼ãƒ«ã«ãƒžãƒƒãƒã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã«ã¤ã„ã¦ã¯ä»–ã®ãƒ«ãƒ¼ãƒ«ã‚’é©ç”¨ã—ãªããªã‚Šã¾ã™ã€‚ルール処ç†ã¯æ¬¡ã®å—å–人ã‹ã‚‰è¡Œã‚れるã“ã¨ã«ãªã‚Šã¾ã™ã€‚
以下㮠OpenPGP éµã‚’使用ã™ã‚‹:
éµã®é¸æŠž(s)... ボタンをクリックã—ã€æš—å·åŒ–ã«ä½¿ç”¨ã™ã‚‹å—å–人ã®éµã‚’é¸æŠžã—ã¦ãã ã•ã„。既ã«è¿°ã¹ãŸã‚ˆã†ã«ã€ãƒžãƒƒãƒã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã«å¯¾ã—ã¦ã“れ以上ã®ãƒ«ãƒ¼ãƒ«å‡¦ç†ã¯ã•れã¾ã›ã‚“。
ç½²åã®æ—¢å®šã®è¨­å®š
ç½²åã™ã‚‹/ã—ãªã„を決定ã—ã¾ã™ã€‚ã“れã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ä½œæˆç”»é¢ã®ã®å€‹åˆ¥ã®è¨­å®šã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•れã¾ã™ã€‚
  • 無効: メッセージã«ç½²åã—ã¾ã›ã‚“。
  • 返信時ã®ã¿æœ‰åй: ç½²åã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«è¿”ä¿¡ã™ã‚‹ã¨ãã®ã¿ç½²åã—ã¾ã™ã€‚
  • 有効: メッセージã«ç½²åã—ã¾ã™ã€‚
ã“ã®ç½²åã«é–¢ã™ã‚‹è¨­å®šã¯ãƒžãƒƒãƒã™ã‚‹ã™ã¹ã¦ã®ãƒ«ãƒ¼ãƒ«ã«å¯¾ã—ã¦é©ç”¨ã•れã¾ã™ã€‚ã‚‚ã—ç½²åã‚’ã—ãªã„ルール㌠1 ã¤ã§ã‚‚ã‚れã°ã€ä»–ã®ç½²åã‚’ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒãƒžãƒƒãƒã—ã¦ã‚‚ã€ç½²åã¯ã•れã¾ã›ã‚“。
æš—å·åŒ–ã®æ—¢å®šã®è¨­å®š
æš—å·åŒ–ã™ã‚‹/ã—ãªã„を決定ã—ã¾ã™ã€‚設定å¯èƒ½ãªé …ç›®ã¨æ„味ã¯ã€ç½²åã¨åŒä¸€ã§ã™ã€‚
PGP/MIME ã®æ—¢å®šã®è¨­å®š
PGP/MIME (RFC 3156) を用ã„ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’エンコードã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚PGP/MIME ãŒç„¡åйã®å ´åˆã€ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ PGP ãŒä½¿ã‚れã¾ã™ã€‚設定å¯èƒ½ãªé …ç›®ã¨æ„味ã¯ã€ç½²åã¨åŒä¸€ã§ã™ã€‚

ã“れらã®ãƒ«ãƒ¼ãƒ«ã¯ å—å–人ã”ã¨ã®è¨­å®š ã«è¡¨ç¤ºã•れã¦ã„ã‚‹é †ã«å‡¦ç†ã•れã¾ã™ã€‚ルールã«å—å–人ãŒãƒžãƒƒãƒã—ã€OpenPGP éµã® ID ã‚’å«ã¿ã€åŠ ãˆã¦è¨­å®šã•れãŸéµ ID を使用ã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€ãã®å—å–人ã«é–¢ã—ã¦ã¯ãれ以上ã®ãƒ«ãƒ¼ãƒ«ã¯è€ƒæ…®ã•れã¾ã›ã‚“。


æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Per-Recipient Settings page

enigmail/lang/ja/help/initError.html000066400000000000000000000056321266701624400177670ustar00rootroot00000000000000 Enigmail ヘルプ: Enigmail ã®åˆæœŸåŒ–ã«é–¢ã™ã‚‹å•題を解決ã™ã‚‹ã«ã¯

Enigmail ヘルプ

Enigmail ã®åˆæœŸåŒ–ã«é–¢ã™ã‚‹å•題を解決ã™ã‚‹ã«ã¯

Enigmail ã®åˆæœŸåŒ–ãŒæˆåŠŸã—ãªã„ã“ã¨ã«ã¯ã„ãã¤ã‹ã®åŽŸå› ãŒã‚りã¾ã™ã€‚よãã‚る原因ã¯ä»¥ä¸‹ã®ã‚ˆã†ãªã‚‚ã®ã§ã™ã€‚ æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Help web page

GnuPG ãŒè¦‹ã¤ã‹ã‚‰ãªã„

Enigmail を利用ã™ã‚‹ãŸã‚ã«ã¯ã€GnuPG ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ GnuPG ãŒè¦‹ã¤ã‹ã‚‰ãªã„å ´åˆã«ã¯ã€ã¾ãšã¯ã˜ã‚ã« GnuPG ã®å®Ÿè¡Œãƒ•ァイルã§ã‚ã‚‹ gpg.exe (Windows ã®å ´åˆã€‚ä»–ã®ãƒ—ラットフォームã®å ´åˆã«ã¯ gpg) ãŒãŠä½¿ã„ã®ã‚³ãƒ³ãƒ”ュータã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。 GnuPG ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«ã‚‚ã‹ã‹ã‚ら㚠Enigmail ãŒãれを検出ã§ããªã„å ´åˆã«ã¯ã€GnuPG ã®å®Ÿè¡Œãƒ•ァイルã¸ã®ãƒ‘スを手動ã§è¨­å®šã—ã¦ãã ã•ã„ (Enigmail > 設定)

Enigmail コアサービス ã®åˆæœŸåŒ–ã«å¤±æ•—ã™ã‚‹

Enigmail ã¯ã€ãŠä½¿ã„ã® Thunderbird ã‚„ SeaMonkey ãŒãƒ“ルドã•れãŸç’°å¢ƒã¨åŒã˜ç’°å¢ƒã§ãƒ“ルドã•れãŸã‚‚ã®ã—ã‹å‹•作ã—ã¾ã›ã‚“。ã™ãªã‚ã¡ã€Enigmail ã®å…¬å¼ãƒªãƒªãƒ¼ã‚¹ã¯ mozilla.org ã‹ã‚‰ãƒªãƒªãƒ¼ã‚¹ã•れる Thunderbird ã‚„ SeaMonkey ã§ã—ã‹å‹•作ã—ã¾ã›ã‚“。

Linux ディストリビューションãªã©ã€mozilla.org 以外ã‹ã‚‰ãƒªãƒªãƒ¼ã‚¹ã•れる Thunderbird ã‚„ SeaMonkey ã‚’ãŠä½¿ã„ã®å ´åˆã‚„ã”自分ã§ãƒ“ルドã—㟠Thunderbird ã‚„ SeaMonkey ã‚’ãŠä½¿ã„ã®å ´åˆã«ã¯ã€åŒã˜æä¾›å…ƒã‹ã‚‰ãƒªãƒªãƒ¼ã‚¹ã•れる Enigmail を利用ã™ã‚‹ã‹ã€ã”自分ã§ãƒ“ルドã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚Enigmail ã®ãƒ“ルドã«ã¤ã„ã¦ã¯ã€Source Code section ã‚’å‚ç…§ã—ã¦ãã ã•ã„。ã“ã®ã‚ˆã†ãªãƒ“ルド環境ã®é•ã„ã«èµ·å› ã™ã‚‹å•題を Enigmail ã®ãƒã‚°ã¨ã—ã¦å ±å‘Šã—ãªã„ã§ãã ã•ã„。

æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Support Web Site.

enigmail/lang/ja/help/messenger.html000066400000000000000000000116251266701624400200010ustar00rootroot00000000000000 Enigmail ヘルプ: メッセージを読む

Enigmail ヘルプ

メッセージを読む時㮠Enigmail ã®ä½¿ç”¨æ–¹æ³•

メインウインドウã®å¾©å·ãƒœã‚¿ãƒ³
ã“ã®ãƒœã‚¿ãƒ³ã‚’ã¯ã„ãã¤ã‹ã®ç”¨é€”ã§ä½¿ã‚れã¾ã™ã€‚: æš—å·åŒ–ã€æ¤œè¨¼ã€ã¾ãŸã¯å…¬é–‹éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãªã©ã§ã™ã€‚é€šå¸¸ã€æš—å·åŒ–/検証ã¯è‡ªå‹•çš„ã«è¡Œã‚れã¾ã™ã€‚設定ã«ã‚ˆã£ã¦ç„¡åйã«ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚ã—ã‹ã—ã€å¤±æ•—ã—ãŸæ™‚ã«ã¯ã€çŸ­ã„エラーメッセージ㌠Enigmail ã«è¡¨ç¤ºã•れるã ã‘ã§ã™ã€‚ã“ã®ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã“ã¨ã§ã€GnuPG コマンドã®å‡ºåŠ›çµæžœã‚’å«ã‚ã¦è©³ç´°ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¾ã™ã€‚
メッセージヘッダã®å°ç­’ã¨éµã®ã‚¢ã‚¤ã‚³ãƒ³
メッセージヘッダã«è¡¨ç¤ºã•れã¦ã„ã‚‹ å°ç­’ ã¨ éµ ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯ã€ã‚ãªãŸãŒèª­ã‚“ã§ã„るメッセージã®ç½²åãŒæ­£ã—ã„ã‹ã€æš—å·åŒ–ã•れã¦ã„ã‚‹ã‹ã‚’示ã—ã¦ã„ã¾ã™ã€‚ã‚‚ã—ãã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒç½²åã•れãŸå¾Œã«æ”¹ã–ã‚“ã•れã¦ã„ã‚‹å ´åˆã€å°ç­’ã®ã‚¢ã‚¤ã‚³ãƒ³ã¯Ã—å°ã¤ãã®å°ç­’ã®ã‚¢ã‚¤ã‚³ãƒ³ã¨ã—ã¦è¡¨ç¤ºã•れå•題を示ã—ã¾ã™ã€‚å°ç­’ã‚„éµã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’å³ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹ã“ã¨ã§ã€ä»¥ä¸‹ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
  • Enigmail セキュリティ情報: GnuPG ãŒãã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«å¯¾ã—ã¦å‡ºåŠ›ã—ãŸçµæžœã‚’表示ã—ã¾ã™ã€‚
  • Enigmail セキュリティ情報をコピー: GnuPG ã®å‡ºåŠ›ã‚’ã‚¯ãƒªãƒƒãƒ—ãƒœãƒ¼ãƒ‰ã«ã‚³ãƒ”ーã—ã¾ã™ã€‚返信ã«è²¼ã‚‹ãªã©ã«åˆ©ç”¨ã§ãã¾ã™ã€‚
  • OpenPGP フォト ID を表示: 公開éµã«å†™çœŸãŒåŸ‹ã‚è¾¼ã¾ã‚Œã¦ã„れã°ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®é€ä¿¡è€…㮠フォト ID を表示ã—ã¾ã™ã€‚(ã“ã®ã‚ªãƒ—ションã¯å†™çœŸãŒå…¬é–‹éµã«åŸ‹ã‚è¾¼ã¾ã‚Œã¦ã„ã‚‹å ´åˆã«æœ‰åйã§ã™ã€‚)
  • S/MIME セキュリティ情報: ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã® S/MIME セキュリティ情報を表示ã—ã¾ã™ã€‚

ã‚‚ã—ã‚ãªãŸãŒ keyserver-options auto-key-retrieve ã‚’ gpg.conf ã«è¨­å®šã—ã¦ã„ãªã„状態ã§ç½²åã‹æš—å·åŒ–ã•れã¦ã„るメッセージを読むã¨ã€å°ç­’ã®ã‚¢ã‚¤ã‚³ãƒ³ãŒï¼Ÿã¨å…±ã«è¡¨ç¤ºã•れã€ãƒ˜ãƒƒãƒ€ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒ©ã‚¤ãƒ³ã« メッセージã®ä¸€éƒ¨ãŒç½²åã•れã¦ã„ã¾ã™; å°ç­’ã¾ãŸã¯éµã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’クリックã—ã¦ãã ã•ã„ ã¨è¡¨ç¤ºã•れã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒšã‚¤ãƒ³ã«ã¯ OpenPGP メッセージブロックã¨ç½²åブロックãŒè¡¨ç¤ºã•れã¾ã™ã€‚

keyserver-options auto-key-retrieve ㌠gpg.conf ã«è¨­å®šã•れã¦ã„ã‚‹å ´åˆã§ã‚‚ã€OpenPGP éµãŒãƒ‡ãƒ•ォルトéµã‚µãƒ¼ãƒã«ç„¡ã„å ´åˆã¯åŒæ§˜ã®ã‚¢ã‚¤ã‚³ãƒ³ãŒè¡¨ç¤ºã•れã¾ã™ã€‚

å°ç­’ã¨ï¼Ÿ ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’クリックã™ã‚‹ã¨ã€è©²å½“ã™ã‚‹å…¬é–‹éµã‚’æŒã£ã¦ã„ãªã„æ—¨ãŒè¡¨ç¤ºã•れã¾ã™ã€‚OK をクリックã™ã‚‹ã¨ã€éµã‚µãƒ¼ãƒã®ãƒªã‚¹ãƒˆãŒè¡¨ç¤ºã•れãŸåˆ¥ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãŒé–‹ãメールã®é€ä¿¡è€…ã®å…¬é–‹éµã‚’ダウンロードã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

ã‚ãªãŸãŒä½¿ã„ãŸã„公開éµã‚µãƒ¼ãƒã®ãƒªã‚¹ãƒˆã‚’編集ã™ã‚‹ã«ã¯ã€Enigmail -> 設定 -> éµã‚µãƒ¼ãƒ ã‚¿ãƒ–ã‚’é¸æŠžã—ã€å…¬é–‹éµã‚µãƒ¼ãƒ: ã®æ¬„ã«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’カンマ区切りã§å…¥åŠ›ã—ã¦ãã ã•ã„。リストã®ä¸€ç•ªä¸Šã®ã‚µãƒ¼ãƒãŒæ—¢å®šã§ä½¿ç”¨ã•れã¾ã™ã€‚

æš—å·åŒ–ã•ã‚ŒãŸæ·»ä»˜ãƒ•ァイルを開ã/添付ã•れ㟠OpenPGP éµã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ
添付ファイルå㌠*.pgp, *.asc *.gpg ã®ãƒ•ァイル㯠Enigmail ã§è‡ªå‹•çš„ã«èªè­˜ã•れã¾ã™ã€‚ ãã‚Œã‚‰ã®æ·»ä»˜ãƒ•ァイルをå³ã‚¯ãƒªãƒƒã‚¯ã™ã‚‹ã¨ã€ç‰¹åˆ¥ãªé¸æŠžè‚¢ãŒã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãƒ¡ãƒ‹ãƒ¥ãƒ¼ã«è¡¨ç¤ºã•れã¾ã™ã€‚æš—å·åŒ–ã•ã‚ŒãŸæ·»ä»˜ãƒ•ァイルã®å ´åˆã«ã¯ã€å¾©å·ã—ã¦é–‹ã 㨠復å·ã—ã¦åå‰ã‚’ã¤ã‘ã¦ä¿å­˜ ãŒè¡¨ç¤ºã•れã€é–‹ã„ãŸã‚Šä¿å­˜ã™ã‚‹å‰ã«æ·»ä»˜ãƒ•ァイルを Enigmail ã§å¾©å·ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚添付ファイル㌠OpenPGP éµãƒ•ァイルã®å ´åˆã«ã¯ã€OpenPGP éµã‚’読ã¿è¾¼ã‚€ ãŒè¡¨ç¤ºã•れã€OpenPGP éµã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚

æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Help web page

enigmail/lang/ja/help/rulesEditor.html000066400000000000000000000064501266701624400203120ustar00rootroot00000000000000 Enigmail ヘルプ: å—å–人ã”ã¨ã®è¨­å®š

Enigmail ヘルプ

Enigmail å—å–人ã”ã¨ã®è¨­å®š

å—å–人ã”ã¨ã®è¨­å®šã§ã¯ã€å—å–人ã”ã¨ã«æš—å·åŒ–ã€ç½²åã€PGP/MIME ã«é–¢ã™ã‚‹æ—¢å®šã®è¨­å®šã¨ã€ã©ã® OpenPGP éµã‚’用ã„ã‚‹ã‹ã‚’設定ã§ãã¾ã™ã€‚å„ルール㯠5 ã¤ã®ãƒ•ィールドã‹ã‚‰ãªã‚Šã€1 ã¤ã®æ–¹é‡ã‚’ã‚らã‚ã—ã¾ã™ã€‚:

メールアドレス
メールアドレスを To:, Cc: ãã—㦠Bcc: フィールドã§ãƒžãƒƒãƒã•ã›ã¾ã™ã€‚ マッãƒãƒ³ã‚°ã¯ã€éƒ¨åˆ†ä¸€è‡´ã§è¡Œã‚れã¾ã™ã€‚ (詳細㯠ルール編集 ダイアログã«ã‚りã¾ã™ã€‚)
OpenPGP éµ
å—å–人ã”ã¨ã«ç”¨ã„ã‚‹ OpenPGP éµ ID を設定ã—ã¾ã™ã€‚
ç½²å
ç½²åã™ã‚‹/ã—ãªã„を決定ã—ã¾ã™ã€‚ã“れã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ä½œæˆç”»é¢ã®å€‹åˆ¥ã®è¨­å®šã«ã‚ˆã£ã¦ä¸Šæ›¸ãã•れã¾ã™ã€‚
  • 無効: メッセージã«ç½²åã—ã¾ã›ã‚“。
  • 返信時ã®ã¿: ç½²åã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«è¿”ä¿¡ã™ã‚‹ã¨ãã®ã¿ç½²åã—ã¾ã™ã€‚
  • 有効: メッセージã«ç½²åã—ã¾ã™ã€‚

ã“ã®ç½²åã«é–¢ã™ã‚‹è¨­å®šã¯ãƒžãƒƒãƒã™ã‚‹ã™ã¹ã¦ã®ãƒ«ãƒ¼ãƒ«ã«å¯¾ã—ã¦é©ç”¨ã•れã¾ã™ã€‚ã‚‚ã—ç½²åã‚’ã—ãªã„ルール㌠1 ã¤ã§ã‚‚ã‚れã°ã€ä»–ã®ç½²åã‚’ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒãƒžãƒƒãƒã—ã¦ã‚‚ã€ç½²åã¯ã•れã¾ã›ã‚“。

æš—å·åŒ–
æš—å·åŒ–ã™ã‚‹/ã—ãªã„を決定ã—ã¾ã™ã€‚設定å¯èƒ½ãªé …ç›®ã¨æ„味ã¯ã€ç½²åã¨åŒæ§˜ã§ã™ã€‚
PGP/MIME
PGP/MIME (RFC 3156) を用ã„ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’エンコードã™ã‚‹ã‹ã©ã†ã‹ã‚’決定ã—ã¾ã™ã€‚PGP/MIME ãŒç„¡åйã®å ´åˆã€ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ PGP ãŒä½¿ã‚れã¾ã™ã€‚設定å¯èƒ½ãªé …ç›®ã¨æ„味ã¯ã€ç½²åã¨åŒä¸€ã§ã™ã€‚

ルールã¯è¡¨ç¤ºã•れã¦ã„ã‚‹é †ã«å‡¦ç†ã•れã¾ã™ã€‚ã‚るルールãŒå—å–人ã«ã‚ã¦ã¯ã¾ã‚Šã€OpenPGP éµ IDã€ã•らã«ç‰¹å®šã•れãŸéµ ID ã‚’å«ã‚“ã§ã„ã‚‹å ´åˆã€ãã®å—å–人ã«ã¤ã„ã¦ã¯ã€ä»–ã®ãƒ«ãƒ¼ãƒ«ã¯è€ƒæ…®ã•れã¾ã›ã‚“。

注æ„: ルールエディタã¯ã¾ã å®Œæˆã—ã¦ã„ã¾ã›ã‚“。ルールファイルを直接編集ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚Šè©³ç´°ãªãƒ«ãƒ¼ãƒ«ã‚’設定ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ (ã“れらã®ãƒ«ãƒ¼ãƒ«ã¯ãƒ«ãƒ¼ãƒ«ã‚¨ãƒ‡ã‚£ã‚¿ã§ç·¨é›†ã§ããªã‹ã£ãŸã‚‚ã®ã§ã™)。直接ファイルを編集ã™ã‚‹ã“ã¨ã«ã¤ã„ã¦ã® è©³ç´°ãªæƒ…å ± (英語) 㯠Enigmail Homepage ã«ã‚りã¾ã™ã€‚


æ›´ãªã‚‹ãƒ˜ãƒ«ãƒ—ã¯ä»¥ä¸‹ã®ã‚µã‚¤ãƒˆã§åˆ©ç”¨ã§ãã¾ã™ (英語): Enigmail Help web page

enigmail/lang/ja/help/sendingPrefs.html000066400000000000000000000057541266701624400204460ustar00rootroot00000000000000 Enigmail ヘルプ: é€ä¿¡æ™‚ã®æš—å·åŒ–設定

Enigmail ヘルプ

æš—å·åŒ–ã—ã¦é€ä¿¡ã™ã‚‹è¨­å®š

é€ä¿¡è¨­å®šã«ãŠã„ã¦ã€æš—å·åŒ–ã«é–¢ã™ã‚‹ä¸€èˆ¬çš„ãªãƒ¢ãƒ‡ãƒ«ã¨ãƒ«ãƒ¼ãƒ«ã‚’é¸æŠžã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚

æ¨™æº–ã®æš—å·åŒ–設定
ã“ã®è¨­å®šã§ã¯ã€å¯èƒ½ã§ã‚れã°ç¢ºèªãªã—ã«è‡ªå‹•çš„ã«æš—å·åŒ–ã—ã¦é€ä¿¡ã—ã¾ã™ã€‚

å˜ã«æš—å·åŒ–ã™ã‚‹ã“ã¨ã§ãƒ—ライãƒã‚·ãƒ¼ã‚’強化ã—ãŸã„ã®ã§ã‚れã°ã€ã“ã®è¨­å®šãŒé©ã—ã¦ã„ã¾ã™ã€‚

ã“れã¯ã€è‘‰æ›¸ã§ã¯ãªãå°æ›¸ã‚’用ã„ã‚‹ã“ã¨ã¨é¡žä¼¼ã—ã¦ã„ã¾ã™ã€‚葉書ã¨ã¯ç•°ãªã‚Šã€å°æ›¸ã§ã‚れã°é…é€ã®éŽç¨‹ã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å†…容ãŒç¬¬ä¸‰è€…ã®ç›®ã«è§¦ã‚Œã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。

ã—ã‹ã—ãªãŒã‚‰å°æ›¸ã‚’用ã„ãŸå ´åˆã¨åŒæ§˜ã«ã€ã“ã®è¨­å®šã§ã¯é…é€éŽç¨‹ã§ç¬¬ä¸‰è€…ã«ã‚ˆã£ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å†…容ãŒè§£èª­ã•れるå¯èƒ½æ€§ã‚’完全ã«å¦å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ (ãã®ãŸã‚ã«ç‰¹åˆ¥ãªæŠ€è¡“ã‚’å¿…è¦ã¨ã™ã‚‹ã¨ã—ã¦ã‚‚)。

具体的ãªãƒªã‚¹ã‚¯ã¨ã—ã¦ã¯ã€æ­£è¦ã®å—å–人を装ã£ãŸç¬¬ä¸‰è€…ã«ã‚ˆã‚‹ã€Œå½ç‰©ã®éµã€ã«å¯¾ã—ã¦æš—å·åŒ–ã—ã¦ã—ã¾ã†ã“ã¨ãŒæŒ™ã’られã¾ã™ã€‚ã“れをé¿ã‘ã‚‹ãŸã‚ã«ã¯ã€PGP ã®ä¿¡é ¼ãƒ¢ãƒ‡ãƒ«ã‚’利用ã™ã‚‹ã‹ (下記å‚ç…§)ã€å…¬é–‹éµã®ãƒ•ã‚£ãƒ³ã‚¬ãƒ¼ãƒ—ãƒªãƒ³ãƒˆãŒæ­£ã—ã„ã‹å¸¸ã«ç¢ºèªã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

è©³ç´°ãªæš—å·åŒ–設定
ã“ã®è¨­å®šã§ã¯ã€å¿…è¦ã«å¿œã˜ã¦æš—å·åŒ–ã®è¨­å®šã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
  • ç½²å/æš—å·åŒ–ã•れãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«å¯¾ã—ã¦è‡ªåˆ†ã‚‚ç½²å/æš—å·åŒ–ã—ã¦è¿”ä¿¡ã™ã‚‹ã‹å¦ã‹
  • æš—å·åŒ–ã®éš›ã«å—ã‘入れるéµã®é¸å®šã« OpenPGP ã®ä¿¡é ¼ãƒ¢ãƒ‡ãƒ« (Web of Trustã€è‡ªåˆ†è‡ªèº«ã«ã‚ˆã‚‹ç½²åã‚ã‚‹ã„ã¯ã€è‡ªåˆ†ãŒä¿¡ç”¨ã™ã‚‹éµã«ã‚ˆã‚‹ååˆ†ãªæ•°ã®ç½²åã‚’å¿…è¦ã¨ã—ã¾ã™) を用ã„ã‚‹ã‹å¦ã‹
  • éµãŒå—ã‘入れられる場åˆã«ã€è‡ªå‹•çš„ã«æš—å·åŒ–ã—ã¦é€ä¿¡ã™ã‚‹ã‹å¦ã‹
  • é€ä¿¡å‰ã«æš—å·åŒ–ã«ã¤ã„ã¦ç¢ºèªã™ã‚‹ã‹å¦ã‹
æ­£è¦ã®å—å–人以外ã®ç¬¬ä¸‰è€…ã«ã‚ˆã£ã¦æš—å·åŒ–ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å†…容ãŒè§£èª­ã•れるã“ã¨ã‚’防ããŸã‚ã«ã¯ã€è©³ç´°è¨­å®šã§ã€Œä¿¡ç”¨ã§ãã‚‹éµã®ã¿ã€ã‚’é¸æŠžã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚OpenPGP ã®ä¿¡é ¼ãƒ¢ãƒ‡ãƒ« (Web of Trust) を用ã„ã‚‹ã“ã¨ã§ã€å½ç‰©ã®éµã«å¯¾ã™ã‚‹ãƒªã‚¹ã‚¯ã‚’軽減ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ãŒã€ã“ã®ãƒ¢ãƒ‡ãƒ«ã‚’é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ãŸã‚ã«ã¯ã€è‡ªåˆ†è‡ªèº«ã«ã‚ˆã‚‹ç½²åを行ã„ã€ã€Œæ‰€æœ‰è€…ã«ã‚ˆã‚‹ä¿¡ç”¨åº¦ã€ã‚’明示ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ enigmail/lang/ko/000077500000000000000000000000001266701624400142055ustar00rootroot00000000000000enigmail/lang/ko/am-enigprefs.properties000066400000000000000000000001171266701624400206770ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP 보안 enigmail/lang/ko/enigmail.dtd000066400000000000000000000731151266701624400164760ustar00rootroot00000000000000 주ì˜ï¼ší‚¤ ìƒì„±ì€ 완료까지 몇 ë¶„ ì •ë„ ê±¸ë¦´ 수 있습니다. 키 ìƒì„±ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆ ì‘ìš©í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•˜ì§€ 마십시오. 키 ìƒì„± ë„ì¤‘ì— ë¸Œë¼ìš°ì €ë¥¼ 사용하거나 ë””ìŠ¤í¬ ì•¡ì„¸ìŠ¤ê°€ ë§Žì€ ìž‘ì—…ì„ ìˆ˜í–‰í•˜ë©´, '난수 í’€'ì´ ì±„ì›Œì ¸ 처리 ì†ë„ê°€ 빨ë¼ì§‘니다. 키 ìƒì„±ì´ 완료ë˜ë©´ 알려드립니다."> 'ì€ ìž˜ëª»ëœ ê²ƒìž…ë‹ˆë‹¤."> 주ì˜ï¼ší‚¤ ìƒì„±ì€ 완료까지 몇 ë¶„ ì •ë„ ê±¸ë¦´ 수 있습니다. 키 ìƒì„±ì´ ì§„í–‰ë˜ëŠ” ë™ì•ˆ ì‘ìš©í”„ë¡œê·¸ëž¨ì„ ì¢…ë£Œí•˜ì§€ 마십시오. 키 ìƒì„±ì´ 완료ë˜ë©´ 알려드립니다."> 주ì˜: Enigmail는 모든 계정 ë˜ëŠ” ì‹ ì›ì— 대하여, Enigmailê°€ ì„¤ì •ëœ ìƒíƒœì´ë“  아니든 관계없ì´, ì „ìž ë©”ì¼ì— 있는 ì„œëª…ì„ ê²€ì¦í•˜ê²Œ ëœë‹¤ëŠ” ì ì„ 주ì˜í•˜ì‹­ì‹œì˜¤"> Enigmailì„ ì„ íƒí•´ì£¼ì…”서 ê°ì‚¬í•©ë‹ˆë‹¤."> enigmail/lang/ko/enigmail.properties000066400000000000000000000571531266701624400201230ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail 경고 enigConfirm=Enigmail í™•ì¸ enigError=Enigmail ì—러 enigPrompt=Enigmail 프롬프트 dlgYes=예(&Y) dlgNo=아니오(&N) dlgKeepSetting=ì„¤ì •ì„ ì €ìž¥í•´, 다ìŒë¶€í„° 묻지 ì•ŠìŒ dlgNoPrompt=다ìŒë¶€í„° ì´ ëŒ€í™”ìƒìžë¥¼ 표시하지 ì•ŠìŒ dlg.button.delete=ì‚­ì œ(&D) dlg.button.cancel=취소(&C) dlg.button.close=닫기(&C) dlg.button.continue=계ì†(&T) dlg.button.skip=건너뛰기(&S) dlg.button.view=보기(&V) repeatPrefix=\n\nì´ ê²½ê³ ëŠ” %S repeatSuffixSingular=회 반복ë©ë‹ˆë‹¤. repeatSuffixPlural=회 반복ë©ë‹ˆë‹¤. noRepeat=\n\nEnigmail를 업그레ì´ë“œ í•  때까지, ì´ ê²½ê³ ëŠ” 반복ë˜ì§€ 않습니다. pgpNotSupported=Enigmail를 PGP 6.x와 함께 사용하고 계신것 같습니다.\n\n불행하게ë„, PGP 6.x는 Enigmailê°€ 올바르게 ë™ìž‘하지 못하게하는 ë§Žì€ ë¬¸ì œì ì„ 가지고 있습니다. ë”°ë¼ì„œ, Enigmail는 PGP 6.x를 ë”ì´ìƒ ì§€ì›í•˜ì§€ 않습니다.. GnuPG (GPG)를 ëŒ€ì‹ ì— ì‚¬ìš©í•˜ì„¸ìš”.\n\n, GnuPG로 전환할 때 ë„ì›€ì´ í•„ìš”í•˜ë‹¤ë©´, Enigmail 홈페ì´ì§€ì˜ Help ì„¹ì…˜ì„ ì°¸ì¡°í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤. passphraseCleared=패스프레ì´ì¦ˆë¥¼ 지웠습니다 noPhotoAvailable=ì‚¬ì§„ì´ ì—†ìŠµë‹ˆë‹¤ debugLog.title=Enigmail Debug Log usingVersion=Enigmail 버전 %S 실행 중 usingAgent=%S ì‹¤í–‰íŒŒì¼ %S 를 ì´ìš©í•´ 암호화/복호화를 하고 있습니다. agentError=ì—러: Enigmime ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤ í•  수 없습니다! accessError=Enigmail ì„œë¹„ìŠ¤ì— ì•¡ì„¸ìŠ¤ í•  수 없습니다. onlyGPG=키 ìƒì„±ì€ GnuPGì—서만 ì´ìš©í•  수 있습니다. (PGPì—서는 ë™ìž‘하지 않습니다! ) keygenComplete=키 ìƒì„± 완료! ì¦ëª…서 <%S>ê°€ ì„œëª…ì— ì´ìš©ë©ë‹ˆë‹¤. revokeCertRecommended=사용ìžì˜ í‚¤ì— ëŒ€í•œ í기 ì¸ì¦ì„œ ìž‘ì„±ì„ ê°•ë ¥ížˆ 추천 합니다. ì´ ì¸ì¦ì„œëŠ” 키를 무효로 하고 ì‹¶ì„ ë•Œ, 예를 들어, 비밀키를 ì½ì–´ë²„리거나 ì‹ ë¢°ì„±ì„ ë³´ìž¥í•  수 ì—†ì„ ë•Œ ì´ìš©í•  수 있습니다. í기 ì¦ëª…서를 지금 작성합니까? keyMan.button.generateCert=ì¸ì¦ì„œ ìƒì„±(&G) genCompleteNoSign=키 ìƒì„± 완료! genGoing=키 ìƒì„± ì´ë¯¸ 진행중! passNoMatch=패스프레ì´ì¦ˆê°€ ì¼ì¹˜í•˜ì§€ 않았습니다. 다시 입력해주세요 passCheckBox=í‚¤ì— ëŒ€í•´ 패스프레ì´ì¦ˆë¥¼ 설정하지 않는 경우 ì²´í¬ passUserName=ì´ ì¦ëª…ì„œì— ëŒ€í•œ ì‚¬ìš©ìž ëª…ì„ ì§€ì •í•˜ì„¸ìš” changePassFailed=패스프레ì´ì¦ˆ 변경 실패 keyConfirm='%S'ì˜ ê³µê°œí‚¤ì™€ ê°œì¸í‚¤ë¥¼ ìƒì„±í•©ë‹ˆê¹Œ? keyMan.button.generateKey=키 ìƒì„±(&G) keyAbort=키 ìƒì„±ì„ 중지합니까? keyMan.button.generateKeyAbort=키 ìƒì„± 중단(&A) keyMan.button.generateKeyContinue=키 ìƒì„± 계ì†(&C) expiryTooLong=100ë…„ ì´ìƒì˜ ìœ íš¨ê¸°ê°„ì´ ìžˆëŠ” 키는 ìƒì„± í•  수 없습니다. expiryTooShort=키는 ì ì–´ë„ 1ì¼ê°„ì€ ìœ íš¨í•˜ì§€ 않으면 안ë©ë‹ˆë‹¤. keyGenFailed=키 ìƒì„±ì— 실패했습니다. ìžì„¸í•œ ë‚´ìš©ì€ Enigmail 콘솔(메뉴 Enigmail > Enigmail 디버그)ì—서 확ì¸í•˜ì„¸ìš”. # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail 보안 ì •ë³´ \n\n enigHeader=Enigmail: possiblyPgpMime=PGP/MIME 암호화 í˜¹ì€ ì„œëª…ëœ ë©”ì‹œì§€ 같습니다. 복호화화 ë²„íŠ¼ì„ ëˆ„ë¥´ì„¸ìš” noDecrypted=저장할 ë³µí˜¸í™”ëœ ë©”ì‹œì§€ê°€ 없습니다! \níŒŒì¼ ë©”ë‰´ë¡œì—서 ì €ìž¥ì„ ì‚¬ìš©í•˜ì„¸ìš” noMessage=저장할 메시지가 ì—†ìŒ! useButton=메시지 복호화를 하려면 복호화 ë²„íŠ¼ì„ í´ë¦­í•´ 주세요 saveHeader=Enigmail: 복호화한 메시지 저장 saveAttachmentHeader=Enigmail: 복호화 한 첨부 파ì¼ì„ 저장 noTempDir=쓰기 가능한 임시 디렉토리를 ì°¾ì„ ìˆ˜ ì—†ìŒ\nTEMP 환경 변수를 설정해 주세요 attachmentPgpKey=열려고 한 첨부 íŒŒì¼ '%S'는, OpenPGP키 파ì¼ìž…니다. \n\nì²¨ë¶€ëœ í‚¤ë¥¼ 가져오려면 '가져오기'를 브ë¼ìš°ì € 윈ë„ìš°ì—서 íŒŒì¼ ë‚´ìš©ì„ ë³´ë ¤ë©´ '보기'를 í´ë¦­í•˜ì„¸ìš” beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* ********* endPgpPart=********** *END ENCRYPTED or SIGNED PART* ********** decryptOkNoSig=경고\n\në³µí˜¸í™”ì— ì„±ê³µí–ˆìœ¼ë‚˜ ì„œëª…ì€ ì˜¬ë°”ë¥´ê²Œ ê²€ì¦ë˜ì§€ 않았습니다 msgOvl.button.contAnyway=ìƒê´€ì—†ì´ ê³„ì† ì§„í–‰(&C) keysToExport=삽입할 OpenPGP 키를 ì„ íƒí•˜ì„¸ìš” keysToUse=%S 사용할 OpenPGP키를 ì„ íƒí•˜ì„¸ìš” pubKey=%S ì— ëŒ€í•œ 공개키\n windowLocked=메시지 작성 í™”ë©´ì´ ìž ê¹€. 보내기 ì·¨ì†Œë¨ sendUnencrypted=Enigmail 초기화를 실패했습니다.\n암호화ë˜ì§€ ì•Šì€ ë©”ì‹œì§€ë¥¼ 보내시겠습니까? composeSpecifyEmail=외부로 나가는 ë©”ì‹œì§€ì— ëŒ€í•œ 서명 키를 ì„ íƒí•˜ëŠ”ë° ì‚¬ìš©í•  주로 사용하는 ì „ìž ë©”ì¼ ì£¼ì†Œë¥¼ 지정해 주세요.\n 공백으로 ë‘ë©´, 해당 ë©”ì‹œì§€ì˜ ë³´ë‚´ëŠ” ì‚¬ëžŒì˜ ì£¼ì†Œê°€ 서명 키 ì„ íƒì— 사용ë©ë‹ˆë‹¤. sendingHiddenRcpt=ì´ ë©”ì‹œì§€ì—는 BCC (ìˆ¨ì€ ì°¸ì¡°)로 받는 ì‚¬ëžŒì´ ìžˆìŠµë‹ˆë‹¤. ì´ ë©”ì‹œì§€ê°€ 암호화ë˜ë©´, BCC로 받는 ì‚¬ëžŒì„ ìˆ¨ê¸¸ 수는 있지만 몇몇 다른 PGP 제품 (예를 들어, PGP Corp.) 사용ìžê°€ 메시지를 복호화 í•  수 없게 ë ìˆ˜ë„ 있습니다. ì´ ê²½ìš°, 암호화한 BCC-ë©”ì¼ì„ 사용하지 않는게 좋습니다. sendWithHiddenBcc=BCC 받는 사람 숨기기 sendWithShownBcc=ì¼ë°˜ì ì¸ ë°©ì‹ìœ¼ë¡œ 암호화 sendingNews=ì•”í˜¸í™”ëœ ë³´ë‚´ê¸° ìž‘ì—…ì´ ì¤‘ë‹¨ë습니다.\n\nì´ ë©”ì‹œì§€ëŠ” 뉴스 ê·¸ë£¹ì˜ ë°›ëŠ” ì‚¬ëžŒì´ í¬í•¨ë˜ì–´ 있기 ë•Œë¬¸ì— ì•”í˜¸í™”ë  ìˆ˜ 없습니다. 암호화 하지ë§ê³  다시 ì´ ë©”ì‹œì§€ë¥¼ 보내주세요. sendToNewsWarning=경고: ë‰´ìŠ¤ê·¸ë£¹ì— ì•”í˜¸í™”í•œ ë©”ì¼ì„ 보내려하고 있습니다.\n\nê·¸ë£¹ì˜ ëª¨ë“  구성ì›ì´ ì´ ë©”ì‹œì§€ë¥¼ 복호화 í•  수 있어야 ì˜ë¯¸ê°€ 있기 ë•Œë¬¸ì— ì´ë ‡ê²Œ 하는 ê²ƒì€ ê¶Œìž¥í•˜ì§€ 않습니다. 예를 들어, 메시지는 ê·¸ë£¹ì— ì°¸ì—¬í•˜ê³  있는 모든 ì‚¬ëžŒì˜ í‚¤ë¡œ 암호화 ë˜ì–´ì•¼ 합니다. 지금 수행하고 있는 ì¼ì´ ì–´ë–¤ ì¼ì¸ì§€ 정확히 알고있는 경우ì—ë§Œ 메시지를 보내기 ë°”ëžë‹ˆë‹¤.\n\n계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ? hasHTML=HTML ë©”ì¼ ê²½ê³ :\nì´ ë©”ì‹œì§€ì—는 서명/암호화 실패를 ì¼ìœ¼í‚¬ 수 있는 HTMLì´ í¬í•¨ë˜ì–´ 있는 것 같습니다. 앞으로 ì´ ë©”ì‹œì§€ë¥¼ 무시하려면, 서명한 ë©”ì¼ì„ 보낼 때 SHIFT 키를 누르면서 작성/답신 ë²„íŠ¼ì„ í´ë¦­í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤.\n만약 기본으로 ë©”ì¼ì— ì„œëª…ì„ í•˜ê³  있다면, ì´ ë©”ì¼ ê³„ì •ì— ëŒ€í•´ HTML ë©”ì¼ì„ ê³„ì† ì‚¬ìš©í•˜ì§€ 않ë„ë¡í•˜ê¸° 위해 'HTML로 메시지를 작성하기' ì„¤ì •ì„ ì²´í¬ í•´ì œí•˜ì…”ì•¼ 합니다. strippingHTML=서명/암호화를 위해 í…스트 형ì‹ìœ¼ë¡œ 변환하는 과정ì—서 ì†ì‹¤ë˜ëŠ” HTML í˜•ì‹ ì •ë³´ê°€ ë©”ì‹œì§€ì— í¬í•¨ë˜ì–´ 있습니다. ì •ë§ë¡œ 진행할까요? msgCompose.button.sendAnyway=ê·¸ëž˜ë„ ë©”ì‹œì§€ 보내기(&S) attachWarning=ì´ ë©”ì‹œì§€ì˜ ì²¨ë¶€ë¬¼ì€ ë¡œì»¬ì— ìžˆëŠ” ê²ƒì´ ì•„ë‹ˆê¸° ë•Œë¬¸ì— ì•”í˜¸í™”ë  ìˆ˜ 없습니다. ì²¨ë¶€ë¬¼ì„ ì•”í˜¸í™”í•˜ê¸° 위해서는, 해당 ì²¨ë¶€ë¬¼ì„ ë¡œì»¬ 파ì¼ë¡œ ìš°ì„  저정한 ë‹¤ìŒ ì´ íŒŒì¼ë“¤ì„ 다시 첨부하세요. ê·¸ëž˜ë„ ë©”ì‹œì§€ë¥¼ 보내시겠습니까? quotedPrintableWarn=보내는 ë©”ì‹œì§€ì— 'quoted-printable' ì¸ì½”ë”©ì´ ì„¤ì •ë˜ì–´ 있습니다. ì´ ì„¤ì •ìœ¼ë¡œ ì¸í•´ ë©”ì‹œì§€ì˜ ë³µí˜¸í™” 그리고/ë˜ëŠ” ê²€ì¦ì„ 올바로 í•  수 ì—†ê²Œë  ì†Œì§€ê°€ 있습니다. 지금 'quoted-printable' 메시지 보내기 ì„¤ì •ì„ ë„시겠습니까? minimalLineWrapping=%S ìžê°€ ë  ë•Œë§ˆë‹¤ 줄 바꾸기 ì„¤ì •ì´ ë˜ì–´ 있습니다. 제대로 암호화 그리고/ë˜ëŠ” ì„œëª…ì„ í•˜ë ¤ë©´, ì ì–´ë„ ì´ ê°’ì´ 68 ì€ ë˜ì–´ì•¼í•©ë‹ˆë‹¤. \n 지금 줄 바꿈 ë¬¸ìž ìˆ˜ë¥¼ 68ìžë¡œ 변경합니까? warning=경고 signIconClicked=ì„œëª…ì„ ìˆ˜ë™ìœ¼ë¡œ 변경했습니다. ë”°ë¼ì„œ ì´ ë©”ì‹œì§€ë¥¼ 작성하는 ë™ì•ˆ, 서명하기 활성/ë¹„í™œì„±ì€ ë”ì´ìƒ 암호화 활성/ë¹„í™œì„±í•˜ê¸°ì— ì˜ì¡´í•˜ì§€ 않습니다. # note: should end with double newline: sendAborted=보내기 중단ë¨.\n\n statPGPMIME=PGP/MIME statSigned=ì„œëª…ë¨ statEncrypted=ì•”í˜¸í™”ë¨ statPlain=서명ë˜ê³  ì•”í˜¸í™”ë¨ offlineSave=%S 메시지를 보낼 편지함 í´ë”ì— %S (으)로 저장하시겠습니까? onlineSend=%S 메시지를 %S (으)로 보냅니까? encryptKeysNote=주ì˜: ì´ ë©”ì‹œì§€ëŠ” ë‹¤ìŒ ì‚¬ìš©ìž ì‹ ì› / 키로 암호화ë©ë‹ˆë‹¤: %S signFailed=Enigmail ì—러; 암호화/서명하기 실패. 암호화ë˜ì§€ ì•Šì€ ë©”ì‹œì§€ë¥¼ 보낼까요? msgCompose.button.sendUnencrypted=암호화ë˜ì§€ ì•Šì€ ë©”ì‹œì§€ 보내기(&S) recipientsSelectionHdr=암호화하기 위해 받는 ì‚¬ëžŒì„ ì„ íƒ configureNow=ì„ íƒí•œ 디지털 ì‹ ë¶„ì¦ì— 대한 Enigmail 보안 ì„¤ì •ì´ ì•„ì§ ë˜ì–´ìžˆì§€ 않습니다. 지금 설정하시겠습니까? # should not be used anymore: encryptYes=메시지는 암호화ë©ë‹ˆë‹¤ encryptNo=메시지가 암호화ë˜ì§€ 않습니다 # should not be used anymore: signYes=메시지는 서명ë©ë‹ˆë‹¤ signNo=메시지가 서명ë˜ì§€ 않습니다 rulesConflict=받는 사람 별 ê·œì¹™ë“¤ì´ ì„œë¡œ 모순ë©ë‹ˆë‹¤\n%S\n\nì´ë ‡ê²Œ 설정해서 메시지를 보냅니까? msgCompose.button.configure=설정(&C) msgCompose.button.send=메시지 보내기(&S) msgCompose.button.save=메시지 저장(&S) # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=공개키 %S ê°€ 서명 ê²€ì¦ì— 필요함 clickDecrypt=; 복호화 ë²„íŠ¼ì„ í´ë¦­ clickDecryptRetry=; 다시 시ë„하려면 복호화 ë²„íŠ¼ì„ í´ë¦­ msgPart=%S ë©”ì‹œì§€ì˜ ì¼ë¶€ë¶„ msgSigned=ì„œëª…ë¨ msgEncrypted=ì•”í˜¸í™”ë¨ msgSignedAndEnc=서명ë˜ê³  ì•”í˜¸í™”ë¨ unverifiedSig=ê²€ì¦ë˜ì§€ì•Šì€ 서명 incompleteDecrypt=복호화 미완료 needKey=ì—러 - 메시지를 복호화하려면 비밀키가 필요함 failedDecrypt=ì—러 - 복호화 실패 badPhrase=ì—러 - 틀린 패스프레ì´ì¦ˆ failedDecryptVerify=ì—러 - 복호화/ê²€ì¦ ì‹¤íŒ¨ viewInfo=; ì„¸ë¶€ì‚¬í•­ì€ ë³´ê¸° > 메시지 보안 ì •ë³´ decryptedMsg=ë³µí˜¸í™”ëœ ë©”ì‹œì§€ locateGpg=GnuPG 프로그램 위치 지정 invalidGpgPath=GnuPGê°€ ì§€ì •ëœ ê²½ë¡œì—서 ì‹¤í–‰ë  ìˆ˜ 없습니다. Enigmail는 GnuPG로 경로를 다시 지정할 때까지 í˜¹ì€ ì‘ìš©í”„ë¡œê·¸ëž¨ì„ ë‹¤ì‹œ 시작할 때까지 비활성 ìƒíƒœê°€ ë©ë‹ˆë‹¤. warningsAreReset=모든 경고가 초기화 ë˜ì—ˆìŠµë‹ˆë‹¤. prefs.gpgFound=%S ì—서 GnuPGê°€ ë°œê²¬ë¨ prefs.gpgNotFound=GnuPG를 ì°¾ì„ ìˆ˜ ì—†ìŒ prefs.warnAskNever=경고: ì´ ì˜µì…˜ì„ í™œì„±í™”í•˜ë©´ 받는 사람들 중 ì–´ëŠ í•œ 사람ì—게 키가 ì—†ë”ë¼ë„ ë”는 알리지않기 ë•Œë¬¸ì— ì „ìž ë©”ì¼ì´ 암호화ë˜ì§€ ì•Šì€ ìƒíƒœë¡œ ë°©ì¹˜ë  ìˆ˜ 있습니다 -- Enigmail ì´ëŸ° 경우가 ë°œìƒí•´ë„ 알려드리지 ì•Šì„ ê²ƒìž…ë‹ˆë‹¤! prefEnigmail.oneKeyserverOnly=오류 - ë¹ ì§„ OpenPGP 키를 ìžë™ìœ¼ë¡œ 다운로드 하기위해 í•˜ë‚˜ì˜ í‚¤ 서버만 지정할 수 있습니다. enterAdminPin=스마트 ì¹´ë“œì˜ ê´€ë¦¬ìž PINì„ ìž…ë ¥í•´ 주세요 enterCardPin=스마트 카드 PINì„ ìž…ë ¥í•´ 주세요 notInit=ì—러 - Enigmail 서비스가 ì•„ì§ ì´ˆê¸°í™” ì•ˆë¨ badCommand=ì—러 - 암호화 명령 실패 cmdLine=명령 í–‰ 출력: notRequired=ì—러 - 암호화 í•„ìš” ì—†ìŒ notComplete=ì—러 - 키 ìƒì„±ì´ ì•„ì§ ì™„ë£Œ ì•ˆë¨ invalidEmail=ì—러 - ìž˜ëª»ëœ ì „ìž ë©”ì¼ ì£¼ì†Œ noPassphrase=ì—러 - 주어진 패스프레ì´ì¦ˆ ì—†ìŒ noPGPblock=ì—러 - 유효하지 ì•Šì€ ë³´í˜¸í˜• OpenPGP ë°ì´í„° 블ë¡ì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤ unverifiedReply=들여쓰기 ëœ ë¶€ë¶„ (답장)ì´ ë³€í˜•ëœ ê²ƒ 같습니다 sigMismatch=ì—러 - ì„œëª…ì´ ì¼ì¹˜í•˜ì§€ 않습니다 cantImport=공개키 가져오기 실패\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=리ë”ì— ë“¤ì–´ìžˆëŠ” %S 스마트카드가 메시지를 ì²˜ë¦¬í•˜ëŠ”ë° ì‚¬ìš©í•  수 없습니다.\n%S 스마트카드를 삽입하고 다시 시ë„해보십시오. sc.insertCard=해당 ìž‘ì—…ì€ ì‚¬ìš©ìžì˜ %S 스마트카드를 필요로합니다.\n필요한 스마트카드를 삽입하고 다시 시ë„해보십시오. sc.removeCard=해당 ìž‘ì—…ì€ ë¦¬ë”ì— ìŠ¤ë§ˆíŠ¸ì¹´ë“œê°€ ë“¤ì–´ìžˆì„ í•„ìš”ê°€ 없습니다.\n스마트카드를 제거한 후 다시 시ë„해보십시오. sc.noCardAvailable=리ë”ì—서 스마트 카드를 ì°¾ì„ ìˆ˜ 없습니다\n스마트 카드를 삽입하고 ìž‘ì—…ì„ ë‹¤ì‹œ 해보세요 sc.noReaderAvailable=스마트 카드 리ë”ì— ì ‘ê·¼ì´ í—ˆìš©ë˜ì§€ 않습니다\n카드 리ë”를 연결하고, 스마트 카드를 삽입 후, ìž‘ì—…ì„ ë‹¤ì‹œ 해보세요 gpgNotFound=Unable to locate GnuPG program '%S'.\nMake sure you have set the GnuPG executable path correctly in the Enigmail Preferences gpgNotInPath=Unable to locate GnuPG executable in the PATH.\nMake sure you have set the GnuPG executable path correctly in the Enigmail Preferences gpgAgentNotStarted=사용하고 있는 GnuPG 버전 %S ì— í•„ìš”í•œ gpg-agentì„ ì‹œìž‘í•  수 없습니다. prefUntrusted=신뢰할 수 없는 prefRevoked=íê¸°ëœ í‚¤ prefExpiredKey=ë§Œë£Œëœ í‚¤ prefExpired=ë§Œë£Œëœ prefGood=%S ì˜ ì˜¬ë°”ë¥¸ 서명 prefBad=%S ì˜ ìž˜ëª»ëœ ì„œëª… failCancel=ì—러 - 사용ìžì— ì˜í•´ 키 받기가 취소 ë˜ì—ˆìŠµë‹ˆë‹¤ failNoServer=ì—러 - 키를 받아올 키 서버가 지정ë˜ì§€ 않았습니다 failNoID=ì—러 - ë°›ì„ í‚¤ì˜ IDê°€ 지정ë˜ì§€ 않았습니다 failKeyExtract=ì—러 - 키 추출 명령 실패 notFirstBlock=ì—러 - 첫 OpenPGP 블ë¡ì´ 공개키가 아닙니다 importKeyConfirm=ë©”ì‹œì§€ì— ë“¤ì–´ìžˆëŠ” 키를 가져오겠습니까? failKeyImport=ì—러 - 키 가져오기 실패 fileWriteFailed=íŒŒì¼ %S 로 쓰기 실패 importKey=키 서버ì—서 공개키 %S 를 가져오기: uploadKey=키 ì„œë²„ì— ê³µê°œí‚¤ %S 를 보내기: keyId=키 ID keyAndSigDate=키 ID: 0x%S / %S ì— ì„œëª…ë¨ keyFpr=키 지문: %S noEmailProvided=ì „ìž ë©”ì¼ ì£¼ì†Œë¥¼ 입력하지 않았습니다! keyAlreadySigned=해당 키는 ì´ë¯¸ 서명ë˜ì–´ 있습니다. 중복 서명할 수 없습니다. selKeyExpired=ë§Œë£Œëœ %S createdHeader=ìƒì„±ë¨: atLeastOneKey=키가 ì„ íƒë˜ì§€ 않았ìŒ! ì ì–´ë„ í•˜ë‚˜ì˜ í‚¤ëŠ” ì„ íƒí•´ì£¼ì…”야 합니다 fewerKeysThanRecipients=받는 사람 수 보다 ì ì€ ìˆ˜ì˜ í‚¤ë¥¼ ì„ íƒí–ˆìŠµë‹ˆë‹¤. ì •ë§ë¡œ 암호화 í•  키 ëª©ë¡ ì„ íƒì„ ë내셨습니까? userSel.button.goBack=키를 ë” ì„ íƒ userSel.secretKeySel.title=ë©”ì‹œì§€ì— ì„œëª…í•  비밀 OpenPGP 키를 ì„ íƒ # Strings used in enigmailAttachmentDialog.js pgpMimeNote=주ì˜: PGP/MIME는 í•œì •ëœ ìˆ˜ì˜ ë©”ì¼ í´ë¼ì´ì–¸íЏì—서만 ì§€ì›ë©ë‹ˆë‹¤! Windowsì—서는 ì˜¤ì§ Mozilla/Thunderbird, Sylpheed, Pegasus 그리고 Mulberry ë§Œì´ ì´ í‘œì¤€ì„ ì§€ì›í•˜ëŠ” 것으로 알려져있습니다. Linux/UNIX 와 Mac OS X ì—서는 가장 ë§Žì´ ì“°ì´ëŠ” ë©”ì¼ í´ë¼ì´ì–¸íŠ¸ë§Œì´ ì§€ì›í•©ë‹ˆë‹¤. 잘 모르겠으면, %S ì˜µì…˜ì„ ì„ íƒí•˜ì„¸ìš”. first=1번째 second=2번째 # Strings used in am-enigprefs.js encryptKeyHeader=ì•”í˜¸í™”ì— ì‚¬ìš©í•  OpenPGP 키 ì„ íƒ identityName=디지털 ì‹ ë¶„ì¦: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=암호화를 활성화 했으나, 키를 ì„ íƒí•˜ì§€ 않으셨습니다. %S ì—게 보낼 ë©”ì¼ì„ 암호화하기 위해서는 키 목ë¡ì—서 키를 ì„ íƒí•´ì£¼ì…”야합니다. %S ì— ëŒ€í•˜ì—¬ 암호화를 비활성 ìƒíƒœë¡œ 하시겠습니까? noKeyToUse=(ì—†ìŒ - 암호화하지 않ìŒ) noEmptyRule=ê·œì¹™ì€ ë¹„ì–´ìžˆì„ ìˆ˜ 없습니다! 규칙 í•„ë“œì— ì „ìž ë©”ì¼ ì£¼ì†Œë¥¼ 설정해주세요. invalidAddress=입력한 ì „ìžë©”ì¼ ì£¼ì†Œê°€ 잘못ë˜ì–´ 있습니다. 받는 ì‚¬ëžŒì˜ ì´ë¦„으로 설정해서는 안ë˜ê³  ì „ìž ë©”ì¼ ì£¼ì†Œë§Œ 가능합니다. 예:\n 잘못ë¨: Some Name \n올바름: some.name@address.net noCurlyBrackets=중괄호 {} 는 특별한 ì˜ë¯¸ë¥¼ 가지기 ë•Œë¬¸ì— ì „ìž ë©”ì¼ ì£¼ì†Œì—서 ì‚¬ìš©ë  ìˆ˜ 없습니다. ì´ ê·œì¹™ì— ì˜í•´ ì¼ì¹˜ë˜ëŠ” 다른 í•­ëª©ì„ ì°¾ìœ¼ë ¤ë©´, '받는 ì‚¬ëžŒì´ ìœ„ì˜ ì£¼ì†Œì™€ ...' ì˜µì…˜ì„ ì‚¬ìš©í•˜ì„¸ìš”.\në„ì›€ë§ ë²„íŠ¼ì„ ëˆ„ë¥´ë©´ ë” ìƒì„¸í•œ 정보를 보실 수 있습니다. # Strings used in enigmailRulesEditor.js never=í•˜ì§€ì•ŠìŒ always=í•­ìƒ possible=가능 deleteRule=ì •ë§ë¡œ ì„ íƒí•œ ë£°ì„ ì‚­ì œí•©ë‹ˆê¹Œ? nextRcpt=(ë‹¤ìŒ ë°›ëŠ” 사람으로) negateRule=안 # Strings used in enigmailSearchKey.js needOnline=ì„ íƒí•œ ê¸°ëŠ¥ì€ ì˜¤í”„ë¼ì¸ 모드ì—서는 사용할 수 없습니다. 온ë¼ì¸ì—서 다시 시ë„í•´ 주십시오. protocolNotSupported=ì„ íƒí•œ 프로토콜 '%S://'는 OpenPGP 키 다운로드를 ì§€ì›í•˜ì§€ 않습니다. gpgkeysDisabled='extensions.enigmail.useGpgKeysTool' ì˜µì…˜ì„ í™œì„±í™” 하면 ë„ì›€ì´ ë  ê²ƒ 같습니다. noKeyserverConn=키 서버 %S ì— ì ‘ì† í•  수 없습니다. keyDownloadFailed=키 서버ì—서 키 다운로드를 실패했습니다. ìƒíƒœ 메시지:\n%S internalError=ë‚´ë¶€ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 키가 다운로드ë˜ê±°ë‚˜ 가져오기할 수 없었습니다. noKeyFound=죄송합니다. ì§€ì •ëœ ê²€ìƒ‰ ê¸°ì¤€ì— ì¼ì¹˜í•˜ëŠ” 키를 ì°¾ì„ ìˆ˜ 없었습니다.\n키 ID는 ì•žìª½ì— \\"0x\\"ê°€ 붙어야만 함 (예:0xABCDEF12)ì„ ì£¼ì˜í•´ì£¼ì„¸ìš”. # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=키 서버ì—서 검색 í˜¹ì€ ë‹¤ìš´ë¡œë“œì— ì‹¤íŒ¨: gpgkeys_%S 는 ì‹¤í–‰ë  ìˆ˜ 없었습니다. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=ì†Œìœ ìž ì‹ ë¢° 설정 실패 # Strings in enigmailSignKeyDlg.js signKeyFailed=키 서명 실패 alreadySigned.label=주ì˜: %S 키는 ì´ë¯¸ ì„ íƒí•œ 비밀키로 서명ë˜ì–´ 있습니다. # Strings in enigmailKeyManager.js keyMan.loadingKeys=키를 불러오는 중, 잠시만 기다려주세요 ... keyValid.unknown=ì•Œìˆ˜ì—†ìŒ keyValid.invalid=무효 keyValid.disabled=비활성 keyValid.revoked=íê¸°ë¨ keyValid.expired=ë§Œë£Œë¨ keyValid.noSubkey=유효한 서브키 ì—†ìŒ keyTrust.untrusted=신뢰안함 keyTrust.marginal=최소 keyTrust.full=ì¶©ë¶„ keyTrust.ultimate=완전 keyTrust.group=(그룹) keyType.public=공개 keyType.publicAndSec=공개/비밀 keyMan.enableKey=키 활성 keyMan.disableKey=키 비활성 userAtt.photo=ì‚¬ìš©ìž ì†ì„± (JPEG ì´ë¯¸ì§€) asciiArmorFile=보호형 ASCII íŒŒì¼ (*.asc) gnupgFile=GnuPG íŒŒì¼ saveRevokeCertAs=í기 ì¦ëª…서 ìƒì„± & 저장 revokeCertOK=í기 ì¦ëª…서가 성공ì ìœ¼ë¡œ ìƒì„±ë¬ìŠµë‹ˆë‹¤. ì´ ì¦ëª…서는 공개키를 무효로 하려는 경우, 예를 들어 비밀 키를 잃어버리게 ë˜ëŠ” 경우, 사용할 수 있습니다.\n\nì´ ì¦ëª…서를 CD나 플로피 디스í¬ì™€ ê°™ì´ ì•ˆì „í•˜ê²Œ 저장해 ë†“ì„ ìˆ˜ 있는 미디어로 옮겨놓아 주시기 ë°”ëžë‹ˆë‹¤. 만약 누군가가 ì´ í기 ì¦ëª…ì„œì— ì ‘ê·¼í•  수 있게ë˜ë©´ ì´ë¥¼ 사용해서 키를 사용할 수 없는 ìƒíƒœë¡œ 만들어버릴 수 있습니다. revokeCertFailed=í기 ì¦ëª…서가 ìƒì„±ë˜ì§€ 않았습니다. addUidOK=ì‚¬ìš©ìž ID 추가 성공 addUidFailed=ì‚¬ìš©ìž ID 추가 실패 noKeySelected=ì„ íƒí•œ ìž‘ì—…ì„ ì‹¤í–‰í•˜ë ¤ë©´ ì ì–´ë„ í•˜ë‚˜ì˜ í‚¤ë¥¼ ì„ íƒí•´ 주셔야 합니다 exportToFile=파ì¼ë¡œ 공개키 내보내기 exportSecretKey=저장한 OpenPGP 키 파ì¼ì— 비밀키를 í¬í•¨ì‹œí‚¤ê² ìŠµë‹ˆê¹Œ? saveKeysOK=키가 성공ì ìœ¼ë¡œ 저장ë˜ì—ˆìŠµë‹ˆë‹¤ saveKeysFailed=키 저장하기 실패 importKeysFailed=키 ê°€ì ¸ì˜¤ê¸°ì— ì‹¤íŒ¨ enableKeyFailed=키 활성화/비활성화 실패 specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec noSecretKeys=비밀키가 발견ë˜ì§€ 않습니다.\n\n지금 ë³¸ì¸ ì†Œìœ ê°€ ë  í‚¤ë¥¼ ìƒì„±í•˜ì‹œê² ìŠµë‹ˆê¹Œ? sendKeysOk=키 보내기 성공 sendKeysFailed=키 보내기 실패 receiveKeysOk=키 ì—…ë°ì´íЏ 성공 receiveKeysFailed=키 다운로드 실패 importFromClip=í´ë¦½ë³´ë“œì—서 키를 가져오시겠습니까? copyToClipbrdFailed=ì„ íƒí•œ 키를 í´ë¦½ë³´ë“œì— 복사할 수 없습니다. copyToClipbrdOK=í´ë¦½ë³´ë“œì— 키 ë³µì‚¬ë¨ deleteSecretKey=ê²½ê³ ï¼šë‹¹ì‹ ì€ ë¹„ë°€í‚¤ë¥¼ 삭제하려고 하고 있습니다!\në‹¹ì‹ ì˜ ë¹„ë°€í‚¤ë¥¼ ì‚­ì œí–ˆì„ ê²½ìš°, 해당 키로 ì•”í˜¸í™”ëœ ëª¨ë“  메시지를 복호화 í•  수 없으며, 당신 키를 íì§€í•˜ëŠ”ë° í•„ìš”í•œ íì§€ ì¸ì¦ì„œë„ ë”는 만들 수 없습니다.\n\nì •ë§ë¡œ 비밀키와 공개키 양쪽 모ë‘를 삭제합니까?\n'%S' deleteMix=ê²½ê³ ï¼šë‹¹ì‹ ì€ ë¹„ë°€í‚¤ë¥¼ 삭제하려고 하고 있습니다!\në‹¹ì‹ ì˜ ë¹„ë°€í‚¤ë¥¼ ì‚­ì œí–ˆì„ ê²½ìš°, 해당 키로 ì•”í˜¸í™”ëœ ëª¨ë“  메시지를 복호화 í•  수 없습니다.\n\nì •ë§ë¡œ 비밀키와 공개키 양쪽 모ë‘를 삭제합니까? deletePubKey=공개키를 삭제합니까?\n'%S' deleteSelectedPubKey=공개키를 삭제합니까? deleteKeyFailed=키가 ì‚­ì œë˜ì§€ 않았습니다. revokeKeyOk=키가 íì§€ë˜ì—ˆìŠµë‹ˆë‹¤. 만약 키 ì„œë²„ì— ë‹¹ì‹ ì˜ ê³µê°œí‚¤ê°€ 있다면, 다시 업로드하시기를 권장합니다. 그렇게 해주면 다른 ì‚¬ëžŒë“¤ì´ í•´ë‹¹ 키가 íì§€ëœ ê²ƒì„ ì•Œ 수 있습니다. revokeKeyFailed=키가 íì§€ë  ìˆ˜ 없습니다. refreshAllQuestion=키를 í•˜ë‚˜ë„ ì„ íƒí•˜ì§€ 않았습니다. 모든 키를 새로고칠까요? refreshKey.warn=경고: í‚¤ì˜ ê°¯ìˆ˜ë‚˜ 회선 ì†ë„ì—ë”°ë¼, 모든 키 ìƒˆë¡œê³ ì¹¨ì€ ìƒë‹¹í•œ ì‹œê°„ì´ ê±¸ë¦¬ëŠ” ìž‘ì—…ì´ ë  ìˆ˜ 있습니다! keyMan.button.exportSecKey=비밀키 내보내기(&E) keyMan.button.exportPubKey=공개키만 내보내기(&P) keyMan.button.import=가져오기(&I) keyMan.button.refreshAll=모든 키 새로고침(&R) keyMan.button.revokeKey=키 í기(&R) keylist.noOtherUids=다른 ì‹ ì›ì´ ì—†ìŒ keylist.hasOtherUids=별명: keylist.noPhotos=사진 ì—†ìŒ keylist.hasPhotos=사진 # Strings in enigmailManageUidDlg.xul changePrimUidFailed=주 ì‚¬ìš©ìž ID 변경 실패 changePrimUidOK=주 ì‚¬ìš©ìž ID 변경 성공 deleteUidFailed=ì‚¬ìš©ìž ID %S ì‚­ì œ 실패 deleteUidOK=ì‚¬ìš©ìž ID %S ì‚­ì œ 성공 revokeUidFailed=ì‚¬ìš©ìž ID %S íì§€ 실패 revokeUidOK=ì‚¬ìš©ìž ID %S íì§€ 성공. 만약 키 ì„œë²„ì— ë‹¹ì‹ ì˜ ê³µê°œí‚¤ê°€ 있다면, 다시 업로드하시기를 권장합니다. 그렇게 해주면 다른 ì‚¬ëžŒë“¤ì´ í•´ë‹¹ 키가 íì§€ëœ ê²ƒì„ ì•Œ 수 있습니다. revokeUidQuestion=ì •ë§ë¡œ 유저 ID %S 를 í지합니까? deleteUidQuestion=ì •ë§ë¡œ 유저 ID %S 를 삭제합니까?\n\nì£¼ì˜ ë°”ëžë‹ˆë‹¤: 공개키를 키 ì„œë²„ì— ë³´ëƒˆë‹¤ë©´, ì‚¬ìš©ìž ID 삭제는 아무런 ë³€í™”ë„ ì¼ìœ¼í‚¤ì§€ 않습니다. ì´ëŸ´ 경우ì—는 'ì‚¬ìš©ìž ID í지하기\\"를 사용하셔야 합니다. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=공개 키 keyTypePrimary=주 키 keyTypeSubkey=서브키 keyTypePair=키 ìŒ keyExpiryNever=무기한 keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG # Strings in enigmailGenCardKey.xul keygen.started=잠시 기다려 주십시오. 키가 ìƒì„±ë˜ê³  있습니다... keygen.completed=키가 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. 새로운 키 ID: 0x%S keygen.keyBackup=%S 로 키를 백업 ë¨ keygen.passRequired=스마트 카드가 아닌 다른 ì €ìž¥ìž¥ì¹˜ì— ë°±ì—…ì„ ìƒì„±í•˜ë ¤ë©´, 패스프레ì´ì¦ˆë¥¼ 지정해 주세요. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=입력한 PINì´ ì¼ì¹˜í•˜ì§€ 않습니다. 다시 입력해 주세요. cardPin.minLength=PINì€ ì ì–´ë„ %S ë¬¸ìž ì´ìƒì˜ ì˜ë¬¸ìž ë˜ëŠ” 숫ìžì—¬ì•¼ë§Œ 합니다. cardPin.processFailed=PIN 변경 실패 # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=키 새로고침 중, 잠시 기다려 주십시오 ... keyserverProgress.uploading=키 업로드 중, 잠시 기다려 주십시오 ... keyserverTitle.refreshing=키 새로고침 keyserverTitle.uploading=키 업로드 # Strings in enigmailSetupWizard passphrase.min8keys=패스프레ì´ì¦ˆê°€ 최소 8 ìžëŠ” ë˜ì–´ì•¼í•©ë‹ˆë‹¤! setupWizard.reallyCancel=ì •ë§ë¡œ Enigmail 설정 마법사를 닫으시겠습니까? # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=ì´ë¦„ê³¼ ì „ìž ë©”ì¼ ì£¼ì†ŒëŠ” 반드시 입력해야 함 addUidDlg.nameMinLengthError=ì´ë¦„ì€ ìµœì†Œí•œ 5글ìž(5 bytes)ì´ìƒ ì´ì–´ì•¼ 함 addUidDlg.invalidEmailError=유효한 ì „ìž ë©”ì¼ ì£¼ì†Œë¥¼ 지정해야 함 addUidDlg.commentError=주ì„ì— ê°ì§„ 괄호는 사용할 수 ì—†ìŒ enigmail/lang/ko/help/000077500000000000000000000000001266701624400151355ustar00rootroot00000000000000enigmail/lang/ko/help/compose.html000066400000000000000000000100751266701624400174730ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/ko/help/editRcptRule.html000066400000000000000000000140071266701624400204330ustar00rootroot00000000000000 Enigmail ë„움ë§: OpenPGP 규칙 편집하기

Enigmail ë„움ë§

Enigmail 규칙 편집기 사용하기: OpenPGP 규칙 편집하기

규칙 편집기ì—서는 받는 사람별로 암호화, 서명 그리고 PGP/MIME í™œì„±í™”ì— ëŒ€í•œ 기본 ë°©ì¹¨ì„ ì •í•  수 있으며, ì–´ë–¤ OpenPGP 키를 사용할지를 지정할 수 있습니다. ì´ ëŒ€í™”ìƒìžì—서는 한 ì‚¬ëžŒì˜ ë°›ëŠ” 사람 그리고 매우 유사한 방법으로 받는 사람 ê·¸ë£¹ì— ëŒ€í•˜ì—¬ ê·œì¹™ì„ ì§€ì •í•  수 있습니다.

OpenPGP 규칙 설정 대ìƒ

받는 ì‚¬ëžŒì˜ ì „ìž ë©”ì¼ ì£¼ì†Œê°€ (ì´ë¦„ì„ ì œì™¸í•˜ê³ , 예를 들어, somebody@email.domainê³¼ ê°™ì´ ì£¼ì†Œë§Œ) 들어갑니다. 여러 ê°œì˜ ì „ìž ë©”ì¼ ì£¼ì†Œë¥¼ 공백 문ìžë¡œ 구분하여 지정할 수 있습니다. 주소는 ë„ë©”ì¸ ë§Œìœ¼ë¡œë„ êµ¬ì„±í•  수 있습니다. ì´ë ‡ê²Œ 하면 ë„ë©”ì¸ì— ì†í•˜ëŠ” ì–´ë–¤ ì£¼ì†Œì™€ë„ ì¼ì¹˜í•©ë‹ˆë‹¤. 예를 들어, @email.domain ì€ body@email.domain, somebody@email.domain, anybody@emaildomain, 등과 ì¼ì¹˜í•˜ê²Œ ë©ë‹ˆë‹¤.

받는 ì‚¬ëžŒì´ ìœ„ì˜ ì£¼ì†Œì™€ ... ì¼ì¹˜í•˜ë©´ ê·œì¹™ì„ ì ìš©í•©ë‹ˆë‹¤

ì´ ì˜µì…˜ì€ ì „ìž ë©”ì¼ ì£¼ì†Œì˜ ëŒ€ì¡°ë²•ì„ ë³€ê²½í•©ë‹ˆë‹¤. 만약 ë‹¤ìˆ˜ì˜ ì£¼ì†Œê°€ ìž…ë ¥ë˜ë©´ ì„¤ì •ì€ ìž…ë ¥ëœ ëª¨ë‘ì— ëŒ€í•´ ì ìš©ë©ë‹ˆë‹¤. ì•„ëž˜ì˜ ì˜ˆëŠ” ìœ„ì˜ í•„ë“œì— OpenPGP 규칙으로 ìž…ë ¥ëœ body@email.domain 를 기준으로 한 예시입니다.

  • 정확히: ì´ë ‡ê²Œ 설정ë˜ë©´, ê·œì¹™ì€ ì „ìž ë©”ì¼ body@email.domain (완전히 ì¼ì¹˜, ëŒ€ì†Œë¬¸ìž êµ¬ë¶„ 안함)ì— ëŒ€í•´ì„œë§Œ íš¨ë ¥ì„ ë°œìƒí•©ë‹ˆë‹¤.
  • ì¼ë¶€ë¶„: ì´ë ‡ê²Œ 설정ë˜ë©´, ì§€ì •ëœ ë¬¸ìžì—´ì´ ì¼ë¶€ë¶„ í¬í•¨ë˜ì–´ 있는 ì–´ë–¤ ì „ìž ë©”ì¼ ì£¼ì†Œê°€ ì¼ì¹˜ ë©ë‹ˆë‹¤. 예를 들어, anybody@email.domain ë˜ëŠ” body@email.domain.net
  • 시작부분ì´: ì´ë ‡ê²Œ 설정ë˜ë©´, ì§€ì •ëœ ë¬¸ìžì—´ë¡œ 시작하는 ì–´ë–¤ ì „ìž ë©”ì¼ ì£¼ì†Œê°€ ì¼ì¹˜ë©ë‹ˆë‹¤. 예를 들어, body@email.domain.net, body@email.domain-name.com.
  • ë부분ì´: ì´ë ‡ê²Œ 설정ë˜ë©´, ì§€ì •ëœ ë¬¸ìžì—´ë¡œ ë나는 ì–´ë–¤ ë©”ì¼ ì£¼ì†Œê°€ ì¼ì¹˜ë©ë‹ˆë‹¤. 예를 들어, anybody@email.domain, somebody@email.domain.

ì¼ì¹˜í•˜ëŠ” ì£¼ì†Œì— ëŒ€í•´ ì´ë‹¤ìŒ 규칙으로 ê³„ì† ì§„í–‰

ì´ ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë©´ ê·œì¹™ì„ ì •ì˜í•˜ê¸´ 하지만 ë‹¤ìŒ OpenPGP í‚¤ë“¤ì„ ì‚¬ìš©: í•„ë“œì— í‚¤ ID를 지정하지 ì•Šì•„ë„ ë˜ë¯€ë¡œ, ì „ìž ë©”ì¼ ì£¼ì†ŒëŠ” 메시지를 보낼 때 키를 검사하는 ìš©ë„로 사용ë©ë‹ˆë‹¤. 그리고 ê°™ì€ ì£¼ì†Œì— ëŒ€í•´ ì¼ì¹˜í•˜ëŠ” ê·œì¹™ì´ ê³„ì† ì ìš©ë©ë‹ˆë‹¤.

ì¼ì¹˜í•˜ëŠ” ì£¼ì†Œì— ëŒ€í•´ ë”는 ê·œì¹™ì„ ê³ ë ¤í•˜ì§€ 않ìŒ

ì´ ê¸°ëŠ¥ì„ í™œì„±í™”í•˜ë©´ ì´ ê·œì¹™ì´ ì¼ì¹˜í•˜ëŠ” ì£¼ì†Œì— ëŒ€í•´ 다른 ê·œì¹™ì´ ë”는 ì ìš©ë˜ì§€ 않습니다. 다시 ë§í•´, 규칙 처리 ìž‘ì—…ì€ ë‹¤ìŒ ë°›ëŠ” 사람으로 넘어갑니다.

ë‹¤ìŒ OpenPGP í‚¤ë“¤ì„ ì‚¬ìš©:

ì•”í˜¸í™”í•˜ëŠ”ë° ì‚¬ìš©í•  받는 사람 키를 ì„ íƒí•˜ë ¤ë©´ 키 ì„ íƒ (S)... ë²„íŠ¼ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. 바로 ìœ„ì˜ ë™ìž‘ê³¼ 마찬가지로 것처럼, ì¼ì¹˜ë˜ëŠ” ì£¼ì†Œì— ëŒ€í•´ ì´í›„ 다른 ê·œì¹™ì´ ì¶”ê°€ì ìœ¼ë¡œ ì ìš©ë˜ì§€ 않게ë©ë‹ˆë‹¤.

ì„œëª…ì— ëŒ€í•œ 기본 ì •ì±…

메시지 서명를 활성화 ë˜ëŠ” 비활성화 합니다. 메시지 작성 윈ë„ìš°ì—서 지정한 대로 í• ì§€, 무시하고 ì´ ê·œì¹™ì— ì„¤ì •ëœ ì •ì±…ì„ ì ìš©í• ì§€ë¥¼ 결정합니다. ì„ íƒ ê°€ëŠ¥í•œ ì •ì±…ì€ ë‹¤ìŒê³¼ 같습니다:

  • 하지 않ìŒ: 메시지 작성 윈ë„ìš°ì—서 ì„œëª…ì„ í•˜ë„ë¡ ì„ íƒ ë˜ì–´ìžˆì–´ë„ ì„œëª…ì„ í•˜ì§€ 않습니다 (다른 모든 ì •ì±…ì— ìš°ì„ í•©ë‹ˆë‹¤)
  • 예, 메시지 ìž‘ì„±ì‹œì— ì„ íƒë˜ì–´ 있는 경우: 메시지 작성 윈ë„ìš°ì—서 ì„ íƒí•œëŒ€ë¡œ 놔둡니다
  • í•­ìƒ: 메시지 작성 윈ë„ìš°ì—서 ì„œëª…ì„ í•˜ë„ë¡ ì„ íƒë˜ì–´ìžˆì§€ 않아ë„, 서명합니다

ì´ ì„œëª… ì„¤ì •ì€ ì¼ì¹˜í•˜ëŠ” 모든 ê·œì¹™ì— ì ìš©ë©ë‹ˆë‹¤. 규칙들 중 하나가 서명하기를 비활성화하면, í•­ìƒìœ¼ë¡œ ì„¤ì •í•´ë†“ì€ ë‹¤ë¥¸ ê·œì¹™ì´ ìžˆë”ë¼ë„, 메시지는 서명ë˜ì§€ 않습니다.

암호화

메시지 암호화를 활성화 ë˜ëŠ” 비활성화 합니다. 제공하는 ì •ì±…ê³¼ ê·¸ ì˜ë¯¸ëŠ” 메시지 ì„œëª…ì— ëŒ€í•œ 기본 ì •ì±…ì— ì„¤ëª…ëœ ê²ƒê³¼ 같습니다.

PGP/MIME

PGP/MIME (RFC 2156) 메시지 ì¸ì½”ë”©ì˜ ì‚¬ìš©ì—¬ë¶€ë¥¼ 활성화 ë˜ëŠ” 비활성화 합니다. PGP/MIMEê°€ 비활성화ë˜ë©´ 메시지는 "ì¸ë¼ì¸ 형ì‹"으로 ì¸ì½”딩ë©ë‹ˆë‹¤. 제공하는 ì •ì±…ê³¼ ê·¸ ì˜ë¯¸ëŠ” 메시지 ì„œëª…ì— ëŒ€í•œ 기본 ì •ì±…ì— ì„¤ëª…ëœ ê²ƒê³¼ 같습니다.

ê·œì¹™ë“¤ì€ OpenPGP 규칙 편집기 ë‚´ 목ë¡ì—서 í‘œì‹œëœ ìˆœì„œë¡œ 처리ë©ë‹ˆë‹¤. ì–´ë–¤ 한 ê·œì¹™ì´ ë°›ëŠ” 사람과 ì¼ì¹˜í•˜ê³  OpenPGP 키 ID를 í¬í•¨í•˜ëŠ” 경우, 추가ì ìœ¼ë¡œ 키 ID를 사용하려고 지정해ë„, ì´í›„ ê·œì¹™ì„ ì²˜ë¦¬í•  때 ê·¸ 받는 ì‚¬ëžŒì€ ë” ê³ ë ¤ë˜ì§€ 않습니다.


추가 ë„움ë§ì€ Enigmail 받는 사람별 설정 페ì´ì§€ì—서 ì–»ì„ ìˆ˜ 있습니다.

enigmail/lang/ko/help/initError.html000066400000000000000000000044241266701624400200040ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/ko/help/messenger.html000066400000000000000000000112011266701624400200060ustar00rootroot00000000000000 Enigmail ë„움ë§

Enigmail ë„움ë§

메시지를 ì½ì„ 때 Enigmail 사용하기

ë©”ì¸ ë©”ì¼ ìœˆë„ìš°ì˜ ë³µí˜¸í™” 버튼

ì´ ë²„íŠ¼ì€ ì—¬ëŸ¬ê°€ì§€ ìš©ë„로 ì‚¬ìš©ë  ìˆ˜ 있습니다: 복호화, ê²€ì¦, ë˜ëŠ” 공개키 가져오기. ì¼ë°˜ì ìœ¼ë¡œ 복화화/ê²€ì¦ì€ ìžë™ìœ¼ë¡œ ì´ë¤„지지만, ì„¤ì •ì„ í†µí•´ 비활성화 í•  수 있습니다. 그러나 실패할 경우, Enigmail ìƒíƒœ í‘œì‹œì¤„ì— ì§§ì€ ì˜¤ë¥˜ 메시지로 나타나게 ë©ë‹ˆë‹¤. 복호화 ë²„íŠ¼ì„ ëˆ„ë¥´ë©´, GnuPG 명령 í–‰ì—서 ë°œìƒë˜ëŠ” 출력 메시지를 í¬í•¨í•œ ë” ìžì„¸í•œ 오류 메시지를 ë³¼ 수 있습니다.

ë¨¸ë¦¬ë§ í‘œì‹œë¶€ì˜ íŽœê³¼ 키 ì•„ì´ì½˜

메시지 ë¨¸ë¦¬ë§ í‘œì‹œë¶€ì˜ íŒ¬ê³¼ 키 ì•„ì´ì½˜ì€ ì½ê³  있는 메시지가 서명 그리고/ë˜ëŠ” 암호화ë˜ì—ˆëŠ”ì§€ 그리고 ì„œëª…ì´ ì˜¬ë°”ë¥¸ ìƒíƒœì¸ì§€ë¥¼ (예를 들어, ì„œëª…ëœ í›„ 메시지가 변형ë˜ì§€ 않았는지 등) 나타냅니다. 만약 메시지가 변형ë˜ì—ˆìœ¼ë©´ 팬 ì•„ì´ì½˜ì€ ì„œëª…ì´ ì˜¬ë°”ë¥´ì§€ ì•Šì€ ìƒíƒœìž„ì„ í‘œì‹œí•˜ê¸° 위해 깨진 팬으로 ë°”ë€ë‹ˆë‹¤. 팬ì´ë‚˜ 키 ì•„ì´ì½˜ì—서 오른쪽 ë²„íŠ¼ì„ í´ë¦­í•˜ë©´ 다ìŒê³¼ ê°™ì€ ì˜µì…˜ì˜ ë©”ë‰´ê°€ 나타납니다:

  • OpenPGP 보안 ì •ë³´: ë©”ì‹œì§€ì— ëŒ€í•˜ì—¬ GnuPG 출력 ìƒíƒœë¥¼ ë³¼ 수 있습니다.
  • OpenPGP 보안 ì •ë³´ 복사: GnuPG 출력 ìƒíƒœë¥¼ í´ë¦½ë³´ë“œì— 복사합니다. 회신 ë©”ì‹œì§€ì— ë¶™ì—¬ë„£ê¸° ë“±ì˜ ìž‘ì—…ì— í™œìš©í•  수 있습니다.
  • OpenPGP Photo ID 보기: 공개 í‚¤ì— ì‚¬ì§„ì´ ë“¤ì–´ 있으면 메시지를 보낸 ì‚¬ëžŒì˜ Photo ID를 ë³¼ 수 있습니다. (ì´ ì˜µì…˜ì€ í‚¤ì— Photo IDê°€ 있는 경우ì—ë§Œ 활성화 ë©ë‹ˆë‹¤.)
  • S/MIME 보안 ì •ë³´: ë©”ì‹œì§€ì— ëŒ€í•œ S/MIME 보안 정보를 ë³¼ 수 있습니다.

만약 gpg.conf 파ì¼ì— keyserver-options auto-key-retrieve ì„¤ì •ì„ í•´ë†“ì§€ ì•Šì€ ìƒíƒœì—서 서명ë˜ê±°ë‚˜ ì•”í˜¸í™”ëœ ë©”ì‹œì§€ë¥¼ ì½ì–´ ë¨¸ë¦¬ë§ í‘œì‹œ ì˜ì—­ì˜ 팬 ì•„ì´ì½˜ì— 물ìŒí‘œê°€ 표시ë˜ëŠ” ê²ƒì„ ë³¼ 수 있는 경우, ë¨¸ë¦¬ë§ ì˜ì—­ì˜ Enigmail ìƒíƒœ í‘œì‹œì¤„ì€ ì„œëª…ëœ ë©”ì‹œì§€ì˜ ì¼ë¶€ë¶„; ì„¸ë¶€ì‚¬í•­ì„ ë³´ë ¤ë©´ 펜 ì•„ì´ì½˜ì„ í´ë¦­ìœ¼ë¡œ 표시하여 사용ìžì—게 알리고 메시지 êµ¬ì—­ì˜ ë©”ì‹œì§€ëŠ” 모든 OpenPGP 메시지 ë¸”ë¡ í‘œì‹œìžì™€ 서명 블ë¡ì„ 보여줄 것 입니다.

gpg.conf 파ì¼ì— keyserver-options auto-key-retrieve ì„¤ì •ì„ í•´ë†“ì€ ìƒíƒœì—서 기본 키 ì„œë²„ì— OpenPGP 키가 없는 경우ì—ë„ ì´ë ‡ê²Œ ë˜ëŠ” ê²ƒì„ ë³¼ 수 있습니다.

팬과 물ìŒí‘œ ì•„ì´ì½˜ì„ í´ë¦­í•˜ë©´ 키 ë§ì— 해당 키가 없다는 ê²ƒì„ ì•Œë ¤ì£¼ëŠ” ì°½ì´ ë‚˜íƒ€ë‚  것입니다. 확ì¸ì„ 누르면 보낸 ì‚¬ëžŒì˜ ê³µê°œí‚¤ë¥¼ 다운로드 í•  키 서버를 ì„ íƒí•  수 있는 키 서버 ëª©ë¡ ìœˆë„ìš°ê°€ 나타날 것 입니다.

사용하고ìží•˜ëŠ” 키 서버를 목ë¡ì„ 설정하려면, Enigmail → 설정 → 기본 탭으로 가셔서 키 서버 지정: ë°•ìŠ¤ì— ì½¤ë§ˆ(,)로 êµ¬ë¶„ëœ í‚¤ 서버 주소를 입력해주시기 ë°”ëžë‹ˆë‹¤. 목ë¡ì˜ 처ìŒì— 있는 키 서버가 기본으로 사용ë©ë‹ˆë‹¤.

ì•”í˜¸í™”ëœ ì²¨ë¶€ íŒŒì¼ / ì²¨ë¶€ëœ OpenPGP 키 가져오기

*.pgp, *.asc 그리고 *.gpg 확장ìžë¡œ ë˜ì–´ 있는 첨부 파ì¼ì€ Enigmailê°€ 특별히 취급할 수 있는 첨부파ì¼ë¡œì„œ ì¸ì‹ë©ë‹ˆë‹¤. 해당 첨부파ì¼ì— 오른쪽 í´ë¦­ì„ 하면 컨í…스트 ë©”ë‰´ì— ë‘ ê°€ì§€ 특수 메뉴가 활성화 ë©ë‹ˆë‹¤: 복호화 후 열기와 복호화 후 다른 ì´ë¦„으로 저장. 메시지를 열거나 저장하기 ì „ì— ì²¨ë¶€íŒŒì¼ì„ Enigmailì´ ë³µí˜¸í™”í•˜ê¸°ë¥¼ ì›í•˜ëŠ” 경우, ì´ ë‘ ë©”ë‰´ë¥¼ 사용하십시오. 첨부파ì¼ì´ OpenPGP 키 파ì¼ë¡œ ì¸ì‹ë˜ë©´, 사용ìžê°€ 키를 키 ë§ìœ¼ë¡œ 가져오기 í•  수 있ë„ë¡ í•  것입니다.


ì´í›„ ë„움ë§ì€ Enigmail OpenPGP ë„ì›€ë§ ì›¹ 페ì´ì§€ì—서 ì–»ì„ ìˆ˜ 있습니다.

enigmail/lang/ko/help/rulesEditor.html000066400000000000000000000060311266701624400203240ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/ko/help/sendingPrefs.html000066400000000000000000000047771266701624400204710ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/lt/000077500000000000000000000000001266701624400142135ustar00rootroot00000000000000enigmail/lang/lt/am-enigprefs.properties000066400000000000000000000001211266701624400207000ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP saugumas enigmail/lang/lt/enigmail.dtd000066400000000000000000001117341266701624400165040ustar00rootroot00000000000000 PASTABA: Rakto generavimas gali užtrukti kelias minutes. Neuždarykite programos kol vyksta rakto generavimas. Aktyviai narÅ¡ant ar atliekant operacijas kurios reikalauja intensyvaus disko naudojimo, rakto generavimo metu padÄ—s sukurti atsitiktinesnį raktÄ… ir pagreitins procesÄ…. JÅ«s bÅ«site įspÄ—tas kai rakto generavimas bus baigtas."> “ yra netinkamas"> PASTABA: Rakto generavimas gali užtrukti kelias minutes. Neuždarykite programos kol generuojamas raktas. Jums bus praneÅ¡ta kai raktas bus sugeneruotas."> Pastaba: Enigmail visada patikrins visų paskyrų ir tapatybių paraÅ¡us nepaisant ar įjungta ar iÅ¡jungta"> DÄ—kui jog naudojate Enigmail."> enigmail/lang/lt/enigmail.properties000066400000000000000000000633441266701624400201300ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail praneÅ¡ti enigConfirm=Enigmail patvirtinti enigError=Enigmail klaida enigPrompt=Enigmail įvedimas dlgYes=&Taip dlgNo=&Ne dlgKeepSetting=Prisiminti atsakymÄ… ir daugiau nebeklausti dlgNoPrompt=Daugiau neberodyti Å¡io praneÅ¡imo dlg.button.delete=&PaÅ¡alinti dlg.button.cancel=&AtÅ¡aukti dlg.button.close=&Užverti dlg.button.continue=&TÄ™sti dlg.button.skip=&Praleisti dlg.button.view=&PeržiÅ«ra repeatPrefix=\n\nÅ is įspÄ—jimas bus kartojamas %S repeatSuffixSingular=kartÄ…. repeatSuffixPlural=kartus. noRepeat=\n\nÅ is įspÄ—jimas nebus rodomas kol neatnaujinsite Enigmail. pgpNotSupported=Atrodo jÅ«s naudojate Enigmail kartu su PGP 6.x\n\nDeja, PGP 6.x turi daug problemų kurios neleidžia Enigmail teisingai veikti. Be to, Enigmail daugiau nepalaiko PGP 6.x; vietoj to naudokite GnuPG(GPG).\n\nJei reikia pagalbos pradedant naudoti GnuPG, pažiÅ«rÄ—kite Enigmail namų puslapio žinyne. passphraseCleared=SlaptafrazÄ— iÅ¡valyta. noPhotoAvailable=NÄ—ra nuotraukos debugLog.title=Enigmail derinimo žurnalas error.photoPathNotReadable=Kelias iki nuotraukos „%S“ neperskaitomas # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Å i nauja Enigmaio versija turi daug pakeitimų nustatymuose ir parinktyse. Mes bandÄ—me perkelti senus nustatymus į Å¡iÄ… naujÄ… versijÄ…. TaÄiau negalime apraÅ¡yti visų situacijų. PeržiÅ«rÄ—kite visus nustatymus ir parinktis. enigmailCommon.checkPreferences=Tikrinti nustatymus... usingVersion=Enigmail versija %S usingAgent=Å ifravimui ir iššifravimui naudojamas %S sukompiliuotas failas %S agentError=KLAIDA: Nepavyko pasiekti Enigmime tarnybos! accessError=Klaida bandant pasiekti Enigmail tarnybÄ… onlyGPG=Rakto generavimas veikia tik su GnuPG (ne su PGP)! keygenComplete=Raktas sugeneruotas! PasiraÅ¡ymui bus naudojama <%S> tapatybÄ—. revokeCertRecommended=Mes primygtinai rekomenduojame savo raktui sukurti atstatymo sertifikatÄ…. Å¡is sertifikatas galÄ—s bÅ«ti naudojamas paversti jÅ«sų raktÄ… negaliojanÄiu, pvz. jei pamesite savo slaptÄ… raktÄ… ar jis bus sukompromituotas. Ar norite dabar sukurti tokį sertifikatÄ…? keyMan.button.generateCert=&Generuoti sertifikatÄ… genCompleteNoSign=Raktas sÄ—kmingai sugeneruotas! genGoing=Raktas generuojamas! passNoMatch=SlaptafrazÄ—s nesutampa; įveskite dar kartÄ… passCheckBox=PažymÄ—kite žymimÄ…jį langelį jei raktui nenurodote slaptafrazÄ—s passUserName=Nurodykite naudotojo vardÄ…, Å¡iai tapatybei passSpaceProblem=DÄ—l techninių priežasÄių, jÅ«sų slaptafrazÄ— negali prasidÄ—ti ar baigtis tarpu. changePassFailed=Nepavyko pakeisti slaptafrazÄ—s. keyConfirm=Sugeneruoti viešą ir privatų raktus skirtus „%S“? keyMan.button.generateKey=&Generuoti raktÄ… keyAbort=Nutraukti raktų generavimÄ…? keyMan.button.generateKeyAbort=&Nutraukti raktų generavimÄ…? keyMan.button.generateKeyContinue=&TÄ™sti raktų generavimÄ…? expiryTooLong=Negalite sukurti rakto kurio galiojimas baigsis daugiau nei po 100 metų. expiryTooLongShorter=Negalite sukurti rakto kuris galioja daugiau nei 90 metų. expiryTooShort=JÅ«sų raktas turi galioti bent vienÄ… dienÄ…. dsaSizeLimit=DSA pasiraÅ¡ymo raktai ribojami iki 3072 bitų. Rakto dydis bus atitinkamai sumažintas. keyGenFailed=Sugeneruoti rakto nepavyko. Patikrinkite Enigmail terminalÄ… (Meniu Enigmail > Enigmail derinimas) jei norite gauti daugiau informacijos. setKeyExpirationDateFailed=Nepavyko pakeisti galiojimo datos # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail saugumo informacija\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Å io laiÅ¡ko priedai nebuvo pasiraÅ¡yti ar Å¡ifruoti*\n\n possiblyPgpMime=Galimai PGP/MIME Å¡ifruotas ar pasiraÅ¡ytas laiÅ¡kas; NorÄ—dami patikrinti, paspauskite „Iššifruoti“ mygtukÄ… noDecrypted=NÄ—ra iššifruoto laiÅ¡ko kurį galima bÅ«tų iÅ¡saugoti!\nNaudokite saugojimo komandÄ… iÅ¡ Failo meniu noMessage=NÄ—ra laiÅ¡ko saugojimui! useButton=Paspauskite „Iššifruoti“ mygtukÄ… norÄ—dami iššifruoti laiÅ¡kÄ… saveHeader=Enigmail: IÅ¡saugoti iššifruotÄ… laiÅ¡kÄ… saveAttachmentHeader=Enigmail: iÅ¡saugoti iššifruotÄ… priedÄ… noTempDir=Nepavyko rasti laikino aplanko į kurį galima bÅ«tų raÅ¡yti\nNustatykite TEMP aplinkos kintamÄ…jį attachmentPgpKey=Priedas „%S“ kurį bandote atverti yra OpenPGP rakto failas.\n\nPaspauskite „Importuoti“ ir bus importuoti visi jame esantys raktai arba „Rodymas“ ir narÅ¡yklÄ—s lange bus parodytas failo turinys beginPgpPart=**********Å IFRUOTOS ar PASIRAÅ YTOS DALIES PRADŽIA********** endPgpPart=**********Å IFRUOTOS ar PASIRAÅ YTOS DALIES PABAIGA********** notePartEncrypted=Enigmail: *LaiÅ¡ko dalys NEBUVO pasiraÅ¡ytos ar užšifruotos* noteCutMessage=Enigmail: *Rastos kelios laiÅ¡ko dalys -- iššifravimas/tikrinimas nutrauktas* decryptOkNoSig=Ä®spÄ—jimas\n\nIššifravimas sÄ—kmingas, bet nepavyko patikrinti paraÅ¡o msgOvl.button.contAnyway=&Vis tiek tÄ™sti signature.verifiedOK=Priedo %S paraÅ¡as sÄ—kmingai patikrintas signature.verifyFailed=Priedo %S paraÅ¡as nepatvirtintas attachment.noMatchToSignature=ParaÅ¡o faile nepavyko surasti atitikmens priedui „%S“ attachment.noMatchFromSignature=Nepavyko surasti paraÅ¡o failo „%S“ priedui keysToExport=Pasirinkite OpenPGP raktus kuriuos įterpti keysToUse=Pasirinkite kurį OpenPGP raktÄ…(-us) naudoti %S pubKey=VieÅ¡as raktas skirtas %S\n windowLocked=RaÅ¡ymo langas užrakintas; siuntimas atÅ¡auktas sendUnencrypted=Nepavyko paleisti Enigmail.\nSiųsti neÅ¡ifruotÄ… praneÅ¡imÄ…? composeSpecifyEmail=Nurodykite savo pagrindinį el. paÅ¡to adresÄ…, kuris bus naudojamas pasirenkant raktÄ… iÅ¡einantiems laiÅ¡kams.\nJei paliksite tuÅ¡ÄiÄ…, NUO laukelio adresas bus naudojamas pasirinkti raktÄ…. sendingHiddenRcpt=Å is laiÅ¡kas turi BCC(nematomÄ… kopijÄ…) gavÄ—jų. Jei Å¡is laiÅ¡kas Å¡ifruotas, įmanoma paslÄ—pti BCC gavÄ—jus, bet kai kurių programų naudotojai (pvz. PGP Corp) negalÄ—s iššifruoti laiÅ¡ko. Mes rekomenduojame vengti BCC laiÅ¡kų su Å¡ifruotais praneÅ¡imais. sendWithHiddenBcc=PaslÄ—pti BCC gavÄ—jus sendWithShownBcc=Å ifruoti įprastai sendingNews=Užšifruoto siuntimo operacija atÅ¡aukta.\n\nÅ¡is laiÅ¡kas negali bÅ«ti užšifruotas, nes yra naujienų grupių gavÄ—jų. Persiųskite šį laiÅ¡kÄ… neÅ¡ifruojant. sendToNewsWarning=Ä®spÄ—jimas: jÅ«s tuoj iÅ¡siųsite užšifruotÄ… laiÅ¡kÄ… naujienų grupei.\n\nTai nepatartina, nes toks veiksmas turi prasmÄ™ tik tada jei visi nariai gali iššifruoti laiÅ¡kÄ… t.y. laiÅ¡kas turi bÅ«ti Å¡ifruotas su visų grupÄ—s narių raktais. šį laiÅ¡kÄ… siųskite tik tada jei žinote kÄ… darote.\n\nTÄ™sti? hasHTML=HTML laiÅ¡ko įspÄ—jimas:\nÅ¡iame laiÅ¡ke gali bÅ«ti HTML, kuri gali sukelti problemų pasiraÅ¡ant/Å¡ifruojant. Norint to iÅ¡vengti ateityje, jÅ«s turÄ—tumÄ—te laikyti SHIFT kai spaudžiate „RaÅ¡yti/Atsakyti“ mygtukÄ…, pasiraÅ¡ytam laiÅ¡kui iÅ¡siųsti.\nJei visada pasiraÅ¡ote laiÅ¡kÄ…, nustatymuose turÄ—tumÄ—te atžymÄ—ti „Kurti laiÅ¡kus su HTML“, norint visam laikui iÅ¡jungti HTML laiÅ¡kus Å¡iai paÅ¡to paskyrai. strippingHTML=LaiÅ¡ke yra HTML formatavimo informacija, kuri bus prarasta konvertuojant į paprastÄ… tekstÄ…, pasiraÅ¡ymo/Å¡ifravimo metu. TÄ™sti? msgCompose.button.sendAnyway=&Vistiek siųsti attachWarning=Å io laiÅ¡ko priedai nÄ—ra vietiniai, jie negali bÅ«ti užšifruoti. NorÄ—dami užšifruoti Å¡iuos priedus, iÅ¡saugokite juos savo kompiuteryje ir pridÄ—kite Å¡iuos failus. Ar vistiek norite siųsti šį laiÅ¡kÄ…? quotedPrintableWarn=JÅ«s įjungÄ—te „quoted-printable“ kodavimÄ… siunÄiamiems laiÅ¡kams. Tai gali įtakoti neteisingÄ… jÅ«sų laiÅ¡ko iššifravimÄ… ir/ar patikrinimÄ….\nAr norite dabar iÅ¡jungti „quoted-printable“ siunÄiamiems laiÅ¡kams? minimalLineWrapping=JÅ«s nustatÄ—te eiluÄių laužymÄ… %S simboliais. Norint teisingai užšifruoti ar/ir pasiraÅ¡yti, Å¡i vertÄ— turi bÅ«ti bent 68.\nAr norite dabar nustatyti eiluÄių laužymÄ… ties 68 simboliais? warning=Ä®spÄ—jimas signIconClicked=JÅ«s pakeitÄ—te pasiraÅ¡ymÄ…. Nepaisant to, kol jÅ«s raÅ¡ote šį laiÅ¡kÄ…, pasiraÅ¡ymo (de)aktyvavimas daugiau nepriklauso nuo Å¡ifravimo (de)aktyvacijos. pgpMime_sMime.dlg.text=JÅ«s įjungÄ—te PGP/MIME ir S/MIME kartu. Deja vienu metu neįmanoma naudoti abiejų protokolų. Pasirinkite arba PGP/MIME arba S/MIME. pgpMime_sMime.dlg.pgpMime.button=Naudoti &PGP/MIME pgpMime_sMime.dlg.sMime.button=Naudoti &S/MIME errorKeyUnusable=Å is el. paÅ¡to adresas ar rakto ID „%S“ neatitinka jokio galiojanÄio ir tinkamo OpenPGP rakto.\nÄ®sitikinkite jog turite tinkamÄ… OpenPGP raktÄ… ir jÅ«sų nustatymai nurodo bÅ«tent šį raktÄ…. # note: should end with double newline: sendAborted=Siuntimo operacija nutraukta.\n\n statPGPMIME=PGP/MIME statSigned=PASIRAÅ YTAS statEncrypted=Å IFRUOTAS statPlain=NEPASIRAÅ YTAS ir NEÅ IFRUOTAS offlineSave=IÅ¡saugoti %S laiÅ¡kÄ… %S neiÅ¡siųstų laiÅ¡kų aplanke? onlineSend=IÅ¡siųsti %S laiÅ¡kÄ… į %S? encryptKeysNote=Pastaba: laiÅ¡kas užšifruotas su Å¡io naudotojo ID/Raktu: %S signFailed=Klaida Enigmail; Nepavyko užšifruoti/pasiraÅ¡yti; siųsti neÅ¡ifruotÄ… laiÅ¡kÄ…? msgCompose.button.sendUnencrypted=&Siųsti neÅ¡ifruotÄ… laiÅ¡kÄ… recipientsSelectionHdr=Pasirinkite gavÄ—jus Å¡ifravimui configureNow=Pasirinktai tapatybei jÅ«s nenustatÄ—te Enigmail saugumo. Ar norite tai padaryti dabar? # should not be used anymore: encryptYes=LaiÅ¡kas bus užšifruotas encryptNo=LaiÅ¡kas nebus užšifruotas # should not be used anymore: signYes=LaiÅ¡kas bus pasiraÅ¡ytas signNo=LaiÅ¡kas nebus pasiraÅ¡ytas # should not be used anymore pgpmimeYes=Bus naudojama PGP/MIME pgpmimeNo=Bus naudojama „Inline PGP“ rulesConflict=Aptiktos nesuderinamos kiekvienam-gavÄ—jui taisyklÄ—s\n%S\n\nSiųsti laiÅ¡kÄ… su Å¡iais nustatymais? msgCompose.button.configure=&KonfigÅ«ruoti msgCompose.button.send=&Siųsti laiÅ¡kÄ… msgCompose.button.save=&IÅ¡saugoti laiÅ¡kÄ… # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=VieÅ¡as rakto %S paraÅ¡as turi bÅ«ti patikrintas clickDecrypt=; paspauskite „Iššifruoti“ mygtukÄ… clickDecryptRetry=; paspauskite „Iššifruoti“ mygtukÄ…, jei norite pabandyti dar kartÄ… msgPart=LaiÅ¡ko dalis %s msgSigned=pasiraÅ¡ytas msgEncrypted=užšifruotas msgSignedAndEnc=pasiraÅ¡yta ir užšifruota unverifiedSig=Nepatvirtintas paraÅ¡as incompleteDecrypt=Nepilnas iššifravimas needKey=Klaida - reikia slapto rakto norint iššifruoti laiÅ¡kÄ… failedDecrypt=Klaida - nepavyko iššifruoti badPhrase=Klaida - bloga slaptafrazÄ— failedDecryptVerify=Klaida - iššifravimas/patikrinimas nepavyko viewInfo=; Rodymas > LaiÅ¡ko saugumo informacija, detalesnei informacijai decryptedMsg=Iššifruotas laiÅ¡kas decryptedMsgWithFormatError=Iššifruotas laiÅ¡kas (atstatytas sugadintas PGP laiÅ¡ko formatas, jį greiÄiausiai sugadino senas Exchange serveris, gali bÅ«ti neįmanoma perskaityti laiÅ¡ko) locateGpg=Surasti GnuPG programÄ… invalidGpgPath=Nurodytam kelyje GnuPG negali bÅ«ti įvykdyta. Enigmail iÅ¡jungta kol jÅ«s pakeisite keliÄ… iki GnuPG arba iÅ¡ naujo paleisite programÄ…. warningsAreReset=Visi įspÄ—jimai atstatyti. prefs.gpgFound=GnuPG rasta %S prefs.gpgNotFound=Nepavyko rasti GnuPG prefs.warnAskNever=Ä®spÄ—jimas: įjungus Å¡iÄ… parinkty nebus praneÅ¡ama jei vienam iÅ¡ gavÄ—jų nÄ—ra rakto ir laiÅ¡kas neÅ¡ifruotas! prefs.warnIdleTimeForUnknownAgent=Nepavyko prisijungti prie gpg-agent. Gal jÅ«sų sistema slaptafrazÄ—s įvedimui naudoja specialų įrankį, tokį kaip gnome-keyring ar seahorse-agent. DÄ—ja Enigmail negali valdyti įvedimo laiko jÅ«sų įrankyje. Laiko nustatymai Enigmail programoje yra ignoruojami. prefEnigmail.oneKeyserverOnly=Klaida - galite nurodyti tik vienÄ… raktų serverį, automatiniam trÅ«kstamų OpenPGP raktų parsiuntimui. enterAdminPin=Ä®veskite SmartCard ADMIN PIN enterCardPin=Ä®veskite SmartCard PIN notInit=Klaida - Enigmail tarnyba nepaleista badCommand=Klaida - Å¡ifravimo komanda nepavyko cmdLine=komandinÄ— eilutÄ— ir iÅ¡vestis: notRequired=Klaida - Å¡ifravimas nereikalingas notComplete=Klaida - rakto generavimas dar nebaigtas invalidEmail=Klaida - netinkamas el. paÅ¡to adresas(-ai) noPassphrase=Klaida - nepateikta slaptafrazÄ— noPGPblock=Klaida - nerastas tinkamas „armored OpenPGP“ duomenų blokas unverifiedReply=Cituojama laiÅ¡ko dalis (atsakyme) turbÅ«t buvo pakeista sigMismatch=Klaida - paraÅ¡as nesutampa cantImport=Klaida importuojant viešą raktÄ…\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Rasta SmartCard %S jÅ«sų įrenginyje negali bÅ«ti panaudota skaitant laiÅ¡kÄ….\nÄ®dÄ—kite savo SmartCard %S ir pakartokite operacijÄ…. sc.insertCard=Operacijai atlikti reikia SmartCard %S.\nÄ®dÄ—kite reikalingÄ… SmartCard ir pakartokite operacijÄ…. sc.removeCard=Operacijai atlikti reikia jog SmartCard nebÅ«tų įrenginyje.\nIÅ¡imkite SmartCard ir pakartokite operacijÄ…. sc.noCardAvailable=JÅ«sų įrenginyje SmartCard nerasta\nÄ®dÄ—kite jÅ«sų SmartCard ir pakartokite operacijÄ…. sc.noReaderAvailable=JÅ«sų SmartCard įrenginys nepasiekiamas\nPrijunkite SmartCard įrenginį, įdÄ—kite kortelÄ™ ir pakartokite operacijÄ…. gpgNotFound=Nepavyko rasti GnuPG programos „%S“.\nÄ®sitikinkite jog Enigmail nustatymuose nurodÄ—te teisingÄ… GnuPG keliÄ…. gpgNotInPath=Nepavyko rasti GnuPG vykdomojo failo PATH.\nÄ®sitikinkite jog Enigmail nustatymuose nurodÄ—te teisingÄ… GnuPG keliÄ…. gpgAgentNotStarted=Nepavyko paleisti gpg-agent programos, kuri reikalinga jÅ«sų GnuPG %S versijai. prefUntrusted=NEPATIKIMAS prefRevoked=ATÅ AUKTAS RAKTAS prefExpiredKey=NEGALIOJANTIS RAKTAS prefExpired=PASIBAIGĘS prefGood=GERAS paraÅ¡as iÅ¡ %S prefBad=BLOGAS paraÅ¡as iÅ¡ %S failCancel=Klaida - rakto gavimÄ… atÅ¡aukÄ— naudotojas failNoServer=Klaida - nenurodytas raktų serveris iÅ¡ kurio reikia gauti raktÄ… failNoID=Klaida - nenurodyta rakto ID kurį reikia gauti failKeyExtract=Klaida - rakto iÅ¡gavimo komanda nepavyko notFirstBlock=Klaida - pirmas OpenPGP blokas nÄ—ra vieÅ¡as raktas importKeyConfirm=Importuoti viešą(-us) raktÄ…(-us) įterptus laiÅ¡ke? failKeyImport=Klaida - nepavyko importuoti rakto fileWriteFailed=Nepavyko įraÅ¡yti į failÄ… %S importKey=Importuoti viešą raktÄ… %S iÅ¡ raktų serverio: uploadKey=Siųsti viešą raktÄ… %S į raktų serverį: keyId=Rakto ID keyAndSigDate=Rakto ID: 0x%S / PasiraÅ¡yta: %S keyFpr=Rakto pirÅ¡to antspaudas: %S noEmailProvided=JÅ«s nepateikÄ—te el. paÅ¡to adreso! keyAlreadySigned=Raktas jau pasiraÅ¡ytas, negalite jo pasiraÅ¡yti antrÄ… kartÄ…. gnupg.invalidKey.desc=Raktas %S nerastas arba netinkamas. Papildomas raktas gali bÅ«ti nebegaliojantis. selKeyExpired=pasibaigÄ™s galiojimas %S createdHeader=Sukurtas atLeastOneKey=Nepasirinktas raktas! Turite pasirinkti bent vienÄ… raktÄ… patvirtinant šį dialogÄ… fewerKeysThanRecipients=JÅ«s pasirinkote mažiau raktų nei yra gavÄ—jų. Ar jÅ«s įsitikinÄ™ jog raktų, kuriuos reikia užšifruoti, sÄ…raÅ¡as pilnas? userSel.button.goBack=Pasirinkti daugiau raktų userSel.secretKeySel.title=Pasirinkite slaptÄ… OpenPGP raktÄ… laiÅ¡kų pasiraÅ¡ymui # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Siųsti vÄ—liau # Strings used in enigmailAttachmentDialog.js pgpMimeNote=PASTABA: PGP/MIME palaikoma riboto paÅ¡to klientų skaiÄiaus! Ant Windows tik Mozilla/Thunderbird, Sylpheed, Pegasus ir Mulberry palaiko šį standartÄ…; ant Linux/UNIX ir MAC OS X populiariausi klientai palaiko jį. Jei esate neįsitikinÄ™, pasirinkite %S parinkty. first=pirmas second=antras # Strings used in am-enigprefs.js encryptKeyHeader=Pasirinkite OpenPGP raktÄ… Å¡ifravimui identityName=TapatybÄ—: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=JÅ«s įjungÄ—te Å¡ifravimÄ…, bet nepasirinkote rakto. Norint užšifruoti laiÅ¡kus siunÄiamus %S, jÅ«s turite nurodyti vienÄ… ar kelis tinkamus raktus iÅ¡ jÅ«sų raktų sÄ…raÅ¡o. Ar norite iÅ¡jungti Å¡ifravimÄ… skirtÄ… %S? noKeyToUse=(nÄ—ra - be Å¡ifravimo) noEmptyRule=TaisyklÄ— negali bÅ«ti tuÅ¡Äia! Nurodykite el. paÅ¡to adresÄ… taisyklÄ—s laukelyje. invalidAddress=El. paÅ¡to adresas(-ai) kuriuos įvedÄ—te netinkami. JÅ«s neturÄ—tumÄ—te nurodyti gavÄ—jų vardų, tik el. paÅ¡to adresus. Pvz.:\nNetinkamas: Vardenis Pavardenis \nTinkamas: vardenis.pavardenis@adresas.lt noCurlyBrackets=Laužtiniai skliaustai {} turi specialiÄ… reikÅ¡mÄ™ ir neturÄ—tų bÅ«ti naudojami el. paÅ¡to adresuose. Jei norite pakeisti atitinkamÄ… elgesį Å¡iai taisyklei, naudokite „Pritaikyti taisyklÄ™ jei gavÄ—jas ...“ parinkty.\nDaugiau informacijos žinyne. # Strings used in enigmailRulesEditor.js never=Niekada always=Visada possible=Ä®manoma deleteRule=Tikrai iÅ¡trinti pasirinktÄ… taisyklÄ™? nextRcpt=(Sekantis gavÄ—jas) negateRule=Ne addKeyToRule=PridÄ—ti raktÄ… %S (%S) į kiekvienam-gavÄ—jui taisyklÄ™ # Strings used in enigmailSearchKey.js needOnline=Pasirinkta funkcija neprieinama dirbant atsijungus. Prisijunkite ir bandykite dar kartÄ…. protocolNotSupported=JÅ«sų pasirinktas protokolas „%S://“ netinkamas parsiųsti OpenPGP raktus. gpgkeysDisabled=TurÄ—tų pagelbÄ—ti „extensions.enigmail.useGpgKeysTool“ parinkties įjungimas. noKeyserverConn=Nepavyko prisijungti prie raktų serverio %S. keyDownloadFailed=Nepavyko parsiųsti rakto iÅ¡ raktų serverio. BÅ«senos praneÅ¡imas:\n%S internalError=Kilo vidinÄ— klaida. Raktų importuoti ar parsiųsti nepavyko. noKeyFound=Apgailestaujame, nepavyko rasti rakto kuris atitiktų jÅ«sų nurodytus kriterijus.\nTurÄ—kite omeny jog rakto ID turi prasidÄ—ti „0x“ (pvz. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Nepavyko surasti ar parsiųsti rakto iÅ¡ raktų serverio: gpgkeys_%S neįvykdyta. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nepavyko nustatyti savininko patikimumo # Strings in enigmailSignKeyDlg.js signKeyFailed=Rakto pasiraÅ¡yti nepavyko alreadySigned.label=Pastaba: raktas %S jau pasiraÅ¡ytas pasirinktu slaptu raktu. partlySigned.label=Pastaba: kai kurie rakto %S naudotojų ID jau pasiraÅ¡yti su pasirinktu slaptu raktu. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Ä®kraunami raktai, praÅ¡ome palaukti ... keyValid.unknown=nežinomas keyValid.invalid=netinkamas keyValid.disabled=iÅ¡jungtas keyValid.revoked=atÅ¡auktas keyValid.expired=nebegaliojantis keyValid.noSubkey=nÄ—ra tinkamo papildomo rakto keyTrust.untrusted=nepatikimas keyTrust.marginal=dalinai patikimas keyTrust.full=patikimas keyTrust.ultimate=visiÅ¡kas keyTrust.group=(grupÄ—) keyType.public=vieÅ¡as keyType.publicAndSec=vieÅ¡as/saugus keyMan.enableKey=Ä®jungti raktÄ… keyMan.disableKey=IÅ¡jungti raktÄ… userAtt.photo=Naudotojo savybÄ— (JPEG paveikslÄ—lis) asciiArmorFile=ASCII Armored failai (*.asc) importKeyFile=Importuoti OpenPGP rakto failÄ… gnupgFile=GnuPG failai saveRevokeCertAs=Sukurti ir iÅ¡saugoti atÅ¡aukimo sertifikatÄ… revokeCertOK=AtÅ¡aukimo sertifikatas sÄ—kmingai sukurtas. JÅ«s galite jį naudoti paversti raktÄ… netinkamu. pvz. jei pametÄ—te slaptÄ… raktÄ….\n\nPraÅ¡au perkelti jį į saugiÄ… laikmenÄ… kuri gali bÅ«ti saugiai saugoma, pvz. CD ar lankstusis diskelis. Jei kasnors įgyja prieigÄ… prie Å¡io sertifikato, jie gali paversti jÅ«sų raktÄ… nenaudojamu. revokeCertFailed=Neįmanoma sukurti atÅ¡aukimo sertifikato. addUidOK=Naudotojo ID sÄ—kmingai pridÄ—ta addUidFailed=PridÄ—ti naudotojo ID nepavyko noKeySelected=Pasirinktai operacijai atlikti jÅ«s turite pasirinkti bent vienÄ… raktÄ… exportToFile=Eksportuoti viešą raktÄ… į failÄ… exportSecretKey=Ar norite įterpti slaptÄ… raktÄ… į iÅ¡saugotÄ… OpenPGP rakto failÄ…? saveKeysOK=Raktai sÄ—kmingai iÅ¡saugoti saveKeysFailed=Raktų iÅ¡saugoti nepavyko importKeysFailed=Raktų importuoti nepavyko enableKeyFailed=Raktų įjungti/iÅ¡jungti nepavyko specificPubKeyFilename=%S (0x%S) vieÅ¡as specificPubSecKeyFilename=%S (0x%S) vieÅ¡as-saugus defaultPubKeyFilename=Eksportuoti-vieÅ¡i-raktai defaultPubSecKeyFilename=Eksportuoti-vieÅ¡i-ir-slapti-raktai noSecretKeys=Slaptų raktų nerasta.\n\nAr norite sugeneruoti savo raktÄ… dabar? sendKeysOk=Raktas(-ai) sÄ—kmingai iÅ¡siųsti sendKeysFailed=Raktų iÅ¡siųsti nepavyko receiveKeysOk=Raktas(-ai) sÄ—kmingai atnaujinti receiveKeysFailed=Raktų parsiųsti nepavyko importFromClip=Ar norite importuoti raktÄ…(-us) iÅ¡ iÅ¡karpinÄ—s? copyToClipbrdFailed=Nepavyko nukopijuoti pasirinkto rakto(-ų) į iÅ¡karpinÄ™. copyToClipbrdOK=Raktas(-ai) nukopijuoti į iÅ¡karpinÄ™ deleteSecretKey=Ä®SPÄ–JIMAS: JÅ«s ruoÅ¡iatÄ—s iÅ¡trinti slaptÄ… raktÄ…!\nJei iÅ¡trinsite savo slaptÄ… raktÄ…, nebegalÄ—site iššifruoti laiÅ¡kų užšifruotų tuo raktu ir nebegalÄ—site atÅ¡aukti to rakto.\n\nAr tikrai norite ABU(slaptÄ… raktÄ… ir viešą raktÄ…) iÅ¡trinti\n„%S“? deleteMix=Ä®SPÄ–JIMAS: JÅ«s ruoÅ¡iatÄ—s iÅ¡trinti slaptus raktus!\nJei iÅ¡trinsite savo slaptÄ… raktÄ…, nebegalÄ—site iššifruoti laiÅ¡kų užšifruotų tuo raktu.\nAr tikrai norite ABU(pasirinktÄ… slaptÄ… raktÄ… ir viešą raktÄ…) iÅ¡trinti? deletePubKey=Ar tikrai norite iÅ¡trinti viešą raktÄ…\n„%S“? deleteSelectedPubKey=Ar tikrai norite iÅ¡trinti viešą raktÄ…? deleteKeyFailed=Rakto iÅ¡trinti nepavyko revokeKeyOk=Raktas atÅ¡auktas. Jei jÅ«sų raktas prieinamas raktų serveryje, rekomenduojama jį dar kartÄ… įkelti, kad kiti matytų jog jis atÅ¡auktas. revokeKeyFailed=Rakto atÅ¡aukti nepavyko. refreshAllQuestion=Nepasirinkote jokio rakto. Ar norite atnaujinti VISUS raktus? refreshKey.warn=Ä®spÄ—jimas: priklausomai nuo raktų skaiÄiaus ir interneto greiÄio, raktų atnaujinimas gali užtrukti! downloadContactsKeys.warn=Ä®spÄ—jimas: priklausomai nuo raktų skaiÄiaus ir interneto greiÄio, raktų atnaujinimas gali užtrukti! downloadContactsKeys.importFrom=Importuoti kontaktus iÅ¡ „%S“ adresų knygutÄ—s? keyMan.button.exportSecKey=Eksportuoti &slaptus raktus keyMan.button.exportPubKey=Eksportuoti tik &vieÅ¡us raktus keyMan.button.import=&Importuoti keyMan.button.refreshAll=&Atnaujinti visus raktus keyMan.button.revokeKey=&AtÅ¡aukti raktÄ… keyMan.button.skip=&Praleisti raktÄ… keylist.noOtherUids=Neturi kitų tapatybių keylist.hasOtherUids=Taip pat žinomas kaip keylist.noPhotos=NÄ—ra nuotraukos keylist.hasPhotos=Nuotraukos keyMan.addphoto.filepicker.title=Pasirinkite nuotraukÄ… kuri bus pridÄ—ta keyMan.addphoto.warnLargeFile=JÅ«sų pasirinktas failas yra didesnis nei 25 kB.\nNerekomenduotina pridÄ—ti didelių failų, nes raktai tampa labai dideli. keyMan.addphoto.noJpegFile=Pasirinktas failas nÄ—ra JPEG failas. Pasirinkite kitÄ… failÄ…. keyMan.addphoto.failed=Nepavyko pridÄ—ti nuotraukos. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Nepavyko pakeisti pagrindinio naudotojo ID changePrimUidOK=Pagrindinio naudotojo ID sÄ—kmingai pakeistas deleteUidFailed=IÅ¡trinti naudotojo ID %S nepavyko deleteUidOK=Naudotojo ID %S sÄ—kmingai iÅ¡trintas revokeUidFailed=AtÅ¡aukti naudotojo ID %S nepavyko revokeUidOK=Naudotojo ID %S sÄ—kmingai atÅ¡auktas. Jei jÅ«sų raktas prieinamas raktų serveryje, rekomenduojama jį įkelti pakartotinai, kad kiti žinotų jog jis atÅ¡auktas. revokeUidQuestion=Ar tikrai norite atÅ¡aukti naudotojo ID %S? deleteUidQuestion=Ar tikrai norite atÅ¡aukti naudotojo ID %S?\n\nTurÄ—kite omeny: jei iÅ¡siuntÄ—te savo viešą raktÄ… į raktų serverį, iÅ¡trynus naudotojo ID niekas nepasikeis. Å¡iuo atveju jÅ«s turÄ—tumÄ—te naudoti „AtÅ¡aukti naudotojo ID“. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=vieÅ¡as raktas keyTypePrimary=pagrindinis raktas keyTypeSubkey=subraktas keyTypePair=raktų pora keyExpiryNever=niekada keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Å ifravimas keyUsageSign=PasiraÅ¡ymas keyUsageCertify=Sertifikavimas keyUsageAuthentication=TapatybÄ—s patvirtinimas # Strings in enigmailGenCardKey.xul keygen.started=Palaukite kol bus sugeneruotas raktas... keygen.completed=Raktas sugeneruotas. Naujas rakto ID yra: 0x%S keygen.keyBackup=Rakto atsarginÄ— kopija padaryta kaip %S keygen.passRequired=Nurodykite slaptafrazÄ™ jei norite sukurti savo rakto atsarginÄ™ kopijÄ… už SmartCard ribų. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=JÅ«sų įvestas PIN nesutampa; įveskite dar kartÄ… cardPin.minLength=PIN turi bÅ«ti sudarytas bent iÅ¡ %S simbolių cardPin.processFailed=Nepavyko pakeisti PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Raktai atnaujinami, palaukite... keyserverProgress.uploading=Raktai įkeliami, palaukite... keyserverTitle.refreshing=Atnaujinti raktus keyserverTitle.uploading=Ä®kelti raktÄ… # Strings in enigmailSetupWizard passphrase.min8keys=JÅ«sų slaptafrazÄ— turi bÅ«ti sudaryta bent iÅ¡ 8 simbolių! setupWizard.reallyCancel=Ar tikrai norite uždaryti Enigmail diegimo vedlį? setupWizard.invalidGpg=JÅ«sų pasirinktas failas nÄ—ra GnuPG vykdomasis failas. Pasirinkite kitÄ… failÄ…. setupWizard.specifyFile=NorÄ—dami tÄ™sti, turite nurodyti bent jau viešą raktÄ…. setupWizard.installFailed=Atrodo diegimas nepavyko. Pabandykite iÅ¡ naujo arba įdiekite GnuPG rankiniu bÅ«du ir pasirinkite jį su narÅ¡ymo mygtuku. setupWizard.downloadForbidden=JÅ«sų paÄių saugumui, mes nesiųsime GnuPG. Aplankykite http://www.gnupg.org/ ir parsisiųskite GnuPG. setupWizard.downloadImpossible=Å iuo metu negalime parsiųsti GnuPG. Pabandykite vÄ—liau arba aplankykite http://www.gnupg.org/ ir parsisiųskite GnuPG. setupWizard.hashSumError=Vedliui nepavyko patikrinti parsiųsto failo vietisumo. Failas gali bÅ«ti netinkamai parsiųstas arba pakeistas. Ar vistiek norite tÄ™sti diegimÄ…? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=ParsiunÄiant GnuPG įvyko klaida. Klaidas galite pamatyti konsolÄ—je. installGnuPG.installFailed=Diegiant GnuPG įvyko klaida. Klaidas galite pamatyti konsolÄ—je. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Turite užpildyti vardÄ… ir el. paÅ¡to adresÄ… addUidDlg.nameMinLengthError=VardÄ… turi sudaryti bent 5 simboliai addUidDlg.invalidEmailError=Turite nurodyti teisingÄ… el. paÅ¡to adresÄ… addUidDlg.commentError=Komentaruose laužtiniai skliaustai neleidžiami # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP SmartCards Varde/PavardÄ—je palaiko tik ASCII simbolius. # network error types errorType.SecurityCertificate=Saugumo sertifikatas kurį pateikÄ— interneto tarnyba yra netinkamas. errorType.SecurityProtocol=Saugumo protokolas kurį naudoja tarnyba yra nežinomas. errorType.Network=Ä®vyko tinklo klaida. enigmail/lang/lt/help/000077500000000000000000000000001266701624400151435ustar00rootroot00000000000000enigmail/lang/lt/help/compose.html000066400000000000000000000100751266701624400175010ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/lt/help/editRcptRule.html000066400000000000000000000115571266701624400204500ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/lt/help/help.html000066400000000000000000000105151266701624400167630ustar00rootroot00000000000000 Enigmail Help

Enigmail Help

Using Enigmail when reading messages

  • Decrypt button in main Mail window
    This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
  • Pen and Key icons in Message Header display
    The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
    • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
    • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
    • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
    • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

    If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

    You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

    Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

    To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

  • Opening encrypted attachments / importing attached OpenPGP keys
    Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail OpenPGP Help web page
If you have questions or comments about enigmail, please send a message to the Enigmail OpenPGP mailing list

Enigmail OpenPGP is open source and licensed under the Mozilla Public License and the GNU General Public License

enigmail/lang/lt/help/initError.html000066400000000000000000000045361266701624400200160ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/lt/help/messenger.html000066400000000000000000000101211266701624400200140ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/lt/help/rulesEditor.html000066400000000000000000000060311266701624400203320ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/lt/help/sendingPrefs.html000066400000000000000000000047771266701624400204770ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/make-lang.sh000066400000000000000000000060711266701624400157700ustar00rootroot00000000000000#!/bin/sh # make-lang.sh v1.0.10 # this script is used to create a language-specifi XPI for Enigmail # if you want to debug this script, set DEBUG to something >0 DEBUG=0 if [ $# -ne 2 ]; then echo "Usage: $0 xx-YY version" echo " where: xx-YY is the language and country code representing the" echo " translated language" echo " version is the Enigmail version, e.g. 0.84.1" exit 1 fi ENIGLANG=$1 export ENIGLANG ENIGVERSION=$2 export ENIGVERSION LANGDIR=${ENIGLANG}/chrome/locale/${ENIGLANG}/enigmail HELPDIR=${LANGDIR}/help cwd=`pwd` rm -rf ${LANGDIR} >/dev/null 2>&1 mkdir -p ${LANGDIR} mkdir -p ${HELPDIR} LANGHASH=`echo "${ENIGLANG}" | md5sum | awk '{ print substr($0,1,2)}'` export LANGHASH # create chrome.manifest for Thunderbird 3.1 and newer cat > ${ENIGLANG}/chrome.manifest < ${ENIGLANG}/install.rdf < enigmail-${ENIGLANG}@www.enigmail.net ${ENIGVERSION} {3550f703-e582-4d05-9a08-453d09bdfdc6} 3.1 3.1.* {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 2.0 2.1.* Enigmail ${ENIGLANG} Enigmail ${ENIGLANG} language package Enigmail Team http://www.enigmail.net/langpack.html chrome://enigmail/content/pref-enigmail.xul chrome://enigmail/content/enigmailAbout.xul chrome://enigmail/skin/enigmail-about.png EOT for f in enigmail.dtd enigmail.properties am-enigprefs.properties upgrade_080.html ; do cp ${f} ${LANGDIR} done if [ -d help ]; then cd help fi pwd for f in compose.html editRcptRule.html initError.html messenger.html rulesEditor.html sendingPrefs ; do cp ${f} ${cwd}/${HELPDIR} done cd ${cwd}/${ENIGLANG}/chrome zip -r -D enigmail-${ENIGLANG}.jar locale cd .. zip ../enigmail-${ENIGLANG}-${ENIGVERSION}.xpi install.rdf chrome.manifest chrome/enigmail-${ENIGLANG}.jar cd .. test $DEBUG -eq 0 && rm -rf ${ENIGLANG} enigmail/lang/nb-NO/000077500000000000000000000000001266701624400145055ustar00rootroot00000000000000enigmail/lang/nb-NO/am-enigprefs.properties000066400000000000000000000001221266701624400211730ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Sikkerhet enigmail/lang/nb-NO/enigmail.dtd000066400000000000000000001362271266701624400170020ustar00rootroot00000000000000 OpenPGP-sikkerhet)"> MERK: Nøkkelgenerering kan ta intill flere minutter å gjennomføre. Ikke avbryt programmet mens nøkkelgenerering pågår. Gjennomføring av harddisk-insentive oppgavevr mens nøkkelgenrerering pågår vil gjøre prosessen hurtigere. Du vil få beskjed når nøkkelgenerering er fullført."> ' er ugyldig"> MERK: Nøkkelgenerering kan ta flere minutter, ikke avslutt programmet, du vil få beskjed når det er fullført."> MER: Enigmail vil alltid prøve å bekrefte signaturer i eposter, om det er aktivert for en konto eller ikke"> offentlige nøkkel brukes av andre for å sende deg krypterte eposter. Du kan dele denne med alle. "> private nøkkel er kun for deg for å dekryptere motatte meldinger og for å sende signerte meldinger. Du bør ikke dele den med noen."> private nøkkel er kun for deg for å dekryptere motatte meldinger og for å sende signerte meldinger. Du bør ikke dele den med noen. For å beskytte den private nøkkelen din vil du bli bedt om angi en passfrase i de to følgende dialogboksene."> Passfrasen er for å beskytte den private nøkkelen din. Den forhindrer misbruk av din private nøkkel."> ikke"> Du vil bli bedt om å angi et passord for dette."> eksporter dataene dine fra din gamle datamaskin ved hjelp av veiviseren for sikkerhetskopiering i Engimail-innstillinger importer dataene til en annen maskin ved hjelp av denne veiviseren. "> Takk for at du bruker Enigmail."> eksporter dataene dine fra din gamle datamaskin ved hjelp av denne veiviseren importer dataene til en annen maskin ved hjelp av konfigurasjonsveiviseren. "> enigmail/lang/nb-NO/enigmail.properties000066400000000000000000001072441266701624400204200ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail varsel enigConfirm=Enigmail bekreftelse enigError=Enigmail feil enigPrompt=Enigmail forespørsel dlgYes=&Ja dlgNo=&Nei dlgKeepSetting=Husk svaret og ikke spør igjen dlgNoPrompt=Ikke vis meg denne dialogen igjen dlg.button.delete=&Slett dlg.button.cancel=&Avbryt dlg.button.close=&Lukk dlg.button.continue=&Fortsett dlg.button.skip=&Hopp over dlg.button.overwrite=&Overskriv dlg.button.view=&Vis dlg.button.retry=&Prøv igjen dlg.button.ignore=&Ignorer repeatPrefix=\n \n \nDenne meldingen vil gjentas %S repeatSuffixSingular=gang til. repeatSuffixPlural=ganger til. noRepeat=\n \n \nDette varselet vil ikke gjentas før du oppgraderer Enigmail. pgpNotSupported=Du ser ut til å bruke Enigmail sammen med with PGP 6.x\n\\Beklaglivis er ikke dette støttet da PGP 6.x har en rekke kompabilitetsproblemer med Enigmail. Hjelp for å endre til GnuPG finnes på websidene. initErr.howToFixIt=For å kunne bruke Enigmail kreves GnuPG. Hvis du ikke har installert GnuPG ennå kan du gjøre dette ved hjelp av oppsettsveilederknappen under. initErr.setupWizard.button=&Oppsettsveileder passphraseCleared=Passfrasen har blitt nullstilt. cannotClearPassphrase=Du bruker et ikke-standard verktøy (f.eks. gnome-keyring) for passfrasehåndtering. Det er derfor ikke mulig å tilbakestille passfrasen i Enigmail. noPhotoAvailable=Intet bilde tilgjengelig debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Bildesti '%S' er ikke lesbar # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Denne versjonen av Enigmail har omfattende endringer i håndteringen av innstillinger. Vi har forsøkt å overføre dine gamle innstllinger til denne versjonen, men det fungerer ikke for alle typer innstillinger. Vennligst dobbeltsjekk de nye innstillingene dine. enigmailCommon.checkPreferences=Sjekk innstillinger ... preferences.defaultToPgpMime=Vi har endret standard meldingskoding i Enigmail fra Inline-PGP til PGP/MIME. Vi anbefaler at du beholder dette som standard. \n \nHvis du fortsatt vil bruke Inline-PGP som standard kan du sette dette i konto-innstillinger under OpenPGP-sikkerhet. usingVersion=Kjører Enigmail versjon %S usingAgent=Bruker %S filen %S til å kryptere og dekryptere agentError=FEIL: Klarer ikke å få tilgang til enigmail! accessError=Feil i tilgang til Enigmail-tjenesten onlyGPG=Nøkkelgenerering fungerer kun med GnuPG (ikke med PGP)! keygenComplete=Nøkkelgenerering fullført! Identitet <%S> vil bli brukt til signering. revokeCertRecommended=Vi anbefaler på det sterkeste å lage et tilbaketrekkingssertifikat. F.eks. om du skulle miste den private nøkkelen eller passfrasen din kommer på avveie. Ønsker du å lage dette sertifikatet nå? keyMan.button.generateCert=&Generer sertifikat genCompleteNoSign=Nøkkelgenerering fullført! genGoing=Nøkkelgenerering pågår allerede! passNoMatch=Passfrasene stemmer ikke overens, vennligst prøv igjen. passCheckBox=Kryss av for om nøkkelen ikke skal beskyttes med passfrase passUserName=Angi brukernavn for denne identiteten keygen.missingUserName=Det er ikke angitt noe navn for den valgte kontoen/identiteten. Angi en verdi i feltet "Ditt navn" i kontoinnstillinger. keygen.passCharProblem=Du bruker spesialtegn i passfrasen din. Dessverre kan dette skape problemer for andre applikasjoner. Vi anbefaler at du kun benytter tegn fra følgende grupper: \na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Av tekniske årsaker kan ikke passfrasen din starte eller slutte med mellomromstegnet. changePassFailed=Endring av passfrase mislyktes. keyConfirm=Generer offentlige og private nøkler for '%S'? keyMan.button.generateKey=&Genererer nøkkel keyAbort=Avbryt nøkkelgenerering? keyMan.button.generateKeyAbort=&Avbryt nøkkelgenerering keyMan.button.generateKeyContinue=&Fortsett nøkkelgenerering expiryTooLong=Du kan ikke lage en nøkkel som utløper om mer enn 100 år. expiryTooLongShorter=Du kan ikke lage en nøkkel som utløper om mer enn 90 år. expiryTooShort=Nøkkelen må være gyldig i minst én dag. dsaSizeLimit=DSA-signeringsnøkler er begrenset til 3072 bits. Nøkkellengden vil bli redusert tilsvarende. keyGenFailed=Nøkkelgenereringen feilet. Vennligst sjekk Enigmail konsollen(Meny Enigmail > feilsøk Enigmail) for mer detaljer. setKeyExpirationDateFailed=Utløpsdatoen kunne ikke endres. # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail sikkerhetsinformasjon\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Vedleggene i denne eposten har ikke blitt signert eller kryptert*\n\n possiblyPgpMime=Mulig PGP/MIME kryptert eller signert melding; klikk knapp for dekryptering for å bekrefte noDecrypted=Ingen dekryptert melding å lagre!\nBruk Lagre fra fil-menyen noMessage=Ingen melding å lagre! useButton=Vennligst klikk dekrypter for å dekryptere melding. saveHeader=Enigmail: Lagre dekryptert melding saveAttachmentHeader=Enigmail: Lagre dekryptert vedlegg noTempDir=Kunne ikke finne en midlertidig mappe å skrive til\nVennligst sett TEMP-miljøvariablen attachmentPgpKey=Vedlegget '%S' du åpner tyder på å være en OpenPGP-nøkkel\n\nKlikk Ja for å importere nøklene eller Nei for å se hva de inneholder i et vindu. beginPgpPart=********* *BEGYNN KRYPTERT ELLER SIGNERT DEL* ********* endPgpPart=********** *AVSLUTT KRYPTERT ELLER SIGNERT DEL* ********** notePartEncrypted=Enigmail: *Deler av meldignen har IKKE blitt krypert eller signert* noteCutMessage=Enigmail: *Flere meldingsblokker funnet -- dekryptering/bekreftelse avsluttet* decryptOkNoSig=Advarsel\n\nDekryptering var vellykket, men signaturen kunne ikke bekreftes. msgOvl.button.contAnyway=&Fortsett uansett signature.verifiedOK=Signaturen på vedlegg %S lot seg verifisere signature.verifyFailed=Signaturen på vedlegg %S lot seg ikke verifisere attachment.noMatchToSignature=Kunne ikke finne tilhørende signaturfil for vedlegg '%S' attachment.noMatchFromSignature=Kunne ikke finne et vedlegg tilhørende signaturfil '%S' fixBrokenExchangeMsg.failed=Klarte ikke å reparere meldingen keysToExport=Velg OpenPGP nøkkel å sette inn keysToUse=Velg OpenPGP Nøkkel/Nøkler å bruke for %S pubKey=Offentlig nøkkel for %S\n windowLocked=skrive-vindu er låst; sending avbrutt sendUnencrypted=Feilet å starte enigmine.\nSend melding ukryptert? composeSpecifyEmail=Vennligst spesifiser primær epostadresse, som vil bli brukt til å velge en signeringsnøkkel for utgående meldinger.\n Om blank vil FRA-adressen til meldingen bli brukt til å bestemme nøkkel. sendingHiddenRcpt=Denne meldingen har BCC (blindkopi)-mottakere. Hvis meldingen krypteres er det mulig å skjule BCC-mottakere, men noen programmer (fra bla. PGP Corp.) vil ikke kunne dekryptere meldingen. På grunn av dette anbefaler vi å ikke bruke BCC-mottakere i krypterte meldinger. sendWithHiddenBcc=Skjul BCC-mottakere sendWithShownBcc=Krypter på normal måte sendingNews=Kryptert sendingsoperasjon avbrutt.\n\nDenne meldingen kunne ikke sendes fordi der er meldingsgruppe-mottagere. sendToNewsWarning=Advarsel: du er i ferd med å sende en kryptert epost til en nyhetsgruppe. \n \nDette er ikke anbefalt siden det kun gir mening om alle medlemmene av gruppen kan dekryptere meldingen, dvs. at meldingen må krypteres med nøklene til samtlige gruppemedlemmer. Vennligst send meldingen kun hvis du vet nøyaktig hva du gjør. \n \nFortsett? hasHTML=HTML meldingsvarsel:\nDenne meldingen kan inneholde HTML, som kan forårsake signering/kryptering til å feile. Deaktiver HTML-meldinger om du ønsker å benytte denne funksjonen. strippingHTML=Meldingen inneholder HTML-informasjon som vil bli tapt under konvertering til enkel tekst. Ønsker du å fortsette? msgCompose.button.sendAnyway=&Send melding uansett attachWarning=Vedlegg til denne meldingen er ikke lagret lokalt, og kan ikke bli kryptert. Om du ønsker å kryptere vedleggene, lagre dem lokalt og legg dem ved. Ønsker du likevel å fortsette? quotedPrintableWarn=Du har aktivert 'quoted-printable' koding for sending av meldinger. dette kan resultare i ukorrekt kryptering og/eller verifisering av meldingen.\n Ønsker du å skru av 'quoted-printable' nå? minimalLineWrapping=Du har angitt at tekstlinjer skal brytes ved %S tegn. For korrept kryptering og/eller signering må denne verdien være minst 68. \nVil du endre tekstbryting til 68 tegn? warning=Advarsel signIconClicked=Du har manuelt modifisert signering. Derfor vil ikke (de)aktivering av signering avhenge av (de)aktivering av kryptering. pgpMime_sMime.dlg.text=Du har slått på både PGP/MIME og S/MIME. Dessverre er det ikke mulig benytte begge disse samtidig. Vennligst velg om du vil bruke PGP/MIME eller S/MIME. pgpMime_sMime.dlg.pgpMime.button=Bruk &PGP/MIME pgpMime_sMime.dlg.sMime.button=Bruk &S/MIME errorKeyUnusable=Epostadressen eller nøkkel-IDen '%S' kan ikke koples til en gyldig, ikke utgått OpenPGP-nøkkel. \nVennligst forsikre deg om at du har en gyldig OpenPGP-nøkkel og at kontoinnstillingene dine peker til denne nøkkelen. errorOwnKeyUnusable=Nøkkel-IDen '%S' konfigurert for den gjeldende identiteten gir ikke en anvendbar OpenPGP-nøkkel. \n \nForsikre deg om at du har en gyldig, ikke utløpt OpenPGP-nøkkel og at kontoinnstillingene dine peker til denne nøkkelen. \nHvis nøkkelen din ikke er utløpt sjekk om du har satt eiertillit til full eller ultimat. msgCompose.cannotSaveDraft=Feil under lagring av utkast msgCompose.internalEncryptionError=Intern feil: avtalt kryptering deaktivert msgCompose.internalError=Det har oppstått en intern feil. msgCompose.toolbarTxt.signAndEncrypt=Meldingen vil bli signert og kryptert msgCompose.toolbarTxt.signOnly=Meldigen vil bli signert msgCompose.toolbarTxt.encryptOnly=Meldigen vil bli kryptert msgCompose.toolbarTxt.noEncryption=Meldingen vil ikke bli signert eller kryptert msgCompose.toolbarTxt.disabled=Enigmail er deaktivert for den valgte identiteten msgCompose.toolbarTxt.smime=S/MIME er aktivert - mulig konflikt med Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME blir derfor ikke brukt msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME er aktivert - Enigmail blir derfor ikke brukt msgCompose.toolbarTxt.smimeNoDraftEncryption=- utkast krypteres ikke msgCompose.toolbarTxt.smimeConflict=Enigmail benyttes ikke fordi S/MIME er aktivert. Slå av S/MIME-signering og/eller kryptering og aktiver Enigmail-kryptering. msgCompose.encryptedSubjectStub=Kryptert melding msgCompose.detailsButton.label=Detaljer ... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Sendingsoperasjon.\n\n # details: keyNotTrusted=Ikke høyt nok tillitsnivå for nøkkel '%S' keyNotFound=Nøkkel '%S' ble ikke funnet keyRevoked=Nøkkel '%S' trukket tilbake keyExpired=Nøkkel '%S' utgått på dato statPGPMIME=PGP/MIME statSigned=SIGNERT statEncrypted=KRYPTERT statPlain=REN TEKST offlineSave=Lagre %S melding til %S mappe for usendte elementer? onlineSend=Send %S melding til %S? encryptKeysNote=Merk: meldingen er kryptert med de følgende brukerid-er / nøkler: %S hiddenKey= signFailed=Feil i Enigmail; Kryptering/signering feilet. Send ukryptert epost? msgCompose.button.sendUnencrypted=&Send melding ukryptert recipientsSelectionHdr=Velg mottakere for kryptering configureNow=Du har enda ikke konfigurert Enigmail sikkerhet (Engimail) for denne identiteten. Ønsker du å gjøre dette nå? # encryption/signing status and associated reasons: encryptMessageAuto=Krypter melding (auto) encryptMessageNorm=Krypter melding signMessageAuto=Signert melding (auto) signMessageNorm=Signer melding encryptOff=Kryptering: AV encryptOnWithReason=Kryptering: PÅ (%S) encryptOffWithReason=Kryptering: AV (%S) encryptOn=Kryptering: PÅ signOn=Signering: PÅ signOff=Signering: AV signOnWithReason=Signering: AV (%S) signOffWithReason=Signering: AV (%S) reasonEnabledByDefault=påslått som standard reasonManuallyForced=manuelt tvunget reasonByRecipientRules=tvunget av mottaker-regler reasonByAutoEncryption=tvunget av automatisk kryptering reasonByConflict=grunnet konflikt mellom mottakerregler reasonByEncryptionMode=på grunn av krypteringsmodus reasonSmimeConflict=fordi S/MIME er aktivert istedenfor # should not be used anymore: encryptYes=Melding vil bli kryptert encryptNo=Melding vil ikke bli kryptert # should not be used anymore: signYes=Melding vil bli signert signNo=Melding vil ikke bli signert # PGP/MIME status: pgpmimeNormal=Protokoll: PGP/MIME inlinePGPNormal=Protokoll: Inline PGP pgpmimeAuto=Protokoll: PGP/MIME (auto) inlinePGPAuto=Protokoll: Inline PGP (auto) # should not be used anymore pgpmimeYes=PGP/MIME vil bli benyttet pgpmimeNo=Inline PGP vil bli benyttet # Attach own key status (tooltip strings): attachOwnKeyNo=Din egen nøkkel vil ikke bli lagt ved attachOwnKeyYes=Din egen nøkkel vil bli lagt ved attachOwnKeyDisabled=Din egen nøkkel kan ikke legges ved. Du må angi en spesifikk nøkkel i OpenPGP-delen av Kontoinnstillinger for å aktivere denne funksjonen. rulesConflict=Konflikt i mottakerrelaterte regler:\n%S\n\nSend melding med desse instillingene? msgCompose.button.configure=&Konfigurere msgCompose.button.send=&Send melding msgCompose.button.save=&Lagre melding # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Offentlig nøkkel %S trengs for å verifisere melding keyUsed=Offentlig nøkkel %S ble brukt for å verifisere signatur clickDecrypt=; klikk Dekrypter-knappen clickDecryptRetry=; klikk på dekrypter-knappen for å prøve igjen clickDetailsButton=; klikk på detaljer-knappen for mer informasjon clickImportButton=; klikk på importer nøkkel-knappen for å lasted ned nøkkelen keyTypeUnsupported=; nøkkeltypen er ikke støttet av din versjon av GnuPG msgPart=Del av meldingen %S msgSigned=signert msgSignedUnkownKey=signert med ukjent nøkkel msgEncrypted=kryptert msgSignedAndEnc=signert og kryptert unverifiedSig=Ikke-verifisert signatur incompleteDecrypt=Dekryptering ukomplett needKey=Feil - privat nøkkel trengs til å dekryptere failedDecrypt=Feil - Dekryptering feilet badPhrase=Feil - Feil passfrase failedDecryptVerify=Feil - Dekryptering / Verifisering feilet viewInfo=; Vis -> Meldings sikkerhetsinfo for detaljer decryptedMsg=Dekryptert melding decryptedMsgWithFormatError=Dekryptert melding (reparert misformet PGP epostformat sannsynligvis pga en gammel MS Exchange-tjener. Resultatet kan være vanskelig å lese) usedAlgorithms=Benyttede algoritmer: %S og %S # strings in pref-enigmail.js oldGpgVersion14=Enigmail kunne ikke starte. \n \nDu benytter GnuPG versjon %S, som ikke lenger er støttet.\nEnigmail krever GnuPG versjon 2.0.7 eller nyere. Oppgrader GnuPG-installasjonen din, eller vil ikke Enigmail fungere. locateGpg=Lokaliser GnuPG-programmet invalidGpgPath=GnuPG kan ikke kjøre fra banen som ble spesifisert. Enigmail er derfor deaktivert intill du endrer banen til GnuPG, eller til du starter programmet på nytt. warningsAreReset=Alle advarsler har blitt nullstilt. prefs.gpgFound=GnuPG ble funnet i %S prefs.gpgNotFound=Kunne ikke finne GnuPG prefs.warnAskNever=Advarsel: ved å aktivere dette valget resulterer det i en ukryptert melding uten noe videre informasjon om nøkkel ikke finnes for en av mottagerene -- Enigmail vil ikke informere deg om dette skjer! prefs.warnIdleTimeForUnknownAgent=Kan ikke kople til gpg-agent. Dette kan skje om systemet ditt bruker et eget verktøy for passfrasehåndtering (f.eks. gnome-keyring, seahore-agent, KDE wallet manager,...) Dessverre kan ikke Enigmail kontrollere passfrasetimeout for verktøyet du bruker. Innstillinger for dette i Enigmail vil derfor ignoreres. prefEnigmail.oneKeyserverOnly=Feil - du kan kun angi én nøkkeltjener for automatisk nedlasting av manglende OpenPGP-nøkler. enterAdminPin=Skriv inn ADMIN PIN til ditt smartkort enterCardPin=Skriv inn din smartkort PIN notInit=Feil - Enigmail-tjenesten er ikke startet badCommand=Feil - krypteringskommando feilet cmdLine=kommandolinje og resultat: notRequired=Feil - ingen kryptering er nødvendig notComplete=Feil - nøkkelgenerering har ikke fullført invalidEmail=Feil - ugyldig(e) epostadresse(r) noPassphrase=Feil - ingen passfrase er oppgitt noPGPblock=Feil - Ingen beskyttet OpenPGP data blokk er funnet unverifiedReply=Innrykket meldingsdel (svar) er antageligvis endret keyInMessageBody=Nøkkel funnet i meldingen. Klikk "Importer nøkkel" for å importere den. sigMismatch=Feil - Signaturen stemmer ikke overens cantImport=Feil i importering av offentlig nøkkel\n\n doImportOne=Importer %1$S (%2$S)? doImportMultiple=Importer følgende nøkeler? %S previewFailed=Kan ikke lese offentlig nøkkel-fil. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Smartkortet %1$S i leseren kan ikke brukes for å behandle meldingen. \nVennligst sett i smartkort %S og gjenta operasjonen. sc.insertCard=Denne operasjonen er avhengig av smartkortet %S. \nVennligst sett smartkoret i leseren og gjenta operasjonen. sc.removeCard=Denne operasjonen krever at det ikke er noe smartkort i leseren. Vennligst fjern smartkortet fra leseren og gjenta operasjonen. sc.noCardAvailable=Inget SmartCard ble funnet i leseren.\nVennligst sett inn et kort og gjenta operasjonen. sc.noReaderAvailable=SmartCard-leseren ble ikke funnet.\n Vennligst kobl til leseren. keyError.keySpecNotFound=E-postadressen "%S" kan ikke koples mot en nøkkel i nøkkelringen din. keyError.keyIdNotFound=Den angitte nøkkel-IDen "%S" ble ikke funnet i nøkkelringen din. keyError.resolutionAction=Velg en gyldig nøkkel i OpenPGP-delen av kontoinnstillingene dine. missingPassphrase=Manglende passfrase errorHandling.gpgAgentInvalid=Systemet ditt bruker en versjon av gpg-agent som ikke passer sammen med GnuPG-versjonen din. errorHandling.gpgAgentError=GnuPG rapporterte en feil i kommunikasjonen med gpg-agent (en komponent i GnuPG). errorHandling.dirmngrError=GnuPG rapporterte en feil i kommunikasjonen med dirmngr (en komponent i GnuPG). errorHandling.pinentryError=GnuPG kan ikke be om passfrasen din via pinentry. errorHandling.readFaq=Dette er en oppsetts- eller konfigurasjonsfeil som hindrer Enigmail i å fungere normalt, og som ikke kan rettes automatisk. \n \nVi anbefaler sterkt at du konsulterer supportnettsiden vår på https://enigmail.net/faq. gpgNotFound=Klarte ikke å finne GnuPG-programmet '%S'\nKontroller banen. gpgNotInPath=Kunne ikke finne GnuPG i PATH-variablen.\nKontroller at banen stemmer i Enigmail instillingene. enigmailNotAvailable=Sentral Enigmail-tjeneste ikke tilgjengelig gpgAgentNotStarted=Kunne ikke starte gpg-agent, som er påkrevd av din GnuPG versjon %S. prefUntrusted=IKKE TIL Å STOLE PÅ prefRevoked=TRUKKET NØKKEL prefExpiredKey=UTLØPT NØKKEL prefExpired=UTLØPT prefGood=God signatur fra %S prefBad=Dårlig signatur fra %S failCancel=Feil - Nøkkelhenting avbrutt av bruker failNoServer=Feil - Ingen nøkkeltjener har blitt spesifisert failNoID=Feil - Ingen NøkkelID å hente nøkkel for failKeyExtract=Feil - Nøkkelutentings-kommando feilet notFirstBlock=Feil - Første OpenPGP blokk tilhører ikke en offentlig nøkkel importKeyConfirm=Importer offentlige nøkler fra meldignen? failKeyImport=Feil - nøkkelimportering feilet fileWriteFailed=Klarte ikke å skrive til filen %S importKey=Importer offentlig nøkkel %S fra nøkkeltjener: uploadKey=Send offentlig nøkkel %S til nøkkeltjener: keyId=NøkkelID keyAndSigDate=NøkkelID: 0x%S / Signert den: %S keyFpr=Fingeravtrykk: %S noEmailProvided=Du oppgav ikke en epostadresse keyAlreadySigned=Denne nøkkelen har allerede blitt signert, du kan ikke signere den flere ganger gnupg.invalidKey.desc=Nøkkel %S ble ikke funnet eller er ikke gyldig. (Under)nøkkelen kan være utgått på dato. selKeyExpired=utløpt %S createdHeader=Laget atLeastOneKey=Ingen nøkkel valgt! Du må velge minst en nøkkel for å kunne akseptere denne dialogen fewerKeysThanRecipients=Du har valgt færre nøkler enn mottakere. Er du sikker på at lista med nøkler du vil kryptere til er komplett? userSel.button.goBack=Velg flere nøkler userSel.secretKeySel.title=Velg en OpenPGP privatnøkkel for å signere meldingene dine userSel.problemNoKey=Ingen gyldig nøkkel userSel.problemMultipleKeys=Flere nøkler # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Send senere # Strings used in enigmailAttachmentDialog.js pgpMimeNote=MERK: PGP/MIME er bare støttet av et begrenset nummer av epostklienter! På Windows er det bare Enigmail,Sylpheed, Pegasus and Mulberry som er kjent for å støtte denne standarden; på GNU/Linux / UNIX og Mac OS X støtter de fleste populære klientene det. Om du er usikker velg %S valget. first=første second=andre # Strings used in am-enigprefs.js encryptKeyHeader=Velg OpenPGP-nøkkel til kryptering identityName=Identitet: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Du har aktivert kryptering, men ikke valgt en nøkkel. For å kunne kryptere eposter sendt til %S må du velge en eller flere nøkler å kryptere til. Ønsker du å deaktivere kryptering til: %S? noKeyToUse=(ingen - ingen kryptering) noEmptyRule=Denne regelen kan ikke være tom! vennligst sett en epostadresse i regelfeletet. invalidAddress=Epostadressen(e) du har skrevet er ikke gyldige. Du skal ikke skrive navnet på mottakeren, bare epostadressen. For eksempel:\nUgyldig: Some Name \nGyldig: some.name@address.net noCurlyBrackets=De krøllete parantesene {} har en spesiell betydning, og kan ikke brukes i epostadresser. Om du ønsker å endre filteroppførselen for denne regelen, bruk 'Gjør regelen gjeldende om mottaker....' , mer info finnes i hjelp-menyen # Strings used in enigmailRulesEditor.js never=Aldri always=Alltid possible=Mulig deleteRule=Virkelig slette den valgte regel? nextRcpt=(neste mottaker) negateRule=Ikke addKeyToRule=Legg nøkkelen %1$S (%2$S) til per mottaker-regel # Strings used in enigmailSearchKey.js needOnline=Funksjonen du har valg er ikke tilgjengelig i frakoblet modus. Venngligst kobl til og prøv igjen. protocolNotSupported=Protokollen '%S://' som du har valgt er ikke tilgjengelig for å laste ned OpenPGP nøkler gpgkeysDisabled=Det vil kanskje hjelpe å aktivere valget: 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Kunne ikke koble til nøkkeltjener på %S. keyDownloadFailed=Feilet i å laste ned nøkkel fra tjener. Status-meldingen er:\n%S internalError=En intern feil oppstod. Nøklene kunne ikke bli lastet ned eller importert. noKeyFound=Beklager, men kunne ikke finne en nøkkel som passet til søket. Vennligst merk at nøkkel-ider skal være prefikset med \\"0x\\" (f.eks. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Klarte ikke å søke eller laste ned nøkkel fra nøkkeltjener: gpgkeys_%S kunne ikke bli utført # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nøkkelpålitelighet kunne ikke bli satt # Strings in enigmailSignKeyDlg.js signKeyFailed=Nøkkelsignering feilet alreadySigned.label=Merk: nøkkelen %S er allerede singert med den valgte privatnøkkelen. alreadySignedexportable.label=Merk: nøkkelen %S er allerede signert som eksporterbar med den valgte privatnøkkelen. En lokal signatur gir ikke mening. partlySigned.label=Merk: noen bruker-IDer til nøkkelen %S er allerede signert med den valgte privatnøkkelen noTrustedOwnKeys=Ingen kvalifisert nøkkel funnet for signering! Du trenger minst én fullt tiltrodd privatnøkkel for å signere nøkler. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Laster inn nøkler, vennligst vent... keyValid.unknown=ukjent keyValid.invalid=ugyldig keyValid.disabled=deaktivert keyValid.revoked=trukket keyValid.expired=utløpt keyValid.noSubkey=ingen gyldig undernøkkel keyTrust.untrusted=ikke til å stole på keyTrust.marginal=marginal keyTrust.full=stolt på keyTrust.ultimate=fullstendig keyTrust.group=(gruppe) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Aktiver nøkkel keyMan.disableKey=Deaktiver nøkkel userAtt.photo=brukerattributt (JPEG bilde) asciiArmorFile=ASCII armored-filer (*.asc) importKeyFile=Importer OpenPGP nøkkelfil gnupgFile=GnuPG Filer saveRevokeCertAs=Lag og lagre tilbaketrekkingssertifikat revokeCertOK=Tilbaketrekkingssertifikatetet har blitt laget vellykket. Du kan bruke det til å gjøre den offentlige nøkkelen ugyldig, f.eks. om du skulle miste den private nøkkelen.\n\nVennligst flytt det til et medium som kan lagres sikkert, som CD-ROM eller floppy og/eller print det ut og lagre det sikkert.Om noen får tak i dette sertifikatet kan de gjøre nøkkelen din ubrukelig. revokeCertFailed=Tilbaketrekkingssertifikatet kunne ikke lages. addUidOK=BrukerID lagt til vellykket. addUidFailed=Kunne ikke legge til BrukerID. noKeySelected=Du må velge minst en nøkkel å foreta operasjonen på. exportToFile=Eksporter offentlig nøkkel til fil exportKeypairToFile=Eksporter privat og offentlig nøkkel til fil exportSecretKey=Ønsker du å inkludere den private nøkkelen i den lagrede OpenPGP-filen? saveKeysOK=Nøklene ble lagret vellykket saveKeysFailed=Kunne ikke lagre nøklene importKeysFailed=Importering av nøkler feilet enableKeyFailed=Aktivering/Deaktivering av nøkler feilet specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Eksporter offentlige nøkler defaultPubSecKeyFilename=Eksporter offentlige og private nøkler noSecretKeys=Ingen private nøkler funnet. Ønsker du å generere din egen nøkkel nå? sendKeysOk=Nøkler sendt vellykket sendKeysFailed=Sending av nøkler feilet receiveKeysOk=Nøkler oppdatert vellykket receiveKeysFailed=Nedlasting av nøkler feilet importFromClip=Ønsker du å importere noen nøkler fra utklippstavlen? importFromUrl=Last ned offentlig nøkkel fra denne URLen: copyToClipbrdFailed=Kunne ikke kopiere de valgte nøkler til utklippstavlen copyToClipbrdOK=Valgte nøkler kopiert til utklippstavle deleteSecretKey=Advarsel: Du er i gang med å slette en privat nøkkel!\nOm du sletter en privat nøkkel, vil du ikke klare å dekryptere meldinger som er kryptert med den offentlige nøkkelen\n\nØnsker du virkelig å både slette den private og den offentlige nøkkelen?\n'%S'? deleteMix=Advarsel: Du er i gang med å slette en privat nøkkel!\nOm du sletter en privat nøkkel, vil du ikke klare å dekryptere meldinger som er kryptert med den offentlige nøkkelen\n\nØnsker du virkelig å både slette den private og den offentlige nøkkelen?\n'%S'? deletePubKey=Ønsker du å slette den offentlige nøkkelen\n'%S'? deleteSelectedPubKey=Ønsker du å slette de offentlige nøklene? deleteKeyFailed=Nøkkelen kunne ikke bli slettet revokeKeyQuestion=Du er i ferd med å trekke tilbake nøkkel '%S'. \n \nDu vil ikke lenger kunne signere med denne nøkkelen, og når tilbaketrekkingen er distribuert vil andre ikke lenger kunne kryptere til denne nøkkelen. Du kan fortsatt bruke nøkkelen for å dekryptere gamle meldinger. \n \nVil du fortsette? revokeKeyOk=Nøkkelen har blitt trukket tilbake. Om nøkkelen er tilgjengelig på en nøkkeltjener er det annbefalt å laste den opp igjen så andre kan se at den er trukket tilbake. revokeKeyFailed=Nøkkelen kunne ikke bli trukket tilbake refreshAllQuestion=Du valgte ikke noen nøkkel, nøsker du å oppdatere alle? refreshKey.warn=Warning: Avhengig av antall nøkler og båndbredde kan det ta lang tid å oppdatere alle nøkler. Ønsker du å fortsette? downloadContactsKeys.warn=Advarsel: avhengig av antall kontakter og tilkoplingshastighet kan det ta lang tid å laste ned alle nøklene! downloadContactsKeys.importFrom=Importer kontakter fra adressebok '%S'? keyMan.button.exportSecKey=&Export Secret Keys keyMan.button.exportPubKey=Eksporter kun &Offentlige nøkler keyMan.button.import=&Importer keyMan.button.refreshAll=&&Oppdater alle nøkler keyMan.button.revokeKey=&&Trekk tilbake nøkkel keyMan.button.skip=&&Hopp over nøkkel keylist.noOtherUids=Har ingen andre identiteter keylist.hasOtherUids=Også kjent som keylist.noPhotos=Ingen bilder tilgjengelig keylist.hasPhotos=Bilder keyMan.addphoto.filepicker.title=Velg bilde å legge til keyMan.addphoto.warnLargeFile=Filen du har valgt er større en 25kB. \nNøklene blir veldig store om det legges til store filer, dette anbefales derfor ikke. keyMan.addphoto.noJpegFile=Den valgte filen virker ikke å være en JPEG-fil. Vennligst velg en annen fil. keyMan.addphoto.failed=Kunne ikke legge til bildet # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Feilet å endre den primære BrukerID-en changePrimUidOK=Primær BrukerID endret vellykket. deleteUidFailed=Fjerning av BrukerID %S feilet deleteUidOK=BrukerID %S ble slettet. revokeUidFailed=Tilbaketrekking av BrukerID %S feilet revokeUidOK=BrukerID %S har blitt trukket tilbake, om nøkkelen er tilgjengelig på en nøkkeltjener bør du laste den opp igjen. revokeUidQuestion=Ønsker du virkelig å trekke tilbake BrukerID %S? deleteUidQuestion=Ønsker du virkelig å trekke tilbake BrukerID %S?\n\nvennligst merk: om du har lastet opp nøkkelen på en nøkkeltjener vil ikke sletting gjøre noe, i dette tilfellet bruk 'trekk tilbake'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=Suksess! Nøkler importert importInfoSuccess=✅ importInfoBits=Biter importInfoCreated=Laget importInfoFpr=Fingeravtrykk importInfoDetails=(Detaljer) importInfoNoKeys=Ingen nøkler importert. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=offentlig nøkkel keyTypePrimary=Primærnøkkel keyTypeSubkey=undernøkkel keyTypePair=nøkkelpar keyExpiryNever=aldri keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Krypter keyUsageSign=Signer keyUsageCertify=Sertifiser keyUsageAuthentication=Autentisering keyDoesNotExpire=Nøkkel utløper ikke # Strings in enigmailGenCardKey.xul keygen.started=Vennligst vent mens nøkkel blir generert .... keygen.completed=Nøkkelen har blitt generert. Den nye NøkkelID er: 0x%S keygen.keyBackup=Backup av nøkkel er lagret som %S keygen.passRequired=Vennligst spesifiser en passfrase om du ønsker å lagre en backup utenfor smartkortet ditt. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN-koden stemmer ikke overrens, vennligst prøv igjen. cardPin.minLength=PIN-koden må ha minst %S bokstaver eller nummer cardPin.processFailed=Klarte ikke å endre PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Oppdaterer nøkler, vennligst vent ... keyserverProgress.uploading=Laster opp nøkler, vennligst vent... keyserverTitle.refreshing=Oppdater nøkler keyserverTitle.uploading=Nøkkelopplasting # Strings in enigmailSetupWizard passphrase.min8keys=Passfrasen må inneholde minst åtte tegn. setupWizard.reallyCancel=Ønsker du virkelig å avbryte Enigmail hjelperen? setupWizard.invalidGpg=Filen du anga er ikke GnuPG-programmet. Vennligst oppig en annen fil. setupWizard.specifyFile=Du må angi en offentlig nøkkel-fil for å kunne fortsette setupWizard.installFailed=Det virker som om installasjonen ikke gikk bra. Prøv igjen eller installer GnuPG manuelt og angi plassering med Bla igjennom-knappen. setupWizard.downloadForbidden=For din egen sikkerhet laster vi ikke ned GnuPG automatisk. Besøk http://www.gnupg.org/ for å laste det ned. setupWizard.downloadImpossible=Kan ikke laste ned GnuPG nå. Prøv igjen senere, eller gå til http://www.gnupg.org/ for å laste det ned. setupWizard.hashSumError=Installasjonsveilederen kunne ikke verifisere integriteten til den nedlastede filen. Filen kan være ødelagt eller manipulert. Vil du fortsette installasjonen uansett? setupWizard.importSettingsFile=Angi fil å hente sikkerhetskopi fra setupWizard.invalidSettingsFile=Den angitte filen er ikke en gyldig sikkerhetskopi av Enigmail-innstillinger. setupWizard.gpgConfExists=Konfigurasjonsfil for GnuPG finnes allerede. Vil du overskrive den med versjonen fra din gamle installasjon? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Det oppsto en feil under nedlasting av GnuPG. Sjekk konsolloggen for flere detaljer. installGnuPG.installFailed=Det oppsto en feil under installasjon av GnuPG. Sjekk konsolloggen for flere detaljer. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Du må angi et navn og en e-postadresse addUidDlg.nameMinLengthError=Navnet må innholdet minst fem tegn addUidDlg.invalidEmailError=Du må angi en gyldig e-postadresse addUidDlg.commentError=Parenteser er ikke tillatt i kommentarer # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP-smartkort støtter kun ASCII-tegn i Fornavn/Navn. # network error types errorType.SecurityCertificate=Sikkerhetssertifikatet til webtjenesten er ikke gyldig errorType.SecurityProtocol=Sikkerhetsprotokollen brukt av webtjenesten er ikke kjent errorType.Network=En nettverksfeil har oppstått # filter stuff filter.folderRequired=Du må velge en målkatalog filter.decryptMove.label=Dekrypter permanent (Enigmail) filter.decryptCopy.label=Lag dekryptert kopi (Enigmail) filter.decryptMove.warnExperimental=Advarsel - filtreringshandlingen "Dekrypter permanent" kan føre til ødelagte meldinger. \n \nVi anbefaler på det sterkeste at du først prøver "Lag dekryptert kopi"-filteret, tester resultatet nøye, og at du ikke benytter "Dekryptert permanent" før du er fornøyd med resultatet av testingen. # strings in enigmailConvert.jsm converter.decryptBody.failed=Kunne ikke dekryptere melding med emne \n"%S". \nVil du prøve igjen med en annen passfrase eller vil du hoppe over meldingen? converter.decryptAtt.failed=Kunne ikke dekryptere vedlegget "%1$S" \ntil meldingen med emne \n"%2$S" \nVil du prøve igjen med en annen passfrase eller vil du hoppe over meldingen? saveLogFile.title=Lagre loggfil # strings in gpg.jsm unknownSigningAlg=Ukjent signeringsalgoritme (ID: %S) unknownHashAlg=Ukjent kryptografisk hash (ID: %S) # strings in keyRing.jsm keyring.photo=Bilde keyRing.pubKeyRevoked=Nøkkelen %1$S (nøkkel-ID %2$S) er trukket tilbake. keyRing.pubKeyExpired=Nøkkelen %1$S (nøkkel-ID %2$S) er utløpt. keyRing.pubKeyNotForSigning=Nøkkelen %1$S (nøkkel-ID %2$S) kan ikke brukes til signering. keyRing.pubKeyNotForEncryption=Nøkkelen %1$S (nøkkel-ID %2$S) kan ikke brukes til kryptering. keyRing.keyDisabled=Nøkkelen %1$S (nøkkel-ID %2$S) er deaktivert; den kan ikke brukes. keyRing.keyNotTrusted=Nøkkelen %1$S (nøkkel-ID %2$S) er ikke tiltrodd nok. Sett tillitsnivået for nøkkelen din til "ultimat" for å bruke den til signering. keyRing.keyInvalid=Nøkkelen %1$S (nøkkel-ID %2$S) er ugyldig (det kan for eksempel være den ikke er selvsignert). keyRing.signSubKeysRevoked=Alle undernøkler for signering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er tilbakekalt. keyRing.signSubKeysExpired=Alle undernøkler for signering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er utløpt. keyRing.signSubKeysUnusable=Alle undernøkler for signering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er tilbakekalt, har løpt ut eller er av andre grunner ikke mulige å bruke. keyRing.encSubKeysRevoked=Alle undernøkler for kryptering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er tilbakekalt. keyRing.encSubKeysExpired=Alle undernøkler for kryptering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er utløpt. keyRing.noSecretKey=Det virker ikke som du har privatnøkkelen til %1$S (nøkkel-ID %2$S) i nøkkelringen din. Du kan derfor ikke benytte denne nøkkelen for signering. keyRing.encSubKeysUnusable=Alle undernøkler for kryptering tilhørende nøkkel %1$S (nøkkel-ID %2$S) er tilbakekalt, har løpt ut eller er av andre grunner ikke mulige å bruke. #strings in exportSettingsWizard.js cannotWriteToFile=Kan ikke lagre til filen '%S'. Angi en annen fil. dataExportError=En feil oppsto under eksport av dataene dine. enigmailSettings=Enigmail-innstillinger defaultBackupFileName=Enigmail-eksport specifyExportFile=Angi filnavn for eksport homedirParamNotSUpported=Parametre som angir stier, som --homedir og --keyring, er ikke støttet ved eksport og import av innstillinger. Bruk andre metoder slik som å sette miljøvariabelen GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Din nøkkel %1$S utløper om mindre enn %2$S dager. \n \nVi anbefaler at du lager et nytt nøkkelpar og konfigurerer de aktuelle kontoene til å benytte den nye nøkkelen. expiry.keysExpireSoon=De følgende nøklene dine utløper om mindre enn %1$S dager: %2$S. Vi anbefaler at du lager nye nøkler og konfigurerer kontoene dine til å bruke de nye nøklene. enigmail/lang/nb-NO/help/000077500000000000000000000000001266701624400154355ustar00rootroot00000000000000enigmail/lang/nb-NO/help/compose.html000066400000000000000000000100751266701624400177730ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/nb-NO/help/editRcptRule.html000066400000000000000000000115571266701624400207420ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/nb-NO/help/initError.html000066400000000000000000000045361266701624400203100ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/nb-NO/help/messenger.html000066400000000000000000000101211266701624400203060ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/nb-NO/help/rulesEditor.html000066400000000000000000000060311266701624400206240ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/nb-NO/help/sendingPrefs.html000066400000000000000000000047771266701624400207710ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/nl/000077500000000000000000000000001266701624400142055ustar00rootroot00000000000000enigmail/lang/nl/am-enigprefs.properties000066400000000000000000000001241266701624400206750ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP-beveiliging enigmail/lang/nl/enigmail.dtd000066400000000000000000001435121266701624400164750ustar00rootroot00000000000000 OpenPGP)"> OPMERKING: Het maken van een sleutel kan meerdere minuten duren. Sluit het programma niet af tijdens dit proces. Het helpt om tegelijkertijd websites te bezoeken of acties uit te voeren die de harde schijf intensief gebruiken. Dit zorgt ervoor dat het ‘willekeurbuffer’ gevuld blijft en dat het aanmaken van de sleutel sneller verloopt. Zodra de sleutel klaar is wordt een melding getoond."> ’ is ongeldig"> LET OP: Het genereren van een sleutel kan enkele minuten duren. Sluit het programma niet tijdens het aanmaken van de sleutel. U zal gewaarschuwd worden als de sleutel aangemaakt is."> Let op: Enigmail zal altijd de ondertekeningen van e-mails controleren, of Enigmail nu ingeschakeld is voor die account of niet."> publieke sleutel kunnen andere personen u versleutelde berichten sturen. U kunt hem aan iedereen geven."> geheime, privé sleutel is alleen voor uzelf en is nodig om e-mails te ontcijferen en om ondertekende e-mails te verzenden. U moet deze sleutel geheim houden en aan niemand geven."> geheime, privé sleutel is alleen voor uzelf en is nodig om e-mails te ontcijferen en om ondertekende e-mails te verzenden. U moet deze sleutel geheim houden en aan niemand geven. Om uw privésleutel te beschermen, wordt u in de volgende twee dialogen om een wachtwoordzin gevraagd."> wachtwoordzin is een wachtwoord om uw privésleutel mee te beschermen. Het voorkomt misbruik van uw privésleutel."> niet aanbevolen."> U wordt gevraagd om hier een wachtwoord voor in te geven."> exporteer uw gegevens van uw oude computer door middel van de backup-wizard in de Enigmail-instellingen importeer de gegevens op uw nieuwe computer door middel van deze wizard. "> Bedankt dat u voor Enigmail gekozen hebt."> exporteer uw gegevens van uw oude computer door middel van deze wizard importeer de gegevens op uw nieuwe computer door middel van de Installatiewizard. "> enigmail/lang/nl/enigmail.properties000066400000000000000000001163131266701624400201150ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Waarschuwing van Enigmail enigConfirm=Bevestiging van Enigmail enigError=Fout van Enigmail enigPrompt=Vraag van Enigmail dlgYes=&Ja dlgNo=&Nee dlgKeepSetting=Mijn antwoord onthouden en niet opnieuw vragen dlgNoPrompt=Dit dialoogvenster niet opnieuw tonen dlg.button.delete=&Verwijderen dlg.button.cancel=&Annuleren dlg.button.close=&Sluiten dlg.button.continue=&Doorgaan dlg.button.skip=&Overslaan dlg.button.overwrite=&Overschrijven dlg.button.view=&Bekijken dlg.button.retry=&Opnieuw proberen dlg.button.ignore=&Negeren repeatPrefix=\n\nDeze waarschuwing zal zich %S repeatSuffixSingular=keer herhalen. repeatSuffixPlural=keren herhalen. noRepeat=\n\nDeze waarschuwing zal niet herhaald worden tot u Enigmail bijwerkt. pgpNotSupported=U gebruikt Enigmail samen met PGP 6.x\n\nJammer genoeg zijn er een aantal problemen met PGP 6.x die Enigmail weerhouden om correct te functioneren. Daarom ondersteunt Enigmail PGP 6.x niet meer; u kunt GnuPG (GPG) in de plaats gebruiken.\n\nAls u hulp nodig hebt om naar GnuPG over te schakelen, controleer dan de helpsectie op de website van Enigmail. initErr.howToFixIt=Om Enigmail te gebruiken heeft u GnuPG nodig. Als u GnuPG nog niet heeft geïnstalleerd, kunt u op ‘Installatieassistent’ klikken. initErr.setupWizard.button=&Installatieassistent passphraseCleared=De wachtwoordzin is vergeten. cannotClearPassphrase=U gebruikt een niet-standaard hulpmiddel (zoals gnome-keyring) voor het afhandelen van wachtwoorden. Het is daarom niet mogelijk om het wachtwoord vanuit Enigmail leeg te maken. noPhotoAvailable=Geen foto beschikbaar debugLog.title=Debuglogboek van Enigmail error.photoPathNotReadable=Fotopad ‘%S’ is niet leesbaar # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Deze nieuwe versie van Enigmail heeft significante wijzigingen in de afhandeling van voorkeuren en opties. We hebben geprobeerd om de oude instellingen over te nemen in deze nieuwe versie, maar we kunnen dit niet in alle gevallen garanderen. Controleer de nieuwe voorkeuren en opties nogmaals voor de zekerheid. enigmailCommon.checkPreferences=Voorkeuren controleren… preferences.defaultToPgpMime=We hebben het standaard versleutel protocol in Enigmail veranderd van Inline-PGP naar PGP/MIME. We raden aan om deze standaardinstelling zo te laten.\n\nAls u toch standaard Inline-PGP wilt gebruiken, kunt u dit doen in Accountinstellingen onder OpenPGP-beveiliging. usingVersion=Huidige versie van Enigmail %S usingAgent=Uitvoerbaar bestand %2$S voor %1$S wordt gebruikt om te versleutelen en te ontcijferen agentError=FOUT: bereiken van de Enigmime-service mislukt! accessError=Fout in het bereiken van de Enigmail-service onlyGPG=Sleutelgeneratie werkt enkel met GnuPG (niet met PGP)! keygenComplete=Sleutelgeneratie afgerond! Identiteit <%S> zal gebruikt worden om te ondertekenen. revokeCertRecommended=We raden u ten sterkste aan om een intrekkingscertificaat voor uw sleutel aan te maken. Dit certificaat kan gebruikt worden om uw sleutel ongeldig te maken, bijvoorbeeld als u uw geheime sleutel verloren bent of deze gestolen wordt. Wilt u nu een intrekkingscertificaat aanmaken? keyMan.button.generateCert=Certificaat &aanmaken genCompleteNoSign=Sleutelgeneratie afgerond! genGoing=Sleutelgeneratie is al bezig! passNoMatch=Wachtwoordzinnen komen niet overeen; geef ze opnieuw in passCheckBox=Vink af als u geen wachtwoordzin gebruikt voor deze sleutel passUserName=Specificeer een gebruikersnaam voor deze identiteit keygen.missingUserName=Er is geen naam voor de gekozen account/identiteit opgegeven. Geef een waarde in in het veld ‘Uw naam’ in de Accountinstellingen. keygen.passCharProblem=U gebruikt bijzondere tekens in uw wachtwoordzin. Helaas kan dit problemen veroorzaken met andere programma’s. Het is raadzaam een wachtwoordzin te kiezen die uitsluitend de volgende tekens bevat:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Om technische redenen is het niet mogelijk dat uw wachtwoordzin met een spatie begint of op een spatie eindigt. changePassFailed=Wijzigen van wachtwoordzin mislukt. keyConfirm=Publieke en geheime sleutel voor ‘%S’ aanmaken? keyMan.button.generateKey=&Geheime sleutel aanmaken keyAbort=Aanmaken sleutel afbreken? keyMan.button.generateKeyAbort=&Aanmaken sleutel annuleren keyMan.button.generateKeyContinue=&Doorgaan met aanmaken sleutel expiryTooLong=Het is niet mogelijk om een sleutel te maken die over meer dan 100 jaar vervalt. expiryTooLongShorter=Het is niet mogelijk om een sleutel te maken die over meer dan 90 jaar vervalt. expiryTooShort=Uw sleutel moet voor minstens één dag geldig zijn. dsaSizeLimit=DSA-ondertekensleutels kunnen maximaal 3072 bits lang zijn. De sleutelgrootte wordt overeenkomstig aangepast. keyGenFailed=Sleutelgeneratie mislukt. Controleer de console van Enigmail voor details (Menu Enigmail > Enigmail debuggen). setKeyExpirationDateFailed=De vervaldatum kon niet worden veranderd # Strings in enigmailMessengerOverlay.js securityInfo=Beveiligingsinformatie van Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Bijlagen bij dit bericht zijn niet ondertekend of versleuteld*\n\n possiblyPgpMime=Mogelijk met PGP/MIME versleuteld of ondertekend bericht; klik op de knop Ontcijferen om te verifiëren noDecrypted=Geen ontcijferd bericht om op te slaan!\nGebruik het commando Opslaan uit het Bestandsmenu noMessage=Geen bericht om op te slaan! useButton=Klik op Ontcijferen om het bericht te ontcijferen saveHeader=Enigmail: Ontcijferd bericht opslaan saveAttachmentHeader=Enigmail: Ontcijferde bijlage opslaan noTempDir=Kon geen tijdelijke map vinden om naar te schrijven\nStel de omgevingsvariabele TEMP in attachmentPgpKey=De bijlage ‘%S’ die u wilt openen blijkt een OpenPGP-sleutelbestand te zijn.\n\nKlik op Importeren om de ingesloten sleutels te importeren of klik op Bekijken om de inhoud van het bestand te bekijken in een browservenster beginPgpPart=********* *BEGIN VERSLEUTELD of ONDERTEKEND DEEL* ********* endPgpPart=********** *EINDE VERSLEUTELD of ONDERTEKEND DEEL* ********** notePartEncrypted=Enigmail: *Delen van het bericht zijn NIET ondertekend of versleuteld* noteCutMessage=Enigmail: *Meerdere berichtblokken gevonden -- ontcijferen/verifiëren afgebroken* decryptOkNoSig=Waarschuwing\n\nOntcijfering was succesvol, maar de ondertekening kon niet correct geverifieerd worden msgOvl.button.contAnyway=&Toch doorgaan signature.verifiedOK=De ondertekening voor bijlage %S is met succes geverifieerd signature.verifyFailed=De ondertekening voor bijlage %S kon niet worden geverifieerd attachment.noMatchToSignature=Kon bijlage ‘%S’ niet koppelen aan een ondertekeningsbestand attachment.noMatchFromSignature=Kon ondertekeningsbestand ‘%S’ niet koppelen aan een bijlage fixBrokenExchangeMsg.failed=Berichtreparatie mislukt. keysToExport=Selecteer OpenPGP sleutels om in te voegen keysToUse=Selecteer OpenPGP-sleutel(s) om te gebruiken voor %S pubKey=Publieke sleutel voor %S\n windowLocked=Opstelvenster is geblokkeerd; verzending geannuleerd sendUnencrypted=Initialiseren van Enigmail mislukt.\nNiet-versleuteld bericht verzenden? composeSpecifyEmail=Geef uw primaire e-mailadres op. Dit zal gebruikt worden om de sleutel te kiezen om uitgaande berichten te ondertekenen.\nAls u dit niet invult, wordt het VAN-adres van het bericht gebruikt om de sleutel te kiezen. sendingHiddenRcpt=Dit bericht heeft BCC-ontvangers (blind copy). Als dit bericht wordt versleuteld, is het mogelijk om de BCC-ontvangers te verbergen maar gebruikers van sommige producten (bv. PGP Corp.) zullen niet in staat zijn om het bericht te ontcijferen. Gezien dit feit, raden wij aan BCC-emails te vermijden bij versleutelde berichten. sendWithHiddenBcc=BCC-ontvangers verbergen sendWithShownBcc=Normaal versleutelen sendingNews=Versleutelde verzending afgebroken.\n\nDit bericht kan niet versleuteld worden omdat er nieuwsgroepontvangers zijn. Verzend het bericht opnieuw zonder versleuteling. sendToNewsWarning=u staat op het punt een versleutelde e-mail te versturen naar een nieuwsgroep.\n\nDit wordt afgeraden omdat dit alleen zin heeft als alle leden van de groep dit bericht kunnen ontcijferen, dus het bericht moet worden versleuteld met de sleutels van alle leden van de groep. Verstuur dit bericht alleen als u precies weet wat u doet.\n\nDoorgaan? hasHTML=HTML-bericht-waarschuwing:\nDit bericht bevat vermoedelijk HTML en dit kan ervoor zorgen dat ondertekening of versleuteling mislukt. Houd de SHIFT-toets ingedrukt wanneer u op de Opstellen/Antwoorden-knop drukt om een ondertekend bericht te versturen en dit probleem in de toekomst te vermijden. Als u dit berichten standaard ondertekent, vink dan de optie ‘Berichten opstellen in HTML-formaat’ uit om het gebruik van HTML voor deze account definitief uit te schakelen. strippingHTML=Het bericht bevat HTML-opmaakinformatie. Deze gaat verloren bij het converteren naar platte tekst voor ondertekening of versleuteling. Wilt u doorgaan? msgCompose.button.sendAnyway=Bericht toch &versturen attachWarning=Bijlagen bij dit bericht zijn niet lokaal, dus ze kunnen niet versleuteld worden. Om bijlagen te versleutelen dient u ze eerst lokaal op te slaan en dan toe te voegen. Bericht toch versturen? quotedPrintableWarn=U hebt de ‘quoted-printable’-codering voor het verzenden van berichten ingeschakeld. Dit kan resulteren in een incorrecte ontcijfering of verificatie van uw bericht.\nWenst u de ‘quoted-printable’-optie nu uit te schakelen? minimalLineWrapping=U hebt lijnafbreking ingesteld op %S karakters. Voor correcte versleuteling en/of ondertekening moet dit getal minstens 68 zijn.\nWilt u de lijnafbreking nu naar 68 karakters veranderen? warning=Waarschuwing signIconClicked=U hebt handmatig ondertekenen aangepast. Daarom zal, terwijl u dit bericht opstelt, het (de)activeren van de ondertekening niet meer afhangen van het (de)activeren van de versleuteling. pgpMime_sMime.dlg.text=U heeft zowel PGP/MIME als S/MIME ingeschakeld. Het is helaas niet mogelijk om beide protocollen tegelijk te ondersteunen. Selecteer aub of u PGP/MIME of S/MIME wilt gebruiken. pgpMime_sMime.dlg.pgpMime.button=Gebruik &PGP/MIME pgpMime_sMime.dlg.sMime.button=Gebruik &S/MIME errorKeyUnusable=Het e-mailadres of de sleutel ID ‘%S’ kan niet gekoppeld worden aan een geldig, niet-verlopen OpenPGP sleutel.\nVerzeker uzelf er van dat u een geldige OpenPGP sleutel heeft en dat uw account instellingen naar deze sleutel wijzen. errorOwnKeyUnusable=Het sleutel-ID ‘%S’ welke geconfigureerd is voor de huidige identiteit levert geen bruikbare OpenPGP-sleutel op.\n\nZorg ervoor dat u een geldige, niet vervallen OpenPGP-sleutel heeft en dat deze in uw accountinstellingen staat ingesteld.\nAls uw sleutel niet vervallen is, controleer dan of u het Eigenaarsvertrouwen op volledig of maximaal hebt ingesteld. msgCompose.cannotSaveDraft=Fout bij opslaan van concept msgCompose.internalEncryptionError=Interne fout: beloofde versleuteling uitgeschakeld msgCompose.internalError=Er is een interne fout opgetreden. msgCompose.toolbarTxt.signAndEncrypt=Dit bericht zal worden ondertekend en versleuteld msgCompose.toolbarTxt.signOnly=Dit bericht zal worden ondertekend msgCompose.toolbarTxt.encryptOnly=Dit bericht zal worden versleuteld msgCompose.toolbarTxt.noEncryption=Dit bericht zal niet worden ondertekend en niet worden versleuteld msgCompose.toolbarTxt.disabled=Enigmail is uitgeshakeld voor het gekozen profiel msgCompose.toolbarTxt.smime=S/MIME is ingeschakeld. Dit kan problemen met Enigmail veroorzaken msgCompose.toolbarTxt.smimeOff=- S/MIME wordt daarom niet gebruikt msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME is ingeschakeld - Enigmail wordt daarom niet gebruikt msgCompose.toolbarTxt.smimeNoDraftEncryption=- concepten worden niet versleuteld msgCompose.toolbarTxt.smimeConflict=Enigmail wordt niet gebruikt, omdat S/MIME momenteel is ingeschakeld. Schakel S/MIME ondertekening/versleuteling uit en schakel daarna Enigmail versleuteling in msgCompose.encryptedSubjectStub=Versleuteld bericht msgCompose.detailsButton.label=Details… msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Verzendhandeling afgebroken.\n\n # details: keyNotTrusted=Niet voldoende vertrouwensbasis voor sleutel ‘%S’ keyNotFound=Sleutel ‘%S’ niet gevonden keyRevoked=Sleutel ‘%S’ ingetrokken keyExpired=Sleutel ‘%S’ verlopen statPGPMIME=PGP/MIME statSigned=ONDERTEKEND statEncrypted=VERSLEUTELD statPlain=PLATTE TEKST offlineSave=%S bericht opslaan naar %S in map Niet-verzonden berichten? onlineSend=Verzend %S bericht naar %S? encryptKeysNote=Let op: het bericht is versleuteld met het volgende gebruiker ID/sleutel: %S hiddenKey= signFailed=Fout in Enigmail; Versleuteling/ondertekening mislukt; niet versleuteld bericht verzenden? msgCompose.button.sendUnencrypted=&Verstuur onversleuteld bericht recipientsSelectionHdr=Selecteer ontvangers voor versleuteling configureNow=U hebt Enigmail beveiliging nog niet ingesteld voor de geselecteerde identiteit. Wilt u dit nu doen? # encryption/signing status and associated reasons: encryptMessageAuto=Bericht versleutelen (auto) encryptMessageNorm=Bericht versleutelen signMessageAuto=Bericht ondertekenen (auto) signMessageNorm=Bericht ondertekenen encryptOff=Versleuteling: UIT encryptOnWithReason=Versleuteling: AAN (%S) encryptOffWithReason=Versleuteling: UIT (%S) encryptOn=Versleuteling: AAN signOn=Ondertekenen: AAN signOff=Ondertekenen: UIT signOnWithReason=Ondertekenen: AAN (%S) signOffWithReason=Ondertekenen: UIT (%S) reasonEnabledByDefault=standaard ingeschakeld reasonManuallyForced=handmatig afgedwongen reasonByRecipientRules=afgedwongen door ontvangerregels reasonByAutoEncryption=afgedwongen door automatische versleuteling reasonByConflict=vanwege een conflict in de ontvangerregels reasonByEncryptionMode=vanwege de verlseutelingsmodus reasonSmimeConflict=omdat S/MIME in plaats daarvan is ingesteld # should not be used anymore: encryptYes=Bericht zal versleuteld worden encryptNo=Bericht zal niet versleuteld worden # should not be used anymore: signYes=Bericht zal ondertekend worden signNo=Bericht zal niet ondertekend worden # PGP/MIME status: pgpmimeNormal=Protocol: PGP/MIME inlinePGPNormal=Protocol: Inline PGP pgpmimeAuto=Protocol: PGP/MIME (auto) inlinePGPAuto=Protocol: Inline PGP (auto) # should not be used anymore pgpmimeYes=PGP/MIME zal worden gebruikt pgpmimeNo=Inline PGP zal worden gebruikt # Attach own key status (tooltip strings): attachOwnKeyNo=Uw eigen publieke sleutel zal niet worden gekoppeld attachOwnKeyYes=Uw eigen publieke sleutel zal worden gekoppeld attachOwnKeyDisabled=Uw eigen publieke sleutel kan niet worden gekoppeld. U moet een specifieke sleutel opgeven\nbij OpenPGP-beveiliging van de Accountinstellingen om deze functie in te schakelen. rulesConflict=Conflicterende per-ontvanger regels ontdekt\n%S\n\nBericht met deze instellingen verzenden? msgCompose.button.configure=&Instellen msgCompose.button.send=&Verstuur bericht msgCompose.button.save=&Bewaar bericht # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Publieke sleutel %S is nodig om de ondertekening te verifiëren keyUsed=Publieke sleutel %S gebruikt om handtekening te verifiëren clickDecrypt=; klik op de Ontcijferen knop clickDecryptRetry=; klik op de Ontcijferen knop om nogmaals te proberen clickDetailsButton=; klik op ‘Details’ voor meer informatie clickImportButton=; klik op ‘Sleutel Importeren’ om de sleutel te downloaden keyTypeUnsupported=; het sleuteltype wordt niet door uw versie van GnuPG ondersteund msgPart=Deel van het bericht %S msgSigned=ondertekend msgSignedUnkownKey=ondertekend met onbekende sleutel msgEncrypted=versleuteld msgSignedAndEnc=ondertekend en versleuteld unverifiedSig=Ongeverifieerde ondertekening incompleteDecrypt=Ontcijfering onvolledig needKey=Fout - geheime sleutel nodig om het bericht te ontcijferen failedDecrypt=Fout - ontcijfering mislukt badPhrase=Fout - verkeerde wachtwoordzin failedDecryptVerify=Fout - ontcijfering/verificatie mislukt viewInfo=; Beeld > Beveiliginginfo voor details decryptedMsg=Ontcijferd bericht decryptedMsgWithFormatError=Ontcijfer bericht (hersteld kapotte PGP e-mailformaat veroorzaakt door een oude Exchange server, waardoor het resultaat misschien niet perfect leesbaar is) usedAlgorithms=Gebruikte algoritmen: %S en %S # strings in pref-enigmail.js oldGpgVersion14=Initialisatie van Enigmail mislukt.\n\nU gebruikt GnuPG versie %S, welke niet meer ondersteund wordt. Enigmail vereist GnuPG versie 2.0.7 of nieuwer. Upgrade uw installie van GnuPG, anders zal Enigmail niet werken. locateGpg=Localiseer GnuPG programma invalidGpgPath=GnuPG kan niet starten met het pad dat u opgegeven hebt. Enigmail zal uitgeschakeld zijn totdat u het pad van GnuPG opnieuw veranderd of totdat u het programma herstart. warningsAreReset=Alle waarschuwingen zijn gereset. prefs.gpgFound=GnuPG is gevonden in %S prefs.gpgNotFound=Kon GnuPG niet vinden prefs.warnAskNever=Waarschuwing: het aanzetten van deze optie zal leiden tot onversleutelde emails zonder enig bericht als er geen sleutel is voor een van de ontvangers -- Enigmail zal u niet informeren als dit gebeurt! prefs.warnIdleTimeForUnknownAgent=Kon geen verbinding met gpg-agent maken. Misschien gebruikt je systeem een aangepast programma voor het afhandelen van je wachtwoordzin (bv. gnome-keyring of seahorse-agent). Enigmail heeft helaas geen invloed op de geldigheidsduur van de wachtwoordzin van het programma dat je gebruikt. De instellingen in Enigmail worden daarom genegeerd. prefEnigmail.oneKeyserverOnly=Fout - u kunt slechts één sleutelserver instellen voor automatisch downloaden van missende OpenPGP sleutels. enterAdminPin=Typ de ADMIN PIN van uw SmartCard enterCardPin=Typ de PIN van uw SmartCard notInit=Fout - Enigmail service nog niet geïnitialiseerd badCommand=Fout - versleutelcommando mislukt cmdLine=commandolijn en uitvoer: notRequired=Fout - geen versleuteling vereist notComplete=Fout - sleutelgeneratie nog niet afgerond invalidEmail=Fout - ongeldig(e) e-mailadres(sen) noPassphrase=Fout - geen wachtwoordzin opgegeven noPGPblock=Fout - Geen geldig gewapend OpenPGP gegevensblok gevonden unverifiedReply=Ingesprongen berichtdeel (antwoord) is waarschijnlijk aangepast keyInMessageBody=Sleutel in berichttekst gevonden. Klik ‘Sleutel importeren’ om de sleutel te importeren sigMismatch=Fout - Ondertekeningen komen niet overeen cantImport=Fout bij het importeren van publieke sleutel\n\n doImportOne=%1$S (%2$S) importeren? doImportMultiple=De volgende sleutels importeren?\n\n%S previewFailed=Kan het bestand met de publieke sleutel niet importeren. # Strings used in errorHandling.jsm sc.wrongCardAvailable=De SmartCard %1$S, die in uw lezer is gevonden, kan niet worden gebruikt om dit bericht te verwerken.\nVoer SmartCard %S in en herhaal de handeling. sc.insertCard=Deze handeling vereist uw SmartCard %S. \nVoer de vereiste kaart in en herhaal de handeling. sc.removeCard=Deze handeling vereist geen SmartCard in de lezer. \nVerwijder uw kaart en herhaal de handeling. sc.noCardAvailable=Geen SmartCard gevonden in de lezer.\nVoer uw kaart in en herhaal de handeling. sc.noReaderAvailable=Uw SmartCardlezer kon niet gevonden worden.\nKoppel uw SmartCardreader aan, voer uw kaart in en herhaal de handeling. keyError.keySpecNotFound=Het e-mailadres ‘%S’ komt niet overeen met een sleutel in uw keyring. keyError.keyIdNotFound=De ingestelde sleutel-ID ‘%S’ kan niet in uw keyring worden gevonden. keyError.resolutionAction=Kies een geldige sleutel in OpenPGP-beveiliging bij uw Accountinstellingen. missingPassphrase=Ontbrekend wachtwoord errorHandling.gpgAgentInvalid=Er draait een versie van gpg-agent op uw systeem die niet geschikt is voor uw GnuPG versie. errorHandling.gpgAgentError=GnuPG rapporteerde een fout in de communicatie met gpg-agent (een component van GnuPG). errorHandling.dirmngrError=GnuPG rapporteerde een fout in de communicatie met dirmngr (een component van GnuPG). errorHandling.pinentryError=GnuPG kan niet om uw wachtwoord vragen via pinentry. errorHandling.readFaq=Dit is een systeeminstallatie- of configuratiefout waardoor Enigmail niet goed kan werken en dit kan niet automatisch worden hersteld.\n\nWe raden ten zeerste aan om onze ondersteuningswebsite https://enigmail.net/faq te raadplegen. gpgNotFound=Niet in staat om het GnuPG programma ‘%S’ te localiseren.\nZorg ervoor dat u het uitvoerbaar pad van GPG juist ingesteld hebt in uw Enigmail voorkeuren. gpgNotInPath=Niet in staat om GnuPG te localiseren in het PATH.\nZorg ervoor dat u het uitvoerbaar pad van GPG juist ingesteld hebt in uw Enigmail voorkeuren. enigmailNotAvailable=Enigmail core services is niet beschikbaar gpgAgentNotStarted=Kon het gpg-agent programma niet starten dat vereist is voor uw versie van GnuPG, %S. prefUntrusted=ONVERTROUWD prefRevoked=INGETROKKEN SLEUTEL prefExpiredKey=VERVALLEN SLEUTEL prefExpired=VERVALLEN prefGood=Goede ondertekening van %S prefBad=VERKEERDE ondertekening van %S failCancel=Fout - Sleutelontvangst geannuleerd door gebruiker failNoServer=Fout - Geen sleutelserver opgegeven om sleutels van te ontvangen failNoID=Fout - Geen sleutel ID opgegeven om een sleutel voor te ontvangen failKeyExtract=Fout - sleutel extractiecommando mislukt notFirstBlock=Fout - Eerste OpenPGP blok is geen publiek sleutel blok importKeyConfirm=Publieke sleutel(s) die ingesloten zijn in het bericht importeren? failKeyImport=Fout - sleutel importeren mislukt fileWriteFailed=Schrijven naar bestand %S mislukt importKey=Importeer publieke sleutel %S van sleutelserver: uploadKey=Stuur publieke sleutel %S naar sleutelserver: keyId=Sleutel ID keyAndSigDate=Sleutel ID: 0x%1$S / Ondertekend op: %2$S keyFpr=Vingerafdruk sleutel: %S noEmailProvided=U vergat het e-mailadres! keyAlreadySigned=De sleutel is reeds ondertekend. U kan het geen twee keer ondertekenen. gnupg.invalidKey.desc=Sleutel %S niet gevonden of niet geldig. De (sub)sleutel is mogelijk vervallen. selKeyExpired=vervallen %S createdHeader=Aangemaakt atLeastOneKey=Geen sleutel geselecteerd! U moet minstens één sleutel kiezen in dit dialoogvenster fewerKeysThanRecipients=U heeft een kleiner aantal sleutels geselecteerd dan er ontvangers zijn. Weet u zeker dat de lijst van sleutels volledig is? userSel.button.goBack=Selecteer meer sleutels userSel.secretKeySel.title=Selecteer een Geheime OpenPGP sleutel om uw berichten te ondertekenen userSel.problemNoKey=Geen geldige sleutel userSel.problemMultipleKeys=Meerdere sleutels # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Later versturen # Strings used in enigmailAttachmentDialog.js pgpMimeNote=LET OP: PGP/MIME wordt maar door een beperkt aantal e-mailprogramma’s ondersteund! Op Windows ondersteunen alleen Mozilla/Thunderbird, Sylpheed, Pegasus en Mulberry deze standaard; op Linux/UNIX en Mac OS X ondersteunen de meest populaire e-mailprogramma’s deze standaard. Als u onzeker bent, kies dan de %S optie. first=eerste second=tweede # Strings used in am-enigprefs.js encryptKeyHeader=Selecteer OpenPGP sleutel voor versleuteling identityName=Identiteit: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=U hebt versleuteling geactiveerd, maar u hebt geen sleutel geselecteerd. Om versleutelde mails naar %S te verzenden dient u een geldige sleutel op te geven uit uw sleutellijst. Wilt u versleuteling voor %S uitschakelen? noKeyToUse=(geen - niet versleutelen) noEmptyRule=De regel mag niet leeg zijn! Geef alstublieft een e-mailadres op in het Regelveld invalidAddress=Het e-mailadres dat u ingeeft is niet geldig. U mag de naam van de ontvangers niet gebruiken, enkel hun e-mailadres. Bv.:\nOngeldig: Een Naam \nGeldig: een.naam@adres.net noCurlyBrackets=De accolades {} hebben een speciale betekenis en zouden niet in het e-mailadres mogen gebruikt worden. Als u de de vergelijkingsfuncties wilt aanpassen voor deze regel, gebruik dan de ‘Pas regel toe als ontvanger ...’ optie.\nMeer informatie is beschikbaar als u op de Helpknop klikt. # Strings used in enigmailRulesEditor.js never=Nooit always=Altijd possible=Mogelijk deleteRule=De geselecteerde regel echt verwijderen? nextRcpt=(Volgende ontvanger) negateRule=Niet addKeyToRule=Voeg sleutel %1$S (%2$S) aan per ontvanger regel toe # Strings used in enigmailSearchKey.js needOnline=De functie die u geselecteerd hebt, is niet beschikbaar in de offline modus. Ga alstublieft online en probeer opnieuw. protocolNotSupported=Het protocol ‘%S://’ dat u geselecteerd heeft, wordt niet ondersteund bij het downloaden van OpenPGP sleutels. gpgkeysDisabled=Het zou helpen als u de optie ‘extensions.enigmail.useGpgKeysTool’ inschakelde. noKeyserverConn=Kon niet met server verbinden op %S. keyDownloadFailed=Downloaden sleutel van sleutelserver mislukt. Statusbericht is:\n%S internalError=Interne fout opgetreden. De sleutels konden niet gedownload of geïmporteerd worden. noKeyFound=Sorry, ik kon geen sleutel vinden die aan de zoekcriteria voldoet.\nOnthoud dat de sleutel ID’s voorafgegaan moeten worden door ‘0x’ (bv. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Zoeken of downloaden sleutel van sleutelserver mislukt: gpgkeys_%S kon niet uitgevoerd worden. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Instellen sleutelvertrouwen mislukt # Strings in enigmailSignKeyDlg.js signKeyFailed=Ondertekenen van sleutel mislukt alreadySigned.label=Let op: de sleutel %S is al ondertekend met de geselecteerde geheime sleutel. alreadySignedexportable.label=Noot: de sleutel ‘%S’ is al exporteerbaar ondertekend met de gekozen geheime sleutel. Een lokale ondertekening heeft geen zin. partlySigned.label=Let op: enkele gebruikers ID’s van sleutel %S zijn al ondertekend met de gekozen geheime sleutel. noTrustedOwnKeys=Geen voor ondertekening in aamerking komende sleutel gevonden! U moet tenminste een volledig vertrouwde geheime sleutel hebben om sleutels te kunnen ondertekenen. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Sleutels worden geladen, wacht aub… keyValid.unknown=onbekend keyValid.invalid=ongeldig keyValid.disabled=uitgeschakeld keyValid.revoked=ingetrokken keyValid.expired=vervallen keyValid.noSubkey=geen geldige subsleutel keyTrust.untrusted=onbetrouwbaar keyTrust.marginal=weinig keyTrust.full=betrouwbaar keyTrust.ultimate=volledig keyTrust.group=(groep) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Sleutel inschakelen keyMan.disableKey=Sleutel uitschakelen userAtt.photo=Gebruikerskenmerk (JPEG afbeelding) asciiArmorFile=ASCII armored bestanden (*.asc) importKeyFile=Importeer OpenPGP bestand gnupgFile=GnuPG bestanden saveRevokeCertAs=Intrekkingscertificaat aanmaken en opslaan revokeCertOK=Het intrekkingscertificaat is met succes aangemaakt. U kan dit certificaat gebruiken om uw publieke sleutel ongeldig te maken, bijvoorbeeld als u uw geheime sleutel verloren bent.\n\nVerplaats het alstublieft naar een medium dat veilig opgeborgen kan worden (zoals een floppy of een cd). Als iemand toegang krijgt tot dit certificaat kan hij of zij uw sleutel onbruikbaar maken. revokeCertFailed=Het intrekkingscertificaat kon niet aangemaakt worden. addUidOK=Gebruikers-ID met succes toegevoegd addUidFailed=Toevoegen van gebruikers-ID mislukt noKeySelected=U dient tenminste één sleutel te selecteren om de gevraagde handeling uit te voeren exportToFile=Exporteer publieke sleutel naar bestand exportKeypairToFile=Exporteer Geheime en Publieke Sleutel Naar Bestand exportSecretKey=Wilt u uw geheime sleutel in het opgeslagen OpenPGP bestand bijvoegen? saveKeysOK=De sleutels zijn succesvol opgeslagen saveKeysFailed=Opslaan van sleutels mislukt importKeysFailed=Importeren van sleutels mislukt enableKeyFailed=Sleutels in-/uitschakelen mislukt specificPubKeyFilename=%1$S (0x%2$S) pub specificPubSecKeyFilename=%1$S (0x%2$S) pub-sec defaultPubKeyFilename=Uitgevoerde-publieke-sleutels defaultPubSecKeyFilename=Uitgevoerde-publieke-en-geheime-sleutels noSecretKeys=Geen geheime sleutels gevonden.\n\nWilt u uw eigen sleutel nu aanmaken? sendKeysOk=Sleutel(s) succesvol verzonden sendKeysFailed=Verzenden van sleutels is mislukt receiveKeysOk=Sleutel(s) succesvol geüpdated receiveKeysFailed=Downloaden van sleutels mislukt importFromClip=Wilt u de sleutel(s) van het klembord importeren? importFromUrl=Publieke sleutel van deze URL downloaden: copyToClipbrdFailed=Kopiëren van sleutels naar het klembord mislukt. copyToClipbrdOK=Sleutel(s) naar het klembord gekopieerd deleteSecretKey=WAARSCHUWING: U staat op het punt op een geheime sleutel te verwijderen!\nAls u uw geheime sleutel verwijderd, bent u niet langer in staat om versleutelde berichten voor die sleutel te ontcijferen en u kunt uw sleutel niet meer intrekken.\n\nWilt u echt zowel uw geheime als uw publieke sleutel ‘%S’ verwijderen? deleteMix=WAARSCHUWING: U gaat geheime sleutels verwijderen!\nAls u uw geheime sleutel verwijdert, kan u niet langer uw berichten ontcijferen met die sleutel.\n\nBent u er zeker van dat u BEIDE sleutels wilt verwijderen, zowel de geheime als de publieke sleutel? deletePubKey=Wilt u de publieke sleutel verwijderen?\n‘%S’ deleteSelectedPubKey=Wilt u de publieke sleutels verwijderen? deleteKeyFailed=De sleutel kon niet verwijderd worden. revokeKeyQuestion=U staat op het punt de sleutel ‘%S’ in te trekken.\n\nU kunt niet langer ondertekenen met deze sleutel, en zodra de sleutel verspreid wordt, kunnen anderen deze niet langer gebruiken voor het versleutelen. U kunt deze sleutel nog wel gebruiken voor het ontcijferen van oude berichten.\n\nWilt u doorgaan? revokeKeyOk=De sleutel is ingetrokken. Als uw sleutel op een sleutelserver beschikbaar is, is het aangeraden om de sleutel opnieuw te uploaden zodat anderen de intrekking kunnen zien. revokeKeyFailed=De sleutel kon niet ingetrokken worden. refreshAllQuestion=U selecteerde geen sleutel. Wilt u ALLE sleutels verversen? refreshKey.warn=Waarschuwing: afhankelijk van het aantal sleutels en de verbindingssnelheid kan het verversen van alle sleutels een langduring proces zijn!\n\nVerdergaan? downloadContactsKeys.warn=Let op: Afhankelijk van het aantal contactpersonen en de verbindingssnelheid kan het downloaden van alle sleutels een langdurig proces zijn! downloadContactsKeys.importFrom=Importeer contacten uit adresboek ‘%S’? keyMan.button.exportSecKey=Exporteer &geheime sleutels keyMan.button.exportPubKey=Exporteer &alleen publieke sleutels keyMan.button.import=&Importeren keyMan.button.refreshAll=&Ververs alle sleutels keyMan.button.revokeKey=&Sleutel Intrekken keyMan.button.skip=Sleutel &Overslaan keylist.noOtherUids=Heeft geen andere identiteiten keylist.hasOtherUids=Ook bekend als keylist.noPhotos=Geen foto beschikbaar keylist.hasPhotos=Foto’s keyMan.addphoto.filepicker.title=Selecteer foto om toe te voegen keyMan.addphoto.warnLargeFile=Het bestand dat u gekozen heeft is groter dan 25 kB.\nHet wordt niet aangeraden om grote bestanden toe te voegen, omdat de sleutels anders erg groot kunnen worden. keyMan.addphoto.noJpegFile=Het geselecteerde bestand lijkt geen JPEG bestand te zijn. Kies aub een ander bestand. keyMan.addphoto.failed=De foto kon niet worden toegevoegd. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Aanpassen primair gebruikers-ID mislukt changePrimUidOK=Het primair gebruikers-ID is met succes aangepast deleteUidFailed=Verwijderen van het gebruikers-ID ID %S mislukt deleteUidOK=Verwijderen van gebruikers-ID %S succesvol. revokeUidFailed=Intrekken van het gebruikers-ID %S mislukt revokeUidOK=Gebruikers-ID %S werd succesvol ingetrokken. Als uw sleutel op een sleutelserver beschikbaar is, is het aangeraden om de sleutel opnieuw te uploaden zodat anderen de intrekking kunnen zien. revokeUidQuestion=Wilt u echt het gebruikers-ID %S intrekken? deleteUidQuestion=Wilt u echt gebruikers-ID %S verwijderen?\n\nOnthou: als u uw publieke sleutel op een sleutelserver geplaatst hebt, zal het verwijderen van het gebruikers-ID niets veranderen. In dat geval dient u ‘Gebruikers-ID intrekken’ te gebruiken. # Strings in enigmailKeyImportInfo.xul importInfoTitle=SUCCES! Sleutels geïmporteerd importInfoSuccess=✅ importInfoBits=Bits importInfoCreated=Gecreëerd importInfoFpr=Vingerafdruk importInfoDetails=(Details) importInfoNoKeys=Geen sleutels geïmporteerd. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=publieke sleutel keyTypePrimary=primaire sleutel keyTypeSubkey=subsleutel keyTypePair=sleutelpaar keyExpiryNever=nooit keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Versleutelen keyUsageSign=Ondertekenen keyUsageCertify=Certificeren keyUsageAuthentication=Authenticatie keyDoesNotExpire=Sleutel vervalt nooit # Strings in enigmailGenCardKey.xul keygen.started=Even geduld terwijl de sleutel aangemaakt wordt… keygen.completed=Sleutel aangemaakt. Het nieuwe sleutel-ID is: 0x%S keygen.keyBackup=De back-up van de sleutel is opgeslagen als %S keygen.passRequired=Geef een wachtwoordzin op als u een back-up van uw sleutel buiten uw SmartCard wilt bewaren. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=De PIN’s die u ingaf, kwamen niet overeen; probeer opnieuw cardPin.minLength=De PIN moet uit ten minste %S tekens of nummers bestaan cardPin.processFailed=Wijzigen van PIN mislukt # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Sleutels aan het verversen, even geduld… keyserverProgress.uploading=Sleutels aan het uploaden, even geduld… keyserverTitle.refreshing=Sleutels verversen keyserverTitle.uploading=Sleutel uploaden # Strings in enigmailSetupWizard passphrase.min8keys=Uw wachtwoordzin moet ten minste 8 tekens bevatten! setupWizard.reallyCancel=Bent u zeker dat u de installatiewizard van Enigmail wilt afsluiten? setupWizard.invalidGpg=Het bestand dat u hebt opgegeven is geen GnuPG-programma. Kies een ander bestand. setupWizard.specifyFile=U moet minstens één publieke sleutel selecteren om door te kunnen gaan. setupWizard.installFailed=Het lijkt erop dat de installatie mislukt is. Probeer de installatie opnieuw of installeer GnuPG zelf en geef de plaats aan met de knop Bladeren. setupWizard.downloadForbidden=Voor je eigen veiligheid downloaden we GnuPG niet. Bezoek http://www.gnupg.org/ om GnuPG te downloaden. setupWizard.downloadImpossible=We kunnen GnuPG op dit moment niet downloaden. Probeer het later nog eens of ga naar http://www.gnupg.org/ om GnuPG te downloaden. setupWizard.hashSumError=De wizard kon de integriteit van het gedownloade bestand niet controleren. Het bestand kan fout of gemanipuleerd zijn. Wil je toch doorgaan met de installatie? setupWizard.importSettingsFile=Geef reservekopiebestand op waarvan geladen moet worden setupWizard.invalidSettingsFile=Het opgegeven bestand is geen geldig Enigmail instellingen-reservekopiebestand. setupWizard.gpgConfExists=Het GnuPG-configuratiebestand bestaat al. Wilt u deze overschrijven met degene uit uw oude installatie? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Er is een fout opgetreden bij het downloaden van GnuPG. Controleer de console-uitvoer voor nadere details. installGnuPG.installFailed=Er is een fout opgetreden tijdens het installeren van GnuPG. Controleer de console-uitvoer voor nadere details. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=U moet een naam en e-mailadres invullen addUidDlg.nameMinLengthError=De naam moet minstens 5 letters bevatten addUidDlg.invalidEmailError=U moet een geldig e-mailadres opgeven addUidDlg.commentError=Haakjes zijn niet toegestaan in opmerkingen # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP-Smartcards ondersteunen enkel ASCII-tekens in Voornaam/Achternaam. # network error types errorType.SecurityCertificate=Het veiligheidscertificaat aangeboden door de webservice is niet geldig. errorType.SecurityProtocol=Het veiligheidsprotocol dat door de webservice gebruikt wordt is onbekend. errorType.Network=Er is een netwerkfout opgetreden. # filter stuff filter.folderRequired=U moet een doelmap uitkiezen filter.decryptMove.label=Permanent ontcijferen filter.decryptCopy.label=Genereer ontcijferde Kopie (Enigmail) filter.decryptMove.warnExperimental=Waarschuwing. ‘Permanent ontcijferen’ kan leiden tot beschadigde of kapotte berichten.\n\nHet wordt aangeraden om eerst ‘Genereer ontcijferde Kopie’ te proberen, het resultaat zorgvuldig te testen, en alleen dan de permanente actie uit te voeren. # strings in enigmailConvert.jsm converter.decryptBody.failed=Kon bericht met het volgende onderwerp niet ontcijferen:\n"%S"\nWilt u het nogmaals proberen met een andere wachtwoordzin, of wilt u dit bericht overslaan? converter.decryptAtt.failed=Kon bijlage niet ontcijferen: ‘%1$S’\nvan bericht met onderwerp:\n‘%2$S’.\nWilt u het nogmaals proberen met een andere wachtwoordzin, of wilt u dit bericht overslaan? saveLogFile.title=Logbestand opslaan # strings in gpg.jsm unknownSigningAlg=Onbekend ondertekeningsalgoritme (ID: %S) unknownHashAlg=Onbekende cryptografische hash (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=De sleutel %1$S (sleutel-ID %2$S) is ingetrokken. keyRing.pubKeyExpired=De sleutel %1$S (sleutel-ID %2$S) is vervallen. keyRing.pubKeyNotForSigning=De sleutel %1$S (sleutel-ID %2$S) kan niet worden gebruikt om te ondertekenen. keyRing.pubKeyNotForEncryption=De sleutel %1$S (sleutel-ID %2$S) kan niet worden gebruikt om te versleutelen. keyRing.keyDisabled=De sleutel %1$S (sleutel-ID %2$S) is uitgeschakeld, hij kan niet worden gebruikt. keyRing.keyNotTrusted=De sleutel %1$S (sleutel-ID %2$S) wordt niet voldoende vertrouwd. Stel het vertrouwensniveau van uw sleutel in op ‘maximaal’ om hem te kunnen gebruiken om te ondertekenen. keyRing.keyInvalid=De sleutel %1$S (sleutel-ID %2$S) is ongeldig (bijvoorbeeld omdat hij niet door zichzelf ondertekend is). keyRing.signSubKeysRevoked=Alle subsleutels om te ondertekenen van sleutel %1$S (sleutel-ID %2$S) zijn ingetrokken. keyRing.signSubKeysExpired=Alle subsleutels om te ondertekenen van sleutel %1$S (sleutel-ID %2$S) zijn vervallen. keyRing.signSubKeysUnusable=Alle subsleutels om te ondertekenen van sleutel %1$S (sleutel-ID %2$S) zijn ingetrokken, vervallen of anderszins onbruikbaar. keyRing.encSubKeysRevoked=Alle subsleutels om te versleutelen van sleutel %1$S (sleutel-ID %2$S) zijn ingetrokken. keyRing.encSubKeysExpired=Alle subsleutels om te versleutelen van sleutel %1$S (sleutel-ID %2$S) zijn vervallen. keyRing.noSecretKey=Het lijkt er op dat u niet de geheime sleutel van %1$S (sleutel-ID %2$S) in uw keyring heeft; u kunt deze sleutel niet gebruiken om mee te ondertekenen. keyRing.encSubKeysUnusable=Alle subsleutels om te versleutelen van sleutel %1$S (sleutel-ID %2$S) zijn ingetrokken, vervallen of anderszins onbruikbaar. #strings in exportSettingsWizard.js cannotWriteToFile=Kan niet opslaan naar bestand ‘%S’. Kies een ander bestand. dataExportError=Er is een fout opgetreden tijdens het exporteren van uw gegevens. enigmailSettings=Enigmail-instellingen defaultBackupFileName=Enigmail-export specifyExportFile=Geef bestandsnaam op om te exporteren homedirParamNotSUpported=Extra parameters waarmee paden worden geconfigureerd, zoals --homedir en --keyring worden niet ondersteund bij het exporteren/herstellen van uw instellingen. Gebruik andere manieren, zoals het instellen van de GNUPGHOME variabele. #strings in expiry.jsm expiry.keyExpiresSoon=Uw sleutel %1$S zal binnen %2$S dagen vervallen.\n\nWe raden u aan om een nieuw sleutelpaar aan te maken en de overeenkomende accounts in te stellen om deze nieuwe sleutel te gebruiken. expiry.keysExpireSoon=De volgende van uw sleutels zullen binnen %1$S dagen vervallen:\n%2$S. We raden u aan om een nieuw sleutelparen aan te maken en de overeenkomende accounts in te stellen om deze nieuwe sleutels te gebruiken. enigmail/lang/nl/help/000077500000000000000000000000001266701624400151355ustar00rootroot00000000000000enigmail/lang/nl/help/compose.html000066400000000000000000000105731266701624400174760ustar00rootroot00000000000000 Enigmail help: Opstellen van een bericht

Enigmail help

Enigmail gebruiken bij het opstellen van een bericht

Enigmail menu in het Mail/Opstellen venster
Onderteken bericht
Ondertekende mail verzenden in- of uitschakelen. De gebruiker wordt gewaarschuwd als het ondertekenen mislukt.
Versleutel bericht

Versleuteling voor alle ontvanger(s) in- of uitschakelen. De gebruiker wordt gewaarschuwd als de versleuteling mislukt.

Als Selectie tonen wanneer nodig ingesteld is in de Voorkeuren -> Sleutelselectie tab, dan zal er een lijst van sleutel getoond worden als er ontvangers in de lijst staan van wie u geen publieke sleutel hebt.

Als Toon nooit het PGP dialoogvenster voor sleutelselectie ingesteld is in de Voorkeuren -> Sleutelselectie tab, en er zijn adressen in de lijst met ontvangers van wie u geen publieke sleutel hebt, dan wordt de mail onversleuteld verstuurd.

Gebruik PGP/MIME voor dit bericht
Het gebruik van PGP/MIME voor dit bericht in- of uitschakelen.

Als u weet dat uw ontvanger mail kan lezen in het PGP/MIME formaat, dan gebruikt u dit best ook.

Deze mogelijkheid is afhankelijk van de instellingen in de Voorkeuren -> PGP/MIME tab. Deze moet ingesteld zijn op Sta het gebruik van PGP/MIME toe of Gebruik altijd PGP/MIME.

Standaardopties voor berichtcompositie
  • Ondertekening/versleuteling opties...: snelkoppeling naar de Accountinstellingen -> OpenPGP opties.
  • Verzenden opties...: snelkoppeling naar de Voorkeuren -> Verzend tab.
  • Sleutelselectie opties...: snelkoppeling naar de Voorkeuren -> Sleutelselectie tab.
  • PGP/MIME opties...: snelkoppeling naar de Voorkeuren -> PGP/MIME tab.
Versleuteling ongedaan maken

Als er een fout is bij het verzenden van de e-mail zoals wanneer de POP server de aanvraag niet accepteerd, zal Enigmail dit niet weten en het versleuteld bericht zal nog altijd getoond worden in het Opstelvenster. Bij het kiezen van dit menu-item wordt de versleuteling of ondertekening uit de mail verwijderd.

Deze optie kan ook gebruikt worden als een tijdelijke oplossing om de aangehaalde tekst in versleutelde berichten te ontcijferen bij het antwoorden. Enigmail zou het aangehaalde bericht automatisch moeten ontcijferen, maar als dat om één of andere reden mislukt, kan u dit menu-item gebruiken om het te forceren.

Publieke sleutel invoegen
Voegt een ASCII gewapende publieke sleutel in op de huidige cursorpositie in het Opstelvenster. U krijgt de vraag welk e-mailadres er gebruikt moet worden voor de in te voegen sleutel(s). Sleutels die op deze manier zijn ingevoegd, zullen automatisch herkend worden door Enigmail bij het ontvangen. Na sleutelinvoeging kan u nog steeds uw e-mail ondertekenen of versleutelen. Voeg niet meer dan één sleutelblok in in een bericht; specifieer gewoon meerdere e-mailadressen, gescheiden door komma's of spaties.
Vergeet opgeslagen wachtwoord
Verwijdert het opgeslagen wachtwoord. Dit is nuttig als u meerdere wachtwoorden gebruikt.
Help
Toont de helpinformatie van de website (deze pagina).

Verdere help kan u vinden op de Enigmail support website

enigmail/lang/nl/help/editRcptRule.html000066400000000000000000000126421266701624400204360ustar00rootroot00000000000000 Enigmail help: Bewerk PGP regels

Enigmail help

De Enigmail regeleditor gebruiken: PGP regels bewerken

In de Regeleditor kan u standaarden opgeven om versleuteling, ondertekening en PGP/MIME te gebruiken en om te definiëren welke OpenPGP sleutel(s) er gebruikt moeten worden. In dit dialoogvenster kan u de regels voor een enkele ontvanger opgeven en voor een groep van ontvangers met sterk vergelijkbare eigenschappen.

Stel PGP regels in voor
bevat de e-mailadressen van de ontvangers (zonder namen, d.w.z. enkel een adres zoals persoon@email.domain). U kan meerdere e-mailadressen opgeven, gescheiden door spaties. Het opgegeven e-mailadres kan bestaan uit enkel de domeinnaam zodat alle e-mailadressen van dit domein ermee overeenkomen. Bijvoorbeeld @email.domain zal overeenkomen met per@email.domain,soon@email.domain, persoon@email.domain, enz.
Pas regel toe als ontvanger ...
Dit past de vergelijking van de e-mailadressen aan. Als er meerdere e-mailadressen opgegeven zijn, zal de instelling betrekking hebben op alle e-mailadressen. De voorbeelden hieronder zijn gebaseerd op persoon@email.domain ingegeven in het PGP regels veld erboven.
  • Is exact met deze instelling heeft de regel enkel betrekking op e-mails naar persoon@email.domain (exact, niet hoofdlettergevoelig).
  • Bevat met deze instelling zal de regel toegepast worden op elk e-mailadres dat deze tekenreeks bevat. B.v. persoon@email.domain or soon@email.domain.net
  • Begint met met deze instelling wordt de regel toegepast op e-mailadressen die beginnen met de opgegeven tekenreeks. B.v. per@email.domain.net, per@email.domain-name.com.
  • Eindigt met met deze instelling wordt de regel toegpast op e-mailadressen die eindigen met de opgegeven tekenreeks. B.v. persoon@email.domain, soon@email.domain.
Ga verder met de volgende regel voor het overeenstemmende adres
Het inschakelen van deze functie staat u toe om een regel te definiëren zonder een KeyID in het Gebruik de volgende OpenPGP sleutel: veld, zodat het e-mailadres gebruikt wordt om de sleutel te controleren op het moment van verzenden. Verdere regels voor hetzelfde adres zullen ook uitgevoerd worden.
Controleer verdere regels voor het overeenstemmende adres niet
Het inschakelen van deze functie zorgt ervoor dat andere regels niet uitgevoerd worden als het adres met deze regel overeenstemd. Er wordt dus direct naar de volgende ontvanger overgeschakeld.
Gebruik de volgende OpenPGP sleutels
Gebruik de Selecteer sleutel(s).. knop om de sleutel van de ontvanger te kiezen die u wilt gebruiken voor versleuteling. Net zoals bij de bovenstaande actie zullen er geen verdere regels voor het overeenstemmende adres uitgevoerd worden.
Standaard voor ondertekening
Ondertekening in- of uitschakelen. Dit gebruikt of overschrijft datgene dat u opgegeven hebt in het berichtopstel venster. Mogelijke waarden zijn:
  • Nooit: ondertekening uitschakelen, zelf al is het ingeschakeld in het berichtopstelvenster (overschrijft de andere waarden)
  • Ja, als het geselecteerd is bij Berichtopstelling: laat ondertekening zoals opgegeven in het berichtopstelvenster
  • Altijd: ondertekening inschakelen, zelfs al is het niet ingeschakeld in het berichtopstelvenster
Deze ondertekeningsregels worden toegepast op alle regels die ermee overeenkomen. Als één van de regesl ondertekening uitschakeld, dan word het bericht niet ondertekend, ook al hebt u een regel die Altijd opgeeft bij ondertekening.
Versleuteling
berichtversleuteling in- of uitschakelen. De toegestane instellingen en hun betekening zijn dezelfde als voor berichtondertekening.
PGP/MIME
Het gebruik van PGP/MIME (RFC 3156) berichtencodering in- of uitschakelen. Als PGP/MIME uitgeschakeld is, worden de berichten met "inline PGP) ondertekend of versleuteld. De toegestane waarden en hun betekenis zijn dezelfde als deze voor berichtondertekening.

De regels worden uitgevoerd in de volgorde waarin ze weergegeven worden in de PGP regeleditor. Wanneer een regel overeenstemt met een ontvanger en een PGP sleutel ID bevat, met daarbij nog een opgegeven sleutel ID, dan wordt de ontvanger niet meer gecontroleerd bij het uitvoeren van verdere regels.


Verdere help is beschikbaar op de Enigmail per-ontvanger instellingen pagina

enigmail/lang/nl/help/initError.html000066400000000000000000000050341266701624400200020ustar00rootroot00000000000000 Enigmail help: Het oplossen van problemen met de OpenPGP initialisatie

OpenPGP Help

Het oplossen van problemen met de OpenPGP initialisatie

Er zijn verschillende oorzaken voor het mislukken van de OpenPGP initialisatie. De bekendsten worden hieronder beschreven; voor meer informatie kunt u de Enigmail help website bezoeken.

Kon GnuPG niet vinden

Voor een goede werking van OpenPGP moet de applicatie GnuPG geïnstalleerd zijn. Als GnuPG niet kan worden gevonden, moet u er eerst voor zorgen dat de applicatie gpg.exe (voor Windows; gpg voor andere platformen) op uw PC daadwerkelijk aanwezig is. Als GnuPG (gpg.exe of gpg) daadwerkelijk geïnstalleerd is, maar OpenPGP kan het toch niet vinden, moet u het pad naar GnuPG in de OpenPGP instellingen ingeven (Menu OpenPGP) > Voorkeuren).

Initialisatie van EnigMIME is mislukt

OpenPGP werkt alleen als deze in dezelfde ontwikkelomgeving als Thunderbird of SeaMonkey gecreëerd (gecompileerd) is. U kunt de officiële Enigmail samen met officiële versies van Thunderbird of SeaMonkey downloaden van mozilla.org.

Als u Thunderbird of SeaMonkey in een andere versie/variant van een andere bron download (bv. van een Linux distributie provider), of als u de applicatie zelf gecompileerd heeft, moet u ook een versie van Enigmail gebruiken die in dezelfde ontwikelomgeving gecompileerd is. Om Enigmail zelf te compileren moet u de instructies opvolgen op de Enigmail website in Gebied Source-Code. Gelieve geen eventuele foutmeldingen (bugs) over dit probleem te maken, omdat er daarvoor geen andere oplossing is.

Verdere hulp is beschikbaar op de Enigmail support website.

enigmail/lang/nl/help/messenger.html000066400000000000000000000104761266701624400200230ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail help

Enigmail gebruiken bij het lezen van berichten

Ontcijferknop in het hoofdvenster
Deze knop kan gebruikt worden voor verschillende doelen: ontcijferen, verifiëren of publieke sleutels importeren. Normaalgesproken gebeurt ontcijfering/verificatie automatisch, maar dit kan uitgeschakeld worden door middel van een instelling. Hoewel, als dit mislukt, wordt er een kort foutbericht weergegeven in de Enigmail statusregel. Als u op de Ontcijferknop klikt, zal u een meer gedetailleerd foutbericht zien, samen met de uitvoer van het GPG commando.
Pen- en sleuteliconen in de berichtkop
Het Pen en Sleutel icoon in de berichtkop toont of het bericht dat u aan het lezen bent ondertekend en/of versleuteld was en of de ondertekening goed is, d.w.z. als het bericht niet gewijzigd is sinds de ondertekening. Als het bericht toch gewijzigd is, zal het Pen icoon veranderen naar een Gebroken pen om aan te geven dat de ondertekening ongeldig is. Een rechtermuisklik op het Pen- of Sleutelicoon geeft een menu met de volgende opties:
  • OpenPGP beveiligingsinfo: staat u toe de outputstatus van GPG voor het bericht te bekijken.
  • Kopieer OpenPGP beveiligingsinfo: kopieert de output status van GPG naar het klembord; om in een antwoord te plakken, enz.
  • Bekijk PGP foto ID: staat u toe om het Foto ID van de persoon die u het bericht gezonden heeft te bekijken, als er natuurlijk een foto ingebed zit in de publieke sleutel. (Deze optie is enkel beschikbaar als er een Foto ID bestaat in de gebruikte sleutel.)
  • S/MIME beveilingsinfo: staat u toe om de S/MIME beveilingsinfo van het bericht te bekijken.

Als u keyserver-options auto-key-retrieve niet ingesteld hebt in uw gpg.conf bestand en u leest een bericht dat ondertekend of versleuteld is, dan zal u een Pen icoon in de hoofding zien met een Vraagteken er op. De Enigmail statusregel zal zeggen Gedeelte van het bericht getekend; klik op het pen icoon voor details en het bericht in het berichtvenster zal alle OpenPGP informatie, samen met de ondertekening tonen.

U kan dit ook zien als u keyserver-options auto-key-retrieve ingesteld hebt in uw gpg.conf bestand en als de OpenPGP key niet beschikbaar is op de standaard keyserver.

Een klik op het Pen en Vraagteken icoon zal een venster tonen met het bericht dat de sleutel niet in uw sleutelbos zit. Als u dan op OK klikt, krijgt u een ander venster met een lijst met publieke keyservers waaruit u kan kiezen om de publieke sleutel van de verzender te downloaden.

Ga naar Enigmail -> Voorkeuren -> Basis tab en geef het adres van de keyserver in in het Keyserver(s): vakje, gescheiden door een komma om een lijst van keyservers die u wilt gebruiken te configureren. De eerste keyserver uit de lijst zal als standaardserver gebruikt worden.

Versleutelde bijlagen openen / bijgevoegde OpenPGP sleutels importeren
Bijlagen met de extensie *.pgp, *.asc en *.gpg worden herkend door Enigmail en worden speciaal behandeld. Bij een rechtermuisklik op zo een bijlage krijg je twee speciale menu items in het contextmenu: Ontcijfer en open en Ontcijfer en sla op als.... Gebruik deze twee menu items als u wilt dat Enigmail de bijlage ontcijfert voor deze te openen of op te slaan. Als een bijlage herkend word als een OpenPGP sleutelbestand, krijg je de kans om de sleutels in je sleutelbos te importeren.

Verdere help is verkrijgbaar op de Enigmail Helppagina

enigmail/lang/nl/help/rulesEditor.html000066400000000000000000000064631266701624400203350ustar00rootroot00000000000000 Enigmail help: Regeleditor

Enigmail help

De regeleditor gebruiken

In de regeleditor kan u standaarden opgeven per ontvanger om versleuteling, ondertekening en PGP/MIME in- of uit te schakelen. U kan er ook OpenPGP sleutels definiëren. Elke regel bestaat uit 5 velden en wordt getoond op een enkele lijn:

E-mail
De e-mail(s) van de Aan:, Cc: and Bcc: velden om te controleren. De controle werkt op subreeksen (Verdere details kunnen gevonden worden in het Bewerk regel dialoogvenster).
PGP sleutel(s)
een lijst van PGP sleutel ID's om te gebruiken voor de ontvanger
Onderteken
berichtondertekening in- of uitschakelen. Dit gebruikt of overschrijft de instelling die u gebruikt in het berichtenopstelvenster. De waarden zijn:
  • Nooit: ondertekening uitschakelen, zelf al is het ingeschakeld in het berichtopstelvenster (overschrijft de andere waarden)
  • Mogelijk: laat ondertekening als opgegeven in het berichtopstelvenster
  • Altijd: ondertekening inschakelen, zelfs al is het niet ingeschakeld in het berichtopstelvenster

Deze ondertekeningsinstellingen worden toegepast op alle regels die ermee overeenstemmen. Als één van de regels ondertekening uitschakeld, zal het bericht niet ondertekend worden, ook al is er een regel die Altijd opgeeft.

Versleutel
berichtversleuteling in- of uitschakelen. De toegestane instellingen zijn dezelfde als voor berichtondertekening.
PGP/MIME
het gebruik van PGP/MIME (RFC 3156) in- of uitschakelen. Als PGP/MIME uitgeschakeld is, zullen de berichten versleuteld of ondertekend worden met "inline PGP". De toegestane waarden en hun betekenis zijn dezelfde als voor berichtondertekening.

De regels worden uitgevoerd in de volgorde waarin ze weergegeven worden in de PGP regeleditor. Wanneer een regel overeenstemt met een ontvanger en een PGP sleutel ID bevat, met daarbij nog een opgegeven sleutel ID, dan wordt de ontvanger niet meer gecontroleerd bij het uitvoeren van verdere regels.

Let op: De regeleditor is nog niet volledig. Het is mogelijk om meer geavanceerde regels te schrijven door het regelbestand direct te bewerken (deze regels zouden dan niet meer bewerkt mogen worden in de regeleditor). Verdere informatie voor het direct bewerken van het bestand is beschikbaar op de Enigmail homepage


Verdere help is beschikbaar op de Enigmail support website

enigmail/lang/nl/help/sendingPrefs.html000066400000000000000000000055451266701624400204630ustar00rootroot00000000000000 Enigmail help: OpenPGP regel bewerken

Enigmail help

Voorkeuren instellen om versleutelde e-mail te versturen

Bij de Verzenden voorkeuren kunt u het algemene model en de voorkeuren voor versleuteling kiezen.

Handige versleuteling
Met deze instellingen worden e-mails zonder bevestiging versleuteld, indien mogelijk.

Deze instelling is geschikt als u uw privacy wilt vergroten door versleutelde e-mails te versturen in plaats van onversleutelde e-mails als dat mogelijk is.

Het effect is alsof u vrieven stuurt in plaats van ansichtkaarten. In tegenstelling tot bij ansichtkaarten, kunnen brieven normaal gesproken niet gelezen worden tijdens het transport.

Het is echter net als bij brieven niet zeker, dat niemand de brief tijdens het transport opent (hoewel daar wel technische inspanning voor nodig is).

Een concreet risico is dat u per ongeluk ‘vervalste sleutels’ gebruikt, die u van iemand heeft gekregen die beweert dat de sleutel eigendom is van de persoon die u wilt e-mailen. Om dit risico te voorkomen kunt u ofwel het vertrouwensmodel van OpenPGP gebruiken (zie onder) of u moet altijd controleren of de vingerafdruk van de publieke sleutel juist is.

Handmatige versleuteling
Met deze instellingen kunt u de verschillende voorkeuren voor versleuteling handmatig aan uw behoefte aanpassen. U kunt opgeven:
  • of antwoorden op versleutelde/ondertekende e-mails ook automatisch versleuteld/ondertekend moeten worden;
  • of u het vertrouwensmodel van OpenPGP wilt gebruiken om sleutels te accepteren (dit betekent dat u om een sleutel te kunnen gebruiken, u deze sleutel moet ondertekenen, of dat er genoeg andere personen zijn die u vertrouwt die de sleutel ondertekend hebben);
  • of u automatisch alle e-mails versleuteld wilt versturen als alle sleutels geaccepteerd zijn;
  • of en wanneer u eindelijk wilt bevestigen dat u een e-mail wilt versturen.
Als u het belangrijk vindt dat inhoud die u versleutelt niet door andere personen of organisaties gelezen kan worden, dan dient u de handmatige instellingen te kiezen en op zijn minst de optie te selecteren om alleen sleutels te accepteren als u of andere mensen ze ondertekend hebben. Hoewel dit model het risico op vervalste sleutels vermindert, moet u wel actief sleutels ondertekenen en het eigenaarsvertrouwen aangeven via sleutelbeheer. enigmail/lang/pl/000077500000000000000000000000001266701624400142075ustar00rootroot00000000000000enigmail/lang/pl/am-enigprefs.properties000066400000000000000000000001101266701624400206720ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP enigmail/lang/pl/enigmail.dtd000066400000000000000000001116311266701624400164740ustar00rootroot00000000000000 Konfiguracja kont -> OpenPGP)."> Uwaga! Tworzenie klucza może potrwać kilka minut. Nie zamykaj programu w trakcie dziaÅ‚ania generatora. Aktywne używanie przeglÄ…darki lub wykonywanie intensywnych operacji dyskowych podczas tworzenia klucza przyspieszy proces. Koniec procesu zostanie zasygnalizowany odpowiednim komunikatem."> †jest nieprawidÅ‚owy"> Uwaga! Generowanie klucza może potrwać kilka minut. Nie zamykaj programu w trakcie dziaÅ‚ania generatora. Koniec procesu zostanie zasygnalizowany odpowiednim komunikatem."> Uwaga! Enigmail bÄ™dzie zawsze weryfikować podpisy w wiadomoÅ›ciach dla wszystkich tożsamoÅ›ci i kont, niezależnie od tego czy obsÅ‚uga Enigmail jest włączona, czy nie"> DziÄ™kujemy za wybór Enigmail Enigmail!"> enigmail/lang/pl/enigmail.properties000066400000000000000000000662061266701624400201240ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Ostrzeżenie Enigmail enigConfirm=Potwierdzenie Enigmail enigError=Błąd Enigmail enigPrompt=Wprowadź dane Enigmail dlgYes=&Tak dlgNo=&Nie dlgKeepSetting=ZapamiÄ™taj mój wybór i nie wyÅ›wietlaj ponownie dlgNoPrompt=Nie wyÅ›wietlaj wiÄ™cej tego okna dlg.button.delete=&UsuÅ„ dlg.button.cancel=&Anuluj dlg.button.close=&Zamknij dlg.button.continue=&Kontynuuj dlg.button.skip=&PomiÅ„ dlg.button.view=Po&dglÄ…d repeatPrefix=\n\nTo ostrzeżenie bÄ™dzie powtórzone %S repeatSuffixSingular=raz. repeatSuffixPlural=razy. noRepeat=\n\nTo ostrzeżenie nie pojawi siÄ™ dopóki nie zaktualizujesz Enigmail. pgpNotSupported=WyglÄ…da na to, że używasz Enigmail razem z PGP 6.x\n\nNiestety, PGP 6.x ma dużo wÅ‚aÅ›ciwoÅ›ci, które powodujÄ… niepoprawne dziaÅ‚anie Enigmail. Dlatego też, PGP 6.x nie bÄ™dzie dÅ‚użej obsÅ‚ugiwane. Zamiast tego zalecane jest zainstalowanie GnuPG (GPG).\n\nJeżeli potrzebujesz pomocy przy instalacji GnuPG, sprawdź sekcjÄ™ „Pomoc†na stronie domowej Enigmail. passphraseCleared=Szyfr zostaÅ‚ usuniÄ™ty z pamiÄ™ci. noPhotoAvailable=Brak zdjÄ™cia debugLog.title=Dziennik zdarzeÅ„ debugowania Enigmail error.photoPathNotReadable=Nie można odczytać Å›cieżki „%S†# Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Ta wersja Enigmail wprowadza istotne zmiany w obsÅ‚udze preferencji i opcji. DoÅ‚ożyliÅ›my wszelkich staraÅ„, aby przenieść ustawienia z poprzednich wersji do aktualnej, tam gdzie byÅ‚o to możliwe. Prosimy o dokÅ‚adne sprawdzenie nowych preferencji i opcji. enigmailCommon.checkPreferences=Sprawdź preferencje... usingVersion=Uruchomiono Enigmail, wersja %S usingAgent=Szyfrowanie i weryfikacja programem %S: %S agentError=Błąd! Nie można uzyskać dostÄ™pu do usÅ‚ugi Enigmime! accessError=WystÄ…piÅ‚ błąd podczas próby uzyskania dostÄ™pu do usÅ‚ugi Enigmail onlyGPG=Tworzenie kluczy dziaÅ‚a tylko z GnuPG (nie dziaÅ‚a z PGP)! keygenComplete=ZakoÅ„czono tworzenie klucza!\nTożsamość <%S> bÄ™dzie używana do podpisywania. revokeCertRecommended=Zaleca siÄ™ utworzenie certyfikatu unieważnienia dla tego klucza. Certyfikat ten posÅ‚uży do unieważnienia klucza, np. jeżeli zaginie klucz prywatny lub zostanie on wykradziony. Czy utworzyć teraz taki certyfikat? keyMan.button.generateCert=&Utwórz certyfikat genCompleteNoSign=ZakoÅ„czono tworzenie klucza! genGoing=Trwa tworzenie klucza…! passNoMatch=Wprowadzone szyfry sÄ… niezgodne – wprowadź ponownie passCheckBox=ProszÄ™ zaznaczyć pole, jeÅ›li nie podano szyfru do klucza passUserName=Podaj nazwÄ™ użytkownika dla tej tożsamoÅ›ci passSpaceProblem=Z powodów technicznych szyfr nie może zaczynać siÄ™ lub koÅ„czyć spacjÄ…. changePassFailed=Nie udaÅ‚o siÄ™ zmienić szyfru. keyConfirm=Utworzyć klucz publiczny i prywatny dla „%Sâ€? keyMan.button.generateKey=&Utwórz klucz keyAbort=Czy przerwać tworzenie klucza? keyMan.button.generateKeyAbort=&Przerwij tworzenie klucza keyMan.button.generateKeyContinue=&Kontynuuj tworzenie klucza expiryTooLong=Nie można tworzyć kluczy ważnych dÅ‚użej niż 100 lat. expiryTooLongShorter=Nie można tworzyć kluczy, których okres ważnoÅ›ci jest dÅ‚uższy niż 90 lat. expiryTooShort=Klucz musi być ważny przynajmniej jeden dzieÅ„. dsaSizeLimit=Klucze podpisywania DSA sÄ… ograniczone do 3072 bitów. Rozmiar klucza zostanie odpowiednio zredukowany. keyGenFailed=Nie udaÅ‚o siÄ™ utworzyć klucza. Szczegóły wykonywanej operacji można znaleźć w konsoli Enigmail (menu Enigmail -> Debugowanie Enigmail). setKeyExpirationDateFailed=Data wygaÅ›niÄ™cia nie mogÅ‚a zostać zmieniona # Strings in enigmailMessengerOverlay.js securityInfo=Informacja Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Załączniki do tej wiadomoÅ›ci nie zostaÅ‚y podpisane ani zaszyfrowane*\n\n possiblyPgpMime=Wiadomość prawdopodobnie podpisana/zaszyfrowana za pomocÄ… PGP/MIME – naciÅ›nij przycisk Odszyfruj/Weryfikuj, aby to sprawdzić noDecrypted=Brak odszyfrowanej wiadomoÅ›ci do zapisania!\nUżyj polecenia Zapisz z menu Plik. noMessage=Brak wiadomoÅ›ci do zapisania! useButton=NaciÅ›nij przycisk Odszyfruj, aby odszyfrować wiadomość saveHeader=Enigmail: Zapisz odszyfrowanÄ… wiadomość saveAttachmentHeader=Enigmail: Zapisz odszyfrowany załącznik noTempDir=Nie można znaleźć katalogu plików tymczasowych.\nProszÄ™ ustawić odpowiedniÄ… Å›cieżkÄ™ jako wartość zmiennej systemowej TEMP. attachmentPgpKey=Otwierany załącznik „%S†jest plikiem klucza OpenPGP.\n\nNaciÅ›nij przycisk „Importâ€, aby zaimportować zawarty w nim klucz lub „PodglÄ…dâ€, aby wyÅ›wietlić zawartość w oknie przeglÄ…darki. beginPgpPart=********* *POCZATEK CZESCI SZYFROWANEJ / PODPISANEJ* ********* endPgpPart=********** *KONIEC CZESCI SZYFROWANEJ / PODPISANEJ* ********** notePartEncrypted=Enigmail: *Niektóre fragmenty wiadomoÅ›ci NIE zostaÅ‚y podpisane lub zaszyfrowane* noteCutMessage=Enigmail: *Znaleziono bloki wielu wiadomoÅ›ci – przerwano odszyfrowanie/weryfikacjÄ™* decryptOkNoSig=Uwaga!\n\nWiadomość zostaÅ‚a odszyfrowana, ale nie można prawidÅ‚owo zweryfikować podpisu. msgOvl.button.contAnyway=Czy chcesz &kontynuować? signature.verifiedOK=Podpis załącznika %S zostaÅ‚ pomyÅ›lnie zweryfikowany signature.verifyFailed=Nie można zweryfikować podpisu załącznika %S attachment.noMatchToSignature=Nie można dopasować załącznika %S do pliku podpisu attachment.noMatchFromSignature=Nie można dopasować pliku podpisu %S do załącznika keysToExport=Wybierz klucze OpenPGP do wstawienia keysToUse=Wybierz klucze OpenPGP używane dla %S pubKey=Klucz publiczny dla %S\n windowLocked=Okno tworzenia wiadomoÅ›ci jest zablokowane – wysyÅ‚anie anulowane sendUnencrypted=Nie udaÅ‚o siÄ™ zainicjować Enigmail.\nWysÅ‚ać niezaszyfrowanÄ… wiadomość? composeSpecifyEmail=Wybierz swój adres e-mail, wedÅ‚ug którego wybierany bÄ™dzie klucz do podpisywania wysyÅ‚anych wiadomoÅ›ci.\n Jeżeli zostawisz to pole niewypeÅ‚nione, zostanie użyty adres z pola OD: wysyÅ‚anej wiadomoÅ›ci. sendingHiddenRcpt=Ta wiadomość zawiera adresy w polu Ukryta kopia. Jeżeli wiadomość jest szyfrowana, możliwe jest ukrycie odbiorców ukrytej kopii, ale użytkownicy niektórych produktów, np. PGP Corp. nie bÄ™dÄ… mogli odszyfrować takiej wiadomoÅ›ci. Z tego powodu zaleca siÄ™ nie korzystać z pól Ukryta kopia w szyfrowanych wiadomoÅ›ciach. sendWithHiddenBcc=Ukryj odbiorców ukrytej kopii sendWithShownBcc=Zaszyfruj normalnie sendingNews=Operacja wysyÅ‚ania szyfrowanej wiadomoÅ›ci zostaÅ‚a przerwana.\n\nWiadomoÅ›ci tej nie można zaszyfrować, ponieważ na liÅ›cie odbiorców jest grupa dyskusyjna. Należy ponownie wysyÅ‚ać wiadomość bez szyfrowania. sendToNewsWarning=Uwaga. WysyÅ‚asz zaszyfrowanÄ… wiadomość na adres grupy dyskusyjnej.\n\nOdradzamy takie dziaÅ‚anie, ponieważ ma ono sens tylko wtedy, gdy wszyscy użytkownicy grupy mogÄ… odszyfrować takÄ… wiadomość, tzn. wiadomość taka musiaÅ‚aby być zaszyfrowana kluczami wszystkich użytkowników grupy. WyÅ›lij wiadomość tylko, jeżeli wiesz dokÅ‚adnie co robisz.\n\nKontynuować? hasHTML=Ostrzeżenie o wiadomoÅ›ci w formacie HTML:\nTa wiadomość może zawierać kod HTML, co może uniemożliwić podpisanie/szyfrowanie wiadomoÅ›ci. Aby zapobiec temu w przyszÅ‚oÅ›ci, wciÅ›nij klawisz SHIFT, gdy naciskasz przycisk komponowania/odpowiedzi, żeby wysyÅ‚ać podpisane wiadomoÅ›ci.\nJeżeli domyÅ›lnie wysyÅ‚asz podpisane wiadomoÅ›ci, należy w ustawieniach odznaczyć funkcjÄ™ „Podczas tworzenia wiadomoÅ›ci używaj edytora HTMLâ€, aby na staÅ‚e wyłączyć wiadomoÅ›ci HTML dla tego konta pocztowego. strippingHTML="Wiadomość zawiera informacjÄ™ o formatowaniu w HTML, która zostanie utracona po konwersji do zwykÅ‚ego tekstu przy podpisywaniu/szyfrowaniu. Czy chcesz kontynuować? msgCompose.button.sendAnyway=&WyÅ›lij wiadomość attachWarning=Załączniki do tej wiadomoÅ›ci nie sÄ… zapisane lokalnie i nie mogÄ… być zaszyfrowane. Aby je zaszyfrować, należy zapisać załączniki jako pliki lokalne i nastÄ™pnie dołączyć do wiadomoÅ›ci. Czy na pewno wysÅ‚ać wiadomość? quotedPrintableWarn=Włączono kodowanie „quoted-printable†dla wysyÅ‚anych wiadomoÅ›ci. Może to spowodować nieprawidÅ‚owe odszyfrowanie lub weryfikacjÄ™ wiadomoÅ›ci.\nCzy wyłączyć to kodowanie? minimalLineWrapping=Ustawiono zawijanie wierszy dÅ‚uższych niż %S znaków. Aby poprawnie szyfrować lub podpisywać wiadomoÅ›ci, ta wartość musi wynosić co najmniej 68.\nCzy ustawić zawijanie wiersza powyżej 68 znaków? warning=Uwaga signIconClicked=Zmieniono rÄ™cznie opcje podpisywania. Dlatego też, podczas komponowania tej wiadomoÅ›ci dezaktywacja/aktywacja podpisywania nie zależy od dezaktywacji/aktywacji szyfrowania. pgpMime_sMime.dlg.text=Włączone sÄ… jednoczeÅ›nie PGP/MIME i S/MIME. Niestety nie jest możliwa jednoczesna obsÅ‚uga obu protokołów. Wyłącz S/MIME lub PGP/MIME. pgpMime_sMime.dlg.pgpMime.button=Użyj &PGP/MIME pgpMime_sMime.dlg.sMime.button=Użyj &S/MIME errorKeyUnusable=Nie można dopasować adresu e-mail lub ID klucza „%S†do prawidÅ‚owego, ważnego klucza OpenPGP.\nSprawdź czy masz ważny klucz OpenPGP i czy jest on okreÅ›lony w ustawieniach konta. # note: should end with double newline: sendAborted=Operacja wysyÅ‚ania zostaa anulowana.\n\n statPGPMIME=PGP/MIME statSigned=PODPISANÄ„ statEncrypted=ZASZYFROWANÄ„ statPlain=NIEPODPISANÄ„ i NIEZASZYFROWANÄ„ offlineSave=Zapisać wiadomość %S do %S w folderze „NiewysÅ‚aneâ€? onlineSend=WysÅ‚ać wiadomość %S do %S? encryptKeysNote=Informacja. Wiadomość zaszyfrowana za pomocÄ… nastÄ™pujÄ…cego ID użytkownika/klucza: %S signFailed=Błąd w Enigmail! Szyfrowanie/podpisanie siÄ™ nie powiodÅ‚o. WysÅ‚ać wiadomość bez szyfrowania/podpisu? msgCompose.button.sendUnencrypted=&WyÅ›lij niezaszyfrowanÄ… wiadomość recipientsSelectionHdr=Wybierz odbiorców do szyfrowania configureNow=Nie włączono jeszcze zabezpieczeÅ„ Enigmail dla tej tożsamoÅ›ci. Czy chcesz to zrobić teraz? # should not be used anymore: encryptYes=Wiadomość zostanie zaszyfrowana encryptNo=Wiadomość nie zostanie zaszyfrowana # should not be used anymore: signYes=Wiadomość zostanie podpisana signNo=Wiadomość nie zostanie podpisana # should not be used anymore pgpmimeYes=Zostanie użyte PGP/MIME pgpmimeNo=Zostanie użyte PGP/Inline rulesConflict=Wykryto kolizjÄ™ reguÅ‚ Enigmail dla odbiorcy\n%S\n\nCzy wysÅ‚ać wiadomość z tymi ustawieniami? msgCompose.button.configure=&Konfiguruj msgCompose.button.send=&WyÅ›lij wiadomość msgCompose.button.save=&Zapisz wiadomość # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Wymagany jest klucz publiczny %S, aby zweryfikować podpis clickDecrypt=; naciÅ›nij przycisk Odszyfruj clickDecryptRetry=; naciÅ›nij przycisk Odszyfruj, aby ponowić próbÄ™ msgPart=Część wiadomoÅ›ci %S msgSigned=podpisana msgEncrypted=zaszyfrowana msgSignedAndEnc=podpisana i zaszyfrowana unverifiedSig=Podpis bez weryfikacji incompleteDecrypt=Odszyfrowanie nie zostaÅ‚o zakoÅ„czone needKey=Błąd – potrzebny klucz, aby odszyfrować wiadomość failedDecrypt=Błąd – nie powiodÅ‚o siÄ™ odszyfrowanie badPhrase=Błąd – nieprawidÅ‚owy szyfr failedDecryptVerify=Błąd – nie powiodÅ‚o siÄ™ odszyfrowanie/weryfikacja viewInfo=; Widok » Informacje o zabezpieczeniach wiadomoÅ›ci, aby zobaczyć szczegóły decryptedMsg=Odszyfrowana wiadomość decryptedMsgWithFormatError=Rozszyfrowana wiadomość (formatowanie uszkodzone prawdopodobnie przez serwer Exchange, wiadomość może być trudna do odczytania). locateGpg=Znajdź program GnuPG invalidGpgPath=Nie udaÅ‚o siÄ™ uruchomić GnuPG z podanej Å›cieżki. Dlatego też Enigmail bÄ™dzie nieaktywne, dopóki nie zostanie zmieniona Å›cieżka do programu GnuPG lub dopóki nie zrestartujesz aplikacji. warningsAreReset=Wszystkie ostrzeżenia bÄ™dÄ… pokazywane od nowa. prefs.gpgFound=GnuPG znaleziono w katalogu %S prefs.gpgNotFound=Nie można znależć GnuPG prefs.warnAskNever=Ostrzeżenie! Włączenie tej opcji oznacza niezaszyfrowane wiadomoÅ›ci bez żadnej informacji o brakujÄ…cym kluczu dla któregoÅ› z odbiorców – Enigmail nie poinformuje o takim przypadku! prefs.warnIdleTimeForUnknownAgent=Twój system używa specjalistycznych narzÄ™dzi do obsÅ‚ugi szyfru, takich jak gnome-keyring lub seahorse-agent. Niestety Enigmail nie może kontrolować limitu czasu szyfru używanego narzÄ™dzia. Dlatego poszczególne ustawienia limitu czasu w Enigmail sÄ… pomijane. prefEnigmail.oneKeyserverOnly=Błąd – w ustawieniach automatycznego pobierania brakujÄ…cych kluczy OpenPGP można wskazać tylko jeden serwer kluczy. enterAdminPin=Wprowadź ADMIN PIN swojej karty SmartCard enterCardPin=Wprowadź PIN swojej karty SmartCard notInit=Błąd – usÅ‚uga Enigmail nie zainicjowana badCommand=Błąd – nie powiodÅ‚o siÄ™ polecenie szyfrowania cmdLine=skÅ‚adnia i wynik polecenia: notRequired=Błąd – szyfrowanie nie jest wymagane notComplete=Błąd – generowanie kluczy nie jest jeszcze zakoÅ„czone invalidEmail=Błąd – nieprawidÅ‚owe adresy e-mail noPassphrase=Błąd – nie podano szyfru noPGPblock=Błąd – nie znaleziono prawidÅ‚owego bloku danych OpenPGP unverifiedReply=Cytowana część wiadomoÅ›ci (odpowiedzi) zostaÅ‚a prawdopodobnie zmodyfikowana sigMismatch=Błąd – podpis nie pasuje cantImport=Błąd przy importowaniu klucza publicznego\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Karta SmartCard %S znaleziona w czytniku nie może być użyta do przetworzenia wiadomoÅ›ci.\nWłóż kartÄ™ %S i ponów operacjÄ™. sc.insertCard=Ta operacja wymaga karty SmartCard %S.\nWłóż wymaganÄ… kartÄ™ i ponów operacjÄ™. sc.removeCard=Ta operacja wymaga usuniÄ™cia karty SmartCard z czytnika.\nUsuÅ„ kartÄ™ i ponów operacjÄ™. sc.noCardAvailable=Nie znaleziono karty SmartCard w czytniku\nWłóż kartÄ™ do czytnika i ponów operacjÄ™ sc.noReaderAvailable=Brak dostÄ™pu do czytnika kart SmartCard\nPodłącz czytnik, włóż swojÄ… kartÄ™ i ponów operacjÄ™ gpgNotFound=Nie odnaleziono programu GnuPG „%Sâ€.\nSprawdź w ustawieniach Enigmail czy jest okreÅ›lona prawidÅ‚owa Å›cieżka do programu GnuPG. gpgNotInPath=W podanym poÅ‚ożeniu nie znaleziono programu GnuPG.\nSprawdź w ustawieniach Enigmail czy jest okreÅ›lona prawidÅ‚owa Å›cieżka do programu GnuPG. gpgAgentNotStarted=Nie można uruchomić programu gpg-agent, który jest wymagany przez GnuPG %S. prefUntrusted=NIEZAUFANY prefRevoked=UNIEWAÅ»NIONY prefExpiredKey=PRZEDAWNIONY KLUCZ prefExpired=PRZEDAWNIONY prefGood=PrawidÅ‚owy podpis od %S prefBad=NIEPRAWIDÅOWY podpis od %S failCancel=Błąd – użytkownik anulowaÅ‚ odbiór klucza failNoServer=Błąd – nie wprowadzono nazwy serwera kluczy failNoID=Błąd – brak ID klucza do pobrania failKeyExtract=Błąd – nie powiodÅ‚o siÄ™ uzyskanie klucza notFirstBlock=Błąd – pierwszy blok OpenPGP nie jest blokiem klucza publicznego importKeyConfirm=Czy zaimportować klucze publiczne osadzone w wiadomoÅ›ci? failKeyImport=Błąd – nie powiodÅ‚o siÄ™ zaimportowanie klucza fileWriteFailed=Błąd zapisu do pliku %S importKey=Importowanie klucza publicznego %S z serwera kluczy: uploadKey=Eksportowanie klucza publicznego %S do serwera: keyId=ID klucza keyAndSigDate=ID klucza: 0x%S / Podpisano dnia: %S keyFpr=Odcisk klucza: %S noEmailProvided=Nie podano adresu e-mail! keyAlreadySigned=Ten klucz jest już podpisany, nie można podpisać go ponownie. gnupg.invalidKey.desc=Nie znaleziono klucza %S lub jest on nieprawidÅ‚owy. Być może jest on nieważny. selKeyExpired=przedawniony %S createdHeader=Utworzony atLeastOneKey=Nie wybrano klucza! Należy zaznaczyć co najmniej jednÄ… pozycjÄ™. fewerKeysThanRecipients=Zaznaczono mniejszÄ… liczbÄ™ kluczy niż odbiorców. Czy na pewno ten zestaw kluczy do szyfrowania jest kompletny? userSel.button.goBack=Wybierz wiÄ™cej kluczy userSel.secretKeySel.title=Wybierz klucz prywatny OpenPGP, aby podpisać wiadomość # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=WyÅ›lij później # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Uwaga! Niewiele klientów poczty ma obsÅ‚ugÄ™ PGP/MIME! W systemie Windows tylko Mozilla/Thunderbird, Sylpheed, Pegasus i Mulberry obsÅ‚ugujÄ… ten standard. W systemach Linux/UNIX i Mac OS X obsÅ‚uguje go wiÄ™kszość popularnych klientów poczty. Jeżeli nie masz pewnoÅ›ci, zaznacz opcjÄ™ %S. first=pierwszÄ… second=drugÄ… # Strings used in am-enigprefs.js encryptKeyHeader=Wybierz klucz OpenPGP do szyfrowania identityName=Tożsamość: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Uaktywniono szyfrowanie, ale nie wybrano żadnego klucza. Aby szyfrować wiadomoÅ›ci wysyÅ‚ane do %S, należy wybrać co najmniej jeden ważny klucz z listy dostÄ™pnych. Czy chcesz wyłączyć szyfrowanie wiadomoÅ›ci do %S? noKeyToUse=(brak – bez szyfrowania) noEmptyRule=ReguÅ‚a nie może być pusta! Wprowadź adres e-mail w polu edycji reguÅ‚y. invalidAddress=Wprowadzone adresy e-mail sÄ… niepoprawne. Nie należy wpisywać nazwy adresata, tylko sam adres. Np.\nNieprawidÅ‚owo: Jan Kowalski \nPrawidÅ‚owo: jakis.adres@poczta.pl noCurlyBrackets=Nawiasy klamrowe {} majÄ… specjalne znaczenie i nie powinny być używane w adresach e-mail. Jeżeli chcesz modyfikować zasady tej reguÅ‚y, użyj opcji „Zastosuj regułę gdy adresat…â€.\nWiÄ™cej informacji dostÄ™pnych jest po naciÅ›niÄ™ciu przycisku Pomoc. # Strings used in enigmailRulesEditor.js never=Nigdy always=Zawsze possible=Możliwe deleteRule=Czy usunąć wybranÄ… regułę? nextRcpt=(NastÄ™pny adresat) negateRule=Nie addKeyToRule=Dodaj klucz %S (%S) do reguÅ‚y dla adresata # Strings used in enigmailSearchKey.js needOnline=Wybrana funkcja nie jest dostÄ™pna w trybie offline. Włącz tryb online i spróbuj ponownie. protocolNotSupported=Przy użyciu wybranego protokoÅ‚u „%S://†pobranie kluczy OpenPGP nie jest możliwe. gpgkeysDisabled=Pomóc może włączenie opcji „extensions.enigmail.useGpgKeysToolâ€. noKeyserverConn=Nie można połączyć siÄ™ z serwerem kluczy %S. keyDownloadFailed=Nie powiodÅ‚o siÄ™ pobieranie kluczy z serwera. Status wiadomoÅ›ci:\n%S internalError=WystÄ…piÅ‚ wewnÄ™trzny błąd. Nie można pobrać/zaimportować kluczy. noKeyFound=Niestety nie udaÅ‚o siÄ™ znaleźć kluczy pasujÄ…cych do podanych kryteriów wyszukiwania.\nIdentyfikatory kluczy (ID) powinny być poprzedzone znakami „0x†(np. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Nie powiodÅ‚o siÄ™ wyszukiwanie lub pobieranie kluczy z serwera – nie można uruchomić programu gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nie powiodÅ‚o siÄ™ ustawienie poziomu zaufania dla wÅ‚aÅ›ciciela # Strings in enigmailSignKeyDlg.js signKeyFailed=Nie udaÅ‚o siÄ™ podpisać klucza alreadySigned.label=Informacja. Klucz %S jest już podpisany za pomocÄ… wybranego klucza prywatnego. partlySigned.label=Informacja: niektóre numery ID klucza %S zostaÅ‚y już podpisane przez wybrany klucz prywatny. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Wczytywanie kluczy… ProszÄ™ czekać. keyValid.unknown=nieznany keyValid.invalid=niepoprawny keyValid.disabled=wyłączony keyValid.revoked=unieważniony keyValid.expired=przeterminowany keyValid.noSubkey=brak podklucza keyTrust.untrusted=brak keyTrust.marginal=ograniczone keyTrust.full=peÅ‚ne keyTrust.ultimate=absolutne keyTrust.group=(grupa) keyType.public=pub keyType.publicAndSec=pub/pryw keyMan.enableKey=Włącz klucz keyMan.disableKey=Wyłącz klucz userAtt.photo=Atrybuty użytkownika (obraz JPEG) asciiArmorFile=Opakowanie ASCII (*.asc) importKeyFile=Import plik klucza OpenPGP gnupgFile=Pliki GnuPG saveRevokeCertAs=Utwórz i zapisz certyfikat unieważnienia revokeCertOK=Certyfikat unieważnienia zostaÅ‚ utworzony. Możesz użyć go, aby unieważnić swój klucz publiczny, np. w przypadku utraty klucza prywatnego.\n\nZalecane jest przeniesienie tego certyfikatu na noÅ›nik, który może być przechowywany w bezpiecznym miejscu, np. pamięć wymienna albo CD-ROM. Jeżeli osoba postronna uzyska dostÄ™p do certyfikatu, może uczynić twój klucz bezużytecznym. revokeCertFailed=Nie udaÅ‚o siÄ™ utworzyć certyfikatu unieważnienia. addUidOK=Nowe ID zostaÅ‚o dodane addUidFailed=Nie udaÅ‚o siÄ™ dodać nowego ID noKeySelected=Aby wykonać wybranÄ… operacjÄ™, należy zaznaczyć co najmniej jeden klucz exportToFile=Eksport klucza publicznego do pliku exportSecretKey=Czy chcesz dołączyć klucz prywatny do zapisywanego pliku z kluczami OpenPGP? saveKeysOK=Klucze zostaÅ‚y zapisane saveKeysFailed=Nie udaÅ‚o siÄ™ zapisać kluczy importKeysFailed=Nie udaÅ‚o siÄ™ zaimportować kluczy enableKeyFailed=Nie udaÅ‚o siÄ™ włączenie/wyłączenie kluczy specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-pryw defaultPubKeyFilename=Eksportowane-klucze-publiczne defaultPubSecKeyFilename=Eksportowane-klucze-publiczne-i-prywatne noSecretKeys=Nie znaleziono klucza prywatnego.\n\nCzy chcesz wygenerować wÅ‚asny klucz? sendKeysOk=Klucze zostaÅ‚y wysyÅ‚ane sendKeysFailed=Nie udaÅ‚o siÄ™ wysÅ‚ać kluczy receiveKeysOk=Klucze zostaÅ‚y zaktualizowane receiveKeysFailed=Nie udaÅ‚o siÄ™ pobrać kluczy importFromClip=Czy chcesz zaimportować klucze ze schowka? copyToClipbrdFailed=Nie udaÅ‚o siÄ™ skopiować wybranych kluczy do schowka. copyToClipbrdOK=Skopiowano klucze do schowka deleteSecretKey=Uwaga! Zamierzasz usunąć klucz prywatny!\nJeÅ›li usuniesz ten klucz, nie bÄ™dziesz mieć możliwoÅ›ci odszyfrowania wiadomoÅ›ci zaszyfrowanych tym kluczem ani unieważnienia tego klucza.\n\nCzy na pewno chcesz usunąć obydwa klucze, prywatny i publiczny\n„%Sâ€? deleteMix=Uwaga! Zamierzasz usunąć klucze prywatne!\nJeÅ›li usuniesz ten klucz, nie bÄ™dziesz mieć możliwoÅ›ci odszyfrowania wiadomoÅ›ci zaszyfrowanych tym kluczem.\n\nCzy na pewno chcesz usunąć wszystkie zaznaczone klucze prywatne i publiczne? deletePubKey=Czy chcesz usunąć klucz publiczny\n„%Sâ€? deleteSelectedPubKey=Czy chcesz usunąć wybrane klucze publiczne? deleteKeyFailed=Nie udaÅ‚o siÄ™ usunąć tego klucza. revokeKeyOk=Klucz zostaÅ‚ unieważniony. Jeżeli klucz jest dostÄ™pny na serwerze kluczy, zalecane jest ponowne wysÅ‚anie go na serwer, tak aby inni użytkownicy otrzymali informacjÄ™ o unieważnieniu. revokeKeyFailed=Nie udaÅ‚o siÄ™ unieważnić tego klucza. refreshAllQuestion=Nie wybrano żadnego klucza. Czy chcesz odÅ›wieżyć wszystkie klucze? refreshKey.warn=Uwaga! W zależnoÅ›ci od liczby kluczy i parametrów połączenia, odÅ›wieżenie wszystkich kluczy może być dÅ‚ugÄ… operacjÄ…! downloadContactsKeys.warn=Uwaga! W zależnoÅ›ci od liczby kontaktów i parametrów połączenia, pobieranie wszystkich kluczy może byc dÅ‚uga operacjÄ…! downloadContactsKeys.importFrom=Importuj kontakty z książki adresowej "%S" keyMan.button.exportSecKey=&Eksportuj klucze prywatne keyMan.button.exportPubKey=Eksportuj tylko klucze &publiczne keyMan.button.import=&Importuj keyMan.button.refreshAll=&OdÅ›wież wszystkie klucze keyMan.button.revokeKey=&Unieważnij klucz keyMan.button.skip=PomiÅ„ klucz keylist.noOtherUids=Nie ma innych tożsamoÅ›ci keylist.hasOtherUids=Także znany jako keylist.noPhotos=Brak zdjÄ™cia keylist.hasPhotos=ZdjÄ™cia keyMan.addphoto.filepicker.title=Wybierz zdjÄ™cie do dodania keyMan.addphoto.warnLargeFile=Wybrany plik jest wiÄ™kszy niż 25 kB.\nNie zaleca siÄ™ dodawania bardzo dużych plików, ponieważ klucz bÄ™dzie wówczas bardzo duży. keyMan.addphoto.noJpegFile=Wybrany plik nie jest w formacie JPEG. Wybierz inny plik. keyMan.addphoto.failed=Nie można dodać zdjÄ™cia. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Nie udaÅ‚o siÄ™ zmienić głównego identyfikatora użytkownika changePrimUidOK=Zmieniono główny identyfikator użytkownika deleteUidFailed=Nie udaÅ‚o siÄ™ usunąć ID %S deleteUidOK=Identyfikator %S zostaÅ‚ usuniÄ™ty revokeUidFailed=Nie udaÅ‚o siÄ™ unieważnić ID %S revokeUidOK=ID %S zostaÅ‚ unieważniony. Jeżeli klucz jest dostÄ™pny na serwerze kluczy, zalecane jest ponowne wysÅ‚anie go na serwer, tak aby inni użytkownicy otrzymali informacjÄ™ o unieważnieniu. revokeUidQuestion=Czy na pewno chcesz unieważnić ID %S? deleteUidQuestion=Czy na pewno chcesz usunąć ID użytkownika %S?\n\nWażna uwaga! Jeżeli klucz publiczny zostaÅ‚ wczeÅ›niej wysÅ‚any na serwer kluczy, to usuniÄ™cie ID użytkownika niczego nie zmieni. W takim przypadku, należy użyć opcji „Unieważnij IDâ€. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=klucz publiczny keyTypePrimary=klucz główny keyTypeSubkey=podklucz keyTypePair=para kluczy keyExpiryNever=nigdy keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Szyfruj keyUsageSign=Podpisz keyUsageCertify=Certyfikuj keyUsageAuthentication=Uwierzytelnianie # Strings in enigmailGenCardKey.xul keygen.started=ProszÄ™ czekać. Trwa proces generowania klucza… keygen.completed=Klucz zostaÅ‚ wygenerowany. Nowe ID klucza to: 0x%S. keygen.keyBackup=Klucz zostaÅ‚ zapisany jako %S keygen.passRequired=OkreÅ›l szyfr, jeÅ›li chcesz utworzyć kopiÄ™ zapasowÄ… swojego klucza poza kartÄ… SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Nie zgadzajÄ… siÄ™ wprowadzone numery PIN – proszÄ™ wprowadzić ponownie cardPin.minLength=PIN musi zawierać co najmniej %S znaków lub cyfr cardPin.processFailed=Nie udaÅ‚o siÄ™ zmienić numeru PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Trwa odÅ›wieżanie kluczy… ProszÄ™ czekać. keyserverProgress.uploading=Trwa wysyÅ‚anie kluczy… ProszÄ™ czekać. keyserverTitle.refreshing=OdÅ›wieżanie kluczy keyserverTitle.uploading=WysyÅ‚anie kluczy # Strings in enigmailSetupWizard passphrase.min8keys=Szyfr powinien zawierać co najmniej 8 znaków! setupWizard.reallyCancel=Czy na pewno chcesz zamknąć Asystenta ustawieÅ„ Enigmail? setupWizard.invalidGpg=Wybrany plik GnuPG nie jest plikiem wykonywalnym. Wybierz inny plik. setupWizard.specifyFile=Aby kontynuować, musisz okreÅ›lić przynajmniej plik klucza publicznego. setupWizard.installFailed=WyglÄ…da na to, że instalacja siÄ™ nie powiodÅ‚a. Spróbuj ponownie uruchomić instalacjÄ™ lub zainstaluj GnuPG rÄ™cznie i zlokalizować go, używajÄ…c przycisku PrzeglÄ…daj… setupWizard.downloadForbidden=Dla twojego bezpieczeÅ„stwa, nie bÄ™dziemy pobierać GnuPG. Przejdź na stronÄ™ http://www.gnupg.org/ i pobierz GnuPG. setupWizard.downloadImpossible=Nie możemy teraz pobrać CnuPG. Spróbuj później, lub przejdź na stronÄ™ http://www.gnupg.org/ i pobierz GnuPG. setupWizard.hashSumError=Asystent nie może zweryfikować spójnoÅ›ci pobranego pliku. Plik może być uszkodzony lub zostaÅ‚ zmieniony. Czy mimo wszystko chcesz kontynuować instalacjÄ™? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Podczas pobierania GnuPG wystÄ…piÅ‚ błąd. Otwórz dziennik błędów, by zobaczyć szczegółowe informacje. installGnuPG.installFailed=Podczas instalowania GnuPG wystÄ…piÅ‚ błąd. Otwórz dziennik błędów, by zobaczyć szczegółowe informacje. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Należy uzupeÅ‚nić nazwÄ™ i adres e-mail addUidDlg.nameMinLengthError=Nazwa musi zawierać co najmniej 5 znaków addUidDlg.invalidEmailError=Należy podać poprawny adres e-mail addUidDlg.commentError=Nawiasy nie sÄ… dopuszczalne w komentarzach # Strings in enigmailCardDetails.js Carddetails.NoASCII=Karta SmartCard obsÅ‚uguje jedynie znaki ASCII w polach "ImiÄ™ i nazwisko"/"Nazwa". # network error types errorType.SecurityCertificate=UsÅ‚uga przedstawia nieważny certyfikat zabezpieczeÅ„. errorType.SecurityProtocol=UsÅ‚uga używa nieznanego protokoÅ‚u zabezpieczeÅ„. errorType.Network=WystÄ…piÅ‚ błąd sieci. enigmail/lang/pl/help/000077500000000000000000000000001266701624400151375ustar00rootroot00000000000000enigmail/lang/pl/help/compose.html000066400000000000000000000110421266701624400174700ustar00rootroot00000000000000 Pomoc dla Enigmail: Tworzenie wiadomoÅ›ci

Pomoc dla Enigmail

Używanie Enigmail w oknie tworzenia wiadomości

Menu Enigmail w oknie tworzenia wiadomości
Podpisz wiadomość
Włącza/wyłącza podpisywanie wiadomości. Użytkownik jest powiadamiany, jeśli podpisywanie się nie powiodło.
Szyfruj wiadomość

Włącza/wyłącza szyfrowanie dla wszystkich odbiorców przed wysłaniem. Użytkownik jest powiadamiany, jeśli szyfrowanie się nie powiodło.

Jeśli funkcja Wyświetlaj wybór w razie potrzeby, jest ustawiona na karcie Ustawienia » Zaawansowane » Wybór klucza, będzie wyświetlana lista kluczy, jeśli na liście odbiorców wiadomości znajdują się adresy dla, których nie masz kluczy publicznych.

Jeśli funkcja Nigdy nie wyświetlaj wyboru klucza OpenPGP, jest ustawiona na karcie Ustawienia » Wybór klucza, wiadomość będzie wysyłana niezaszyfrowana, jeśli na liście odbiorców wiadomości znajdują się adresy dla, których nie masz kluczy publicznych.

Użyj PGP/MIME dla tej wiadomości
Włącza/wyłącza użycie PGP/MIME dla danej wiadomości.

Jeśli wiesz, że odbiorca może przeczytać wiadomość za pomocą formatu PGP/MIME, należy go użyć.

Ta funkcja jest zależna od ustawień na karcie Ustawienia » PGP/MIME Zezwalaj na używanie PGP/MIME lub Zawsze używaj PGP/MIME.

Domyślne opcje tworzenia wiadomości
  • Opcje podpisu/szyfrowania… – skrót do Konfiguracja kont » OpenPGP.
  • WysyÅ‚anie wiadomoÅ›ci… – skrót do karty Ustawienia » WysyÅ‚anie.
  • Opcje wyboru kluczy… – skrót do do karty Ustawienia » Wybór kluczy.
  • Opcje PGP/MIME… – skrót do do karty Ustawienia » PGP/MIME.
Cofnij szyfrowanie

Jeśli wysyłanie wiadomości się nie powiodło, na przykład z powodu odrzucenia żądania przez serwer POP, Enigmail nie będzie o tym wiedział i zaszyfrowana wiadomość będzie wyświetlana w oknie tworzenia wiadomości. Wybranie tej funkcji spowoduje cofnięcie szyfrowania/podpisywania i w oknie tworzenia wiadomości będzie wyświetlany oryginalny tekst.

Jako tymczasowe rozwiązanie, funkcja ta może być również używana do odszyfrowania cytowanego tekstu podczas odpowiedzi na zaszyfrowane wiadomości. Enigmail powinien automatycznie rozszyfrować cytowaną wiadomość, ale jeśli z jakiegoś powodu zawiedzie, można za pomocą tej funkcji wymusić deszyfrowanie.

Wstaw klucz publiczny
Wstawia w oknie tworzenia wiadomości blok klucza publicznego w aktualnej pozycji kursora. Użytkownik będzie proszony o podanie adresu e-mail wstawianego klucza. Klucze wstawiane w ten sposób będą u odbiorcy automatycznie rozpoznawane przez Enigmail. Po wstawieniu klucza można nadal wybrać podpisanie/szyfrowanie wiadomości. Nie należy do wiadomości wstawiać więcej niż jeden blok klucza, wystarczy, gdy pojawi się monit, podać wiele adresów e-mail, oddzielając je przecinkami lub spacjami.
Wyczyść zapisane hasło
Czyści zbuforowane szyfry. Użyteczne, jeśli masz wiele szyfrów.
Pomoc
Wyświetla pomocne informacje z witryny internetowej (tę stronę).

Więcej pomocy można uzyskać na stronie pomocy Enigmail.

enigmail/lang/pl/help/editRcptRule.html000066400000000000000000000123261266701624400204370ustar00rootroot00000000000000 Pomoc dla Enigmail: Edycja reguł OpenPGP

Pomoc dla Enigmail

Używanie edytora reguł Enigmail: Edycja reguł OpenPGP

W edytorze reguł można określić dla każdego odbiorcy domyślne ustawienia szyfrowania, podpisywania, PGP/MIME i zdefiniować używane klucze OpenPGP. W tym oknie dialogowym można określić reguły dla konkretnego odbiorcy i dla grupy odbiorców, używając podobnych atrybutów.

Pole „OkreÅ›l reguÅ‚y OpenPGP dlaâ€
Reguły zawierają adresy e-mail odbiorcy (bez nazwisk, po prostu adres, jak: somebody@nazwa_domeny). Możesz podać kilka adresów e-mail, rozdzielając je spacjami. Podany tutaj adres może składać się tylko z domeny, np. @nazwa_domeny. Reguła będzie wówczas pasowała do wszystkich adresów w tej domenie, np. @nazwa_domeny będzie pasować do body@nazwa_domenyl, somebody@nazwa_domeny, anybody@nazwa_domeny itd.
Zastosuj regułę, gdy adresat…
Ustawienie to modyfikuje dopasowanie adresów e-mail. Jeśli jest podane wiele adresów, ustawienie będzie miało zastosowanie do wszystkich. Przykłady są oparte na przykładowym adresie body@nazwa_domeny podanym w powyższym polu.
  • Jest taki sam, jak – reguÅ‚a bÄ™dzie miaÅ‚a zastosowanie tylko do wiadomoÅ›ci adresowanych do body@nazwa_domeny (wielkość znaków musi siÄ™ zgadzać).
  • Zawiera – bÄ™dzie pasowaÅ‚ każdy adres wiadomoÅ›ci zawierajÄ…cy podany ciÄ…g znaków, np. anybody@nazwa_domeny lub body@nazwa_domeny.net.
  • Rozpoczyna siÄ™ od – bÄ™dzie pasowaÅ‚ każdy adres wiadomoÅ›ci rozpoczynajÄ…cy siÄ™ podanym ciÄ…giem znaków, np. body@nazwa_domeny.net, body@nazwa_domeny-nazwa.com.
  • KoÅ„czy siÄ™ na – bÄ™dzie pasowaÅ‚ każdy adres wiadomoÅ›ci koÅ„czÄ…cy siÄ™ podanym ciÄ…giem znaków, np. anybody@nazwa_domeny, somebody@nazwa_domeny.
Przejdź do następnej reguły pasującej do adresu
Włączenie tej funkcji umożliwi zdefiniowanie reguły, ale nie trzeba określać klucza w polu Użyj następujących kluczy OpenPGP:, więc adres e-mail jest wykorzystywany do sprawdzania klucza w momencie wysyłania. Dla tego adresu będą również przetwarzane inne reguły.
Nie sprawdzaj kolejnych reguł pasujących do adresu
Włączenie tej funkcji, jeśli reguła pasuje, zatrzyma przetwarzanie innych reguł dla pasujących adresów, na przykład kontynuowanie przetwarzania reguły dla następnego odbiorcy.
Użyj następujących kluczy OpenPGP:
Użyj przycisku Wybierz klucze, by wybrać klucze odbiorcy, które będą używane do szyfrowania. Oprócz czynności określonej powyżej żadne inne reguły nie są przetwarzane.
Wysyłając wiadomości włącz…
Włącza lub wyłącza podpisywanie wiadomości. Funkcja ta używa lub zastępuje to, co zostało określone w oknie tworzenia wiadomości. Ustawienia są następujące:
  • Nigdy – wyłącza podpisywanie, nawet jeÅ›li zostaÅ‚o włączone w oknie tworzenia wiadomoÅ›ci (zastÄ™puje wszystkie inne wartoÅ›ci reguÅ‚),
  • Tak, jeÅ›li zaznaczono takÄ… opcjÄ™ tworzenia wiadomoÅ›ci – pozostawia sposób podpisywania okreÅ›lony w oknie tworzenia wiadomoÅ›ci,
  • Zawsze – włącza podpisywanie, nawet jeÅ›li nie zostaÅ‚o włączone w oknie tworzenia wiadomoÅ›ci.
Te ustawienia podpisywania są stosowane do wszystkich reguł, do których pasują. Jeśli jedna z reguł wyłącza podpisywanie, wiadomość nie będzie podpisywana, pomimo że inne reguły mają ustawienie zawsze.
Szyfrowanie
Włącza lub wyłącza szyfrowanie wiadomości. Ustawienia i ich znaczenie są takie same jak dla podpisywania wiadomości.
PGP/MIME
Włącza lub wyłącza kodowanie wiadomoÅ›ci w formacie PGP/MIME (RFC 3156). JeÅ›li PGP/MIME jest wyłączone, wiadomoÅ›ci sÄ… kodowane za pomocÄ… „inline PGPâ€. Ustawienia i ich znaczenie sÄ… takie same jak dla podpisywania wiadomoÅ›ci.

Reguły są przetwarzane w kolejności, w jakiej są wyświetlane w edytorze reguł OpenPGP. Gdy reguła pasuje do odbiorcy i zawiera klucz OpenPGP, oprócz używania określonego klucza, przy kolejnym przetwarzaniu reguł odbiorca nie jest brany pod uwagę.


Więcej pomocy można uzyskać na stronie pomocy Enigmail.

enigmail/lang/pl/help/initError.html000066400000000000000000000050051266701624400200020ustar00rootroot00000000000000 Pomoc dla Enigmail: Jak rozwiązać problemy z zainicjowaniem OpenPGP

Pomoc dla Enigmail

Jak rozwiązać problemy z zainicjowaniem OpenPGP

Zainicjowanie OpenPGP może się nie powieść z różnych powodów. Najczęściej występujące są opisane poniżej. Więcej informacji na ten temat można znaleźć na stronie pomocy Enigmail.

Nie można znaleźć GnuPG

Aby OpenPGP działało, musi być zainstalowane narzędzie GnuPG. Jeśli nie można znaleźć GnuPG, najpierw należy sprawdzić czy na komputerz jest zainstalowanye plik wykonywalny: gpg.exe w systemie Windows lub gpg w innych systemach. Jeśli GnuPG jest zainstalowane i OpenPGP nie może go znaleźć, trzeba w ustawieniach OpenPGP (menu OpenPGP » Preferencje) ręcznie określić ścieżkę do GnuPG.

Nie udało się zainicjować Enigmime

OpenPGP działa tylko, jeśli zostało zbudowane za pomocą tego samego środowiska tworzenia, co np. Thunderbird lub SeaMonkey. Oznacza to, że możesz używać oficjalnych wydań Enigmail tylko jeśli używasz oficjalnych wydań Thunderbird lub SeaMonkey dostarczanych przez mozilla.org.

Jeśli używasz wersji Thunderbirda lub SeaMonkey pochodzących z innych źródeł, np. od dostarczyciela twojej dystrybucji Linuksa lub aplikacja została zbudowana we własnym zakresie, należy użyć Enigmail zbudowanego przez to samo źródło lub zbudować go we własnym zakresie. Aby zbudować Enigmail, przejdź do sekcji z kodem źródłowym znajdującej się na stronie Enigmail. Nie zgłaszaj błędów dotyczących tego błędu - nie są one rozwiązywalne.

Więcej pomocy można uzyskać na stronie pomocy Enigmail.

enigmail/lang/pl/help/messenger.html000066400000000000000000000113431266701624400200170ustar00rootroot00000000000000 Pomoc dla Enigmail: Czytanie wiadomości

Pomoc dla Enigmail

Używanie Enigmail podczas czytania wiadomości

Przycisk Deszyfruj w głównym oknie wiadomości
Przycisk ten może być używany do różnych celów: deszyfrowania, weryfikowania lub importowania kluczy publicznych. Normalnie deszyfrowanie/weryfikowanie odbywa się automatycznie i może być wyłączone w ustawieniach. Jeśli automatyczne deszyfrowanie/weryfikowanie się nie powiedzie, w pasku statusu Enigmail zostanie wyświetlona informacja o błędzie. Po naciśnięciu przycisku Deszyfruj zostaną wyświetlone szczegółowe informacje dotyczące tego błędu zawierające polecenia z GnuPG.
Ikony pióra i klucza wyświetlane w nagłówku wiadomości
Ikony pióra i klucza wyświetlane w nagłówku wiadomości informują, czy aktualnie czytana wiadomość została podpisana i/lub zaszyfrowana i czy podpis jest prawidłowy, np. że wiadomość nie została zmieniona od czasu jej podpisania. Jeśli wiadomość została zmieniona, kolor ikony pióra zostanie zmieniony na czerwony, informując, że podpis jest nieprawidłowy. Kliknięcie prawym przyciskiem myszy którejś z tych ikon, spowoduje wyświetlenie menu zawierającego następujące opcje:
  • Informacje OpenPGP… – umożliwia podglÄ…d statusu elementów wyjÅ›ciowych z GnuPG dla wiadomoÅ›ci.
  • Kopiuj informacje OpenPGP – kopiuje status elementów wyjÅ›ciowych z GnuPG do schowka, by nastÄ™pnie można byÅ‚o wstawić je do odpowiedzi na wiadomość itp.
  • Pokaż zdjÄ™cie – umożliwia podglÄ…d zdjÄ™cia osoby, która wysÅ‚aÅ‚a wiadomość, jeÅ›li zdjÄ™cie zostaÅ‚o dołączone do klucza publicznego. (Ta funkcja bÄ™dzie włączona tylko, jeÅ›li zdjÄ™cie jest w kluczu danego nadawcy).
  • Informacje S/MIME… – umożliwia zobaczenie informacji bezpieczeÅ„stwa S/MIME dla wiadomoÅ›ci.

Jeśli w pliku gpg.conf nie są ustawione funkcje keyserver-options auto-key-retrieve i czytasz podpisaną lub zaszyfrowaną wiadomość, w nagłówku czytanej wiadomości będzie widoczna ikona pióra ze znakiem zapytania, a w pasku statusu Enigmail będzie wyświetlana informacja Część wiadomości podpisana; kliknij ikonę pióra, by zobaczyć szczegóły i w wiadomości zostanie wyświetlony blok zawierający wszystkie wskaźniki OpenPGP i blok podpisu.

Możesz także zobaczyć tę informację, jeśli w pliku gpg.conf są ustawione funkcje keyserver-options auto-key-retrieve, a klucz OpenPGP jest niedostępny na domyślnym serwerze kluczy.

Po kliknięciu ikony pióra ze znakiem zapytania, zostanie wyświetlone okno informujące, że klucz nie jest dostępny w twojej bazie kluczy. Po naciśnięciu przycisku OK, zostanie wyświetlone kolejne okno zawierające listę serwerów kluczy, z której można wybrać do pobrania klucz publiczny nadawcy.

Aby skonfigurować listę serwerów kluczy, których chcesz używać, przejdź na kartę OpenPGP » Ustawienia » Zaawansowane » Serwery kluczy i w polu Określ swoje serwery kluczy, wprowadź adresy serwerów kluczy, oddzielając je przecinkami. Pierwszy serwer na liście będzie używany jako domyślny serwer.

Otwierania zaszyfrowanych załączników/importowanie załączonych kluczy OpenPGP
Załączniki z rozszerzeniem *.pgp, *.asc i *.gpg są rozpoznawane jako załączniki, które mogą być obsługiwane przez Enigmail specjalnie. Kliknięcie takiego załącznika prawym przyciskiem myszy spowoduje wyświetlenie w menu kontekstowym dwóch specjalnych elementów: Deszyfruj i otwórz i Deszyfruj i zapisz jako… Użyj tych dwóch elementów, jeśli chcesz, by Enigmail deszyfrował załącznik przed otworzeniem lub jego zapisaniem. Jeśli załącznik jest rozpoznany jako plik klucza OpenPGP, zostanie zaoferowane zaimportowanie kluczy do twojej bazy kluczy.

Więcej pomocy można uzyskać na stronie pomocy Enigmail.

enigmail/lang/pl/help/rulesEditor.html000066400000000000000000000067371266701624400203430ustar00rootroot00000000000000 Pomoc dla Enigmail – Edytor reguł

Pomoc dla Enigmail

Użycie edytora reguł

W edytorze reguł można określić domyślne ustawienia dla każdego adresata: włączyć szyfrowanie, podpisywanie, kodowanie PGP/MIME oraz zdefiniować działanie kluczy OpenPGP. Każda reguła składa się z pięciu, umieszczonych każde w osobnym wierszu, pól:

E-mail
Pola do dopasowywania wiadomości e-mail – Do:, Kopia: i Ukryta kopia:. Dopasowywanie działa w oparciu o substringi. Więcej szczegółów można znaleźć w oknie dialogowym edytora reguł.
Klucze OpenPGP
Wykaz ID kluczy OpenPGP używanych dla adresata
Podpis
Włącza lub wyłącza podpisywanie wiadomości. Ta funkcja używa lub nadpisuje, to co zostało określone w oknie tworzenia wiadomości. Dostępne ustawienia:
  • Nigdy – wyłącza podpisywanie wiadomoÅ›ci, nawet jeÅ›li funkcja byÅ‚a włączona w oknie tworzenia wiadomoÅ›ci – unieważnia inne ustawienia.
  • Pozostaw – pozostawia podpis, taki jaki byÅ‚ ustawiony w oknie tworzenia wiadomoÅ›ci,
  • Zawsze – włącza podpisywanie wiadomoÅ›ci, nawet jeÅ›li nie byÅ‚o włączone w oknie tworzenia wiadomoÅ›ci.

Ustawienia podpisywania są stosowane dla tych wszystkich reguł, które mają włączoną funkcję podpisywania. Jeśli jakaś reguła wyłącza podpisywanie, wiadomość nie będzie podpisywana bez względu na inne reguły, które określają Zawsze.

Szyfrowanie
Włącza lub wyłącza szyfrowanie wiadomości. Dostępne ustawienia i znaczenie są takie same, jak dla podpisywania wiadomości.
PGP/MIME
Włącza lub wyłącza używanie kodowania PGP/MIME (RFC 3156) wiadomoÅ›ci. JeÅ›li PGP/MIME jest wyłączone, wiadomoÅ›ci sÄ… kodowane za pomocÄ… „inline PGPâ€. DostÄ™pne ustawienia i znaczenie sÄ… takie same, jak dla podpisywania wiadomoÅ›ci.

Reguły są przetwarzane w kolejności, w jakiej są wyświetlane na liście. W przypadku, gdy reguła pasuje do odbiorcy i zawiera ID klucza OpenPGP, oprócz korzystania z określonego ID klucza odbiorcy, nic innego nie jest brane pod uwagę podczas przetwarzania kolejnych reguł.

Informacja. Proces twórczy edytora reguł nie jest jeszcze zakończony. Bardziej zaawansowane reguły można tworzyć, edytując bezpośrednio plik reguł. Reguły edytowane w ten sposób nie powinny już być nigdy edytowane w edytorze reguł. Więcej informacji na temat bezpośredniego edytowania pliku reguł jest dostępnych na stronie domowej Enigmail.


Więcej pomocy można uzyskać na stronie pomocy Enigmail.

enigmail/lang/pl/help/sendingPrefs.html000066400000000000000000000050761266701624400204640ustar00rootroot00000000000000 Pomoc dla Enigmail – Edytowanie reguł OpenPGP

Pomoc dla Enigmail

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/pt-BR/000077500000000000000000000000001266701624400145205ustar00rootroot00000000000000enigmail/lang/pt-BR/am-enigprefs.properties000066400000000000000000000001231266701624400212070ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Segurança OpenPGP enigmail/lang/pt-BR/enigmail.dtd000066400000000000000000001040571266701624400170110ustar00rootroot00000000000000 NOTA: A geração de chaves pode levar até vários minutos para terminar. Não feche o navegador enquanto a geração de chaves estiver em processo. Navegar ou realizar operações intensivas de disco irão preencher o 'espaço aleatório' e agilizar o processo. Você será alertado quando a geração de chaves estiver concluída."> ' é inválido"> NOTA: A geração da chave pode levar até vários minutos para terminar. Não saia da aplicação enquanto a geração da chave estiver em progresso. Você será alertado quando a geração da chave estiver completa."> Nota: O Enigmail irá sempre verificar assinaturas, caso existam, em mensagens de todas as contas e identidades não importando se o Enigmail está especificamente configurado ou não"> Obrigado por utilizar o Enigmail."> enigmail/lang/pt-BR/enigmail.properties000066400000000000000000000675541266701624400204440ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Alerta do Enigmail enigConfirm=Confirmação do Enigmail enigError=Erro do Enigmail enigPrompt=Pergunta do Enigmail dlgYes=&Sim dlgNo=&Não dlgKeepSetting=Lembrar da minha resposta e não me perguntar novamente dlgNoPrompt=Não mostrar esta mensagem novamente dlg.button.delete=Apagar (&D) dlg.button.cancel=&Cancelar dlg.button.close=Fe&char dlg.button.continue=Con&tinuar dlg.button.skip=Pular (&S) dlg.button.view=&Visualizar repeatPrefix=\n\nEste alerta irá se repetir %S repeatSuffixSingular=vez. repeatSuffixPlural=vezes. noRepeat=\n\nEste alerta não irá se repetir até que você atualize o Enigmail. pgpNotSupported=Você parece estar utilizando o Enigmail juntamente com o PGP 6.x\n\nInfelizmente, o PGP 6.x possui alguns problemas que previnem o Enigmail de funcionar corretamente. Portanto, o Enigmail não suporta mais o PGP 6.x; por favor mude para o GnuPG (GPG) para utilizar o Enigmail.\n\nSe você precisar de ajuda para trocar para o GnuPG, leia a seção de Ajuda na página do Enigmail. passphraseCleared=A senha foi removida. noPhotoAvailable=Foto não disponível debugLog.title=Enigmail Debug Log error.photoPathNotReadable=O caminho para a foto em '%S' não é válido # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged= Essa nova versão do Enigmail muda o gerenciamento das preferências e opções. Tentamos transferir os antigos padrões para esta nova versão. No entanto, não podemos cobrir todos os casos automaticamente. Por favor cheque novamente os resultados das novas preferências e opções. enigmailCommon.checkPreferences=Checar preferências... usingVersion=Rodando Enigmail versão %S usingAgent=Utilizando %S com o executável %S para criptografar e descriptografar agentError=ERRO: Falha ao acessar o serviço Enigmime! accessError=Erro ao acessar serviço Enigmail onlyGPG=Geração de chaves funciona apenas com GnuPG (não com PGP)! keygenComplete=Geração de chaves completa! A identidade <%S> será utilizada para assinar. revokeCertRecommended=Nós recomendamos que seja criado um certificado de revogação para a sua chave. Este certificado pode ser utilizado para invalidar sua chave, por exemplo no caso em que sua chave secreta seja perdida ou comprometida. Você deseja criar este certificado de revogação agora? keyMan.button.generateCert=&Gerar Certificado genCompleteNoSign=Geração de chaves completada! genGoing=Geração de chaves já em progresso! passNoMatch=Senhas não conferem; por favor tente novamente passCheckBox=Por favor marque a opção correspondente se não for especificar senha para a chave passUserName=Por favor especifique o nome do usuário para esta identidade passSpaceProblem=Devido a questões técnicas, sua senha não pode iniciar ou terminar com um caracter de espaço. changePassFailed=A mudança de senha falhou. keyConfirm=Gerar chaves pública e privada para '%S'? keyMan.button.generateKey=&Gerar Chave keyAbort=Abortar geração da chave? keyMan.button.generateKeyAbort=&Abortar Geração de Chaves keyMan.button.generateKeyContinue=&Continuar Geração de Chaves expiryTooLong=Você não pode criar uma chave que expire daqui a mais de 100 anos. expiryTooLongShorter=Você não pode criar uma chave que expira daqui a mais de 90 anos. expiryTooShort=Sua chave deve ser válida por pelo menos um dia. dsaSizeLimit=Chaves de assinatura DSA são limitadas a 3072 bits. O tamanho da chave será reduzido de acordo. keyGenFailed=A geração da chave falhou. Por favor verifique o console Enigmail (Menu Enigmail > Depuração do Enigmail) para detalhes. setKeyExpirationDateFailed=A data de validade não pôde ser mudada # Strings in enigmailMessengerOverlay.js securityInfo=Informações de Segurança do Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Anexos desta mensagem não foram assinados ou criptografados*\n\n possiblyPgpMime=Mensagem possivelmente criptografada ou assinada com PGP/MIME; clique no botao Descriptografar para verificar noDecrypted=Nenhuma mensagem descriptografada para salvar!\nUtilize o comando Salvar do menu Arquivo noMessage=Nenhuma mensagem para salvar! useButton=Por favor clique no botão Descriptografar para tirar a criptografia da mensagem saveHeader=Enigmail: Salvar mensagem descriptografada saveAttachmentHeader=Enigmail: Salvar anexo descriptografada noTempDir=Não foi possível encontrar um diretório temporário para gravar\nPor favor defina a variável de ambiente TEMP attachmentPgpKey=O anexo '%S' que você está abrindo parece ser um arquivo de chave OpenPGP.\n\nClique em SIM para importar as chaves contidas ou NÃO para ver o conteúdo do arquivo em uma janela do navegador beginPgpPart=********* *INÃCIO DA PARTE CRIPTOGRAFADA ou ASSINADA* ********* endPgpPart=********** *FIM DA PARTE CRIPTOGRAFADA ou ASSINADA* ********** notePartEncrypted=Enigmail: *Partes da mensagem NÃO foram assinadas ou criptografada* noteCutMessage=Enigmail: *Múltiplos blocos de mensagem encontrados -- descriptografia/verificação cancelada* decryptOkNoSig=Aviso\n\nA descriptografia foi efetuada com sucesso, mas a assinatura não pode ser verificada corretamente msgOvl.button.contAnyway=&Continuar Assim Mesmo signature.verifiedOK=A assinatura para o anexo %S foi verificada com sucesso signature.verifyFailed=A assinatura para o anexo %S não pode ser verificada attachment.noMatchToSignature=Não foi possível encontrar o arquivo de assinatura correspondente ao anexo '%S' attachment.noMatchFromSignature=Não foi possível encontrar o anexo correspondente ao arquivo de assinatura '%S' keysToExport=Selecione as Chaves OpenPGP a Inserir keysToUse=Selecione a(s) Chave(s) OpenPGP que serão utilizadas para %S pubKey=Chave pública para %S\n windowLocked=Janela de composição bloqueada; envio cancelado sendUnencrypted=Falha ao inicializar o Enigmail.\nEnviar mensagem sem criptografia? composeSpecifyEmail=Especifique o seu endereço de email primário, o qual será utilizado para escolher a chave de assinatura para mensagens de saída.\n Se o endereço não for informado, o endereço de ORIGEM da mensagem será utilizado para escolher a chave de assinatura. sendingHiddenRcpt=Esta mensagem possui destinatários BCC (cópia-carbono oculta). Caso esta mensagem seja criptografada, é possível ocultar os destinatários que estão marcados como BCC, mas os usuários de outros produtos, como o PGP, não poderão decriptografar a mensagem. Logo, recomendamos que você evite enviar mensagens criptografadas com destinatários BCC. sendWithHiddenBcc=Ocultar destinatários BCC sendWithShownBcc=Criptografar normalmente sendingNews=Operação de envio criptografado cancelada.\n\nEsta mensagem não pode ser criptografada porque existem destinatários de um grupo de discussão. Por favor reenvie a mensagem sem criptografia. sendToNewsWarning=Aviso: você está prestes a enviar uma mensagem criptografada para um grupo de discussão.\n\nIsto não é recomendado porque só faz sentido se todos os membros do grupo puderem descriptografar a mensagem, ou seja, a mensagem precisa ser criptografada com as chaves de TODOS os participantes do grupo. Por favor envie esta mensagem apenas se você sabe exatamente o que está fazendo.\n\nContinuar? hasHTML=Aviso de mensagem HTML:\nEsta mensagem pode conter HTML, que pode causar problemas durante a assinatura/criptografia. Para evitar isto, você deve pressionar a tecla SHIFT ao clicar no botão Compor/Responder para enviar uma mensagem assinada.\nSe você assina as mensagens por padrão, você deve desmarcar a opção 'Compor Mensagens em HTML' nas preferências para desabilitar o envio de mensagens HTML permanentemente para esta conta de email. strippingHTML=A mensagem contém informações de formatação HTML que podem ser perdidas ao convertê-la para texto puro para assinatura/criptografia. Você deseja continuar? msgCompose.button.sendAnyway=Enviar Mensagem A&ssim Mesmo attachWarning=Os anexos desta mensagem não estão presentes localmente, e portanto não podem ser criptografados. Para poder criptografar os anexos, armazene-os como arquivos locais primeiro e depois anexe-os. Você deseja enviar a mensagem assim mesmo? quotedPrintableWarn=Você habilitou o tipo de codificação 'quoted-printable' para o envio de mensagens. Isto pode resultar em erros de decriptografia e/ou verificação de sua mensagem.\nVocê deseja desligar a opção 'quoted-printable' agora? minimalLineWrapping=Você definiu a quebra de linha em %S caracteres. Para a correta criptografia e/ou assinatura, este valor precisa ser de pelo menos 68 caracteres.\nVocê deseja alterar a quebra de linha para 68 caracteres agora? warning=Aviso signIconClicked=Você alterou manualmente a assinatura. Logo, enquanto você estiver compondo esta mensagem, (des)ativar a assinatura não depende mais de (de)ativar a criptografia. pgpMime_sMime.dlg.text=Você habilitou tanto o PGP/MIME quanto o S/MIME. Infelizmente não é possível suportar ambos os protocolos simultaneamente. Selecione qual deseja utilizar, PGP/MIME ou S/MIME. pgpMime_sMime.dlg.pgpMime.button=Utilizar &PGP/MIME pgpMime_sMime.dlg.sMime.button=Utilizar &S/MIME errorKeyUnusable=Não foi possível encontrar uma chave OpenPGP válida e não expirada para o endereço de email ou ID de chave '%S'.\nVerifique se você possui uma chave OpenPGP válida, e que as suas configurações de conta apontam para esta chave. # note: should end with double newline: sendAborted=Operação de envio abortada.\n\n statPGPMIME=PGP/MIME statSigned=ASSINADA statEncrypted=CRIPTOGRAFADA statPlain=TEXTO PURO offlineSave=Salvar %S mensagem para %S a pasta de Mensagens Não Enviadas? onlineSend=Enviar %S mensagem para %S? encryptKeysNote=Nota: a mensagem está criptografada com as seguintes Identidades / Chaves: %S signFailed=Erro no Enigmail; Criptografia/assinatura falharam; enviar mensagem sem criptografia? msgCompose.button.sendUnencrypted=Enviar Mensagem &Sem Criptografia recipientsSelectionHdr=Selecione os Destinatários para Criptografia configureNow=Você ainda não configurou a segurança Enigmail para a identidade selecionada. Deseja fazer isto agora? # should not be used anymore: encryptYes=A mensagem será criptografada encryptNo=A mensagem não será criptografada # should not be used anymore: signYes=A mensagem será assinada signNo=A mensagem não será assinada # should not be used anymore pgpmimeYes=PGP/MIME será usado pgpmimeNo=Será usado Inline PGP rulesConflict=Detectadas regras por destinatário conflitantes\n%S\n\nEnviar a mensagem com estas configurações? msgCompose.button.configure=&Configurar msgCompose.button.send=Enviar Men&sagem msgCompose.button.save=&Salvar Mensagem # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Chave pública %S necessária para verificar assinatura clickDecrypt=; clique o botão Descriptografar clickDecryptRetry=; clique o botão Descriptografar para tentar novamente msgPart=Parte da mensagem %S msgSigned=assinada msgEncrypted=criptografada msgSignedAndEnc=assinada e criptografada unverifiedSig=Assinatura não verificada incompleteDecrypt=Descriptografia incompleta needKey=Erro - chave secreta necessária para descriptografar a mensagem failedDecrypt=Erro - descriptografia falhou badPhrase=Erro - senha incorreta failedDecryptVerify=Erro - descriptografia/verificação falhou viewInfo=; Ver > Informações de Segurança da Mensagem para detalhes decryptedMsg=Mensagem descriptografada decryptedMsgWithFormatError=Mensagem desencriptada (restaurado o PGP quebrado no email, provavelmente causado por um servidor Exchange antigo, então o resultado pode não ser ideal para a leitura) locateGpg=Localizar o programa GnuPG invalidGpgPath=O GnuPG não pode ser executado com o caminho fornecido. Logo, o Enigmail será desativado até que o caminho para o GnuPG seja alterado novamente ou até que a aplicação seja reiniciada. warningsAreReset=Todos os avisos de erro foram reinicializados. prefs.gpgFound=GnuPG foi encontrado em %S prefs.gpgNotFound=Não foi possível encontrar o GnuPG prefs.warnAskNever=Aviso: ativar esta opção fará com que os emails sejam enviados sem criptografia sem nenhum tipo de aviso caso não existe a chave correspondente para um dos destinatários -- o Enigmail não irá informá-lo se isto ocorrer! prefs.warnIdleTimeForUnknownAgent=O seu sistema utilizar uma ferramenta especial para obter senhas, como o gnome-keyring ou seahorse-agent. Infelizmente o Enigmail não pode controlar o timeout para entrara de senhas na ferramenta que você está utilizando. Logo, os tempos definidos para timeout no Enigmail serão ignorados. prefEnigmail.oneKeyserverOnly=Erro - você pode especificar apenas um servidor de chaves para baixar automaticamente as chaves OpenPGP que estiverem faltando. enterAdminPin=Digite o ADMIN PIN do SmartCard enterCardPin=Digite o PIN do SmartCard notInit=Erro - Serviço Enigmail não foi inicializado badCommand=Erro - comando de criptografia falhou cmdLine=linha de comando e saída: notRequired=Erro - criptografia não é necessária notComplete=Erro - geração de chave não completada invalidEmail=Erro - endereço(s) de email inválido(s) noPassphrase=Erro - nenhuma senha fornecida noPGPblock=Erro - Bloco de dados PGP-armor válido não encontrado unverifiedReply=Parte da mensagem indentada (resposta) provavelmente foi alterada sigMismatch=Erro - Assinatura não confere cantImport=Erro ao importar chave pública\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=O SmartCard %S que foi encontrado em sua leitora não pode ser utilizado para processar a mensagem.\nPor favor insira o SmartCard %S e repita a operação. sc.insertCard=A operação necessita do SmartCard %S.\nPor favor insira o SmartCard solicitado e repita a operação. sc.removeCard=A operação não necessita de um SmartCard na leitora.\nPor favor remova o seu SmartCard e repita a operação. sc.noCardAvailable=Não foi possível encontrar um SmartCard válido na sua leitora\nPor favor insira o SmartCard e repita a operação. sc.noReaderAvailable=A sua leitora de SmartCard não pode ser acessada\nPor favor conecte a sua leitora de SmartCard reader, insira o cartão e repita a operação. gpgNotFound=Não foi possível localizar o programa do GnuPG '%S'.\nCertifique-se de que o caminho do executável do GnuPG esteja configurado corretamente nas Preferências do Enigmail. gpgNotInPath=Não foi possível localizar o executável do GnuPG no PATH.\nCertifique-se de que você definiu o caminho correto para o executável do GnuPG nas Preferências do Enigmail. gpgAgentNotStarted=Não foi possível iniciar o programa gpg-agent que é necessário para sua versão de GnuPG %S. prefUntrusted=NÃO CONFIÃVEL prefRevoked=CHAVE REVOGADA prefExpiredKey=CHAVE EXPIRADA prefExpired=EXPIRADO prefGood=Assinatura válida de %S prefBad=Assinatura INVÃLIDA de %S failCancel=Erro - Recebimento de chave cancelado pelo usuário failNoServer=Erro - Nenhum servidor de chaves especificado para receber chave failNoID=Erro - Nenhuma identidade de chave especificada para se receber chave failKeyExtract=Erro - comando de extração de chave falhou notFirstBlock=Erro - Primeiro bloco OpenPGP não é o bloco de chave pública importKeyConfirm=Importar chave(s) pública(s) contidas na mensagem? failKeyImport=Erro - importação de chave falhou fileWriteFailed=Falha ao escrever no arquivo %S importKey=Importar chave pública %S do servidor de chaves: uploadKey=Enviar chave pública %S para o servidor de chaves: keyId=ID da Chave keyAndSigDate=ID da Chave: 0x%S / Assinada em: %S keyFpr=Impressão digital da Chave: %S noEmailProvided=Você não forneceu um endereço de email! keyAlreadySigned=A chave já está assinada, você não pode assiná-la duas vezes. gnupg.invalidKey.desc=Chave %S não encontrada ou não é válida. A (sub-)chave pode ter expirado. selKeyExpired=expirada em %S createdHeader=Criada em atLeastOneKey=Nenhuma chave selecionada! Você precisa selecionar pelo menos uma chave para aceitar este diálogo fewerKeysThanRecipients=Você selecionou um número de chaves menor que o número de destinatários. Você tem certeza de que a lista de chaves de criptografia está completa? userSel.button.goBack=Selecionar mais chaves userSel.secretKeySel.title=Selecionar uma Chave Secreta OpenPGP para Assinar Suas Mensagens # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Enviar depois # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: PGP/MIME só é suportado por um número limitado de clientes de email! No ambiente Windows apenas o Mozilla/Thunderbird, Sylpheed, Pegasus e Mulberry reconhecidamente suportam este padrão; no ambiente Linux/UNIX e Mac OS X a maioria dos clientes de email mais populares o suportam. Se você não tem certeza, selecione a opção %S. first=primeiro second=segundo # Strings used in am-enigprefs.js encryptKeyHeader=Selecione a Chave OpenPGP para Criptografia identityName=Identidade: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Você ativou a criptografia, mas não selecionou uma chave. Para poder criptografar emails enviados para %S, você precisa especificar uma ou mais chaves válidas a partir de sua relação de chaves. Você deseja desabilitar a criptografia para %S? noKeyToUse=(nenhuma - sem criptografia) noEmptyRule=A Regra não pode ser vazia! Por favor defina um endereço de email no campo de Regra. invalidAddress=O(s) endereço(s) de email que você entrou não são válidos. Você não deve definir os nomes dos destinatários, apenas os endereços de email. Por exemplo:\nInválido: Fulano \nVálido: fulano.qualquer@endereco.net noCurlyBrackets=Os colchetes {} possuem um significado especial e não devem ser utilizados em endereços de email. Se você quiser modificar o comportamento correspondete para esta regra, utilizar a opção 'Aplicar esta regra caso o destinatário ...'.\nMais informações estão disponíveis no botão Ajuda. # Strings used in enigmailRulesEditor.js never=Nunca always=Sempre possible=Possível deleteRule=Deseja apagar a regra selecionada? nextRcpt=(Próximo destinatário) negateRule=Não addKeyToRule=Acrescentar a chave %S (%S) à regra por destinatário # Strings used in enigmailSearchKey.js needOnline=A funão que você selecionou não está disponível em modo offline. Por favor vá para o modo online e tente novamente. protocolNotSupported=O protocolo '%S://' que você selecionou não é suportado para baixar chaves OpenPGP. gpgkeysDisabled=Talvez ajude habilitar a opção 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Não foi possível conectar ao servidor de chaves em %S. keyDownloadFailed=Falha ao baixar chave do servidor de chaves. Mensagem de status é:\n%S internalError=Um erro interno ocorreu. As chaves não puderam ser baixadas ou importadas. noKeyFound=Desculpe, não pude encontrar nenhuma resultado que atenda aos parâmetros de busca especificados.\nVerifique se os ID's de chave estão prefixados com \\"0x\\" (ex: 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Falha ao buscar ou baixar chave do servidor de chaves: gpgkeys_%S não pode ser executado. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Falha ao definir o nível de confiança # Strings in enigmailSignKeyDlg.js signKeyFailed=Assinatura de chave falhou alreadySigned.label=Nota: a chave %S já está assinada com a chave secreta selecionada. partlySigned.label=Nota: alguns logins da chave %S estão já assinalados com a chave secreta selecionada. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Carregando chaves, por favor aguarde ... keyValid.unknown=desconhecida keyValid.invalid=inválida keyValid.disabled=desabilitada keyValid.revoked=revogada keyValid.expired=expirada keyValid.noSubkey=nenhuma sub-chave válida keyTrust.untrusted=não-confiável keyTrust.marginal=mínima keyTrust.full=confiável keyTrust.ultimate=total keyTrust.group=(grupo) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Habilitar Chave keyMan.disableKey=Desabilitar Chave userAtt.photo=Atributo de Usuário (imagem JPEG) asciiArmorFile=ASCII Seguro importKeyFile=Importar Arquivo de Chave OpenPGP gnupgFile=Arquivos do GnuPG saveRevokeCertAs=Criar e Salvar Certificado de Revogação revokeCertOK=O certificado de revogação foi criado com sucesso.Você pode utilizá-lo para invalidar sua chave pública, por exemplo, no caso de perder sua chave secreta.\n\nPor favor transfira-o para uma mídia que possa ser armazenada com segurança, tal como um CD ou um disquete. Caso alguém tenha acesso a este certificado eles podem usá-lo para invalidar sua chave. revokeCertFailed=O certificado de revogação não pode ser criado. addUidOK=ID de Usuário acrescentado com sucesso addUidFailed=Falha ao acrescentar ID de usuário noKeySelected=Você deve escolher pelo menos uma chave para poder executar a operação desejada exportToFile=Exportar Chave Pública para Arquivo exportSecretKey=Você deseja incluir a chave secreta no arquivo de chaves OpenPGP a ser salvo? saveKeysOK=As chaves foram salvas com sucesso saveKeysFailed=Falha ao salvar as chaves importKeysFailed=Falha ao importar as chaves enableKeyFailed=Falha ao habilitar/desabilitar as chaves specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Chaves-públicas-exportadas defaultPubSecKeyFilename=Chaves-públicas-e-secretas-exportadas noSecretKeys=Nenhuma chave secreta foi encontrada.\n\nDeseja gerar a sua chave agora? sendKeysOk=Chave(s) enviada(s) com sucesso sendKeysFailed=Envio de chaves falhou receiveKeysOk=Chave(s) atualizadas com sucesso receiveKeysFailed=Baixa de chaves falhou importFromClip=Você deseja importar chaves a partir do clipboard? copyToClipbrdFailed=Não foi possível copiar a(s) chave(s) selecionadas para o clipboard. copyToClipbrdOK=Chave(s) copiadas para o clipboard deleteSecretKey=AVISO: Você está prestes a remover uma chave secreta!\nSe você apagar a sua chave secreta, não será mais possível descriptografar nenhuma mensagem criptografada com esta chave,e não será mais possível revogá-la também.\n\nVocê realmente quer apagar AMBAS as chaves secreta e pública\n'%S'? deleteMix=AVISO: Você está prestes a remover chaves secretas!\nSe você apagar a sua chave secreta, não será mais possível descriptografar nenhuma mensagem criptografada com esta chave.\n\nVocê realmente quer apagar AMBAS as chaves secreta e pública selecionadas? deletePubKey=Você quer apagar a chave pública\n'%S'? deleteSelectedPubKey=Você quer apagar as chaves públicas? deleteKeyFailed=A chave não pode ser removida. revokeKeyOk=A chave foi revogada. Se a sua chave está disponível em um servidor de chaves, é recomendado que você reenvie-a para que outros usuários vejam a revogação. revokeKeyFailed=A chave não pode ser revogada. refreshAllQuestion=Você não selecionou uma chave. Você quer atualizar TODAS as chaves? refreshKey.warn=Aviso: dependendo do número de chaves e da velocidade da sua conexão, atualizar todas as chaves pode ser um processo bem demorado! downloadContactsKeys.warn=Aviso: dependendo do número de contatos e da velocidade de sua conexão, baixar todas as chaves pode ser um processo demorado! downloadContactsKeys.importFrom=Importar contatos do livro de endereços '%S'? keyMan.button.exportSecKey=&Exportar Chaves Secretas keyMan.button.exportPubKey=Exportar Apenas Chaves &Públicas keyMan.button.import=&Importar keyMan.button.refreshAll=Atualiza&r Todas as Chaves keyMan.button.revokeKey=&Revogar Chave keyMan.button.skip=&Pular Chave keylist.noOtherUids=Não possui outras identidades keylist.hasOtherUids=Também conhecido como keylist.noPhotos=Foto não disponível keylist.hasPhotos=Fotos keyMan.addphoto.filepicker.title=Selecionar foto para acrescentar keyMan.addphoto.warnLargeFile=O arquivo que você escolheu é maior que 25kb.\nNão é recomendado acrescentar arquivos de foto muito grandes, pois as chaves se tornarão igualmente grandes. keyMan.addphoto.noJpegFile=O arquivo selecionado não parece ser um arquivo JPEG. Escolha outro tipo de arquivo. keyMan.addphoto.failed=A foto não pode ser acrescentada. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Falha ao alterar o ID de usuário primário changePrimUidOK=O ID de usuário primário foi alterado com sucesso deleteUidFailed=Falha ao apagar o ID de usuário %S deleteUidOK=O ID de usuário %S foi apagado com sucesso revokeUidFailed=Falha ao revogar o ID de usuário %S revokeUidOK=O ID de usuário %S foi revogado com sucesso. Caso a sua chave esteja disponível em um servidor de chaves, é recomendável reenviá-la, para que outros possam ver que foi revogado. revokeUidQuestion=Você realmente deseja revogar o ID de usuário %S? deleteUidQuestion=Você realmente deseja apagar o ID de usuário %S?\n\nAtenção: se você enviou sua chave pública para um servidor de chaves, apagar o ID de usuário não irá alterar nada. Se desejar realmente invalidar o ID, utilize 'Revogar ID de usuário'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=chave pública keyTypePrimary=chave primária keyTypeSubkey=sub-chave keyTypePair=par de chaves keyExpiryNever=nunca keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Criptografar keyUsageSign=Assinar keyUsageCertify=Certificar keyUsageAuthentication=Autenticação # Strings in enigmailGenCardKey.xul keygen.started=Por favor aguarde enquanto a chave está sendo gerada .... keygen.completed=Chave Gerada. O novo ID da Chave é: 0x%S keygen.keyBackup=Uma cópia de segurança da chave foi salva como %S keygen.passRequired=Por favor especifique uma senha para criar uma cópia de segurança de sua chave fora de seu SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=O PIN que você forneceu está incorreto; por favor entre novamente cardPin.minLength=O PIN deve ter pelo menos %S caracteres ou números cardPin.processFailed=Falha ao trocar o PIN # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Atualizando chaves, por favor aguarde ... keyserverProgress.uploading=Enviando chaves, por favor aguarde ... keyserverTitle.refreshing=Atualizar Chaves keyserverTitle.uploading=Envio de Chaves # Strings in enigmailSetupWizard passphrase.min8keys=Sua senha deve conter pelo menos 8 caracteres! setupWizard.reallyCancel=Você realmente deseja cancelar o Assistente de Configuração do Enigmail? setupWizard.invalidGpg=O arquivo que você especificou não é um executável do GnuPG. Especifique um arquivo diferente. setupWizard.specifyFile=Você precisa escolher pelo menos um arquivo de chave pública para continuar. setupWizard.installFailed=Parece que a instalação não obteve êxito. Tente instalar novamente, ou instale o GnuPG manualmente e localize-o com o botão "Localizar". setupWizard.downloadForbidden=Para sua própria segurança, nós não iremos baixar o GnuPG. Visite http://www.gnupg.org para baixar o GnuPG. setupWizard.downloadImpossible=Não podemos baixar o GnuPG neste momento. Tente mais tarde em http://www.gnupg.org. setupWizard.hashSumError=O assistente não conseguiu verificar a integridade do arquivo baixado. O arquivo pode estar corrompido ou ter sido manipulado. Deseja continuar a instalação mesmo assim? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Um erro aconteceu ao tentar baixar o GnuPG. Verifique o log de erros para mais detalhes. installGnuPG.installFailed=Um erro ocorreu ao instalar o GnuPG. Verifique o log de erros para mais detalhes. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Você precisa preencher um nome e um endereço de email addUidDlg.nameMinLengthError=O nome precisa ter pelo menos 5 caracteres addUidDlg.invalidEmailError=Você deve especificar um endereço de email válido addUidDlg.commentError=Colchetes ou parênteses não são permitidos nos comentários # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP Smartcards suporta apenas caracteres ASCII em Nome/Sobrenome. # network error types errorType.SecurityCertificate=O certificado de segurança apresentado pelo web service não é mais válido. errorType.SecurityProtocol=O protocolo de segurança utilizado pelo web service é desconhecido. errorType.Network=Ocorreu um erro de rede. enigmail/lang/pt-BR/help/000077500000000000000000000000001266701624400154505ustar00rootroot00000000000000enigmail/lang/pt-BR/help/compose.html000066400000000000000000000113231266701624400200030ustar00rootroot00000000000000 Ajuda do Enigmail: Composição de Mensagem

Ajuda do Enigmail

Utilizando o Enigmail ao compor mensagens

  • Menu do Enigmail na janela de Composição de Mensagem
    • Assinar mensagem: Habilitar/Desabilitar o envio de mensagens assinadas. O usuário será notificado se a assinatura falhar.
    • Criptografar mensagem: Habilitar/Desabilitar criptografia para todos os destinatário(s) antes de enviar a mensagem. O usuário será notificado caso a criptografia falhe.

      Caso a opção Mostrar seleção quanto necessário estiver habilitada na aba Preferências -> Seleção de Chaves , uma lista de chaves será mostrada caso existam endereços na lista de destinatários da mensagem para os quais você não possua uma chave pública correspondente.

      Caso a opção Nunca mostrar diálogo de seleção de chaves OpenPGP estiver habilitada na aba Preferêencias -> Seleção de Chaves, e existam endereços na lista de destinatários para os quais você não possua a chave pública correspondente, a mensagem será enviada sem criptografia.

    • Utilizar PGP/MIME para esta mensagem: Habilitar/Desabilitar o uso de PGP/MIME para esta mensagem.

      Se você sabe que o(s) destinatário(s) consegue(m) ler mensagens utilizando o formato PGP/MIME format, você deve utilizar esta opção.

      Esta facilidade depende de ter a opção da aba Preferências -> PGP/MIME configurada para Permitir o uso de PGP/MIME ou Sempre usar PGP/MIME.

    • Opções padrão para composição: Submenu.
      • Opções de Assinatura/Criptografia...: atalho para Configurações de Conta -> Opções do OpenPGP.
      • Opções de Envio...: atalho para a aba Preferências -> Envio.
      • Opções de seleções de Chave...: atalho para a aba Preferências -> Seleção de Chaves.
      • Opções de PGP/MIME...: atalho para a aba Preferências -> PGP/MIME.
    • Desfazer criptografia: Casa haja uma falha ao enviar a mensagem, tal como um servidor POP não aceitar o pedido, o Enigmail não saberá sobre o ocorrido, e a mensagem criptografada continuará a ser mostrada na janela de Composição de Mensagem. Escolhendo este item de menu fará com que a criptografia/assinatura seja desfeita, revertendo a janela de Composição de Mensagem de volta ao seu texto original.
      Como uma solução temporária, esta opção também pode ser utilizada para descriptografar a o texto de citação da mensagem anterior (quote) quando estiver respondendo mensagens criptografadas. O Enigmail deve automaticamente descriptografar a citação, mas caso isto falhe por alguma razão, você pode utilizar este item do menu para forçá-lo.
    • Inserir chave pública: inserir o bloco ASCII com a chave pública na posição atual do cursor na janela de Composição. Você será perguntado sobre os endereços das chaves a serem inseridas. Chaves inseridas desta maneira serão reconhecidas pelo Enigmail do destinatário. Após a inserção da chave, você ainda pode escolher assinar/criptografar a mensagem como for necessário. Não insira mais de um bloco de chave por mensagem; apenas especifique múltiplos endereços de email, separados por vírgulas ou espaços, quando for solicitado.
    • Remover senha: Remove a senha armazenada. Útil quando você possui múltiplas senhas.
    • Ajuda: Mostra informaçóes de Ajuda (esta página).

Mais ajuda pode ser encontrada na página web de Ajuda do Enigmail

enigmail/lang/pt-BR/help/editRcptRule.html000066400000000000000000000145551266701624400207560ustar00rootroot00000000000000 Ajuda do Enigmail: Edição de Regra do OpenPGP

Ajuda do Enigmail

Usando o Editor de Regras do Enigmail: Editando uma Regra OpenPGP

No Editor de Regras, você pode especificar padrões por destinatário para permitir criptografia, assinatura e PGP/MIME, e definir quais chaves OpenPGP serão utilizadas. Neste diálogo, você poderá especificar as regras para um único destinatário, ou para um grupo de destinatários com características similares.

  • Definir Regras OpenPGP para: Contém os endereços de email dos destinatários (sem nomes, por exemplo: apenas um endereço como alguem@dominio). Você pode especificar diversos endereços, separados por espaços. O endereço especificado aqui pode consistir apenas da parte com o domínio, de forma que qualquer mensagem que faça parte deste domínio será processada, por exemplo @email.domain permitirá processar mensagens como usuario@email.domain, alguem@email.domain, qualquerumy@email.domain, etc.
  • Aplicar regra se o destinatário for ...: Esta opção modifica a maneira como os endereços são processados. Caso múltiplos endereços sejam colocados, esta configuração será aplicada a todos. Os exemplos abaixo são baseados no endereço usuario@email.domain mostrado no exemplo de Regras OpenPGP mostrado acima.
    • É exatamente: com esta configuração, esta regra será apenas utilizada em emails para usuario@email.domain (texto exato, sem levar em consideração maiúsculas ou minúsculas).
    • Contém: com esta configuração, qualquer endereço de email contendo a sub-palavra especificada é encontrada, por exemplo qualquerum@email.domain ou usuario@email.domain.net
    • Começa com: com esta configuração, qualquer endereço começando com esta palavra é processado, por exemplo usuario@email.domain.net, usuario@email.domain-name.com.
    • Termina com: com esta configuração, qualquer endereço terminando com esta palavra será processado, por exemplo qualquerum@email.domain, alguem@email.domain.
  • Continua com a próxima regra para o endereço selecionado
    Ligando esta funçã permitirá que se defina uma regra mas não seja necessário especificar um ID de Chave no campo Usar as seguintes chaves OpenPGP:, de formad que o endereço de email será utilizado para verificar por uma chave na hora do envio. Além disso, regras criadas para o mesmo endereço serão processadas també.
  • Não continuar verificando regras para o endereço selecionado
    Ligando esta função, o processamento de quaisquer outras regras será abortado para o(s) endereço(s) selecionado(s) caso esta regra seja utilizada, ou seja, o processamento de regras continua com o próximo destinatário.
  • Utilizar as seguintes chaves OpenPGP:
    Utilize o botão Selecionar Chave(s).. para selecionar as chaves de destinatário que serão utilizadas para criptografia. Como na ação descrita anteriormente, nenhuma regra adicional para o(s) endereço(s) selecionado(s) serão processadas.
  • Padrão para Assinatura: habilitar ou desabilitar assinatura de mensagens. Esta opção utiliza ou sobrepõe o que você especificou na janela de composição de mensagem. Os valores são:
    • Nunca: desabilitar assinatura, mesmo quando tiver sido habilitada na janela de composição de mensagem. (sobrepõe os outros valores)
    • Sim, se selecionado na Composição da Mensagem: deixe a assinatura como especificada na janela de composição de mensagem
    • Sempre: habilitar assinatura, mesmo se não foi habilitada na janela de composição de mensagem
Estas configurações de assinatura são aplicadas para todas as regras que coincidirem. Caso uma das regras desabilite assinatura, a mensagem não será assinada, mesmo que outras regras especifiquem Sempre assinar.
  • Criptografia: habilitar ou desabilitar criptografia de mensagem. As configurações permitidas e seu significado é o mesmo que para assinatura de mensagens.
  • PGP/MIME: habilitar ou desabilitar o uso de codificação de mensagem PGP/MIME (RFC 3156). Caso o PGP/MIME esteja desligado, as mensagens são codificadas utilizando o processo "PGP inline". Os valores permitidos e seus significados são os mesmos utilizados para assinatura de mensagens.

As regras são processadas na ordem mostrada na lista do Editor de Regras OpenPGP. Sempre que uma regras coincidir com um destinatário e conter um ID de Chave OpenPGP, além de utilizar o ID de Chave especificado, o destinatário não é mais considerado ao se processar as regras seguintes.


Mais ajuda pode ser encontrada na página web de Ajuda do Enigmail para Configuraçáo por Destinatário

enigmail/lang/pt-BR/help/initError.html000066400000000000000000000054461266701624400203240ustar00rootroot00000000000000 Ajuda do Enigmail: Como Resolver Problemas com a Inicialização do OpenPGP

Ajuda do Enigmail

Como Resolver Problemas Com a Inicialização do OpenPGP

Existem diversas razões pelas quais a inicialização do OpenPGP pode falhar. As mais comuns estão descritas abaixo; Para mais informações visite a página de suporte do Enigmail.

GnuPG não pode ser encontrado

Para que o OpenPGP funcione, a ferramenta GnuPG precisa estar instalada. Caso o GnuPG não seja encontrado, verifique primeiramente se o arquivo executável gpg.exe (no Windows; gpg nas outras plataformas) está instalado em seu computador. Caso o GnuPG esteja instalado, e o OpenPGP não consiga encontrá-lo, você precisará informar manualmente o caminho para ele nas Preferências do OpenPGP Preferences (menu OpenPGP > Preferências)

Falha ao inicializar o Enigmime

O OpenPGP funciona apenas se tiver sido compilado utilizando-se o mesmo ambiente utilizado para construir o Thunderbird ou SeaMonkey. Isto significa que você apenas pode utilizar uma versão oficial do Enigmail se utilizar também uma versão oficial do Thunderbird ou SeaMonkey fornecida pela mozilla.org.

Caso você utilize uma versão do Thunderbird ou SeaMonkey de outro fornecedor (por exemplo, do distribuidor de sua distribuição Linux), ou se você mesmo compilou a aplicação, você deve utilizar uma versão construída pelo mesmo fornecedor, ou compilar uma versão do Enigmail. Para compilar o Enigmail, siga as instruções na seção Código Fonte na página do Enigmail. Por favor não abra relatórios de erro sobre este problema, ele não pode ser resolvido de outra maneira.

Mais ajuda está disponível na Página de Suporte do Enigmail.

enigmail/lang/pt-BR/help/messenger.html000066400000000000000000000116551266701624400203360ustar00rootroot00000000000000 Ajuda do Enigmail: Leitura de Mensagens

Ajuda do Enigmail

Utilizando o Enigmail durante a leitura de mensagens

  • Botão Descriptografar na janela principal de mensagens
    Este botão pode ser utilizado para diversas funções: descriptografar, verificar ou importar chaves públicas. Normalmente a criptografia/verificação ocorre automaticamente, embora isto possa ser desabilitado através de uma opção. No entanto, se isto falhar, geralmente uma pequena mensagem de erro irá aparecer na barra de status do Enigmail. Se você clicar no no botão Descriptografar, você poderá ver uma mensagem de erro mais detalhada, incluindo a saída do comando GnuPG.
  • Ícones de Caneta e Chave no Cabeçalho da Mensagem
    Os ícones de Caneta e Chave no cabeçalho da mensagem indicam s a mensagem que você está lendo foi assinada e/ou criptografada e se a assinatura é válida, ou seja, se a mensagem não foi alterada desde que foi assinada. Caso a mensagem tenha sido alterada, o ícone da Caneta irá mudar para um ícone de Caneta Quebrada para indicar que a assinatura não é válida. Clicando com o botão direito em qualquer um dos ícones de Caneta ou Chave trará um menu com as seguintes opçóes:
    • Informações de Segurança do OpenPGP: permite que você veja a saída do GnuPG para esta mensagem.
    • Copiar Informações de Segurança do OpenPGP: copia a saída do GnuPG para a área de transferência; para colar em uma mensagem, por exemplo.
    • Ver ID com Foto do OpenPGP: permite que você visualize o ID com Foto da pessoa que enviou a mensagem, caso possua uma foto contida em sua Chave Pública. (Esta opção apenas será habilitada caso um ID com Foto exista na chave da pessoa.)
    • Informações de Segurança S/MIME: permite que você visualize as Informações de Segurança S/MIME para a mensagem.

    Se você não tiver a opção de buscar chaves automaticamente no servidor de chaves definida em seu gpg.conf e ler uma mensagem que está assinada ou criptografada, você verá um ícone de uma Caneta no cabeçalho da mensagem juntamente com um Ponto de Interrogação nele, e a barra de status na área do cabeçalho do Enigmail dirá Parte da mensagem foi assinada; clique no ícone da caneta para detalhes e a mensagem mostrará todos os indicadores de blocos de mensagem do OpenPGP e o bloco de assinatura.

    Você também pode ver este ícone caso tenha a opção de buscar chaves automaticamente no servidor de chaves definida em seu gpg.conf e a chave OpenPGP não esteja disponível no servidor de chaves padrão.

    Clicando no ícone de Caneta com Ponto de Interrogação irá trazer uma janela informando que a chave não está disponível em seu chaveiro. Clicando em OK irá trazer uma outra janela com uma relação de servidores de chaves a partir dos quais você poderá selecionar de onde deseja baixar a chave pública do remetente.

    Para configurar a lista de servidores de chaves que você deseja utilizar, vá até a aba Enigmail -> Preferências -> Báasicas e entre com os endereços dos servidores de chaves na caixa Servidor(es) de Chaves: separados por uma vírgulas. O primeiro servidor de chaves na lista será utilizado como padrão.

  • Abrindo anexos criptografados / importando chaves OpenPGP anexadas
    Anexos terminando em *.pgp, *.asc e *.gpg são reconhecidos como anexos que podem ser tratados de forma especial pelo Enigmail. Clicando com o botão direito em um destes anexos habilita dois itens especiais no menu de contexto: Descriptografar e Abrir e Descriptografar e Salvar. Utilize estes dois itens se você quer que o Enigmail descriptografe um anexo antes de abrí-lo ou salvá-lo. Caso um anexo seja reconhecido com um arquivo de chave OpenPGP, será oferecida a oportunidade de importar as chaves em seu chaveiro.

Mais ajuda pode ser encontrada na página web de Ajuda do Enigmail

enigmail/lang/pt-BR/help/rulesEditor.html000066400000000000000000000070661266701624400206500ustar00rootroot00000000000000 Ajuda do Enigmail: Editor de Regras

Ajuda do Enigmail

Utilizando o Editor de Regras do Enigmail

No Editor de Regras, você pode especificar os padrões para cada destinatário para permitir criptografia, assinatura e PGP/MIME, e para definir quais chaves OpenPGP serão utilizadas. Cada regra consiste em 5 campos e é representada em uma única linha:

  • Email: o endereço de email que serão pesquisados nos campos De:, Cc: e Bcc:. A pesquisa funciona em sub-palavras (Maiores detalhes podem ser encontrados no diálogo do Editor de Regras)
  • Chave(s) OpenPGP: uma lista de Id's de Chaves OpenPGP Key ID's para utilizar para este destinatário
  • Assinar: habilitar ou desabilitar a assinatura da mensagem. Esta opção utiliza ou sobrepõe o que você especificou na janela de composição de mensagem. Os valores são:
    • Nunca: desabilita a assinatura, mesmo se estiver habilitada na janela de composição de mensagem (sobrepõe os outros valores)
    • Possível: deixa a opção de assinatura como especificada na janela de composição de mensagem
    • Sempre: habilita assinatura, mesmo se não estiver habilitada na janela de composição de mensagem
Estas opções de assinatura se aplicam para todas as regras que forem selecionadas. Caso uma destas regras desabilite a assinatura, a mensagem não será assinada, não importando o que outras regras especificarem Sempre.
  • Criptografar: habilita ou desabilita criptografia de mensagem. As opções permitidas e seus significados são os mesmos definidos para assinatura de mensagem.
  • PGP/MIME: habilita ou desabilita o uso de codificação PGP/MIME (RFC 3156). Caso a opção PGP/MIME esteja desabilitada, as mensagens são codificadas utilizando o "PGP inline". Os valores permitidos e seus significados são os mesmos da assinatura de mensagem.

As regras são processadas na ordem em que são mostradas na lista. Sempre que uma coincide com um destinatário e contém um ID de Chave OpenPGP, além de utilizar o ID de Chave especificado, o destinatário não é mais considerado ao se processar as regras seguintes.

Nota: O editor de regras ainda não está completo. É possível escrever regras muito mais avançadas editando o arquivo de regras diretamente (neste caso, as regras não deverão ser mais editadas no editor de regras). Maiores informações sobre como editar o arquivo diretamente estão disponíveis na página do Enigmail


Mais ajuda pode ser encontrada na página de Ajuda do Enigmail na web

enigmail/lang/pt-BR/help/sendingPrefs.html000066400000000000000000000047771266701624400210040ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/pt-PT/000077500000000000000000000000001266701624400145405ustar00rootroot00000000000000enigmail/lang/pt-PT/am-enigprefs.properties000066400000000000000000000001231266701624400212270ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Segurança OpenPGP enigmail/lang/pt-PT/enigmail.dtd000066400000000000000000001426131266701624400170310ustar00rootroot00000000000000 NOTA: A operação de criar chave pode demorar vários minutos a completar. Não feche a aplicação enquanto a operação estiver em progresso. Navegar ativamente ou levar a cabo operações de uso intensivo do disco irão repor o nível do repositório de aleatoriedade e acelerar o processo. Será avisado quando a chave estiver criada."> ' é inválido"> NOTA: Criar a chave pode demorar vários minutos. Não feche a aplicação enquanto a operação não terminar. Será alertado quando a chave estiver criada."> Nota:O Enigmail verificará sempre as assinaturas das mensagens para cada conta ou identidade, independentemente de estar ou não ativado."> chave pública serve para que outras pessoas lhe enviem mensagens cifradas. Pode distribuí-la a todos."> chave pública serve para que você decifre essas mensagens e assine as suas mensagens. Não a deve dar a ninguém."> chave pública serve para que você decifre essas mensagens e assine as suas mensagens. Não a deve dar a ninguém. Para proteger a sua chave privada, ser-lhe-á pedida uma frase de acesso nos próximos dois diálogos."> frase de acesso é uma senha para proteger a sua chave privada. Evita uma utilização errada da sua chave privada."> não são recomendados."> Ser-lhe-á pedida a sua senha para esta operação."> exportar os seus dados do seu computador antigo usando o assistente de cópia de segurança nas Preferências do Enigmail importar os dados para o seu novo computador usando este assistente. "> Obrigado por usar o Enigmail."> exportar os seus dados do seu computador antigo usando este assistente importar os dados para o seu novo computador usando o Assistente de Configuração. "> enigmail/lang/pt-PT/enigmail.properties000066400000000000000000001151071266701624400204500ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail: Aviso enigConfirm=Enigmail: Confirmação enigError=Enigmail: Erro enigPrompt=Enigmail: Comando dlgYes=&Sim dlgNo=&Não dlgKeepSetting=Lembrar a resposta e não perguntar novamente dlgNoPrompt=Não mostrar este diálogo novamente dlg.button.delete=&Apagar dlg.button.cancel=&Cancelar dlg.button.close=&Fechar dlg.button.continue=Con&tinuar dlg.button.skip=&Saltar dlg.button.overwrite=S&obrepor dlg.button.view=&Ver dlg.button.retry=&Repetir dlg.button.ignore=&Ignorar repeatPrefix=\n\nEste aviso irá repetir-se mais %S repeatSuffixSingular=vez. repeatSuffixPlural=vezes. noRepeat=\n\nEste aviso não se repetirá até à atualização do Enigmail. pgpNotSupported=Parece que está a usar o Enigmail em conjunto com o PGP 6.x\n\nInfelizmente, o PGP 6.x tem uma série de problemas que impedem o correto funcionamento do Enigmail. Assim, o Enigmail já não suporta o PGP 6.x; por favor, passe a usar antes o GnuPG (GPG).\n\nSe necessita de ajuda na mudança para o GnuPG, consulte a secção de ajuda no site do Enigmail. initErr.howToFixIt=Para usar o Enigmail, é necessário o GnuPG. Se ainda não o instalou, a forma mais fácil será usando o botão "Assistente de Configuração". initErr.setupWizard.button=&Assistente de Configuração passphraseCleared=A senha foi limpa. cannotClearPassphrase=Está a usar uma ferramenta não convencional (como gnome-keyring) para manipular frases de acesso. Por esse motivo, não é possível apagar a frase de acesso a partir do Enigmail. noPhotoAvailable=Foto não disponível debugLog.title=Registo de Depuração do Enigmail error.photoPathNotReadable=Não foi possível aceder ao caminho '%S' para a fotografia # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Esta nova versão do Enigmail tem alterações significativas no tratamento das preferências e opções. Tentámos transferir as opções antigas para esta versão. Contudo, não foi possível cobrir todos os casos automaticamente. Por favor, verifique com cuidado as novas preferências e opções. enigmailCommon.checkPreferences=Verificar Preferências ... preferences.defaultToPgpMime=A codificação de mensagem por omissão no Enigmail foi alterada de Inline-PGP para PGP/MIME. Recomenda-se que mantenha esta configuração como omissão.\n\nSe mesmo assim deseja usar Inline-PGP por omissão, pode fazê-lo nas Definições da conta em Seguntaça OpenPGP. usingVersion=Executando a versão %S do Enigmail usingAgent=Usando o programa %1$S com o executável %2$S para cifrar e decifrar agentError=ERRO: Foi impossível aceder ao serviço Enigmime! accessError=Erro ao aceder ao serviço Enigmime onlyGPG=Só pode criar chaves com o GnuPG (não com o PGP)! keygenComplete=Nova chave criada!\nA identidade <%S> será usada para assinar. revokeCertRecommended=Recomendamos vivamente a criação de um certificado de revogação para a sua chave. Este certificado pode ser usado para invalidar a sua chave, por exemplo, na eventualidade da perder a sua chave privada ou de esta ter sido comprometida. Deseja criar um certificado de revogação agora? keyMan.button.generateCert=&Criar Certificado genCompleteNoSign=Nova chave criada! genGoing=Já está a criar uma nova chave! passNoMatch=As senhas não coincidem; por favor, introduza-as de novo passCheckBox=Seleccionar se não desejar definir uma senha para esta chave passUserName=Por favor indique o nome de utilizador para esta identidade keygen.missingUserName=Não foi indicado nenhum nome para a conta/identidade selecionada. Por favor introduza um valor no campo "O seu Nome" nas definições de conta. keygen.passCharProblem=Está a usar caracteres especiais na sua frase senha. Infelizmente, isso pode causar problemas para outras aplicações. Recomenda-se que escolha uma frase senha contendo apenas estes caracteres:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Devido a problemas técnicos, a sua senha não pode começar ou acabar com um espaço. changePassFailed=A alteração da senha falhou. keyConfirm=Criar chave pública e privada para '%S'? keyMan.button.generateKey=&Criar Chave keyAbort=Abortar criação da nova chave? keyMan.button.generateKeyAbort=&Abortar Criação de Chave keyMan.button.generateKeyContinue=&Continuar a Criar a Chave expiryTooLong=Não pode criar uma chave com o prazo de expiração superior a 100 anos. expiryTooLongShorter=Não pode criar uma chave que expire em mais de 90 anos. expiryTooShort=A chave tem de ser válida por um mínimo de um dia. dsaSizeLimit=As chaves de assinatura DSA estão limitadas a 3072 bits. O tamanho da chave será reduzido em conformidade. keyGenFailed=Não foi possível criar a chave. Por favor, verifique a consola do Enigmail (Menu Enigmail > Depuração) para mais detalhes. setKeyExpirationDateFailed=A data de expiração não pôde ser alterada # Strings in enigmailMessengerOverlay.js securityInfo=Informação de Segurança Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Os anexos a esta mensagem não foram assinados nem cifrados*\n\n possiblyPgpMime=Mensagem possivelmente assinada ou cifrada com PGP/MIME. Clique Decifrar para verificar. noDecrypted=Não existe mensagem decifrada para guardar!\nUse o comando Guardar do menu Ficheiro noMessage=Não existe mensagem para guardar! useButton=Por favor, use o botão Decifrar para decifrar a mensagem saveHeader=Enigmail: Guardar mensagem decifrada saveAttachmentHeader=Enigmail: Guardar anexo decifrado noTempDir=Não foi possível encontrar uma diretoria temporária na qual escrever\nPor favor, configure a variável de ambiente TEMP attachmentPgpKey=O anexo '%S' que está a abrir aparenta ser uma chave OpenPGP.\n\nClique 'Importar' para importar as chaves lá contidas ou 'Ver' para ver o conteúdo do ficheiro numa janela do navegador web beginPgpPart=********* *INÃCIO de PARTE ASSINADA ou CIFRADA* ********* endPgpPart=********** *FIM de PARTE ASSINADA ou CIFRADA* ********** notePartEncrypted=Enigmail: *Partes da mensagem NÃO foram assinadas ou cifradas* noteCutMessage=Enigmail: *Encontrados múltiplos blocos de mensagem -- verificação/decifração abortada* decryptOkNoSig=Aviso\n\nA mensagem foi corretamente decifrada mas não foi possível verificar a assinatura msgOvl.button.contAnyway=&Continuar Mesmo Assim signature.verifiedOK=A assinatura do anexo %S foi verificada com sucesso signature.verifyFailed=A assinatura do anexo %S não pôde ser verificada attachment.noMatchToSignature=Não foi possível fazer corresponder o anexo %S a uma assinatura attachment.noMatchFromSignature=Não foi possível fazer corresponder a assinatura %S a um anexo fixBrokenExchangeMsg.failed=Não foi possível reparar a mensagem. keysToExport=Seleccione as chaves OpenPGP a Inserir keysToUse=Seleccione a(s) chave(s) OpenPGP a usar para %S pubKey=Chave pública para %S\n windowLocked=A janela de composição está bloqueada; envio cancelado sendUnencrypted=A inicialização do Enigmail falhou.\nEnviar a mensagem em claro? composeSpecifyEmail=Por favor, indique o seu endereço de correio principal, que será usado para escolher a chave para assinar as mensagens a enviar.\nSe o deixar em branco, será usado o endereço no campo FROM (De) para escolher a chave a usar. sendingHiddenRcpt=Esta mensagem tem destinatários BCC (Cópia oculta). Se esta mensagem for cifrada é possível esconder os destinatários BCC, mas os utilizadores de alguns produtos (ex: PGP Corp.) não serão capazes de decifrar a mensagem. Assim, recomendamos evitar enviar mensagens cifradas com destinatários BCC. sendWithHiddenBcc=Esconder destinatários BCC sendWithShownBcc=Cifrar normalmente sendingNews=Operação de envio interrompida.\n\nEsta mensagem não pode ser cifrada uma vez que tem grupos de discussão como destinatários. Por favor, envie a mensagem sem a cifrar. sendToNewsWarning=Aviso: está prestes a enviar uma mensagem cifrada para um grupo de discussão.\n\nNão o recomendamos porque apenas faria sentido se todos os membros do grupo pudessem decifrar a mensagem, ou seja, a mensagem teria de ser cifrada com a chave de todos os participantes no grupo. Por favor, envie esta mensagem apenas se souber exatamente o que está a fazer.\n\nContinuar? hasHTML=Aviso de correio HTML:\nEsta mensagem parece conter HTML, o que poderá causar a falha da operação de assinar/cifrar. Para evitar esta situação no futuro, deve pressionar a tecla SHIFT ao fazer clique no botão Compor/Responder para enviar correio assinado.\nSe envia correio assinado por omissão, deve desseleccionar a opção 'Compor mensagens em HTML' para desativar permanentemente o envio de correio HTML nesta conta. strippingHTML=A mensagem contém formatação HTML que será perdida ao ser convertida para texto simples para assinar/cifrar. Deseja continuar? msgCompose.button.sendAnyway=&Enviar Mensagem Mesmo Assim attachWarning=Os anexos a esta mensagem não são locais, pelo que não podem ser cifrados. Para cifrar os anexos, guarde-os como ficheiros locais, anexando depois estes ficheiros. Deseja enviar a mensagem mesmo assim? quotedPrintableWarn=Escolheu a codificação 'quoted-printable' para enviar mensagens. Isto pode ter como resultado uma incorreta decifração ou verificação da sua mensagem.\nDeseja desseleccionar o envio de mensagens 'quoted-printable'? minimalLineWrapping=Configurou a quebra automática de linha para %S caracteres. Para cifrar ou assinar corretamente, este valor deve ser pelo menos 68.\nDeseja alterar a quebra automática de linha para 68 caracteres? warning=Aviso signIconClicked=Alterou manualmente a assinatura. Desta forma, ao compor esta mensagem, (des)ativar a assinatura já não depende de (des)ativar a cifra. pgpMime_sMime.dlg.text=Ativou PGP/MIME e S/MIME em conjunto. Infelizmente não é possível usar os dois protocolos em simultâneo. Por favor seleccione se deseja usar PGP/MIME ou S/MIME. pgpMime_sMime.dlg.pgpMime.button=Usar &PGP/MIME pgpMime_sMime.dlg.sMime.button=Usar &S/MIME errorKeyUnusable=Não foi possível fazer corresponder o endereço de correio ou identificador de chave '%S' a uma chave OpenPGP válida e não expirada.\nAssegure-se por favor de que possui uma chave OpenPGP válida e que as configurações da sua conta apontam para ela. errorOwnKeyUnusable=A chave com ID '%S' configurada para a identidade atual não contém uma chaves OpenPGP utilizável.\n\nPor favor assegure-se que tem uma chave OpenPGP válida e dentro do prazo de expiração.\nSe a sua chaves ainda não expirou, verifique se definiu a confiança no utilizador para total ou máxima. msgCompose.cannotSaveDraft=Erro a guardar rascunho msgCompose.internalEncryptionError=Erro Interno: encriptação prometida desativada msgCompose.internalError=Ocorreu um erro interno. msgCompose.toolbarTxt.signAndEncrypt=A mensagem será assinada e cifrada msgCompose.toolbarTxt.signOnly=A mensagem será assinada msgCompose.toolbarTxt.encryptOnly=A mensagem será cifrada msgCompose.toolbarTxt.noEncryption=A mensagem não será assinada nem cifrada msgCompose.toolbarTxt.disabled=O Enigmail está desativado para a identidade seleccionada msgCompose.toolbarTxt.smime=O S/MIME está ativo - poderá causar conflitos com o Enigmail msgCompose.toolbarTxt.smimeOff=- Por conseguinte, S/MIME não é utilizado msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME está ativo - o Enigmail é, por conseguinte, não usado msgCompose.toolbarTxt.smimeNoDraftEncryption=- os rascunhos não serão cifrados msgCompose.toolbarTxt.smimeConflict=O Enigmail não é usado porque está ativo S/MIME. Por favor, desative a assinatura e/ou encriptação S/MIME e, de seguida, ative a encriptação Enigmail msgCompose.encryptedSubjectStub=Mensagem Cifrada msgCompose.detailsButton.label=Detalhes ... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Operação de envio interrompida.\n\n # details: keyNotTrusted=A chave '%S' não é suficientemente confiável keyNotFound=A chave '%S' não foi encontrada keyRevoked=A chave '%S' está revogada keyExpired=A chave '%S' está expirada statPGPMIME=PGP/MIME statSigned=ASSINADA statEncrypted=CIFRADA statPlain=NÃO ASSINADA e NÃO CIFRADA offlineSave=Guardar a mensagem %1$S para %2$S na pasta Mensagens Não Enviadas? onlineSend=Enviar mensagem %1$S para %2$S? encryptKeysNote=Nota: a mensagem está cifrada com os seguintes Identificadores / Chaves de Utilizador: %S hiddenKey= signFailed=Erro no Enigmail; Não foi possível assinar/cifrar; enviar mensagem não cifrada? msgCompose.button.sendUnencrypted=&Enviar Mensagem Não Cifrada recipientsSelectionHdr=Escolha os Destinatários para os quais Cifrar configureNow=Ainda não configurou a segurança Enigmail para a identidade seleccionada. Deseja fazê-lo agora? # encryption/signing status and associated reasons: encryptMessageAuto=Cifrar Mensagem (auto) encryptMessageNorm=Cifrar Mensagem signMessageAuto=Assinar Mensagem (auto) signMessageNorm=Assinar Mensagem encryptOff=Cifrar: Desligado encryptOnWithReason=Cifrar: Ligado (%S) encryptOffWithReason=Cifrar: Desligado (%S) encryptOn=Cifrar: Ligado signOn=Assinar: Ligado signOff=Assinar: Desligado signOnWithReason=Assinar: Ligado (%S) signOffWithReason=Assinar: Desligado (%S) reasonEnabledByDefault=ativado por omissão reasonManuallyForced=forçado manualmente reasonByRecipientRules=forçado pelas regras por destinatário reasonByAutoEncryption=forçado por modo de cifra automática reasonByConflict=devido a conflito nas regras por destinatário reasonByEncryptionMode=devido ao modo de cifra reasonSmimeConflict=porque S/MIME está ativo, no seu lugar # should not be used anymore: encryptYes=A mensagem será cifrada encryptNo=A mensagem não será cifrada # should not be used anymore: signYes=A mensagem será assinada signNo=A mensagem não será assinada # PGP/MIME status: pgpmimeNormal=Protocolo: PGP/MIME inlinePGPNormal=Protocolo: Inline PGP pgpmimeAuto=Protocolo: PGP/MIME (auto) inlinePGPAuto=Protocolo: Inline PGP (auto) # should not be used anymore pgpmimeYes=Será usado PGP/MIME pgpmimeNo=Será usado PGP embebido # Attach own key status (tooltip strings): attachOwnKeyNo=A sua chave não será anexada attachOwnKeyYes=A sua chave será anexada attachOwnKeyDisabled=A sua chave não pode ser anexada. Deve selecionar uma chave específica\nna secção OpenPGP nas Definições da conta para ativar esta funcionalidade. rulesConflict=Detetado conflito em regras por destinatário\n%S\n\nEnviar mensagem com esta configuração? msgCompose.button.configure=&Configurar msgCompose.button.send=&Enviar Mensagem msgCompose.button.save=&Guardar Mensagem # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=É necessária a chave pública %S para verificar a assinatura keyUsed=Chave pública %S usada para verificar a assinatura clickDecrypt=; clique no botão Decifrar clickDecryptRetry=; clique no botão Decifrar para tentar novamente clickDetailsButton=; premir o botão 'Detalhes' para mais informação clickImportButton=; premir o botão 'Importar Chave' para transferir a chave keyTypeUnsupported=; o tipo de chave não é suportado pela sua versão do GnuPG msgPart=Parte da mensagem %S msgSigned=assinada msgSignedUnkownKey=assinado com chave desconhecida msgEncrypted=cifrada msgSignedAndEnc=assinada e cifrada unverifiedSig=Assinatura não verificada incompleteDecrypt=Decifração incompleta needKey=Erro - é necessária a chave privada para decifrar a mensagem failedDecrypt=Erro - foi impossível decifrar badPhrase=Erro - senha incorreta failedDecryptVerify=Erro - foi impossível decifrar/verificar viewInfo=; Escolha Ver > Informação de segurança da mensagem para mais informação decryptedMsg=Mensagem decifrada decryptedMsgWithFormatError=Mensagem decifrada (restaurado o formato PGP defeituoso provavelmente causado por um servidor Exchange antigo, podendo resultar numa mensagem de difícil leitura usedAlgorithms=Algoritmos utilizados: %S e %S # strings in pref-enigmail.js oldGpgVersion14=A inicialização do Enigmail falhou.\n\nEstá a usar a versão %S do GnuPG, que já não é suportada. O Enigmail requer a versão 2.0.7 ou mais recente do GnuPG. Por favor, atualize a sua versão do GnuPG ou o Enigmail não funcionará. locateGpg=Localizar o executável GnuPG invalidGpgPath=O GnuPG não pôde ser executado a partir da localização fornecida. Assim, o Enigmail está desativo até o alterar novamente ou até reiniciar a aplicação. warningsAreReset=Todos os avisos foram removidos. prefs.gpgFound=GnuPG encontrado em %S prefs.gpgNotFound=Não foi possível encontrar o GnuPG prefs.warnAskNever=Aviso: ativar esta opção terá como resultado mensagens não cifradas serem enviadas sem qualquer aviso sempre que não for encontrada qualquer chave para um dos destinatários -- O OpenPG não o informará se isto acontecer! prefs.warnIdleTimeForUnknownAgent=O seu sistema possui uma ferramenta especial para gestão de senhas, como o gnome-keyring ou seahorse-agent. Infelizmente, o Enigmail não pode controlar o tempo de expiração da chave com a ferramenta que está a usar. Por esse motivo a configuração do tempo de expiração respetiva será ignorada. prefEnigmail.oneKeyserverOnly=Erro - Apenas pode indicar um servidor de chaves para importação automática de chaves OpenPGP. enterAdminPin=Por favor, introduza o PIN de ADMINISTRAÇÃO do seu SmartCard enterCardPin=Por favor, introduza o PIN do seu SmartCard notInit=Erro - O serviço Enigmail ainda não está inicializado badCommand=Erro - foi impossível cifrar cmdLine=linha de comando e saída: notRequired=Erro - cifra não requerida notComplete=Erro - nova chave ainda não criada invalidEmail=Erro - endereço(s) de correio inválido(s) noPassphrase=Erro - senha não introduzida noPGPblock=Erro - Não foi encontrado um bloco OpenPGP válido unverifiedReply=A parte indentada da mensagem (resposta) foi provavelmente modificada keyInMessageBody=Chave no corpo da mensagem encontrada. Clique 'Importar Chave' para importar a chave sigMismatch=Erro - Assinatura não coincidente cantImport=Erro ao importar chave pública\n\n doImportOne=Importar %1$S (%2$S)? doImportMultiple=Importar as seguintes chaves?\n\n%S previewFailed=Não foi possível ler o ficheiro de chave pública. # Strings used in errorHandling.jsm sc.wrongCardAvailable=O SmartCard %S encontrado no seu leitor não pôde ser usado para processar a mensagem.\nPor favor, insira o seu SmartCard %S e repita a operação. sc.insertCard=A operação requer o seu SmartCard %S.\nPor favor insira o SmartCard requerido e repita a operação. sc.removeCard=A operação não necessita de qualquer SmartCard inserido no leitor.\nPor favor remova o SmartCard e repita a operação. sc.noCardAvailable=Não foi encontrado qualquer SmartCard no seu leitor\nPor favor, insira o SmartCard e repita a operação. sc.noReaderAvailable=Não foi possível aceder ao seu leitor de SmartCards\nPor favor, ligue o seu leitor de SmartCards, insira o seu cartão e repita a operação. keyError.keySpecNotFound=O endereço de email "%S" não corresponde a nenhuma chave no seu porta-chaves. keyError.keyIdNotFound=O ID da chave configurado "%S" não foi encontrado no seu porta-chaves. keyError.resolutionAction=Por favor selecione uma chave válida na secção OpenPGP nas Definições da conta." missingPassphrase=Introduza uma frase de acesso errorHandling.gpgAgentInvalid=O seu systema está a executar uma versão do gpg-agent que não é adequada para a sua versão GnuPG. errorHandling.gpgAgentError=GnuPG reportou um erro na comunicação com gpg-agent (uma componente do GnuPG). errorHandling.dirmngrError=GnuPG reportou um erro na comunicação com dirmngr (um componente do GnuPG). errorHandling.pinentryError=GnuPG não consegue consultar a sua frase de acesso via pinentry. errorHandling.readFaq=Isto é um erro provocado por configurações ou definições de sistema que impete o Enigmail de funcionar corretamente e não pode ser resolvido automaticamente.\n\nRecomenda-se veemente que consulte o nosso sítio web de suporte em https://enigmail.net/faq. gpgNotFound=Foi impossível encontrar o GnuPG em '%S'.\nCertifique-se de que configurou corretamente a localização do executável GnuPG nas Preferências do Enigmail. gpgNotInPath=Foi impossível encontrar o executável GnuPG no PATH.\nCertifique-se de que configurou corretamente a localização do executável GnuPG nas Preferências do Enigmail. enigmailNotAvailable=Serviço básico do Enigmail indisponível gpgAgentNotStarted=Não foi possível iniciar o gpg-agent que é necessário para a sua versão %S do GnuPG. prefUntrusted=NÃO É DE CONFIANÇA prefRevoked=CHAVE REVOGADA prefExpiredKey=CHAVE EXPIRADA prefExpired=EXPIRADA prefGood=Assinatura válida de %S prefBad=Assinatura INVÃLIDA de %S failCancel=Erro - Importação de chave cancelada pelo utilizador failNoServer=Erro - Nenhum servidor configurado do qual importar a chave failNoID=Erro - Não foi indicado o Identificador da chave a importar failKeyExtract=Erro - O comando de extração de chave falhou notFirstBlock=Erro - O primeiro bloco OpenPGP não contém uma chave pública importKeyConfirm=Importar chave(s) pública(s) contidas na mensagem? failKeyImport=Erro - a importação de chave falhou fileWriteFailed=Erro ao escrever no ficheiro %S importKey=Importar a chave pública %S do servidor: uploadKey=Exportar chave %S para o servidor: keyId=Identificador da chave keyAndSigDate=Identificador da chave: 0x%1$S / Assinada em: %2$S keyFpr=Impressão digital da chave: %S noEmailProvided=Não introduziu um endereço de correio eletrónico! keyAlreadySigned=A chave já está assinada, não pode assiná-la novamente. gnupg.invalidKey.desc=A chave %S não foi encontrada ou não é válida. A (sub-)chave pode ter expirado. selKeyExpired=expirada em %S createdHeader=Criada atLeastOneKey=Nenhuma chave seleccionada! Deve seleccionar pelo menos uma chave para fechar este diálogo fewerKeysThanRecipients=Seleccionou menos chaves que destinatários. Tem a certeza que a lista de chaves para cifrar está completa? userSel.button.goBack=Seleccionar Mais Chaves userSel.secretKeySel.title=Seleccionar uma Chave OpenPGP Privada para Assinar as Suas Mensagens userSel.problemNoKey=Não foi encontrada uma chave válida userSel.problemMultipleKeys=Múltiplas chaves # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Enviar mais tarde # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOTA: PGP/MIME é suportado apenas por um número limitado de clientes de correio eletrónico! Em Windows, apenas se tem conhecimento de suporte para esta norma por parte de Mozilla/Thunderbird, Sylpheed, Pegasus e Mulberry; em Linux/UNIX e Mac OS X é suportado pela maioria dos clientes. Se não tem a certeza, seleccione a %S opção. first=primeira second=segunda # Strings used in am-enigprefs.js encryptKeyHeader=Seleccione a chave OpenPGP para Cifrar identityName=Identidade: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Ativou a cifra mas não selecionou uma chave. Para cifrar o correio enviado para %1$S, necessita de escolher uma ou várias chaves válidas da sua lista de chaves. Deseja desativar a cifra para %2$S? noKeyToUse=(nenhuma - em claro) noEmptyRule=A Regra não pode ficar em branco! Por favor, introduza um endereço de correio no campo Regra. invalidAddress=O(s) endereço(s) de correio que introduziu não são válidos. Não deve introduzir o nome dos destinatários, apenas os seus endereços. Ex:\nInválido: Nome Qualquer \nVálido: nome.qualquer@endereco.net noCurlyBrackets=As chavetas {} têm um significado especial e não devem ser usadas em endereços de correio. Se deseja modificar o comportamento desta regra, use a opção 'Aplicar regra se destinatário ...'.\nPode obter mais informação através do botão Ajuda. # Strings used in enigmailRulesEditor.js never=Nunca always=Sempre possible=Possível deleteRule=Deseja mesmo remover a regra seleccionada? nextRcpt=(Próximo destinatário) negateRule=Não addKeyToRule=Adicionar a chave %1$S (%2$S) à regra por destinatário # Strings used in enigmailSearchKey.js needOnline=A função que seleccionou não está disponível quando desligado da Internet. Por favor, ligue-se à rede e tente novamente. protocolNotSupported=O protocolo '%S://' que seleccionou não é suportado para importar chaves OpenPGP. gpgkeysDisabled=Ativar a opção 'extensions.enigmail.useGpgKeysTool' pode ajudar. noKeyserverConn=Foi impossível estabelecer ligação com o servidor %S. keyDownloadFailed=A transferência de chave do servidor falhou. Mensagem do sistema:\n%S internalError=Ocorreu um erro interno. Foi impossível transferir ou importar as chaves. noKeyFound=Desculpe, não foi possível encontrar uma chave com o critério de busca especificado.\nPor favor, note que os identificadores de chave devem conter o prefixo \\"0x\\" (por ex: 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=A procura ou importação das chaves do servidor falhou: foi impossível executar gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Erro ao definir a confiança no utilizador # Strings in enigmailSignKeyDlg.js signKeyFailed=Erro ao assinar a chave alreadySigned.label=Nota: chave %S já está assinada com a chave privada selecionada. alreadySignedexportable.label=Nota: a chave %S já está assinada como exportável com a chave privada selecionada. Uma assinatura local não faz sentido. partlySigned.label=Nota: alguns identificadores de utilizador da chave %S já estão assinados com a chave secreta selecionada. noTrustedOwnKeys=Nenhuma chave elegível para assinar encontrada! Necessita de pelo menos uma chave privada com total confiança para poder assinar chaves. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Carregando as chaves, por favor aguarde... keyValid.unknown=desconhecida keyValid.invalid=inválida keyValid.disabled=desativada keyValid.revoked=revogada keyValid.expired=expirada keyValid.noSubkey=sem subchave válida keyTrust.untrusted=nula keyTrust.marginal=marginal keyTrust.full=normal keyTrust.ultimate=total keyTrust.group=(grupo) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Ativar Chave keyMan.disableKey=Desativar Chave userAtt.photo=Atributo de utilizador (imagem JPEG) asciiArmorFile=Armadura ASCII (*.asc) importKeyFile=Importar Ficheiro com Chaves OpenPGP gnupgFile=Ficheiros GnuPG saveRevokeCertAs=Criar e Guardar Certificado de Revogação revokeCertOK=O certificado de revogação foi criado com sucesso. Pode usá-lo para invalidar a sua chave pública, por exemplo, no caso de perder a sua chave privada.\n\nPor favor, transfira-o para um meio no qual possa ser armazenado em separado com segurança tal como um CD ou disquete. Se alguém conseguir acesso a este certificado pode usá-lo para inutilizar a sua chave. revokeCertFailed=O certificado de revogação não pôde ser criado. addUidOK=Identificador de utilizador adicionado com sucesso. addUidFailed=Erro ao adicionar o identificador de utilizador noKeySelected=Deve seleccionar pelo menos uma chave para completar a operação seleccionada exportToFile=Exportar Chave Pública para Ficheiro exportKeypairToFile=Exportar as Chaves Pública e Privada para um Ficheiro exportSecretKey=Deseja incluir a chave privada no ficheiro de chave OpenPGP guardado? saveKeysOK=As chaves foram guardadas com sucesso saveKeysFailed=Erro ao guardar as chaves importKeysFailed=Erro ao importar as chaves enableKeyFailed=A ativação/desativação das chaves falhou specificPubKeyFilename=%1$S (0x%2$S) pub specificPubSecKeyFilename=%1$S (0x%2$S) pub-sec defaultPubKeyFilename=Chaves-publicas-exportadas defaultPubSecKeyFilename=Chaves-publicas-e-privadas-exportadas noSecretKeys=Não foram encontradas chaves privadas.\n\nDeseja criar a sua chave agora? sendKeysOk=Chave(s) enviadas com sucesso sendKeysFailed=Erro ao enviar as chaves receiveKeysOk=Chave(s) atualizada(s) com sucesso receiveKeysFailed=Erro ao importar as chaves importFromClip=Deseja importar chaves da Ãrea de Transferência? importFromUrl=Descarregar chave pública deste URL: copyToClipbrdFailed=Foi impossível copiar as chaves seleccionadas para a Ãrea de Transferência. copyToClipbrdOK=Chave(s) copiada(s) para a Ãrea de Transferência deleteSecretKey=AVISO: Está prestes a remover uma chave privada!\nAo remover a sua chave privada ficará impedido de decifrar qualquer mensagem cifrada para essa chave ou de a revogar.\n\nTem a certeza que deseja remover AMBAS as chaves, pública e privada\n'%S'? deleteMix=AVISO: Está prestes a apagar chaves privadas!\nSe apagar a sua chave privada, não poderá mais decifrar mensagens cifradas para essa chave.\n\nDeseja realmente apagar AMBAS as chaves seleccionadas, pública e privada? deletePubKey=Deseja remover a chave pública\n'%S'? deleteSelectedPubKey=Deseja apagar as chaves públicas? deleteKeyFailed=Foi impossível remover a chave. revokeKeyQuestion=Está prestes a revogar a chave %S.\n\nIrá perder a hipótese de assinar com esta chave e, após distribuído este certificado, mais ninguém lhe poderá enviar mensagens cifradas com essa chave. Poderá continuar a usar a chave para decifrar mensagens antigas.\n\nDeseja continuar? revokeKeyOk=A chave foi revogada. Se tinha a chave disponível num servidor, deve exportá-la de novo, para que todos possam ver a revogação. revokeKeyFailed=Foi impossível revogar a chave. refreshAllQuestion=Não seleccionou qualquer chave. Deseja refrescar TODAS as chaves? refreshKey.warn=Aviso: dependendo do número de chaves e da velocidade da sua ligação, refrescar todas as chaves pode ser um processo bastante longo! downloadContactsKeys.warn=Aviso: dependendo do número de contatos e da velocidade de ligação, transferir todas as chaves pode demorar um tempo apreciável. downloadContactsKeys.importFrom=Importar contatos do livro de endereços '%S'? keyMan.button.exportSecKey=&Exportar Chaves Privadas keyMan.button.exportPubKey=Exportar Apenas Chaves &Públicas keyMan.button.import=&Importar keyMan.button.refreshAll=&Refrescar Todas as Chaves keyMan.button.revokeKey=&Revogar Chave keyMan.button.skip=&Saltar Chave keylist.noOtherUids=Não tem outras identidades keylist.hasOtherUids=Também conhecido como keylist.noPhotos=Sem fotografia disponível keylist.hasPhotos=Fotografias keyMan.addphoto.filepicker.title=Seleccionar fotografia a adicionar keyMan.addphoto.warnLargeFile=O ficheiro que escolheu é maior que 25 kB.\nNão é recomendado usar ficheiros muito grandes pois isso aumenta consideravelmente o tamanho das chaves. keyMan.addphoto.noJpegFile=O ficheiro seleccionado não aparenta estar no formato JPEG. Por favor, seleccione um ficheiro diferente. keyMan.addphoto.failed=A fotografia não pôde ser adicionada. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Erro ao alterar o Identificador de Utilizador principal changePrimUidOK=O Identificador de Utilizador principal foi alterado com sucesso deleteUidFailed=Foi impossível remover o Identificador de Utilizador %S deleteUidOK=Identificador de Utilizador %S foi removido com sucesso revokeUidFailed=Foi impossível revogar o Identificador de Utilizador %S revokeUidOK=Identificador de Utilizador %S foi revogado com sucesso. Se tinha a chave disponível num servidor, deve exportá-la de novo, para que todos possam ver a revogação. revokeUidQuestion=Tem a certeza que deseja revogar o Identificador de Utilizador %S? deleteUidQuestion=Tem a certeza que deseja remover o Identificador de Utilizador %S?\n\nNota: se tinha a sua chave disponível num servidor, remover o Identificador de Utilizador não mudará nada. Neste caso, deve usar 'Revogar Identificador de Utilizador'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=SUCESSO! Chaves importadas importInfoSuccess=✅ importInfoBits=Bits importInfoCreated=Criada importInfoFpr=Identificação importInfoDetails=(Detalhes) importInfoNoKeys=Nenhuma chave importada. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=chave pública keyTypePrimary=chave primária keyTypeSubkey=chave secundária keyTypePair=par de chaves keyExpiryNever=nunca keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECDH keyAlgorithm_19=ECDSA keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Cifrar keyUsageSign=Assinar keyUsageCertify=Certificar keyUsageAuthentication=Autenticação keyDoesNotExpire=A chave nunca expira # Strings in enigmailGenCardKey.xul keygen.started=Por favor, aguarde enquanto a chave está a ser criada .... keygen.completed=Chave criada. O identificador da nova chave é: 0x%S keygen.keyBackup=Foi efetuada um cópia de segurança da chave com o nome %S keygen.passRequired=Por favor, introduza uma senha se deseja criar uma cópia de segurança da sua chave fora do SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Os PIN que introduziu não coincidem; por favor, introduza-os de novo cardPin.minLength=O PIN têm de ter pelo menos %S caracteres ou algarismos cardPin.processFailed=A alteração do PIN falhou # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Refrescando as chaves, aguarde por favor... keyserverProgress.uploading=Transferindo as chaves, aguarde por favor ... keyserverTitle.refreshing=Refrescar Chaves keyserverTitle.uploading=Transferência de Chaves # Strings in enigmailSetupWizard passphrase.min8keys=A sua senha deve conter pelo menos 8 caracteres! setupWizard.reallyCancel=Deseja realmente fechar o Assistente de Configuração do Enigmail? setupWizard.invalidGpg=O ficheiro que escolheu não é um executável GnuPG. Por favor, indique outro ficheiro. setupWizard.specifyFile=Necessita de indicar pelo menos uma chave pública para continuar. setupWizard.installFailed=Parece que a instalação não foi bem sucedida. Tente instalar de novo ou instalar o GnuPG manualmente e localizá-lo usando o botão Procurar. setupWizard.downloadForbidden=Para sua segurança, o GnuPG não será transferido. Visite http://www.gnupg.org/ para transferir o GnuPG. setupWizard.downloadImpossible=Neste momento não é possível transferir o GnuPG. Tente novamente mais tarde ou visite http://www.gnupg.org/ para transferir o GnuPG. setupWizard.hashSumError=O assistente não foi capaz de verificar a integridade do ficheiro transferido. O ficheiro pode estar corrompido ou ter sido manipulado. Deseja continuar a instalação de qualquer forma? setupWizard.importSettingsFile=Indique o ficheiro da cópia de segurança setupWizard.invalidSettingsFile=O ficheiro indicado não é uma cópia de segurança das Definições do Enigmail. setupWizard.gpgConfExists=O ficheiro de configuração do GnuPG já existe. Deseja substituí-lo pelo ficheiro da sua instalação anterior? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Ocorreu um erro ao tentar transferir o GnuPG. Por favor verifique a Consola de Erro para mais detalhes. installGnuPG.installFailed=Ocorreu um erro ao instalar o GnuPG. Por favor, verifique a Consola de Erro para mais detalhes. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Tem de inserir um nome e endereço de correio eletrónico addUidDlg.nameMinLengthError=O nome deve ter pelo menos 5 caracteres addUidDlg.invalidEmailError=Deve inserir um endereço de correio eletrónico válido addUidDlg.commentError=Os comentários não podem conter chavetas # Strings in enigmailCardDetails.js Carddetails.NoASCII=Os Smartcards OpenPGP apenas suportam caracteres ASCII no Nome/Apelido. # network error types errorType.SecurityCertificate=O certificado de segurança apresentado pelo serviço web não é válido. errorType.SecurityProtocol=O protocolo de segurança usado pelo serviço web não é conhecido. errorType.Network=Ocorreu um erro de rede. # filter stuff filter.folderRequired=Deve escolher uma pasta de destino. filter.decryptMove.label=Decifrar permanentemente (Enigmail) filter.decryptCopy.label=Criar Cópia Decifrada (Enigmail) filter.decryptMove.warnExperimental=Aviso - a ação do filtro 'Decifrar permanentemente' poderá levar à destruição de mensagens.\n\nRecomenda-se vivamente que tente primeiro o filtro "Criar Cópia Decifrada", testando o resultado com atenção, e apenas use este filtro se ficar satisfeito com o resultado. # strings in enigmailConvert.jsm converter.decryptBody.failed=Não foi possível decifrar a mensagem com o assunto\n"%S".\nDeseja repetir com uma frase senha diferente ou saltar a mensagem? converter.decryptAtt.failed=Não foi possível decifrar o anexo "%1$S"\nda mensagem com o assunto\n"%2$S".\nDeseja repetir com uma frase senha diferente ou saltar a mensagem? saveLogFile.title=Guardar Ficheiro de Registo # strings in gpg.jsm unknownSigningAlg=Algoritmo de assinatura desconhecido (ID: %S) unknownHashAlg=Hash criptográfico desconhecido (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=A chave %1$S (ID %2$S) foi revogada. keyRing.pubKeyExpired=A chave %1$S (ID %2$S) expirou. keyRing.pubKeyNotForSigning=A chave %1$S (ID %2$S) não pode ser usada para assinar. keyRing.pubKeyNotForEncryption=A chave %1$S (ID %2$S) não pode ser usada para encriptação. keyRing.keyDisabled=A chave %1$S (ID %2$S) está inativa; não pode ser usada. keyRing.keyNotTrusted=A chave %1$S (ID %2$S) ... Por favor defina o nível de confiança da sua chave para "total" para poder assinar com ela. keyRing.keyInvalid=A chave %1$S (ID %2$S) é inválida (e.g. não tem uma auto-assinatura). keyRing.signSubKeysRevoked=Todas as subchaves de assinatura %1$S (ID %2$S) foram revocadas. keyRing.signSubKeysExpired=Todas as subchaves de assinatura da chave %1$S (ID %2$S) expiraram. keyRing.signSubKeysUnusable=Todas as subchaves de assinatura da chave %1$S (ID %2$S) foram revocadas, expiraram ou estão, de outro modo, inutilizáveis. keyRing.encSubKeysRevoked=Todas as subchaves de encriptação da chave %1$S (ID %2$S) foram revocadas. keyRing.encSubKeysExpired=Todas as subchaves de encriptação da chave %1$S (ID %2$S) expiraram. keyRing.noSecretKey=Parece que não tem a chave secreta de %1$S (ID %2$S) no seu porta-chaves; não pode usar a chave para assinar. keyRing.encSubKeysUnusable=Todas as subchaves de encriptação da chave %1$S (ID %2$S) foram revocadas, expiraram ou estão, de outro modo, inutilizáveis. #strings in exportSettingsWizard.js cannotWriteToFile=Não foi possível guardar para o ficheiro '%S'. Por favor selecione outro ficheiro. dataExportError=Ocorreu um erro a exportar os seus dados. enigmailSettings=DefiniçõesEnigmail defaultBackupFileName=Enigmail-export specifyExportFile=Indique o nome do ficheiro para exportar homedirParamNotSUpported=Parâmetros adicionais que configuram caminhos como --homedir e --keyring não são suportados na exportação/restauração. Por favor use métodos alternativos como definir a variável de ambiente GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=A sua chave %1$S expira em menos de %2$S dias.\n\nRecomenda-se que crie um novo par de chaves e configure as contas correspondentes para usarem a nova chave. expiry.keysExpireSoon=As suas chaves que se seguem expiram em menos de %1$S dias:\n%2$S. Recomenda-se que crie novas chaves e configure as suas contas para usarem as novas chaves. enigmail/lang/pt-PT/help/000077500000000000000000000000001266701624400154705ustar00rootroot00000000000000enigmail/lang/pt-PT/help/compose.html000066400000000000000000000112021266701624400200170ustar00rootroot00000000000000 Ajuda do Enigmail: Composição de Mensagens

Ajuda do Enigmail

Usando o Enigmail ao compor mensagens

  • Menu Enigmail na janela Correio/Composição
    • Assinar mensagem: Activar/Desactivar o envio de correio assinado. O utilizador será notificado se a assinatura falhar.
    • Cifrar mensagem: Activar/Desactivar a encriptação para todo(s) o(s) destinatário(s) antes do envio. O utilizador será notificado se a encriptação falhar.

      Se a opção Mostrar selecção quando necessário estiver seleccionada no separador Preferências Enigmail -> Selecção de chaves, será apresentada uma lista de chaves no caso de haver endereços de email na lista de destinatários para os quais tenha a chave pública.

      Se a opção Nunca mostrar selecção de chave OpenPGP estiver seleccionada no separador Preferências Enigmail -> Selecção de chaves, e houver endereços de email na lista de destinatários para os quais não tem a chave pública, a mensagem será enviada em claro.

    • Usar PGP/MIME para esta mensagem: Activar/Desactivar o uso de PGP/MIME para esta mensagem.

      Se sabe que o(s) destinatário(s) podem ler correio electrónico no formato PGP/MIME, deve usá-lo.

      Esta funcionalidade depende da configuração no separador Preferências -> PGP/MIME estar para Permitir o uso de PGP/MIME ou Usar sempre PGP/MIME.

    • Opções de composição por omissão: Submenu.
      • Opções de assinar/cifrar...: atalho para Opções de conta -> Opções OpenPGP.
      • Opções de envio...: atalho para o separador Preferências -> Ao Enviar.
      • Opções de Selecção de chaves...: atalho o separador Preferências -> Selecção de chaves.
      • Opções PGP/MIME...: atalho para o separador Preferências -> PGP/MIME.
    • Desfazer encriptação: se acontecer um erro ao enviar o correio, por exemplo o servidor POP não aceitar o pedido, o Enigmail não terá conhecimento disso e a mensagem cifrada continuará a ser mostrada na janela de composição. Ao escolher este item de menu reverterá a operação de encriptação, colocando o texto original novamente na janela.
      Como solução temporária, esta opção pode também ser usada para decifrar as citações ao responder a mensagens cifradas. O Enigmail deve decifrar automaticamente as mensagens cifradas, mas se isso falhar por alguma razão, pode usar este item de menu para o forçar.
    • Inserir chave pública: inserir bloco de chave pública em ASCII na posição corrente do cursor na janela de Composição. Ser-lhe-á pedido o endereço de correio electrónico da(s) chave(s) a inserir. As chaves inseridas desta forma serão automaticamente reconhecidas pelo Enigmail na recepção. Após a inserção da chave, pode escolher assinar/cifrar a mensagem consoante necessário. Não insira mais do que um bloco de chave por mensagem; em vez disso, indique os vários endereços de email separados por vírgulas ou espaços quando tal lhe for pedido.
    • Limpar senha memorizada: Limpa a senha guardada em memória. Útil se tem várias senhas diferentes.
    • Editar regras por destinatário
    • Ajuda: Mostra a informação de ajuda do site web (esta página).

Ajuda adicional disponível na página web de Ajuda do Enigmail

enigmail/lang/pt-PT/help/editRcptRule.html000066400000000000000000000137631266701624400207760ustar00rootroot00000000000000 Ajuda do Engimail: Editar Regras OpenPGP

Ajuda do Enigmail

Usar o Editor de Regras do Enigmail: Editar Regras OpenPGP

No Editor de Regras, pode especificar, para cada destinatário, se deseja cifrar, assinar ou usar PGP/MIME por omissão e ainda quais as chaves OpenPGP a usar. Neste diálogo, pode especificar as regras para cada destinatário individualmente ou para cada grupo de destinatários com atributos semelhantes.

  • Configurar regras OpenPGP para: Contém os endereços de email dos destinatários (sem nomes, isto é, apenas um endereço como alguem@dominio.email). Pode indicar vários endereços de email, separados por espaços. Os endereços indicados aqui podem conter apenas o domínio, de forma a que apenas os endereços daquele domínio sejam mostrados, por exemplo, @dominio.email permitiria mostrar os endereços pessoa@dominio.email, alguem@dominio.email, qualquer@dominio.email, etc.
  • Aplicar regra se destinatário ...: Altera a forma de correspondência de endereços de email. Se forem introduzidos vários endereços, esta definição aplicar-se-á a todos. Os exemplos abaixo baseiam-se em introduzir pessoa@dominio.email no campo Regras OpenPGP definido acima.
    • É exactamente: com esta configuração, a regra apenas se aplicará às mensagens para pessoa@dominio.email (correspondência exacta, ignorando maiúsculas/minúsculas).
    • Contém: com esta configuração, a regra aplicar-se-á a todos os endereços que contenham a cadeia de caracteres especificada, por exemplo qualquerpessoa@dominio.email ou pessoa@dominio.email.net
    • Começa por: com esta configuração, a regra irá aplicar-se a qualquer endereço iniciado pela cadeia de caracteres especificada, como pessoa@dominio.email.net ou pessoa@dominio.email-nome.com.
    • Termina em: esta configuração aplica a regra a todos os endereços terminados com a cadeia de caracteres especificada, tais como qualquerpessoa@dominio.email ou umapessoa@dominio.email.
  • Continuar com a próxima regra para os endereços coindidentes
    Activar esta função permitirá definir uma regra sem ter que especificar o Identificador da chave em Usar as seguintes chaves OpenPGP:, de forma a que o endereço de email seja usado para procurar a chave ao enviar. De igual modo, as regras seguintes para os mesmos endereços serão processadas da mesma maneira.
  • Não verificar mais regras para os endereços coincidentes
    Activar esta definição impede o processamento de quaisquer outras regras para os endereços coincidentes, caso esta regra seja verificada; ou seja, o processamento de regras continua com o próximo destinatário.
  • Definições por omissão para assinar: activar ou desactivar a assinatura de mensagens. Esta definição usa ou sobrepõe-se ao que especificou na janela de composições de mensagens. Os valores são:
    • Nunca: desactivar a assinatura, mesmo se estiver seleccionada na janela de composição de mensagens (sobrepõe-se a outros valores)
    • Sim, se seleccionado na Composição de Mensagens: deixar a assinatura como especificado na janela de composição de mensagens
    • Sempre: Activar a assinatura, mesmo se não estiver seleccionada na janela de composição de mensagens
Estas configurações de assinatura são aplicadas a todas as regras coincidentes. Se uma das regras desactivar a assinatura, a mensagem não será assinada, independentemente do que outras regras especifiquem. Sempre.
  • Cifrar: Activar ou desactivar a encriptação de mensagens. As configurações permitidas e o seu significado são os mesmos que para a assinatura de mensagens.
  • PGP/MIME: activar ou desactivar o uso de PGP/MIME (RFC 3156) para a codificação de mensagens. Se não seleccionar PGP/MIME, as mensagens serão codificadas usando o método "PGP embebido". Os valores permitidos e o seu significado são os mesmos que para a assinatura de mensagens.

As regras são processadas na ordem em que são mostradas na lista Editor de Regras por Destinatário. Sempre que uma regra coincidir com um destinatário e contiver um Identificador de chave OpenPGP, para além de usar o Identificador de chave específico, implica que o destinatário não seja mais considerado ao processar regras posteriores.


Pode encontrar mais ajuda na página de Configurações de Regras por Destinatário do Enigmail

enigmail/lang/pt-PT/help/initError.html000066400000000000000000000046531266701624400203430ustar00rootroot00000000000000 Ajuda Enigmail: Como Resolver Problemas na Inicialização do OpenPGP

Ajuda Enigmail

Como Resolver Problemas na Inicialização do OpenPGP

Há vários motivos para que o OpenPGP não consiga inicializar. Os mais comuns estão descritos abaixo; para mais informação, visite por favor a Página de Suporte do Enigmail.

GnuPG não foi encontrado

Para que o OpenPGP possa funcionar, é necessário que a ferramenta GnuPG esteja instalada. Se não for possível encontrar o GnuPG, certifique-se que o executável gpg.exe (em Windows; gpg nas outras platformas) está instalado no seu computador. Em caso afirmativo, e se o OpenPGP não o conseguir encontrar, é necessário configurar manualmente o caminho para o GnuPG nas Preferências (menu OpenPGP > Preferências)

Não foi possível inicializar o Enigmime

O OpenPGP funciona apenas se for compilado na mesma plataforma que o Thunderbird ou Seamonkey. Isto significa que a versão oficial do Enigmail apenas pode ser usada em conjunto com as versões oficiais do Thunderbird ou Seamonkey fornecidas pela mozilla.org.

Se usa o Thunderbird ou Seamonkey provenientes de outra fonte (por exemplo, o fornecedor da sua distribuição de Linux), ou se compilou a aplicação localmente, deve usar uma versão de Enigmail do mesmo fornecedor ou compilar o Enigmail localmente. Instruções para compilar o Enigmail podem ser encontradas na Secção de Código Fonte da página web do Enigmail. Por favor, não submeta nenhum relatório de erro sobre este problema, uma vez que não tem solução.

Pode encontrar mais ajuda no Sítio Web de Suporte ao Enigmail.

enigmail/lang/pt-PT/help/messenger.html000066400000000000000000000114731266701624400203540ustar00rootroot00000000000000 Ajuda Enigmail: Leitura de mensagens

Ajuda Enigmail

Usar o Enigmail ao ler mensagens

  • Botão Decifrar na janela principal do Mail & Newsgroups / Thunderbird
    Este botão pode ser usado para: decifrar, verificar ou importar chaves públicas. Normalmente, as mensagens são decifradas e verificadas automaticamente, embora este comportamento possa ser desactivado numa preferência. Contudo, se isto falhar, será apresentada uma curta mensagem de erro na barra de estado do Enigmail. Se clicar sobre o botão Decifrar, poderá ver uma mensagem mais detalhada, incluindo a saída do comando GnuPG.
  • Ícones da Caneta e da Chave no Cabeçalho da Mensagem
    Os ícones da Caneta e da Chave no Cabeçalho da Mensagem indicam se a mensagem que está a ler foi assinada e/ou cifrada e se a assinatura é válida, ou seja, se a mensagem não foi alterada desde que foi assinada. Se a mensagem foi alterada o ícone da Caneta mudará para uma Caneta Quebrada para indicar que a assinatura não é válida. Clicar com o botão alternativo do rato quer no ícone da Caneta quer no ícone da Chave fará aparecer um menu com as seguintes opções:
    • Informação de Segurança OpenPGP: permite ver a saída do GnuPG para a mensagem.
    • Copiar Informação de Segurança OpenPGP: copia a saída do GnuPG para a área de transferência; para colar numa mensagem de resposta, etc.
    • Ver Identificador Fotográfico OpenPGP: permite ver o Identificador Fotográfico do remetente, se ele tiver uma fotografia embebida na sua Chave Pública. (Esta opção estará activa apenas se existir um Identificador Fotográfico na chave.)
    • Informação de Segurança S/MIME: permite ver a informação de segurança S/MIME da mensagem.

    Se não tiver keyserver-options auto-key-retrieve no seu ficheiro gpg.conf e receber uma mensagem assinada ou cifrada, verá, na área de visualização do cabeçalho da mensagem, um ícone com uma Caneta com um ponto de interrogação sobreposto, a barra de estado do Enigmail na área do cabeçalho dirá Parte da mensagem assinada; para mais informação, clique sobre o ícone da caneta e a mensagem no Painel de Mensagem mostrará os indicadores de um bloco OpenPGP e o bloco da assinatura.

    Também poderá ver isto se tiver keyserver-options auto-key-retrieve no seu ficheiro gpg.conf e a chave não estiver disponível no seu servidor de chaves por omissão.

    Clicar sobre o ícone da Caneta e Ponto de Interrogação fará aparecer uma janela informando que a chave não está disponível no seu porta-chaves. Clicar em OK mostrará outra janela com uma lista de servidores de chaves para escolher a partir de qual quer fazer a transferência da chave pública do remetente.

    Para configurar a lista dos servidores de chaves que deseja usar, vá ao separador Enigmail -> Preferências -> Básicas e introduza os endereços dos servidores no campo Servidor(es) de chave(s):, separados por vírgulas. O servidor de chaves listado em primeiro lugar será usado como o servidor por omissão.

  • Abrir anexos cifrados / importar chaves OpenPGP em anexo
    Anexos de nome *.pgp, *.asc, e *.gpg são reconhecidos como podendo ter um tratamento especial por parte do Enigmail. Clicar com o botão alternativo do rato num anexo deste tipo, activa dois itens de menu especiais no menu de contexto: Decifrar e Abrir e Decifrar e Gravar Como.... Use estes dois itens de menu se deseja que o Enigmail decifre um anexo antes de o abrir ou gravar. Se um anexo for reconhecido como um ficheiro contendo uma chave OpenPGP, é-lhe oferecida a possibilidade de importar as chaves para o seu porta-chaves.

Ajuda adicional disponível na página web de Ajuda do Enigmail

enigmail/lang/pt-PT/help/rulesEditor.html000066400000000000000000000072711266701624400206660ustar00rootroot00000000000000 Ajuda do Enigmail: Editor de Regras

Ajuda do Enigmail

Usar o Editor de Regras do Enigmail

No Editor de Regras, pode indicar as configurações a usar por omissão para cifrar, assinar e usar PGP/MIME, por destinatário e quais as chaves a usar. Cada regra consiste em 5 campos e é representada numa única linha:

  • Email: o(s) endereço(s) de email dos campos Para:, CC:, e BCC: a encontrar. Cada coincidência trabalha em substrings (Mais detalhes na janela do Editor de Regras)
  • Chave(s) OpenPGP: a lista de Identificadores de chaves OpenPGP a usar para o destinatário
  • Assinar: activar ou desactivar o assinar de mensagens. Esta configuração usa ou sobrepõe-se ao indicado na janela de Composição de mensagens. Os valores são:
    • Nunca: a mensagem não será assinada, mesmo com uma configuração em contrário na janela de composição de mensagens (sobrepõe-se a outros valores)
    • Possível: a mensagem será assinada ou não, consoante a configuração na janela de composição de mensagens.
    • Sempre: a mensagem será assinada, mesmo que a assinatura esteja desactivada na janela de composição de mensagens
    Estas configurações aplicam-se a todas as regras coincidentes. Se uma das regras desactivar a assinatura, a mensagem não será assinada, independentemente de outras regras especificadas. Sempre.
  • Cifrar: activar ou desactivar a encriptação de mensagens. As configurações permitidas e o seu significado são os mesmos de que para a assinatura de mensagens.
  • PGP/MIME: activar ou desactivar o uso da codificação de mensagens PGP/MIME (RFC 3156). Se a PGP/MIME estiver desactivada, as mensagens serão codificadas usando "PGP embebido". As configurações permitidas e o seu significado são os mesmo de que para a assinatura de mensagens.

As regras são processadas na ordem em que são mostradas na lista. Sempre que uma regra coincidir com um destinatário e contiver um Identificador de chave OpenPGP, esse destinatário não será mais considerado ao processar as regras seguintes, para além de ser usado o Identificador de chave especificado.

Nota: O editor de regras ainda não está completo. É possível escrever regras mais avançadas editando o ficheiro de regras directamente (estas regras não devem ser posteriormente editadas no editor de regras). Mais informação sobre a edição directa deste ficheiro está disponível na Homepage do Enigmail.


Ajuda adicional disponível na página web de Ajuda do Enigmail

enigmail/lang/pt-PT/help/sendingPrefs.html000066400000000000000000000047771266701624400210240ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/ru/000077500000000000000000000000001266701624400142225ustar00rootroot00000000000000enigmail/lang/ru/am-enigprefs.properties000066400000000000000000000001251266701624400207130ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Защита OpenPGP enigmail/lang/ru/enigmail.dtd000066400000000000000000001523201266701624400165070ustar00rootroot00000000000000 БезопаÑноÑть OpenPGP)"> ПРИМЕЧÐÐИЕ: Ñоздание ключей может занÑть неÑколько минут. Ðе закрывайте приложение во Ð²Ñ€ÐµÐ¼Ñ Ñтого процеÑÑа. Ðктивный Ñёрфинг и интенÑивное выполнение операций Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ запиÑи на диÑк во Ð²Ñ€ÐµÐ¼Ñ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ ключей внеÑут необходимый Ñлемент ÑлучайноÑти и уÑкорÑÑ‚ процеÑÑ. Ð’Ñ‹ будете предупреждены о завершении ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð°."> ' неверна"> ПРИМЕЧÐÐИЕ: Ñоздание ключей может занÑть неÑколько минут. Ðе закрывайте приложение во Ð²Ñ€ÐµÐ¼Ñ Ñтого процеÑÑа.Ð’Ñ‹ будете предупреждены о завершении ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð°."> Примечание: Enigmail будет вÑегда проверÑть подпиÑи под каждым Ñообщением Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ учетной запиÑи, незавиÑимо от того, включён ли он или нет"> СпаÑибо за иÑпользование Enigmail."> enigmail/lang/ru/enigmail.properties000066400000000000000000001255501266701624400201350ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Предупреждение Enigmail enigConfirm=Подтверждение Enigmail enigError=Ошибка Enigmail enigPrompt=Приглашение Enigmail dlgYes=&Да dlgNo=&Ðет dlgKeepSetting=Запомнить решение и больше не показывать Ñто окно dlgNoPrompt=Ðе отображать опÑть Ñтот диалог dlg.button.delete=&Удалить dlg.button.cancel=&Отмена dlg.button.close=&Закрыть dlg.button.continue=Прод&олжить dlg.button.skip=&ПропуÑтить dlg.button.view=П&роÑмотреть repeatPrefix=\n\nЭто предупреждение повторитÑÑ ÐµÑ‰Ñ‘ %S repeatSuffixSingular=раз. repeatSuffixPlural=раз(а). noRepeat=\n\nЭто предупреждение не будет поÑвлÑтьÑÑ, пока вы не обновите Enigmail. pgpNotSupported=Ð’Ñ‹ хотите иÑпользовать Enigmail вмеÑте Ñ PGP 6.x.\n\nК Ñожалению, PGP 6.x обладает Ñ€Ñдом проблем, не позволÑющих Enigmail работать корректно. ПоÑтому Enigmail больше не поддерживает PGP 6.x, пожалуйÑта, уÑтановите вмеÑто него GnuPG (GPG).\n\nЕÑли вам нужна помощь в уÑтановке GnuPG, обратитеÑÑŒ к Ñправочному разделу Ñайта Enigmail. passphraseCleared=Пароль был очищен. noPhotoAvailable=Ð¤Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ Ð½Ðµ доÑтупна debugLog.title=Отладочный журнал Enigmail error.photoPathNotReadable=Ðе удаётÑÑ Ð¿Ñ€Ð¾Ñ‡ÐµÑть путь к фото '%S' # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=ÐžÐ±Ð½Ð¾Ð²Ð»Ñ‘Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Enigmail Ñодержит значительные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² хранении параметров. Мы поÑтаралиÑÑŒ перенеÑти ваши прежние наÑтройки в новую верÑию, однако кое-что могло потерÑтьÑÑ, так как мы не можем предуÑмотреть автоматичеÑкий Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð²Ñех вариантов наÑтроек. ПожалуйÑта, перепроверьте обновлённые параметры и наÑтройки ÑобÑтвенноручно. enigmailCommon.checkPreferences=Перейти к наÑтройкам ... usingVersion=ИÑпользуетÑÑ Enigmail верÑии %S usingAgent=ИÑпользуетÑÑ %S %S Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ раÑшифровки agentError=ОШИБКÐ: ошибка доÑтупа к Ñлужбе Enigmime! accessError=Ошибка доÑтупа к Ñлужбе Enigmail onlyGPG=Создание ключей возможно только при иÑпользовании GnuPG (не PGP)! keygenComplete=Создание ключа завершено! Ð”Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи будет иÑпользоватьÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ <%S>. revokeCertRecommended=РекомендуетÑÑ Ñоздать Ñертификат отзыва Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ ключа. Этот Ñертификат может быть иÑпользован Ð´Ð»Ñ Ð¾Ð±ÑŒÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ ключа недейÑтвительным в Ñлучае, еÑли ваш Ñекретный ключ утерÑн или Ñкомпрометирован. Ð’Ñ‹ хотите Ñоздать Ñертификат отзыва ÑейчаÑ? keyMan.button.generateCert=&Генерировать Ñертификат genCompleteNoSign=Создание ключей завершено! genGoing=Ключ уже ÑоздаетÑÑ! passNoMatch=Введённые пароли не Ñовпадают, попробуйте Ñнова passCheckBox=ПожалуйÑта, отметьте Ñту опцию, еÑли не хотите указывать пароль Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° passUserName=Укажите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñтой учетной запиÑи passSpaceProblem=Ð’ Ñилу техничеÑких ограничений ÐºÐ»ÑŽÑ‡ÐµÐ²Ð°Ñ Ñ„Ñ€Ð°Ð·Ð° не может начинатьÑÑ Ð¸Ð»Ð¸ заканчиватьÑÑ Ð¿Ñ€Ð¾Ð±ÐµÐ»ÑŒÐ½Ñ‹Ð¼ Ñимволом. changePassFailed=Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ðµ удалаÑÑŒ. keyConfirm=Создать открытые и закрытые ключи Ð´Ð»Ñ '%S'? keyMan.button.generateKey=&Генерировать ключ keyAbort=Прервать генерацию ключа? keyMan.button.generateKeyAbort=&Прервать генерацию ключа keyMan.button.generateKeyContinue=П&родолжить генерацию ключа expiryTooLong=Ð’Ñ‹ не можете Ñоздать ключ Ñрок дейÑÑ‚Ð²Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ больше чем 100 лет. expiryTooLongShorter=Ðевозможно Ñоздать ключ, Ñрок дейÑÑ‚Ð²Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ иÑтекает более чем через 90 лет. expiryTooShort=Ваш ключ должен быть дейÑтвителен по меньшей мере один день. dsaSizeLimit=МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ключей DSA ÑоÑтавлÑет 3072 бит – длина ключа будет уменьшена в ÑоответÑтвии Ñ Ñтим ограничением. keyGenFailed=Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° не удалаÑÑŒ. За подробноÑÑ‚Ñми обратитеÑÑŒ к конÑоли Enigmail (меню Enigmail > Отладка Enigmail). setKeyExpirationDateFailed=Дата Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñрока дейÑÑ‚Ð²Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ нельзÑ. # Strings in enigmailMessengerOverlay.js securityInfo=Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ защите Enigmail\n enigHeader=Enigmail: enigContentNote=Enigmail: *Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ñто Ñообщение не были зашифрованы или Ñнабжены цифровой подпиÑью* possiblyPgpMime=Сообщение, возможно зашифровано или подпиÑано Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ PGP/MIME; нажмите кнопку \\"РаÑшифровать\\" Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ noDecrypted=Ðет раÑшифрованных Ñообщений Ð´Ð»Ñ ÑохранениÑ!\nВоÑпользуйтеÑÑŒ командой \\"Сохранить\\" из меню \\"Файл\\" noMessage=Ðет Ñообщений Ð´Ð»Ñ ÑохранениÑ! useButton=Ðажмите кнопку раÑшифровки, чтобы раÑшифровать Ñообщение saveHeader=Enigmail: Сохранение раÑшифрованного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ saveAttachmentHeader=Enigmail: Сохранение раÑшифрованного Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ noTempDir=Ðевозможно найти каталог временных файлов, доÑтупный Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.\nПожалуйÑта, задайте его Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ переменной Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ TEMP. attachmentPgpKey=Открываемое вами вложение \\"%S\\" кажетÑÑ ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ ключа OpenPGP.\n\nÐажмите \\"Импорт\\", чтобы импортировать ÑодержащиеÑÑ Ð² нем ключи, или \\"ПроÑмотреть\\", чтобы проÑмотреть Ñодержимое файла в окне браузера. beginPgpPart=********* *СЛЕДУЮЩÐЯ ЧÐСТЬ СООБЩЕÐИЯ ЗÐШИФРОВÐÐРили ЗÐЩИЩЕÐРЦИФРОВОЙ ПОДПИСЬЮ* ********* endPgpPart=********** *КОÐЕЦ ЗÐЩИЩЕÐÐОЙ ЧÐСТИ СООБЩЕÐИЯ* ********** notePartEncrypted=Enigmail: *ЧаÑти Ñтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐЕ были зашифрованы или подпиÑаны* noteCutMessage=Enigmail: *Ð’ Ñообщении найдено множеÑтво блоков -- раÑшифровка/Ð²ÐµÑ€Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ñ‹* decryptOkNoSig=Предупреждение\n\nРаÑшифровка прошла уÑпешно, но корректно проверить цифровую подпиÑÑŒ не удалоÑÑŒ. msgOvl.button.contAnyway=&Ð’ÑÑ‘ равно продолжить signature.verifiedOK=ПодпиÑÑŒ Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %S была уÑпешно проверена signature.verifyFailed=Ðе удалоÑÑŒ проверить подпиÑÑŒ Ð´Ð»Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ %S attachment.noMatchToSignature=Ðе удалоÑÑŒ ÑоотнеÑти вложение '%S' Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ подпиÑи attachment.noMatchFromSignature=Ðе удалоÑÑŒ ÑоотнеÑти файл подпиÑи '%S' Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ keysToExport=Выберите ключи OpenPGP Ð´Ð»Ñ Ð²Ñтавки keysToUse=Выбрать ключ(и) OpenPGP Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ %S pubKey=Открытый ключ Ð´Ð»Ñ %S\n windowLocked=Окно ÑоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñообщений заблокировано; отправка отменена sendUnencrypted=Ошибка инициализации Enigmail.\nОтправить незашифрованную почту? composeSpecifyEmail=Укажите оÑновной Ð°Ð´Ñ€ÐµÑ Ñлектронной почты, который будет иÑпользоватьÑÑ Ð¿Ñ€Ð¸ выборе ключа подпиÑи Ð´Ð»Ñ Ð¸ÑходÑщей почты.\nЕÑли вы оÑтавите поле пуÑтым, Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° будет иÑпользовать Ð°Ð´Ñ€ÐµÑ Ð¸Ð· Ð¿Ð¾Ð»Ñ \\"От\\". sendingHiddenRcpt=Это Ñообщение будет отправлено некоторым корреÑпондентам в виде Ñкрытой копии. ЕÑли Ñто Ñообщение зашифровано, то вы можете Ñкрыть получателей Ñкрытой копии, но пользователи некоторых продуктов (напр. PGP Corp.) не Ñмогут раÑшифровать Ñообщение. Ð£Ñ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ñто, мы рекомендуем не иÑпользовать функцию Ñкрытой копии Ð´Ð»Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñообщений. sendWithHiddenBcc=Скрыть получателей Ñкрытой копии sendWithShownBcc=Обычное шифрование sendingNews=ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ прервана.\n\nЭто Ñообщение не может быть зашифровано, поÑкольку в ÑпиÑке адреÑатов еÑть конференции. Отправьте Ñто Ñообщение без шифрованиÑ. sendToNewsWarning=Предупреждение: вы ÑобираетеÑÑŒ отправить зашифрованное Ñообщение в новоÑтную конференцию.\n\nЭто не приветÑтвуетÑÑ, так как Ñто имеет ÑмыÑл только в том Ñлучае, еÑли вÑе учаÑтники конференции Ñмогут раÑшифровать Ñообщение, то еÑть Ñообщение должно быть зашифровано на ключах вÑех учаÑтников конференции. ПожалуйÑта, отправлÑйте Ñто Ñообщение только еÑли вы точно знаете что делаете.\n\nПродолжить? hasHTML=Предупреждение:\nЭто Ñообщение может Ñодержать HTML, что может привеÑти к ошибкам во Ð²Ñ€ÐµÐ¼Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи. Чтобы избежать Ñтого в будущем, нажимайте на кнопку ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ответа на ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸ÐµÐ¼ SHIFT, еÑли хотите Ñоздать пиÑьмо Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñью.\nЕÑли вы Ñтавите цифровую подпиÑÑŒ по умолчанию, уберите флажок \\"СоÑтавлÑть ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² формате HTML\\", чтобы отключить иÑпользование HTML при Ñоздании Ñообщений Ð´Ð»Ñ Ñтой учетной запиÑи. strippingHTML=Сообщение Ñодержит HTML-форматирование, которое будет потерÑно при преобразовании в обычный текÑÑ‚ Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи. Продолжить? msgCompose.button.sendAnyway=&Ð’ÑÑ‘ равно отправить Ñообщение attachWarning=Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ñто Ñообщение не ÑвлÑÑŽÑ‚ÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸, поÑтому их Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ. Чтобы зашифровать их, Ñохраните их Ñначала как локальные файлы, а затем уже вложите в Ñообщение. Ð’Ñ‹ хотите вÑÑ‘ равно отправить Ñто Ñообщение? quotedPrintableWarn=Ð’Ñ‹ решили иÑпользовать кодирование \\"quoted-printable\\" в иÑходÑщих ÑообщениÑÑ…. Это может привеÑти к ошибкам во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ñшифровки и/или проверки подпиÑи.\nОтключить иÑпользование ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ \\"quoted-printable\\"? minimalLineWrapping=Ð’Ñ‹ решили выравнивать Ñтроки по %S Ñимволов в ширину. Ð”Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸/или подпиÑÑ‹Ð²Ð°Ð½Ð¸Ñ Ñто значение должно быть не менее 68.\nУвеличить ширину Ñтрок до 68 Ñимволов? warning=Предупреждение signIconClicked=Ð’Ñ‹ ÑамоÑтоÑтельно указали, Ñтавить ли подпиÑÑŒ на Ñто Ñообщение. ПоÑтому иÑпользование подпиÑи больше не завиÑит от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ. pgpMime_sMime.dlg.text=Ð’Ñ‹ включили поддержку PGP/MIME и S/MIME. К Ñожалению, невозможно обеÑпечить одновременную работу обоих протоколов. ПожалуйÑта, выберите, хотите ли вы иÑпользовать PGP/MIME или S/MIME. pgpMime_sMime.dlg.pgpMime.button=ИÑпользовать &PGP/MIME pgpMime_sMime.dlg.sMime.button=ИÑпользовать &S/MIME errorKeyUnusable=ÐÐ´Ñ€ÐµÑ Ñлектронной почты или идентификатор ключа '%S' не может быть ÑоотнеÑён Ñ Ð´ÐµÐ¹Ñтвительным, не иÑтекшим ключом OpenPGP.\nПожалуйÑта, убедитеÑÑŒ, что у Ð²Ð°Ñ ÐµÑть дейÑтвительный ключ OpenPGP, и что ваши параметры учётной запиÑи указывают на Ñтот ключ. # note: should end with double newline: sendAborted=ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ прервана.\n\n statPGPMIME=PGP/MIME statSigned=ПОДПИСÐÐО statEncrypted=ЗÐШИФРОВÐÐО statPlain=ÐЕПОДПИСÐÐО и ÐЕЗÐШИФРОВÐÐО offlineSave=Сохранить Ñообщение %S в %S папки \\"ИÑходÑщие\\"? onlineSend=Отправить Ñообщение %S к %S? encryptKeysNote=Замечание: Ñообщение зашифровано Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующего идентификатора пользователÑ/ключа: %S signFailed=Ошибка Enigmail; Ошибка ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ подпиÑи; отправить незашифрованное Ñообщение? msgCompose.button.sendUnencrypted=&Отправить незашифрованное Ñообщение recipientsSelectionHdr=Выберите адреÑатов зашифрованных Ñообщений configureNow=Ð’Ñ‹ ещё не наÑтроили защиту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Enigmail Ð´Ð»Ñ Ñтой учетной запиÑи. Сделать Ñто ÑейчаÑ? # should not be used anymore: encryptYes=Сообщение будет зашифровано encryptNo=Сообщение не будет зашифровано # should not be used anymore: signYes=Сообщение будет подпиÑано signNo=Сообщение не будет подпиÑано # should not be used anymore pgpmimeYes=ИÑпользуетÑÑ PGP/MIME pgpmimeNo=ИÑпользуетÑÑ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ PGP rulesConflict=Обнаружены конфликтующие правила Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ \n%S \n\nОтправить Ñообщение Ñ Ñтими уÑтановками? msgCompose.button.configure=&ÐаÑтроить msgCompose.button.send=&Отправить Ñообщение msgCompose.button.save=&Сохранить Ñообщение # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ подпиÑи необходим открытый ключ %S clickDecrypt=; щелкните по кнопке раÑшифровки clickDecryptRetry=; щелкните по кнопке раÑшифровки, чтобы попробовать Ñнова msgPart=ЧаÑть ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ %S msgSigned=подпиÑана msgEncrypted=зашифрована msgSignedAndEnc=подпиÑана и зашифрована unverifiedSig=ÐÐµÐ¿Ñ€Ð¾Ð²ÐµÑ€ÐµÐ½Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ incompleteDecrypt=РаÑшифровка не завершена needKey=Ошибка - Ð´Ð»Ñ Ñ€Ð°Ñшифровки нужен закрытый ключ failedDecrypt=Ошибка - ошибка раÑшифровки badPhrase=Ошибка - неверный пароль failedDecryptVerify=Ошибка - ошибка раÑшифровки или проверки дейÑтвительноÑти viewInfo=; выберите \\"Вид\\" > \\"Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ защите ÑообщениÑ\\" decryptedMsg=РаÑшифрованное Ñообщение decryptedMsgWithFormatError=РаÑшифрованное Ñообщение (воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ñлектронного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² формате PGP, вероÑтно повреждённого уÑтаревшей верÑией Ñервера Exchange, форматирование текÑта может быть нарушено) locateGpg=Ðайти программу GnuPG invalidGpgPath=ИÑполнÑемый файл GnuPG не найден по указанному пути. ПоÑтому Enigmail будет отключён до тех пор, пока вы не измените путь или пока вы не перезапуÑтите приложение. warningsAreReset=Ð’Ñе наÑтройки Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¹ были Ñброшены. prefs.gpgFound=GnuPG был найден в каталоге %S prefs.gpgNotFound=Ðе могу найти GnuPG prefs.warnAskNever=Предупреждение: Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ñтой опции приведёт к отправке незашифрованных Ñообщений без выдачи каких-либо уведомлений в Ñлучае, еÑли Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из получателей нет ключа -- Enigmail не проинформирует ваÑ, еÑли Ñто ÑлучитÑÑ! prefs.warnIdleTimeForUnknownAgent=Ошибка Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº gpg-agent. Возможно, вы иÑпользуете Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ð¹ защиты, например gnome-keyring или seahorse-agent. К Ñожалению, Enigmail не может управлÑть временем ввода Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ приложениÑ, поÑтому ÑоответÑтвующие наÑтройки не будут применены. prefEnigmail.oneKeyserverOnly=Ошибка - вы можете указать только один Ñервер ключей Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкой загрузки недоÑтающих ключей OpenPGP. enterAdminPin=ПожалуйÑта введите PIN-код админиÑтратора вашей Ñмарт-карты enterCardPin=ПожалуйÑта введите PIN-код вашей Ñмарт-карты notInit=Ошибка - Ñлужба Enigmail ещё не инициализирована badCommand=Ошибка - ошибка ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ cmdLine=ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока и вывод: notRequired=Ошибка - шифрование не требуетÑÑ notComplete=Ошибка - ещё идет Ñоздание ключей invalidEmail=Ошибка - недейÑтвительный адреÑ(а) Ñлектронной почты noPassphrase=Ошибка - не указан пароль noPGPblock=Ошибка - не найден дейÑтвительный защищённый блок данных OpenPGP unverifiedReply=ЧаÑть ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ð¾Ñ‚Ñтупом была изменена (возможно, цитата из предыдущего пиÑьма) sigMismatch=Ошибка - неÑовпадение подпиÑи cantImport=Ошибка импорта открытого ключа\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Смарт-карта %S, Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð°Ñ Ð² вашем Ñчитывателе, не может быть иÑпользована Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñтого ÑообщениÑ.\nПожалуйÑта, вÑтавьте вашу Ñмарт-карту %S и повторите операцию. sc.insertCard=Ð”Ð»Ñ Ñтой операции требуетÑÑ Ð²Ð°ÑˆÐ° Ñмарт-карта %S.\nПожалуйÑта, вÑтавьте требуемую Ñмарт-карту и повторите операцию. sc.removeCard=Ð”Ð»Ñ Ñтой операции требуетÑÑ, чтобы Ñмарт-карты в Ñчитывателе не было.\nПожалуйÑта, выньте вашу Ñмарт-карту и повторите операцию. sc.noCardAvailable=При обращении к Ñчитывателю Ñмарт-карта не была найдена\nÐ’Ñтавьте Ñмарт-карту и попытайтеÑÑŒ Ñнова. sc.noReaderAvailable=Считыватель Ñмарт-карт не найден\nПодÑоедините Ñчитыватель Ñмарт-карт, вÑтавьте в него Ñмарт-карту и попытайтеÑÑŒ Ñнова. gpgNotFound=Ðевозможно найти программу GnuPG '%S'.\nУбедитеÑÑŒ, что в наÑтройках Enigmail указан правильный путь к иÑполнÑемому файлу GnuPG. gpgNotInPath=Ðевозможно найти GnuPG, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½ÑƒÑŽ PATH.\nУбедитеÑÑŒ, что в наÑтройках Enigmail указан правильный путь к иÑполнÑемому файлу GnuPG. gpgAgentNotStarted=Ошибка запуÑка программы gpg-agent, необходимой Ð´Ð»Ñ ÑƒÑтановленного у Ð²Ð°Ñ GnuPG верÑии %S. prefUntrusted=ÐЕТ ДОВЕРИЯ prefRevoked=КЛЮЧ ОТОЗВÐÐ prefExpiredKey=КЛЮЧ ИСТÐК prefExpired=ИСТÐК prefGood=Ð¥Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑÑŒ от %S prefBad=ПЛОХÐЯ подпиÑÑŒ от %S failCancel=Ошибка - получение ключа отменено пользователем failNoServer=Ошибка - не указан Ñервер ключей failNoID=Ошибка - не указан идентификатор Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° failKeyExtract=Ошибка - ошибка Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° notFirstBlock=Ошибка - первый блок OpenPGP не ÑвлÑетÑÑ Ð±Ð»Ð¾ÐºÐ¾Ð¼ открытого ключа importKeyConfirm=Импортировать открытые ключ(и), вложенные в Ñообщение? failKeyImport=Ошибка - ошибка импорта ключа fileWriteFailed=Ошибка при запиÑи файла %S importKey=Импорт открытого ключа %S Ñ Ñервера ключей: uploadKey=Отправить открытый ключ %S на Ñервер ключей: keyId=Идентификатор ключа keyAndSigDate=Идентификатор ключа: 0x%S / ПодпиÑан: %S keyFpr=Отпечаток ключа: %S noEmailProvided=Ð’Ñ‹ не указали Ð°Ð´Ñ€ÐµÑ Ñл. почты! keyAlreadySigned=Ключ уже подпиÑан, вы не можете подпиÑать его дважды. gnupg.invalidKey.desc=Ключ %S не найден или недейÑтвителен. (Суб-)ключ возможно иÑтёк. selKeyExpired=Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð¸Ñтек %S createdHeader=Создана atLeastOneKey=Ключ не выбран! Вам нужно выбрать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один ключ. fewerKeysThanRecipients=КоличеÑтво выбранных вами ключей меньше количеÑтва получателей. Ð’Ñ‹ уверены что ÑпиÑок ключей Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¾Ð½? userSel.button.goBack=Выбрать ещё ключи userSel.secretKeySel.title=Выберите закрытый ключ OpenPGP Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñи ваших Ñообщений # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Отправить позже # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Примечание: PGP/MIME поддерживаетÑÑ Ð½Ðµ вÑеми почтовыми клиентами! Ð”Ð»Ñ Windows Ñто Mozilla/Thunderbird, Sylpheed, Pegasus и Mulberry; Ð´Ð»Ñ Linux/UNIX и Mac OS X - наиболее популÑрные почтовые программы. ЕÑли вы не уверены, что адреÑат пользуетÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из перечиÑленных клиентов, выберите вариант %S. first=первый second=второй # Strings used in am-enigprefs.js encryptKeyHeader=Выберите OpenPGP-ключ Ð´Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ identityName=Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Ð’Ñ‹ выбрали иÑпользование шифрованиÑ, но не выбрали ключ. Ð”Ð»Ñ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ñ… Ñообщений поÑылаемых на %S, необходимо выбрать один или неÑколько дейÑтвительных ключей из ÑпиÑка ключей. Ð’Ñ‹ хотите отключить шифрование Ð´Ð»Ñ %S? noKeyToUse=(нет - нет шифрованиÑ) noEmptyRule=Правило не может быть пуÑтым! Укажите почтовый Ð°Ð´Ñ€ÐµÑ Ð² ÑоответÑтвующем поле правила. invalidAddress=Ð’Ñ‹ ввели адреÑ(а) Ñлектронной почты в неверном формате. ÐÐµÐ»ÑŒÐ·Ñ Ð²Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ имена адреÑатов. Можно вводить только их почтовые адреÑа. Пример: \nÐеправильно: Some Name \nПравильно: some.name@address.net noCurlyBrackets=Фигурные Ñкобки {} имеют Ñпециальное назначение и не могут быть иÑпользованы в адреÑах Ñл. почты. ЕÑли вы хотите изменить работу данного правила, иÑпользуйте наÑтройку 'Применить правило еÑли почтовый Ð°Ð´Ñ€ÐµÑ Ð°Ð´Ñ€ÐµÑата'. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации нажмите кнопку Help. # Strings used in enigmailRulesEditor.js never=Ðикогда always=Ð’Ñегда possible=Возможно deleteRule=Удалить выделенное правило? nextRcpt=(Следующий получатель) negateRule=Ðет addKeyToRule=Добавить ключ %S (%S) к правилу Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÐµÐ»Ñ # Strings used in enigmailSearchKey.js needOnline=Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð²Ð°Ð¼Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупна в автономном режиме. Перейдите в режим Ð¿Ð¾ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñети и попробуйте Ñнова. protocolNotSupported=Выбранный вами протокол '%S://' не поддерживает закачку ключей OpenPGP. gpgkeysDisabled=Возможно поможет включение опции 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Ðе могу ÑоединитÑÑ Ñ Ñервером ключей %S. keyDownloadFailed=Ðе удалоÑÑŒ Ñкачать ключ Ñ Ñервера ключей. Сообщение: \n%S internalError=Произошла внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Ключи не могут быть Ñкачаны или импортированы. noKeyFound=Ðевозможно найти ни одного ключа ÑоответÑтвующего заданным критериÑм поиÑка. Заметьте, что идентификатор ключа должен иметь Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ \\"0x\\" (напр. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Ðе удалоÑÑŒ найти или Ñкачать ключ Ñ Ñервера ключей: gpgkeys_%S не может быть выполнен. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Ðе удалоÑÑŒ уÑтановить уровень Ð´Ð¾Ð²ÐµÑ€Ð¸Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° к ключу # Strings in enigmailSignKeyDlg.js signKeyFailed=Ðе удалоÑÑŒ подпиÑать ключ alreadySigned.label=Примечание: ключ %S уже подпиÑан выбранным закрытым ключом. partlySigned.label=Примечание: некоторые ID ключа %S уже были подпиÑаны выбранным Ñекретным ключом. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Загрузка ключей, пожалуйÑта подождите ... keyValid.unknown=неизвеÑтен keyValid.invalid=недейÑтвителен keyValid.disabled=отключен keyValid.revoked=отозван keyValid.expired=проÑрочен keyValid.noSubkey=неверный подключ keyTrust.untrusted=не доверÑÑŽ keyTrust.marginal=минимальное keyTrust.full=доверÑÑŽ keyTrust.ultimate=абÑолютное keyTrust.group=(группа) keyType.public=pub keyType.publicAndSec=pub/sec keyMan.enableKey=Включить ключ keyMan.disableKey=Отключить ключ userAtt.photo=Ðтрибут Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (картинка JPEG) asciiArmorFile=ASCII Защищённые файлы (*.asc) importKeyFile=Импорт файла ключа OpenPGP gnupgFile=Файлы GnuPG saveRevokeCertAs=Создать и Ñохранить Ñертификат отзыва revokeCertOK=Сертификат отзыва был уÑпешно Ñоздан. Ð’Ñ‹ можете иÑпользовать его, чтобы отозвать ваш открытый ключ, еÑли, например, вы потерÑли Ñвой закрытый ключ. Ð”Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐµÐ¹ безопаÑноÑти перенеÑите его на ноÑитель (например на CD или диÑкету) и храните в надежном меÑте. ЕÑли кто-либо ещё получит доÑтуп к нему, он может Ñделать ваш ключ недейÑтвительным. revokeCertFailed=Сертификат отзыва не может быть Ñоздан. addUidOK=Идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½ уÑпешно addUidFailed=Добавление идентификатора Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ удалоÑÑŒ noKeySelected=Ð’Ñ‹ должны выбрать по меньшей мере один ключ, чтобы выполнить выбранную вами операцию exportToFile=ЭкÑпортировать открытый ключ в файл exportSecretKey=Ð’Ñ‹ хотите включить закрытый ключ в ÑохранÑемый ключевой файл OpenPGP? saveKeysOK=Ключи были уÑпешно Ñохранены saveKeysFailed=Сохранение ключей не удалоÑÑŒ importKeysFailed=Импорт ключей не удалÑÑ enableKeyFailed=Включение/отключение ключей не удалоÑÑŒ specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=ÑкÑпортированные-открытые-ключи defaultPubSecKeyFilename=ÑкÑпортированные-открытые-и-закрытые-ключи noSecretKeys=Ðе найден ни один закрытый ключ. \n\nÐ’Ñ‹ хотите Ñгенерировать ÑÐµÐ¹Ñ‡Ð°Ñ Ð²Ð°Ñˆ ÑобÑтвенный ключ? sendKeysOk=Ключи отправлены уÑпешно sendKeysFailed=Отправка ключей не удалаÑÑŒ receiveKeysOk=Ключ(и) были уÑпешно обновлены receiveKeysFailed=Загрузка ключей не удалаÑÑŒ importFromClip=Ð’Ñ‹ хотите импортировать ключ(и) из буфера обмена? copyToClipbrdFailed=Ðе могу Ñкопировать выделенные ключ(и) в буфер обмена. copyToClipbrdOK=Ключ(и) Ñкопированы в буфер обмена deleteSecretKey=ПРЕДУПРЕЖДЕÐИЕ: Ð’Ñ‹ ÑобираетеÑÑŒ удалить закрытый ключ!\nЕÑли вы удалите ваш закрытый ключ, вы больше не Ñможете раÑшифровывать ни одного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ на Ñтот ключ и не Ñможете отозвать Ñвой ключ\n\nÐ’Ñ‹ дейÑтвительно хотите удалить ОБРключа, и закрытый и открытый\n'%S'? deleteMix=ПРЕДУПРЕЖДЕÐИЕ: Ð’Ñ‹ ÑобираетеÑÑŒ удалить закрытые ключи! ЕÑли вы удалите ваш закрытый ключ, вы не Ñможете раÑшифровать ни одного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ на Ñтот ключ.\n\nÐ’Ñ‹ дейÑтвительно хотите удалить ОБРключа, и выбранный закрытый и открытый? deletePubKey=Ð’Ñ‹ хотите удалить открытый ключ\n'%S'? deleteSelectedPubKey=Ð’Ñ‹ дейÑтвительно хотите удалить открытые ключи? deleteKeyFailed=Ключ не может быть удалён. revokeKeyOk=Ключ был отозван. ЕÑли ваш ключ вÑе ещё доÑтупен на Ñервере ключей, рекомендуетÑÑ Ð¿Ð¾Ð´Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ его заново, чтобы другие увидели, что он был отозван. revokeKeyFailed=Ключ не может быть отозван. refreshAllQuestion=Ð’Ñ‹ не выбрали ни одного ключа. Ð’Ñ‹ хотите обновить ВСЕ ключи? refreshKey.warn=Предупреждение: в завиÑимоÑти от чиÑла ключей и ÑкороÑти ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ðµ вÑех ключей может занÑть довольно значительное времÑ! downloadContactsKeys.warn=Внимание: в завиÑимоÑти от количеÑтва контактов и ÑкороÑти ÑоединениÑ, загрузка вÑех ключей может занÑть много времени! downloadContactsKeys.importFrom=Импортировать контакты из адреÑной книги '%S'? keyMan.button.exportSecKey=ЭкÑпорт &закрытых ключей keyMan.button.exportPubKey=ЭкÑпорт только &открытых ключей keyMan.button.import=&Импорт keyMan.button.refreshAll=&Обновить вÑе ключи keyMan.button.revokeKey=&Отозвать ключ keyMan.button.skip=&ПропуÑтить ключ keylist.noOtherUids=Других идентификаторов нет keylist.hasOtherUids=Также извеÑтный как keylist.noPhotos=Ðет фотографии keylist.hasPhotos=Фотографии keyMan.addphoto.filepicker.title=Выберите фотографию Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ keyMan.addphoto.warnLargeFile=Размер выбранного вами файла превышает 25 КБ.\nÐе рекомендуетÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»Ñть очень большие файлы, так как Ñто приводит к Ñозданию очень больших ключей. keyMan.addphoto.noJpegFile=Выбранный файл не похож на файл JPEG. ПожалуйÑта, выберите другой файл. keyMan.addphoto.failed=Ðе удалоÑÑŒ добавить фото. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Смена первичного идентификатора Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ удалаÑÑŒ changePrimUidOK=Первичный идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÑпешно Ñменён deleteUidFailed=Удаление идентификатора Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S не удалоÑÑŒ deleteUidOK=Идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S уÑпешно удалён revokeUidFailed=Отзыв идентификатора Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S не удалÑÑ revokeUidOK=Идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S был отозван уÑпешно. ЕÑли ваш ключ вÑе ещё доÑтупен на Ñервере ключей, рекомендуетÑÑ Ð¿Ð¾Ð´Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ его заново, чтобы другие увидели что он был отозван. revokeUidQuestion=Ð’Ñ‹ дейÑтвительно хотите отозвать идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S? deleteUidQuestion=Ð’Ñ‹ дейÑтвительно хотите удалить идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %S?\n\n\nЗамечание: ЕÑли вы подгрузили ваш открытый ключ на Ñервер ключей, удаление идентификатора Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ не изменит. Ð’ Ñтом Ñлучае вы должны иÑпользовать 'Отзыв идентификатора пользователÑ'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=открытый ключ keyTypePrimary=первичный ключ keyTypeSubkey=подключ keyTypePair=ÐºÐ»ÑŽÑ‡ÐµÐ²Ð°Ñ Ð¿Ð°Ñ€Ð° keyExpiryNever=не иÑтекает keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Шифрование keyUsageSign=ПодпиÑÑŒ keyUsageCertify=Заверение keyUsageAuthentication=Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ # Strings in enigmailGenCardKey.xul keygen.started=Подождите, пока идет процеÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° .... keygen.completed=Ключ Ñоздан. Ðовый идентификатор ключа: 0x%S keygen.keyBackup=Ð ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ ÐºÐ»ÑŽÑ‡Ð° Ñохранена в %S keygen.passRequired=Укажите пароль, еÑли вы хотите Ñоздать резервную копию ключа (она будет Ñохранена не на Ñмарт-карте). # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN-коды, введённые вами, не Ñовпадают; пожалуйÑта введите их заново cardPin.minLength=PIN-код должен ÑоÑтоÑть по меньшей мере из %S букв или цифр cardPin.processFailed=Ðе удалоÑÑŒ Ñменить PIN-код # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Обновление ключей, пожалуйÑта подождите ... keyserverProgress.uploading=Загрузка ключей на Ñервер, пожалуйÑта подождите ... keyserverTitle.refreshing=Обновление ключей keyserverTitle.uploading=Загрузка ключей на Ñервер # Strings in enigmailSetupWizard passphrase.min8keys=Ваш пароль должен ÑоÑтоÑть по меньшей мере из 8 Ñимволов! setupWizard.reallyCancel=Ð’Ñ‹ дейÑтвительно хотите закрыть маÑтер наÑтройки Enigmail? setupWizard.invalidGpg=Выбранный файл не ÑвлÑетÑÑ Ð¸Ñполнимым файлом GnuPG. ПожалуйÑта, попробуйте другой файл. setupWizard.specifyFile=Чтобы продолжить, вы должны по меньшей мере указать файл открытого ключа. setupWizard.installFailed=Похоже, уÑтановка прошла неудачно. ПожалуйÑта, переуÑтановите приложение или уÑтановите GnuPG вручную и укажите её меÑтоположение Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кнопки "Обзор". setupWizard.downloadForbidden=Ради вашей же безопаÑноÑти мы не можем загрузить GnuPG. ПожалуйÑта, Ñкачайте его ÑамоÑтоÑтельно: http://www.gnupg.org/ setupWizard.downloadImpossible=Ð’ наÑтоÑщий момент мы не можем загрузить GnuPG. ПожалуйÑта, попробуйте ещё раз позже или же Ñкачайте его ÑамоÑтоÑтельно: http://www.gnupg.org/ setupWizard.hashSumError=МаÑтер не может проверить целоÑтноÑть загруженного файла. Возможно, он был повреждён или кем-то подменён. Ð’Ñ‹ хотите продолжить его уÑтановку? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ GnuPG произошла ошибка. За дополнительной информацией обращайтеÑÑŒ, пожалуйÑта, к журналу ошибок. installGnuPG.installFailed=Во Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановки GnuPG произошла ошибка. За дополнительной информацией обращайтеÑÑŒ, пожалуйÑта, к журналу ошибок. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Ð’Ñ‹ должны ввеÑти Ð¸Ð¼Ñ Ð¸ Ð°Ð´Ñ€ÐµÑ Ñлектронной почты addUidDlg.nameMinLengthError=Длина имени должна быть не менее 5 Ñимволов addUidDlg.invalidEmailError=Ð’Ñ‹ должны указать корректный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты addUidDlg.commentError=Скобки в комментариÑÑ… не разрешены # Strings in enigmailCardDetails.js Carddetails.NoASCII=Смарткарты OpenPGP поддерживают только ASCII Ñимволы в полÑÑ… Firstname/Name # network error types errorType.SecurityCertificate=Сертификат безопаÑноÑти, предоÑтавленный веб-ÑервиÑом, ÑвлÑетÑÑ Ð½ÐµÐ´ÐµÐ¹Ñтвительным. errorType.SecurityProtocol=Протокол безопаÑноÑти, иÑпользуемый веб-ÑервиÑом, не был опознан. errorType.Network=Произошла ошибка Ñетевого взаимодейÑÑ‚Ð²Ð¸Ñ enigmail/lang/ru/help/000077500000000000000000000000001266701624400151525ustar00rootroot00000000000000enigmail/lang/ru/help/compose.html000066400000000000000000000100751266701624400175100ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/ru/help/editRcptRule.html000066400000000000000000000115571266701624400204570ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/ru/help/initError.html000066400000000000000000000045361266701624400200250ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/ru/help/messenger.html000066400000000000000000000101211266701624400200230ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/ru/help/rulesEditor.html000066400000000000000000000060311266701624400203410ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/ru/help/sendingPrefs.html000066400000000000000000000047771266701624400205060ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/sk/000077500000000000000000000000001266701624400142115ustar00rootroot00000000000000enigmail/lang/sk/am-enigprefs.properties000066400000000000000000000001211266701624400206760ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Security enigmail/lang/sk/enigmail.dtd000066400000000000000000001040321266701624400164730ustar00rootroot00000000000000 Upozornenie: tvorba kľúÄa môže trvaÅ¥ niekoľko minút. NeukonÄujte aplikáciu, pokiaľ prebieha vytváranie kľúÄa. Proces sa urýchli a zlepší, pokiaľ budete aktívne pracovaÅ¥ s prehliadaÄom a Äasto pristupovaÅ¥ k harddisku. Na to, že je kÄ¾ÃºÄ vytvorený, budete upozornený/á."> ' je nesprávne"> Upozornenie: Vytváranie kľúÄa môže trvaÅ¥ niekoľko minút. NeukonÄujte aplikáciu, pokiaľ prebieha vytváranie kľúÄov. Na to, že je kÄ¾ÃºÄ vytvorený, budete upozornený/a."> Upozornenie: Enigmail bude vždy overovaÅ¥ podpisy v e-mailoch vÅ¡etkých identít a úÄtov bez ohľadu na to, Äi je to v nich povolené"> VÄaka Vám za používanie Enigmail."> enigmail/lang/sk/enigmail.properties000066400000000000000000000662101266701624400201210ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Upozornenie Enigmail enigConfirm=Potvrdenie Enigmail enigError=Chyba Enigmail enigPrompt=Pripomenutie Enigmail dlgYes=Ãn&o dlgNo=&Nie dlgKeepSetting=PamätaÅ¥ si odpoveÄ a nepýtaÅ¥ sa znova dlgNoPrompt=NezobrazovaÅ¥ znova tento dialóg dlg.button.delete=&OdstrániÅ¥/ZmazaÅ¥ dlg.button.cancel=&Späť dlg.button.close=&ZatvoriÅ¥ dlg.button.continue=Pok&raÄovaÅ¥ dlg.button.skip=&PreskoÄiÅ¥ dlg.button.view=&ZobraziÅ¥ repeatPrefix=\n\nToto upozornenie sa zopakuje %S repeatSuffixSingular=krát. repeatSuffixPlural=krát. noRepeat=\n\nToto upozornenie sa už nezopakuje, pokiaľ nebudete aktualizovaÅ¥ Enigmail. pgpNotSupported=Zdá sa, že používate Enigmail spoloÄne s PGP 6.x\n\nPGP 6.x má bohužiaľ niekoľko nedostatkov, kvôli ktorým nie je možné zaistiÅ¥ správny chod rozšírenia Enigmail. Preto taktiež Enigmail nepodporuje viacero PGP 6.x; radÅ¡ej prosím používajte GnuPG (GPG).\n\nAk potrebujete pomoc s prechodom na GnuPG, preÄítajte si sekciu Help na domovskej stránke Enigmailu. passphraseCleared=Heslo bolo zmazané. noPhotoAvailable=Foto nie je k dispozícii debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Cesta k fotke '%S' nie je Äitateľná # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Táto nová verzia Enigmail ma veľa podstatných zmien v nastaveniach. Pokúsili sme sa previesÅ¥ staré nastavenia do tejto novej verzia. Akokoľvek, nemôžme byt pripravený na vÅ¡etky prípady. Prosím skontrolujte výsledok prevodu nových nastavení. enigmailCommon.checkPreferences=Skontroluj Nastavenia... usingVersion=Spustené rozšírenie Enigmail verzie %S usingAgent=K Å¡ifrovaniu a deÅ¡ifrovaniu je použité GnuPG, ktoré je umiestené v ceste %S %S agentError=CHYBA: zlyhal prístup k službe Enigmime! accessError=Chyba v prístupe k službám rozšírenia Enigmail onlyGPG=Generovanie kľúÄov je možné iba s GnuPG (nie s PGP)! keygenComplete=Generovanie kľúÄov je dokonÄené! Identita <%S> bude použitá k podpisovaniu. revokeCertRecommended=Veľmi Vám doporuÄujeme vytvoriÅ¥ revokaÄný certifikát pre Váš kľúÄ. Tento certifikát môže byÅ¥ použitý pre zneplatnenie kľúÄa, napr. keÄ súkromný kÄ¾ÃºÄ stratíte alebo bude kÄ¾ÃºÄ kompromitovaný. Prajete si teraz vytvoriÅ¥ revokaÄný certifikát? keyMan.button.generateCert=&Generovanie certifikátu genCompleteNoSign=Generovanie kľúÄa je dokonÄené! genGoing=Generovanie kľúÄa už prebieha! passNoMatch=Heslo nesúhlasí, zadajte ho prosím znovu passCheckBox=Prekontrolujte zaÅ¡krtnite, ak nastavujete kÄ¾ÃºÄ bez hesla passUserName=Prosím Å¡pecifikujte meno užívateľa pre túto identitu passSpaceProblem=Z technických dôvodov, VaÅ¡e heslo nemôže zaÄínaÅ¥, ani konÄiÅ¥ medzerou. changePassFailed=Zmena hesla zlyhala. keyConfirm=VytvoriÅ¥ verejný a súkromný kÄ¾ÃºÄ pre '%S'? keyMan.button.generateKey=&VytvoriÅ¥ kÄ¾ÃºÄ keyAbort=PreruÅ¡iÅ¥ vytváranie kľúÄa? keyMan.button.generateKeyAbort=&PreruÅ¡iÅ¥ vytváranie kľúÄa keyMan.button.generateKeyContinue=&PokraÄovaÅ¥ vo vytváraní kľúÄa expiryTooLong=Nemôžete vytváraÅ¥ kľúÄ, ktorý expiruje viac než za 100 rokov. expiryTooLongShorter=Nemôžte vytvoriÅ¥ kľúÄ, ktorý expiruje za viac ako 90 rokov. expiryTooShort=Váš kÄ¾ÃºÄ musí byÅ¥ platný minimálne jeden deň. dsaSizeLimit=DSA podpisové kľúÄe sú limitované na 3072 bitov. VeľkosÅ¥ kľúÄa bude preto zredukovaná. keyGenFailed=Vytvorenie kľúÄa zlyhalo. Podrobnosti zistíte v konzole Enigmail (ponuka Enigmail > Ladenie Enigmail). setKeyExpirationDateFailed=Doba expirácie sa nemôže zmeniÅ¥ # Strings in enigmailMessengerOverlay.js securityInfo=Informácie zabezpeÄenia Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Prílohy k tejto správe neboli podpísané alebo zaÅ¡ifrované*\n\n possiblyPgpMime=Táto správa je možno zaÅ¡ifrovaná alebo podpísaná PGP/MIME; overíte si to po kliknutí na tlaÄítko "DeÅ¡ifrovaÅ¥" noDecrypted=Žiadna deÅ¡ifrovaná správa na uloženie!\nPoužite príkaz "UložiÅ¥" z menu Súbor noMessage=Žiadna správa k uloženiu useButton=K rozÅ¡ifrovaniu správy prosím kliknite na tlaÄidlo "DeÅ¡ifrovaÅ¥" saveHeader=Enigmail: UložiÅ¥ deÅ¡ifrovanú správu saveAttachmentHeader=Enigmail: UložiÅ¥ deÅ¡ifrovanú prílohu noTempDir=Nemôžem nájsÅ¥ doÄasný adresár na zápis\nNastavte premennú prostredia systému TEMP prosím attachmentPgpKey=Zdá sa, že príloha '%S', ktorú otvárate, je súbor s kľúÄom OpenPGP.\n\nKliknite na "Import" pre uloženie kľúÄa alebo na "ZobraziÅ¥", aby ste si pozreli obsah súboru v okne prehliadaÄa. beginPgpPart=********* *ZAÄŒIATOK Å IFROVANEJ alebo PODPÃSANEJ ÄŒASTI* ********* endPgpPart=********** *KONIEC Å IFROVANEJ alebo PODPÃSANEJ ÄŒASTI* ********** notePartEncrypted=Enigmail: *ÄŒasÅ¥ správy nebola podpísaná alebo deÅ¡ifrovaná* noteCutMessage=Enigmail: *Bol nájdený mnohonásobný blok správ -- deÅ¡ifrovanie/overenie zruÅ¡ené* decryptOkNoSig=Upozornenie\n\nDeÅ¡ifrovanie bolo úspeÅ¡né, ale podpis nemohol byÅ¥ správne overený msgOvl.button.contAnyway=&Prajete si aj tak pokraÄovaÅ¥? signature.verifiedOK=Podpis pre prílohu %S bol úspeÅ¡ne overený signature.verifyFailed=Signatúra pre prílohu %S nemôže byÅ¥ overená attachment.noMatchToSignature=Nemôžem priradiÅ¥ prílohu '%S' k podpisovému súboru attachment.noMatchFromSignature=Nemôžem priradiÅ¥ podpisový súbor '%S' k prílohe keysToExport=VybraÅ¥ kľúÄe OpenPGP k vloženiu keysToUse=VybraÅ¥ kľúÄ/e OpenPGP pre použitie s %S pubKey=Verejný kÄ¾ÃºÄ pre %Sn windowLocked=Okno vytvorenia správy je uzamknuté; odosielanie zruÅ¡ené sendUnencrypted=Chyba inicializácie Enigmailu.\nOdoslaÅ¥ správu nezaÅ¡ifrovanú? composeSpecifyEmail=UrÄite prosím svoju hlavnú e-mailovú adresu, ktorá bude vybraná k podpisovaniu odchádzajúcich správ.\n Ak ju nevyplníte, bude pre výber kľúÄa k podpisu použitá adresa odosielateľa. sendingHiddenRcpt=Tato správa obsahuje príjemcu BCC (skrytá kópia). Ak je takáto správa zaÅ¡ifrovaná, je možné skryÅ¥ BCC príjemcu, ale užívatelia niektorých produktov (napr. PGP Corp.) nebudú môcÅ¥ správu deÅ¡ifrovaÅ¥. Preto nedoporuÄujeme používaÅ¥ BCC u Å¡ifrovaných správ. sendWithHiddenBcc=SkryÅ¥ príjemcu BCC sendWithShownBcc=Å ifrovaÅ¥ normálne sendingNews=Odosielanie Å¡ifrovanej správy zlyhalo.\n\nTáto správa nemôže byÅ¥ Å¡ifrovaná, pretože obsahuje adresáta z diskusnej skupiny. PoÅ¡lite prosím správu bez Å¡ifrovania. sendToNewsWarning=Pozor: Snažíte sa poslaÅ¥ zaÅ¡ifrovaný email do diskusnej skupiny.\n\nOd toho odradzujeme, pretože to má zmysel iba v prípade, že vÅ¡etci Älenovia skupiny sú schopní email rozÅ¡ifrovaÅ¥. Správa musí byÅ¥ Å¡ifrovaná pomocou kľúÄov vÅ¡etkých úÄastníkov skupiny. Prosím, poÅ¡lite túto správu, iba pokiaľ presne viete, Äo robíte.\n\nPokraÄovaÅ¥? hasHTML=HTML e-mail - varovanie:\nSpráva zrejme obsahuje kód HTML, ktorý môže spôsobiÅ¥ chybu pri podpisovaní alebo Å¡ifrovaní. Tejto chybe pri podpisovaní emailu se vyhnete, keÄ stlaÄíte klávesu SHIFT pri kliknutí na tlaÄítko 'VytvoriÅ¥ správu' alebo 'OdpovedaÅ¥'.\nAk vždy správy podpisujete, mali by ste radÅ¡ej trvale zruÅ¡iÅ¥ 'Vytváranie správ v HTML' u tohto úÄtu. (Pozn. prekl.: alebo odosielajte správy s využitím PGP/MIME, ak je to možné, tj. ak príjemca používa poÅ¡tového klienta, ktorý PGP/MIME podporuje.) strippingHTML=Správa obsahuje kód HTML, ktorý bude pri konverzii do jednoduchého textu pri podpisovaní alebo Å¡ifrovaní stratený. Prajete si vykonaÅ¥ konverziu? msgCompose.button.sendAnyway=UrÄite &odoslaÅ¥ správu attachWarning=Prílohy k tejto správe nie sú míestne a nemôžu byÅ¥ teda Å¡ifrované. Prílohu je treba k zaÅ¡ifrovaniu najprv uložiÅ¥ ako miestny súbor. Prajete si aj tak pokraÄovaÅ¥ Äalej? quotedPrintableWarn=Pre odosielanie správ je povolené kódovanie 'quoted-printable', to môže spôsobiÅ¥ nesprávne deÅ¡ifrovanie a/lebo overenie vaÅ¡ej správy.n Prajete si vypnúť odosielanie správ v 'quoted-printable'? minimalLineWrapping=Máte nastavené zalamovanie riadkov na %S znakov. Pre správne Å¡ifrovanie a/alebo podpisovanie musí byÅ¥ táto hodnota najmenej 68.\nPrajete si teraz zmeniÅ¥ zalamovanie riadkov na 68 znakov? warning=Pozor signIconClicked=RuÄne ste zmenil/a podpisovanie. Pri vytváraní tejto správy preto (de)aktivácia podpisu nezávisí na (de)aktivácii Å¡ifrovania. pgpMime_sMime.dlg.text=Povolili ste PGP/MIME a S/MIME naraz. NaneÅ¡tastie nie je možné podporovaÅ¥ oba protokoly naraz. Prosím oznaÄte Äi chcete použiÅ¥ PGP/MIME alebo S/MIME. pgpMime_sMime.dlg.pgpMime.button=Použi &PGP/MIME pgpMime_sMime.dlg.sMime.button=Použi &S/MIME errorKeyUnusable=Emailová adresa alebo kÄ¾ÃºÄ ID '%S' nemôže byÅ¥ priradený k správnemu, neexpirovanému OpenPGP kľúÄu.\nProsím uistite sa, že máte platný OpenPGP kľúÄ, a VaÅ¡e nastavenia úÄtu smerujú k tomu kľúÄu. # note: should end with double newline: sendAborted=Odosielanie správy sa nepodarilo.\n\n statPGPMIME=PGP/MIME statSigned=PODPÃSANà statEncrypted=Å IFROVANà statPlain=NEPODPÃSANà a NEZAÅ IFROVANà offlineSave=UložiÅ¥ %S správu do %S do zložky konceptov? onlineSend=OdoslaÅ¥ správu %S na %S? encryptKeysNote=Upozornenie: správa je Å¡ifrovaná s nasledujúcim užívateľským ID / kľúÄom: %S signFailed=Chyba Enigmail; Å ifrovanie alebo podpisovanie zlyhalo; odoslaÅ¥ správu nezaÅ¡ifrovanú? msgCompose.button.sendUnencrypted=&OdoslaÅ¥ nezaÅ¡ifrovanú správu recipientsSelectionHdr=UrÄiÅ¥ adresátov pre Å¡ifrovanie configureNow=Nemáte eÅ¡te nastavené zabezpeÄenie Enigmail pre zvolenú identitu. Prajete si to teraz urobiÅ¥? # should not be used anymore: encryptYes=Správa bude Å¡ifrovaná encryptNo=Správa nebude Å¡ifrovaná # should not be used anymore: signYes=Správa bude podpísaná signNo=Správa nebude podpísaná # should not be used anymore pgpmimeYes=PGP/MIME bude použité pgpmimeNo=Inline PGP bude použité rulesConflict=Nájdené protichodné pravidlá pre príjemcov\n%S\n\nPoslaÅ¥ správu s týmito nastaveniami? msgCompose.button.configure=&Nastavenie msgCompose.button.send=&OdoslaÅ¥ správu msgCompose.button.save=&UložiÅ¥ správu # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=K overeniu podpisu je nutný verejný kÄ¾ÃºÄ %S clickDecrypt=; stlaÄte tlaÄítko DeÅ¡ifrovaÅ¥ clickDecryptRetry=; stlaÄte tlaÄítko DeÅ¡ifrovaÅ¥ znovu msgPart=ÄŒasÅ¥ správy %S msgSigned=podpísaná msgEncrypted=Å¡ifrovaná msgSignedAndEnc=podpísaná a Å¡ifrovaná unverifiedSig=Neoverený podpis incompleteDecrypt=Nekompletné deÅ¡ifrovanie needKey=Chyba - pre deÅ¡ifrovanie je potrebný súkromný kÄ¾ÃºÄ failedDecrypt=Chyba - deÅ¡ifrovanie zlyhalo badPhrase=Chyba - zlé heslo failedDecryptVerify=Chyba - deÅ¡ifrovanie/overenie zlyhalo viewInfo=; ZobraziÅ¥ > BezpeÄnostné informácie správy pre podrobnosti decryptedMsg=DeÅ¡ifrovaná správa decryptedMsgWithFormatError=Dekódovaná správa (obnovený poÅ¡kodený PGP email formát pravdepodobne spôsobený starým Exchange serverom, takže výsledok nemusí byÅ¥ úplne Äitateľný) locateGpg=NájsÅ¥ program GnuPG invalidGpgPath=GnuPG nie je možné na uvedenej ceste spustiÅ¥. Enigmail bude preto vypnutý pokiaľ nezmeníte cestu k GnuPG alebo pokiaľ nereÅ¡tartujete aplikáciu. warningsAreReset=VÅ¡etky varovania boli resetované. prefs.gpgFound=GnuPG bolo nájdené v %S prefs.gpgNotFound=Nie je možné nájsÅ¥ GnuPG prefs.warnAskNever=Varovanie: aktiváciou tejto voľby dosiahnete to, že správy budú odosielané nezaÅ¡ifrované bez ohlásenia, ak nemáte kÄ¾ÃºÄ pre niektorého z príjemcov -- Enigmail Vás o tomto nebude naÄalej informovaÅ¥! prefs.warnIdleTimeForUnknownAgent=Váš systém používa Å¡pecializovaný nástroj pre prácu s heslami (napr. gnome-keyring alebo seahorse-agent). Bohužiaľ Enigmail nemôže kontrolovaÅ¥ Äasový limit hesla nástroja, ktorý používate. Z tohoto dôvodu prísluÅ¡né nastavenia v Enigmail nebudú brané v úvahu. prefEnigmail.oneKeyserverOnly=Chyba - je možné urÄiÅ¥ iba jeden keyserver pre automatické sÅ¥ahovanie chýbajúcich kľúÄov OpenPGP. enterAdminPin=Napíšte prosím PIN správcu VaÅ¡ej SmartCard enterCardPin=Napíšte prosím svoj PIN pre SmartCard notInit=Chyba! Služba Enigmail doposiaľ nebola inicializovaná badCommand=Chyba - Å¡ifrovací príkaz zlyhal cmdLine=príkazový riadok a výstup: notRequired=Chyba - Å¡ifrovanie nie je nutné notComplete=Chyba - generovanie kľúÄov nie je eÅ¡te dokonÄené invalidEmail=Chyba - chybná e-mailová adresa/y noPassphrase=Chyba - nebolo vyplnené heslo noPGPblock=Chyba - nenájdený platný dátový blok OpenPGP unverifiedReply=Odsadená ÄasÅ¥ správy (odpoveÄ) bola pravdepodobne zmenená sigMismatch=Chyba - podpis nesúhlasí cantImport=Chyba pri importovaní verejného kľúÄa\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=SmartCard %S nájdená vo VaÅ¡ej ÄítaÄke nemôže byÅ¥ použitá pre spracovanie správy.\nVložte prosím SmartCard %S a opakujte operáciu. sc.insertCard=Operácia vyžaduje VaÅ¡u SmartCard %s.\nVložte prosím požadovanú SmartCard a opakujte operáciu. sc.removeCard=Operácia vyžaduje, aby v ÄítaÄke nebola žiadna SmartCard.\nVyberte prosím SmartCard a zopakujte operáciu. sc.noCardAvailable=SmartCard v ÄítaÄke nebola nájdená\nVložte prosím SmartCard a zopakujte operáciu. sc.noReaderAvailable=VaÅ¡a ÄítaÄka SmartCard nie je pristupná\nPripojte prosím ÄítaÄku SmartCard, vložte kartu a operáciu zopakujte. gpgNotFound=Nie je možné nájsÅ¥ program GnuPG '%S'.\nPresvedÄte sa, že máte správne zadanú cestu ku spustiteľnému súboru GnuPG v nastavení Enigmail. gpgNotInPath=Nie je možné nájsÅ¥ spustiteľný súbor GnuPG v ceste PATH.\nUistite sa, že máte správne zadanú cestu k spustiteľnému súboru GnuPG v nastavení Enigmail. gpgAgentNotStarted=Nie je možné spustiÅ¥ program gpg-agent, ktorý potrebujete pre GnuPG vaÅ¡ej verzie %S. prefUntrusted=NEDÔVERYHODNà prefRevoked=REVOKOVANà KĽÚČ prefExpiredKey=EXPIROVANà KĽÚČ prefExpired=EXPIROVANà prefGood=SPRÃVNY podpis od %S prefBad=CHYBNà podpis od %S failCancel=Chyba - príjem kľúÄa zruÅ¡ený užívateľom failNoServer=Chyba - nie je urÄený keyserver pre prijatie kľúÄov failNoID=Chyba - nie je urÄené ID, pre ktoré prijaÅ¥ kÄ¾ÃºÄ failKeyExtract=Chyba - extrakcia kľúÄa zlyhala notFirstBlock=Chyba - prvý blok OpenPGP nie je blok verejného kľúÄa importKeyConfirm=ImportovaÅ¥ verejný/é kľúÄ(e) obsiahnutý v správe? failKeyImport=Chyba - import kľúÄa zlyhal fileWriteFailed=Zlyhal zápis do súbora %S importKey=ImportovaÅ¥ verejný kÄ¾ÃºÄ %S z keyservera: uploadKey=PoslaÅ¥ verejný kÄ¾ÃºÄ %S na keyserver: keyId=ID kľúÄa keyAndSigDate=ID kľúÄa: 0x%S / Podpísaný: %S keyFpr=OdtlaÄok prstu kľúÄa: %S noEmailProvided=Nezadal/a ste e-mailovú adresu! keyAlreadySigned=KÄ¾ÃºÄ je už podpísaný, nemôžete ho podpísaÅ¥ dvakrát. gnupg.invalidKey.desc=KÄ¾ÃºÄ %S nebol nájdený alebo nie je platný. (Pod-)kÄ¾ÃºÄ pravdepodobne expiroval. selKeyExpired=expirovaný %S createdHeader=Vytvorený atLeastOneKey=Nebol zvolený žiadny kľúÄ! Pre prijatie tohto dialógu vyberte aspoň jeden kÄ¾ÃºÄ fewerKeysThanRecipients=Vybrali ste menší poÄet kľúÄov než príjemcov. Je naozaj zoznam kľúÄov k Å¡ifrovaniu kompletný? userSel.button.goBack=VybraÅ¥ viacero kľúÄov userSel.secretKeySel.title=Vyberte súkromný kÄ¾ÃºÄ OpenPGP k podpisu svojich správ # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=OdoÅ¡li neskôr # Strings used in enigmailAttachmentDialog.js pgpMimeNote=Upozornenie: PGP/MIME je podporované iba v obmedzenom poÄte e-mailových klientov! Podpora tohto Å¡tandardu je vo Windows známa iba pre Mozilla/Thunderbird, Sylpheed, Pegasus a Mulberry; v Linux/UNIXe a Mac OS X ho podporuje väÄÅ¡ina známych e-mailových klientov. Ak si nie ste istý/á, zvoľte možnosÅ¥ %S. first=prvý second=druhý # Strings used in am-enigprefs.js encryptKeyHeader=UrÄiÅ¥ kÄ¾ÃºÄ OpenPGP pre Å¡ifrovanie identityName=Identita: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Máte aktivované Å¡ifrovanie, ale nevybral/a ste žiaden kľúÄ. K Å¡ifrovaniu správy pre %S je potrebné vybraÅ¥ jeden alebo niekoľko platných kľúÄov zo zoznamu. Chcete zakázaÅ¥ Å¡ifrovanie pre %S? noKeyToUse=(niÄ - žiadne Å¡ifrovanie) noEmptyRule=Pravidlo nesmie byÅ¥ prázdne! Prosím nastavte e-mailovú adresu v poli pravidla. invalidAddress=Vložená/é e-mailová/é adresa/y je/sú neplatná/é. Nie je možné vkladaÅ¥ mená príjemcov, ale iba e-mailové adresy. Napr.:\nNeplatné: meno \nPlatné: meno@adresa.sk noCurlyBrackets=Zložené zátvorky {} majú Å¡peciálny význam a nemôžu byÅ¥ použité v e-mailovej adrese. Ak chcete zmeniÅ¥ chovanie pre toto pravidlo, použite možnosÅ¥ 'Aplikuj pravidlo, ak adresát ...'.\nViac informácií je dostupných cez tlaÄítko Nápoveda. # Strings used in enigmailRulesEditor.js never=Nikdy always=Vždy possible=Možné deleteRule=Naozaj zmazaÅ¥ vybrané pravidlo? nextRcpt=(ÄŽalší príjemca) negateRule=Nie addKeyToRule=PridaÅ¥ kÄ¾ÃºÄ %S (%S) do pravidiel pre príjemcov # Strings used in enigmailSearchKey.js needOnline=Funkcia, ktorú ste zvolil/a, nie je dostupná v offline móde. Prejdite prosím do online módu a skúste to znova. protocolNotSupported=Protokol '%S://', ktorý ste zvolil/a, nie je podporovaný pre stiahnutie kľúÄov OpenPGP. gpgkeysDisabled=Môže vám pomôcÅ¥ povoliÅ¥ voľbu 'extensions.enigmail.useGpgKeysTool' noKeyserverConn=Nie je možné sa pripojiÅ¥ na keyserver %S. keyDownloadFailed=Zlyhalo stiahnutie kľúÄa z keyservera. Stavová správa:n%S internalError=Vyskytla sa vnútorná chyba. KľúÄe nie je možné stiahnuÅ¥ alebo importovaÅ¥. noKeyFound=Je mi ľúto, ale nemôžem nájsÅ¥ žiaden kľúÄ, ktorý by zodpovedal zadaným kritériám pre vyhľadávanie.\nVÅ¡imnite si prosím, že ID kľúÄa by malo zaÄínaÅ¥ na \\"0x\\" (napr. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Zlyhalo hľadanie alebo sÅ¥ahovanie kľúÄa z keyservera: gpgkeys_%S nie je možné spustiÅ¥. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nastavenie dôveryhodnosti zlyhalo # Strings in enigmailSignKeyDlg.js signKeyFailed=Podpísanie kľúÄa zlyhalo alreadySigned.label=Upozornenie: kÄ¾ÃºÄ %S je už podpísaný oznaÄeným súkromným kľúÄom. partlySigned.label=Poznámka: niektoré uživateľské ID kľúÄa %S sú podpísané zvoleným tajným kľúÄom. # Strings in enigmailKeyManager.js keyMan.loadingKeys=NaÄítanie kľúÄov, Äakajte prosím ... keyValid.unknown=neznámy keyValid.invalid=neplatný keyValid.disabled=zakázaný keyValid.revoked=revokovaný keyValid.expired=expirovaný keyValid.noSubkey=žiaden platný podkÄ¾ÃºÄ keyTrust.untrusted=nedôveryhodný keyTrust.marginal=okrajovo keyTrust.full=plne dôveryhodný keyTrust.ultimate=absolútne dôveryhodný keyTrust.group=(skupina) keyType.public=verejný keyType.publicAndSec=verejný/súkromný keyMan.enableKey=PovoliÅ¥ kÄ¾ÃºÄ keyMan.disableKey=ZakázaÅ¥ kÄ¾ÃºÄ userAtt.photo=Fotka užívateľa (JPEG obrázok) asciiArmorFile=Súbory kódované ASCII (*.asc) importKeyFile=Importuj OpenPGP súbor kľúÄa gnupgFile=Súbory GnuPG saveRevokeCertAs=VytvoriÅ¥ a uložiÅ¥ revokaÄný certifikát revokeCertOK=RevokaÄný certifikát bol úspeÅ¡ne vytvorený. Môžete ho použiÅ¥ k zneplatneniu svojho verejného kľúÄa, napr. pokiaľ svoj súkromný kÄ¾ÃºÄ stratíte.\n\nPreneste ho prosím na médium (CD, disketa), ktoré môže byÅ¥ uložené niekde mimo na bezpeÄnom mieste. Ak niekto získa prístup k tomuto certifikátu, môže spôsobiÅ¥, že Váš kÄ¾ÃºÄ bude nepoužiteľný. revokeCertFailed=RevokaÄný certifikát nemohol byÅ¥ vytvorený. addUidOK=ÚspeÅ¡ne pridané ID užívateľa addUidFailed=Zlyhalo pridanie ID užívateľa noKeySelected=K vykonaniu operácie by ste mal/a vybraÅ¥ aspoň jeden kÄ¾ÃºÄ exportToFile=ExportovaÅ¥ verejný kÄ¾ÃºÄ do súboru exportSecretKey=Prajete si do uloženého súboru s kľúÄom OpenPGP zahrnúť i súkromný kľúÄ? saveKeysOK=KľúÄe boli úspeÅ¡ne uložené saveKeysFailed=Uloženie kľúÄov zlyhalo importKeysFailed=Importovanie kľúÄov zlyhalo enableKeyFailed=Povolenie/zakázanie kľúÄov zlyhalo specificPubKeyFilename=%S (0x%S)_verejný specificPubSecKeyFilename=%S (0x%S)_verejný-súkromný defaultPubKeyFilename=Exportované-verejné-kľúÄe defaultPubSecKeyFilename=Exportovaný-verejný-a-súkromný-kÄ¾ÃºÄ noSecretKeys=Neboli nájdené žiadne súkromné kľúÄe.\n\nPrajete si teraz vytvoriÅ¥ svoj vlastný kľúÄ? sendKeysOk=KľúÄ/e boli úspeÅ¡ne odoslané sendKeysFailed=Odosielanie kľúÄov zlyhalo receiveKeysOk=KľúÄ/e úspeÅ¡ne aktualizované receiveKeysFailed=SÅ¥ahovanie kľúÄov zlyhalo importFromClip=Prajete si importovaÅ¥ niektorý/é kľúÄ/e zo schránky? copyToClipbrdFailed=Zvolený/é kľúÄ/e nie je možné kopírovaÅ¥ do schránky. copyToClipbrdOK=KľúÄe boli nakopírované do schránky deleteSecretKey=Varovanie: Snažíte se zmazaÅ¥ súkromný kľúÄ!\nAk zmažete svoj súkromný kľúÄ, nebudete môcÅ¥ Äalej deÅ¡ifrovaÅ¥ správy zaÅ¡ifrované pre tento kÄ¾ÃºÄ ani kÄ¾ÃºÄ revokovaÅ¥.\n\nPrajete si naozaj zmazaÅ¥ oba kľúÄe (verejný i súkromný)\n'%S'? deleteMix=POZOR: Snažíte sa zmazaÅ¥ súkromné kľúÄe!\nAk zmažete svoj súkromný kľúÄ, nebudete môcÅ¥ Äalej deÅ¡ifrovaÅ¥ správy zaÅ¡ifrované pre tento kľúÄ.\n\nNaozaj si prajete zmazaÅ¥ Vami zvolený verejný a súkromný kľúÄ? deletePubKey=Prajete si zmazaÅ¥ tento verejný kľúÄ\n'%S'? deleteSelectedPubKey=Prajete si zmazaÅ¥ tieto verejné kľúÄe? deleteKeyFailed=KÄ¾ÃºÄ nie je možné zmazaÅ¥ revokeKeyOk=KÄ¾ÃºÄ bol revokovaný. Ak je tento kÄ¾ÃºÄ dostupný taktiež na keyserveri, je doporuÄené odoslaÅ¥ ho tam znova, aby ste dal/a i ostatným uživateľom vedieÅ¥ o revokácii. revokeKeyFailed=KÄ¾ÃºÄ nie je možné revokovaÅ¥ refreshAllQuestion=Nevybral/a ste žiaden kľúÄ. Prajete si obnoviÅ¥ zoznam vÅ¡etkých kľúÄov? refreshKey.warn=POZOR: v závislosti na poÄte kľúÄov a rýchlosti pripojenia k internetu môže trvaÅ¥ obnovenie zoznamu vÅ¡etkých kľúÄov dlhÅ¡iu dobu! downloadContactsKeys.warn=Upozornenie: v závislosti na poÄte kontaktov a rýchlosti vášho pripojenia, sÅ¥ahovanie vÅ¡etkých kľúÄov môže trvaÅ¥ veľmi dlho! downloadContactsKeys.importFrom=ImportovaÅ¥ kontakty zo zoznamu kontaktov '%S'? keyMan.button.exportSecKey=ExportovaÅ¥ &súkromné kľúÄe keyMan.button.exportPubKey=Ex&portovaÅ¥ iba verejné kľúÄe keyMan.button.import=&ImportovaÅ¥ keyMan.button.refreshAll=&Znova naÄítaÅ¥ vÅ¡etky kľúÄe keyMan.button.revokeKey=&RevokovaÅ¥ kÄ¾ÃºÄ keyMan.button.skip=Pre&skoÄ kÄ¾ÃºÄ keylist.noOtherUids=Nemá iné identity keylist.hasOtherUids=ÄŽalÅ¡ia identita keylist.noPhotos=Fotografia nie je dostupná keylist.hasPhotos=Fotografie keyMan.addphoto.filepicker.title=Vyberte obrázok pre pridanie. keyMan.addphoto.warnLargeFile=Súbor, ktorý ste si vybrali, je väÄší ako 25 kB. Nie je doporuÄené pridávaÅ¥ veľmi veľké obrázky, pretože kľúÄe sú potom príliÅ¡ veľké. keyMan.addphoto.noJpegFile=Vybraný súbor sa nezdá byÅ¥ súbor vo formáte JPEG. Zvoľte si prosím iný súbor keyMan.addphoto.failed=Fotka nemôže byÅ¥ pridaná. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Zmena Å¡tandardného ID užívateľa zlyhala changePrimUidOK=Zmena Å¡tandardného ID užívateľa prebehla úspeÅ¡ne deleteUidFailed=Mazanie ID užívateľa %S zlyhalo deleteUidOK=ID užívateľa %S bolo úspeÅ¡ne zmazané revokeUidFailed=Revokácia ID užívateľa %S zlyhala revokeUidOK=ID užívateľa %S bolo úspeÅ¡ne revokované. Ak je tento kÄ¾ÃºÄ dostupný taktiež na keyserveri, je doporuÄené odoslaÅ¥ ho tam znova, aby sa aj ostatní o revokácii dozvedeli. revokeUidQuestion=UrÄite si prajete revokovaÅ¥ ID užívateľa %S? deleteUidQuestion=UrÄite si prajete zmazaÅ¥ užívateľské ID %S?\n\nVÅ¡imnite si prosím: ak je váš verejný kÄ¾ÃºÄ na keyserveri, zmazanie ID užívateľa niÄ nezmení. V tomto prípade zvoľte 'RevokovaÅ¥ ID užívateľa'. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=verejný kÄ¾ÃºÄ keyTypePrimary=hlavný kÄ¾ÃºÄ keyTypeSubkey=podkÄ¾ÃºÄ keyTypePair=pár kľúÄov keyExpiryNever=nikdy keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG keyUsageEncrypt=Å ifrovaÅ¥ keyUsageSign=PodpísaÅ¥ keyUsageCertify=PotvrdiÅ¥ keyUsageAuthentication=Overovanie # Strings in enigmailGenCardKey.xul keygen.started=Prosím poÄkajte, kÄ¾ÃºÄ sa zaÄal vytváraÅ¥ .... keygen.completed=KÄ¾ÃºÄ vytvorený. Nový kÄ¾ÃºÄ má ID: 0x%S keygen.keyBackup=KÄ¾ÃºÄ bol zazálohovaný ako %S keygen.passRequired=Ak chcete vytvoriÅ¥ záložnú kópiu Vášho kľúÄa mimo SmartCard, napíšte prosím heslo. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN, ktoré ste zadal/a, nesúhlasí; napíšte ho prosím znova cardPin.minLength=PIN musí obsahovaÅ¥ najmenej %S znakov alebo Äíslic cardPin.processFailed=Zmena PIN zlyhala # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Obnovujú sa kľúÄe, prosím Äakajte ... keyserverProgress.uploading=Odosielanie kľúÄov, prosím Äakajte ... keyserverTitle.refreshing=ObnoviÅ¥ kľúÄe keyserverTitle.uploading=Odosielanie kľúÄa # Strings in enigmailSetupWizard passphrase.min8keys=VaÅ¡e heslo je kratÅ¡ie než 8 znakov! setupWizard.reallyCancel=Naozaj si prajete ukonÄiÅ¥ sprievodcu nastavením Enigmail? setupWizard.invalidGpg=Súbor, ktorý ste zvolili, nie je spustiteľný súbor GnuPG. Prosím, zvoľte iný súbor. setupWizard.specifyFile=Pre pokraÄovanie musíte zadaÅ¥ aspoň súbor s verejným kľúÄom. setupWizard.installFailed=Vyzerá to, že inÅ¡talácia sa nepodarila. Prosím skúste inÅ¡taláciu znova, alebo nainÅ¡talujte GnuPG ruÄne a urÄite súbor pomocou tlaÄítka Prehľadávanie. setupWizard.downloadForbidden=Pre VaÅ¡u vlastnú bezpeÄnosÅ¥, nebudeme sÅ¥ahovaÅ¥ GnuPG. Prosím navÅ¡tívte http://www.gnupg.org/ pre stiahnutie GnuPG. setupWizard.downloadImpossible=Nie je práve možné stiahnuÅ¥ GnuPG. Prosím, skúste to znova, alebo navÅ¡tívte http://www.gnupg.org/ pre stiahnutie GnuPG. setupWizard.hashSumError=Pomocník nemôže skontrolovaÅ¥ integritu stiahnutého súboru. Súbor je možno poÅ¡kodený, alebo neoficiálne upravený. Ste si istý, že chcete pokraÄovaÅ¥ v inÅ¡talácii? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Vyskytla sa chyba pri pokuse o stiahnutie GnuPG. Prosím skontrolujte záznam v konzole pre ÄalÅ¡ie podrobnosti. installGnuPG.installFailed=Vyskytla sa chyba pri inÅ¡talácii GnuPG. Prosím skontrolujte záznam v konzole pre ÄalÅ¡ie podrobnosti. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Musíte vyplniÅ¥ meno a e-mailovú adresu addUidDlg.nameMinLengthError=Meno musí maÅ¥ aspoň 5 znakov addUidDlg.invalidEmailError=Musíte zadaÅ¥ platnú e-mailovú adresu addUidDlg.commentError=Zátvorky nie sú v poznámkach povolené # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP Smartkarty podporujú iba ASCII znaky v Prvom mene/Mene. # network error types errorType.SecurityCertificate=BezpeÄnostný certifikát webovej služby nie je platný. errorType.SecurityProtocol=BezpeÄnostný protokol používaný webovou službou je neznámy. errorType.Network=Vyskytol sa problém so sieÅ¥ovým pripojením. enigmail/lang/sk/help/000077500000000000000000000000001266701624400151415ustar00rootroot00000000000000enigmail/lang/sk/help/compose.html000066400000000000000000000100751266701624400174770ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/sk/help/editRcptRule.html000066400000000000000000000115571266701624400204460ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/sk/help/initError.html000066400000000000000000000045361266701624400200140ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/sk/help/messenger.html000066400000000000000000000101211266701624400200120ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/sk/help/rulesEditor.html000066400000000000000000000060311266701624400203300ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/sk/help/sendingPrefs.html000066400000000000000000000047771266701624400204750ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/sl/000077500000000000000000000000001266701624400142125ustar00rootroot00000000000000enigmail/lang/sl/am-enigprefs.properties000066400000000000000000000001201266701624400206760ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Varnost OpenPGP enigmail/lang/sl/enigmail.dtd000066400000000000000000001407101266701624400164770ustar00rootroot00000000000000 Varnost OpenPGP)"> POZOR: Ustvarjanje kljuÄa lahko traja veÄ minut. V tem Äasu ne zaprite brskalnika. Ker je generator nakljunÄnih Å¡tevil odvisen od dejavnosti raÄunalnika, je priporoÄljivo npr. aktivno brskati, da bi pospeÅ¡ili ustvarjanje kljuÄa. Ko bo kljuÄ ustvarjen, boste o tem takoj obveÅ¡Äeni."> ' je neveljavno"> OPOMBA: Tvorba kljuÄa lahko traja nekaj minut. Ne zaprite aplikacije, medtem ko je tvorba kljuÄa v teku. Ko bo kljuÄ izdelan, boste o tem obveÅ¡Äeni."> Opomba: Enigmail bo vedno preverjal podpise e-sporoÄil za vsak raÄun ali identiteto, ne glede na to, ali je omogoÄeno ali ne"> javni kljuÄ je za druge, da vam poÅ¡ljejo Å¡ifrirana gesla. Razdelite ga lahko komerkoli."> zasebni kljuÄ je za vas, da deÅ¡ifrirate to e-poÅ¡to in poÅ¡ljete podpisano e-poÅ¡to. Nikomur ga ne smete dati."> zasebni kljuÄ je za vas, da deÅ¡ifrirate to e-poÅ¡to in poÅ¡ljete podpisano e-poÅ¡to. Nikomur ga ne smete dati. Da zavarujete svoj javni kljuÄ, boste pozvani za geslo v naslednjih dveh pogovornih oknih."> Geslo zaÅ¡Äiti vaÅ¡ zasebni kljuÄ in prepreÄi njegovo zlorabo."> Za to boste pozvani za vnos gesla."> izvozite podatke s starega raÄunalnika s Äarovnikom za varnostno kopiranje iz nastavitev Enigmail uvozite podatke v nov raÄunalnik s tem Äarovnikom. "> Hvala, ker uporabljate Enigmail."> izvozite podatke s starega raÄunalnika s tem Äarovnikom uvozite podatke v nov raÄunalnik s Äarovnikom za namestitev. "> enigmail/lang/sl/enigmail.properties000066400000000000000000001112421266701624400201160ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail – opozorilo enigConfirm=Enigmail – potrditev enigError=Enigmail – napaka enigPrompt=Enigmail – prompt dlgYes=&Da dlgNo=&Ne dlgKeepSetting=Zapomni si odgovor in ne spraÅ¡uj veÄ dlgNoPrompt=Tega pogovornega okna ne pokaži nikoli veÄ dlg.button.delete=I&zbriÅ¡i dlg.button.cancel=Pre&kliÄi dlg.button.close=&Zapri dlg.button.continue=&Nadaljuj dlg.button.skip=Pres&koÄi dlg.button.overwrite=&PrepiÅ¡i dlg.button.view=&Pokaži dlg.button.retry=Poskusi &znova dlg.button.ignore=&Prezri repeatPrefix=\n\nTo sporoÄilo se bo ponovilo %S repeatSuffixSingular=-krat. repeatSuffixPlural=-krat. noRepeat=\n\nTo sporoÄilo se ne bo ponovilo vse do nadgradnje Enigmaila. pgpNotSupported=Kot kaže, uporabljate Enigmail skupaj s PGP 6.x.\n\nŽal povzroÄa PGP 6.x nekatere težave, ki onemogoÄajo, da bi Enigmail deloval pravilno. Zato Enigmail PGP 6.x ni veÄ podprt. V prihodnosti raje uporabite GnuPG (GPG).\n\nÄŒe za prehod na GPG potrebujete podporo, obiÅ¡Äite stran PomoÄ/Help na domaÄi strani Enigmail. initErr.howToFixIt=Za uporabo Enigmaila je zahtevan GnuPG. ÄŒe ga Å¡e niste namestili, je najlažji naÄin za namestitev uporaba spodnjega gumba "ÄŒarovnik za namestitev". initErr.setupWizard.button=&ÄŒarovnik za namestitev passphraseCleared=Geslo je bilo izbrisano. cannotClearPassphrase=Za ravnanje z gesli uporabljate neobiÄajno orodje (kot je gnome-keyring). V Enigmailu zatorej ne morete poÄistiti gesla. noPhotoAvailable=Na voljo ni nobene fotografije debugLog.title=Enigmail Debug Log error.photoPathNotReadable=Pot slike '%S' ni berljiva # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Nova razliÄica Enigmaila ima pomembne spremembe ravnanja z nastavitvami in možnostmi. Stare nastavitve smo poskusili prenesti na novo razliÄico. Vendar pa ne moremo samodejno zadostiti vsem primerom. Ponovno preverite nastale nove nastavitve in možnosti. enigmailCommon.checkPreferences=Preveri nastavitve ... preferences.defaultToPgpMime=Privzeto kodiranje sporoÄil smo v Enigmailu spremenili iz vdelanega PGP-ja v PGP/MIME. PriporoÄamo, da ga ohranite kot privzetega.\n\nÄŒe Å¡e vedno želite privzeto uporabljati vdelan PGP, to lahko storite v nastavitvah raÄuna pod Varnost OpenPGP. usingVersion=Uporabljate Enigmail razliÄice %S usingAgent=Za Å¡ifriranje in deÅ¡ifriranje uporabi %S izvrÅ¡ilno datoteko %S agentError=NAPAKA: Dostop do storitve Enigmail ni uspel! accessError=Napaka pri dostopu do storitve Enigmail onlyGPG=Ustvarjanje kljuÄa deluje le z GnuPG (ne pa tudi z PGP)! keygenComplete=Ustvarjanje kljuÄa je konÄano! Za podpisovanje bo uporabljena identiteta <%S> revokeCertRecommended=Nadvse priporoÄamo, da za svoj kljuÄ ustvarite certifikat za preklic. Ta certifikat lahko uporabite za preklic svojega kljuÄa, npr. Äe vaÅ¡ skrivni kljuÄ izgubite ali je v nevarnosti. Želite zdaj ustvariti tak certifikat za preklic? keyMan.button.generateCert=&Ustvari certifikat genCompleteNoSign=Ustvarjanje kljuÄa je konÄano! genGoing=Ustvarjanje kljuÄa je v teku! passNoMatch=Geslo ni ustrezno; prosimo, ponovite vnos. passCheckBox=ÄŒe ne uporabljate gesla za kljuÄ, potem prosim oznaÄite ustrezno možnost. passUserName=Prosimo, podajte imena uporabnikov za to identiteto. keygen.missingUserName=Za izbrani raÄun/identiteto ni navedenega imena. V polje "vaÅ¡e ime" v nastavitvah raÄuna vnesite vrednost. keygen.passCharProblem=V svojem geslu uporabljate posebne znake. Na žalost lahko to povzroÄi težave pri ostalih programih. PriporoÄamo, da izberete geslo s samo naslednjimi znaki:\n a-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=VaÅ¡e geslo se iz tehniÄnih razlogov ne sme zaÄeti ali konÄati s presledkom. changePassFailed=Sprememba gesla ni uspela. keyConfirm=Ustvari javni in skriti kljuÄ za '%S'? keyMan.button.generateKey=&Ustvari kljuÄ keyAbort=Prekinem ustvarjanje kljuÄa? keyMan.button.generateKeyAbort=&Ustavi tvorbo kljuÄa keyMan.button.generateKeyContinue=&Nadaljuj s tvorbo kljuÄa expiryTooLong=Ne morete ustvariti kljuÄa, ki postane neveljaven kasneje kot v 100 letih. expiryTooLongShorter=KljuÄa, ki poteÄe Äez veÄ kot 90 let, ne morete ustvariti. expiryTooShort=VaÅ¡ kljuÄ mora biti veljaven najmanj en dan. dsaSizeLimit=Podpisni kljuÄi DSA so omejeni na 3072 bitov. Velikost kljuÄa bo zato ustrezno zmanjÅ¡ana. keyGenFailed=Ustvarjanje kljuÄa ni uspelo. Prosimo, za podrobnosti preverite konzolo Enigmail (Meni Enigmail > RazhroÅ¡Äevanje Enigmail). setKeyExpirationDateFailed=Datuma prenehanja veljavnosti ni mogoÄe spremeniti # Strings in enigmailMessengerOverlay.js securityInfo=Varnostne informacije Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Priloge temu sporoÄilu niso podpisane ali Å¡ifrirane*\n\n possiblyPgpMime=Najverjetneje Å¡ifrirano ali podpisano sporoÄilo PGP/MIME; za preverjanje kliknite gumb DeÅ¡ifriraj noDecrypted=Nobenega deÅ¡ifriranega sporoÄila ni mogoÄe najti za shranjevanje!\nUporabite shranjevanje v meniju Datoteka noMessage=Za shranjevanje ni na voljo nobenega sporoÄila\\! useButton=Kliknite DeÅ¡ifriraj/Preveri za deÅ¡ifriranje sporoÄila saveHeader=Enigmail: Shrani deÅ¡ifrirano sporoÄilo saveAttachmentHeader=Enigmail: Shrani deÅ¡ifrirano priponko noTempDir=Ni mogoÄe najti nobene zaÄasne mape za pisanje.\nProsimo, doloÄite sistemsko spremenljivko TEMP. attachmentPgpKey=Priloga '%S', ki jo odpirate, je najverjetneje kljuÄ OpenPGP.\n\nKliknite 'Uvozi' za uvoz vsebovanega kljuÄa ali 'Pokaži', Äe si želite vsebino datoteke ogledati v oknu brskalnika. beginPgpPart=********* *ZACETEK SIFRIRANEGA ali PODPISANEGA DELA* ********* endPgpPart=********** *KONEC SIFRIRANEGA ali PODPISANEGA DELA* ********** notePartEncrypted=Enigmail: *Deli sporocila NISO bili podpisani ali sifrirani* noteCutMessage=Enigmail: *Najdenih je veÄ blokov sporoÄila -- deÅ¡ifriranje/preverjanje prekinjeno* decryptOkNoSig=Pozor\n\nDeÅ¡ifriranje je bilo uspeÅ¡no, a podpisa ni mogoÄe preveriti. msgOvl.button.contAnyway=&Vseeno nadaljuj signature.verifiedOK=Podpis za priponko %S je bil uspeÅ¡no preverjen. signature.verifyFailed=Podpisa za priponko %S ni bilo mogoÄe preveriti. attachment.noMatchToSignature=Priponka '%S' se ne ujema z datoteko podpisa attachment.noMatchFromSignature=Datoteka podpisa '%S' se ne ujema s priponko fixBrokenExchangeMsg.failed=SporoÄila ni uspelo popraviti. keysToExport=Izberi kljuÄe OpenPGP za vstavljanje keysToUse=Izberi kljuÄe OpenPGP za uporabnika %S pubKey=Javni kljuÄ za %S\n windowLocked=Urejevalno okno je zaklenjeno; poÅ¡iljanje je bilo prekinjeno sendUnencrypted=Inicializacija Enigmaila ni uspela.\nPoÅ¡ljem sporoÄilo neÅ¡ifrirano? composeSpecifyEmail=Vnesite prosim glavni e-poÅ¡tni naslov, ki je potreben za izbor podpisnega kljuÄa za odhodna sporoÄila.\nÄŒe ne podate nobenega naslova, bo e-poÅ¡tni naslov v polju OD sporoÄila prepuÅ¡Äen izbiri kljuÄa. sendingHiddenRcpt=To sporoÄilo ima prejemnike v polju BCC (skrita kopija). ÄŒe to sporoÄilo Å¡ifrirate, je mogoÄe skriti prejemnike skrite kopije, vendar uporabniki nekaterih izdelkov (npr. PGP Corp.) ne bodo mogli deÅ¡ifrirati sporoÄila. Zaradi tega priporoÄamo, da se izogibate polju skrite kopije (BCC) v Å¡ifriranih sporoÄilih. sendWithHiddenBcc=Skrij prejemnike skrite kopije sendWithShownBcc=Å ifriraj obiÄajno sendingNews=PoÅ¡iljanje Å¡ifriranega sporoÄila je bilo prekinjeno.\n\nTega sporoÄila ne morete poslati Å¡ifriranega, ker so med prejemniki naslovi noviÄarskih skupin. To sporoÄilo poÅ¡ljite neÅ¡ifrirano. sendToNewsWarning=Opozorilo: poslali boste Å¡ifrirano sporoÄilo na dopisni seznam.\n\nTega ne priporoÄamo, ker je to smiselno le, Äe lahko vsi Älani skupine deÅ¡ifrirajo sporoÄilo, t.j. sporoÄilo je potrebno deÅ¡ifrirati s kljuÄi vseh Älanov seznama. To sporoÄilo poÅ¡ljite le, Äe dobro veste, kaj poÄnete.\n\nŽelite nadaljevati? hasHTML=Opozorilo za sporoÄila HTML: \nTo sporoÄilo lahko vsebuje HTML. To lahko onemogoÄi pravilno podpisovanje oz. Å¡ifriranje tega sporoÄila. Da bi to v prihodnje prepreÄili pri poÅ¡iljanju podpisanih sporoÄil, kliknite prosim dvigalko hkrati z gumbom Sestavi oz. Odgovori. Ko sporoÄilo podpiÅ¡ete, odstranite potrditev pri nastavitvah 'Ustvari sporoÄilo kot HTML' s Äimer poÅ¡iljanje sporoÄil HTML trajno prepreÄite. strippingHTML=SporoÄilo vsebuje kodo HTML, ki bo izgubljena, Äe bo sporoÄilo za podpisovanje oz. Å¡ifriranje pretvorjeno v zgolj tekstovni zapis. Želite nadaljevati? msgCompose.button.sendAnyway=&Vseeno poÅ¡lji sporoÄilo attachWarning=Priponke tega sporoÄila niso lokalne, zato jih ni mogoÄe Å¡ifrirati. Za Å¡ifriranje priponk jih najprej shranite lokalno in jih nato dodajte sporoÄilu. Želite kljub temu poslati sporoÄilo? quotedPrintableWarn=Za kodiranje sporoÄil ste nastavili 'quoted-printable'. To lahko pripelje do nepravilnega Å¡ifriranja in/ali preverjanja vaÅ¡ih sporoÄil.\nŽelite izklopiti nastavitev 'quoted printable'? minimalLineWrapping=Prelom besedila ste nastavili na %S znakov. Za pravilno Å¡ifriranje in podpisovanje mora biti ta vrednost najmanj 68.\nŽelite zdaj vrednost nastaviti na 68? warning=Opozorilo signIconClicked=Spremenili ste nastavitve za podpisovanje. Zato za to sporoÄilo niÄ veÄ ne velja (de-)aktivacija podpisovanja skupaj z (de-)aktivacijo Å¡ifriranja. pgpMime_sMime.dlg.text=Skupaj ste omogoÄili PGP/MIME in S/MIME. Žal ni možno podpreti oba protokola obenem. Izberite, ali želite uporabljati PGP/MIME ali S/MIME. pgpMime_sMime.dlg.pgpMime.button=Uporabi &PGP/MIME pgpMime_sMime.dlg.sMime.button=Uporabi &S/MIME errorKeyUnusable=E-poÅ¡tni naslov ali ID kljuÄa '%S' se ne ujema z veljavnim, ne preteklim kljuÄem OpenPGP.\nZagotovite, da imate veljaven kljuÄ OpenPGP in da nastavitve vaÅ¡ega raÄuna kažejo na ta kljuÄ. errorOwnKeyUnusable=ID kljuÄa '%S', ki je nastavljen za trenutno identiteto, ne dobavi uporabnega kljuÄa OpenPGP.\n\nZagotovite, da imate veljaven kljuÄ OpenPGP in da vaÅ¡e nastavitve raÄuna nanj kažejo.\nÄŒe vaÅ¡ kljuÄ ni potekel, preverite, ali ste zaupanje lastniku nastavili na polno ali skrajno. msgCompose.cannotSaveDraft=Napaka med shranjevanjem osnutka msgCompose.internalEncryptionError=Notranja napaka: obljubljeno Å¡ifriranje onemogoÄeno msgCompose.internalError=Pojavila se je zaÄetna napaka. msgCompose.toolbarTxt.signAndEncrypt=To sporoÄilo po podpisano in Å¡ifrirano msgCompose.toolbarTxt.signOnly=To sporoÄilo bo podpisano msgCompose.toolbarTxt.encryptOnly=To sporoÄilo bo Å¡ifrirano msgCompose.toolbarTxt.noEncryption=To sporoÄilo bo nepodpisano in neÅ¡ifrirano msgCompose.toolbarTxt.disabled=Za izbrano identiteto je Enigmail onemogoÄen msgCompose.toolbarTxt.smime=S/MIME je omogoÄen - morda neskladno z Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME se zatorej ne uporablja msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME je omogoÄen - Enigmail se zatorej ne uporablja msgCompose.toolbarTxt.smimeNoDraftEncryption=– osnutki ne bodo Å¡ifrirani msgCompose.toolbarTxt.smimeConflict=Engmail se ne uporablja, ker je S/MIME trenutno omogoÄen. Izklopite podpisovanje S/MIME in/ali Å¡ifriranje in potem omogoÄite Å¡ifriranje Enigmail msgCompose.encryptedSubjectStub=Å ifrirano sporoÄilo msgCompose.detailsButton.label=Podrobnosti … msgCompose.detailsButton.accessKey=P # note: should end with double newline: sendAborted=PoÅ¡iljanje je bilo prekinjeno.\n\n # details: keyNotTrusted=Premalo zaupanja za kljuÄ '%S' keyNotFound=KljuÄa '%S' ni mogoÄe najti keyRevoked=KljuÄ '%S' je preklican keyExpired=KljuÄ '%S' je potekel statPGPMIME=PGP/MIME statSigned=PODPISANO statEncrypted=Å IFRIRANO statPlain=NEPODPISANO in NEÅ IFRIRANO offlineSave=Želite shraniti sporoÄilo %S, namenjeno %S, v mapo 'Neodposlana sporoÄila'? onlineSend=Želite poslati sporoÄilo %S prejemniku %S? encryptKeysNote=Napotek\\: SporoÄilo je Å¡ifrirano z naslednjimi kljuÄi identitete uporabnikov\\: %S hiddenKey= signFailed=Napaka v programu Enigmail; Å¡ifriranje oz. podpisovanje ni uspelo. Želite poslati sporoÄilo nezavarovano? msgCompose.button.sendUnencrypted=&PoÅ¡lji neÅ¡ifrirano sporoÄilo recipientsSelectionHdr=Izberite prejemnika Å¡ifriranja configureNow=Varnosti Enigmail za izbrano identiteto Å¡e niste nastavili. Želite to zdaj storiti? # encryption/signing status and associated reasons: encryptMessageAuto=Å ifriraj sporoÄilo (samodejno) encryptMessageNorm=Å ifriraj sporoÄilo signMessageAuto=PodpiÅ¡i sporoÄilo (samodejno) signMessageNorm=PodpiÅ¡i sporoÄilo encryptOff=Å ifriranje: IZKLJUÄŒENO encryptOnWithReason=Å ifriranje: VKLJUÄŒENO (%S) encryptOffWithReason=Å ifriranje: IZKLJUÄŒENO (%S) encryptOn=Å ifriranje: VKLJUÄŒENO signOn=Podpisovanje: VKLJUÄŒENO signOff=Podpisovanje: IZKLJUÄŒENO signOnWithReason=Podpisovanje: VKLJUÄŒENO (%S) signOffWithReason=Podpisovanje: IZKLJUÄŒENO (%S) reasonEnabledByDefault=privzeto omogoÄeno reasonManuallyForced=roÄno vsiljeno reasonByRecipientRules=vsiljeno s pravili prejemnika reasonByAutoEncryption=vsiljeno s samo-Å¡ifriranjem reasonByConflict=zaradi spora v pravilih prejemnika reasonByEncryptionMode=zaradi naÄina Å¡ifriranja reasonSmimeConflict=ker je namesto tega omogoÄen S/MIME # should not be used anymore: encryptYes=SporoÄilo bo Å¡ifrirano encryptNo=SporoÄilo ne bo Å¡ifrirano # should not be used anymore: signYes=SporoÄilo bo podpisano signNo=SporoÄilo ne bo podpisano # PGP/MIME status: pgpmimeNormal=Protokol: PGP/MIME inlinePGPNormal=Protokol: vdelan PGP pgpmimeAuto=Protokol: PGP/MIME (samodejno) inlinePGPAuto=Protokol: vdelan PGP (samodejno) # should not be used anymore pgpmimeYes=Uporabljen bo PGP/MIME pgpmimeNo=Uporabljen bo vrinjen PGP # Attach own key status (tooltip strings): attachOwnKeyNo=VaÅ¡ lasten kljuÄ ne bo pripet attachOwnKeyYes=VaÅ¡ lasten kljuÄ bo pripet attachOwnKeyDisabled=VaÅ¡ega lastnega kljuÄa ni mogoÄe pripeti. Izbrati morate doloÄen kljuÄ\nv odseku OpenPGP v nastavitvah raÄuna, da omogoÄite to znaÄilnost. rulesConflict=Najdena so nasprotujoÄa si pravila za prejemnika\n%S\n\nŽelite poslati sporoÄilo s temi nastavitvami? msgCompose.button.configure=Pri&lagodi msgCompose.button.send=&PoÅ¡lji sporoÄilo msgCompose.button.save=&Shrani sporoÄilo # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Za preverjanje podpisa potrebujete javni kljuÄ %S keyUsed=Javni kljuÄ %S, ki se uporablja za preverjanje podpisa clickDecrypt=; kliknite na gumb DeÅ¡ifriraj clickDecryptRetry=; za ponoven poskus kliknite na ikono Å¡ifriranja clickDetailsButton=; za veÄ informacij kliknite na gumb 'Podrobnosti' clickImportButton=; za prenos kljuÄa kliknite na gumb 'Uvozi kljuÄ' keyTypeUnsupported=; vaÅ¡a razliÄica GnuPG ne podpira te vrste kljuÄa msgPart=Del sporoÄila %S msgSigned=podpisan msgSignedUnkownKey=podpisano z neznanim kljuÄem msgEncrypted=Å¡ifriran msgSignedAndEnc=podpisan in Å¡ifriran unverifiedSig=Podpis ni preverjen incompleteDecrypt=DeÅ¡ifriranje je bilo nepopolno needKey=Napaka - Za deÅ¡ifriranje je potreben skrivni kljuÄ failedDecrypt=Napaka - DeÅ¡ifriranje ni uspelo badPhrase=Napaka - NapaÄno geslo failedDecryptVerify=Napaka - DeÅ¡ifriranje/preverjanje ni uspelo viewInfo=; Za podrobnosti izberite Pogled > Informacije o varnosti sporoÄila decryptedMsg=DeÅ¡ifrirano sporoÄilo decryptedMsgWithFormatError=DeÅ¡ifrirano sporoÄilo (obnovljena pokvarjena oblika e-poÅ¡te PGP, ki jo je povzroÄil star strežnik Exchange, tako da rezultat verjetno ne bo popoln za branje) usedAlgorithms=Uporabljeni algoritmi: %S in %S # strings in pref-enigmail.js oldGpgVersion14=ZaÄenjanje Enigmaila je spodletelo.\n\nUporabljate razliÄico GnuPG-ja %S, ki ni veÄ podprta. Enigmail zahteva GnuPG razlliÄice 2.0.7 ali novejÅ¡o. Nadgradite svojo namestitev GnuPG-ja ali pa Enigmail ne bo deloval. locateGpg=Najdi program GPG invalidGpgPath=GnuPG ni mogoÄe izvrÅ¡iti s podano potjo. OpenGPG je zatorej deaktiviran, dokler znova ne spremenite poti do GnuPG ali ponovno ne zaženete aplikacije. warningsAreReset=Vsa opozorila so bila ponastavljena. prefs.gpgFound=GnuPG se nahaja v %S prefs.gpgNotFound=Ni mogoÄe najti programa GnuPG prefs.warnAskNever=Opozorilo: z aktivacijo te možnosti boste povzroÄili neÅ¡ifrirana e-sporoÄila brez dodatnih opozoril, Äe kljuÄ za enega od prejemnikov ne obstaja -- Enigmail vas o tem ne bo opozarjal! prefs.warnIdleTimeForUnknownAgent=VaÅ¡ sistem uporablja specializirano orodje za ravnanje z gesli, kot sta gnome-keyring ali seahorse-agent. Žal OpenGPG ne more nadzorovati Äasovne prekoraÄitve gesla za orodje, ki ga uporabljate. Zato se ustrezne nastavitve Äasovne prekoraÄitve v Enigmail ne upoÅ¡tevajo. prefEnigmail.oneKeyserverOnly=Napaka - navedete lahko le en strežnik kljuÄev za samodejno prenaÅ¡anje manjkajoÄih kljuÄev OpenPGP. enterAdminPin=Prosimo, vtipkajte ADMIN PIN svoje pametne kartice enterCardPin=Prosimo, vtipkajte PIN svoje pametne kartice notInit=Napaka - Storitev Enigmail Å¡e ni nastavljena badCommand=Napaka - Å ifriranje ni uspelo cmdLine=ukazna vrstica in izpis\\: notRequired=Napaka - Å ifriranje ni potrebno notComplete=Napaka - Ustvarjanje kljuÄa Å¡e ni dokonÄano invalidEmail=Napaka - Neveljaven(i) e-poÅ¡tni naslov(i) noPassphrase=Napaka – Niste vnesli gesla noPGPblock=Napaka – Ni nobenega veljavnega bloka OpenPGP unverifiedReply=Del sporoÄila (odgovor) je bil morda spremenjen keyInMessageBody=Najdena kljuÄ in telo sporoÄila. Kliknite 'Uvozi kljuÄ', da ga uvozite sigMismatch=Napaka – Podpis ni pravilen cantImport=Napaka pri uvozu javnega kljuÄa\n\n doImportOne=Uvozi %1$S (%2$S)? doImportMultiple=Uvozi naslednje kljuÄe?\n\n%S previewFailed=Javnega kljuÄa ni mogoÄe brati. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Pametne kartice %S, ki je v bralniku, ni mogoÄe uporabiti za obdelavo sporoÄila.\nProsimo, vstavite pametno kartico %S in ponovite postopek. sc.insertCard=Postopek zahteva vaÅ¡o pametno kartico %S.\nProsimo, vstavite zahtevano pametno kartico in ponovite postopek. sc.removeCard=Postopek ne potrebuje prisotnosti pametne kartice v bralniku.\nProsimo, odstranite svojo pametno kartico in ponovite postopek. sc.noCardAvailable=V vaÅ¡em bralniku ni nobene pametne kartice.\nProsimo, vstavite svojo pametno kartico in ponovite postopek. sc.noReaderAvailable=VaÅ¡ bralnik pametnih kartic ni dosegljiv.\nProsimo, povežite svoj bralnik pametnih kartic, vstavite kartico in ponovite postopek. keyError.keySpecNotFound=E-poÅ¡tnega naslova "%S" ni mogoÄe ujemati s kljuÄem na vaÅ¡i verigi. keyError.keyIdNotFound=Nastavljenega ID kljuÄa "%S" ni mogoÄe najti na vaÅ¡i verigi. keyError.resolutionAction=Izberte veljaven kljuÄ v odseku OpenPGP v nastavitvah raÄuna. missingPassphrase=Manjka geslo errorHandling.gpgAgentInvalid=VaÅ¡ sistem izvaja razliÄico gpg-agenta, ki ni primerna za vaÅ¡o razliÄico GnuPG-ja. errorHandling.gpgAgentError=GnuPG je sporoÄil napako v komunikaciji z gpg-agentom (sestavni del GnuPG-ja). errorHandling.dirmngrError=GnuPG je sporoÄil napako v komunikaciji z dirmngr-jem (sestavni del GnuPG-ja). errorHandling.pinentryError=GnuPG ne more poizvedeti za vaÅ¡e geslo preko vnosa PIN-a. errorHandling.readFaq=To je napaka namestitve ali nastavitve sistema, ki prepreÄuje pravilno delovanje Enigmaila in se je ne da samodejno popraviti.\n\nZelo priporoÄamo, da se posvetujete z naÅ¡o spletno stranjo za podporo na https://enigmail.net/faq. gpgNotFound=Ni mogoÄe najti programa GnuPG '%S'.\nPreverite, da je pot do programa GnuPG v nastavitvah Enigmail podana pravilno. gpgNotInPath=Na podani poti PATH ni mogoÄe najti programa GnuPG.\nPreverite, da je pot do programa GnuPG v nastavitvah Enigmail podana pravilno. enigmailNotAvailable=Glavna storitev Enigmaila ni na voljo gpgAgentNotStarted=Ni mogoÄe zagnati programa gpg-agent, ki je potreben za GnuPG razliÄice %S. prefUntrusted=NI VREDEN ZAUPANJA prefRevoked=RAZVELJAVLJEN prefExpiredKey=KLJUÄŒ JE POTEKEL prefExpired=POTEKEL prefGood=Pravilen podpis %S prefBad=NAPAÄŒEN podpis %S failCancel=Napaka - Uporabnik je prekinil sprejem kljuÄa failNoServer=Napaka - Strežnik kljuÄev ni podan failNoID=Napaka - Ni bila podana identiteta kljuÄa failKeyExtract=Napaka - Ekstrakcija kljuÄa ni uspela notFirstBlock=Napaka - Prvi blok OpenPGP ni javni blok kljuÄa importKeyConfirm=Želite uvoziti v sporoÄilu vsebovani javni kljuÄ? failKeyImport=Napaka - KljuÄa ni mogoÄe uvoziti fileWriteFailed=Pisanje v datoteko %S ni mogoÄe importKey=Uvažam javni kljuÄ %S s strežnika kljuÄev\\: uploadKey=PoÅ¡lji javni kljuÄ %S na strežnik kljuÄev: keyId=ID kljuÄa keyAndSigDate=ID kljuÄa: 0x%S / Podpisano: %S keyFpr=Prstni odtis kljuÄa: %S noEmailProvided=Niste vnesli e-poÅ¡tnega naslova! keyAlreadySigned=KljuÄ je že podpisan, ne morete ga podpisati dvakrat. gnupg.invalidKey.desc=KljuÄ %S ni veljaven ali ga ni mogoÄe najti. (Pod)kljuÄ je morda potekel. selKeyExpired=veljavnost %S je potekla createdHeader=Ustvarjen atLeastOneKey=Niste izbrali nobenega kljuÄa\\! Izbrati morate vsaj en kljuÄ. fewerKeysThanRecipients=Izbrali ste manjÅ¡e Å¡tevilo kljuÄev, kot je prejemnikov. Ste prepriÄani, da je seznam kljuÄev za Å¡ifriranje popoln? userSel.button.goBack=Izberite veÄ kljuÄev userSel.secretKeySel.title=Izberite skrivni kljuÄ OpenPGP, s katerim boste podpisovali svoja sporoÄila userSel.problemNoKey=Ni veljavnega kljuÄa. userSel.problemMultipleKeys=VeÄ kljuÄev # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=PoÅ¡lji kasneje # Strings used in enigmailAttachmentDialog.js pgpMimeNote=OPOMBA: PGP/MIME podpira le omejeno Å¡tevilo odjemalcev e-poÅ¡te\\! V okolju Windows ta standard podpirajo le Mozilla/Thunderbird, Sylpheed, Pegasus in Mulberry; v okoljih Linux/UNIX in Mac OS X ga podpira veÄina popularnih odjemalcev za e-poÅ¡to. ÄŒe niste prepriÄani, kaj storiti, se odloÄite za %S izbiro. first=prvi second=drugi # Strings used in am-enigprefs.js encryptKeyHeader=Izberite kljuÄ OpenPGP za Å¡ifriranje identityName=Identiteta: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Vklopili ste Å¡ifriranje, niste pa izbrali nobenega kljuÄa. Da bi poÅ¡iljali %S Å¡ifrirana sporoÄila, morate izbrati enega ali veÄ veljavnih kljuÄev. Želite izklopiti Å¡ifriranje? noKeyToUse=(brez - ne zaklepaj) noEmptyRule=Pravila ne smejo biti prazna. Prosimo, vnesite vsaj en e-poÅ¡tni naslov. invalidAddress=Vneseni e-poÅ¡tni naslovi niso veljavni. Ne smete vnesti imen prejemnikov, temveÄ zgolj e-poÅ¡tne naslove. Primer:\nNeveljavno: Janez Kranjski \nPravilno: janez.kranjski@domena.si noCurlyBrackets=Oklepaja {} imata poseben pomen in se ne smeta uporabljati v e-poÅ¡tnih naslovih. ÄŒe želite spremeniti pravila za prejemnike, potem izberite možnost 'Uporabi pravilo, Äe prejemnik ...'.\nVeÄ informacij dobite na gumbu PomoÄ. # Strings used in enigmailRulesEditor.js never=nikoli always=vedno possible=ko je mogoÄe deleteRule=Želite izbrisati izbrana pravila? nextRcpt=(naslednji prejemnik) negateRule=ne addKeyToRule=Dodaj kljuÄ %1$S (%2$S) pravilu za uporabnika # Strings used in enigmailSearchKey.js needOnline=Funkcija, ki ste jo izbrali, ni na voljo v naÄinu brez povezave. Prosimo, povežite se in poskusite znova. protocolNotSupported=Protokol '%S://', ki ste ga izbrali, ni podprt za prenos kljuÄev OpenPGP. gpgkeysDisabled=Pomagalo bo, Äe omogoÄite izbiro 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Ni se mogoÄe povezati s strežnikom kljuÄev na naslovu %S. keyDownloadFailed=Prenos kljuÄa s strežnika kljuÄev ni uspel. SporoÄilo o stanju se glasi:\n%S internalError=PriÅ¡lo je do notranje napake. KljuÄev ni bilo mogoÄe prenesti ali uvoziti. noKeyFound=Oprostite, a ni mogoÄe najti nobenega kljuÄa, ki bi ustrezal navedenemu e-poÅ¡tnemu naslovu. # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Iskanje ali prenos kljuÄa s strežnika kljuÄev: gpgkeys_%S ni bilo mogoÄe izvesti. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Nastavljanje zaupanja kljuÄa ni uspelo # Strings in enigmailSignKeyDlg.js signKeyFailed=Podpisovanje kljuÄa ni uspelo alreadySigned.label=Opomnik: kljuÄ %S je že podpisan z izbranim skrivnim kljuÄem. alreadySignedexportable.label=Opomba: kljuÄ %S je že podpisan za izvažanje z izbranim zasebnim kljuÄem. Lokalni podpis ni smiseln. partlySigned.label=Opomba: nekateri uporabniÅ¡ki ID-ji kljuÄa %S so že podpisani z izbranim skrivnim kljuÄem. noTrustedOwnKeys=Primernega kljuÄa za podpisovanje ni bilo najdenega! Potrebujete vsaj en popolnega zaupanja vreden kljuÄ za podpisovanje drugih kljuÄev. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Poteka nalaganje kljuÄev, prosimo, poÄakajte ... keyValid.unknown=neznan keyValid.invalid=neveljaven keyValid.disabled=onemogoÄen keyValid.revoked=preklican keyValid.expired=pretekel keyValid.noSubkey=ni veljavnega podkljuÄa keyTrust.untrusted=ni vreden zaupanja keyTrust.marginal=delno zaupanje keyTrust.full=zaupanje keyTrust.ultimate=popolno zaupanje keyTrust.group=(skupina) keyType.public=jav keyType.publicAndSec=jav/skr keyMan.enableKey=OmogoÄi kljuÄ keyMan.disableKey=OnemogoÄi kljuÄ userAtt.photo=UporabniÅ¡ki atribut (slika JPEG) asciiArmorFile=Zavarovane datoteke ASCII (*.asc) importKeyFile=Uvozi datoteko kljuÄa OpenPGP gnupgFile=Datoteke GnuPG saveRevokeCertAs=Ustvari in shrani potrdilo o preklicu revokeCertOK=Potrdilo o preklicu uspeÅ¡no ustvarjeno. Uporabite ga lahko za razveljavitev svojega javnega kljuÄa, npr. Äe bi izgubili svoj skrivni kljuÄ.\n\nProsimo prenesite ga na medij, ki je lahko shranjen na varnem, kot npr. CD ali disketa. ÄŒe kdo pridobi dostop do tega potrdila, ga lahko uporabi za razveljavitev vaÅ¡ega kljuÄa. revokeCertFailed=Potrdila o preklicu ni bilo mogoÄe ustvariti. addUidOK=UporabniÅ¡ka ID uspeÅ¡no dodana addUidFailed=Dodajanje uporabniÅ¡ke ID ni uspelo noKeySelected=Za izvedbo izbrane operacije morate izbrati vsaj en kljuÄ exportToFile=Izvozi javni kljuÄ v datoteko exportKeypairToFile=Izvozi tajni in javni kljuÄ v datoteko exportSecretKey=Želite vkljuÄiti skrivni kljuÄ v shranjeno datoteko kljuÄa OpenPGP? saveKeysOK=KljuÄi so bili uspeÅ¡no shranjeni saveKeysFailed=Shranjevanje kljuÄev ni uspelo importKeysFailed=Uvoz kljuÄev ni uspel enableKeyFailed=OmogoÄanje/onemogoÄanje kljuÄa ni uspelo specificPubKeyFilename=%1$S (0x%2$S) jav specificPubSecKeyFilename=%1$S (0x%2$S) jav-skr defaultPubKeyFilename=Izvoženi-javni-kljuÄi defaultPubSecKeyFilename=Izvoženi-javni-in-skrivni-kljuÄi noSecretKeys=Najdenih ni bilo skrivnih kljuÄev.\n\nŽelite zdaj tvoriti svoj lastni kljuÄ? sendKeysOk=KljuÄ(i) uspeÅ¡no poslani sendKeysFailed=PoÅ¡iljanje kljuÄev ni uspelo receiveKeysOk=KljuÄ(i) uspeÅ¡no posodobljeni receiveKeysFailed=Prenos kljuÄev ni uspel importFromClip=Želite uvoziti nekatere kljuÄe iz odložiÅ¡Äa? importFromUrl=Prenesi javni kljuÄ iz tega URL-ja: copyToClipbrdFailed=Kopiranje izbranega kljuÄa(-ev) v odložiÅ¡Äe ni uspelo. copyToClipbrdOK=KljuÄ(i) kopirani v odložiÅ¡Äe deleteSecretKey=OPOZORILO: Izbrisati želite skrivni kljuÄ!\nÄŒe izbriÅ¡ete svoj skrivni kljuÄ, ne boste veÄ mogli deÅ¡ifrirati sporoÄil, Å¡ifriranih za ta kljuÄ.\n\nResniÄno želite izbrisati OBA, skrivni kljuÄ in javni kljuÄ\n'%S'? deleteMix=OPOZORILO: Izbrisati želite skrivne kljuÄe!\nÄŒe izbriÅ¡ete svoj skrivni kljuÄ, ne boste veÄ mogli deÅ¡ifrirati sporoÄil, Å¡ifriranih za ta kljuÄ.\n\nResniÄno želite izbrisati OBA, skrivni kljuÄ in javni kljuÄ? deletePubKey=Želite izbrisati javni kljuÄ\n'%S'? deleteSelectedPubKey=Želite izbrisati javne kljuÄe? deleteKeyFailed=KljuÄa ni mogoÄe izbrisati. revokeKeyQuestion=Ste pred preklicem kljuÄa '%S'.\n\nS tem kljuÄem ne boste mogli veÄ podpisovati in ga porazdelitvi ne boste veÄ mogli uporabljati za Å¡ifriranje. Å e vedno ga lahko uporabljate za deÅ¡ifriranje starih sporoÄil.\n\nAli želite nadaljevati? revokeKeyOk=KljuÄ je bil preklican. ÄŒe je vaÅ¡ kljuÄ na voljo na strežniku kljuÄev, je priporoÄljivo, da ga ponovno naložite nanj, tako da drugi lahko opazijo preklic. revokeKeyFailed=KljuÄa ni mogoÄe preklicati. refreshAllQuestion=Nobenega kljuÄa niste izbrali. Bi radi osvežili VSE kljuÄe? refreshKey.warn=Opozorilo: glede na Å¡tevilo kljuÄev in hitrost povezave je lahko osveževanje vseh kljuÄev razmeroma dolg postopek! downloadContactsKeys.warn=Opozorilo: glede na Å¡tevilo stikov in hitrost povezave je prenos vseh kljuÄev lahko zelo dolg postopek! downloadContactsKeys.importFrom=Želite uvoziti stike iz adresarja '%S'? keyMan.button.exportSecKey=&Izvozi skrivne kljuÄe keyMan.button.exportPubKey=Izvozi le &javne kljuÄe keyMan.button.import=&Uvozi keyMan.button.refreshAll=&Osveži vse kljuÄe keyMan.button.revokeKey=&PrekliÄi kljuÄ keyMan.button.skip=Pre&skoÄi kljuÄ keylist.noOtherUids=Nima drugih identitet keylist.hasOtherUids=Znan(a) tudi kot keylist.noPhotos=Fotografija ni na voljo keylist.hasPhotos=Fotografije keyMan.addphoto.filepicker.title=Izberite fotografijo za dodajanje keyMan.addphoto.warnLargeFile=Datoteka, ki ste jo izbrali, je veÄja od 25kB.\nNe priporoÄamo, da dodajate velike datoteke, ker se s tem zelo poveÄujejo kljuÄi. keyMan.addphoto.noJpegFile=Izbrana datoteka ni datoteka JPEG. Izberite drugo datoteko. keyMan.addphoto.failed=Slike ni mogoÄe dodati. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Spreminjanje primarnega uporabniÅ¡ke ID ni uspelo changePrimUidOK=Primarna uporabniÅ¡ka ID uspeÅ¡no spremenjena deleteUidFailed=Brisanje uporabniÅ¡ke ID %S ni uspelo deleteUidOK=UporabniÅ¡ka ID %S uspeÅ¡no izbrisana revokeUidFailed=Preklic uporabniÅ¡ke ID %S ni uspel revokeUidOK=UporabniÅ¡ka ID %S je bila uspeÅ¡no preklicana. ÄŒe je vaÅ¡ kljuÄ na voljo na strežniku kljuÄev, je priporoÄljivo, da ga ponovno naložite nanj, tako da drugi lahko opazijo preklic. revokeUidQuestion=ResniÄno želite preklicati uporabniÅ¡ko ID %S? deleteUidQuestion=ResniÄno želite izbrisati uporabniÅ¡ko ID %S?\n\nProsimo, preberite: Äe ste svoj javni kljuÄ poslali na strežnik kljuÄev, izbris uporabniÅ¡kega ID ne bo niÄesar spremenil. V tem primeru bi morali uporabiti možnost 'PrekliÄi uporabniÅ¡ki ID'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=USPEH! KljuÄi uvoženi importInfoSuccess=✅ importInfoBits=Biti importInfoCreated=Ustvarjeno importInfoFpr=Prstni odtis importInfoDetails=(podrobnosti) importInfoNoKeys=Noben kljuÄ se ni uvozil. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=javni kljuÄ keyTypePrimary=primarni kljuÄ keyTypeSubkey=podkljuÄ keyTypePair=par kljuÄev keyExpiryNever=nikoli keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Å ifriraj keyUsageSign=PodpiÅ¡i keyUsageCertify=Potrdi keyUsageAuthentication=Overjanje keyDoesNotExpire=KljuÄ ne poteÄe # Strings in enigmailGenCardKey.xul keygen.started=Prosimo, poÄakajte, da se ustvari kljuÄ ... keygen.completed=KljuÄ je bil ustvarjen. ID novega kljuÄa je: 0x%S keygen.keyBackup=KljuÄ je bil varnostno kopiran kot %S keygen.passRequired=Prosimo, navedite geslo, Äe želite ustvariti varnostno kopijo svojega kljuÄa zunaj pametne kartice. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN, ki ste ga vnesli, se ne ujema; prosimo, vnesite ponovno cardPin.minLength=PIN mora imeti najmanj %S znakov ali Å¡tevilk cardPin.processFailed=Sprememba PIN ni uspela # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Osveževanje kljuÄev je v teku, prosimo, poÄakajte ... keyserverProgress.uploading=PrenaÅ¡anje kljuÄev je v teku, prosimo, poÄakajte ... keyserverTitle.refreshing=Osveževanje kljuÄev keyserverTitle.uploading=Prenos kljuÄev # Strings in enigmailSetupWizard passphrase.min8keys=Geslo mora vsebovati najmanj osem znakov! setupWizard.reallyCancel=ResniÄno želite zapreti namestitvenega Äarovnika Enigmail? setupWizard.invalidGpg=Datoteka, ki ste jo navedli, ni izvrÅ¡ljiv program GnuPG. Navedite drugo datoteko. setupWizard.specifyFile=Za nadaljevanje morate navesti vsaj datoteko javnega kljuÄa. setupWizard.installFailed=Zdi se, da namestitev ni bila uspeÅ¡na. Ponovno poskusite z namestitvijo ali namestite GnuPG roÄno in ga poiÅ¡Äite z gumbom Prebrskaj. setupWizard.downloadForbidden=Zaradi vaÅ¡e varnosti ne bomo prenesli GnuPG. ObiÅ¡Äite http://www.gnupg.org/ in roÄno prenesite GnuPG. setupWizard.downloadImpossible=Trenutno ne morete prenesti GnuPG. Poskusite znova kasneje ali obiÅ¡Äite http://www.gnupg.org/ ter odtod prenesite GnuPG. setupWizard.hashSumError=ÄŒarovnik integritete prenesen datoteke ni uspel preveriti. Datoteka je morda okvarjena ali Å¡kodljivo spremenjena. Želite kljub temu nadaljevati z nameÅ¡Äanjem? setupWizard.importSettingsFile=Navedite datoteko varnostne kopije za nalaganje setupWizard.invalidSettingsFile=Navedena datoteka ni pravilna datoteka varnostne kopije nastavitev Enigmaila. setupWizard.gpgConfExists=Datoteka nastavitev GnuPG že obstaja. Ali jo želite prepisati z datoteko iz stare namestiteve? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Pri prenaÅ¡anju GnuPG je priÅ¡lo do napake. Preverite zapisnik konzole za podrobnosti. installGnuPG.installFailed=Pri nameÅ¡Äanju GnuPG je priÅ¡lo do napake. Preverite zapisnik konzole za podrobnosti. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Vnesti morate ime in e-poÅ¡tni naslov addUidDlg.nameMinLengthError=Ime mora obsegati najmanj pet znakov addUidDlg.invalidEmailError=Navesti morate veljaven e-poÅ¡tni naslov addUidDlg.commentError=V komentarjih oklepaji niso dovoljeni # Strings in enigmailCardDetails.js Carddetails.NoASCII=Pametne kartice OpenPGP v imenu podpirajo samo znake ASCII. # network error types errorType.SecurityCertificate=Varnostno potrdilo, ki ga izkazuje spletna storitev, ni veljavno. errorType.SecurityProtocol=Varnostni protokol, ki ga uporablja spletna storitev, ni znan. errorType.Network=PriÅ¡lo je do omrežne napake. # filter stuff filter.folderRequired=Izbrati morate ciljno mapo. filter.decryptMove.label=DeÅ¡ifriraj za vedno (Enigmail) filter.decryptCopy.label=Ustvari deÅ¡ifrirano kopijo (Enigmail) filter.decryptMove.warnExperimental=Opozorilo - dejanje filtra "Trajno deÅ¡ifriraj" lahko privede do uniÄenih sporoÄil.\n\nZelo priporoÄamo, da najprej poskusite s filtrom "Ustvari deÅ¡ifrirano kopijo", skrbno preskusite rezultat in zaÄnite uporabljati ta filter samo, ko ste zadovoljni z rezultatom. # strings in enigmailConvert.jsm converter.decryptBody.failed=SporoÄila z zadevo "%S" ni bilo mogoÄe Å¡ifrirati.\nAli želite ponovno poskusiti z drugim geslom ali želite sporoÄilo preskoÄiti? converter.decryptAtt.failed=Priponke "%1$S" v sporoÄilu z zadevo\n"%2$S"\nni bilo mogoÄe deÅ¡ifrirati.\nAli želite ponovno poskusiti z drugim geslom ali želite sporoÄilo preskoÄiti?\n saveLogFile.title=Shrani zapisniÅ¡ko datoteko # strings in gpg.jsm unknownSigningAlg=Neznan algoritem podpisovanja (ID: %S) unknownHashAlg=Neznano Å¡ifrirno razprÅ¡ilo (ID: %S) # strings in keyRing.jsm keyring.photo=Fotografija keyRing.pubKeyRevoked=KljuÄ %1$S (ID kljuÄa %2$S) je bil preklican. keyRing.pubKeyExpired=KljuÄ %1$S (ID kljuÄa %2$S) je potekel. keyRing.pubKeyNotForSigning=KljuÄa %1$S (ID kljuÄa %2$S) ni mogoÄe uporabiti za podpisovanje. keyRing.pubKeyNotForEncryption=KljuÄa %1$S (ID kljuÄa %2$S) ni mogoÄe uporabiti za Å¡ifriranje. keyRing.keyDisabled=KljuÄ %1$S (ID kljuÄa %2$S) je onemogoÄen; ni ga mogoÄe uporabiti. keyRing.keyNotTrusted=KljuÄ %1$S (ID kljuÄa %2$S) ni dovolj zaupanja vreden. Za podpisovanje nastavite raven zaupanja na "skrajno". keyRing.keyInvalid=KljuÄ %1$S (ID kljuÄa %2$S) je neveljaven (ni samopodpisan). keyRing.signSubKeysRevoked=Vsi podkljuÄi za podpisovanje kljuÄa %1$S (ID kljuÄa %2$S) so bili preklicani. keyRing.signSubKeysExpired=Vsi podkljuÄi za podpisovanje kljuÄa %1$S (ID kljuÄa %2$S) so potekli. keyRing.signSubKeysUnusable=Vsi podkljuÄi za podpisovanje kljuÄa %1$S (ID kljuÄa %2$S) so potekli, bili preklicani ali so drugaÄe neuporabni. keyRing.encSubKeysRevoked=Vsi podkljuÄi za Å¡ifriranje kljuÄa %1$S (ID kljuÄa %2$S) so bili preklicani. keyRing.encSubKeysExpired=Vsi podkljuÄi za Å¡ifriranje kljuÄa %1$S (ID kljuÄa %2$S) so potekli. keyRing.noSecretKey=Videti je, da nimate skrivnostnega kljuÄa za %1$S (ID kljuÄa %2$S) na svoji verigi; kljuÄa ne morete uporabiti za podpisovanje. keyRing.encSubKeysUnusable=Vsi podkljuÄi za Å¡ifriranje kljuÄa %1$S (ID kljuÄa %2$S) so potekli, bili preklicani ali so drugaÄe neuporabni. #strings in exportSettingsWizard.js cannotWriteToFile=Ni mogoÄe shraniti v datoteko '%S'. Izberite drugo datoteko. dataExportError=Med izvažanjem podatkov se je pojavila napaka. enigmailSettings=Nastavitve Enigmail defaultBackupFileName=Izvoz Enigmail specifyExportFile=Navedite ime datoteke za izvoz homedirParamNotSUpported=Dodatni parametri, ki doloÄajo poti, kot je --homedir in --keyring, niso podprti za izvažanje/obnavljanje nastavitev. Uporabite nadomestne naÄine, kot je nastavitev spremenljivke okolja GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=VaÅ¡ kljuÄ %1$S bo potekle Äez %2$S dni.\n\nPriporoÄamo, da ustvarite nov par kljuÄev in ustrezne raÄune nastavite za njihovo uporabo. expiry.keysExpireSoon=Naslednji kljuÄi bodo v manj kot %1$S-ih dneh potekli:\n%2$S. PriporoÄamo, da ustvarite nove in svoje raÄune nastavite za njihovo uporabo. enigmail/lang/sl/help/000077500000000000000000000000001266701624400151425ustar00rootroot00000000000000enigmail/lang/sl/help/compose.html000066400000000000000000000074671266701624400175130ustar00rootroot00000000000000 PomoÄ za Enigmail: Sestavljanje sporoÄil

PomoÄ za Enigmail

Uporaba Enigmaila pri sestavljanju sporoÄil

  • Meni Enigmail v oknu PoÅ¡ta/Sestavi
    • PodpiÅ¡i sporoÄilo: omogoÄi/onemogoÄi poÅ¡iljanje podpisane poÅ¡te. Uporabnik je obveÅ¡Äen, Äe podpisovanje ne uspe.
    • Å ifriraj sporoÄilo: omogoÄi/onemogoÄi Å¡ifriranje vsem prejemnikom pred poÅ¡iljanjem. Uporabnik je obveÅ¡Äen, Äe Å¡ifriranje ne uspe.

      ÄŒe je nastavljeno Prikaži izbiro, ko je to potrebno v Nastavitve -> zavihek Izbira kljuÄa, se pojavi seznam s kljuÄi, Äe so naslovi na voljo v seznamu prejemnikovi za sporoÄilo, za katerega nimate javnega kljuÄa.

      ÄŒe je nastavljeno Nikoli ne prikaži pogovornega okna Izbira kljuÄa OpenPGP v Nastavitve -> zavihek Izbira kljuÄa in se v seznamu prejemnikov sporoÄila nahajajo naslovi, za katere nimate javnega kljuÄa, bo sporoÄilo odposlano neÅ¡ifrirano.

    • Za to sporoÄilo uporabi PGP/MIME: omogoÄi/onemogoÄi uporabo PGP/MIME za to sporoÄilo.

      Če poznani prejemnik/i lahko berejo pošto z uporabo zapisa PGP/MIME, bi ga morali uporabiti.

      Ta možnost je odvisna od nastavitev v Nastavitve -> zavihek PGP/MIME - Äe je nastavljeno Dovoli uporabo PGP/MIME ali Vedno uporabi PGP/MIME.

    • Privzete možnosti sestavljanja: podmeni.
      • Možnosti podpisovanja/Å¡ifriranja ...: bližnjica prek Nastavitve raÄuna -> Možnosti OpenPGP.
      • Možnosti poÅ¡iljanja ...: bližnjica prek Nastavitve -> zavihek PoÅ¡iljanje.
      • Key selection options...: bližnjica prek Nastavitve -> zavihek Izbira kljuÄa.
      • Možnosti PGP/MIME ...: bližnjica prek Nastavitve -> zavihek PGP/MIME.
    • Razveljavi Å¡ifriranje: Äe pride do napake pri poÅ¡iljanju sporoÄila, npr. Äe strežnik POP ne sprejme zahteve, Enigmail o tem ne bo obveÅ¡Äen in Å¡ifrirano sporoÄilo bo Å¡e naprej prikazano v oknu Sestavljanje. S to menijsko izbiro boste razveljavili Å¡ifriranje/podpisovanje, s Äimer boste v oknu Sestavljanje besedilov povrnili v izvoren zapis.
      Kot zaÄasno reÅ¡itev lahko to možnost uporabite tudi za deÅ¡ifriranje citiranega besedila, ko odgovarjate na Å¡ifrirana sporoÄila. Enigmail bi moral samodejno deÅ¡ifrirati citirano sporoÄilo, vendar Äe to ne uspe, lahko uporabite to menijsko izbiro, da ga v to prisilite.
    • Vstavi javni kljuÄ: vstavi blok javnega kljuÄa z ASCII oklepnikom na trenutni položaj kazalke v oknu Sestavljanje. Vnesti boste morali e-poÅ¡tne naslove kljuÄa(ev), ki naj bodo vstavljeni. Na ta naÄin vstavljeni kljuÄi bodo samodejno prepoznani na sprejemnem delu Enigmaila. Po vstavljanju kljuÄa lahko Å¡e vedno izbirate med podpisovanjem/Å¡ifriranjem sporoÄila. Prav tako v sporoÄilo ne smete vstaviti veÄ kot enega bloka kljuÄa; le navedite veÄ e-poÅ¡tnih naslovov, loÄenih z vejicami ali presledki, ko boste po tem povpraÅ¡ani.
    • PoÄisti shranjeno geslo: poÄisti v spominu hranjeno geslo. Uporabno, Äe imate veÄ gesel.
    • PomoÄ: prikaže informacije pomoÄi s spletne strani (te strani).

Nadaljno pomoÄ najdete na spletni strani pomoÄi za Enigmail.

enigmail/lang/sl/help/editRcptRule.html000066400000000000000000000122101266701624400204320ustar00rootroot00000000000000 PomoÄ za Enigmail: Urejanje pravil OpenPGP

PomoÄ za Enigmail

Uporaba Urejevalnika pravil Enigmail: Uredi pravilo OpenPGP

V urejevalniku pravil lahko navedete privzete dejavnosti po uporabniku za omogoÄanje Å¡ifriranja, podpisovanje in PGP/MIME, ter doloÄite, kateri kljuÄ(i) OpenPGP naj bo(do) uporabljen(i). V tem pogovornem oknu lahko doloÄite pravila za posameznega prejemnika ali za skupino prejemnikov z zelo podobnimi atributi.

  • Nastavi pravila OpenPGP za: vsebuje e-poÅ¡tne naslove za prejemnike (brez imen, torej le naslove, kot je nekdo@neka.domena). DoloÄite lahko veÄ e-poÅ¡tnih sporoÄil, loÄenih s presledkom. Tukaj neveden naslov lahko sestavlja le del domene, tako da se bo ujemalo vsako sporoÄilo na kateri koli naslov iz te domene, npr. @neka.domena omogoÄa ujemanje francelj@neka.domena, nekdodrug@neka.domena, vsakdo@neka.domena itn.
  • Uporabi pravilo, Äe prejemnik ...: S tem spremenite ujemanje e-naslovov. ÄŒe je vnesenih veÄ naslovov, bo nastavitev veljala za vse. Spodnji primeri temeljijo na body@email.domain, vnesenem v gornjem polju Pravila OpenPGP.
    • je enako: s to nastavitvijo se bo pravilo sprožilo le na e-sporoÄilih za body@email.domain (natanÄno ujemanje, ne razlikuje velikih/malih Ärk).
    • vsebuje: s to nastavitvijo se ujema vsak e-naslov, ki vsebuje tak niz, npr. anybody@email.domain ali body@email.domain.net
    • se zaÄne z: s to nastavitvijo se ujemajo vsi e-naslovi, ki se zaÄenjajo z ujemajoÄim nizom, npr. body@email.domain.net, body@email.domain-name.com.
    • se konÄa z: s to nastavitvijo se ujemajo vsi e-naslovi, ki se konÄujejo z ujemajoÄim nizom, npr. anybody@email.domain, somebody@email.domain.
  • Nadaljuj z naslednjim pravilom za ujemajoÄi naslov
    VkljuÄitev te funkcije vam omogoÄa doloÄanje pravila, ne da bi morali navesti ID kljuÄa v polje Uporabi naslednje kljuÄe OpenPGP:, tako da je e-naslov uporabljen za preverjanje kljuÄa ob Äasu poÅ¡iljanja. Prav tako bodo procesirana tudi nadaljna pravila za iste naslove.
  • Ne preverjaj nadaljnjih pravil za ujemajoÄi naslov
    Z vkljuÄitvijo te funkcije ustavite obdelavo vseh drugih pravil za ujemajoÄ(i) naslov(e), Äe je temu pravilu ustreženo; t.j. obdelava pravil nadaljuje z naslednjim prejemnikom.
  • Uporabi naslednje kljuÄe OpenPGP:
    Uporabite gumb Izberi kljuÄ(e) ... za izbor kljuÄev prejemnika, ki naj bodo uporabljeni za Å¡ifriranje. Tako kot pri gornjem dejanju ne bodo obdelana nobena druga pravila za ujemajoÄe naslove.
  • Privzeto za podpisovanje: vkljuÄite ali izkljuÄite podpisovanje sporoÄil. S tem uporabite ali prekliÄete, kar ste doloÄili v oknu sestavljanja sporoÄil. Vrednosti so:
    • nikoli: onemogoÄite podpisovanje, Äeprav je morda omogoÄeno v oknu sestavljanja sporoÄila (preglasi druge vrednosti);
    • da, Äe je izbrano v sestavljanju sporoÄila: podpisovanje poteka v skladu z izbranim v oknu sestavljanja sporoÄila;
    • vedno: omogoÄite podpisovanje, Äetudi ni omogoÄeno v oknu sestavljanja sporoÄila;
Te nastavitve podpisovanja se uporabljajo za vsa pravila, ki se ujemajo. ÄŒe eno od pravil prepoveduje podpisovanje, sporoÄilo ne bo podpisano, ne glede na druga pravila, ki morda doloÄajo vedno.
  • Å ifriranje: vkljuÄite ali izkljuÄite Å¡ifriranje sporoÄil. Dovoljene nastavitve in njihov pomen so enaki kot za podpisovanje sporoÄil.
  • PGP/MIME: vkljuÄite ali izkljuÄite uporabo kodiranja sporoÄil PGP/MIME (RFC 3156). ÄŒe je PGP/MIME izkljuÄen, so sporoÄila kodirana z uporabo "medvrstiÄnega PGP". Dovoljene vrednosti in njihov pomen so enaki kot za podpisovanje sporoÄil.

Pravila se obdelujejo v zaporedju seznama v Urejevalniku pravil OpenPGP. VsakiÄ, ko se pravilo ujema s prejemnikom in ko vsebuje ID kljuÄa OpenPGP, poleg uporabe navedenega ID kljuÄa, se prejemnik ne obravnava veÄ pri obdelavi naslednjih pravil.


Nadaljno pomoÄ najdete na strani nastavitev Enigmail po prejemniku.

enigmail/lang/sl/help/messenger.html000066400000000000000000000075601266701624400200300ustar00rootroot00000000000000 PomoÄ za Enigmail: Branje sporoÄil

PomoÄ za Enigmail

Uporaba Enigmail pri branju sporoÄil

  • Gumb DeÅ¡ifriraj v glavnem oknu PoÅ¡ta
    Ta gumb lahko uporabite za veÄ dejanj: deÅ¡ifriranje, preverjanje ali uvoz javnih kljuÄev. ObiÄajno se deÅ¡ifriranje/preverjanje izvede samodejno, Äeprav lahko to izkljuÄite v nastavitvah. ÄŒe pa to ne uspe, se ponavadi pokaže kratko sporoÄilo o napaki v vrstici stanja Enigmaila. ÄŒe kliknete na gumb DeÅ¡ifriraj, boste videli bolj natanÄno sporoÄilo o napaki, vkljuÄno z izhodom ukaza GnuPG.
  • Ikoni Pisalo in KljuÄ v prikazu glave sporoÄila
    Ikoni Pisalo in KljuÄ v glavi sporoÄila nakazujeta, da je bilo sporoÄilo, ki ga prebirate podpisano in/ali Å¡ifrirano in da ali je podpis dober, t.j. da sporoÄilo od trenutka podpisa ni bilo spremenjeno. ÄŒe je bilo sporoÄilo spremenjeno, se ikona Peresa spremeni v Polomlneno pero, kar nakazuje nepravilen podpis. Z desnim klikom na ikono Pero ali KljuÄ se pojavi meni z naslednjimi možnostmi:
    • Podatki o varnosti OpenPGP: omogoÄa ogled izhodnega stanja iz GnuPG za to sporoÄilo.
    • Kopiraj varnostne podatke OpenPGP: skopira izhodno stanje iz GnuPG na odložiÅ¡Äe; za lepljenje v sporoÄilo-odgovor itn.
    • Pokaži fotografski ID OpenPGP: omogoÄa ogled Fotografskega ID osebe, ki je poslala sporoÄilo, Äe imajo fotografijo vdelano v svoj javni kljuÄ. (Ta možnost je na voljo le, Äe fotografski ID obstaja v njihovem kljuÄu.)
    • Varnostni podatki S/MIME: omogoÄa ogled varnostnih podatkov S/MIME za sporoÄilo.

    ÄŒe nimate nastavljenega keyserver-options autoretrieve-key v datoteki gpg.conf in preberete sporoÄilo, ki je podpisano ali Å¡ifrirano, boste videli ikono Peresa v podroÄju izpisa glave z VpraÅ¡ajem, vrstica stanja Enigmaila v podroÄju glave bo izpisala Del sporoÄila je podpisan; kliknite ikono peresa za podrobnosti in sporoÄilo v podoknu sporoÄila bo prikazalo vse pokazatelje blokov sporoÄila OpenPGP in blok podpisa.

    Ta znak boste videli tudi, Äe imate nastavljeno keyserver-options auto-key-retrieve v svoji datoteki gpg.conf, vendar kljuÄ OpenPGP ni na voljo na privzetem strežniku kljuÄev.

    S klikom na ikono Pero in vpraÅ¡aj prikliÄete okno z obvestilom, da kljuÄ ni na voljo v vaÅ¡em skladiÅ¡Äu kljuÄev. ÄŒe kliknete V redu, se pojavi novo okno s seznamom strežnikov kljuÄev, s katerega izberete tistega, s katerega naj bo prenesen javni kljuÄ poÅ¡iljatelja.

    Za nastavitev seznama strežnikov kljuÄev, ki bi jih radi uporabljali, pojdite na zavihek Enigmail -> Nastavitve -> SploÅ¡no in vnesite naslove strežnikov kljuÄev v polje Strežnik(i) kljuÄev:, loÄene z vejico. Prvi strežnik kljuÄev na seznamu bo uporabljen kot privzeti.

  • Odpiranje Å¡ifriranih priponk / uvažanje pripetih kljuÄev OpenPGP
    Priponke s konÄnicami *.pgp, *.asc in *.gpg so prepoznane kot priponke, ki jih Enigmail lahko posebej obdela. Z desnim klikom na takÅ¡no priponko se v pojavnem meniju pojavita dve posebni izbiri: DeÅ¡ifriraj in odpri in DeÅ¡ifriraj in shrani. Ti izbiri uporabite, Äe želite, da Enigmail priponko deÅ¡ifrira, preden jo odprete ali shranite. ÄŒe je priponka prepoznana kot datoteka kljuÄa OpenPGP, vam bo ponujen uvoz kljuÄev v vaÅ¡o shrambo kljuÄev.

Nadaljna pomoÄ je na voljo na spletni strani pomoÄi za Enigmail.

enigmail/lang/sl/help/rulesEditor.html000066400000000000000000000060711266701624400203350ustar00rootroot00000000000000 PomoÄ za Enigmail: Urejevalnik pravil

PomoÄ za Enigmail

Uporaba urejevalnika pravil Enigmail

V Urejevalniku pravil lahko doloÄite privzete vrednosti za prejemnike z omogoÄanjem Å¡ifriranja, podpisovanja in PGP/MIME, ter doloÄite, katerei kljuÄ(i) OpenPGP naj bo(do) uporabljen(i). Vsako pravilo sestavlja pet polj in je predstavljeno v eni vrstici:

  • Email: e-sporoÄilo(a) from the To:, Cc: and Bcc: fields to match. Ujemanje deluje na podnizih (Podrobnosti najdete v pogovornem oknu Urejanja pravil)
  • KljuÄ(i) OpenPGP: seznam ID kljuÄev OpenPGP, ki naj se uporabi(jo) za naslovnika
  • Podpisovanje: omogoÄi ali onemogoÄi podpisovanje sporoÄil. To ali uporabi ali pa prezre nastavitve v oknu sestavljanja sporoÄila. Možne vrednosti so:
    • nikoli: onemogoÄi podpisovanje, Äeprav je omogoÄeno v oknu sestavljanja sporoÄila (preglasi druge vrednosti)
    • dovoli: prepusti nastavitev podpisovanja doloÄitvi v oknu sestavljanja sporoÄila
    • vedno: omogoÄi podpisovanje, Äetudi ni omogoÄeno v oknu sestavljanja sporoÄila
Te nastavitve podpisovanja se upoÅ¡tevajo pri vseh ujemajoÄih pravilih. ÄŒe eno od pravil onemogoÄi podpisovanje, sporoÄilo ne bo podpisoano, ne glede na doloÄila dugega pravila, ki doloÄa podpisovanje Vedno.
  • Å ifriraj: omogoÄi ali onemogoÄi Å¡ifriranje sporoÄila. Dovoljene nastavitve in njihov pomen so enaki kot pri podpisovanju sporoÄila.
  • PGP/MIME: omogoÄi ali onemogoÄi uporabo Å¡ifriranja sporoÄil PGP/MIME (RFC 3156). ÄŒe je PGP/MIME onemogoÄen, se sporoÄila Å¡ifrirajo z uporabo "inline PGP". Dovoljene vrednosti in njihov pomen so enaki kot pri podpisovanju sporoÄil.

Pravila se procesirajo v vrstnem redu seznama. Ko se pravilo ujema s prejemnikom in vsebuje ID kljuÄa OpenPGP poleg zporabe navedenega ID kljuÄa, se prejemnik veÄ ne preuÄuje pri procesiranju nadaljnih pravil.

Opomba: Urejevalnik pravil Å¡e ni dokonÄan. Možno je napisati nekaj naprednejÅ¡ih pravil z neposrednim urejanjem datoteke pravil (ta pravila kasneje veÄ ne smete urejati v urejevalniku pravil). Nadaljne informacije za neposredno urejanje datoteke je na voljo na domaÄi strani Enigmail.


Nadaljna pomoÄ je na voljo na naslovu spletni strani pomoÄi za Enigmail

enigmail/lang/sl/help/sendingPrefs.html000066400000000000000000000047771266701624400204760ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/sq/000077500000000000000000000000001266701624400142175ustar00rootroot00000000000000enigmail/lang/sq/am-enigprefs.properties000066400000000000000000000001171266701624400207110ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Siguri OpenPGP enigmail/lang/sq/enigmail.dtd000066400000000000000000001467141266701624400165160ustar00rootroot00000000000000 Siguri OpenPGP)"> SHËNIM: Prodhimi i kyçeve mund të dojë disa minuta të plotësohet. Mos e mbyllni programin, ndërkohë që kryhet prodhimi i kyçeve. Shfletimi rëndshëm, ose kryerja e veprimeve që e përdorin shumë diskun, gjatë prodhimit të kyçeve do ta rimbushë 'burimin e rastësisë' dhe përshpejtojë procesin. Kur prodhimi i kyçeve të jetë plotësuar, do t’ju njoftohet."> SHËNIM: Prodhimi i kyçeve mund të dojë disa minuta të plotësohet. Mos e mbyllni programin, ndërkohë që kryhet prodhimi i kyçeve. Kur prodhimi i kyçeve të jetë plotësuar, do t’ju njoftohet."> Shënim: Enigmail-i do të verifikojë përherë nënshkrimet në email-e, për çdo llogari ose identitet, pavarësisht se është aktivizuar apo jo për një të tillë"> Kyçi juaj publik shërben për t’u përdorur nga të tjerët që t’ju dërgojnë mesazhe të fshehtëzuar. Mund t’ia jepni kujtdo."> Kyçi juaj privat shërben që ju vetë t’i shfshehtëzoni këto email-e dhe që të dërgoni email-e të nënshkruar. S’duhet t’ia jepni ndokujt."> Kyçi juaj privat shërben që ju t’i shfshehtëzoni këto email-e dhe të dërgoni email-e të nënshkruar. S’duhet t’ia jepni ndokujt. Që ta siguroni kyçin tuaj privat, në dy hapat vijues do t’ju kërkohet një frazëkalim."> Frazëkalimi juaj është një fjalëkalim për mbrojtjen e kyçit tuaj privat. Ai parandalon përdorimin e paautorizuar të kyçit tuaj privat."> Nuk këshillohen shkronjat me shenja sipër (p.sh. ë, é, ñ) dhe shkronja specifike të një gjuhe të caktuar."> Për këtë do t’ju kërkohet të jepni fjalëkalimin tuaj."> eksportoni të dhënat tuaja prej kompjuterit të vjetër duke përdorur ndihmësin e kopjeruajtjeve te Parapëlqimet për Enigmail-in importojini të dhënat tuaja te kompjuteri i ri duke përdorur këtë ndihmës. "> Faleminderit që përdorni Enigmail-in."> eksportoni të dhënat tuaja prej kompjuterit të vjetër duke përdorur këtë ndihmës importojini të dhënat tuaja te kompjuteri i ri duke përdorur Ndihmësin e Rregullimeve. "> enigmail/lang/sq/enigmail.properties000066400000000000000000001215141266701624400201260ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Sinjalizim Enigmail-i enigConfirm=Ripohim Enigmail-i enigError=Gabim Enigmail enigPrompt=Kërkesë nga Enigmail dlgYes=&Po dlgNo=&Jo dlgKeepSetting=Mbaje mend përgjigjen time dhe mos më pyet prapë dlgNoPrompt=Mos ma shfaq më këtë dialog dlg.button.delete=&Fshije dlg.button.cancel=&Anuloje dlg.button.close=&Mbylle dlg.button.continue=&Vazhdoni dlg.button.skip=Anashkal&oje dlg.button.overwrite=&Mbishkruaje dlg.button.view=Sh&iheni dlg.button.retry=&Riprovoni dlg.button.ignore=&Shpërfille repeatPrefix=\n\nKy sinjalizim do të përsëritet %S repeatSuffixSingular=herë tjetër. repeatSuffixPlural=herë të tjera. noRepeat=\n\nKy sinjalizim nuk do të përsëritet pa përmirësuar Enigmail-in. pgpNotSupported=Duket se po përdorni Enigmail-in tok me PGP 6.x\n\nUnfortunately, Për fat të keq, PGP 6.x ka një dorë problemesh që e pengojnë punën normale të Enigmail-it. Ndaj, Enigmail-i nuk i mbulon më versionet PGP 6.x; ju lutemi, në vend të tij, hidhuni te GnuPG (GPG).\n\nNëse ju duhet ndihmë për kalimin te GnuPG, shihni ndarjen Ndihmë te sajti i Enigmail-it. initErr.howToFixIt=Që të mund të përdorni Enigmail-in, lypset GnuPG-ja. Nëse s’e keni instaluar ende GnuPG-në, rruga më e lehtë për ta bërë këtë është të përdorni butonin "Ndihmësi i Rregullimit" më poshtë. initErr.setupWizard.button=Ndihmësi i &Rregullimit passphraseCleared=Frazëkalimi u pastrua. cannotClearPassphrase=Po përdorni një mjet jo-standard (fjala vjen, gnome-keyring) për trajtim frazëkalimesh. Ndaj spastrimi i frazëkalimit s’është i mundur nga brenda Enigmail-it. noPhotoAvailable=S’ka Foto të gatshme debugLog.title=Regjistër Diagnostikimesh Enigmail-i error.photoPathNotReadable=Shtegu '%S' i fotos nuk është i lexueshëm # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Ky version i ri i Enigmail-it ka ndryshime të rëndësishme në trajtimin e parapëlqimeve dhe mundësive. U përpoqëm të mbartim rregullimet e vjetra te ky version i ri. Megjithatë, nuk mund të mbulojmë vetvetiu të gjitha rastet. Ju lutemi, kontrolloni edhe ju rregullimet e reja për parapëlqimet dhe mundësitë. enigmailCommon.checkPreferences=Kontrolloni Parapëlqimet ... preferences.defaultToPgpMime=E kemi ndryshuar parazgjedhjen për kodimin e mesazheve në Enigmail, nga PGP Brendazi në PGP/MIME. Këshillojmë që si parazgjedhje të mbani këtë.\n\nNëse si parazgjedhje, prapëseprapë doni të përdorni PGP Brendazi, mund ta bëni këtë te Rregullime Llogarie nën ndarjen Siguri OpenPGP. usingVersion=Po xhirohet Enigmail-i version %S usingAgent=Po përdoret i ekzekutueshmi %1$S %2$S për fshehtëzim dhe shfshehtëzim agentError=GABIM: Dështoi hyrja te shërbimi Enigmime! accessError=Gabim gjatë hyrjes te shërbimi Enigmail onlyGPG=Prodhimi i kyçeve funksionon vetëm me GnuPG-në (jo me PGP-në)! keygenComplete=Prodhimi i kyçeve u plotësua! Për nënshkrim do të përdoret identiteti <%S>. revokeCertRecommended=Këshillojmë me forcë krijimin e një dëshmie shfuqizimi për kyçin tuaj. Kjo dëshmi mund të përdoret për të bërë të pavlefshëm kyçin tuaj, për shembull, në rast se kyçi juaj i fshehtë humb ose komprometohet. Doni të krijohet tani një dëshmi e tillë shfuqizimi? keyMan.button.generateCert=&Prodhoje Dëshminë genCompleteNoSign=Prodhimi i kyçeve u plotësua! genGoing=Prodhimi i kyçit është duke u kryer! passNoMatch=Zërat për frazëkalimet nuk përputhen; ju lutemi, rijepeni passCheckBox=Ju lutemi, i vini shenjë kutizës, nëse po tregoni se nuk doni frazëkalim për kyçin passUserName=Ju lutemi, tregoni një emër përdoruesi për këtë identitet keygen.missingUserName=S’ka emër të përcaktuar për llogarinë/identitetin e përzgjedhur. Ju lutemi, jepni një vlerë te fusha "Emri juaj", te rregullime llogarie. keygen.passCharProblem=Te frazëkalimi juaj po përdorni shenja speciale. Mjerisht, kjo mund të shkaktojë probleme për aplikacione të tjera. Këshillojmë të zgjidhni një frazëkalim që përbëhet vetëm nga cilado prej këtyre shenjave:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Për arsye teknike, frazëkalimi juaj nuk mund të fillojë ose përfundojë me një shenjë hapësirë. changePassFailed=Ndryshimi i frazëkalimit dështoi. keyConfirm=Të prodhohen kyçet privatë dhe publikë për '%S'? keyMan.button.generateKey=&Prodhoje Kyçin keyAbort=Të ndërpritet prodhimi i kyçeve? keyMan.button.generateKeyAbort=&Ndërprite Prodhimin e Kyçeve keyMan.button.generateKeyContinue=&Vazhdo Prodhimin e Kyçeve expiryTooLong=Nuk mund të krijoni një kyç që skadon për më shumë se 100 vjet. expiryTooLongShorter=Nuk mund të krijoni një kyç që skadon për më shumë se 90 vjet. expiryTooShort=Kyçi juaj duhet të jetë i vlefshëm të paktën për një ditë. dsaSizeLimit=Kyçet DSA të nënshkrimit kufizohen te 3072 bit. Madhësia e kyçit do të reduktohet sipas kësaj. keyGenFailed=Prodhimi i kyçit dështoi. Ju lutemi, për hollësi kontrolloni konsolën Enigmail (Menuja Enigmail > Diagnostikim Enigmail-i). setKeyExpirationDateFailed=Data e skadimit nuk u ndryshua dot # Strings in enigmailMessengerOverlay.js securityInfo=Të dhëna Sigurie Enigmail-i\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Bashkëngjitjet e këtij mesazhi nuk janë nënshkruar ose fshehtëzuar*\r\n\r\n possiblyPgpMime=Mesazh i fshehtëzuar ose nënshkruar ndoshta me PGP/MIME; klikoni mbi butonin Shfshehtëzoje që të verifikohet noDecrypted=Pa mesazh të fshehtëzuar për ruajtje!\nPërdorni urdhrin Ruaje prej menusë Kartelë noMessage=Pa mesazh për ruajtje! useButton=Ju lutemi, klikoni mbi butonin Shfshehtëzoje që të shfshehtëzohet mesazhi saveHeader=Enigmail: Ruajeni mesazhin e shfshehtëzuar saveAttachmentHeader=Enigmail: Ruajeni bashkëngjitjen e shfshehtëzuar noTempDir=Nuk u gjet drejtori e përkohshme ku të shkruhej\nJu lutemi, rregulloni ndryshoren TEMP të mjedisit attachmentPgpKey=Bashkëngjitja '%S' që po hapni duket të jetë një kartelë kyçi OpenPGP.\n\nKlikoni mbi 'Importo' që të importoni kyçet që përmban ose 'Parje' që të shihni lëndën e kartelës në një dritare shfletuesi beginPgpPart=********* *FILLIMI I PJESËS SË FSHEHTËZUAR ose TË NËNSHKRUAR* ********* endPgpPart=********** *FUNDI I PJESËS SË FSHEHTËZUAR ose TË NËNSHKRUAR* ********** notePartEncrypted=Enigmail: *Pjesë të këtij mesazhi NUK janë nënshkruar ose fshehtëzuar* noteCutMessage=Enigmail: *U gjetën blloqe të shumëfishtë mesazhesh -- shfshehtëzimi/verifikimi dështoi* decryptOkNoSig=Kujdes\n\nShfshehtëzimi qe i suksesshëm, por nënshkrimi s’u verifikua saktë msgOvl.button.contAnyway=&Vazhdo Sido Qoftë signature.verifiedOK=Nënshkrimi për bashkëngjitjen %S u verifikua me sukses signature.verifyFailed=Nënshkrimi për bashkëngjitjen %S s’u verifikua dot attachment.noMatchToSignature=Për bashkëngjitjen '%S' nuk u gjet dot përputhje me ndonjë kartelë nënshkrimi attachment.noMatchFromSignature=Për kartelën e nënshkrimit '%S' nuk u gjet dot përputhje me ndonjë bashkëngjitje fixBrokenExchangeMsg.failed=Nuk pati sukses në ndreqjen e mesazhit. keysToExport=Përzgjidhni Kyçe OpenPGP për Futje keysToUse=Përzgjidhni Kyç(e) OpenPGP për përdorim me %S pubKey=Kyç publik për %S\n windowLocked=Dritarja e hartimit është e bllokuar; dërgimi u anulua sendUnencrypted=Gatitja e Enigmail-it dështoi..\nTë dërgohet mesazhi i pafshehtëzuar? composeSpecifyEmail=Ju lutemi, përcaktoni adresën tuaj parësore, që do të përdoret për zgjedhjen e kyçit të nënshkrimit për mesazhet e dërguara.\n Nëse e lini të zbrazët, për zgjedhjen e kyçit të nënshkrimit do të përdoret adresa prej fushës NGA e mesazhit. sendingHiddenRcpt=Ky mesazh ka marrës BCC (kopje të padukshme). Nëse mesazhi fshehtëzohet, është e mundur të kryhet fshehja e marrësve BCC, por përdoruesit e disa produkteve (p.sh. PGP Corp.) nuk do të jenë në gjendje të shfshehtëzojnë mesazhin. Prej kësaj, këshillojmë të shmangni email-e BCC me mesazhe të fshehtëzuar. sendWithHiddenBcc=Fshihi marrësit BCC sendWithShownBcc=Fshehtëzoje normalisht sendingNews=Veprimi i dërgimit të fshehtëzuar u ndërpre.\n\nKy mesazh nuk mund të fshehtëzohet ngaqë ka marrës prej grupe lajmesh. Ju lutemi, ridërgojeni mesazhin pa fshehtëzim. sendToNewsWarning=Kujdes: ju ndan një hap nga dërgimi te një grup lajmesh i një email-i të fshehtëzuar.\n\nKjo është e pakëshillueshme, ngaqë ka kuptim vetëm nëse mesazhin mund ta shfshehtëzojnë krejt anëtarët e grupit, pra lypset që mesazhi të fshehtëzohet me kyçet e krejt pjesëmarrësve në grup. Ju lutemi, dërgojeni këtë mesazh vetëm në rast se e dini saktësisht se ç’po bëni.\n\nTë vazhdohet? hasHTML=Sinjalizim mesazhi HTML::\nKy mesazh mund të përmbajë HTML, çka mund të bëjë që nënshkrimi/fshehtëzimi të dështojë. Për ta shmangur këtë në të ardhmen, duhet të shtypni tastin SHIFT, kur klikoni mbi butonin Hartoni/Përgjigjuni për dërgim mesazhesh të nënshkruar.\nNëse, si parazgjedhje, i nënshkruani mesazhet, duhet t’i hiqni shenjën kutizës së parapëlqimit 'Harto Mesazhe në HTML', për t’i çaktivizuar përgjithnjë mesazhet HTML për këtë llogari email-esh. strippingHTML=Mesazhi përmban të dhëna formatimi HTML që do të humbë gjatë shndërrimit në tekst të thjeshtë për nënshkrim/fshehtëzim. Doni të ecet më tej? msgCompose.button.sendAnyway=&Dërgoje Mesazhin Sido Qoftë attachWarning=Bashkëngjitjet te ky mesazh nuk janë vendore, ato nuk mund të fshehtëzohen. Që të mund të fshehtëzoni bashkëngjitje, depozitojini ato së pari si kartela vendore dhe mandej bashkëngjitini. Doni të dërgohet mesazhi sido qoftë? quotedPrintableWarn=Keni aktivizuar kodim 'quoted-printable' për dërgim mesazhesh. Kjo mund të sjellë shfshehtëzim dhe/ose verifikim të pasaktë të mesazhit tuaj.\nDoni ta çaktivizoni tani dërgimin e mesazheve 'quoted-printable'? minimalLineWrapping=Keni caktuar mbështjellje rreshti në %S shenja. Për fshehtëzim dhe/ose nënshkrim të saktë, kjo vlerë lypset të jetë e pakta 68.\nDëshironi ta kaloni tani mbështjelljen e rreshtave në 68 shenja? warning=Kujdes signIconClicked=E keni ndryshuar dorazi nënshkrimin. Ndaj, teksa hartoni mesazhin, (ç)aktivizimi i nënshkrimit nuk varet më nga (ç)aktivizimi i fshehtëzimit. pgpMime_sMime.dlg.text=Keni aktivizuar edhe PGP/MIME-n, edhe S/MIME-n. Për fat të keq, nuk është e mundur të mbulohen njëkohësisht të dy protokollet. Ju lutemi, përzgjidhni cilin doni të përdorni, PGP/MIME-n ose S/MIME-n. pgpMime_sMime.dlg.pgpMime.button=Përdor &PGP/MIME pgpMime_sMime.dlg.sMime.button=Përdor &S/MIME errorKeyUnusable=Për adresën email ose ID-në e kyçit '%S' nuk gjendet dot kyç OpenPGP i vlefshëm, i paskaduar, me përputhje.\nJu lutemi, sigurohuni që keni një kyç OpenPGP të vlefshëm, dhe që rregullimet e llogarisë suaj i referohen atij kyçi. errorOwnKeyUnusable=ID-ja '%S' e kyçit, e formësuar për identitetin e tanishëm nuk sjell ndonjë kyç OpenPGP të përdorshëm.\n\nJu lutemi, sigurohuni që keni një kyç OpenPGP të vlefshëm, që s’ka skaduar, dhe që rregullimet tuaja shpien te ai kyç.\nNëse kyçi juaj s’ka skaduar, atëherë kontrolloni nëse për të keni caktuar besueshmëri Zotëruesi si plotësisht ose përfundimtare. msgCompose.cannotSaveDraft=Gabim teksa ruhej skica msgCompose.internalEncryptionError=Gabim i Brendshëm: fshehtëzimi i premtuar është i çaktivizuar msgCompose.internalError=Ndodhi një gabim i brendshëm. msgCompose.toolbarTxt.signAndEncrypt=Ky mesazh do të nënshkruhet dhe fshehtëzohet msgCompose.toolbarTxt.signOnly=Ky mesazh do të nënshkruhet msgCompose.toolbarTxt.encryptOnly=Ky mesazh do të fshehtëzohet msgCompose.toolbarTxt.noEncryption=Ky mesazh do të jetë i panënshkruar dhe i pafshehtëzuar msgCompose.toolbarTxt.disabled=Për identitetin e përzgjedhur Enigmail-i është i çaktivizuar msgCompose.toolbarTxt.smime=S/MIME është aktiv - ka mundësi po përlaset me Enigmail-in msgCompose.toolbarTxt.smimeOff=- kështu që S/MIME nuk përdoret msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME është i aktivizuar - kështu që Enigmail-i nuk përdoret msgCompose.toolbarTxt.smimeNoDraftEncryption=- skicat s’do të fshehtëzohen msgCompose.toolbarTxt.smimeConflict=Enigmail-i nuk përdoret, ngaqë S/MIME është i aktivizuar. Ju lutemi, çaktivizoni nënshkrimet dhe/ose fshehtëzimet S/MIME dhe mandej aktivizoni fshehtëzim me Enigmail msgCompose.encryptedSubjectStub=Mesazh i Fshehtëzuar msgCompose.detailsButton.label=Hollësi… msgCompose.detailsButton.accessKey=H # note: should end with double newline: sendAborted=Veprimi i dërgimit u ndërpre.\n\n # details: keyNotTrusted=Besueshmëri e pamjaftueshme e kyçit '%S' keyNotFound=Nuk u gjet kyçi '%S' keyRevoked=Kyçi '%S' është i shfuqizuar keyExpired=Kyçi '%S' ka skaduar statPGPMIME=PGP/MIME statSigned=I NËNSHKRUAR statEncrypted=I FSHEHTËZUAR statPlain=I PANËNSHKRUAR dhe I PAFSHEHTËZUAR offlineSave=Të ruhet mesazhi %1$S për %2$S te dosja Mesazhe të Padërguar? onlineSend=Të dërgohet mesazhi %1$S për %2$S? encryptKeysNote=Shënim: Mesazhi është i fshehtëzuar për ID Përdoruesi / Kyçet vijues: %S hiddenKey= signFailed=Gabim te Enigmail-i; Fshehtëzimi/nënshkrimi dështoi; të dërgohet mesazhi i pafshehtëzuar? msgCompose.button.sendUnencrypted=&Dërgoje Mesazh të Pafshehtëzuar recipientsSelectionHdr=Përzgjidhni Marrës për Fshehtëzime configureNow=Nuk keni formësuar ende sigurinë e Enigmail-it për identitetin e përzgjedhur. Doni ta bëni tani? # encryption/signing status and associated reasons: encryptMessageAuto=Fshehtëzoje Mesazhin (vetvetiu) encryptMessageNorm=Fshehtëzoje Mesazhin signMessageAuto=Nënshkruaje Mesazhin (vetvetiu) signMessageNorm=Nënshkruaje Mesazhin encryptOff=Fshehtëzim: JO encryptOnWithReason=Fshehtëzim: PO (%S) encryptOffWithReason=Fshehtëzim: JO (%S) encryptOn=Fshehtëzim: PO signOn=Nënshkrim: PO signOff=Nënshkrim: JO signOnWithReason=Nënshkrim: PO (%S) signOffWithReason=Nënshkrim: JO (%S) reasonEnabledByDefault=aktivizuar si parazgjedhje reasonManuallyForced=i detyruar dorazi reasonByRecipientRules=i detyruar nga rregulla sipas marrësish reasonByAutoEncryption=i detyruar nga vetëfshehtëzimi reasonByConflict=për shkak përplasjeje me rregulla sipas marrësish reasonByEncryptionMode=për shkak të mënyrës së fshehtëzimit reasonSmimeConflict=ngaqë S/MIME është i aktivizuar # should not be used anymore: encryptYes=Mesazhi do të fshehtëzohet encryptNo=Mesazhi nuk do të fshehtëzohet # should not be used anymore: signYes=Mesazhi do të nënshkruhet signNo=Mesazhi nuk do të nënshkruhet # PGP/MIME status: pgpmimeNormal=Protokoll: PGP/MIME inlinePGPNormal=Protokoll: PGP Brendazi pgpmimeAuto=Protokoll: PGP/MIME (vetvetiu) inlinePGPAuto=Protokoll: PGP Brendazi (vetvetiu) # should not be used anymore pgpmimeYes=Do të përdoret PGP/MIME pgpmimeNo=Do të përdoret PGP brendazi # Attach own key status (tooltip strings): attachOwnKeyNo=Kyçi juaj s’do të bashkëngjitet attachOwnKeyYes=Kyçi juaj do të bashkëngjitet attachOwnKeyDisabled=Kyçi juaj s’mund të bashkëngjitet. Që të aktivizohet kjo veçori, duhet të përzgjidhni një kyç të dhënë te ndarja OpenPGP e Rregullimeve të Llogarisë. rulesConflict=U kap përplasje me rregulla sipas-marrësish\n%S\n\nTë dërgohet mesazhi duke përdorur këto rregullime? msgCompose.button.configure=&Formësojeni msgCompose.button.send=&Dërgoje Mesazhin msgCompose.button.save=&Ruaje Mesazhin # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Lypset kyçi publik %S që të verifikohet nënshkrimi keyUsed=Për verifikimin e nënshkrimit u përdor kyçi publik %S clickDecrypt=; klikoni mbi butonin Shfshehtëzoje clickDecryptRetry=; klikoni mbi butonin Shfshehtëzoje që të riprovohet clickDetailsButton=; për më tepër të dhëna, klikoni mbi butonin 'Hollësi' clickImportButton=; që ta shkarkoni kyçin klikoni mbi butonin 'Importoje Kyçin' keyTypeUnsupported=; lloji i kyçit nuk mbulohet nga versioni juaj i GnuPG-së msgPart=Pjesë e mesazhit %S msgSigned=i nënshkruar msgSignedUnkownKey=nënshkruar me kyç të panjohur msgEncrypted=i fshehtëzuar msgSignedAndEnc=i nënshkruar dhe i fshehtëzuar unverifiedSig=Nënshkrim i paverifikuar incompleteDecrypt=Shfshehtëzim i paplotë needKey=Gabim - nuk u gjet kyçi privat/i fshehtë përkatës për shfshehtëzimin e mesazhit failedDecrypt=Gabim - shfshehtëzimi dështoi badPhrase=Gabim - frazëkalim i gabuar failedDecryptVerify=Gabim - shfshehtëzimi/verifikimi dështoi viewInfo=; Parje > Të dhëna sigurie mesazhi, për hollësi decryptedMsg=Mesazhi u shfshehtëzua decryptedMsgWithFormatError=Mesazhi u shfshehtëzua (u rikthye format email-i PGP i dëmtuar, shkaktuar me gjasa nga një shërbyes i vjetër Exchange, ndaj përfundimi mund të mos jetë përsosmërisht i lexueshëm) usedAlgorithms=Algoritme të Përdorur: %S dhe %S # strings in pref-enigmail.js oldGpgVersion14=Gatitja e Enigmail-it dështoi.\n\nPo përdorni GnuPG version %S, i cili nuk mbulohet më. Enigmail-i lyp GnuPG version 2.0.7 ose më të ri. Ju lutemi, përmirësoni instalimin tuaj të GnuPG-së, ose Enigmail-i s’ka për të funksionuar. locateGpg=Lokalizoni programin GnuPG invalidGpgPath=GnuPG-ja nuk mund të ekzekutohet me shtegun e dhënë. Prandaj Enigmail-i është çaktivizuar, deri sa të ndryshoni sërish shtegun për te GnuPG-ja ose deri sa të rinisni aplikacionin. warningsAreReset=Krejt sinjalizimet u kthyen te parazgjedhjet. prefs.gpgFound=GnuPG-ja u gjet te %S prefs.gpgNotFound=Nuk gjeti dot GnuPG-në prefs.warnAskNever=Kujdes: aktivizimi i kësaj mundësie do të sjellë email-e të pafshehtëzuar, pa dhënë asnjë hollësi tjetër, nëse nuk ka kyç për një nga marrësit -- Enigmail nuk do t’ju njoftojë, nëse ndodh kjo! prefs.warnIdleTimeForUnknownAgent=Nuk lidhet dot me gpg-agent. Ndoshta sistemi juaj përdor ndonjë mjet të posaçëm për trajtim frazëkalimesh (p.sh. gnome-keyring, seahorse-agent, KDE wallet manager, ...). Për fat të keq, Enigmail-i nuk e kontrollon dot intervalin kohor të vlefshmërisë së frazëkalimit për mjetin që po përdorni. Ndaj rregullimet mbi intervalin kohor përkatës te Enigmail-i nuk janë marrë parasysh. prefEnigmail.oneKeyserverOnly=Gabim - mund të përcaktoni vetëm një shërbyes kyçesh për shkarkim të vetvetishëm kyçesh OpenPGP që mungojnë. enterAdminPin=Ju lutemi, shtypni PIN ADMIN-in e Kartës tuaj të Mençur enterCardPin=Ju lutemi, shtypni PIN-in e Kartës tuaj të Mençur notInit=Gabim - shërbimi Enigmail ende i pagatitur badCommand=Gabim - urdhri i fshehtëzimit dështoi cmdLine=rresht urdhrash dhe output: notRequired=Gabim - nuk lypset fshehtëzim notComplete=Gabim - prodhim kyçesh ende i paplotësuar invalidEmail=Gabim - adresa email të pavlefshme noPassphrase=Gabim - nuk u dha frazëkalim noPGPblock=Gabim - Nuk u gjet bllok i koracuar i vlefshëm të dhënash OpenPGP unverifiedReply=Ndoshta qe modifikuar pjesë e brendshme mesazhi (përgjigje) keyInMessageBody=U gjet kyç në lëndën e mesazhit. Klikoni mbi 'Importo Kyç' që të importohet kyçi sigMismatch=Gabim - Mospërputhje nënshkrimesh cantImport=Gabim në importim kyçi publik\n\n doImportOne=Të importohet %1$S (%2$S)? doImportMultiple=Të importohen kyçet vijues?\n\n%S previewFailed=S’lexohet dot kartela e kyçit publik. # Strings used in errorHandling.jsm sc.wrongCardAvailable=Karta e Mençur %1$S e gjetur te lexuesi juaj nuk mund të përdoret për të përpunuar këtë mesazh.\nJu lutemi, futni Kartën tuaj të Mençur %2$S dhe përsëritni veprimin. sc.insertCard=Veprimi lyp Kartën tuaj të Mençur %S.\nJu lutemi, futni Kartën e Mençur të kërkuar dhe përsëritni veprimin. sc.removeCard=Veprimi nuk lyp pasjen e një Karte të Mençur te lexuesi.\nJu lutemi, hiqeni Kartën tuaj të Mençur dhe përsëritni veprimin. sc.noCardAvailable=Nuk u gjet Kartë e Mençur te lexuesi juaj\nJu lutemi, futni Kartën tuaj të Mençur dhe përsëritni veprimin. sc.noReaderAvailable=Nuk u fut dot te lexuesi juaj i Kartave të Mençura\nJu lutemi, vendosni lexuesin tuaj të Kartave të Mençura, futni kartën tuaj dhe përsëritni veprimin. keyError.keySpecNotFound=Adresës email "%S" s’i gjendet dot një kyç te vargu juaj i kyçeve. keyError.keyIdNotFound=ID-ja e formësuar e kyçit "%S" s’gjendet dot te vargu juaj i kyçeve. keyError.resolutionAction=Ju lutemi, përzgjidhni një kyç të vlefshëm, te ndarja OpenPGP e Rregullimeve tuaja për Llogarinë. missingPassphrase=Mungon frazëkalim errorHandling.gpgAgentInvalid=Sistemi juaj xhiron një version të gpg-agent që s’është i përshtatshëm për versionin tuaj të GnuPG-së. errorHandling.gpgAgentError=GnuPG-ja njoftoi një gabim te ndërlidhja me gpg-agent (një përbërës i GnuPG-së). errorHandling.dirmngrError=GnuPG-ja njoftoi një gabim në ndërlidhjen me dirmngr (një përbërës i GnuPG-së). errorHandling.pinentryError=GnuPG-ja s’mund të kërkojë për frazëkalimin tuaj me pinentry. errorHandling.readFaq=Ky është një gabim rregullimi sistemi ose formësimi që e pengon Enigmail-in të funksionojë si duhet dhe s’mund të ndreqet vetvetiu.\n\nKëshillojmë me forcë që të shihni te sajti ynë i asistencës, https://enigmail.net/faq. gpgNotFound=I pazoti të lokalizojë programin GnuPG '%S'.\nSigurohuni që e keni caktuar saktë shtegun për te i ekzekutueshmi GnuPG te Parapëlqimet për Enigmail-in. gpgNotInPath=I pazoti të lokalizojë programin GnuPG te SHTEGU.\nSigurohuni që e keni caktuar saktë shtegun për te i ekzekutueshmi GnuPG te Parapëlqimet për Enigmail-in. enigmailNotAvailable=Shërbimi bazë Enigmail jo gati gpgAgentNotStarted=Nuk u nis dot programi gpg-agent i cili nevojitet për versionin tuaj %S të GnuPG-së. prefUntrusted=JO I BESUAR prefRevoked=KYÇ I SHFUQIZUAR prefExpiredKey=KYÇ I SKADUAR prefExpired=I SKADUAR prefGood=Nënshkrim i mirë nga %S prefBad=Nënshkrim i KEQ nga %S failCancel=Gabim - Marrja e kyçit u anulua nga përdoruesi failNoServer=Gabim - Nuk u tregua shërbyes kyçesh prej nga të merret kyçi failNoID=Gabim - Nuk u tregua ID kyçi për të cilin të merret kyçi failKeyExtract=Gabim - urdhri për përftim kyçi dështoi notFirstBlock=Gabim - Blloku i parë te OpenPGP s’është bllok kyçi publik importKeyConfirm=Të importohet i trupëzuar në mesazh kyçi(kyçet) publik? failKeyImport=Gabim - importimi i kyçit dështoi fileWriteFailed=Dështoi shkrimi në kartelën %S importKey=Importoni kyçin publik %S prej shërbyesit të kyçeve: uploadKey=Dërgoje kyçin publik %S te shërbyesi i kyçeve: keyId=ID Kyçi keyAndSigDate=ID Kyçi: 0x%1$S / Nënshkruar më: %2$S keyFpr=Shenja gishtash kyçi: %S noEmailProvided=Nuk dhatë ndonjë adresë email! keyAlreadySigned=Kyçi është tashmë i nënshkruar, nuk mund ta nënshkruani dy herë. gnupg.invalidKey.desc=Kyçi %S nuk u gjet ose nuk është i vlefshëm. (Nën-)kyçi mund të ketë skaduar. selKeyExpired=Skaduar më %S createdHeader=Krijuar më atLeastOneKey=Nuk u përzgjodh kyç! Duhet të përzgjidhni të paktën një kyç që të pranohet ky dialog fewerKeysThanRecipients=Keni përzgjedhur një numër kyçesh më të vogël se sa numri i marrësve. Jeni i sigurt se lista e kyçeve për fshehtëzim është e plotë? userSel.button.goBack=Përzgjidhni më tepër Kyçe userSel.secretKeySel.title=Përzgjidhni një Kyç të Fshehtë OpenPGP Që të Nënshkruani Mesazhit Tuaj userSel.problemNoKey=Pa kyç të vlefshëm userSel.problemMultipleKeys=Shumë kyçe # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Dërgoje Më Vonë # Strings used in enigmailAttachmentDialog.js pgpMimeNote=SHËNIM: PGP/MIME mbulohet vetëm nga një numër i kufizuar klientësh email! Në Windows, vetëm Mozilla/Thunderbird, Sylpheed, Pegasus dhe Mulberry dihet se e mbulojnë këtë standard; në Linux/UNIX dhe Mac OS X shumica e klientëve të mirënjohur e mbulojnë. Nëse jeni i pasigurt, përzgjidhni mundësinë %S. first=i pari second=i dyti # Strings used in am-enigprefs.js encryptKeyHeader=Përzgjidhni Kyç OpenPGP për Fshehtëzim identityName=Identitet: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Keni aktivizuar fshehtëzimin, por nuk keni përzgjedhur kyç. Që të fshehtëzohen email-et e dërguar për %1$S, lypset të përcaktoni prej listës suaj të kyçeve një ose disa kyçe të vlefshëm. Doni të çaktivizohet fshehtëzimi për %2$S? noKeyToUse=(asnjë - pa fshehtëzim) noEmptyRule=Rregulli nuk mund të jetë i zbrazët! Ju lutemi, vendosni një adresë email te fusha Rregull. invalidAddress=Adresa(t) email që keni dhënë nuk janë të vlefshme. Nuk duhet të caktoni emra marrësish, thjesht adresat email. P.sh.:\nI pavlefshëm: Njëfarë Emri \nI vlefshëm: njëfarë.emri@address.net noCurlyBrackets=Kllapat gjarpërushe {} kanë një domethënie të veçantë dhe nuk duhen përdorur në adresa email. Nëse doni të ndryshoni mënyrën se si kërkohet për përputhje me këtë rregull, përdorni mundësinë 'Zbatoje rregullin nëse marrësi ...'.\nMë tepër të dhëna gjeni te pjesa Ndihmë. # Strings used in enigmailRulesEditor.js never=Kurrë always=Përherë possible=E mundshme deleteRule=Të fshihet vërtet rregulli i përzgjedhur? nextRcpt=(Marrësi pasues) negateRule=Jo addKeyToRule=Shtoje kyçin %1$S (%2$S) te rregull sipas-marrësish # Strings used in enigmailSearchKey.js needOnline=Funksioni që keni përzgjedhur nuk mund të kihet nën mënyrën offline. Ju lutemi, lidhuni në internet dhe riprovoni. protocolNotSupported=Protokolli '%S://' që keni përzgjedhur nuk mbulohet për shkarkim kyçesh OpenPGP. gpgkeysDisabled=Aktivizimi i mundësisë 'extensions.enigmail.useGpgKeysTool' mund të ndihmonte këtu. noKeyserverConn=S’u lidh dot me shërbyesin e kyçeve te %S. keyDownloadFailed=Dështoi në shkarkim kyçesh nga shërbyesi i kyçeve. Mesazhi përkatës është:\n%S internalError=Ndodhi një gabim i brendshëm. Kyçet nuk u shkarkuan ose importuan dot. noKeyFound=Na ndjeni, nuk u gjet dot ndonjë kyç që të kishte përputhje me kriterin e dhënë për kërkim.\nJu lutemi, kini parasysh që ID-ja e kyçit duhet të paraprihet me "0x" (p.sh. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Dështoi në kërkim ose shkarkim kyçesh prej shërbyesi kyçesh: gpgkeys_%S nuk u ekzekutua dot. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Caktimi i besueshmërisë së pronarit dështoi # Strings in enigmailSignKeyDlg.js signKeyFailed=Nënshkrimi i kyçit dështoi alreadySigned.label=Shënim: kyçi %S është tashmë i nënshkruar me kyçin e fshehtë të përzgjedhur. alreadySignedexportable.label=Shënim: kyçi %S është nënshkruar tashmë si i eksportueshëm me kyçin privat të përzgjedhur. Një nënshkrim vendor s’ka kuptim. partlySigned.label=Shënim: disa ID përdoruesi për kyçin %S janë nënshkruar tashmë me kyçin e fshehtë të përzgjedhur. noTrustedOwnKeys=S’u gjet kyç që mund të përdoret për nënshkrime! Që të mund të nënshkruani kyçe, ju duhet të paktën një kyç privat i besuar plotësisht. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Po ngarkohen kyçe, ju lutemi, prisni ... keyValid.unknown=i panjohur keyValid.invalid=i pavlefshëm keyValid.disabled=i çaktivizuar keyValid.revoked=i shfuqizuar keyValid.expired=i skaduar keyValid.noSubkey=pa nënkyç të vlefshëm keyTrust.untrusted=jo i besuar keyTrust.marginal=me raste keyTrust.full=i besuar keyTrust.ultimate=përfundimisht keyTrust.group=(grup) keyType.public=publik keyType.publicAndSec=pub/fshe keyMan.enableKey=Aktivizoje kyçin keyMan.disableKey=Çaktivizoje kyçin userAtt.photo=Atribut përdoruesi (figurë JPEG) asciiArmorFile=ASCII Armored Files (*.asc) importKeyFile=Importo Kartelë Kyçi OpenPGP gnupgFile=Kartela GnuPG saveRevokeCertAs=Krijoni & Ruani Dëshmi Shfuqizimi revokeCertOK=Dëshmia e shfuqizimit u krijua me sukses. Mund ta përdorni për të shfuqizuar kyçin tuaj publik, p.sh. në rast se do të humbnit kyçin tuaj të fshehtë.\n\nJu lutemi, kalojeni në një media ku mund të depozitohet pa rrezik, CD ose Disketë, për shembull. Nëse dikush arrin të ketë këtë dëshmi, ai mund ta përdorë për ta bërë të papërdorshëm kyçin tuaj. revokeCertFailed=Dëshmia e shfuqizimit nuk u krijua dot. addUidOK=ID-ja e përdoruesit u shtua me sukses addUidFailed=Shtimi i ID-së së Përdoruesit dështoi noKeySelected=Duhet të përzgjidhni të paktën një kyç, që të mund të përmbushet veprimi i përzgjedhur exportToFile=Eksportojeni Kyçin Publik Në Kartelë exportKeypairToFile=Eksporto Kyçin e Fshehtë dhe atë Publik në Kartelë exportSecretKey=Dëshironi ta përfshini kyçin tuaj të fshehtë te kartela e ruajtur e kyçit OpenPGP? saveKeysOK=Kyçet u ruajtën me sukses saveKeysFailed=Ruajtja e kyçeve dështoi importKeysFailed=Importimi i kyçeve dështoi enableKeyFailed=Aktivizimi/çaktivizimi i kyçeve dështoi specificPubKeyFilename=%1$S (0x%2$S) publik specificPubSecKeyFilename=%S (0x%S) pub-fshe defaultPubKeyFilename=Kyçe-publikë-të-eksportuar defaultPubSecKeyFilename=Kyçe-publikë-dhe-të-fshehtë-të-eksportuar noSecretKeys=Nuk u gjetën kyçe të fshehtë.\n\nDoni ta prodhoni tani kyçin tuaj? sendKeysOk=Kyçet u dërguan me sukses sendKeysFailed=Dërgimi i kyçeve dështoi receiveKeysOk=Kyçet u përditësuan me sukses receiveKeysFailed=Shkarkimi i kyçeve dështoi importFromClip=Doni të importoni ndonjë kyç(disa kyçe) nga e papastra? importFromUrl=Shkarkoje kyçin publik prej kësaj URL-je: copyToClipbrdFailed=S’u kopjua(n) dot kyçi(et) i(e) përzgjedhur te e papastra. copyToClipbrdOK=Kyçet u kopjuan te e papastra deleteSecretKey=KUJDES: Ju ndan një hap nga fshirja e një kyçi të fshehtë!\nNëse fshini kyçin tuaj të fshehtë, nuk do të jeni më në gjendje të fshehtëzoni dhe shfshehtëzoni mesazhe të fshehtëzuar për atë kyç, dhe nuk mund ta shfuqizoni më kyçin tuaj.\n\nDoni vërtet t’i fshini QË TË DY, kyçin e fshehtë dhe atë publik\n'%S'? deleteMix=KUJDES: Ju ndan një hap nga fshirja e kyçeve të fshehtë!\nNëse fshini kyçin tuaj të fshehtë, nuk do të jeni më në gjendje të fshehtëzoni dhe shfshehtëzoni mesazhe të fshehtëzuar për atë kyç.\n\nDoni vërtet t’i fshini QË TË DY, kyçin e fshehtë të përzgjedhur dhe atë publik? deletePubKey=Doni ta fshini kyçin publik\n'%S'? deleteSelectedPubKey=Doni t’i fshini kyçet publikë? deleteKeyFailed=Kyçi nuk u fshi dot. revokeKeyQuestion=Ju ndan një hap nga shfuqizimi i kyçit '%S'.\n\nNuk do të jeni më në gjendje të nënshkruani me këtë kyç, dhe pasi të shpërndahet, të tjerët nuk do të jenë më në gjendje të fshehtëzojnë me këtë kyç. Mundeni prapëseprapë ta përdorni kyçin për shfshehtëzimin e mesazhe të vjetër.\n\nDoni të vazhdoni? revokeKeyOk=Kyçi është shfuqizuar. Nëse kyçi juaj gjendet te një shërbyes kyçesh, këshillohet ta ringarkoni, që të tjerët të mund ta vënë re shfuqizimin. revokeKeyFailed=Kyçi nuk u shfuqizua dot. refreshAllQuestion=Nuk përzgjodhët ndonjë kyç. Do të donit të rifreskonit KREJT kyçet? refreshKey.warn=Kujdes: në varësi të numrit të kyçeve dhe shpejtësisë së lidhjes, rifreskimi i krejt kyçeve mund të jetë një proces ca i gjatë! downloadContactsKeys.warn=Kujdes: në varësi të numrit të kontakteve dhe shpejtësisë së lidhjes, shkarkimi i krejt kyçeve mund të jetë një proces ca i gjatë! downloadContactsKeys.importFrom=Të importohen kontakte prej librit të adresave '%S'? keyMan.button.exportSecKey=Eksporto Kyçe të &Fshehtë keyMan.button.exportPubKey=Eksporto Vetëm Kyçe &Publikë keyMan.button.import=&Importo keyMan.button.refreshAll=&Rifresko Krejt Kyçet keyMan.button.revokeKey=&Shfuqizoje Kyçin keyMan.button.skip=&Anashkaloje Kyçin keylist.noOtherUids=Nuk ka identitete të tjerë keylist.hasOtherUids=I njohur edhe si keylist.noPhotos=Nuk ka fotografi keylist.hasPhotos=Fotografi keyMan.addphoto.filepicker.title=Përzgjidhni foto për shtim keyMan.addphoto.warnLargeFile=Kartela që keni zgjedhur është më e madhe se sa 25 kB.\nNuk këshillohet të shtoni kartela shumë të mëdha, ngaqë kështu kyçet bëhen shumë të mëdhenj. keyMan.addphoto.noJpegFile=Kartela e përzgjedhur nuk duket se është kartelë JPEG. Ju lutemi, zgjidhni një tjetër kartelë. keyMan.addphoto.failed=Fotoja nuk u shtua dot. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Ndryshimi i ID-së parësore të Përdoruesit dështoi changePrimUidOK=ID-ja parësore e përdoruesit u ndryshua me sukses deleteUidFailed=Fshirja e ID-së së përdoruesit %S dështoi deleteUidOK=ID-ja e përdoruesit %S u fshi me sukses revokeUidFailed=Shfuqizimi i ID-së së përdoruesit %S dështoi revokeUidOK=ID-ja e përdoruesit %S u shfuqizuar me sukses. Nëse kyçi juaj gjendet te një shërbyes kyçesh, këshillohet ta ringarkoni, që të tjerët të mund ta vënë re shfuqizimin. revokeUidQuestion=Doni vërtet të shfuqizoni ID-në e përdoruesit %S? deleteUidQuestion=Doni vërtet të fshihet ID-ja e përdoruesit %S?\n\nJu lutemi, kini parasysh që: nëse e keni parashtruar kyçin tuaj publik te një shërbyes kyçesh, fshirja e një ID-je përdoruesi, nuk do të ndryshojë gjë. Në këtë rast do të duhej të përdornit 'Shfuqizoni ID përdoruesi'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=SUKSES! Kyçet u importuan importInfoSuccess=✅ importInfoBits=Bit importInfoCreated=Krijuar më importInfoFpr=Shenja gishtash importInfoDetails=(Hollësi) importInfoNoKeys=S’u importuan kyçe. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=kyç publik keyTypePrimary=kyç parësor keyTypeSubkey=nënkyç keyTypePair=çift kyçesh keyExpiryNever=kurrë keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Fshehtëzoje keyUsageSign=Nënshkruaje keyUsageCertify=Dëshmoje keyUsageAuthentication=Mirëfilltësim keyDoesNotExpire=Kyçi nuk skadon # Strings in enigmailGenCardKey.xul keygen.started=Ju lutemi, prisni, ndërkohë që po prodhohet kyçi .... keygen.completed=Kyçi u Prodhua. ID-ja e kyçit të ri është: 0x%S keygen.keyBackup=Kyçi u kopjeruajt si %S keygen.passRequired=Ju lutemi, përcaktoni një frazëkalim, nëse dëshironi të krijoni një kopjeruajtje të kyçit juaj jashtë Kartës suaj të Mençur. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN-i që dhatë nuk përputhet; ju lutemi, rijepeni cardPin.minLength=PIN-i duhet të ketë e pakta %S shenja ose numra cardPin.processFailed=Dështoi në ndryshim PIN-i # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Kyçet po rifreskohen, ju lutemi, prisni ... keyserverProgress.uploading=Kyçet po ngarkohen, ju lutemi, prisni ... keyserverTitle.refreshing=Rifreskoni Kyçet keyserverTitle.uploading=Ngarkim Kyçi # Strings in enigmailSetupWizard passphrase.min8keys=Frazëkalimi juaj duhet të përmbajë të paktën 8 shenja! setupWizard.reallyCancel=Doni ta mbyllni vërtet Ndihmësin e Rregullimit të Enigmail-it? setupWizard.invalidGpg=Kartela që keni treguar nuk është i ekzekutueshëm GnuPG-je. Ju lutemi, përcaktoni një kartelë tjetër. setupWizard.specifyFile=Që të mund të vazhdohet, lypset të përcaktoni të paktën një kartelë kyçi publik. setupWizard.installFailed=Duket se instalimi nuk qe i suksesshëm. Ju lutemi, ose riprovoni instalimin, ose instalojeni GnuPG-në dorazi dhe lokalizojeni duke përdorur butonin Shfletoni. setupWizard.downloadForbidden=Për hir të sigurisë suaj, nuk do ta shkarkojmë GnuPG-në. Ju lutemi, vizitoni http://www.gnupg.org/ që të shkarkoni GnuPG-në. setupWizard.downloadImpossible=Hëpërhë nuk e shkarkojmë dot GnuPG-në. Ju lutemi, provoni më vonë ose vizitoni http://www.gnupg.org/ që të shkarkoni GnuPG-në. setupWizard.hashSumError=Ndihmësi nuk verifikoi dot pacenueshmërinë e kartelës së shkarkuar. Kartela mund të jetë e dëmtuar ose e manipuluar. Doni të vazhdohet instalimi, sido që të jetë? setupWizard.importSettingsFile=Përcaktoni kartelë kopjeruajtjeje prej nga të ngarkohet setupWizard.invalidSettingsFile=Kartela e treguar s’është kartelë e saktë kopjeruajtjeje Rregullimesh Enigmail-i. setupWizard.gpgConfExists=Kartela e formësimit të GnuPG-së ekziston tashmë. Doni të mbishkruhet me atë prej instalimit tuaj të vjetër? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Ndodhi një gabim teksa provohej të shkarkohej GnuPG-ja. Ju lutemi, për hollësi të mëtejshme kontrolloni regjistrin e konsolës. installGnuPG.installFailed=Ndodhi një gabim teksa instalohej GnuPG-ja. Ju lutemi, për hollësi të mëtejshme kontrolloni regjistrin e konsolës. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Duhet të plotësoni një emër dhe një adresë email addUidDlg.nameMinLengthError=Emri duhet të ketë e pakta 5 shenja addUidDlg.invalidEmailError=Duhet të jepni një adresë email të vlefshme addUidDlg.commentError=Në komente nuk lejohen kllapat # Strings in enigmailCardDetails.js Carddetails.NoASCII=Kartat e mençura OpenPGP mbulojnë vetëm shenja ASCII për Emër/Mbiemër. # network error types errorType.SecurityCertificate=Dëshmia e sigurisë e paraqitur nga shërbimi web nuk është e vlefshme. errorType.SecurityProtocol=Protokolli i sigurisë i përdorur nga shërbimi web është i panjohur. errorType.Network=Ndodhi një gabim rrjeti. # filter stuff filter.folderRequired=Duhet të përzgjidhni një dosje destinacion filter.decryptMove.label=Shfshehtëzoje përgjithmonë (Enigmail) filter.decryptCopy.label=Krijo Kopje të shfshehtëzuar (Enigmail) filter.decryptMove.warnExperimental=Kujdes - veprimi "Sfshehtëzoje përgjithmonë" mund të shpjerë në shkatërrim mesazhesh.\n\nKëshillojmë me forcë që së pari të provoni filtrin "Krijo Kopje të shfshehtëzuar", të provoni me kujdes përfundimin, dhe të filloni ta përdorni këtë filtër vetëm pasi të jeni të kënaqur me përfundimin. # strings in enigmailConvert.jsm converter.decryptBody.failed=Nuk shfshehtëzoi dot mesazhin me subjekt\n"%S".\nDoni të riprovoni me një tjetër frazëkalim apo doni të anashkalohet mesazhi? converter.decryptAtt.failed=Nuk shfshehtëzoi dot bashkëngjitjen "%1$S"\ne mesazhit me subjekt\n"%2$S".\nDoni të riprovoni me një tjetër frazëkalim apo doni të anashkalohet mesazhi? saveLogFile.title=Ruaje Kartelën Regjistër # strings in gpg.jsm unknownSigningAlg=Algoritëm i panjohur nënshkrimesh (ID: %S) unknownHashAlg=Hash kriptografik i panjohur (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=Kyçi %1$S (ID kyçi %2$S) është shfuqizuar. keyRing.pubKeyExpired=Kyçi %1$S (ID kyçi %2$S) ka skaduar. keyRing.pubKeyNotForSigning=Kyçi %1$S (ID kyçi %2$S) s’mund të përdoret për nënshkirime. keyRing.pubKeyNotForEncryption=Kyçi %1$S (ID kyçi %2$S) s’mund të përdoret për fshehtëzim. keyRing.keyDisabled=Kyçi %1$S (ID kyçi %2$S) është i çaktivizuar; s’mund të përdoret. keyRing.keyNotTrusted=Kyçi %1$S (ID kyçi %2$S) s’është mjaftueshmërisht i besueshëm. Ju lutemi, që ta përdorni për nënshkrime, caktojani kyçit tuaj shkallën e besimit si "përfundimtare". keyRing.keyInvalid=Kyçi %1$S (ID kyçi %2$S) është i pavlefshëm (p.sh. s’ka vetënënshkrim). keyRing.signSubKeysRevoked=Janë të shfuqizuar krejt nënkyçet nënshkrues të kyçit %1$S (ID kyçi %2$S). keyRing.signSubKeysExpired=Kanë skaduar krejt nënkyçet nënshkrues të kyçit %1$S (ID kyçi %2$S). keyRing.signSubKeysUnusable=Krejt nënkyçet nënshkrues të kyçit %1$S (ID kyçi %2$S) janë të shfuqizuar, kanë skaduar ose janë të papërdorshëm. keyRing.encSubKeysRevoked=Janë të shfuqizuar krejt nënkyçet fshehtëzues të kyçit %1$S (ID kyçi %2$S). keyRing.encSubKeysExpired=Kanë skaduar krejt nënkyçet fshehtëzues të kyçit %1$S (ID kyçi %2$S). keyRing.noSecretKey=S’duket se keni kyçin e fshehtë për %1$S (ID kyçi %2$S) te vargu juaj i kyçeve; s’mund ta përdorni kyçin për nënshkrime. keyRing.encSubKeysUnusable=Krejt nënkyçet fshehtëzues të kyçit %1$S (ID kyçi %2$S) janë të shfuqizuar, kanë skaduar ose janë të papërdorshëm. #strings in exportSettingsWizard.js cannotWriteToFile=S’ruhet dot te kartela file '%S'. Ju lutemi, përzgjidhni një kartelë tjetër. dataExportError=Ndodhi një gabim gjatë eksportimit të të dhënave tuaja. enigmailSettings=EnigmailSettings defaultBackupFileName=Enigmail-export specifyExportFile=Caktoni emër kartele për eksportim homedirParamNotSUpported=Për eksportimin/rikthimin e rregullimeve tuaja nuk mbulohen parametra shtesë që formësojnë shtigje, të tillë si --homedir dhe --keyring . Ju lutemi, përdorni metoda alternative, të tilla si rregullimi i ndryshores së mjedisit GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Kyçi juaj %1$S do të skadojë në më pak se %2$S ditë.\n\nKëshillojmë që të krijoni një dyshe të re kyçesh dhe të formësoni llogaritë përkatëse për përdorim të kyçit të ri. expiry.keysExpireSoon=Kyçet tuaj vijues do të skadojnë në më pak se %1$S ditë:\n%2$S. Këshillojmë që të krijoni kyçe të rinj dhe të formësoni llogaritë tuaja për përdorim të kyçeve të rinj. enigmail/lang/sq/help/000077500000000000000000000000001266701624400151475ustar00rootroot00000000000000enigmail/lang/sq/help/compose.html000066400000000000000000000100751266701624400175050ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/sq/help/editRcptRule.html000066400000000000000000000116031266701624400204440ustar00rootroot00000000000000 Enigmail Help: Edit Per-Recipient Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit Per-Recipient Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set Enigmail Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the Enigmail Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the Per-Recipient Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/sq/help/help.html000066400000000000000000000104671266701624400167750ustar00rootroot00000000000000 Enigmail Help

Enigmail Help

Using Enigmail when reading messages

  • Decrypt button in main Mail window
    This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
  • Pen and Key icons in Message Header display
    The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
    • Enigmail Security info: allows you to view the output status from GnuPG for the message.
    • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
    • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
    • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

    If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

    You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

    Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

    To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

  • Opening encrypted attachments / importing attached OpenPGP keys
    Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page
If you have questions or comments about enigmail, please send a message to the Enigmail mailing list

Enigmail is open source and licensed under the Mozilla Public License and the GNU General Public License

enigmail/lang/sq/help/initError.html000066400000000000000000000045461266701624400200230ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing Enigmail

Enigmail Help

How to Resolve Problems with Initializing Enigmail

There are several reasons why initializing Enigmail does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for Enigmail to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and Enigmail cannot find it, then you need to manually set the path to GnuPG in the Enigmail Preferences (menu Enigmail > Preferences)

Enigmime failed to initialize

Enigmail works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/sq/help/messenger.html000066400000000000000000000101411266701624400200220ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • Enigmail Security info: allows you to view the output status from GnuPG for the message.
  • Copy Enigmail Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/sq/help/rulesEditor.html000066400000000000000000000060311266701624400203360ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/sq/help/sendingPrefs.html000066400000000000000000000047571266701624400205010ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of Enigmail to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/sv-SE/000077500000000000000000000000001266701624400145315ustar00rootroot00000000000000enigmail/lang/sv-SE/am-enigprefs.properties000066400000000000000000000001221266701624400212170ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Säkerhet enigmail/lang/sv-SE/enigmail.dtd000066400000000000000000001420041266701624400170140ustar00rootroot00000000000000 OBS: Nyckelgenerering kan ta upp till flera minuter att slutföra. Avsluta inte programmet när nyckelgenerering pågår. Aktivt surfa eller disk-intensiva operationer under nyckelgenerering kommer att fylla på 'slumpvärdespoolen' och påskynda processen. Du kommer att bli varnad när nyckelgenerering är klar."> ' är ogiltig"> OBS: Nyckelgenerering kan ta upp till flera minuter att slutföra. Avsluta inte programmet när nyckelgenerering pågår. Du kommer bli varnad när nyckelgenerering är klart."> OBS: Enigmail kommer alltid att verifiera signaturer på e-post för varje konto eller identitet, oavsett om den är aktiverad eller inte"> publika nyckel är till för andra för att skicka krypterad e-post till dig. Du kan distribuera den till alla."> privata nyckel är till för dig själv för att dekryptera e-post och skicka signerad e-post. Du bör inte ge till någon."> privata nyckel är till för dig själv för att dekryptera e-post och skicka signerad e-post. Du bör inte ge till någon. För att säkra din privata nyckel, kommer du att bli tillfrågad om en lösenfras i följande två dialogrutor."> lösenfras är ett lösenord för att skydda din privata nyckel. Den förhindrar missbruk av din privata nyckel."> inte."> Du kommer att uppmanas att ange ditt lösenord för detta."> exportera data från den gamla datorn med hjälp av backupguiden från inställningarna i Enigmail importera data till den nya datorn med hjälp av den här guiden. "> Tack för att du använder Enigmail."> exportera data från den gamla datorn med hjälp av den här guiden importera data till den nya datorn med hjälp av installationsguiden. "> enigmail/lang/sv-SE/enigmail.properties000066400000000000000000001122611266701624400204370ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail Varning enigConfirm=Enigmail Bekräfta enigError=Enigmail Fel enigPrompt=Enigmail Fråga dlgYes=&Ja dlgNo=&Nej dlgKeepSetting=Kom ihåg mitt svar och fråga mig inte igen dlgNoPrompt=Visa inte den här dialogrutan igen dlg.button.delete=&Ta bort dlg.button.cancel=&Avbryt dlg.button.close=&Stäng dlg.button.continue=&Fortsätt dlg.button.skip=&Hoppa över dlg.button.overwrite=Skri&v över dlg.button.view=&Visa dlg.button.retry=&Försök igen dlg.button.ignore=&Ignorera repeatPrefix=\n\nDetta meddelande kommer att upprepas %S repeatSuffixSingular=gång till. repeatSuffixPlural=gånger till. noRepeat=\n\nDenna varning kommer inte att upprepas förrän du uppgraderar Enigmail. pgpNotSupported=Du verkar använda Enigmail tillsammans med PGP 6.x\n\nTyvärr har PGP 6.x ett antal problem som hindrar Enigmail från att fungera korrekt. Därför stöder Enigmail inte längre PGP 6.x; byt till GnuPG (GPG) istället.\n\nOm du behöver hjälp med att byta till GnuPG, kontrollera avsnittet hjälp på Enigmail's hemsida. initErr.howToFixIt=För att kunna använda Enigmail krävs GnuPG. Om du inte har installerat GnuPG ännu, är det enklaste genom att använda knappen för 'Installationsguiden' nedan. initErr.setupWizard.button=&Installationsguide passphraseCleared=Lösenfrasen har raderats. cannotClearPassphrase=Du använder ett icke-standardverktyg (såsom gnome-keyring) för lösenordshantering. Att rensa lösenord är därför inte möjligt inifrån Enigmail. noPhotoAvailable=Ingen bild tillgänglig debugLog.title=Enigmail Felsökningslogg error.photoPathNotReadable=Bildsökvägen '%S' är inte läsbar # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Denna nya version av Enigmail har betydande förändringar i hanteringen av inställningar och alternativ. Vi försökte överföra de gamla inställningarna till den nya versionen. Men vi kan inte täcka alla fall automatiskt. Dubbelkolla nya inställningar och alternativ. enigmailCommon.checkPreferences=Kontrollera inställingar ... preferences.defaultToPgpMime=Vi har ändrat standardkodning för meddelanden i Enigmail från Inline-PGP till PGP/MIME. Vi rekommenderar dig att hålla detta som standard.\n\nOm du fortfarande vill använda Inline-PGP som standard, kan du göra det i kontoinställningar under OpenPGP-säkerhet. usingVersion=Kör Enigmail version %S usingAgent=Använder %S körbara %S för att kryptera och dekryptera agentError=FEL: Det gick inte att komma åt tjänsten Enigmime! accessError=Fel vid åtkomst till tjänsten Enigmail onlyGPG=Nyckelgenerering fungerar endast med GnuPG (inte med PGP)! keygenComplete=Nyckelgenerering klar! Identitet <%S> kommer att användas för signering. revokeCertRecommended=Vi rekommenderar starkt att skapa ett återkallningscertifikat för din nyckel. Detta certifikat kan användas för att ogiltigförklara din nyckel, t.ex. om din privata nyckel försvinner eller äventyras. Vill du skapa ett sådant återkallningscertifikat nu? keyMan.button.generateCert=&Skapa certifikat genCompleteNoSign=Nyckelgenerering klar! genGoing=Nyckelgenerering pågår redan! passNoMatch=Lösenfraserna matchar inte; försök igen passCheckBox=Markera kryssrutan om du inte anger lösenfras för nyckel passUserName=Ange användarnamn för denna identitet keygen.missingUserName=Det finns inget namn angett för det valda kontot/identiten. Ange ett värde i fältet "Ditt namn" i kontoinställningarna. keygen.passCharProblem=Du använder specialtecken i din lösenfras. Tyvärr kan detta orsaka problem för andra applikationer. Vi rekommenderar att du väljer en lösenfras som endast består av något av dessa tecken: \na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=På grund av tekniska skäl, kan din lösenordsfras inte börja eller sluta med ett blanksteg. changePassFailed=Att ändra lösenfrasen misslyckades. keyConfirm=Skapa publika och privata nycklar för '%S'? keyMan.button.generateKey=&Skapa nyckel keyAbort=Avbryta nyckelgenerering? keyMan.button.generateKeyAbort=&Avbryt nyckelgenerering keyMan.button.generateKeyContinue=&Fortsätt nyckelgenerering expiryTooLong=Du kan inte skapa en nyckel som löper i mer än 100 år. expiryTooLongShorter=Du kan inte skapa en nyckel som löper i mer än 90 år. expiryTooShort=Din nyckel måste vara giltigt i minst ett dygn. dsaSizeLimit=DSA signeringsnycklar är begränsade till 3072 bitar. Nyckeln storlek kommer att minskas. keyGenFailed=Nyckelgenerering misslyckades. Vänligen kontrollera Enigmail konsolen (Menyn Enigmail > Felsök Enigmail) för detaljer. setKeyExpirationDateFailed=Förfallodatumet kan inte ändras # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail Säkerhetsinfo\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Bilagor till detta meddelande har inte signerats eller krypterats*\n\n possiblyPgpMime=Möjligen PGP/MIME krypterat eller signerat meddelande; klicka på knappen Dekryptera för att bekräfta noDecrypted=Inget dekrypterat meddelande att spara!\nAnvänd Spara-kommandot från Arkivmenyn noMessage=Inget meddelande att spara! useButton=Klicka på knappen Dekryptera för att dekryptera meddelanden saveHeader=Enigmail: Sparar dekrypterat meddelande saveAttachmentHeader=Enigmail: Sparar dekrypterad bilaga noTempDir=Det gick inte att hitta en temporär katalog att skriva till\nVar god ange miljövariabeln TEMP attachmentPgpKey=Bilagan '%S' som du öppnar verkar vara en OpenPGP nyckelfil.\n\nKlicka på 'Importera' för att importera nycklar som finns eller 'Visa' för att visa filens innehåll i ett webbläsarfönster beginPgpPart=********* *STARTAR KRYPTERAD eller SIGNERAD DEL* ********* endPgpPart=********** *AVSLUTAR KRYPTERAD eller SIGNERAD DEL* ********** notePartEncrypted=Enigmail: *Delar av meddelandet har INTE signerats eller krypterats* noteCutMessage=Enigmail: *Flera meddelandeblock hittades -- dekryptering/verifiering avbruten* decryptOkNoSig=Varning\n\nDekrypteringen lyckades, men signaturen kunde inte verifieras korrekt msgOvl.button.contAnyway=&Fortsätt ändå signature.verifiedOK=Signaturen för bilagan %S har verifierats signature.verifyFailed=Signaturen för bilagan %S kunde inte verifieras attachment.noMatchToSignature=Det gick inte att matcha bilaga '%S' till en signaturfil attachment.noMatchFromSignature=Det gick inte att matcha signaturfil '%S' till en bilaga fixBrokenExchangeMsg.failed=Misslyckades att reparera meddelande. keysToExport=Välj OpenPGP nycklar att infoga keysToUse=Välj OpenPGP nycklar som ska användas för %S pubKey=Publik nyckel för %S\n windowLocked=Skrivfönstret är låst; skicka avbryts sendUnencrypted=Det gick inte att initiera Enigmail.\nSkicka okrypterat meddelande? composeSpecifyEmail=Vänligen ange din primära e-postadress, som kommer att användas för att välja signeringsnyckel för utgående meddelanden.\n Om du lämnar det tomt, kommer FRÅN adress i meddelandet att användas för att välja signeringsnyckel. sendingHiddenRcpt=Detta meddelande har BCC (hemlig kopia) mottagare. Om meddelandet är krypterat, är det möjligt att dölja BCC mottagare, men användare av vissa produkter (t.ex. PGP Corp) kommer inte att kunna dekryptera meddelandet. Mot bakgrund av detta rekommenderar vi att undvika BCC-e-post med krypterade meddelanden. sendWithHiddenBcc=Dölj BCC mottagare sendWithShownBcc=Kryptera normalt sendingNews=Krypterad sändning avbröts.\n\nDetta meddelande kan inte krypteras eftersom det finns diskussionsgrupper i mottagare. Vänligen skicka meddelandet igen utan kryptering. sendToNewsWarning=Varning: du är på väg att skicka ett krypterat e-postmeddelande till en diskussionsgrupp.\n\nDetta motverkas eftersom det bara är meningsfullt om alla medlemmar i gruppen kan dekryptera meddelandet, dvs meddelandet måste krypterat med nycklarna till alla gruppdeltagare. Vänligen skicka detta meddelande endast om du vet exakt vad du gör.\n\nVill du fortsätta? hasHTML=HTML e-postvarning:\nDetta meddelande kan innehålla HTML, vilket kan orsaka att signering/kryptering misslyckas. För att undvika detta i framtiden, bör du trycka på SHIFT tangenten när du klickar på Skriv/Svara knappen för att skicka signerad e-post.\nOm du signerar e-post som standard, bör du avmarkera 'Skriva meddelanden i HTML' i inställningsrutan för att permanent inaktivera HTML e-post för detta e-postkonto. strippingHTML=Meddelandet innehåller HTML formateringsinformation som går förlorad vid konvertering till oformaterad text för signering/kryptering. Vill du fortsätta? msgCompose.button.sendAnyway=&Skicka meddelande ändå attachWarning=Bilagor till detta meddelande är inte lokala, de kan inte krypteras. För att kryptera bilagor, lagra dem som lokala filer först och bifoga dessa filer. Vill du skicka meddelandet ändå? quotedPrintableWarn=Du har aktiverat 'quoted-printable' kodning för att skicka meddelanden. Detta kan leda till felaktig dekryptering och/eller verifiering av ditt meddelande.\nVill du stänga av skicka 'quoted-printable' meddelanden nu? minimalLineWrapping=Du har ställt radbrytning till %S tecken. För korrekt kryptering och/eller signering, måste detta värde vara minst 68.\nVill du ändra radbrytning till 68 tecken nu? warning=Varning signIconClicked=Du har manuellt ändrat signering. Därför, medan du skriver det här meddelandet, (av)aktivera signering beror inte längre på att (av)aktivera kryptering. pgpMime_sMime.dlg.text=Du har aktiverat PGP/MIME och S/MIME tillsammans. Tyvärr är det inte möjligt att stödja båda protokollen samtidigt. Välj om du vill använda PGP/MIME eller S/MIME. pgpMime_sMime.dlg.pgpMime.button=Använd &PGP/MIME pgpMime_sMime.dlg.sMime.button=Använd &S/MIME errorKeyUnusable=Den e-postadress eller nyckel-ID '%S' kan inte matchas till en giltig, inte har löpt ut OpenPGP nyckel.\nSe till att du har en giltig OpenPGP nyckel, och att dina kontoinställningar pekar på den nyckeln. errorOwnKeyUnusable=Nyckeln-ID '%S' konfigurerad för den aktuella identiteten är inte en användbar OpenPGP-nyckel.\n\nSe till att du har en giltig, ej upphörd OpenPGP-nyckel och att kontoinställningarna pekar på den nyckeln.\nOm din nyckel inte har upphört, kontrollera att du satte ägarförtroende till betrodd eller helt och hållet. msgCompose.cannotSaveDraft=Fel vid sparande av utkast msgCompose.internalEncryptionError=Internt fel: utlovad kryptering inaktiverad msgCompose.internalError=Ett internt fel har inträffat. msgCompose.toolbarTxt.signAndEncrypt=Detta meddelande kommer att signeras och krypteras msgCompose.toolbarTxt.signOnly=Detta meddelande kommer att signeras msgCompose.toolbarTxt.encryptOnly=Detta meddelande kommer krypteras msgCompose.toolbarTxt.noEncryption=Detta meddelande kommer att vara osignerat och okrypterat msgCompose.toolbarTxt.disabled=Enigmail är inaktiverad för den valda identiteten msgCompose.toolbarTxt.smime=S/MIME är aktiverad - eventuellt i konflikt med Enigmail msgCompose.toolbarTxt.smimeOff=- S/MIME används därför inte msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME är aktiverad - Enigmail används därför inte msgCompose.toolbarTxt.smimeNoDraftEncryption=- utkast kommer inte att krypteras msgCompose.toolbarTxt.smimeConflict=Enigmail används inte eftersom S/MIME är aktiverad. Stäng av S/MIME-signering och/eller kryptering och aktivera sedan Enigmail kryptering msgCompose.encryptedSubjectStub=Krypterat meddelande msgCompose.detailsButton.label=Detaljer ... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Skicka avbryts.\n\n # details: keyNotTrusted=Inte tillräckligt med förtroende för nyckel '%S' keyNotFound=Nyckel '%S' hittades inte keyRevoked=Nyckel '%S' har återkallats keyExpired=Nyckel '%S' har upphört statPGPMIME=PGP/MIME statSigned=SIGNERAD statEncrypted=KRYPTERAD statPlain=OSIGNERAD och OKRYPTERAD offlineSave=Spara %S meddelande till %S i Utkorgen? onlineSend=Skicka %S meddelande till %S? encryptKeysNote=OBS: meddelande krypteras med följande användar-ID's / Nycklar: %S hiddenKey= signFailed=Fel i Enigmail; Kryptering/signering misslyckades; skicka meddelande okrypterat? msgCompose.button.sendUnencrypted=&Skicka meddelande okrypterat recipientsSelectionHdr=Välj mottagare för kryptering configureNow=Du har ännu inte konfigurerat Enigmail säkerhet för den valda identiteten. Vill du göra det nu? # encryption/signing status and associated reasons: encryptMessageAuto=Kryptera meddelande (auto) encryptMessageNorm=Kryptera meddelande signMessageAuto=Signera meddelande (auto) signMessageNorm=Signera meddelande encryptOff=Kryptering: AV encryptOnWithReason=Kryptering: PÅ (%S) encryptOffWithReason=Kryptering: AV (%S) encryptOn=Kryptering: PÅ signOn=Signering: PÅ signOff=Signering: AV signOnWithReason=Signering: PÅ (%S) signOffWithReason=Signering: AV (%S) reasonEnabledByDefault=aktiverad som standard reasonManuallyForced=tvinga manuellt reasonByRecipientRules=tvingad av mottagarregler reasonByAutoEncryption=tvingad av auto-kryptering reasonByConflict=på grund av konflikten i mottagarregler reasonByEncryptionMode=på grund av krypteringsläge reasonSmimeConflict=eftersom S/MIME är aktiverat istället # should not be used anymore: encryptYes=Meddelandet kommer att krypteras encryptNo=Meddelandet kommer inte att krypteras # should not be used anymore: signYes=Meddelandet kommer att signeras signNo=Meddelandet kommer inte att signeras # PGP/MIME status: pgpmimeNormal=Protokoll: PGP/MIME inlinePGPNormal=Protokoll: Inline PGP pgpmimeAuto=Protokoll: PGP/MIME (auto) inlinePGPAuto=Protokoll: Inline PGP (auto) # should not be used anymore pgpmimeYes=PGP/MIME kommer att användas pgpmimeNo=Inline PGP kommer att användas # Attach own key status (tooltip strings): attachOwnKeyNo=Din egen nyckel kommer inte bifogas attachOwnKeyYes=Din egen nyckel kommer att bifogas attachOwnKeyDisabled=Din egen nyckel kan inte bifogas. Du måste välja en specifik nyckel\ni OpenPGP-delen av kontoinställningar för att aktivera den här funktionen. rulesConflict=Motstridiga per-mottagare regler upptäckta\n%S\n\nSkicka meddelandet med dessa inställningar? msgCompose.button.configure=&Konfigurera msgCompose.button.send=&Skicka meddelande msgCompose.button.save=&Spara meddelande # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Publik nyckel %S behövs för att verifiera signatur keyUsed=Publik nyckel %S används för att verifiera signatur clickDecrypt=; klicka på knappen Dekryptera clickDecryptRetry=; klicka på knappen Dekryptera för att försöka igen clickDetailsButton=; klicka på 'Detaljer' för med information clickImportButton=; klicka på knappen 'Importera nyckel' för att hämta nyckel keyTypeUnsupported=; nyckeltypen stöds inte av din version av GnuPG msgPart=En del av meddelandet %S msgSigned=signerat msgSignedUnkownKey=signerad med okänd nyckel msgEncrypted=krypterat msgSignedAndEnc=signerat och krypterat unverifiedSig=Ej verifierad signatur incompleteDecrypt=Dekryptering ofullständig needKey=Fel - privat nyckel krävs för att dekryptera meddelandet failedDecrypt=Fel - dekryptering misslyckades badPhrase=Fel - dålig lösenfras failedDecryptVerify=Fel - dekryptering/verifiering misslyckades viewInfo=; Visa > Meddelande säkerhetsinformation för detaljer decryptedMsg=Dekrypterat meddelande decryptedMsgWithFormatError=Dekrypterade meddelandet (återställd bruten PGP e-postformat sannolikt orsakad av en gammal Exchange-server, så resultatet kanske inte är perfekt för att läsa) usedAlgorithms=Använda algoritmer: %S och %S # strings in pref-enigmail.js oldGpgVersion14=Initiering för Enigmail misslyckades.\n\nDu använder GnuPG version %S, vilken inte längre stöds. Enigmail kräver GnuPG version 2.0.7 eller senare. Vänligen uppgradera din installation av GnuPG annars fungerar inte Enigmail. locateGpg=Hitta GnuPG program invalidGpgPath=GnuPG kan inte köras med den angivna sökvägen. Enigmail inaktiveras därför tills du ändrar sökvägen till GnuPG igen eller tills du startar om programmet. warningsAreReset=Alla varningar har återställts. prefs.gpgFound=GnuPG hittades i %S prefs.gpgNotFound=Det gick inte att hitta GnuPG prefs.warnAskNever=Varning: aktivera det här alternativet kommer att resultera i okrypterade e-post utan någon ytterligare information om det inte finns nyckel för en av mottagarna -- Enigmail kommer inte att informera dig om detta händer! prefs.warnIdleTimeForUnknownAgent=Ditt system använder ett specialiserat verktyg för hantering av lösenfraser, såsom gnome-keyring eller seahorse-agent. Tyvärr kan inte Enigmail styra lösenfrasens timeout för det verktyg du använder. Därför bortses respektive timeoutinställning i Enigmail. prefEnigmail.oneKeyserverOnly=Fel - du kan bara ange en nyckelserver för automatisk nedladdning av saknade OpenPGP nycklar. enterAdminPin=Skriv in ditt ADMIN PIN för SmartCard enterCardPin=Vänligen skriv ditt SmartCard PIN notInit=Fel - Enigmail tjänsten ännu inte initierad badCommand=Fel - krypteringskommandot misslyckades cmdLine=kommandorad och utmatning: notRequired=Fel - ingen kryptering krävs notComplete=Fel - nyckelgenerering ännu inte slutförd invalidEmail=Fel - ogiltig e-postadress noPassphrase=Fel - ingen uppgift om lösenfras noPGPblock=Fel - Inget giltigt skyddat OpenPGP datablock finns unverifiedReply=Indragen meddelandedel (svar) troligen ändrats keyInMessageBody=Nyckel hittades i meddelandet. Klicka på "Importera nyckel" för att importera nyckeln sigMismatch=Fel - Signaturen matchar inte cantImport=Fel vid import av publik nyckel\n\n doImportOne=Importera %1$S (%2$S)? doImportMultiple=Importera följande nycklar?\n\n%S previewFailed=Kan inte läsa den publika nyckelfilen. # Strings used in errorHandling.jsm sc.wrongCardAvailable=SmartCard %S finns i din läsare kan inte användas för att behandla meddelandet.\nSätt in ditt SmartCard %S och upprepa operationen. sc.insertCard=Operationen kräver ditt SmartCard %S.\nSätt in ditt SmartCard och upprepa operationen. sc.removeCard=Operationen kräver inget SmartCard i läsaren.\nTa bort ditt SmartCard och upprepa operationen. sc.noCardAvailable=Inget SmartCard kunde hittas i din läsare.\nSätt in ditt SmartCard och upprepa operationen. sc.noReaderAvailable=Ingen åtkomst till din SmartCard-läsare.\nKoppla in din SmartCard-läsare, sätt in ditt kort, och upprepa operationen. keyError.keySpecNotFound=E-postadressen "%S" kan inte matchas till en nyckel i din nyckelring. keyError.keyIdNotFound=Den konfigurerade nyckel-ID "%S" kan inte hittas i din nyckelring. keyError.resolutionAction=Välj en giltig nyckel i OpenPGP-delen av dina kontoinställningar. missingPassphrase=Lösenord saknas errorHandling.gpgAgentInvalid=Systemet kör en version av gpg-agent som inte är lämplig för din GnuPG-version. errorHandling.gpgAgentError=GnuPG rapporterade ett fel i kommunikationen med gpg-agent (en komponent i GnuPG). errorHandling.dirmngrError=GnuPG rapporterade ett fel i kommunikationen med dirmngr (en komponent i GnuPG). errorHandling.pinentryError=GnuPG kan inte fråga efter ditt lösenord via pinentry. errorHandling.readFaq=Detta är ett systeminställnings eller konfigurationsfel som hindrar Enigmail från att fungera ordentligt och kan inte fixas automatiskt.\n\nVi rekommenderar starkt att du tittat på vår supportwebbplats på https://enigmail.net/faq. gpgNotFound=Kan inte hitta GnuPG programmet '%S'.\nSe till att du har ställt in GnuPG körbara sökväg korrekt i Enigmail inställningar. gpgNotInPath=Kan inte hitta programmet GnuPG i PATH.\nSe till att du har ställt in GnuPG körbara sökväg korrekt i Enigmail inställningar. enigmailNotAvailable=Enigmails kärntjänst är inte tillgänglig gpgAgentNotStarted=Det gick inte att starta gpg-agent program som behövs för din GnuPG version %S. prefUntrusted=EJ BETRODD prefRevoked=ÅTERKALLAD NYCKEL prefExpiredKey=UPPHÖRD NYCKEL prefExpired=UPPHÖRD prefGood=Bra signatur från %S prefBad=Dålig signatur från %S failCancel=Fel - Mottagande av nyckel avbröts av användaren failNoServer=Fel - Ingen nyckelserver specificerad att motta nyckeln från failNoID=Fel - Inget nyckel-ID specificerad att ta emot nyckel för failKeyExtract=Fel - nyckel-extraktionskommando misslyckades notFirstBlock=Fel - Första OpenPGP blocket inte publik nyckelblock importKeyConfirm=Importera publik nyckel inbäddad i meddelandet? failKeyImport=Fel - nyckelimport misslyckades fileWriteFailed=Det gick inte att skriva till filen %S importKey=Importera publik nyckel %S från nyckelserver: uploadKey=Skicka publik nyckel %S till nyckelserver: keyId=Nyckel-ID keyAndSigDate=Nyckel-ID: 0x%S / Signerad: %S keyFpr=Nyckelns fingeravtryck: %S noEmailProvided=Du angav ingen e-postadress! keyAlreadySigned=Nyckeln är redan signerad, det går inte att signera den två gånger. gnupg.invalidKey.desc=Nyckeln %S hittades inte eller är ogiltig. (Under-)nyckeln kan ha upphört. selKeyExpired=upphört %S createdHeader=Skapad atLeastOneKey=Ingen nyckel vald! Du måste välja minst en nyckel för att acceptera den här dialogrutan fewerKeysThanRecipients=Du har valt ett mindre antal nycklar än mottagare. Är du säker på att listan över nycklar för att kryptera är klar? userSel.button.goBack=Välj fler nycklar userSel.secretKeySel.title=Välj en privat OpenPGP nyckel för att signera dina meddelanden userSel.problemNoKey=Ingen giltig nyckel userSel.problemMultipleKeys=Flera nycklar # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Skicka senare # Strings used in enigmailAttachmentDialog.js pgpMimeNote=OBS: PGP/MIME stöds endast av ett begränsat antal e-postklienter! För Windows är endast Mozilla/Thunderbird, Sylpheed, Pegasus och Mulberry kända för att stödja denna standard; för Linux/UNIX och Mac OS X stöder de flesta e-postklienter det. Om du är osäker, välj %S alternativet. first=första second=andra # Strings used in am-enigprefs.js encryptKeyHeader=Välj OpenPGP nyckel för kryptering identityName=Identitet: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Du har aktiverat kryptering, men du har inte valt någon nyckel. För att kunna kryptera e-post som skickas till %S, måste du ange en eller flera giltiga nycklar från din nyckellista. Vill du inaktivera kryptering för %S? noKeyToUse=(ingen - ingen kryptering) noEmptyRule=Regeln får inte vara tom! Vänligen ange en e-postadress i regelfältet. invalidAddress=Den e-postadress som du har angett är inte giltig. Du ska inte ange namnen hos mottagarna, bara e-postadresserna. T.ex.:\nOgiltig: Vissa namn \nGiltig: vissa.namn@adress.net noCurlyBrackets=Klammerparenteser {} har en speciell betydelse och bör inte användas i e-postadresser. Om du vill ändra matchningsbeteendet för den här regeln, använd 'Tillämpa regel om mottagare ...' alternativet.\nMer information finns i hjälpen. # Strings used in enigmailRulesEditor.js never=Aldrig always=Alltid possible=Möjlig deleteRule=Vill du verkligen ta bort den valda regeln? nextRcpt=(Nästa mottagare) negateRule=Inte addKeyToRule=Lägg till nyckel %S (%S) till per-mottagare regel # Strings used in enigmailSearchKey.js needOnline=Funktionen du valt är inte tillgänglig offline. Vänligen gå online och försök igen. protocolNotSupported=Protokollet '%S://' som du har valt stöds inte för nedladdning av OpenPGP nycklar. gpgkeysDisabled=Det kan hjälpa att aktivera alternativet 'extensions.enigmail.useGpgKeysTool'. noKeyserverConn=Det gick inte att ansluta till nyckelserver på %S. keyDownloadFailed=Det gick inte att hämta nyckeln från nyckelserver. Statusmeddelande är:\n%S internalError=Ett internt fel uppstod. Nycklarna kan inte laddas ner eller importeras. noKeyFound=Jag är ledsen, kunde inte hitta någon nyckel som matchar det angivna sökkriterierna.\nObservera att nyckel-ID bör ha prefix "0x" (t.ex. 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Det gick inte att söka eller ladda ner nyckeln från nyckelserver: gpgkeys_%S kunde inte köras. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Ställa in ägarförtroende misslyckades # Strings in enigmailSignKeyDlg.js signKeyFailed=Nyckelsignering misslyckades alreadySigned.label=OBS: nyckeln %S är redan signerad med den valda privata nyckeln. alreadySignedexportable.label=Obs: nyckel %S är redan signerad exporterbar med den valda privata nyckeln. En lokal signatur verkar inte vettigt. partlySigned.label=Obs: vissa användar-ID för nyckel %S är redan signerade med den valda hemliga nyckeln. noTrustedOwnKeys=Ingen berättigade nyckel hittades för signering! Du behöver åtminstone en helt pålitliga privat nyckel för att signera nycklar. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Laddar nycklar, vänta ... keyValid.unknown=okänd keyValid.invalid=ogiltig keyValid.disabled=inaktiverad keyValid.revoked=återkallad keyValid.expired=upphörd keyValid.noSubkey=ingen giltig undernyckel keyTrust.untrusted=ej betrodd keyTrust.marginal=marginell keyTrust.full=betrodd keyTrust.ultimate=helt och hållet keyTrust.group=(grupp) keyType.public=pub keyType.publicAndSec=pub/priv keyMan.enableKey=Aktivera nyckel keyMan.disableKey=Inaktivera nyckel userAtt.photo=Användarattribut (JPEG bild) asciiArmorFile=ASCII skyddade filer (*.asc) importKeyFile=Importera OpenPGP nyckelfil gnupgFile=GnuPG filer saveRevokeCertAs=Skapa & spara återkallat certifikat revokeCertOK=Återkallningscertifikatet har skapats. Du kan använda det för att ogiltigförklara din publika nyckel, t.ex. om du skulle förlora din privata nyckel.\n\nVänligen överför den till ett medium som kan förvaras säkert t.ex. CD eller diskett. Om någon får tillgång till detta certifikat kan de använda den för att göra din nyckel oanvändbar. revokeCertFailed=Återkallningscertifikatet kunde inte skapas. addUidOK=Användar-ID har lagts till addUidFailed=Lägga till användar-ID misslyckades noKeySelected=Du bör välja minst en nyckel för att utföra vald åtgärd exportToFile=Exportera publik nyckel till fil exportKeypairToFile=Exportera privat och publik nyckel till fil exportSecretKey=Vill du inkludera den privata nyckeln i den sparade OpenPGP nyckelfilen? saveKeysOK=Nycklarna har sparats saveKeysFailed=Spara nycklarna misslyckades importKeysFailed=Importera nycklarna misslyckades enableKeyFailed=Aktivering/inaktivering nycklarna misslyckades specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-priv defaultPubKeyFilename=Exporterade-publika-nycklar defaultPubSecKeyFilename=Exporterade-publika-och-privata-nycklar noSecretKeys=Inga privata nycklar hittades.\n\nVill du skapa din egen nyckel nu? sendKeysOk=Nyckel skickad sendKeysFailed=Skicka nycklar misslyckades receiveKeysOk=Nyckel uppdaterad receiveKeysFailed=Nedladdningen av nycklar misslyckades importFromClip=Vill du importera någon nyckel från urklipp? importFromUrl=Hämta publik nyckel från denna URL: copyToClipbrdFailed=Det gick inte att kopiera den valda nyckeln till urklipp. copyToClipbrdOK=Nyckel kopierad till urklipp deleteSecretKey=VARNING: Du är på väg att ta bort en privat nyckel!\nOm du tar bort din privata nyckel, kommer du inte längre att kunna dekryptera några meddelanden som är krypterade med den nyckeln.\n\nVill du verkligen ta bort BÅDA, den privata och den publika nyckeln\n'%S'? deleteMix=VARNING: Du är på väg att ta bort privata nycklar!\nOm du tar bort din privata nyckel, kommer du inte längre att kunna dekryptera några meddelanden med den nyckeln.\n\nVill du verkligen ta bort BÅDA, den valda privata och publika nyckeln? deletePubKey=Vill du ta bort den publika nyckeln\n'%S'? deleteSelectedPubKey=Vill du ta bort de publika nycklarna? deleteKeyFailed=Nyckeln kan inte tas bort revokeKeyQuestion=Du håller på att spärra nyckel '%S'. \n \nDu kommer inte längre att kunna signera med denna nyckel och när den har distribuerats, kan andra inte längre kryptera med den nyckeln. Du kan fortfarande använda nyckeln för att dekryptera gamla meddelanden. \n \nVill du fortsätta? revokeKeyOk=Nyckeln har återkallats. Om din nyckel finns tillgänglig på en nyckelserver, rekommenderas att ladda upp den på nytt, så att andra kan se återkallelsen. revokeKeyFailed=Nyckeln kan inte återkallas. refreshAllQuestion=Du har inte valt någon nyckel. Vill du uppdatera ALLA nycklar? refreshKey.warn=Varning: beroende på antal nycklar och anslutningshastighet, uppdateringen av alla nycklar kan ta en ganska lång tid! downloadContactsKeys.warn=Varning: Beroende på antalet kontakter och anslutningshastighet, kan hämtning av alla nycklar vara en ganska lång process! downloadContactsKeys.importFrom=Importera kontakter från adressboken '%S'? keyMan.button.exportSecKey=Exportera &Privata nycklar keyMan.button.exportPubKey=Exportera endast &Publika nycklar keyMan.button.import=&Importera keyMan.button.refreshAll=&Uppdatera alla nycklar keyMan.button.revokeKey=&Återkalla nyckel keyMan.button.skip=&Skip Key keylist.noOtherUids=Har inga andra identiteter keylist.hasOtherUids=Även känd som keylist.noPhotos=Inget foto tillgängligt keylist.hasPhotos=Fotografier keyMan.addphoto.filepicker.title=Välj foto att lägga till keyMan.addphoto.warnLargeFile=Filen du har valt är större än 25 kB.\nDet rekommenderas inte att lägga till mycket stora filer eftersom nycklarna blir mycket stora av detta. keyMan.addphoto.noJpegFile=Den valda filen verkar inte vara en JPEG-fil. Välj en annan fil. keyMan.addphoto.failed=Fotot kan inte läggas till. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Ändra den primära användar-ID misslyckades changePrimUidOK=Ändra den primära användar-ID lyckades deleteUidFailed=Ta bort användar-ID %S misslyckades deleteUidOK=Ta bort användar-ID %S lyckades revokeUidFailed=Återkalla användar-ID %S misslyckades revokeUidOK=Användar-ID %S återkallat. Om din nyckel finns tillgänglig på någon nyckelserver, rekommenderas det att ladda upp den på nytt, så att andra kan se återkallelsen. revokeUidQuestion=Vill du verkligen återkalla användar-ID %S? deleteUidQuestion=Vill du verkligen ta bort användar-ID %S?\n\nVänligen observera: om du har skickat din publika nyckel till en nyckelserver, radera ett användar-ID kommer inte att förändra någonting. I det här fallet ska du använda 'Återkalla användar-ID'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=Succé! Nycklar importerade importInfoSuccess=✅ importInfoBits=Bitar importInfoCreated=Skapad importInfoFpr=Fingeravtryck importInfoDetails=(Detaljer) importInfoNoKeys=Inga nycklar importerade. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=publik nyckel keyTypePrimary=primär nyckel keyTypeSubkey=undernyckel keyTypePair=nyckelpar keyExpiryNever=aldrig keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Kryptera keyUsageSign=Signera keyUsageCertify=Certifiera keyUsageAuthentication=Autentisering keyDoesNotExpire=Nyckel upphör inte # Strings in enigmailGenCardKey.xul keygen.started=Vänta medan nyckeln genereras .... keygen.completed=Nyckel skapad. Det nya nyckel-ID är: 0x%S keygen.keyBackup=Nyckel säkerhetskopieras som %S keygen.passRequired=Ange en lösenfras om du vill skapa en säkerhetskopia av din nyckel utanför ditt SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Din PIN-kod som du har angett matchar inte; försök på nytt cardPin.minLength=PIN-koden måste ha minst %S tecken eller siffror cardPin.processFailed=Det gick inte att ändra PIN-kod # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Uppdaterar nycklar, vänta ... keyserverProgress.uploading=Laddar upp nycklar, vänta ... keyserverTitle.refreshing=Uppdatera nycklar keyserverTitle.uploading=Nyckeluppladdning # Strings in enigmailSetupWizard passphrase.min8keys=Din lösenfras bör innehålla åtminstone 8 tecken! setupWizard.reallyCancel=Vill du verkligen stänga Enigmail installationsguide? setupWizard.invalidGpg=Filen du angav är inte en körbar GnuPG. Ange en annan fil. setupWizard.specifyFile=Du måste åtminstone ange en publik nyckelfil för att fortsätta. setupWizard.installFailed=Det verkar som om installationen misslyckades. Antingen göra om installationen, eller installera GnuPG manuellt och lokalisera den med hjälp av knappen Bläddra. setupWizard.downloadForbidden=För din egen säkerhet, kommer vi inte hämta GnuPG. Besök http://www.gnupg.org/ för att hämta GnuPG. setupWizard.downloadImpossible=Vi kan inte hämta GnuPG för tillfället. Försök senare eller besök http://www.gnupg.org/ för att hämta GnuPG. setupWizard.hashSumError=Guiden kunde inte verifiera integriteten för den nedladdade filen. Filen kan vara trasig eller manipulerad. Vill du fortsätta installationen ändå? setupWizard.importSettingsFile=Ange säkerhetskopieringsfil att läsa från setupWizard.invalidSettingsFile=Den angivna filen är inte en korrekt säkerhetskopieringsfil med inställningar för Enigmail. setupWizard.gpgConfExists=Konfigurationsfil för GnuPG finns redan. Vill du skriva över den med den från din gamla installation? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Ett fel inträffade vid försök att hämta GnuPG. Kontrollera konsolloggen för mer detaljer. installGnuPG.installFailed=Ett fel inträffade under installationen av GnuPG. Vänligen kontrollera konsolloggen för mer detaljer. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Du måste fylla i ett namn och en e-postadress addUidDlg.nameMinLengthError=Namnet måste minst ha 5 tecken addUidDlg.invalidEmailError=Du måste ange en giltig e-postadress addUidDlg.commentError=Parenteser är inte tillåtna i kommentarer # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP Smartcards stöder bara ASCII-tecken i Förnamn/Namn. # network error types errorType.SecurityCertificate=Säkerhetscertifikatet som presenteras av webbtjänsten är inte giltig. errorType.SecurityProtocol=Säkerhetsprotokollet som används av webbtjänsten är okänd. errorType.Network=Ett nätverksfel har inträffat. # filter stuff filter.folderRequired=Du måste välja en målmapp. filter.decryptMove.label=Dekryptera alltid (Enigmail) filter.decryptCopy.label=Skapa dekrypterad kopia (Enigmail) filter.decryptMove.warnExperimental=Varning - filteråtgärd 'Dekryptera alltid' kan leda till förstörda meddelanden . \n \nVi rekommenderar starkt att du först prövar filtret "Skapa dekrypterad kopia", testa resultatet noga och börja endast använda det här filtret när du är nöjd med resultatet. # strings in enigmailConvert.jsm converter.decryptBody.failed=Det gick inte att dekryptera meddelandet med ämne \n"%S". \nVill du försöka igen med en annan lösenfras eller vill du hoppa över meddelandet? converter.decryptAtt.failed=Det gick inte att dekryptera bilagan "%1$S" \nför meddelandet med ämnet \n"%2$S". \nVill du försöka igen med en annan lösenfras eller vill du hoppa över meddelandet? saveLogFile.title=Spara loggfil # strings in gpg.jsm unknownSigningAlg=Okänd signeringsalgoritm (ID: %S) unknownHashAlg=Okänt kryptografiskt hash (ID: %S) # strings in keyRing.jsm keyring.photo=Foto keyRing.pubKeyRevoked=Nyckel %1$S (nyckel-ID %2$S) är återkallad. keyRing.pubKeyExpired=Nyckel %1$S (nyckel-ID %2$S) har upphört. keyRing.pubKeyNotForSigning=Nyckel %1$S (nyckel-ID %2$S) kan inte användas för signering. keyRing.pubKeyNotForEncryption=Nyckel %1$S (nyckel-ID %2$S) kan inte användas för kryptering. keyRing.keyDisabled=Nyckel %1$S (nyckel-ID %2$S) är inaktiverad; kan inte användas. keyRing.keyNotTrusted=Nyckel %1$S (nyckel-ID %2$S) är inte tillräckligt tillförlitlig. Ställ in pålitlighetsnivån för din nyckel till "helt och hållet" för att använda den för signering. keyRing.keyInvalid=Nyckel %1$S (nyckel-ID %2$S) är ogiltig (t.ex. har den inte en egen signatur). keyRing.signSubKeysRevoked=Alla undernycklar för signering av nyckel %1$S (nyckel-ID %2$S) är återkallade. keyRing.signSubKeysExpired=Alla undernycklar för signering av nyckel %1$S (nyckel-ID %2$S) har upphört. keyRing.signSubKeysUnusable=Alla undernycklar för signering av nyckel %1$S (nyckel-ID %2$S) är återkallade, har upphört eller på annat sätt oanvändbara. keyRing.encSubKeysRevoked=Alla undernycklar för kryptering av nyckel %1$S (nyckel-ID %2$S) är återkallade. keyRing.encSubKeysExpired=Alla undernycklar för kryptering av nyckel %1$S (nyckel-ID %2$S) har upphört. keyRing.noSecretKey=Du verkar inte ha den hemliga nyckeln för %1$S (nyckel-ID %2$S) på din nyckelring; du kan inte använda nyckeln för signering. keyRing.encSubKeysUnusable=Alla undernycklar för kryptering av nyckel %1$S (nyckel-ID %2$S) är återkallade, har upphört eller på annat sätt oanvändbara. #strings in exportSettingsWizard.js cannotWriteToFile=Kan inte spara till fil '%S'. Välj en annan fil. dataExportError=Ett fel inträffade under exporten av dina data. enigmailSettings=Enigmail-inställningar defaultBackupFileName=Enigmail-exportera specifyExportFile=Ange filnamnet för export homedirParamNotSUpported=Ytterligare parametrar som konfigurerar sökvägar såsom --homedir och --keyring stöds inte för exportera/återställa dina inställningar. Vänligen använd alternativa metoder, såsom att ställa in miljövariabeln GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Din nyckel %1$S kommer att upphöra inom mindre än %2$S dagar.\n\nVi rekommenderar att du skapar ett nytt nyckelpar och konfigurerar motsvarande konton att använda den nya nyckeln. expiry.keysExpireSoon=Följande nycklar kommer att upphöra inom mindre än %1$S dagar: \n%2$S. Vi rekommenderar att du skapar nya nycklar och konfigurerar dina konton för att använda de nya nycklarna. enigmail/lang/sv-SE/help/000077500000000000000000000000001266701624400154615ustar00rootroot00000000000000enigmail/lang/sv-SE/help/compose.html000066400000000000000000000074651266701624400200300ustar00rootroot00000000000000 Enigmail Hjälp: Skriva meddelanden

Enigmail Hjälp

Använda Enigmail när du skriver meddelanden

Enigmail's meny i skrivfönstret
Signera meddelande
Aktivera/inaktivera skicka signerad e-post. Användaren meddelas, om signering misslyckas.
Kryptera meddelande
Aktivera/inaktivera kryptering till alla mottagare innan du skickar. Användaren meddelas, om kryptering misslyckas.
Använd PGP/MIME för detta meddelande
Aktivera/inaktivera användning av PGP/MIME för detta meddelande.

Om du vet att mottagaren kan läsa e-post med hjälp av PGP/MIME-formatet, ska du använda det.

Den här funktionen är beroende av inställningarna i Inställningar -> PGP/MIME -fliken är satta till Tillåt att använda PGP/MIME eller Alltid använda PGP/MIME.

Standard kompositionsalternativ
  • Signering/Kryptering alternativ...: genväg till Kontoinställningar -> OpenPGP alternativ.
  • Skicka alternativ...: genväg till Inställningar -> skicka fliken.
  • Nyckelval alternativ...: genväg till Inställningar -> Nyckelval fliken.
  • PGP/MIME alternativ...: genväg till Inställningar -> PGP/MIME fliken.
Ã…ngra kryptering

Om det uppstår ett fel när du skickar mail, till exempel POP-servern inte accepterar begäran, kommer Enigmail inte vet om det, och det krypterade meddelandet fortsätter att visas i meddelandefönstret. Att välja detta menyalternativ kommer att ångra kryptering/signering, då återgår skrivfönstret tillbaka till sin ursprungliga text.

Som en temporär fix, kan detta alternativ också användas för att dekryptera den citerade texten när du svarar på krypterade meddelanden. Enigmail bör automatiskt dekryptera det citerade meddelandet, men om det misslyckas av någon anledning, kan du använda det här menyalternativet för att tvinga det.

Bifoga publik nyckel
Infoga ASCII-armerade publika nyckelblock vid nuvarande markörposition i skrivfönstret. Du kommer att bli tillfrågad om e-postadresser till nyckeln som ska infogas. Nycklar som infogats på detta sätt kommer automatiskt att redovisas vid den mottagande änden av Enigmail. Efter nyckelinsättning, kan du fortfarande välja att signera/kryptera mail efter behov. Också, infoga inte mer än ett nyckelblock i ett meddelande; ange flera e-postadresser, avgränsade med kommatecken eller mellanslag, när det efterfrågas.
Rensa sparad lösenfras
Rensar cachade lösenfraser. Användbart om du har flera lösenfraser.
Hjälp
Visar hjälpinformation från webbplatsen (denna sida).

Ytterligare hjälp finns på Enigmail's Supportwebbplats

enigmail/lang/sv-SE/help/editRcptRule.html000066400000000000000000000116601266701624400207610ustar00rootroot00000000000000 Enigmail Hjälp: Redigera OpenPGP regel

Enigmail Hjälp

Använda Enigmail's regelredigerare: Redigera OpenPGP regel

I regelredigeraren kan du ange standardinställningar per mottagare för att aktivera kryptering, signering och PGP/MIME, och för att definiera vilken OpenPGP-nyckel som ska användas. I det här fönstret kan du ange regler för en enda mottagare, och för en grupp av mottagare med mycket liknande egenskaper.

Ange Enigmail-regler för
Innehåller e-postadresserna till mottagarna (utan namn, det vill säga endast en adress som somebody@email.domain). Du kan ange flera e-postadresser, separerade med mellanslag. Adressen som anges här kan endast bestå av domändelen så att e-post till en adress på den domänen kommer att matchas, t.ex. @email.domain tillåter matchning till body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Tillämpa regel om mottagare ...
Detta ändrar matchning av e-postadresser. Om flera adresser anges kommer inställningen gälla för alla. Exemplen nedan är baserade på body@email.domain som angetts i OpenPGP reglerfältet ovan.
  • Är exakt: med denna inställning, kommer regeln endast trigga pÃ¥ e-post till body@email.domain (exakt, fall okänsliga matchning).
  • InnehÃ¥ller: med denna inställning, kommer en e-postadress som innehÃ¥ller strängen matchas, t.ex. anybody@email.domain eller body@email.domain.net
  • Startar med: med denna inställning, kommer en e-postadress som börjar med strängen matchas, t.ex. body@email.domain.net, body@email.domain-name.com.
  • Slutar med: med denna inställning, kommer en e-postadress som slutar med strängen matchas, t.ex. anybody@email.domain, somebody@email.domain.
Fortsätt med nästa regel för matchande adress
Aktivera den här funktionen kan du definiera en regel, men inte ange en nyckel-ID i Använd följande OpenPGP nycklar: fältet, så att e-postadressen används för att kontrollera en nyckel när du skickar. Dessutom kommer ytterligare regler för samma adress behandlas också.
Kontrollera inte ytterligare regler för matchande adress
Aktivera den här funktionen stoppar bearbetning av andra regler för matchande adress, om denna regel matchas; dvs regelbearbetningen fortsätter med nästa mottagare.
Använd följande OpenPGP nycklar:
Använd Välj nyckel... knappen för att välja mottagarens nycklar som ska användas för kryptering. Som i åtgärden ovan, inga ytterligare regler för matchande adress behandlas.
Standardvärden för...
Aktivera eller inaktivera signering för meddelanden. Detta använder eller åsidosätter vad du har specificerat i meddelandefönstret. Värdena är:
  • Aldrig: avaktivera signering, även om den var aktiverad i meddelandefönstret(upphäver de andra värdena)
  • Ja, om det valts i meddelandekompositionen: lämna signering som anges i meddelandefönstret
  • Alltid: aktivera signering, även om det var inte aktiverad i meddelandefönstret
Dessa signeringsinställningar tillämpas för alla regler som matchar. Om en av reglerna inaktiverar signering kommer meddelandet inte signeras, oberoende av andra regler som anger Alltid.
Kryptering
Aktivera eller inaktivera meddelandekryptering. Tillåtna inställningar och deras betydelse är de samma som för meddelandesignering.
PGP/MIME
Aktivera eller inaktivera användning av PGP/MIME (RFC 3156) meddelandekodning. Om PGP/MIME är inaktiverad kodas meddelandena med "inline PGP". Tillåtna värden och deras betydelse är de samma som för meddelandesignering.

Reglerna behandlas i den ordning de visas i listan i OpenPGP regelredigerare. När en regel matchar en mottagare och innehåller en OpenPGP nyckel-ID, utöver att använda den angivna Nyckel-ID, mottagaren räknas inte längre vid behandling av ytterligare regler.


Ytterligare hjälp finns på Enigmail Per-Recipient Settings page

enigmail/lang/sv-SE/help/initError.html000066400000000000000000000045741266701624400203360ustar00rootroot00000000000000 Enigmail Hjälp: Hur man ska lösa problem med initiera OpenPGP

Enigmail Hjälp

Hur man ska lösa problem med Initiera OpenPGP

Det finns flera skäl till varför initiering av OpenPGP inte lyckas. De vanligaste beskrivs nedan; Mer information finns på Enigmail supportsida.

GnuPG kunde inte hittas

För att OpenPGP ska fungera, behövs verktyget GnuPG installeras. Om GnuPG inte kan hittas, se då först till att den körbara gpg.exe (för Windows; gpg för andra plattformar) är installeras på din dator. Om GnuPG är installerat, och OpenPGP kan inte hitta den, måste du manuellt ange sökväg till GnuPG i OpenPGP's inställningar (meny OpenPGP > Inställningar)

Enigmime gick inte att initiera

OpenPGP fungerar endast om den är byggd med samma byggmiljö som Thunderbird eller SeaMonkey byggdes med. Det innebär att du kan använda den officiella Enigmail releaser endast om du använder de officiella releaserna av Thunderbird eller SeaMonkey som tillhandahålls av mozilla.org.

Om du använder en Thunderbird eller SeaMonkey version som kommer från någon annan källa (t.ex. leverantören av din Linux-distribution), eller om du byggde programmet själv, bör du antingen använda en Enigmail version byggda med samma källa, eller bygga Enigmail själv. För att bygga Enigmail, se Avsnittet källkod på Enigmail's hemsida. Skicka eller lämna inte någon felrapporter om detta problem, det kan inte lösas.

Ytterligare hjälp finns på Enigmail's Supportwebbplats.

enigmail/lang/sv-SE/help/messenger.html000066400000000000000000000102501266701624400203350ustar00rootroot00000000000000 Enigmail Hjälp: Läsa meddelanden

Enigmail Hjälp

Använda Enigmail när du läser meddelanden

Dekryptera knappen i mailets huvudfönster
Denna knapp kan användas för flera ändamål: dekryptera, verifiera, eller importera allmänna nycklar. Normalt dekryptering/verifiering sker automatiskt, även om detta kan inaktiveras genom en inställning. Om detta misslyckas, kommer vanligtvis en kort felmeddelande i Enigmail's statusrad. Om du klickar på Dekryptera knappen, kommer du att kunna se ett mer detaljerat felmeddelande, inklusive utdata från kommandot GnuPG.
Penn- och nyckelikoner som visas i meddelandehuvudet
Penn- och Nyckelikoner i meddelandehuvudet visar om meddelandet som du läser signerats och/eller krypterats och om signaturen är bra, det vill säga meddelandet har inte förändrats sedan det signerades. Om meddelandet har ändrats, Pennikonen ändras till en bruten penna för att indikera att signaturen är dålig. Högerklicka på antingen penn- eller nyckelikonen visar en meny med följande alternativ:
  • OpenPGP säkerhetsinfo: lÃ¥ter dig se utdata frÃ¥n GnuPG för meddelandet.
  • Kopiera OpenPGP säkerhetsinfo: kopierar utdata frÃ¥n GnuPG till urklipp; för att klistra in ett svarsmeddelande, etc.
  • Visa OpenPGP foto-ID: lÃ¥ter dig se foto-ID för den person som skickade meddelandet, om de har ett foto inbäddad i sin publika nyckel. (Detta alternativ kommer endast att aktiveras om ett foto-ID finns i deras nyckel.)
  • S/MIME säkerhetsinfo: lÃ¥ter dig se pÃ¥ S/MIME säkerhetsinfo för meddelandet.

Om du inte har angett keyserver-options auto-key-retrieve i din gpg.conf fil och du läser ett meddelande som är signerat eller krypterat, kommer du att se en Penn-ikon i huvudområdet med ett Frågetecken på den, Enigmail's statusrad i huvudområdet visar del av meddelandet signerat; klicka på pennikonen för detaljer och meddelandet i meddelandefönstret visar alla OpenPGP meddelandeblocksindikatorer och signaturblock.

Du kan också se detta om du har angett keyserver-options auto-key-retrieve i din gpg.conf fil och OpenPGP nyckeln inte finns på standardnyckelservern.

Genom att klicka på Penn och frågetecknet-ikonen kommer ett fönster upp som meddelar att nyckeln inte är tillgänglig i din nyckelring. Om du klickar på OK kommer att ett nytt fönster upp med en lista över nyckelservrar där du kan välja att hämta avsändarens publika nyckel från.

För att konfigurera listan med nyckelservrar som du vill använda, gå till Enigmail-> Inställningar->grundläggande fliken och ange nyckelserverns adress i nyckelserver: rutan, separerade med ett kommatecken. Den första nyckelservern i listan kommer att användas som standard.

Öppna krypterade bilagor/importera bifogade OpenPGP nycklar
Bifogade filer som slutar på *.Pgp, *.Asc och *.Gpg känns igen som bilagor som kan hanteras speciellt av Enigmail. Genom att högerklicka på en sådan bilaga möjliggörs två speciella menyalternativ i snabbmenyn: Dekryptera och öppna och Dekryptera och spara. Använd dessa två menyalternativ om du vill att Enigmail ska dekryptera en bifogad fil innan du öppnar eller sparar den. Om en bilaga känns igen som en OpenPGP nyckelfil, erbjuds du att importera nycklarna till din nyckelring.

Ytterligare hjälp finns på Enigmail's Supportwebbplats

enigmail/lang/sv-SE/help/rulesEditor.html000066400000000000000000000062371266701624400206600ustar00rootroot00000000000000 Enigmail Hjälp: Regelredigeraren

Enigmail Hjälp

Använda Enigmail's regelredigerare

I regelredigeraren kan du ange standardinställningar per mottagare för att möjliggöra kryptering, signering och PGP/MIME, och ange vilken OpenPGP nyckel som ska användas. Varje regel består av fem områden och är representerade på en rad:

E-post
E-post att matcha i fälten Till:, Kopia: och Hemlig kopia:. Matchningen fungerar på delsträngar (Ytterligare information finns i fönstret redigera regler.)
OpenPGP nyckel
en lista med OpenPGP nyckel-ID för att använda för mottagaren
Signera
aktivera eller inaktivera signering av meddelanden. Detta använder eller åsidosätter vad du har specificerat i meddelandefönstret. Värdena är:
  • Aldrig: inaktivera signering, även om den var aktiverad i meddelandefönstret (upphäver de andra värdena)
  • Möjlig: lämna signering som angetts i meddelandefönstret
  • Alltid: aktivera signering, även om den inte var aktiverad i meddelandefönstret

Dessa signeringsinställningar tillämpas för alla regler som matchar. Om en av reglerna inaktiverar signering kommer meddelandet inte signeras, oberoende av andra regler som anger Alltid.

Kryptera
aktivera eller inaktivera kryptering av meddelande. Tillåtna inställningar och deras betydelse är de samma som för signering av meddelande.
PGP/MIME
aktivera eller inaktivera användning av PGP/MIME (RFC 3156) meddelandekodning. Om PGP/MIME är inaktiverad kodas meddelandena med "inline PGP". Tillåtna värden och deras betydelse är de samma som för signering av meddelande.

Reglerna behandlas i den ordning som visas i listan. När en regel matchar en mottagare och innehåller en OpenPGP nyckel-ID, utöver att använda den angivna nyckel-ID, mottagaren räknas inte längre vid behandling av ytterligare regler.

OBS: Regelredigeraren är ännu inte klar. Det är möjligt att skriva några mer avancerade regler genom att direkt redigera filen rules (dessa regler bör då inte redigeras längre i regelredigeraren). Mer information för att direkt redigera filen finns tillgänglig på Enigmail's hemsida


Ytterligare hjälp finns på Enigmail's Supportwebbplats

enigmail/lang/sv-SE/help/sendingPrefs.html000066400000000000000000000054021266701624400207770ustar00rootroot00000000000000 Enigmail Hjälp: Redigera OpenPGP regel

Enigmail Hjälp

Fastställa inställningar för att skicka krypterat

I inställningar för att skicka kan du välja en allmän modell och inställningar för kryptering.

Smidig kryptering
Med dessa inställningar, krypteras e-post utan bekräftelse när det är möjligt.

Denna inställning är lämplig, om du vill förbättra din integritet genom att skicka e-post krypterat istället för okrypterat om det är möjligt.

Effekten är som att skicka e-post som brev istället för vykort. Till skillnad från vykort, döljer brev oftast sitt innehåll under transport.

Observera dock att som med brev kan du inte vara säker på att ingen öppnar brevet under transporten (även om vissa tekniska ansträngningar krävs för det).

En konkret risk är att du av misstag använder "förfalskade nycklar" du fick från någonstans eller någon som hävdar att nyckeln tillhör den person som du vill skicka e-post till. För att undvika denna risk, kan du antingen använda förtroende modellen av PGP (se nedan) eller bör du alltid kontrollera, om fingeravtryck av en publik nyckel är korrekt.

Manuell kryptering
Med det här alternativet kan du ange olika inställningar för kryptering enligt dina behov. Du kan ange
  • om svar pÃ¥ krypterade/signerade e-postmeddelanden bör automatisk ocksÃ¥ vara krypterad/signerad-
  • om du vill använda förtroende modellen av OpenPGP för att acceptera nycklar (detta innebär att man använder en nyckel som du antingen mÃ¥ste signera nyckel eller har tillräckligt mÃ¥nga andra människor du litar pÃ¥ som har signerat nyckeln).
  • om du vill skicka e-post krypterat om alla nycklar accepteras.
  • om och när du vill slutligen bekräfta sändning av ett mail.
Om det är viktigt för dig att innehåll som du skickar krypteras inte kan läsas av andra personer eller organisationer, bör du använda de manuella inställningarna. Välj åtminstone alternativet att ta emot nycklarna om du eller andra människor signerat dem. Även denna modell minskar risken för att använda förfalskade nycklar, det kräver att du aktivt signerar nycklar och förklarar ägare förtroende med hjälp av fönstret nyckelhanteraren. enigmail/lang/tr/000077500000000000000000000000001266701624400142215ustar00rootroot00000000000000enigmail/lang/tr/am-enigprefs.properties000066400000000000000000000001241266701624400207110ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP Güvenliği enigmail/lang/tr/enigmail.dtd000066400000000000000000000676211266701624400165170ustar00rootroot00000000000000 NOT: Anahtar üretiminin bitmesi biraz zaman alabilir. Anahtar üretimi sırasında uygulamayı kapatmayın. Aktif olarak internette gezinmek ya da diskle ilgili işler yapmak rasgele üretimi kolaylaştıracağından işlemin hızını artıracaktır. Anahtar üretimi bittiğinde uyarılacaksınız."> ' yanlış"> NOT: Anahtar üretimi biraz uzun sürebilir. Anahtar üretimi sırasında uygulamayı kapatmayın. Anahtar üretimi bittiğinde uyarılacaksınız."> Not: Enigmail ayarlarda etkin olup olmamasına bakmadan herzaman her kimlikteki ya da hesaptaki imzaları doğrulayacaktır."> Enigmail kullandığınız için teşekkürler."> enigmail/lang/tr/enigmail.properties000066400000000000000000000516711266701624400201360ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail Uyarı enigConfirm=Enigmail Doğrula enigError=Enigmail Hata enigPrompt=Enigmail Bilgi İstemi dlgYes=Evet dlgNo=Hayır dlgKeepSetting=Cevabımı hatırla ve tekrar sorma dlgNoPrompt=Bu diyaloğu tekrar gösterme dlg.button.delete=&Sil dlg.button.cancel=&Vazgeç dlg.button.close=&Kapat dlg.button.continue=&Devam dlg.button.skip=&Atla dlg.button.view=&Göster repeatPrefix=\n\nBu uyarı tekrar edecek %S repeatSuffixSingular=kere daha. repeatSuffixPlural=kere daha. noRepeat=\n\nBu uyarı Enigmail'i yükseltene kadar tekrar etmeyecek. pgpNotSupported=Enigmail'yi PGP 6.x sürümüyle kullanıyor görünüyorsunuz\n\nPGP 6.x Enigmail'in düzgün çalışmasını bazı sebeplerden engellediğinden Enigmail 6.x desteklemiyor; lütfen GnuPG (GPG)'ye geçiş yapın.\n\nGnuPG'ye geçiş konusunda yardıma ihtiyacınız olursa, Enigmail ana sayfasından Yardım kısmına göz atın. passphraseCleared=Parola temizlendi. noPhotoAvailable=Hiçbir fotoğraf uygun değil debugLog.title=Enigmail Debug Log usingVersion=Enigmail %S sürümü kullanıyorsunuz usingAgent=Şifreleme ve deşifreleme için %S çalışıtırılabiliri %S kullanılıyor agentError=HATA: Enigmime servisine ulaşılamadı! accessError=Enigmail servisine erişimde hata onlyGPG=Anahtar üretimi sadece GnuPG ile çalışır (PGP ile değil)! keygenComplete=Anahtar üretimi tamamlandı! İmzalama için <%S> kimliği kullanılacak revokeCertRecommended=Anahtarınız için bir iptal sertifikası oluşturmanızı öneririz. Bu sertifika örneğin özel anahtarınız kaybolur ya da çalınırsa, anahtarınızın iptali için gereklidir. Böyle bir iptal sertifikası oluşturmak istiyor musunuz ? keyMan.button.generateCert=Sertifika &Oluştur genCompleteNoSign=Anahtar üretimi tamamlandı! genGoing=Anahtar üretimi işlem halinde! passNoMatch=Parolalar uyuşmuyor, lütfen tekrar girin passCheckBox=Anahtar için bir parola girmeyecekseniz lütfen kutuyu işaretleyin passUserName=Lütfen bu kimlik için bir kullanıcı adı belirleyin changePassFailed=Parola değişimi başarısız. keyConfirm='%S' için genel ve özel anahtarlar oluşturulsun mu? keyMan.button.generateKey=Anahtar &Üret keyAbort=Anahtar üretiminden çık? keyMan.button.generateKeyAbort=Anahtar Üretimini &İptal Et keyMan.button.generateKeyContinue=Anahtar Üretimine &Devam Et expiryTooLong=100 yıldan uzun sürede kaybolan bir anahtar oluşturamazsınız. expiryTooLongShorter=90 yıldan uzun sürede kaybolan bir anahtar oluşturamazsınız. expiryTooShort=Anahtarınız en az bir günlük olmalı. keyGenFailed=Anahtar üretimi başarısız. Daha fazla bilgi için Enigmail konsoluna göz atın ( Enigmail Menüsü > Hata ayıklama ) # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail Güvenlik Bilgisi\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Bu mesajın ekleri imzalanmadı ve şifrelenmedi*\n\n possiblyPgpMime=Muhtemelen PGP/MIME mesajı şifreledi ya da imzaladı; doğrulamak için Deşifre düğmesine tıklayın noDecrypted=Kaydedecek deşifre edilmiş mesaj yok!\nDosya menüsünden Kaydet komutunu kullanın noMessage=Kaydedecek mesaj yok! useButton=Mesajı deşifre etmek için lütfen deşifre düğmesine tıklayın saveHeader=Enigmail: Deşifre edilmiş mesajı kaydet saveAttachmentHeader=Enigmail: Deşifre edilmiş eki kaydet noTempDir=Yazacak geçici bir dizin bulunamadı\nLütfen TEMP çevre değişkenini belirleyin attachmentPgpKey=Açtığınız '%S' eki bir OpenPGP anahtar dosyasına benziyor.\n\nİçindeki anahtarları almak için Evet'e, dosya içeriğini ayrı bir pencerede görmek için Hayır'a tıklayın beginPgpPart=********* *SIFRELI veya IMZALI KISIM BASLANGICI* ********* endPgpPart=********** *SIFRELI veya IMZALI KISIM BITISI* ********** notePartEncrypted=Enigmail: *Mesajın bazı kısımları şifrelenmedi veya imzalanmadı* noteCutMessage=Enigmail: *Birden fazla mesaj bloğu bulundu -- deşifre/doğrulama işlemi durduruldu* decryptOkNoSig=Uyarı\n\nDeşifre işlemi başarılıydı, ama imza düzgün doğrulanamadı msgOvl.button.contAnyway=Yine de &devam et keysToExport=Eklenecek OpenPGP anahtarlarını seçin keysToUse=%S için kullanılacak OpenPGP Anahtarı(ları)nı seçin pubKey=%S için Genel Anahtar\n windowLocked=Yazım penceresi kilitli; gönderme iptal edildi sendUnencrypted=Enigmail başlatılamadı.\nŞifrelenmemiş gönder? composeSpecifyEmail=Lütfen gönderilen mesajları imzalamada kullanılacak birincil eposta adresinizi belirtin.\nBoş bırakırsanız mesajdan alınan KİMDEN adresi kullanılacak. sendingHiddenRcpt=Bu mesajın BCC (kör karbon kopya) alıcıları var. Mesaj şifrelenmişse, BCC alıcıları saklamak mümkün olmasına rağmen bazı ürünlerin kullanıcıları (ör: PGP Corp.) mesajı deşifre edemeyecektir. Bu durum yüzünden şifrelenmiş mesajlar içeren ve BCC kullanılan postaları önermiyoruz. sendWithHiddenBcc=BCC alıcıları gizle sendWithShownBcc=Normal şifrele sendingNews=Şifrelenmiş gönderim iptal edildi.\n\n Bu mesaj şifrelenemez çünkü haber grubuna dahil alıcıları var. Lütfen şifrelemeden tekrar gönderin. sendToNewsWarning=Uyarı: şifrelenmiş bir postayı haber grubuna yollamak üzeresiniz.\n\nBu durum pek mantıklı değil çünkü üyelerin hepsi mesajı deşifre edemediği sürece bir anlamı olmayacak, mesajın tüm grup üyelerinin anahtarları ile şifrelenmesi gerekiyor. Lütfen bu mesajı ne yaptığınızı bildiğinizden eminseniz yollayın.\n\nDevam? hasHTML=HTML posta uyarısı:\nBu mesaj imzalama/şifreleme işlemini engelleyebilecek HTML içerebilir. Bu durumu önlemek için bir dahaki sefere mesaj yazma/cevaplama düğmelerine SHIFT tuşuna basılı tutarak tıklayın ki imzalı gönderilebilsin.\nPostaları öntanımlı olarak imzalıyorsanız, bu posta hesabında kalıcı olarak HTML'yi kapatmak için 'HTML Mesajları Gönder' seçeneğini kapatmalısınız. strippingHTML=Bu mesaj imzalama/şifreleme işlemleri için düz yazıya dönüştürüldüğünde kaybolacak HTML formatına sahip. Devam etmek istiyor musunuz ? msgCompose.button.sendAnyway=Mesajı &Yine de Gönder attachWarning=Bu mesajın ekleri yerelde değil. Şifrelenemezler. Ekleri şifrelemek için, önce bilgisayarınıza kaydedin ve sonra ekleyin. Yine de devam etmek istiyor musunuz? quotedPrintableWarn=Mesajları gönderirken 'quoted-printable' kullanılmasını istediniz. Bu mesajınızın yanlış deşifre edilmesine veya doğrulanmasına yol açabilir.\n 'quoted-printable' mesajlar göndermeyi kapatmak istiyor musunuz ? minimalLineWrapping=Satır bitimi %S karakter yapmışsınız. Düzgün şifreleme veya imzalama için bu değerin en az 68 olması gerek.\n 68'e değiştirmek istiyor musunuz? warning=Uyarı signIconClicked=İmzalamayı elle değiştirdiniz. Yani, bu mesajı yazarken, imzayı kapatmak artık şifrelemeyi kapatmaya bağımlı değil. # note: should end with double newline: sendAborted=Gönderme işleminden çıkıldı.\n\n statPGPMIME=PGP/MIME statSigned=İMZALI statEncrypted=ŞİFRELENMİŞ statPlain=DÜZMETİN offlineSave=%S mesajı Gönderilmemiş Mesajlar klasöründe %S e kaydedelim mi? onlineSend=%S mesajını %S e gönder? encryptKeysNote=Not: mesaj şu Kullanıcı ID'si / Anahtarları ile şifreli: %S signFailed=Enigmail'de hata; Şifreleme/imzalama başarısız; şifrelenmemiş posta gönder? msgCompose.button.sendUnencrypted=Şifrelenmemiş Me&sajı Gönder recipientsSelectionHdr=Şifreleme için alıcıları seçin configureNow=Seçili kimlik için Enigmail güvenliğini henüz ayarlamadınız. Şimdi yapmak istiyor musunuz? # should not be used anymore: encryptYes=Mesaj şifrelenecek encryptNo=Mesaj şifrelenmeyecek # should not be used anymore: signYes=Mesaj imzalanacak signNo=Mesaj imzalanmayacak rulesConflict=Çakışan alıcı bazlı kurallar bulundu\n%S\n\nMesajı bu ayarlarla göndermek ister misiniz? msgCompose.button.configure=&Ayarla msgCompose.button.send=Mesajı &Gönder msgCompose.button.save=Mesajı &Kaydet # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=İmzayı doğrulamak için %S genel anahtarı gerekli clickDecrypt=; Deşifre düğmesine tıklayın clickDecryptRetry=; tekrar denemek için Deşifre düğmesine tıklayın msgPart=%S mesajının bir bölümü msgSigned=imzalı msgEncrypted=şifreli msgSignedAndEnc=imzalı ve şifreli unverifiedSig=Doğrulanmamış imza incompleteDecrypt=Deşifreleme tamamlanmadı needKey=Hata - mesajı deşifre etmek için gizli anahtar gerekli failedDecrypt=Hata - deşifreleme başarısız badPhrase=Hata - kötü parola failedDecryptVerify=Hata - deşifreleme/doğrulama başarısız viewInfo=; detaylar için Görünüm > Mesaj güvenliği bilgisi decryptedMsg=Deşifrelenmiş mesaj locateGpg=GnuPGP programını bul invalidGpgPath=GnuPGP verilen yolda çalıştırılamadı. Bu yüzden uygulamayı tekrar başlatana ya da doğru yolu girene kadar Enigmail kapatıldı. warningsAreReset=Tüm uyarılar ilk haline getirildi. prefs.gpgFound=GnuPG şurada bulundu: %S prefs.gpgNotFound=GnuPG bulunamadı prefs.warnAskNever=Uyarı: bu seçeneğin işaretlenmesi alıcılardan birinin anahtarı yoksa, daha fazla bilgi verilmeyen şifrelenmemiş mesajlara neden olacaktır -- Enigmail böyle bir durumda sizi uyarmayacaktır! prefEnigmail.oneKeyserverOnly=Hata - kayıp OpePGP anahtarlarının otomatik indirilebilmesi için sadece bir anahtar sunucu belirtebilirsiniz. enterAdminPin=Lütfen SmartCard'ınızın YÖNETİCİ (admin) PIN'ini girin enterCardPin=Lütfen SmartCard PIN'inizi girin notInit=Hata - Enigmail servisi henüz başlatılmadı badCommand=Hata - şifreleme komutu başarısız cmdLine=komut satırı ve çıktısı: notRequired=Hata - şifreleme gerekmiyor notComplete=Hata - anahtar üretimi henüz bitmedi invalidEmail=Hata - geçersiz posta adres(ler)i noPassphrase=Hata - parola sağlanmamış noPGPblock=Hata - Düzgün zırhlı(armored) OpenPGP veri bloğu bulunamadı unverifiedReply=İçerden başlatılmış mesaj kısmı (cevap) muhtemelen değiştirilmiş sigMismatch=Hata - İmza kayıp cantImport=Genel anahtar aktarımında hata\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=Okuyucunuzda bulunan %S akıllı kartı bu mesajı işlemek için kullanılamaz.\nLütfen %S akıllı kartını takıp işlemi tekrarlayın. sc.insertCard=Bu işlem %S akıllı kartınızı gerektiriyor.\nLütfen gerekli akıllı kartı takıp işlemi tekrarlayın. sc.removeCard=Bu işlem okuyucuda hiçbir akıllı kartın olmamasını gerektiriyor.\nLütfen akıllı kartı çıkarıp işlemi tekrarlayın. sc.noCardAvailable=Okuyucunuzda SmartCard bulunamadı\nLütfen SmartCard'ınızı takıp işlemi tekrarlayın sc.noReaderAvailable=SmartCard okuyucunuza ulaşılamadı\nLütfen SmartCard okuyucunuzu takın, kartınızı takın, ve işlemi tekrarlayın gpgNotFound=GnuPG programı bulunamadı '%S'.\nGnuPG çalıştırılabilirinin yolunu düzgün girdiğinizi Enigmail Seçenekler menüsünden kontrol edin gpgNotInPath=PATH değişkeninde GnuPG çalıştırılabiliri bulunamadı.\nEnigmail Seçeneklerinden GnuPG çalıştırılabilirinin yolunu kontrol edin gpgAgentNotStarted=%S GnuPG sürümünüz için gerekli olan gpg-agent programı çalıştırılamadı. prefUntrusted=GÜVENİLMEZ prefRevoked=İPTAL EDİLMİŞ ANAHTAR prefExpiredKey=TARİHİ GEÇMİŞ ANAHTAR prefExpired=TARİHİ GEÇMİŞ prefGood=%S kişisinden iyi imza prefBad=%S şahsından KÖTÜ İmza failCancel=Hata - Anahtar alımı kullanıcı tarafından iptal edildi failNoServer=Hata - Anahtar alınacak anahtar sunucu belirtilmedi failNoID=Hata - Anahtar almak için ID belirtilmemiş failKeyExtract=Hata - anahtar çıkartma komutu başarısız notFirstBlock=Hata - İlk OpenPGP bloğu genel anahtar bloğu değil importKeyConfirm=Mesajda gömülü olan genel anahtar(lar)ı ekleyelim mi? failKeyImport=Hata - anahtar eklemesi başarısız fileWriteFailed=%S dosyaya yazılamadı importKey=%S genel anahtarını anahtar sunucudan ekle: uploadKey=%S genel anahtarını anahtar sunucuya gönder: keyId=Anahtar ID'si keyAndSigDate=Anahtar ID'si: 0x%S / İmzalanma tarihi: %S keyFpr=Anahtar parmakizi: %S noEmailProvided=Posta adresi belirtmediniz! keyAlreadySigned=Anahtar zaten imzalı. selKeyExpired=tarihi geçmiş %S createdHeader=Oluşturuldu atLeastOneKey=Anahtar seçilmedi! Bu diyaloğu geçmek için en az bir anahtar seçmelisiniz fewerKeysThanRecipients=Alıcı sayısından daha az anahtar seçtiniz. Şifrelemek için gerekli anahtar listesinin tam olduğundan emin misiniz? userSel.button.goBack=Daha fazla anahtar seç # Strings used in enigmailAttachmentDialog.js pgpMimeNote=NOT: PGP/MIME'i sadece bazı istemciler destekliyor! Windows altında sadece Mozilla/Thunderbird, Sylpheed, Pegasus ve Mulberry bu standartı destekliyor; Linux/Unix ve Mac OS X altında hemen tüm popüler posta istemcileri destekliyor. Emin değilseniz %S seçeneğini seçin. first=ilk second=ikinci # Strings used in am-enigprefs.js encryptKeyHeader=Şifreleme için OpenPGP Anahtarı seçin identityName=Kimlik: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Şifrelemeyi aktif ettiniz, ama anahtar seçmediniz. %S e gönderilen postaları şifrelemek için, anahtar listenizden bir ya da daha fazla doğru anahtar seçmelisiniz. %S için şifrelemeyi kapatmak istiyor musunuz? noKeyToUse=(yok - şifreleme yok) noEmptyRule=Kural boş olamaz! Lütfen Kural alanına bir posta adresi belirtin. invalidAddress=Girdiğiniz posta adres(ler)i düzgün değil. Alıcıların isimlerini girmemelisiniz, sadece posta adreslerini. Ör:\nYanlış: Yngwie Malmsteen \nDoğru: sirin.baba@adres.net noCurlyBrackets=Süslü parantezlerin {} özel anlamları vardır ve posta adreslerinde kullanılmamalıdır. Bu kuralla eşleşen davranışı değiştirmek istiyorsanız, 'Alıcı ... ise kuralı uygula' seçeneğini seçin.\nYardım düğmesine tıklayarak daha fazla bilgi şirinleyebilirsiniz. # Strings used in enigmailRulesEditor.js never=Asla always=Her zaman possible=Mümkün deleteRule=Seçili kuralı gerçekten silmek istiyor musunuz? nextRcpt=(Sonraki alıcı) negateRule=Değil # Strings used in enigmailSearchKey.js needOnline=Seçtiğiniz fonksiyon çevrimdışı modda kullanılamaz. Çevrimiçi olup tekrar deneyin. protocolNotSupported=Seçtiğiniz '%S://' protokolü OpenPGP anahtarları indirmek için uygun değil. gpgkeysDisabled='extensions.enigmail.useGpgKeysTool' seçeneğini açmak yardımcı olabilir. noKeyserverConn=%S konumundaki anahtar sunucuya bağlanılamadı. keyDownloadFailed=Anahtar sunucudan anahtar indirilemedi. Durum mesajı:\n%S internalError=Dahili hata. Anahtarlar indirilemedi veya aktarılamadı. noKeyFound=Üzgünüm, belirtilen arama kriterlerine uygun anahtar bulunamadı.\nAnahtar ID'lerinin "0x" öneki ile kullanılmaları gerektiğini unutmayın(ör: 0xABCDEF12). # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Anahtar getirmede ya da aramada hata: gpgkeys_%S çalıştırılamadı. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Anahtar sahibi güvenilirliği başarısız # Strings in enigmailSignKeyDlg.js signKeyFailed=Anahtar imzalama başarısız # Strings in enigmailKeyManager.js keyMan.loadingKeys=Anahtarlar yükleniyor, lütfen bekleyin ... keyValid.unknown=bilinmeyen keyValid.invalid=yanlış keyValid.disabled=aktif değil keyValid.revoked=iptal edilmiş keyValid.expired=süresi dolmuş keyValid.noSubkey=düzgün alt anahtar yok keyTrust.untrusted=güvenilmeyen keyTrust.marginal=marjinal keyTrust.full=güvenilir keyTrust.ultimate=ultra keyType.public=genel keyType.publicAndSec=pub/sec keyMan.enableKey=Anahtar Aktif Et keyMan.disableKey=Anahtar Etkisiz Kıl userAtt.photo=Kullanıcı özelliği (JPEG resim) asciiArmorFile=ASCII Zırhlı Dosyalar (*.asc) gnupgFile=GnuPG Dosyaları saveRevokeCertAs=İptal etme sertifikası Oluştur & Kaydet revokeCertOK=İptal etme sertifikası oluşturuldu. Genel anahtarınızı iptal etmek için bu sertifikayı kullanabilirsiniz, mesela özel anahtarınızı kaybederseniz.\n\nLütfen güvenle saklayabileceğiniz bir aygıtta saklayın, bir CD ya da disket olabilir. Birisi bu sertifikaya ulaşırsa anahtarınızı geçersiz kılmak için kullanabilir. revokeCertFailed=İptal sertifikası oluşturulamadı. addUidOK=Kullanıcı ID'si eklendi addUidFailed=Kullanıcı ID'si ekleme başarısız noKeySelected=Bu işlemi yapmak için en az bir anahtar seçmelisiniz exportToFile=Genel Anahtarı Dosyaya Aktar exportSecretKey=Özel anahtarı kaydedilen OpenPGP anahtar dosyasına eklemek istiyor musunuz? saveKeysOK=Anahtarlar kaydedildi saveKeysFailed=Anahtarlar kaydedileMEdi importKeysFailed=Anahtarlar aktarılamadı enableKeyFailed=Anahtarları aktif/etkisiz yapılması başarısız specificPubKeyFilename=%S (0x%S) pub specificPubSecKeyFilename=%S (0x%S) pub-sec defaultPubKeyFilename=Aktarilmis-genel-anahtarlar defaultPubSecKeyFilename=Aktarilmis-genel-ve-ozel-anahtarlar noSecretKeys=Özel anahtar bulunamadı.\n\nAnahtarınızı şimdi üretmek ister misiniz? sendKeysOk=Anahtar(lar) gönderildi sendKeysFailed=Anahtarlar gönderileMEdi receiveKeysOk=Anahtar(lar) güncellendi receiveKeysFailed=Anahtarlar indirilemedi importFromClip=Panodan anahtar aktarmak ister misiniz? copyToClipbrdFailed=Seçili anahtar(lar) panoya kopyalanamadı copyToClipbrdOK=Anahtar(lar) panoya kopyalandı deleteSecretKey=UYARI: Bir özel anahtar silmek üzeresiniz!\nözel anahtarınızı silerseniz bu anahtar için şifrelenmiş hiçbir mesajı açamazsınız, ve anahtarınızı artık iptal edemezsiniz.\n\nGerçekten hem özel hem genel anahtarınızı silmek istiyor musunuz\n'%S'? deleteMix=UYARI: özel anahtarları silmek üzeresiniz!\nözel anahtarınızı silerseniz, bu anahtar için şifrelenmiş mesajları açamazsınız.İKİSİNİ de, seçili özel ve genel anahtarları silmek istediğinizden emin misiniz? deletePubKey=Genel anahtarı silmek istiyor musunuz\n'%S'? deleteSelectedPubKey=Genel anahtarları silmek istiyor musunuz? deleteKeyFailed=Anahtar silinemedi revokeKeyOk=Anahtar iptal edildi. Anahtarınız bir anahtar sunucudaysa, tekrar yüklemeniz önerilir, böylece diğerleri iptal edildiğini görebilir. revokeKeyFailed=Anahtar iptal edilemedi. refreshAllQuestion=Anahtar seçmediniz. TÜM anahtarları yenilemek ister misiniz? refreshKey.warn=Uyarı: anahtar sayısı ve bağlantı hızına bağlı olarak, tüm anahtarların yenilenmesi uzun sürebilir!\n\nDevam? keyMan.button.exportSecKey=&Gizli Anahtarları Dışa Aktar keyMan.button.exportPubKey=Sadece &Açık Anahtarları Dışa Aktar keyMan.button.import=&İçe Aktar keyMan.button.refreshAll=&Tüm Anahtarları Tazele keyMan.button.revokeKey=&Anahtarı Hükümsüz Kıl keylist.noOtherUids=Başka kimliği yoktur keylist.hasOtherUids=Ayrıca şöyle bilinir keylist.noPhotos=Uygun fotoğraf yok keylist.hasPhotos=Fotoğraflar # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Birincil kullanıcı ID'si değişimi başarısız changePrimUidOK=Birincil kullanıcı ID'Si değiştirildi deleteUidFailed=%S kullanıcı ID'si silinmesi başarısız deleteUidOK=%S kullanıcı kimliği silindi revokeUidFailed=%S kullanıcı ID'sinin iptali başarısız revokeUidOK=%S kullanıcı ID'si iptal edildi. Anahtarınız bir anahtar sunucudaysa, diğerlerinin iptali görebilmesi için tekrar yüklemeniz tavsiye edilir. revokeUidQuestion=Gerçekten kullanıcı ID'si %S'i iptal etmek istiyor musunuz? deleteUidQuestion=Gerçekten kullanıcı ID'si %S'i silmek istiyor musunuz?\n\\Lütfen dikkat: eğer anahtarınızı bir anahtar sunucuya gönderdiyseniz, ID silmek bir şey değiştirmeyecektir. Bu durumda 'Kullanıcı ID'si iptal et' kullanmalısınız. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=genel anahtar keyTypePrimary=özel anahtar keyTypeSubkey=altanahtar keyTypePair=anahtar çifti keyExpiryNever=asla keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_20=ELG # Strings in enigmailGenCardKey.xul keygen.started=Lütfen anahtar üretilirken bekleyin .... keygen.completed=Anahtar Üretildi. Yeni Anahtar ID'si: 0x%S keygen.keyBackup=Anahtar %S olarak yedeklendi keygen.passRequired=Eğer anahtarınız için SmartCard'ınız dışında bir yedek yaratmak istiyorsanız bir parola belirtin. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=Girdiğiniz PIN uyuşmadı; tekrar girin lütfen cardPin.minLength=PIN en az %S karakter ya da numara olmalı cardPin.processFailed=PIN değiştirilemedi # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Anahtarlar yenileniyor, lütfen bekleyin ... keyserverProgress.uploading=Anahtarlar gönderiliyor, lütfen bekleyin ... keyserverTitle.refreshing=Anahtarları Yenile keyserverTitle.uploading=Anahtarları Gönder # Strings in enigmailSetupWizard passphrase.min8keys=Parolanız en az 8 karakter olmalı! setupWizard.reallyCancel=Enigmail Kurulum Sihirbazından gerçekten mi çıkmak istiyorsunuz? # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=İsim ve mail adresi girmeniz gerekiyor addUidDlg.nameMinLengthError=İsmin en az 5 karakter olması gerekiyor addUidDlg.invalidEmailError=Doğru bir mail adresi belirtmelisiniz addUidDlg.commentError=Yorumlarda köşeli ayraç kullanımına izin verilmiyor enigmail/lang/tr/help/000077500000000000000000000000001266701624400151515ustar00rootroot00000000000000enigmail/lang/tr/help/compose.html000066400000000000000000000100751266701624400175070ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/tr/help/editRcptRule.html000066400000000000000000000115571266701624400204560ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/tr/help/initError.html000066400000000000000000000045361266701624400200240ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/tr/help/messenger.html000066400000000000000000000101211266701624400200220ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/tr/help/rulesEditor.html000066400000000000000000000060311266701624400203400ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/tr/help/sendingPrefs.html000066400000000000000000000047771266701624400205050ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/vi/000077500000000000000000000000001266701624400142125ustar00rootroot00000000000000enigmail/lang/vi/am-enigprefs.properties000066400000000000000000000001301266701624400206770ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=Bảo mật cho OpenPGP enigmail/lang/vi/enigmail.dtd000066400000000000000000001132351266701624400165010ustar00rootroot00000000000000 Bảo mật cho OpenPGP)"> LƯU Ã: Có thể mất vài phút để hoàn tất việc tạo khoá. Äừng thoát ứng dụng khi Ä‘ang tạo khoá. Việc duyệt tìm hay thá»±c hiện những thao tác sá»­ dụng cật lá»±c ổ đĩa trong lúc tạo khoá sẽ bổ sung 'tính ngẫu nhiên' và tăng tốc tiến trình. Bạn sẽ được thông báo khi tạo khoá hoàn tất."> LƯU Ã: Có thể mất mấy phút để hoàn tất việc tạo ra khóa. Äừng ra khá»i ứng dụng trong khi việc tạo ra khóa Ä‘ang tiến triển. Bạn sẽ được báo cho biết khi việc tạo ra khóa được hoàn tất."> Lưu ý: Enigmail sẽ luôn luôn kiểm chứng chữ ký trên thư Ä‘iện tá»­ cho tất cả các tài khoản hoặc danh tính, bất kể là nó có được bật hay không"> Cám Æ¡n bạn đã sá»­ dụng Enigmail."> xuất dữ liệu từ máy cÅ© thông qua trình hướng dẫn này nhập dữ liệu vào máy má»›i thông qua trình hướng dẫn cài đặt. "> enigmail/lang/vi/enigmail.properties000066400000000000000000001237121266701624400201230ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Cảnh báo Enigmail enigConfirm=Xác nhận Enigmail enigError=Lá»—i Enigmail enigPrompt=Nhắc nhở Enigmail dlgYes=&Có dlgNo=&Không dlgKeepSetting=Nhá»› câu trả lá»i cá»§a tôi và đừng há»i lại nữa dlgNoPrompt=Äừng hiện lại há»™p thoại này nữa dlg.button.delete=&Xoá dlg.button.cancel=&Huá»· dlg.button.close=&Äóng dlg.button.continue=Tiếp &tục dlg.button.skip=&Bá» qua dlg.button.overwrite=&Chép đè dlg.button.view=&Xem dlg.button.retry=&Thá»­ lại dlg.button.ignore=&Bá» qua repeatPrefix=\n\nCảnh báo này sẽ lặp lại %S repeatSuffixSingular=lần nữa. repeatSuffixPlural=lần nữa. noRepeat=\n\nCảnh báo này sẽ không lặp lại cho đến khi bạn nâng cấp Enigmail. pgpNotSupported=Có vẻ như bạn Ä‘ang dùng Enigmail cùng vá»›i PGP 6.x\n\nÄáng tiếc là PGP 6.x có má»™t vài vấn đỠngăn cản Enigmail hoạt động đúng cách. Vậy nên, Enigmail không còn há»— trợ PGP 6.x nữa; xin chuyển sang dùng GnuPG (GPG) thay vào đó.\n\nNếu bạn cần há»— trợ chuyển sang GnuPG, hãy tham khảo mục Trợ giúp trên trang chá»§ Enigmail. initErr.howToFixIt=Äể dùng Enigmail cần có GnuPG. Nếu bạn chưa cài GnuPG, cách dá»… dàng nhất là dùng nút "Trình hướng dẫn cài đặt" bên dưới. initErr.setupWizard.button=&Trình hướng dẫn cài đặt passphraseCleared=Äã xoá mật khẩu. cannotClearPassphrase=Bạn Ä‘ang dùng má»™t công cụ không tiêu chuẩn (như là gnome-keyring) để xá»­ lý mật khẩu. Vậy nên không thể xoá mật khẩu khi dùng Enigmail. noPhotoAvailable=Không có ảnh nào debugLog.title=Nhật ký dò lá»—i Enigmail error.photoPathNotReadable=Không Ä‘á»c được đưá»ng dẫn đến ảnh '%S' # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Phiên bản Enigmail má»›i này có những thay đổi đáng kể trong việc quản lý tinh chỉnh và tuỳ chá»n. Chúng tôi đã cố gắng chuyển cài đặt cÅ© sang bản má»›i này. Tuy nhiên, chúng tôi không thể đảm bảo toàn bá»™ thao tác má»™t cách tá»± động. Xin kiểm tra kỹ tinh chỉnh và tuỳ chá»n má»›i. enigmailCommon.checkPreferences=Kiểm tra Tinh chỉnh... preferences.defaultToPgpMime=Chúng tôi đã đổi cách mã hoá tin nhắn mặc định trong Enigmail từ Inline-PGP thành PGP/MIME. Chúng tôi khuyên bạn giữ nó làm mặc định.\n\nNếu bạn vẫn muốn dùng Inline-PGP làm mặc định, bạn có thể vào Cài đặt tài khoản dưới mục Bảo mật cho OpenPGP. usingVersion=Äang chạy Enigmail phiên bản %S usingAgent=Sá»­ dụng %1$S tập tin chạy %2$S để mã hoá và giải mã agentError=Lá»–I: Không truy cập được dịch vụ trá»ng yếu cá»§a Enigmail! accessError=Lá»—i truy cập dịch vụ Enigmail onlyGPG=Tạo khoá chỉ hoạt động vá»›i GnuPG (chứ không phải PGP)! keygenComplete=Hoàn tất tạo khoá! Danh tính <%S> sẽ được dùng để ký tên. revokeCertRecommended=Chúng tôi khuyên bạn tạo má»™t chứng nhận huá»· cho khoá cá»§a bạn. Chứng nhận này có thể được dùng để vô hiệu hoá khoá cá»§a bạn, VD. trong trưá»ng hợp khoá bí mật cá»§a bạn thất lạc hoặc bị lá»™. Bạn có muốn tạo má»™t chứng nhận huá»· ngay không? keyMan.button.generateCert=&Tạo chứng nhận genCompleteNoSign=Hoàn tất tạo khoá! genGoing=Äã bắt đầu tạo khoá! passNoMatch=Các mục mật khẩu không trùng khá»›p; xin nhập lại passCheckBox=Xin đánh dấu há»™p chá»n nếu không chỉ định mật khẩu cho khoá passUserName=Xin chỉ định tên ngưá»i dùng cho danh tính này keygen.missingUserName=Chưa có tên chỉ định nào cho tài khoản/danh tính đã chá»n. Xin nhập má»™t giá trị vào trưá»ng "Tên cá»§a bạn" trong cài đặt tài khoản. keygen.passCharProblem=Bạn Ä‘ang dùng các ký tá»± đặc biệt cho mật khẩu. Äáng tiếc là nó sẽ gây rắc rối cho các ứng dụng khác. Chúng tôi khuyên bạn chá»n mật khẩu chỉ chứa các ký tá»± này:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=Vì lý do kỹ thuật, mật khẩu cá»§a bạn không thể bắt đầu hoặc kết thúc vá»›i khoảng trắng. changePassFailed=Äổi mật khẩu thất bại. keyConfirm=Tạo các khoá công khai và cá nhân cho '%S'? keyMan.button.generateKey=&Tạo khoá keyAbort=Huá»· tạo khoá? keyMan.button.generateKeyAbort=&Huá»· tạo khoá? keyMan.button.generateKeyContinue=&Tiếp tục tạo khoá? expiryTooLong=Bạn không thể tạo khoá có hạn dùng quá 100 năm. expiryTooLongShorter=Bạn không thể tạo khoá có hạn dùng quá 90 năm. expiryTooShort=Khoá cá»§a bạn phải còn hiệu lá»±c trong ít nhất má»™t ngày. dsaSizeLimit=Các khoá ký tên DSA bị giá»›i hạn trong 3072 bit. Do vậy, kích cỡ khoá này sẽ bị giảm. keyGenFailed=Tạo khoá thất bại. Xin xem trình Ä‘iá»u khiển Enigmail (Trình đơn Enigmail > Dò lá»—i Enigmail) để biết thêm chi tiết. setKeyExpirationDateFailed=Không thể đổi ngày hết hạn. # Strings in enigmailMessengerOverlay.js securityInfo=Thông tin bảo mật cho Enigmail\n\n enigHeader=Enigmail: enigContentNote=Enigmail: *Các tập tin đính kèm trong tin nhắn này chưa được ký tên hoặc mã hoá*\n\n possiblyPgpMime=Có thể tin nhắn đã được mã hoá hoặc ký tên bằng PGP/MIME; hãy dùng tính năng 'Giải mã/Xác minh' để kiểm chứng noDecrypted=Không có tin nhắn đã giải mã nào để lưu!\nSá»­ dụng lệnh Lưu lại từ trình đơn Tập tin noMessage=Không có tin nhắn nào để lưu! useButton=Xin dùng tính năng 'Giải mã/Xác minh' để giải mã tin nhắn saveHeader=Enigmail: Lưu tin nhắn đã giải mã saveAttachmentHeader=Enigmail: Lưu tập tin đính kèm đã giải mã noTempDir=Không thấy thư mục tạm nào để chép vào\nXin đặt biến môi trưá»ng TEMP attachmentPgpKey=Có vẻ như tập tin đính kèm '%S' bạn Ä‘ang mở là tập tin khoá OpenPGP.\n\nNhấp 'Nhập' để nhập các khoá chứa trong đó hoặc 'Xem' để xem ná»™i dung tập tin trên cá»­a sổ trình duyệt beginPgpPart=********* *BẮT ÄẦU PHẦN Mà HOà hoặc Kà TÊN* ********* endPgpPart=********** *KẾT THÚC PHẦN Mà HOà hoặc Kà TÊN* ********** notePartEncrypted=Enigmail: *Má»™t phần tin nhắn CHƯA được ký tên hoặc mã hoá* noteCutMessage=Enigmail: *Tìm thấy nhiá»u khối tin nhắn -- đã huá»· giải mã/xác minh* decryptOkNoSig=Cảnh báo\n\nGiải mã thành công, nhưng không thể xác minh chữ ký đúng cách được msgOvl.button.contAnyway=&Vẫn tiếp tục signature.verifiedOK=Äã xác minh thành công chữ ký cho tập tin đính kèm %S signature.verifyFailed=Không thể xác minh chữ ký cho tập tin đính kèm %S attachment.noMatchToSignature=Không thể đối chiếu tập tin đính kèm '%S' vá»›i tập tin chữ ký attachment.noMatchFromSignature=Không thể đối chiếu tập tin chữ ký '%S' vá»›i tập tin đính kèm fixBrokenExchangeMsg.failed=Thất bại khi sá»­a chữa tin nhắn. keysToExport=Chá»n các khoá OpenPGP để Chèn keysToUse=Chá»n (các) khoá OpenPGP để dùng cho %S pubKey=Khoá công khai cho %S\n windowLocked=Cá»­a sổ soạn tin nhắn đã bị khoá; huá»· gá»­i tin sendUnencrypted=Không khởi chạy Enigmail được.\nGá»­i tin nhắn không mã hoá chứ? composeSpecifyEmail=Xin chỉ định địa chỉ email chính mà bạn sẽ dùng để chá»n khoá ký tên cho các tin nhắn gá»­i Ä‘i.\nNếu để trống thì địa chỉ ÄẾN TỪ cá»§a tin nhắn sẽ được dùng để chá»n khoá ký tên. sendingHiddenRcpt=Tin nhắn này có chứa ngưá»i nhận dạng BCC (bản sao ẩn danh). Nếu được mã hoá, nó có thể che giấu những ngưá»i nhận BCC nhưng ngưá»i dùng má»™t số sản phẩm (VD: PRP Corp.) sẽ không thể giải mã tin nhắn. Vì vậy, chúng tôi khuyên bạn tránh dùng email BCC vá»›i tin nhắn được mã hoá. sendWithHiddenBcc=Ẩn ngưá»i nhận dạng BCC sendWithShownBcc=Mã hoá thông thưá»ng sendingNews=Äã huá»· thao tác gá»­i được mã hoá.\n\nKhông thể mã hoá tin nhắn này vì nó có chứa ngưá»i nhận trong nhóm tin. Xin gá»­i lại tin nhắn không có mã hoá. sendToNewsWarning=Cảnh báo: bạn sắp gá»­i email được mã khoá đến má»™t nhóm tin.\n\nBạn không nên làm vậy vì nó chỉ phù hợp khi tất cả thành viên trong nhóm Ä‘á»u có thể giải mã tin nhắn, nghÄ©a là tin nhắn cần được mã hoá bằng khoá cá»§a tất cả những ngưá»i tham gia. Xin gá»­i thư này chỉ khi bạn biết chắc mình Ä‘ang làm gì.\n\nTiếp tục chứ? hasHTML=Cảnh báo thư HTML:\nTin nhắn này có thể chứa HTML và có khả năng làm cho việc ký tên/mã hoá thất bại. Äể tránh việc này trong tương lai, bạn nên bấm phím SHIFT khi nhấp vào nút Soạn tin/Trả lá»i để gá»­i thư được ký tên.\nNếu bạn ký tên thư theo mặc định, bạn nên bá» chá»n há»™p tuỳ chỉnh 'Soạn tin nhắn bằng HTML' để tắt thư HTML vÄ©nh viá»…n cho tài khoản thư này. strippingHTML=Tin nhắn có chứa thông tin định dạng HTML sẽ bị mất khi chuyển thành văn bản thông thưá»ng để ký tên/mã hoá. Bạn có muốn tiến hành không? msgCompose.button.sendAnyway=&Vẫn gá»­i tin nhắn attachWarning=Các tập tin đính kèm trong tin nhắn này không nằm trên máy, không thể mã hoá được chúng. Äể mã hoá, đầu tiên hãy lưu chúng vào máy rồi đính kèm. Bạn vẫn muốn gá»­i tin nhắn chứ? quotedPrintableWarn=Bạn đã bật cách mã hoá 'quoted-printable' để gá»­i tin nhắn. Nó có thể dẫn đến việc giải mã và/hoặc xác minh không đúng tin nhắn cá»§a bạn.\nBạn có muốn tắt gá»­i tin nhắn dạng 'quoted-printable' ngay? minimalLineWrapping=Bạn đã cài đặt bao dòng cho các ký tá»± %S. Äể việc mã hoá và/hoặc ký tên diá»…n ra đúng cách, cần đặt giá trị này ít nhất là 68.\nBạn có muốn đổi bao dòng thành 68 ký tá»± ngay? warning=Cảnh báo signIconClicked=Bạn đã chỉnh sá»­a thá»§ công việc ký tên. Vì vậy, khi bạn soạn tin nhắn này, bật (tắt) việc ký tên không còn phụ thuá»™c vào bật (tắt) mã hoá nữa. pgpMime_sMime.dlg.text=Bạn đã chá»n cả PGP/MIME và S/MIME. Äáng tiếc là không thể há»— trợ cả hai giao thức cùng lúc. Xin chá»n nếu bạn muốn dùng PGP/MIME hay S/MIME. pgpMime_sMime.dlg.pgpMime.button=Dùng &PGP/MIME pgpMime_sMime.dlg.sMime.button=Dùng &S/MIME errorKeyUnusable=Äịa chỉ email hoặc ID khoá '%S' không thể được đối chiếu vá»›i má»™t khoá OpenPGP hợp lệ và chưa hết hạn.\nHãy chắc rằng bạn có má»™t khoá OpenPGP hợp lệ và cài đặt tài khoản cá»§a bạn dẫn đến khoá đó. errorOwnKeyUnusable=ID khoá '%S' đã cấu hình cho danh tính hiện tại không tạo ra khoá OpenPGP dùng được nào.\n\nHãy chắc rằng bạn có má»™t khoá OpenPGP hợp lệ, chưa hết hạn và cài đặt tài khoản cá»§a bạn dẫn đến khoá đó.\nNếu khoá chưa hết hạn thì hãy kiểm tra xem bạn đã đặt Tín nhiệm chá»§ nhân thành đầy đủ hay tối cao chưa. msgCompose.cannotSaveDraft=Lá»—i khi lưu thư nháp msgCompose.internalEncryptionError=Lá»—i ná»™i vi: mã hoá cam kết đã bị tắt msgCompose.internalError=Äã xảy ra lá»—i ná»™i vi. msgCompose.toolbarTxt.signAndEncrypt=Tin nhắn này sẽ được ký tên và mã hoá msgCompose.toolbarTxt.signOnly=Tin nhắn này sẽ được ký tên msgCompose.toolbarTxt.encryptOnly=Tin nhắn này sẽ được mã hoá msgCompose.toolbarTxt.noEncryption=Tin nhắn này sẽ không được ký tên và mã hoá msgCompose.toolbarTxt.disabled=Äã tắt Enigmail cho danh tính được chá»n msgCompose.toolbarTxt.smime=Äã bật S/MIME - có khả năng mâu thuẫn vá»›i Enigmail msgCompose.toolbarTxt.smimeOff=- Vậy nên S/MIME không được dùng msgCompose.toolbarTxt.smimeSignOrEncrypt=Äã bật S/MIME - Vậy nên Enigmail không được dùng msgCompose.toolbarTxt.smimeNoDraftEncryption=- tin nháp sẽ không được mã hoá msgCompose.toolbarTxt.smimeConflict=Enigmail không được dùng vì đã bật S/MIME. Xin tắt ký tên và/hoặc mã hoá S/MIME, sau đó bật mã hoá Enigmail. msgCompose.encryptedSubjectStub=Tin nhắn đã mã hoá msgCompose.detailsButton.label=Chi tiết ... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=Äã huá»· thao tác gá»­i.\n\n # details: keyNotTrusted=Không đủ tín nhiệm đối vá»›i khoá '%S' keyNotFound=Không tìm thấy khoá '%S' keyRevoked=Äã huá»· khoá '%S' keyExpired=Khoá '%S' đã hết hạn statPGPMIME=PGP/MIME statSigned=Äà Kà TÊN statEncrypted=Äà Mà HOà statPlain=KHÔNG Kà TÊN và KHÔNG Mà HOà offlineSave=Lưu %1$S tin nhắn vào %2$S trong thư mục Tin nhắn chưa gá»­i? onlineSend=Gá»­i %1$S tin nhắn đến %2$S? encryptKeysNote=Lưu ý: Tin nhắn được mã hoá cho những ID ngưá»i dùng / Khoá sau đây: %S hiddenKey= signFailed=Lá»—i trong Enigmail; Mã hoá/ký tên thất bại; gá»­i tin nhắn không mã hoá? msgCompose.button.sendUnencrypted=&Gá»­i tin nhắn không mã hoá recipientsSelectionHdr=Chá»n ngưá»i nhận để mã hoá configureNow=Bạn chưa cấu hình bảo mật Enigmail cho danh tính được chá»n. Bạn có muốn cấu hình ngay? # encryption/signing status and associated reasons: encryptMessageAuto=Mã hoá tin nhắn (tá»± động) encryptMessageNorm=Mã hoá tin nhắn signMessageAuto=Ký tên tin nhắn (tá»± động) signMessageNorm=Ký tên tin nhắn encryptOff=Mã hoá: TẮT encryptOnWithReason=Mã hoá: BẬT (%S) encryptOffWithReason=Mã hoá: TẮT (%S) encryptOn=Mã hoá: BẬT signOn=Ký tên: BẬT signOff=Ký tên: TẮT signOnWithReason=Ký tên: BẬT (%S) signOffWithReason=Ký tên: TẮT (%S) reasonEnabledByDefault=bật theo mặc định reasonManuallyForced=bắt buá»™c thá»§ công reasonByRecipientRules=bắt buá»™c theo quy tắc cho ngưá»i nhận reasonByAutoEncryption=bắt buá»™c theo mã hoá tá»± động reasonByConflict=do mâu thuẫn giữa các quy tắc cho ngưá»i nhận reasonByEncryptionMode=do chế độ mã hoá reasonSmimeConflict=bởi vì S/MIME đã được bật thay vào đó # should not be used anymore: encryptYes=Tin nhắn sẽ được mã hoá encryptNo=Tin nhắn sẽ không được mã hoá # should not be used anymore: signYes=Tin nhắn sẽ được ký tên signNo=Tin nhắn sẽ không được ký tên # PGP/MIME status: pgpmimeNormal=Giao thức: PGP/MIME inlinePGPNormal=Giao thức: Inline PGP pgpmimeAuto=Giao thức: PGP/MIME (tá»± động) inlinePGPAuto=Giao thức: Inline PGP (tá»± động) # should not be used anymore pgpmimeYes=PGP/MIME sẽ được dùng pgpmimeNo=Inline PGP sẽ được dùng # Attach own key status (tooltip strings): attachOwnKeyNo=Khoá cá»§a chính bạn sẽ không được đính kèm attachOwnKeyYes=Khoá cá»§a chính bạn sẽ được đính kèm attachOwnKeyDisabled=Không thể đính kèm khoá cá»§a chính bạn. Bạn phải chá»n má»™t khoá cụ thể\ntrong mục OpenPGP cá»§a Cài đặt tài khoản để bật tính năng này. rulesConflict=Äã phát hiện mâu thuẫn trong quy tắc cho từng ngưá»i nhận\n%S\n\nGá»­i tin nhắn vá»›i những cài đặt này? msgCompose.button.configure=&Cấu hình msgCompose.button.send=&Gá»­i tin nhắn msgCompose.button.save=&Lưu tin nhắn # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=Khoá công khai %S cần được xác minh chữ ký keyUsed=Khoá công khai %S được dùng để xác minh chữ ký clickDecrypt=; dùng tính năng 'Giải mã/Xác minh' clickDecryptRetry=; dùng tính năng 'Giải mã/Xác minh' để thá»­ lại clickDetailsButton=; nhấp vào nút 'Chi tiết' để biết thêm thông tin clickImportButton=; nhấp vào nút 'Nhập khoá' để nhập khoá keyTypeUnsupported=; loại khoá này không được há»— trợ bởi phiên bản GnuPG cá»§a bạn msgPart=Má»™t phần cá»§a tin nhắn %S msgSigned=đã ký tên msgSignedUnkownKey=đã ký tên vá»›i khoá lạ msgEncrypted=đã mã hoá msgSignedAndEnc=đã ký tên và mã hoá unverifiedSig=Chữ ký chưa được xác minh incompleteDecrypt=Giải mã không hoàn tất needKey=Lá»—i - không thấy khoá cá nhân/bí mật trùng khá»›p để giải mã tin nhắn failedDecrypt=Lá»—i - giải mã thất bại badPhrase=Lá»—i - sai mật khẩu failedDecryptVerify=Lá»—i - giải mã/xác minh thất bại viewInfo=; Xem > Thông tin bảo mật tin nhắn để biết chi tiết decryptedMsg=Tin nhắn đã giải mã decryptedMsgWithFormatError=Tin nhắn đã giải mã (định dạng đã được khôi phục cá»§a email PGP, bị há»ng có lẽ là do máy chá»§ Exchange cÅ©, vậy nên kết quả có thể không hoàn chỉnh để Ä‘á»c) usedAlgorithms=Äã dùng thuật toán: %S và %S # strings in pref-enigmail.js oldGpgVersion14=Khởi chạy Enigmail thất bại.\n\nBạn Ä‘ang dùng phiên bản GnuPG %S không còn được há»— trợ nữa. Enigmail yêu cầu GnuPG phiên bản 2.0.7 hoặc má»›i hÆ¡n. Xin nâng cấp cài đặt GnuPG hoặc Enigmail sẽ không hoạt động. locateGpg=Äịnh vị chương trình GnuPG invalidGpgPath=Không chạy được GnuPG vá»›i đưá»ng dẫn đã cung cấp. Vì vậy, Enigmail sẽ bị tắt cho đến khi bạn đổi lại đưá»ng dẫn đến GnuPG hoặc đến khi bạn tái khởi chạy ứng dụng. warningsAreReset=Äã cài lại tất cả cảnh báo. prefs.gpgFound=Äã tìm thấy GnuPG trong %S prefs.gpgNotFound=Không tìm thấy GnuPG prefs.warnAskNever=Cảnh báo: bật tuỳ chá»n này sẽ dẫn đến email không được mã hoá mà không kèm thông tin gì khác nếu không có khoá cho má»™t trong những ngưá»i nhận -- Enigmail sẽ không thông báo cho bạn nếu Ä‘iá»u này xảy ra! prefs.warnIdleTimeForUnknownAgent=Không thể kết nối đến gpg-agent. Có lẽ hệ thống cá»§a bạn sá»­ dụng má»™t công cụ chuyên biệt để xá»­ lý mật khẩu (VD: gnome-keyring, seahorse-agent, trình quản lý ví KDE, ...). Äáng tiếc là Enigmail không thể kiểm soát thá»i gian chá» cho công cụ mà bạn Ä‘ang dùng. Vậy nên cài đặt thá»i gian chá» tương ứng trong Enigmail sẽ bị bá» qua. prefEnigmail.oneKeyserverOnly=Lá»—i - bạn chỉ có thể chỉ định má»™t máy chá»§ quản lý khoá để tá»± động tải vá» các khoá OpenPGP còn thiếu. enterAdminPin=Xin gõ PIN QUẢN TRỊ SmartCard cá»§a bạn enterCardPin=Xin gõ PIN SmartCard cá»§a bạn notInit=Lá»—i - Dịch vụ Enigmail chưa được khởi chạy badCommand=Lá»—i - lệnh mã hoá thất bại cmdLine=dòng lệnh và kết xuất: notRequired=Lá»—i - không yêu cầu mã hoá notComplete=Lá»—i - chưa hoàn tất tạo khoá invalidEmail=Lá»—i - (các) địa chỉ email không hợp lệ noPassphrase=Lá»—i - chưa cung cấp mật khẩu noPGPblock=Lá»—i - Không thấy khối dữ liệu OpenPGP được bảo vệ nào hợp lệ unverifiedReply=Phần tin nhắn thụt lá» (hồi đáp) có lẽ đã được chỉnh sá»­a keyInMessageBody=Tìm thấy khoá trong tin nhắn. Nhấp 'Nhập khoá' để nhập khoá sigMismatch=Lá»—i - Chữ ký không trùng khá»›p cantImport=Lá»—i khi nhập khoá công khai\n\n doImportOne=Nhập %1$S (%2$S)? doImportMultiple=Nhập những khoá sau?\n\n%S previewFailed=Không thể Ä‘á»c tập tin khoá công khai. # Strings used in errorHandling.jsm sc.wrongCardAvailable=SmartCard %1$S tìm thấy trong trình Ä‘á»c cá»§a bạn không thể dùng để xá»­ lý tin nhắn được.\nVui lòng chèn SmartCard %2$S cá»§a bạn và lặp lại thao tác. sc.insertCard=Thao tác này cần SmartCard %S cá»§a bạn.\nXin chèn SmartCard cần thiết và lặp lại thao tác. sc.removeCard=Thao tác không cần SmartCard nào trong trình Ä‘á»c.\nXin lấy SmartCard cá»§a bạn ra và lặp lại thao tác. sc.noCardAvailable=Không tìm thấy SmartCard nào trong trình Ä‘á»c cá»§a bạn.\nXin chèn SmartCard cá»§a bạn và lặp lại thao tác. sc.noReaderAvailable=Không thể truy cập trình Ä‘á»c SmartCard cá»§a bạn.\nXin nối trình Ä‘á»c SmartCard cá»§a bạn vào, gắn thẻ, và lặp lại thao tác. keyError.keySpecNotFound=Không thể so sánh địa chỉ email "%S" vá»›i khoá trong vòng khoá cá»§a bạn. keyError.keyIdNotFound=Không tìm thấy ID khoá đã cấu hình "%S" trong vòng khoá cá»§a bạn. keyError.resolutionAction=Xin chá»n má»™t khoá hợp lệ trong mục OpenPGP cá»§a Cài đặt tài khoản. missingPassphrase=Mật khẩu còn thiếu errorHandling.gpgAgentInvalid=Hệ thống Ä‘ang chạy phiên bản gpg-agent không phù hợp vá»›i phiên bản GnuPG cá»§a bạn. errorHandling.gpgAgentError=GnuPG đã báo cáo má»™t lá»—i trong giao tiếp vá»›i gpg-agent (má»™t thành tố cá»§a GnuPG). errorHandling.dirmngrError=GnuPG đã báo cáo má»™t lá»—i trong giao tiếp vá»›i dirmngr (má»™t thành tố cá»§a GnuPG). errorHandling.pinentryError=GnuPG không thể yêu cầu mật khẩu qua pinentry. errorHandling.readFaq=Äây là lá»—i cài đặt hoặc cấu hình hệ thống đã ngăn cản Enigmail hoạt động bình thưá»ng và không thể tá»± động xá»­ lý.\n\nChúng tôi chân thành khuyên bạn nhận tư vấn từ trang há»— trợ cá»§a chúng tôi tại https://enigmail.net/faq. gpgNotFound=Không thể tìm được chương trình '%S' GnuPG.\nHãy bảo đảm là bạn đã đặt đúng đưá»ng dẫn thá»±c thi GnuPG trong Tuỳ chỉnh cá»§a Enigmail. gpgNotInPath=Không thể tìm được tập tin chạy GnuPG trong ÄÆ¯á»œNG DẪN.\nHãy bảo đảm là bạn đã đặt đúng đưá»ng dẫn thá»±c thi GnuPG trong Tuỳ chỉnh cá»§a Enigmail. enigmailNotAvailable=Dịch vụ trá»ng yếu cá»§a Enigmail không hoạt động gpgAgentNotStarted=Không thể khởi chạy chương trình gpg-agent cần cho phiên bản GnuPG %S cá»§a bạn. prefUntrusted=KHÔNG ÄÃNG TIN prefRevoked=KHOà Äà HUá»¶ prefExpiredKey=KHOà Äà HẾT HẠN prefExpired=Äà HẾT HẠN prefGood=Chữ ký tốt từ %S prefBad=Chữ ký XẤU từ %S failCancel=Lá»—i - Ngưá»i dùng đã huá»· nhận khoá failNoServer=Lá»—i - không có máy chá»§ quản lý khoá nào được chỉ định để nhận khoá failNoID=Lá»—i - Không có ID khoá nào được chỉ định để nhận khoá failKeyExtract=Lá»—i - lệnh trích xuất khoá đã thất bại notFirstBlock=Lá»—i - Khối OpenPGP đầu tiên chứ không phải khối khoá công khai importKeyConfirm=Nhập (các) khoá công khai được nhúng trong tin nhắn? failKeyImport=Lá»—i - nhập khoá thất bại fileWriteFailed=Chép vào tập tin %S thất bại importKey=Nhập khoá công khai %S từ máy chá»§ quản lý khoá: uploadKey=Gá»­i khoá công khai %S đến máy chá»§ quản lý khoá: keyId=ID khoá keyAndSigDate=ID khoá: 0x%1$S / Äã ký vào: %2$S keyFpr=Vân tay cá»§a khoá: %S noEmailProvided=Bạn đã không cung cấp địa chỉ email! keyAlreadySigned=Khoá đã được ký tên rồi, bạn không thể ký nó hai lần. gnupg.invalidKey.desc=Không thấy khoá %S hoặc nó đã hết hiệu lá»±c. Có lẽ khoá (phụ) đã hết hạn. selKeyExpired=%S đã hết hạn createdHeader=Äã tạo atLeastOneKey=Không có khoá nào được chá»n! Bạn phải chá»n ít nhất má»™t khoá để chấp nhận há»™p thoại này fewerKeysThanRecipients=Bạn đã chá»n số khoá nhá» hÆ¡n số ngưá»i nhận. Có chắc là danh sách khoá để mã hoá là đầy đủ? userSel.button.goBack=Chá»n thêm khoá userSel.secretKeySel.title=Chá»n má»™t khoá OpenPGP bí mật để ký tên tin nhắn cá»§a bạn userSel.problemNoKey=Không có khoá nào hợp lệ userSel.problemMultipleKeys=Nhiá»u khoá # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=Gá»­i Ä‘i sau # Strings used in enigmailAttachmentDialog.js pgpMimeNote=LƯU Ã: PGP/MIME chỉ được há»— trợ bởi má»™t số giá»›i hạn các ứng dụng email! Trên Windows, chỉ có Mozilla/Thunderbird, Sylpheed, Pegasus và Mulberry được biết là có há»— trợ chuẩn này; trên Linux/UNIX và Mac OS X, hầu hết các ứng dụng email thông dụng há»— trợ nó. Nếu bạn không chắc, hãy chá»n tuỳ chá»n %S. first=thứ nhất second=thứ nhì # Strings used in am-enigprefs.js encryptKeyHeader=Chá»n khoá OpenPGP để mã hoá identityName=Danh tính: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=Bạn đã kích hoạt mã hoá, nhưng lại chưa chá»n khoá. Äể mã hoá các thư gá»­i đến %1$S, bạn cần chỉ định má»™t (hay má»™t vài) khoá hợp lệ từ danh sách khoá. Bạn có muốn tắt mã hoá cho %2$S không? noKeyToUse=(không có gì - không mã hoá) noEmptyRule=Quy tắc không được rá»—ng! Xin đặt má»™t địa chỉ email vào trưá»ng Quy tắc. invalidAddress=(Các) địa chỉ email bạn đã nhập không hợp lệ. Bạn không nên nhập tên cá»§a ngưá»i nhận, chỉ địa chỉ email thôi. V.D:\nKhông hợp lệ: Má»™t vài cái tên \nHợp lệ: some.name@address.net noCurlyBrackets=Dấu ngoặc móc {} có ý nghÄ©a đặc biệt và không nên dùng trong địa chỉ email. Nếu bạn muốn sá»­a đổi hành vi ứng vá»›i quy tắc này, hãy dùng tuỳ chá»n 'Ãp dụng quy tắc nếu ngưá»i nhận ...'.\nXem thêm thông tin từ nút Trợ giúp. # Strings used in enigmailRulesEditor.js never=Không bao giá» always=Luôn luôn possible=Có thể deleteRule=Xoá quy tắc được chá»n chứ? nextRcpt=(Ngưá»i nhận kế tiếp) negateRule=Không addKeyToRule=Thêm khoá %1$S (%2$S) vào quy tắc cho từng ngưá»i nhận # Strings used in enigmailSearchKey.js needOnline=Hàm bạn đã chá»n không có sẵn trong chế độ ngoại tuyến. Xin hãy trá»±c tuyến và thá»­ lại. protocolNotSupported=Giao thức '%S://' bạn đã chá»n không được há»— trợ tải xuống các khoá OpenPGP. gpgkeysDisabled=Nó có thể giúp bật tuỳ chá»n 'extensions.enigmail.useGpgKeysTool' noKeyserverConn=Không thể kết nối đến máy chá»§ quản lý khoá tại %S. keyDownloadFailed=Thất bại khi tải xuống khoá từ máy chá»§ quản lý khoá. Tin nhắn trạng thái là:\n%S internalError=Äã xảy ra lá»—i ná»™i vi. Không thể tải xuống hoặc nhập khoá. noKeyFound=Thành thật xin lá»—i, không thấy khoá nào phù hợp vá»›i tiêu chuẩn tìm kiếm đã chỉ định. # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=Thất bại khi tìm hoặc tải xuống khoá từ máy chá»§ quản lý khoá: không thể chạy gpgkeys_%S. # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=Cài đặt tín nhiệm chá»§ nhân thất bại # Strings in enigmailSignKeyDlg.js signKeyFailed=Ký tên khoá thất bại alreadySigned.label=Lưu ý: khoá %S đã được ký tên vá»›i khoá cá nhân được chá»n. alreadySignedexportable.label=Lưu ý: khoá %S đã được ký là có thể xuất vá»›i khoá cá nhân được chá»n. Chữ ký cục bá»™ là vô nghÄ©a. partlySigned.label=Lưu ý: Má»™t vài ID ngưá»i dùng cá»§a khoá %S đã được ký vá»›i khoá cá nhân được chá»n. noTrustedOwnKeys=Không tìm thấy khoá nào đủ tư cách để ký tên! Bạn cần ít nhất má»™t khoá cá nhân hoàn toàn đáng tin để ký tên khoá. # Strings in enigmailKeyManager.js keyMan.loadingKeys=Äang nạp khoá, xin chá» ... keyValid.unknown=không rõ keyValid.invalid=không hợp lệ keyValid.disabled=đã tắt keyValid.revoked=đã huá»· keyValid.expired=đã hết hạn keyValid.noSubkey=không có khoá phụ hợp lệ keyTrust.untrusted=không đáng tin keyTrust.marginal=má»™t chút keyTrust.full=đáng tin keyTrust.ultimate=tối cao keyTrust.group=(nhóm) keyType.public=c.khai keyType.publicAndSec=c.khai/b.mật keyMan.enableKey=Bật khoá keyMan.disableKey=Tắt khoá userAtt.photo=Thuá»™c tính ngưá»i dùng (ảnh JPEG) asciiArmorFile=Tập tin ASCII được bảo vệ (*.asc) importKeyFile=Nhập tập tin khoá OpenPGP gnupgFile=Các tập tin GnuPG saveRevokeCertAs=Tạo & Lưu chứng nhận huá»· revokeCertOK=Äã tạo thành công chứng nhận huá»·. Bạn có thể dùng nó để vô hiệu hoá khoá công khai cá»§a bạn, VD: trong trưá»ng hợp bạn làm mất khoá bí mật.\n\nXin chuyển nó vào phương tiện có thể được cất giữ an toàn như CD hoặc thẻ USB. Nếu ai đó có được quyá»n truy cập chứng chỉ này, há» có thể dùng nó để vô hiệu hoá khoá cá»§a bạn. revokeCertFailed=Không thể tạo chứng nhận huá»·. addUidOK=Äã thêm thành công ID ngưá»i dùng addUidFailed=Thất bại khi thêm ID ngưá»i dùng noKeySelected=Bạn nên chá»n ít nhất má»™t khoá để thá»±c hiện thao tác được chá»n exportToFile=Xuất khoá công khai vào tập tin exportKeypairToFile=Nhập bí mật và khoá công khai vào tập tin exportSecretKey=Bạn có muốn thêm khoá bí mật vào tập tin khoá OpenPGP đã lưu? saveKeysOK=Äã lưu thành công các khoá saveKeysFailed=Lưu khoá thất bại importKeysFailed=Nhập khoá thất bại enableKeyFailed=Bật/tắt khoá thất bại specificPubKeyFilename=%1$S (0x%2$S) c.khai specificPubSecKeyFilename=%1$S (0x%2$S) c.khai-b.mật defaultPubKeyFilename=Exported-public-keys defaultPubSecKeyFilename=Exported-public-and-secret-keys noSecretKeys=Không thấy các khoá bí mật.\n\nBạn có muốn tạo khoá cá»§a chính bạn ngay? sendKeysOk=Gá»­i (các) khoá thành công sendKeysFailed=Gá»­i khoá thất bại receiveKeysOk=Cập nhật (các) khoá thành công receiveKeysFailed=Tải khoá xuống thất bại importFromClip=Bạn có muốn nhập (má»™t số) khoá từ clipboard? importFromUrl=Tải vá» khoá công khai từ URL này: copyToClipbrdFailed=Không thể sao chép (các) khoá được chá»n vào clipboard. copyToClipbrdOK=Äã sao chép (các) khoá vào clipboard deleteSecretKey=CẢNH BÃO: Bạn sắp xoá má»™t khoá bí mật!\nNếu xoá khoá bí mật thì bạn sẽ không thể giải mã bất kỳ tin nhắn nào đã được mã hoá vá»›i khoá đó cÅ©ng như không thể huá»· khoá cá»§a bạn nữa.\n\nCó chắc là bạn muốn xoá CẢ HAI, khoá bí mật và khoá công khai\n'%S'? deleteMix=CẢNH BÃO: Bạn sắp xoá các khoá bí mật!\nNếu xoá khoá bí mật thì bạn sẽ không thể giải mã bất kỳ tin nhắn nào đã được mã hoá vá»›i khoá đó nữa.\n\nCó chắc là bạn muốn xoá CẢ HAI, khoá bí mật và khoá công khai được chá»n? deletePubKey=Bạn có muốn xoá khoá công khai\n'%S'? deleteSelectedPubKey=Bạn có muốn xoá các khoá công khai? deleteKeyFailed=Không thể xoá khoá. revokeKeyQuestion=Bạn Ä‘ang chuẩn bị huá»· khoá '%S'.\n\nBạn sẽ không thể ký tên vá»›i khoá này nữa, và má»™t khi đã phân phối, ngưá»i khác sẽ không thể mã hoá vá»›i khoá đó. Bạn vẫn có thể sá»­ dụng khoá này để giải mã tin nhắn cÅ©.\n\nBạn có muốn tiếp tục? revokeKeyOk=Khoá đã bị huá»·. Nếu khoá cá»§a bạn đã có trên máy chá»§ quản lý khoá thì bạn nên tải nó lên lại để những ngưá»i khác có thể thấy là nó đã bị huá»·. revokeKeyFailed=Không thể huá»· khoá. refreshAllQuestion=Bạn chưa chá»n khoá nào cả. Bạn có muốn làm má»›i TOÀN BỘ khoá? refreshKey.warn=Cảnh báo: tuỳ vào số lượng khoá và tốc độ kết nối, làm má»›i toàn bá»™ khoá có thể tốn rất nhiá»u thá»i gian! downloadContactsKeys.warn=Cảnh báo: tuỳ vào số lượng liên hệ và tốc độ kết nối, việc tải vá» toàn bá»™ khoá có thể tốn rất nhiá»u thá»i gian! downloadContactsKeys.importFrom=Nhập các liên hệ từ danh bạ '%S'? keyMan.button.exportSecKey=Xuất &các khoá bí mật keyMan.button.exportPubKey=Chỉ xuất &các khoá công khai keyMan.button.import=&Nhập keyMan.button.refreshAll=&Làm má»›i toàn bá»™ khoá keyMan.button.revokeKey=&Huá»· khoá keyMan.button.skip=&Bá» qua khoá keylist.noOtherUids=Không có danh tính nào khác keylist.hasOtherUids=CÅ©ng được biết đến như là keylist.noPhotos=Không có sẵn ảnh keylist.hasPhotos=Ảnh keyMan.addphoto.filepicker.title=Chá»n ảnh để thêm vào keyMan.addphoto.warnLargeFile=Tập tin bạn đã chá»n vượt quá 25 kB.\nKhông nên thêm các tập tin quá lá»›n vì khoá cÅ©ng sẽ trở nên rất nặng. keyMan.addphoto.noJpegFile=Có vẻ như tập tin đã chá»n không phải định dạng JPEG. Xin chá»n tập tin khác. keyMan.addphoto.failed=Không thể thêm ảnh này. # Strings in enigmailManageUidDlg.xul changePrimUidFailed=Thất bại khi đổi ID ngưá»i dùng chính changePrimUidOK=Äã đổi thành công ID ngưá»i dùng chính deleteUidFailed=Thất bại khi xoá ID ngưá»i dùng %S deleteUidOK=Äã xoá thành công ID ngưá»i dùng %S revokeUidFailed=Thất bại khi huá»· ID ngưá»i dùng %S revokeUidOK=Äã huá»· thành công ID ngưá»i dùng %S. Nếu khoá cá»§a bạn đã có trên máy chá»§ quản lý khoá thì bạn nên tải nó lên lại để những ngưá»i khác có thể thấy là nó đã bị huá»·. revokeUidQuestion=Có chắc là bạn muốn huá»· ID ngưá»i dùng %S? deleteUidQuestion=Có chắc là bạn muốn xoá ID ngưá»i dùng %S?\n\nXin lưu ý: nếu bạn đã đăng khoá công khai cá»§a bạn lên máy chá»§ quản lý khoá rồi thì việc xoá ID ngưá»i dùng sẽ không thay đổi gì cả. Trong trưá»ng hợp này, bạn nên dùng 'Huá»· ID ngưá»i dùng'. # Strings in enigmailKeyImportInfo.xul importInfoTitle=THÀNH CÔNG! Äã nhập các khoá importInfoSuccess=✅ importInfoBits=Các bit importInfoCreated=Äã tạo importInfoFpr=Vân tay importInfoDetails=(Chi tiết) importInfoNoKeys=Chưa nhập khoá nào. # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=khoá công khai keyTypePrimary=khoá chính keyTypeSubkey=khoá phụ keyTypePair=cặp khoá keyExpiryNever=không bao giá» keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECDH keyAlgorithm_19=ECDSA keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=Mã hoá keyUsageSign=Ký tên keyUsageCertify=Chứng nhận keyUsageAuthentication=Xác minh keyDoesNotExpire=Khoá chưa hết hạn # Strings in enigmailGenCardKey.xul keygen.started=Xin chá» khi khoá Ä‘ang được tạo .... keygen.completed=Äã tạo khoá. ID má»›i cá»§a khoá là: 0x%S keygen.keyBackup=Äã sao lưu khoá vào %S keygen.passRequired=Xin chỉ định mật khẩu nếu bạn muốn tạo bản sao lưu khoá cá»§a mình ngoài SmartCard. # Strings in enigmailSetCardPin.xul cardPin.dontMatch=PIN bạn đã nhập không trùng khá»›p; xin nhập lại cardPin.minLength=PIN phải có ít nhất %S ký tá»± hoặc số cardPin.processFailed=Äổi PIN thất bại # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=Äang làm má»›i các khoá, xin chá» ... keyserverProgress.uploading=Äang tải các khoá lên, xin chá» ... keyserverTitle.refreshing=Làm má»›i các khoá keyserverTitle.uploading=Tải khoá lên # Strings in enigmailSetupWizard passphrase.min8keys=Mật khẩu phải chứa ít nhất 8 ký tá»±! setupWizard.reallyCancel=Có chắc là bạn muốn đóng Trình hướng dẫn cài đặt Enigmail không? setupWizard.invalidGpg=Tập tin bạn chỉ định không phải tập tin chạy GnuPG. Hãy chỉ định tập tin khác. setupWizard.specifyFile=Bạn cần chỉ định ít nhất má»™t tập tin khoá công khai để tiếp tục. setupWizard.installFailed=Có vẻ như quá trình cài đặt đã thất bại. Xin thá»­ lại hoặc cài đặt thá»§ công GnuPG và chỉ đưá»ng đến nó bằng nút Duyệt tìm. setupWizard.downloadForbidden=Äể bảo mật cho bạn, chúng tôi sẽ không tải vá» GnuPG. Xin vào http://www.gnupg.org/ để tải vá» GnuPG. setupWizard.downloadImpossible=Hiện chúng tôi không thể tải vá» GnuPG. Xin thá»­ lại sau hoặc vào http://www.gnupg.org/ để tải vá» GnuPG. setupWizard.hashSumError=Trình hướng dẫn không thể xác minh tập tin đã tải có toàn vẹn không. Nó có thể há»ng hoặc bị can thiệp. Bạn vẫn muốn tiếp tục cài đặt chứ? setupWizard.importSettingsFile=Chỉ định tập tin sao lưu để nạp setupWizard.invalidSettingsFile=Tập tin đã chỉ định không phải là tập tin sao lưu cài đặt Enigmail chính xác. setupWizard.gpgConfExists=Tập tin cấu hình GnuPG đã tồn tại. Bạn có muốn chép đè nó vá»›i tập tin từ bản cài đặt cÅ©? # Strings in installGnuPG.jsm installGnuPG.downloadFailed=Äã có lá»—i khi tải vá» GnuPG. Xin kiểm tra nhật ký khung lệnh để biết thêm chi tiết. installGnuPG.installFailed=Äã có lá»—i khi cài đặt GnuPG. Xin kiểm tra nhật ký khung lệnh để biết thêm chi tiết. # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=Bạn phải Ä‘iá»n tên và địa chỉ email addUidDlg.nameMinLengthError=Tên phải chứa ít nhất 5 ký tá»± addUidDlg.invalidEmailError=Bạn phải chỉ định má»™t địa chỉ email hợp lệ addUidDlg.commentError=Không được dùng dấu ngoặc tròn trong chú thích # Strings in enigmailCardDetails.js Carddetails.NoASCII=Smartcard OpenPGP chỉ há»— trợ các ký tá»± ASCII trong Tên/Há» tên. # network error types errorType.SecurityCertificate=Chứng nhận bảo mật trên dịch vụ web không hợp lệ. errorType.SecurityProtocol=Giao thức bảo mật được dùng bởi dịch vụ web không quen thuá»™c. errorType.Network=Äã xảy ra lá»—i mạng. # filter stuff filter.folderRequired=Bạn phải chá»n má»™t thư mục đích. filter.decryptMove.label=Giải mã vÄ©nh viá»…n (Enigmail) filter.decryptCopy.label=Tạo bản sao đã giải mã (Enigmail) filter.decryptMove.warnExperimental=Cảnh báo - thao tác lá»c "Giải mã vÄ©nh viá»…n" có thể huá»· hoại tin nhắn.\n\nChúng tôi chân thành khuyên bạn thá»­ bá»™ lá»c "Tạo bản sao đã giải mã", kiểm tra cẩn thận kết quả và chỉ bắt đầu dùng bá»™ lá»c này má»™t khi bạn hài lòng vá»›i kết quả thu được. # strings in enigmailConvert.jsm converter.decryptBody.failed=Không thể giải mã tin nhắn vá»›i tiêu Ä‘á»\n"%S".\nBạn muốn thá»­ lại vá»›i mật khẩu khác hay là bá» qua tin nhắn? converter.decryptAtt.failed=Không thể giải mã tập tin đính kèm "%1$S"\ncá»§a tin nhắn vá»›i tiêu Ä‘á»\n"%2$S".\nBạn muốn thá»­ lại vá»›i mật khẩu khác hay là bá» qua tin nhắn? saveLogFile.title=Lưu tập tin nhật ký # strings in gpg.jsm unknownSigningAlg=Thuật toán ký tên không quen thuá»™c (ID: %S) unknownHashAlg=Hash viết mã không quen thuá»™c (ID: %S) # strings in keyRing.jsm keyring.photo=Ảnh keyRing.pubKeyRevoked=Khoá %1$S (ID khoá %2$S) đã bị huá»·. keyRing.pubKeyExpired=Khoá %1$S (ID khoá %2$S) đã hết hạn. keyRing.pubKeyNotForSigning=Khoá %1$S (ID khoá %2$S) không thể dùng để ký tên. keyRing.pubKeyNotForEncryption=Khoá %1$S (ID khoá %2$S) không thể dùng để mã hoá. keyRing.keyDisabled=Khoá %1$S (ID khoá %2$S) đã bị tắt; không thể dùng được. keyRing.keyNotTrusted=Khoá %1$S (ID khoá %2$S) không đủ độ tin cậy. Xin đặt mức độ tin cậy cá»§a khoá lên "tối cao" để dùng ký tên. keyRing.keyInvalid=Khoá %1$S (ID khoá %2$S) không hợp lệ (VD: nó không có chữ tá»± ký). keyRing.signSubKeysRevoked=Tất cả khoá phụ cá»§a khoá %1$S (ID khoá %2$S) Ä‘á»u bị huá»·. keyRing.signSubKeysExpired=Tất cả khoá phụ cá»§a khoá %1$S (ID khoá %2$S) đã hết hạn. keyRing.signSubKeysUnusable=Tất cả khoá phụ cá»§a khoá %1$S (ID khoá %2$S) đã bị huá»·, hết hạn hoặc không sá»­ dụng được. keyRing.encSubKeysRevoked=Tất cả khoá phụ mã hoá cá»§a khoá %1$S (ID khoá %2$S) đã bị huá»·. keyRing.encSubKeysExpired=Tất cả khoá phụ mã hoá cá»§a khoá %1$S (ID khoá %2$S) đã hết hạn. keyRing.noSecretKey=Có vẻ như bạn không có khoá bí mật cho %1$S (ID khoá %2$S) trong vòng khoá; bạn không thể dùng khoá này để ký tên. keyRing.encSubKeysUnusable=Tất cả khoá phụ mã hoá cá»§a khoá %1$S (ID khoá %2$S) đã bị huá»·, hết hạn hoặc không sá»­ dụng được. #strings in exportSettingsWizard.js cannotWriteToFile=Không thể lưu vào tập tin '%S'. Xin chá»n tập tin khác. dataExportError=Äã xảy ra lá»—i trong khi xuất dữ liệu cá»§a bạn. enigmailSettings=Cài đặt Enigmail defaultBackupFileName=Enigmail-export specifyExportFile=Chỉ định tên tập tin để xuất homedirParamNotSUpported=Những tham số thêm để cấu hình đưá»ng dẫn như là --homedir và --keyring không được há»— trợ để xuất/khôi phục cài đặt. Xin dùng các phương thức khác như là cài đặt biến môi trưá»ng GNUPGHOME. #strings in expiry.jsm expiry.keyExpiresSoon=Khoá %1$S cá»§a bạn sẽ hết hạn trong %2$S ngày.\n\nChúng tôi khuyên bạn tạo má»™t cặp khoá má»›i và cấu hình tài khoản tương ứng để sá»­ dụng chúng. expiry.keysExpireSoon=Những khoá sau cá»§a bạn sẽ hết hạn trong %1$S ngày:\n%2$S. Chúng tôi khuyên bạn tạo khoá má»›i và cấu hình các tài khoản tương ứng để sá»­ dụng chúng. enigmail/lang/vi/help/000077500000000000000000000000001266701624400151425ustar00rootroot00000000000000enigmail/lang/vi/help/compose.html000066400000000000000000000121431266701624400174760ustar00rootroot00000000000000 Trợ giúp Enigmail: Soạn Tin nhắn

Trợ giúp Enigmail

Sử dụng Enigmail trong khi soạn tin nhắn

Trình đơn Enigmail trong cửa sổ Thư/Soạn
Ký tên tin nhắn
Bật/Tắt khi gá»­i thư được ký. Ngưá»i dùng được thông báo, nếu không ký tên được.
Mã hóa tin nhắn

Bật/Tắt mã hóa cho tất cả ngưá»i nhận trước khi gá»­i. Ngưá»i dùng được thông báo, nếu không mã hóa được.

Nếu Hiển thị lá»±a chá»n khi cần thiết được đặt trong Tùy thích -> thẻ Chá»n Khóa, má»™t danh sách các khóa sẽ bật lên nếu có địa chỉ trong danh sách những ngưá»i nhận cho tin nhắn cho ngưá»i mà bạn không có khóa công.

Nếu Không bao giá» hiển thị thoại lá»±a chá»n khóa OpenPGP được đặt trong Tùy thích -> thẻ Chá»n Khóa, và có địa chỉ trong danh sách những ngưá»i nhận cho tin nhắn cho ngưá»i mà bạn không có khóa công, tin nhắn sẽ được gá»­i mà không được mã hóa.

Sử dụng PGP/MIME cho tin nhắn này
Bật/Tắt việc sử dụng PGP/MIME cho tin nhắn này.

Nếu bạn biết (những) ngưá»i nhận có thể Ä‘á»c thư bằng cách dùng định dạng PGP/MIME thì bạn nên sá»­ dụng nó.

Tính năng này phụ thuộc vào các thiết lập trong Tùy thích -> thẻ PGP/MIME đang được đặt để Cho phép sử dụng PGP/MIME hoặc Luôn luôn sử dụng PGP/MIME.

Tùy chá»n mặc định cá»§a soạn tin
  • Các Tùy chá»n cá»§a Ký tên/Mã hóa...: lối tắt đến Thiết lập Tài khoản -> Các tùy chá»n cá»§a OpenPGP.
  • Các tùy chá»n cá»§a Gá»­i tin...: lối tắt đến Tùy thích -> thẻ Gá»­i tin.
  • Các tùy chá»n cá»§a chá»n khóa...: lối tắt đến Tùy thích -> thẻ Chá»n Khóa.
  • Các tùy chá»n cá»§a PGP/MIME...: lối tắt đến Tùy thích -> thẻ PGP/MIME.
Hủy bước mã hóa

Nếu bị trục trặc khi thật sá»± gá»­i thư, chẳng hạn như máy chá»§ POP không chấp nhận yêu cầu, Enigmail sẽ không biết gì vá» nó, và tin nhắn được mã hóa sẽ tiếp tục được hiển thị trong cá»­a sổ Soạn tin. Chá»n mục trình đơn này sẽ há»§y bước mã hóa/ký tên, rồi trở ngược lại văn bản ban đầu cá»§a cá»­a sổ Soạn tin.

Tùy chá»n này là má»™t sá»­a chữa tạm thá»i nhưng cÅ©ng có thể được sá»­ dụng để giải mã các văn bản trích dẫn khi trả lá»i các tin nhắn được mã hóa. Enigmail sẽ tá»± động giải mã tin trích dẫn, nhưng nếu không làm được vì lý do nào đó thì bạn có thể sá»­ dụng mục trình đơn này để ép buá»™c nó.

Chèn khóa công
Chèn khối giáp khóa công ASCII ở vị trí con trá» hiện tại trong cá»­a sổ Soạn tin. Bạn sẽ được há»i nhắc địa chỉ thư Ä‘iện tá»­ cá»§a (các) khóa để được chèn vào. Các khóa được chèn theo cách này sẽ tá»± động được Enigmai nhận diện ở đầu tiếp nhận. Sau khi chèn khóa, bạn vẫn có thể chá»n để ký tên/mã hóa thưl khi cần thiết. Ngoài ra, đừng chèn nhiá»u hÆ¡n má»™t khối khóa trong má»™t tin nhắn, chỉ cần Ä‘iá»n rõ nhiá»u địa chỉ thư Ä‘iện tá»­, phân biệt bằng dấu phẩy hoặc dấu cách, khi được nhắc.
Xóa cụm từ mật khẩu đưá»c lưu
Xóa cụm từ mật khẩu được nhá»› tạm. Hữu ích nếu bạn có nhiá»u cụm từ mật khẩu.
Trợ giúp
Hiển thị tin tức Trợ giúp từ trang web (trang này).

Trợ giúp thêm nữa có sẵn trên Trang web Trợ giúp Enigmail

enigmail/lang/vi/help/editRcptRule.html000066400000000000000000000141371266701624400204440ustar00rootroot00000000000000 Trợ giúp Enigmail: Sửa đổi Quy Tắc của OpenPGP

Trợ giúp Enigmail

Sử dụng Chỉnh sửa Quy tắc của Enigmail: Sửa đổi Quy Tắc của OpenPGP

Trong Chỉnh sá»­a Quy tắc, bạn có thể Ä‘iá»n rõ các mặc định cho má»—i ngưá»i nhận để bật mã hóa lên, ký tên và PGP/MIME, và để xác định (các) khóa OpenPGP nào để sá»­ dụng. Trong há»™p thoại này, bạn có thể Ä‘iá»n rõ các quy tắc cho má»™t ngưá»i nhận duy nhất, và cho má»™t nhóm ngưá»i nhận vá»›i các thuá»™c tính rất giống nhau.

Äặt Quy tắc cá»§a OpenPGP cho
Chứa các địa chỉ email cá»§a ngưá»i nhận (không có tên, tức là chỉ cần má»™t địa chỉ như somebody@email.domain). Bạn có thể Ä‘iá»n rõ má»™t số địa chỉ thư Ä‘iện tá»­, phân biệt bằng dấu cách. Các địa chỉ Ä‘iá»n rõ ở đây có thể chỉ gồm có phần miá»n để thư gá»­i đến bất kỳ địa chỉ nào tại miá»n đó sẽ được so sánh, ví dụn như @email.domain sẽ cho phép so sánh vá»›i body@email.domain, somebody@email.domain, anybody@email.domain, v.v.
Ãp dụng quy tắc nếu ngưá»i nhận ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Chính xác là: vá»›i thiết lập này, các quy tắc sẽ chỉ kích hoạt ở những thư Ä‘iện tá»­ đến body@email.domain (chính xác, không so sánh chữ hoa/thưá»ng).
  • Chứa : vá»›i thiết lập này, bất kỳ địa chỉ thư Ä‘iện tá»­ nào có chứa chuá»—i được so sánh, ví dụ như anybody@email.domain hoặc body@email.domain.net
  • Bắt đầu vá»›i: vá»›i thiết lập này, bất kỳ địa chỉ thư Ä‘iện tá»­ nào bắt đầu vá»›i chuá»—i được so sánh, ví dụ như body@email.domain.net, body@email.domain-name.com.
  • Kết thúc bằng: vá»›i thiết lập này, bất kỳ địa chỉ thư Ä‘iện tá»­ nào kết thúc vá»›i chuá»—i được so sánh, ví dụ như anybody@email.domain , somebody@email.domain .
Tiếp tục với quy tắc kế tiếp cho địa chỉ trùng hợp
Bật chức năng này lên sẽ cho phép bạn xác định má»™t quy tắc nhưng không phải Ä‘iá»n rõ má»™t KeyID trong trưá»ng Sá»­ dụng những khóa OpenPGP sau đây:, để địa chỉ thư Ä‘iện tá»­ được dùng để kiếm má»™t chiếc khóa ở thá»i Ä‘iểm gá»­i. Ngoài ra, các quy tắc khác nữa cho cùng (các) địa chỉ cÅ©ng sẽ được xá»­ lý.
Äừng kiểm soát thêm quy tắc nữa cho địa chỉ trùng hợp
Bật chức năng này lên ngưng xá»­ lý bất kỳ quy tắc nào khác cho (các) địa chỉ trùng hợp nếu quy tắc này trùng hợp; nghÄ©a là xá»­ lý quy tắc tiếp tục vá»›i ngưá»i nhận kế tiếp.
Sử dụng các khóa OpenPGP sau đây:
Sá»­ dụng nút Chá»n (các) Khóa.. để chá»n các khóa cá»§a ngưá»i nhận dùng để mã hóa. Như hành động bên trên, không có thêm quy tắc nào nữa cho (các) địa chỉ trùng hợp được xá»­ lý.
Mặc định cho Ký tên
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Không bao giá»: tắt ký tên, ngay cả khi nó đã được bật lên trong cá»­a sổ viết tin nhắn (baÍc bỏ các giá trị khác)
  • Có, nếu được chá»n từ trong Soạn Tin nhắn: để việc ký tên như đã được Ä‘iá»n rõ trong cá»­a sổ soạn tin nhắn
  • Luôn luôn: bật ký tên lên, ngay cả nếu nó đã không được bật lên trong cá»­a sổ soạn tin nhắn
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Mã hóa
Bật hoặc tắt việc mã hóa tin nhắn. Các thiết lập cho phép và ý nghĩa của chúng cũng giống như cho việc ký tên tin nhắn.
PGP/MIME
Bật hoặc tắt việc sử dụng PGP/MIME (RFC 3156) để mã hóa tin nhắn. Nếu PGP/MIME bị tắt, các tin nhắn được mã hoá bằng cách dùng "PGP trực tiếp". Các giá trị được cho phép và ý nghĩa của chúng cũng giống như cho việc ký tên tin nhắn.

Các quy tắc được xá»­ lý theo thứ tá»± hiển thị trong danh sách trong Chỉnh sá»­a Quy tắc cá»§a OpenPGP. Bất cứ khi nào má»™t quy tắc trùng hợp vá»›i má»™t ngưá»i nhận và chứa má»™t ID khóa OpenPGP, ngoài việc sá»­ dụng ID khóa được Ä‘iá»n rõ, ngưá»i nhận không được lưu ý đến nữa khi tiếp tục xá»­ lý các quy tắc khác.


Trợ Giúp thêm nữa có sẵn trên trang Thiết lập Từng-Ngưá»i nhận cá»§a Enigmail

enigmail/lang/vi/help/initError.html000066400000000000000000000045361266701624400200150ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/vi/help/messenger.html000066400000000000000000000121641266701624400200240ustar00rootroot00000000000000 Trợ giúp Enigmail: Äá»c tin nhắn

Trợ giúp Enigmail

Sá»­ dụng Enigmail khi Ä‘á»c tin nhắn

Nút Giải mã trong cửa sổ Thư chính
Nút này có thể được dùng cho nhiá»u mục đích: giải mã, xác nhận, hoặc nhập các khóa công vào. Thông thưá»ng thì việc giải mã/xác nhận xảy ra tá»± động, mặc dù Ä‘iá»u này có thể bị tắt qua má»™t tùy thích. Tuy nhiên, nếu Ä‘iá»u này không làm được thì má»™t thông báo lá»—i ngắn sẽ thưá»ng xuất hiện trong dòng trạng thái cá»§a Enigmail. Nếu bạn nhấn nút Giải mã, bạn sẽ có thể thấy má»™t thông báo lá»—i chi tiết hÆ¡n, kể luôn kết qá»§a cá»§a lệnh GnuPG.
Các biểu tượng cá»§a Bút và Khóa trong hiển thị Äầu đỠTin nhắn
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • Tin tức Bảo mật cá»§a OpenPGP: cho phép bạn xem trạng thái kết xuất từ GnuPG cho tin nhắn.
  • Chép tin tức Bảo mật cá»§a OpenPGP: chép tình trạng kết xuất từ GnuPG vào bá»™ nhá»› tạm; để dán vào má»™t tin nhắn trả lá»i, v.v.
  • Xem ID Hình cá»§a OpenPGP: cho phép bạn xem các ID Hình cá»§a ngưá»i gá»­i tin nhắn, nếu há» có má»™t hình ảnh được nhúng vào Khóa Công cá»§a há». ( Tùy chá»n này sẽ chỉ được bật lên nếu má»™t ID Hình có sẵn trong khóa cá»§a há».)
  • Tin tức Bảo mật cá»§a S/MIME: cho phép bạn xem tin tức Bảo mật cá»§a S/MIME cho tin nhắn.

Nếu bạn không có tùy chá»n-máy phục vụ khóa tá»± động-lấy-khóa đặt trong tập tin gpg.conf cá»§a bạn và bạn Ä‘á»c tin nhắn mà đã được ký tên hoặc mã hóa, bạn sẽ thấy má»™t biểu tượng Bút trong khu vá»±c hiển thị đầu đỠvá»›i má»™t Dấu Há»itrên đó, dòng trạng thái Enigmail trong khu vá»±c đầu đỠsẽ nói là Má»™t phần tin nhắn đã được ký; nhấn biểu tượng bút để có chi tiết và tin nhắn trong Cá»­a sổ tin nhắn sẽ hiển thị tất cả các OpenPGP chỉ số khối tin và ngăn chặn các chữ ký.

Bạn cÅ©ng có thể thấy Ä‘iá»u này nếu bạn có tùy chá»n-máy phục vụ khóa tá»± động-lấy-khóa đặt trong tập tin gpg.conf cá»§a bạn và khoá OpenPGP không có sẵn trên máy phục vụ khóa mặc định.

Nhấp vào biểu tượng Bút và dấu Há»i sẽ Ä‘em đến má»™t cá»­a sổ cho biết rằng khóa không có sẵn trong vòng khoá cá»§a bạn. Nhấn OK sẽ Ä‘em đến má»™t cá»­a sổ khác vá»›i má»™t danh sách các máy phục vụ khóa để từ đó bạn có thể chá»n để tải xuống khoá công cá»§a ngưá»i gá»­i.

Äể cấu hình danh sách các máy phục vụ khóa mà bạn muốn sá»­ dụng, hãy vào thẻ Enigmail -> Tùy thích -> Căn bản và nhập địa chỉ máy phục vụ khóa vào há»™p (Các) máy phục vụ khóa:, phân biệt bằng dấu phẩy. Máy phục vụ khóa đầu tiên trong danh sách sẽ được dùng làm mặc định.

Mở các đính kèm được mã hóa / nhập các khóa OpenPGP đính kèm
Các đính kèm có tên là *.pgp, *.asc và *.gpg được nhận diện là các đính kèm có thể được đặc biệt xá»­ lý bởi Enigmail. Nhấn phải vào má»™t đính kèm như vậy cho phép hai mục trình đơn đặc biệt trong trình đơn ngữ cảnh: Giải mã và Mở ra và Giải mã và Lưu lại. Sá»­ dụng hai mục trình đơn này nếu bạn muốn Enigmail giải mã má»™t đính kèm trước khi mở hoặc lưu nó. Nếu má»™t đính kèm được nhận diện là má»™t tập tin khóa OpenPGP, bạn được má»i để nhập các khóa vào những vòng khóa cá»§a bạn.

Trợ Giúp thêm nữa có sẵn trên Trang web Trợ giúp của Enigmail

enigmail/lang/vi/help/rulesEditor.html000066400000000000000000000074341266701624400203410ustar00rootroot00000000000000 Trợ giúp Enigmail: Chỉnh sửa Quy tắc

Trợ giúp Enigmail

Sử dụng Chỉnh sửa Quy tắc của Enigmail

Trong Chỉnh sá»­a Quy tắc, bạn có thể Ä‘iá»n rõ các mặc định cho má»—i ngưá»i nhận để bật mã hóa lên, ký tên và PGP/MIME, và để xác định (các) khóa OpenPGP nào để sá»­ dụng. Má»—i quy tắc bao gồm 5 lÄ©nh vá»±c và được biểu hiện trên má»™t dòng đơn:

Thư điện tử
(Các) thư Ä‘iện tá»­ từ trưá»ng To:, Cc: và Bcc: để so sánh. Việc trùng hợp dá»±a vào chuá»—i phụ (Những chi tiết khác có thể được tìm thấy trong há»™p thoại Sá»­a đổi Quy Tắc)
(Các) khóa OpenPGP
má»™t danh sách cá»§a các ID khóa OpenPGP để sá»­ dụng cho ngưá»i nhận
Ký tên
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Không bao giá»: tắt ký tên, ngay cả khi nó đã được bật lên trong cá»­a sổ viết tin nhắn (baÍc bỏ các giá trị khác)
  • Có thể: để việc ký tên như đã được Ä‘iá»n rõ trong cá»­a sổ soạn tin nhắn
  • Luôn luôn: bật ký tên lên, ngay cả nếu nó đã không được bật lên trong cá»­a sổ soạn tin nhắn

Các thiết lập ký tên này được áp dụng cho tất cả các quy tắc trùng hợp. Nếu má»™t trong những quy tắc tắt việc ký tên thì tin nhắn sẽ không được ký, ngay cả những quy tắc khác có Ä‘iá»n rõ là Luôn luôn.

Mã hóa
bật hoặc tắt việc mã hóa tin nhắn. Các thiết lập cho phép và ý nghĩa của chúng cũng giống như cho việc ký tên tin nhắn.
PGP/MIME
Bật hoặc tắt việc sử dụng PGP/MIME (RFC 3156) để mã hóa tin nhắn. Nếu PGP/MIME bị tắt, các tin nhắn được mã hoá bằng cách dùng "PGP trực tiếp". Các giá trị được cho phép và ý nghĩa của chúng cũng giống như cho việc ký tên tin nhắn.

Các quy tắc được xá»­ lý theo thứ tá»± hiển thị trong danh sách. Bất cứ khi nào má»™t quy tắc trùng hợp vá»›i má»™t ngưá»i nhận và chứa má»™t ID khóa OpenPGP, ngoài việc sá»­ dụng ID khóa được Ä‘iá»n rõ, ngưá»i nhận không được lưu ý đến nữa khi tiếp tục xá»­ lý các quy tắc khác.

Lưu ý: Chỉnh sửa quy tắc chưa được hoàn tất. Có thể viết thêm một số quy tắc tiên tiến hơn bằng cách trực tiếp chỉnh sửa tập tin quy tắc (các quy tắc này sau đó không nên được chỉnh sửa nữa trong chỉnh sửa quy tắc). Tin tức thêm nữa để trực tiếp chỉnh sửa tập tin có sẵn trên Trang chủ Enigmail


Giúp hơn nữa có sẵn trên Enigmail Help web page

enigmail/lang/vi/help/sendingPrefs.html000066400000000000000000000047771266701624400204760ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/zh-CN/000077500000000000000000000000001266701624400145135ustar00rootroot00000000000000enigmail/lang/zh-CN/am-enigprefs.properties000066400000000000000000000001171266701624400212050ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP 安全 enigmail/lang/zh-CN/enigmail.dtd000066400000000000000000001317101266701624400170000ustar00rootroot00000000000000 OpenPGP 安全)"> 注æ„:密钥生æˆè¿‡ç¨‹å¯èƒ½ä¼šæŒç»­æ•°åˆ†é’Ÿã€‚生æˆå¯†é’¥çš„过程中请ä¸è¦é€€å‡ºæœ¬ç¨‹åºã€‚在此期间æµè§ˆç½‘页或者执行能产生大é‡ç£ç›˜æ“作的程åºå°†å¸®åŠ©å¡«å……â€œéšæœºæ•°æ± â€å¹¶èƒ½åŠ é€Ÿå¯†é’¥åˆ›å»ºè¿›ç¨‹ã€‚å¯†é’¥åˆ›å»ºç»“æŸæ—¶æ‚¨å°†æ”¶åˆ°å®Œæˆé€šçŸ¥ã€‚"> ' 是无效的"> 注æ„:密钥生æˆè¿‡ç¨‹å¯èƒ½ä¼šæŒç»­æ•°åˆ†é’Ÿã€‚ 生æˆå¯†é’¥çš„过程中请ä¸è¦é€€å‡ºæœ¬ç¨‹åºã€‚密钥生æˆç»“æŸæ—¶æ‚¨å°†æ”¶åˆ°å®Œæˆé€šçŸ¥ã€‚"> 注æ„: Enigmail å°†æ€»æ˜¯éªŒè¯æ¯ä¸ªå¸å·æˆ–身份标识邮件的数 å­—ç­¾å,而无论它是å¦è¢«å…许或ä¸"> å…¬é’¥æ˜¯ç»™å…¶ä»–äººç”¨ä»¥å‘æ‚¨å‘é€åŠ å¯†é‚®ä»¶çš„ä¸œè¥¿ã€‚æ‚¨å¯ä»¥å°†å®ƒåˆ†å‘给任何人。"> ç§é’¥æ˜¯ä»…供您自己使用的用æ¥è§£å¯†è¿™äº›é‚®ä»¶ï¼Œä»¥åŠç­¾åè¦å‘出的邮件时使用。 您应该ä¸å°†å®ƒæ³„露给任何人。"> ç§é’¥æ˜¯ä»…供您自己使用的用æ¥è§£å¯†è¿™äº›é‚®ä»¶ï¼Œä»¥åŠç­¾åè¦å‘出的邮件时使用。 您应该ä¸å°†å®ƒæ³„露给任何人。 为了您的ç§é’¥çš„安全,您需è¦åœ¨æŽ¥ä¸‹æ¥çš„ä¸¤ä¸ªå¯¹è¯æ¡†ä¸­è¾“入一个å£ä»¤ã€‚"> å£ä»¤æ˜¯ç”¨æ¥ä¿æŠ¤æ‚¨çš„ç§é’¥çš„密ç ã€‚它用以é¿å…您的ç§é’¥è¢«æ»¥ç”¨ã€‚"> 䏿ލè使用元音 (e.g. ä, é, ñ) 和特定语言的字符。"> 您将需è¦ä¸ºæ­¤è¾“入您的密ç ã€‚"> 使用 Enigmail 首选项中的备份å‘导,从您的旧电脑导出您的数æ®ï¼š 使用本å‘导将您的数æ®å¯¼å…¥æ‚¨çš„æ–°ç”µè„‘: "> 感谢您使用 Enigmail。"> 使用本å‘导从您的旧电脑导出您的数æ®ï¼š 使用本å‘导将您的数æ®å¯¼å…¥æ‚¨çš„æ–°ç”µè„‘: "> enigmail/lang/zh-CN/enigmail.properties000066400000000000000000000771431266701624400204320ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail 警告 enigConfirm=Enigmail 确认 enigError=Enigmail 错误 enigPrompt=Enigmail æç¤º dlgYes=是 dlgNo=å¦ dlgKeepSetting=è®°ä½è®¾ç½®ä¸‹æ¬¡ä¸å†è¯¢é—® dlgNoPrompt=ä¸å†æ˜¾ç¤ºæ­¤å¯¹è¯æ¡† dlg.button.delete=删除(&D) dlg.button.cancel=å–æ¶ˆ(&C) dlg.button.close=关闭(&C) dlg.button.continue=ç»§ç»­(&T) dlg.button.skip=忽略(&S) dlg.button.overwrite=覆盖(&O) dlg.button.view=查看(&V) dlg.button.retry=回å¤(&R) dlg.button.ignore=忽略(&I) repeatPrefix=\n\n此警告将会é‡å¤å‡ºçް %S repeatSuffixSingular=次 repeatSuffixPlural=或更多次 noRepeat=\n\n在您å‡çº§ Enigmail 之å‰ï¼Œæ­¤è­¦å‘Šå°†ä¸å†å‡ºçŽ°ã€‚ pgpNotSupported=æ‚¨ä¼¼ä¹Žåœ¨åŒæ—¶ä½¿ç”¨ Enigmail å’Œ PGP 6.x \n\né—æ†¾çš„æ˜¯ï¼ŒPGP 6.x 存在一些问题,致使 Enigmail 无法正常工作。因此, Enigmail ä¸å†æ”¯æŒ PGP 6.x;请用 GnuPG (GPG)æ¥ä»£æ›¿ã€‚\n\n如果您在转移到 GnuPG 上需è¦å¸®åŠ©ï¼Œè¯·æŸ¥è¯¢ Enigmail 主页上的帮助章节。 initErr.howToFixIt=为了使用 Enigmail,GnuPG 是必须的。如果您还未安装 GnuPG,最简å•的方法是使用斜线的“安装å‘å¯¼â€æŒ‰é’®ã€‚ initErr.setupWizard.button=安装å‘导(&S) passphraseCleared=å£ä»¤å·²è¢«æ¸…除。 cannotClearPassphrase=æ‚¨åœ¨ä½¿ç”¨éžæ ‡å‡†çš„工具 (例如 gnome-keyring) 进行密钥处ç†ã€‚å› æ­¤ä¸èƒ½åœ¨ Enigmail 内部清除å£ä»¤ã€‚ noPhotoAvailable=æ— å¯ç”¨ç…§ç‰‡ debugLog.title=Enigmail 调试日志 error.photoPathNotReadable=照片路径 '%S' ä¸å¯è¯» # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=Enigmail 的新版本在首选项和选项的处ç†ä¸Šæœ‰æ˜¾è‘—çš„å˜åŒ–。我们在å°è¯•转移旧版本的设置到此新版本。但我们ä¸èƒ½è‡ªåŠ¨å®Œæˆæ‰€æœ‰æƒ…况。请仔细检查新产生的首选项和选项。 enigmailCommon.checkPreferences=请检查首选项 ... usingVersion=当å‰è¿è¡Œçš„ Enigmail 版本 %S usingAgent=使用 %S 工具的 %S 程åºè¿›è¡ŒåŠ å¯†æˆ–è§£å¯† agentError=错误: 无法访问 Enigmail æœåŠ¡ï¼ accessError=访问 Enigmail æœåŠ¡æ—¶å‘生错误 onlyGPG=密钥创建功能仅支æŒä½¿ç”¨ GnuPG (䏿”¯æŒ PGP)ï¼ keygenComplete=密钥创建结æŸï¼ 该密钥将用于标识 <%S> 的数字签å。 revokeCertRecommended=我们强烈推è为您的密钥创将一个撤销è¯ä¹¦ã€‚当您的ç§é’¥ä¸¢å¤±æˆ–被窃å–的时候,您å¯ä»¥é€šè¿‡æ­¤è¯ä¹¦å°†æ‚¨çš„密钥失效。您希望立å³åˆ›å»ºä¸€ä¸ªè¿™æ ·çš„æ’¤é”€è¯ä¹¦ä¹ˆï¼Ÿ keyMan.button.generateCert=生æˆè¯ä¹¦(&G) genCompleteNoSign=密钥创建结æŸï¼ genGoing=å¯†é’¥åˆ›å»ºæ­£åœ¨æ‰§è¡Œä¸­ï¼ passNoMatch=å£ä»¤ä¸ç¬¦ï¼›è¯·é‡æ–°è¾“å…¥ passCheckBox=如果ä¸ä¸ºå¯†é’¥è®¾ç½®å£ä»¤è¯·é€‰æ‹©æ­¤é¡¹ passUserName=请为此标识设置用户å keygen.passCharProblem=您在您的å£ä»¤ä¸­ä½¿ç”¨äº†ç‰¹æ®Šå­—ç¬¦ã€‚é—æ†¾çš„æ˜¯è¿™å¯èƒ½å¯¼è‡´å…¶ä»–应用程åºå‡ºçŽ°é—®é¢˜ã€‚æˆ‘ä»¬æŽ¨èæ‚¨é€‰æ‹©ä¸€ä¸ªåªåŒ…å«ä¸‹åˆ—字符的å£ä»¤ï¼ša-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=因为技术原因,您的å£ä»¤å¯èƒ½ä¸èƒ½ä»¥ç©ºæ ¼å­—符开头或结尾。 changePassFailed=更改å£ä»¤å¤±è´¥ã€‚ keyConfirm=为“%Sâ€åˆ›å»ºå…¬é’¥å’Œç§é’¥ä¹ˆï¼Ÿ keyMan.button.generateKey=生æˆå¯†é’¥(&G) keyAbort=中止密钥生æˆï¼Ÿ keyMan.button.generateKeyAbort=放弃密钥生æˆ(&A) keyMan.button.generateKeyContinue=继续密钥生æˆ(&C) expiryTooLong=您ä¸èƒ½åˆ›å»ºæœ‰æ•ˆæœŸè¶…过 100 年的密钥。 expiryTooLongShorter=您ä¸èƒ½åˆ›å»ºæœ‰æ•ˆæœŸè¶…过 90 年的密钥。 expiryTooShort=您的密钥必须至少在一天内有效。 dsaSizeLimit=DSA ç­¾å的密钥被é™åˆ¶ä¸º 3072 ä½ã€‚密钥大å°å°†è¢«ç›¸åº”å‡å°‘。 keyGenFailed=密钥生æˆå¤±è´¥ï¼Œè¯·æ£€æŸ¥ Enigmail 终端 (èœå• 安全 > 调试 Enigmail) 了解详细信æ¯ã€‚ setKeyExpirationDateFailed=过期时间ä¸èƒ½æ›´æ”¹ # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail 安全信æ¯\n\n enigHeader=Enigmail : enigContentNote=Enigmail : *æœ¬é‚®ä»¶çš„é™„ä»¶æœªè¢«æ•°å­—ç­¾åæˆ–加密*\n\n possiblyPgpMime=本邮件å¯èƒ½ä½¿ç”¨ PGP/MIME æ–¹å¼åŠ å¯†æˆ–æ•°å­—ç­¾åï¼›ç‚¹å‡»â€œè§£å¯†â€æŒ‰é’®ä»¥éªŒè¯ noDecrypted=无需è¦ä¿å­˜çš„已解密邮件ï¼\n请使用“文件â€èœå•中的“ä¿å­˜â€å‘½ä»¤ noMessage=没有邮件需è¦ä¿å­˜ï¼ useButton=请点击解密按钮æ¥è§£å¯†é‚®ä»¶ saveHeader=Enigmail : ä¿å­˜å·²è§£å¯†é‚®ä»¶ saveAttachmentHeader=Enigmail : ä¿å­˜å·²è§£å¯†é™„ä»¶ noTempDir=无法写入临时目录\n请设置有效的环境å˜é‡ TEMP attachmentPgpKey=æ‚¨è¦æ‰“开的附件“%Sâ€æ˜¯ä¸€ä¸ª OpenPGP 密钥文件。\n\n点击“是â€ä»¥å¯¼å…¥è¯¥é™„件中的密钥或者点击“å¦â€ä»¥ä¾¿åœ¨æµè§ˆå™¨ä¸­æŸ¥çœ‹æ–‡ä»¶å†…容 beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* ********* endPgpPart=********** *END ENCRYPTED or SIGNED PART* ********** notePartEncrypted=Enigmail : *该邮件的æŸäº›éƒ¨åˆ†â€œæœªç»â€æ•°å­—ç­¾åæˆ–加密* noteCutMessage=Enigmail: *找到多个消æ¯å— -- 解密/验è¯ä¸­æ­¢* decryptOkNoSig=警告\n\n解密æˆåŠŸï¼Œä½†æ— æ³•éªŒè¯æ•°å­—ç­¾å的正确性 msgOvl.button.contAnyway=åšæŒç»§ç»­(&C) signature.verifiedOK=附件 %S 的签åéªŒè¯æˆåŠŸ signature.verifyFailed=附件 %S çš„ç­¾åæœªèƒ½éªŒè¯ attachment.noMatchToSignature=附件 '%S' ä¸åŒ¹é…ç­¾åæ–‡ä»¶ attachment.noMatchFromSignature=ç­¾åæ–‡ä»¶ '%S' ä¸åŒ¹é…附件 fixBrokenExchangeMsg.failed=ä¿®å¤æ¶ˆæ¯æœªæˆåŠŸã€‚ keysToExport=选择è¦åµŒå…¥çš„ OpenPGP 密钥 keysToUse=选择用于 %S çš„ OpenPGP 密钥 pubKey=%S 的公钥\n windowLocked=编辑窗å£å·²é”定;å‘é€å–消 sendUnencrypted=åˆå§‹åŒ– Enigmail 失败。\nå‘逿œªåŠ å¯†çš„é‚®ä»¶å—? composeSpecifyEmail=请指定您è¦ä½¿ç”¨çš„主è¦é‚®ä»¶åœ°å€ï¼Œè¯¥åœ°å€å°†è¢«ç”¨äºŽä¸ºå¾…å‘邮件选择数字签å密钥。\n å¦‚æžœä¿æŒæ­¤é¡¹ç©ºç™½ï¼Œé‚®ä»¶çš„ FROM 地å€å°†è¢«ç”¨äºŽé€‰æ‹©æ•°å­—ç­¾å密钥。 sendingHiddenRcpt=此邮件有 BCC(密é€ï¼‰æ”¶ä»¶äººã€‚如果此消æ¯å·²åŠ å¯†ï¼Œå®ƒå¯ä»¥éšè—坆逿”¶ä»¶äººï¼Œä½†ä¸€äº›äº§å“(例如 PGP)的用户将ä¸èƒ½è§£å¯†è¯¥é‚®ä»¶ã€‚有鉴于此,我们建议ä¸è¦åŒæ—¶ä½¿ç”¨å¯†é€ä¸Žé‚®ä»¶åŠ å¯†ã€‚ sendWithHiddenBcc=éšè—坆逿”¶ä»¶äºº sendWithShownBcc=正常加密 sendingNews=加密的å‘逿“ä½œå·²å–æ¶ˆã€‚\n\næ­¤é‚®ä»¶åŒ…å«æ–°é—»ç»„收件人,因此ä¸èƒ½è¢«åŠ å¯†ã€‚è¯·é‡æ–°å‘逿œªåŠ å¯†çš„å‰¯æœ¬ã€‚ sendToNewsWarning=警告:您å³å°†å‘é€ä¸€å°åŠ å¯†çš„é‚®ä»¶åˆ°ä¸€ä¸ªæ–°é—»ç»„ã€‚\n\n仅在该组的所有æˆå‘˜éƒ½èƒ½è§£å¯†è¯¥é‚®ä»¶æ—¶æ‰é¼“励这么åšï¼Œå› ä¸ºè¿™æ‰æœ‰æ„义。请仅在您明确知é“他们能åšåˆ°è¿™ç‚¹çš„æƒ…况下å‘逿­¤é‚®ä»¶ã€‚\n\nç»§ç»­å—? hasHTML=HTML 邮件警告:\n此邮件å¯èƒ½å«æœ‰ HTML,这有å¯èƒ½å¯¼è‡´æ•°å­—ç­¾å/åŠ å¯†å¤±è´¥ã€‚ä¸ºé˜²æ­¢å†æ¬¡å‡ºçŽ°æ­¤ç±»æç¤ºï¼Œæ‚¨åº”该在按下 SHIFT é”®çš„åŒæ—¶ç‚¹å‡» 撰写/å›žå¤ æŒ‰é’®ä»¥ä¾¿å‘逿•°å­—ç­¾å邮件。\nå¦‚æžœæ‚¨é€‰æ‹©äº†é»˜è®¤æƒ…å†µä¸‹æ•°å­—ç­¾åæ‰€æœ‰é‚®ä»¶ï¼Œé‚£ä¹ˆæ‚¨åº”è¯¥å–æ¶ˆé€‰é¡¹å¯¹è¯æ¡†ä¸­çš„“撰写 HTML é‚®ä»¶â€æ¥æ°¸ä¹…关闭此邮件户的 HTML 邮件功能。 strippingHTML=å°†é‚®ä»¶è½¬æ¢æˆçº¯æ–‡æœ¬è¿›è¡Œæ•°å­—ç­¾å/加密会导致 HTML 邮件中包å«çš„æ ¼å¼ä¿¡æ¯ä¸¢å¤±ã€‚您希望继续执行å—? msgCompose.button.sendAnyway=åšæŒå‘é€é‚®ä»¶(&S) attachWarning=本邮件的附件没有本地副本,ä¸èƒ½è¢«åŠ å¯†ã€‚è¦åŠ å¯†æ­¤ç±»é™„ä»¶ï¼Œæ‚¨å¿…é¡»å°†å…¶ä¿å­˜è‡³æœ¬åœ°ç¡¬ç›˜ç„¶åŽé‡æ–°å¢žåŠ å…¶ä¸ºé™„ä»¶ã€‚æ‚¨ä»è¦ç»§ç»­å—? quotedPrintableWarn=您选择了在å‘é€é‚®ä»¶æ—¶è¿›è¡Œâ€œquoted-printableâ€ç¼–ç ã€‚è¿™å¯èƒ½ä¼šå¯¼è‡´æ‚¨çš„邮件无法被正确解密或验è¯ã€‚\n 您希望立å³å…³é—­â€œå‘é€â€œquoted-printableâ€é‚®ä»¶â€é€‰é¡¹å—? minimalLineWrapping=您已ç»è®¾ç½®äº†åœ¨ %S 个字符处自动æ¢è¡Œã€‚此值必须ä¸å°äºŽ 68 以ä¿è¯æ­£ç¡®åŠ å¯†æˆ–æ•°å­—ç­¾å。\n您希望立å³å°†è‡ªåЍæ¢è¡Œè®¾ç½®ä¸º 68 个字符å—? warning=警告 signIconClicked=æ‚¨å·²ç»æ‰‹å·¥æ›´æ”¹äº†æ•°å­—ç­¾å设置。因此,您撰写此邮件时,关闭或激活邮件数字签åå°†ä¸å†ä¾èµ–于关闭或激活邮件加密。 pgpMime_sMime.dlg.text=您已ç»åŒæ—¶å¯ç”¨äº† PGP/MIME å’Œ S/MIMEã€‚é—æ†¾çš„æ˜¯ç›®å‰ä¸èƒ½åŒæ—¶æ”¯æŒè¿™ä¸¤ç§å议。请选择一项您想使用的å议,PGP/MIME 或者 S/MIME。 pgpMime_sMime.dlg.pgpMime.button=使用 &PGP/MIME pgpMime_sMime.dlg.sMime.button=使用 &PGP/MIME errorKeyUnusable=密钥 ID “%Sâ€çš„电å­é‚®ä»¶åœ°å€æ— æ³•匹é…åˆ°ä¸€ä¸ªæœ‰æ•ˆçš„ã€æœªè¿‡æœŸçš„ OpenPGP 密钥。\n请确定您拥有一个有效的 OpenPGP 密钥,并且您的账户设置指å‘该密钥。 msgCompose.cannotSaveDraft=ä¿å­˜è‰ç¨¿æ—¶å‡ºé”™ msgCompose.internalEncryptionError=内部错误:ä¿è¯åР坆已ç¦ç”¨ msgCompose.internalError=å‘生内部错误。 msgCompose.toolbarTxt.signAndEncrypt=此消æ¯å°†è¢«ç­¾å和加密 msgCompose.toolbarTxt.signOnly=此消æ¯å°†è¢«ç­¾å msgCompose.toolbarTxt.encryptOnly=此消æ¯å°†è¢«åР坆 msgCompose.toolbarTxt.noEncryption=此消æ¯å°†ä¸è¢«ç­¾å且ä¸è¢«åР坆 msgCompose.toolbarTxt.disabled=Enigmail 已对选定的身份ç¦ç”¨ msgCompose.toolbarTxt.smime=S/MIME å·²å¯ç”¨ - å¯èƒ½ä¸Ž Enigmail å‘ç”Ÿæ½œåœ¨å†²çª msgCompose.toolbarTxt.smimeOff=- S/MIME å› æ­¤ä¸ä½¿ç”¨ msgCompose.toolbarTxt.smimeSignOrEncrypt=S/MIME å·²å¯ç”¨ - Enigmail å› æ­¤ä¸ä½¿ç”¨ msgCompose.toolbarTxt.smimeNoDraftEncryption=- è‰ç¨¿å°†ä¸è¢«åР坆 msgCompose.toolbarTxt.smimeConflict=Enigmail ä¸ä¼šä½¿ç”¨ï¼Œå› ä¸º S/MIME ç›®å‰å·²å¯ç”¨ã€‚请关闭 S/MIME ç­¾åå’Œ/或加密,然åŽå¯ç”¨ Enigmail 加密。 msgCompose.encryptedSubjectStub=已加密的邮件 msgCompose.detailsButton.label=详细信æ¯... msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=å‘逿“ä½œå·²å–æ¶ˆã€‚\n\n # details: keyNotTrusted=对“%Sâ€å¯†é’¥æ²¡æœ‰è¶³å¤Ÿçš„ä¿¡ä»» keyNotFound=找ä¸åˆ°â€œ%Sâ€å¯†é’¥ keyRevoked=密钥“%Sâ€å·²åºŸé™¤ keyExpired=密钥“%Sâ€å·²è¿‡æœŸ statPGPMIME=PGP/MIME statSigned=已数字签å statEncrypted=已加密 statPlain=纯文本 offlineSave=将待å‘邮件 %S ä¿å­˜è‡³å‘件箱中的 %S 目录? onlineSend=ç«‹å³å°†é‚®ä»¶ %S å‘é€ç»™ %S? encryptKeysNote=注æ„: 此邮件已使用下列用户/密钥标识的密钥加密: %S hiddenKey=<密钥已éšè—> signFailed=Enigmail 错误;加密/æ•°å­—ç­¾å失败;å‘逿œªåŠ å¯†é‚®ä»¶ï¼Ÿ msgCompose.button.sendUnencrypted=å‘逿œªåŠ å¯†çš„é‚®ä»¶(&S) recipientsSelectionHdr=选择加密收件人 configureNow=您未将选择的标识é…置为使用 Enigmail 安全邮件 (Enigmail) 。立å³é…置? # encryption/signing status and associated reasons: encryptMessageAuto=加密邮件(自动) encryptMessageNorm=加密邮件 signMessageAuto=ç­¾å邮件(自动) signMessageNorm=ç­¾å邮件 encryptOff=加密:关 encryptOnWithReason=加密:开 (%S) encryptOffWithReason=加密:关 (%S) encryptOn=加密:开 signOn=ç­¾å:开 signOff=ç­¾å:关 signOnWithReason=ç­¾å:开 (%S) signOffWithReason=ç­¾å:关 (%S) reasonEnabledByDefault=默认å¯ç”¨ reasonManuallyForced=手动强制 reasonByRecipientRules=收件人规则强制 reasonByAutoEncryption=自动加密强制 reasonByConflict=æ”¶ä»¶äººè§„åˆ™å†²çª reasonByEncryptionMode=加密模å¼å†²çª reasonSmimeConflict=å›  S/MIME å·²å¯ç”¨è€Œä»£æ›¿ # should not be used anymore: encryptYes=邮件将被加密 encryptNo=邮件将ä¸è¢«åР坆 # should not be used anymore: signYes=邮件将被数字签å signNo=邮件将ä¸è¢«æ•°å­—ç­¾å # PGP/MIME status: pgpmimeNormal=å议:PGP/MIME inlinePGPNormal=å议:内嵌 PGP pgpmimeAuto=å议:PGP/MIME(自动) inlinePGPAuto=å议:内嵌 PGP(自动) # should not be used anymore pgpmimeYes=PGP/MIME 将被使用 pgpmimeNo=å†…è” PGP 将被使用 # Attach own key status (tooltip strings): attachOwnKeyNo=您拥有的密钥将ä¸ä¼šé™„加 attachOwnKeyYes=您拥有的密钥将被附加 attachOwnKeyDisabled=您自己的密钥无法附加。您必须在“账户设置â€ä¸­çš„ OpenPGP 部分选择一个密钥æ‰èƒ½ä½¿ç”¨æ­¤åŠŸèƒ½ã€‚ rulesConflict=检测到与收件人规则冲çª\n%S\n\n使用这些设置å‘é€é‚®ä»¶ï¼Ÿ msgCompose.button.configure=é…ç½®(&C) msgCompose.button.send=å‘逿¶ˆæ¯(&S) msgCompose.button.save=ä¿å­˜æ¶ˆæ¯(&S) # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=需è¦å…¬é’¥ %S ä»¥éªŒè¯æ•°å­—ç­¾å keyUsed=使用公钥 %S æ¥éªŒè¯ç­¾å clickDecrypt=;请点击解密按钮 clickDecryptRetry=;请点击解密按钮é‡è¯• clickDetailsButton=;点击“详细信æ¯â€æŒ‰é’®èŽ·å–æ›´å¤šä¿¡æ¯ clickImportButton=ï¼›ç‚¹å‡»â€œå¯¼å…¥å¯†é’¥â€æŒ‰é’®ä¸‹è½½å¯†é’¥ keyTypeUnsupported=;您的 GnuPG ç‰ˆæœ¬çš„å¯†é’¥ç±»åž‹ä¸æ”¯æŒ msgPart=邮件包å«å·² %S 部分 msgSigned=æ•°å­—ç­¾å msgSignedUnkownKey=使用未知密钥签å msgEncrypted=加密 msgSignedAndEnc=æ•°å­—ç­¾å并加密 unverifiedSig=未验è¯çš„æ•°å­—ç­¾å incompleteDecrypt=解密ä¸å®Œæ•´ needKey=错误 - 需è¦ä½¿ç”¨ç§é’¥è¿›è¡Œé‚®ä»¶è§£å¯† failedDecrypt=错误 - 解密失败 badPhrase=错误 - å£ä»¤ä¸ç¬¦ failedDecryptVerify=错误 - 解密/验è¯å¤±è´¥ viewInfo=;选择“查看 > Enigmail ä¿¡æ¯â€æŸ¥çœ‹è¯¦ç»†ä¿¡æ¯ decryptedMsg=已解密的邮件 decryptedMsgWithFormatError=已解密消æ¯ï¼ˆå·²æ¢å¤æ ¼å¼å¼‚常的 PHP 邮件,这å¯èƒ½æ˜¯ç”±äºŽä¸€ä¸ªæ—§ç‰ˆæœ¬çš„ Exchange æœåŠ¡å™¨å¯¼è‡´ï¼Œå› æ­¤è¿™å¯èƒ½å¹¶ä¸å®Œæ•´ï¼‰ usedAlgorithms=使用算法:%S å’Œ %S locateGpg=å®šä½ GnuPG ç¨‹åº invalidGpgPath=指定的 GnuPG 执行路径ä¸å¯ç”¨ã€‚ Enigmail åŠŸèƒ½å°†è¢«å…³é—­ç›´è‡³æ‚¨å°†è¯¥è·¯å¾„é‡æ–°æŒ‡å‘ GnuPG æˆ–ç›´è‡³æ‚¨é‡æ–°å¯åŠ¨ç¨‹åºã€‚ warningsAreReset=所有警告已ç»å¤ä½ prefs.gpgFound=GnuPG 在 %S 找到 prefs.gpgNotFound=未能å‘现 GnuPG prefs.warnAskNever=警告: 选择此项将导致在任何一个收件人没有公钥时都会使邮件ä¸èƒ½è¢«åŠ å¯†çš„ç»“æžœ -- 此时Enigmail也ä¸èƒ½é€šçŸ¥åˆ°ä½ ! prefs.warnIdleTimeForUnknownAgent=无法连接到 gpg-agent。也许您的系统使用了一个特殊工具进行å£ä»¤å¤„ç†ï¼ˆä¾‹å¦‚ gnome-keyringã€seahorse-agentã€KDE 钱包管ç†å™¨...ï¼‰ã€‚é—æ†¾çš„æ˜¯ Enigmail 无法控制您所使用的工具的å£ä»¤è¶…时。因此,Enigmail 中设置的超时将被忽略。 prefEnigmail.oneKeyserverOnly=错误 - 您åªèƒ½æŒ‡å®šä¸€ä¸ªå¯†é’¥æœåŠ¡å™¨ç”¨äºŽè‡ªåŠ¨ä¸‹è½½ç¼ºå¤±çš„ OpenPGP 密钥。 enterAdminPin=请输入您的智能å¡ç®¡ç†è¯†åˆ«ç  enterCardPin=请输入您的智能å¡è¯†åˆ«ç  notInit=错误 - Enigmail æœåŠ¡æœªåˆå§‹åŒ– badCommand=错误 - 加密命令失败 cmdLine=命令åŠè¾“å…¥: notRequired=错误 - 无需加密 notComplete=错误 - å¯†é’¥åˆ›å»ºæœªå®Œæˆ invalidEmail=错误 - æ— æ•ˆé‚®ä»¶åœ°å€ noPassphrase=错误 - 未æä¾›å£ä»¤ noPGPblock=错误 - 未找到任何有效 ASCII ARMORED OpenPGP æ•°æ®æ®µ unverifiedReply=邮件的缩进部分 (回å¤) å¯èƒ½å·²è¢«ä¿®æ”¹ keyInMessageBody=消æ¯ä¸»ä½“中找到密钥。点击“导入密钥â€å¯¼å…¥å®ƒ sigMismatch=错误 - æ•°å­—ç­¾åä¸ç¬¦ cantImport=导入公钥时å‘生错误\n\n doImportOne=导入 %1$S (%2$S)? doImportMultiple=导入下列密钥?\n\n%S previewFailed=无法读å–公钥文件。 # Strings used in errorHandling.jsm sc.wrongCardAvailable=在您的读å¡å™¨ä¸­æ‰¾åˆ°çš„æ™ºèƒ½å¡ %S ä¸èƒ½ç”¨æ¥å¤„ç†è¯¥é‚®ä»¶ã€‚\n请æ’å…¥æ‚¨çš„æ™ºèƒ½å¡ %S,然åŽé‡æ–°è¿›è¡Œæ­¤æ“作。 sc.insertCard=æ­¤æ“ä½œéœ€è¦æ‚¨çš„æ™ºèƒ½å¡ %S。\n请æ’入所需的智能å¡ï¼Œç„¶åŽé‡æ–°è¿›è¡Œæ­¤æ“作。 sc.removeCard=æ­¤æ“作ä¸éœ€è¦æ™ºèƒ½å¡æ”¾åœ¨è¯»å¡å™¨ä¸­ã€‚\n请从读å¡å™¨ä¸­åŽ»é™¤æ‚¨çš„æ™ºèƒ½å¡ï¼Œç„¶åŽé‡æ–°è¿›è¡Œæ­¤æ“作。 sc.noCardAvailable=您的读å¡å™¨ä¸­æ— æ™ºèƒ½å¡ \n è¯·å°†æ™ºèƒ½å¡æ’入读å¡å™¨å¹¶é‡è¯• sc.noReaderAvailable=无法访问您的智能å¡è¯»å¡å™¨ \n 请连接您的智能å¡è¯»å¡å™¨ï¼Œæ’入您的智能å¡ï¼Œå¹¶é‡è¯• keyError.keySpecNotFound=电å­é‚®ä»¶åœ°å€ "%S" 无法匹é…到您的钥匙环上的密钥。 keyError.keyIdNotFound=å·²é…置的密钥 ID "%S" 无法在您的钥匙环中找到。 keyError.resolutionAction=请在您的“账户设置â€ä¸­çš„ OpenPGP 部分选择一个有效密钥。 missingPassphrase=缺少å£ä»¤ errorHandling.gpgAgentInvalid=您的系统è¿è¡Œçš„ gpg-agent 版本ä¸é€‚åˆæ‚¨çš„ GnuPG 版本。 errorHandling.gpgAgentError=GnuPG 与 gpg-agent (GnuPG 的一个组件) 通信时报告了一个错误。 errorHandling.dirmngrError=GnuPG 与 dirmngr (GnuPG 的一个组件) 通信时报告了一个错误。 errorHandling.pinentryError=GnuPG 无法通过 pinentry 查询您的å£ä»¤ã€‚ gpgNotFound=ä¸èƒ½åœ¨ '%S' 定ä½åˆ°GnuPG程åº.\n确认你在Enigmail傿•°ä¸­å·²ç»æ­£ç¡®è®¾ç½®GnuPG坿‰§è¡Œç¨‹åºè·¯å¾„ gpgNotInPath=ä¸èƒ½åœ¨è¿™ä¸ªè·¯å¾„定ä½åˆ°GnuPG程åº.\n确认你在Enigmail傿•°ä¸­å·²ç»æ­£ç¡®è®¾ç½®GnuPG坿‰§è¡Œç¨‹åºè·¯å¾„ enigmailNotAvailable=Enigmail 核心æœåŠ¡ä¸å¯ç”¨ gpgAgentNotStarted=ä¸èƒ½å¯åЍ GPGå‘导程åºï¼Œéœ€è¦ä½ çš„GnuPG版本为 %S. prefUntrusted=密钥未被信任 prefRevoked=密钥已撤销 prefExpiredKey=密钥已过期 prefExpired=已过期 prefGood=该邮件已ç»ç”± %S æ•°å­—ç­¾å,且在传输过程中未被篡改过 prefBad=该邮件已ç»ç”± %S æ•°å­—ç­¾å,但“已被â€ç¯¡æ”¹ failCancel=错误 - 密钥接收被用户中断 failNoServer=错误 - 为指定接收密钥使用的密钥æœåС噍 failNoID=错误 - æœªæŒ‡å®šè¦æŽ¥æ”¶çš„å¯†é’¥çš„å¯†é’¥æ ‡è¯† failKeyExtract=错误 - 密钥æå–命令失败 notFirstBlock=错误 - 第一个 OpenPGP æ®µä¸æ˜¯å…¬é’¥æ®µ importKeyConfirm=从邮件中导入嵌入的密钥么? failKeyImport=错误 - 密钥导入失败 fileWriteFailed=写入文件 %S 失败 importKey=从密钥æœåС噍坼入公钥 %S: uploadKey=将公钥 %S å‘é€åˆ°å¯†é’¥æœåС噍: keyId=密钥标识 keyAndSigDate=密钥标识: 0x%S / ç­¾åæ—¥æœŸ: %S keyFpr=密钥指纹: %S noEmailProvided=您未æä¾›é‚®ä»¶åœ°å€ï¼ keyAlreadySigned=该密钥已被签署,您ä¸èƒ½å¯¹å…¶é‡å¤ç­¾ç½²ã€‚ gnupg.invalidKey.desc=密钥 %S 未找到或者无效。å­å¯†é’¥å¯èƒ½å·²è¿‡æœŸã€‚ selKeyExpired=%S 已过期 createdHeader=已创建 atLeastOneKey=æœªé€‰æ‹©å¯†é’¥ï¼æ‚¨å¿…é¡»è‡³å°‘é€‰æ‹©ä¸€ä¸ªå¯†é’¥ä»¥æŽ¥å—æ­¤å¯¹è¯æ¡† fewerKeysThanRecipients=您选择了一个比收件人人数还å°çš„æ•°å­—。您确定è¦ç”¨ä½œåŠ å¯†çš„å¯†é’¥åˆ—è¡¨å·²å®Œæˆï¼Ÿ userSel.button.goBack=选择更多密钥 userSel.secretKeySel.title=选择一个秘密的 OpenPGP 密钥æ¥ç­¾æ³¨æ‚¨çš„æ¶ˆæ¯ userSel.problemNoKey=没有有效的密钥 userSel.problemMultipleKeys=多个密钥 # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=以åŽå‘é€ # Strings used in enigmailAttachmentDialog.js pgpMimeNote=注æ„: æ”¯æŒ PGP/MIME çš„é‚®ä»¶å®¢æˆ·ç«¯ç¨‹åºæ•°é‡å¾ˆæœ‰é™ï¼åœ¨ Windows å¹³å°ä¸Šå·²çŸ¥çš„æ”¯æŒè¯¥æ ‡å‡†çš„邮件客户端仅有 Mozilla/Thunderbirdã€Sylpheedã€Pegasus å’Œ Mulberry;在 Linux/UNIX å’Œ Mac OS X 多数æµè¡Œé‚®ä»¶å®¢æˆ·ç«¯éƒ½èƒ½æ”¯æŒè¯¥æ ‡å‡†ã€‚如果您ä¸èƒ½ç¡®å®šï¼Œè¯·é€‰æ‹© %S 。 first=第一个 second=第二个 # Strings used in am-enigprefs.js encryptKeyHeader=选择加密用的 OpenPGP 密钥 identityName=标识: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=æ‚¨å·²ç»æ¿€æ´»åŠ å¯†åŠŸèƒ½ï¼Œä½†æ‚¨å¹¶æœªé€‰æ‹©ä»»ä½•å¯†é’¥ã€‚è¦åР坆å‘é€ç»™ %S çš„é‚®ä»¶ï¼Œæ‚¨å¿…é¡»ä»Žæ‚¨çš„å¯†é’¥åˆ—è¡¨ä¸­é€‰æ‹©ä¸€ä¸ªæˆ–å¤šä¸ªæœ‰æ•ˆå¯†é’¥ã€‚æ‚¨å¸Œæœ›å–æ¶ˆå¯¹ %S 的加密么? noKeyToUse=(æ—  - ä¸åР坆) noEmptyRule=规则ä¸èƒ½ä¸ºç©ºï¼è¯·åœ¨è§„则区域输入电å­é‚®ä»¶åœ°å€ã€‚ invalidAddress=您输入的电å­é‚®ä»¶åœ°å€æ— æ•ˆã€‚请ä¸è¦è®¾ç½®æ”¶ä»¶äººå§“å,仅输入电å­é‚®ä»¶åœ°å€å³å¯ã€‚例如:\n正确的: 张三 \n错误的: zhang.san@address.net noCurlyBrackets=å¤§æ‹¬å· {} 有特殊æ„义,ä¸åº”在电å­é‚®ä»¶åœ°ä¹‹ä¸­ä½¿ç”¨ã€‚如果您希望修改本规则的应用æ¡ä»¶ï¼Œè¯·ä½¿ç”¨â€œå¦‚æžœæ”¶ä»¶äººåœ°å€ ...â€é€‰é¡¹ã€‚\n您å¯ä»¥ä½¿ç”¨å¸®åŠ©æŒ‰é’®èŽ·å–æ›´å¤šä¿¡æ¯ã€‚ # Strings used in enigmailRulesEditor.js never=ä»Žä¸ always=总是 possible=å¯èƒ½ deleteRule=确实è¦åˆ é™¤é€‰ä¸­çš„规则? nextRcpt=(下一收件人) negateRule=éž addKeyToRule=添加密钥 %S (%S) 到收件人规则 # Strings used in enigmailSearchKey.js needOnline=您选择的功能ä¸èƒ½åœ¨ç¦»çº¿çжæ€ä¸‹ä½¿ç”¨ã€‚请连线é‡è¯•。 protocolNotSupported=æš‚ä¸æ”¯æŒä½¿ç”¨â€œ%S://â€å议下载 OpenPGP 密钥。 gpgkeysDisabled=å¼€å¯â€œextensions.enigmail.useGpgKeysToolâ€ä¹Ÿè®¸ä¼šæœ‰å¸®åŠ©ã€‚ noKeyserverConn=无法连接密钥æœåС噍 %S。 keyDownloadFailed=从密钥æœåŠ¡å™¨ä¸‹è½½å¯†é’¥å¤±è´¥ã€‚çŠ¶æ€ä¿¡æ¯ä¸º:\n%S internalError=å‘生内部错误。密钥无法被下载或导入。 noKeyFound=éžå¸¸æŠ±æ­‰ï¼Œæ‰¾ä¸åˆ°ä»»ä½•ç¬¦åˆæœç´¢æ¡ä»¶çš„密钥。\n请注æ„,密钥标识应该使用“0xâ€å¼€å¤´(例如 0xABCDEF12)。 # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=从密钥æœåŠ¡å™¨æŸ¥æ‰¾æˆ–ä¸‹è½½å¯†é’¥å¤±è´¥: 无法执行 gpgkeys_%S。 # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=设置密钥信任级别失败 # Strings in enigmailSignKeyDlg.js signKeyFailed=密钥签署失败 alreadySigned.label=注æ„:该密钥 %S å·²ç»ç”¨é€‰å®šçš„密钥签å。 alreadySignedexportable.label=注æ„:密钥 %S å·²ç»ä½¿ç”¨é€‰å®šçš„ç§é’¥ç­¾åå¯è¾“å‡ºã€‚æœ¬åœ°ç­¾åæ²¡æœ‰æ„义。 partlySigned.label=注æ„:密钥 %S 的一些用户IDå·²ç»ä½¿ç”¨é€‰å®šçš„ç§é’¥ç­¾å。 noTrustedOwnKeys=没有找到å¯ç­¾åçš„å¯†é’¥ï¼æ‚¨éœ€è¦è‡³å°‘一个完全å—信任的ç§é’¥ä½œä¸ºç­¾å密钥。 # Strings in enigmailKeyManager.js keyMan.loadingKeys=加载密钥, 请ç¨å€™ ... keyValid.unknown=未知 keyValid.invalid=无效 keyValid.disabled=å·²ç¦ç”¨ keyValid.revoked=已撤销 keyValid.expired=已过期 keyValid.noSubkey=无有效å­å¯†é’¥ keyTrust.untrusted=ä¸ä¿¡ä»» keyTrust.marginal=åŠä¿¡åŠç–‘ keyTrust.full=ä¿¡ä»» keyTrust.ultimate=完全信任 keyTrust.group=(组) keyType.public=公钥 keyType.publicAndSec=公钥/ç§é’¥ keyMan.enableKey=å¯ç”¨å¯†é’¥ keyMan.disableKey=ç¦ç”¨å¯†é’¥ userAtt.photo=用户属性 (JPEG 图åƒ) asciiArmorFile=ASCII æ ¼å¼ä¿å­˜æ–‡ä»¶ (*.asc) importKeyFile=导入 OpenPGP 密钥文件 gnupgFile=GnuPG 文件 saveRevokeCertAs=创建并ä¿å­˜æ’¤é”€è¯ä¹¦ revokeCertOK=撤销è¯ä¹¦åˆ›å»ºæˆåŠŸã€‚å½“æ‚¨ä¸¢å¤±äº†æ‚¨çš„ç§é’¥æ—¶ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨å®ƒå°†æ‚¨å…¬é’¥è®¾ä¸ºæ— æ•ˆã€‚\n\n请将它ä¿å­˜åœ¨ç±»ä¼¼ CD 或 软盘一类的å¯ä»¥ä¸Žè®¡ç®—机分离的安全媒体中。如果有人得到了此è¯ä¹¦ä»–å°†å¯ä»¥åˆ©ç”¨å®ƒä½¿æ‚¨çš„密钥失效。 revokeCertFailed=无法创建撤销è¯ä¹¦ã€‚ addUidOK=添加用户标识æˆåŠŸ addUidFailed=添加用户标识失败 noKeySelected=è¦æ‰§è¡Œâ€œé€‰å–â€ç±»åž‹å¯†é’¥æ“作您必须至少选å–一个密钥 exportToFile=将公有密钥导出到文件 exportKeypairToFile=导出ç§é’¥å’Œå…¬é’¥åˆ°æ–‡ä»¶ exportSecretKey=您希望在ä¿å­˜çš„ OpenPGP 密钥文件中包å«ç§é’¥ä¹ˆï¼Ÿ saveKeysOK=æˆåŠŸä¿å­˜å¯†é’¥ saveKeysFailed=ä¿å­˜å¯†é’¥å¤±è´¥ importKeysFailed=导入密钥失败 enableKeyFailed=å¯ç”¨/ç¦ç”¨å¯†é’¥å¤±è´¥ specificPubKeyFilename=%S (0x%S) 公钥 specificPubSecKeyFilename=%S (0x%S) 公钥+ç§é’¥ defaultPubKeyFilename=已导出的公钥 defaultPubSecKeyFilename=已导出的公钥/ç§é’¥ noSecretKeys=未找到ç§é’¥ã€‚\n\n您希望立å³åˆ›å»ºè‡ªå·±çš„密钥么? sendKeysOk=密钥å‘逿ˆåŠŸ sendKeysFailed=å‘é€å¯†é’¥å¤±è´¥ receiveKeysOk=密钥更新æˆåŠŸ receiveKeysFailed=下载密钥失败 importFromClip=您希望从剪贴æ¿å¯¼å…¥å¯†é’¥ä¹ˆï¼Ÿ importFromUrl=从此网å€ä¸‹è½½å…¬é’¥ï¼š copyToClipbrdFailed=无法将选中的密钥å¤åˆ¶åˆ°å‰ªè´´æ¿ã€‚ copyToClipbrdOK=密钥已被å¤åˆ¶åˆ°å‰ªè´´æ¿ deleteSecretKey=警告: 您正在试图删除ç§é’¥ï¼\n如果您删除了ç§é’¥ï¼Œæ‚¨å°†æ— æ³•解密任何为该密钥加密的邮件。\n\næ‚¨ç¡®å®žè¦æŠŠé€‰ä¸­çš„ç§é’¥å’Œå…¬é’¥â€œéƒ½â€åˆ é™¤ä¹ˆï¼Ÿ deleteMix=警告: 您正在试图删除ç§é’¥ï¼\n如果您删除了ç§é’¥ï¼Œæ‚¨å°†æ— æ³•解密任何为该密钥加密的邮件。\n\næ‚¨ç¡®å®žè¦æŠŠé€‰ä¸­çš„ç§é’¥å’Œå…¬é’¥â€œéƒ½â€åˆ é™¤ä¹ˆï¼Ÿ deletePubKey=您希望删除此公钥\n'%S'? deleteSelectedPubKey=您确实è¦åˆ é™¤æ­¤å…¬é’¥ä¹ˆï¼Ÿ deleteKeyFailed=该密钥ä¸èƒ½åˆ é™¤ã€‚ revokeKeyQuestion=您å³å°†åºŸé™¤å¯†é’¥â€œ%Sâ€ã€‚\n\n您将ä¸èƒ½å†ä½¿ç”¨æ­¤å¯†é’¥ç­¾å,并且一旦分å‘,其他人将ä¸èƒ½å†ä½¿ç”¨è¯¥å¯†é’¥æ¥åŠ å¯†ã€‚æ‚¨ä»ç„¶å¯ä»¥ä½¿ç”¨æ­¤å¯†é’¥è§£å¯†æ—§çš„邮件。\n\n您确定è¦ç»§ç»­å—? revokeKeyOk=è¯¥å¯†é’¥å·²ç»æˆåŠŸæ’¤é”€ã€‚å¦‚æžœæ‚¨æ›¾ç»å°†å¯†é’¥ä¸Šä¼ åˆ°äº†æŸä¸ªå¯†é’¥æœåŠ¡å™¨ï¼Œæ‚¨åº”è¯¥é‡æ–°ä¸Šä¼ ä¸€æ¬¡ï¼Œä»¥ä¾¿å…¶ä»–人能得到您的密钥撤销信æ¯ã€‚ revokeKeyFailed=该密钥ä¸èƒ½æ’¤é”€ã€‚ refreshAllQuestion=您未选择任何密钥。您想更新“所有â€çš„密钥么? refreshKey.warn=警告: æ ¹æ®å¯†é’¥æ•°é‡å’Œè¿žæŽ¥é€Ÿåº¦çš„ä¸åŒï¼Œæ›´æ–°æ‰€æœ‰å¯†é’¥å¯èƒ½è€—费很长时间ï¼\n\n继续? downloadContactsKeys.warn=警告:å–决于è”系人的数é‡å’Œè¿žæŽ¥é€Ÿåº¦ï¼Œä¸‹è½½æ‰€æœ‰å¯†é’¥å¯èƒ½æ˜¯ä¸€ä¸ªç›¸å½“æ¼«é•¿çš„è¿‡ç¨‹ï¼ downloadContactsKeys.importFrom=从通讯录 '%S' 导入è”系人? keyMan.button.exportSecKey=导出ç§é’¥(&E) keyMan.button.exportPubKey=åªå¯¼å‡ºå…¬é’¥(&P) keyMan.button.import=导入(&I) keyMan.button.refreshAll=刷新所有密钥(&R) keyMan.button.revokeKey=废除密钥(&R) keyMan.button.skip=跳过密钥(&S) keylist.noOtherUids=已没有其他身份 keylist.hasOtherUids=也称为 keylist.noPhotos=没有å¯ç”¨çš„照片 keylist.hasPhotos=照片 keyMan.addphoto.filepicker.title=é€‰æ‹©è¦æ·»åŠ çš„ç…§ç‰‡ keyMan.addphoto.warnLargeFile=您已ç»é€‰æ‹©çš„æ–‡ä»¶è¶…过了 25 kB。\nä¸æŽ¨èæ·»åŠ å¾ˆå¤§çš„æ–‡ä»¶ï¼Œå› ä¸ºè¿™ä¼šå¯¼è‡´å¾—åˆ°çš„å¯†é’¥éžå¸¸å¤§ã€‚ keyMan.addphoto.noJpegFile=é€‰æ‹©çš„æ–‡ä»¶ä¸æ˜¯ JPEG 文件。请选择其他文件。 keyMan.addphoto.failed=此照片ä¸èƒ½è¢«æ·»åŠ ã€‚ # Strings in enigmailManageUidDlg.xul changePrimUidFailed=修改主用户标识失败 changePrimUidOK=æˆåŠŸä¿®æ”¹ä¸»ç”¨æˆ·æ ‡è¯† deleteUidFailed=删除用户标识 %S 失败 deleteUidOK=æˆåŠŸåˆ é™¤ç”¨æˆ·æ ‡è¯† %S revokeUidFailed=撤销用户标识 %S 失败 revokeUidOK=æˆåŠŸæ’¤é”€ç”¨æˆ·æ ‡è¯† %S。如果您曾ç»å°†å¯†é’¥ä¸Šä¼ åˆ°äº†æŸä¸ªå¯†é’¥æœåŠ¡å™¨ï¼Œæ‚¨åº”è¯¥é‡æ–°ä¸Šä¼ ä¸€æ¬¡ï¼Œä»¥ä¾¿å…¶ä»–人能得到您的密钥撤销信æ¯ã€‚ revokeUidQuestion=æ‚¨ç¡®å®žè¦æ’¤é”€ç”¨æˆ·æ ‡è¯† %S 么? deleteUidQuestion=您确实è¦åˆ é™¤ç”¨æˆ·æ ‡è¯† %S 么?\n\n请注æ„: 如果您曾ç»å°†æ‚¨çš„公钥上传至æŸä¸ªå¯†é’¥æœåŠ¡å™¨ï¼Œåˆ é™¤å¯†é’¥ä¸­çš„æŸä¸ªç”¨æˆ·æ ‡è¯†ä¸ä¼šæ”¹å˜ä»»ä½•äº‹ã€‚è¿™ç§æƒ…况下您应该使用“撤销用户标识â€åŠŸèƒ½ã€‚ # Strings in enigmailKeyImportInfo.xul importInfoTitle=æˆåŠŸï¼å¯†é’¥å·²å¯¼å…¥ importInfoSuccess=✅ importInfoBits=ä½ importInfoCreated=创建时间 importInfoFpr=指纹 importInfoDetails=(详细信æ¯) importInfoNoKeys=没有导入密钥。 # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=公钥 keyTypePrimary=主密钥 keyTypeSubkey=å­å¯†é’¥ keyTypePair=密钥对 keyExpiryNever=ä»Žä¸ keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyAlgorithm_22=EDDSA keyUsageEncrypt=加密 keyUsageSign=ç­¾å keyUsageCertify=è¯æ˜Ž keyUsageAuthentication=èº«ä»½éªŒè¯ keyDoesNotExpire=密钥ä¸ä¼šè¿‡æœŸ # Strings in enigmailGenCardKey.xul keygen.started=正在生æˆå¯†é’¥ï¼Œè¯·è€å¿ƒç­‰å¾……… keygen.completed=密钥已生æˆã€‚新密钥ID为: 0x%S keygen.keyBackup=密钥已被备份为 %S keygen.passRequired=如果您希望在智能å¡å¤–部为自己的密钥创建备份,请设置一个å£ä»¤ã€‚ # Strings in enigmailSetCardPin.xul cardPin.dontMatch=识别ç è¾“å…¥é”™è¯¯ï¼›è¯·é‡æ–°è¾“å…¥ cardPin.minLength=识别ç è‡³å°‘为 %S 个字符或数字 cardPin.processFailed=æ›´æ¢è¯†åˆ«ç å¤±è´¥ # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=密钥刷新中,请等待 ... keyserverProgress.uploading=密钥上传中,请等待 ... keyserverTitle.refreshing=刷新密钥 keyserverTitle.uploading=上传密钥 # Strings in enigmailSetupWizard passphrase.min8keys=您的å£ä»¤è‡³å°‘è¦åŒ…å«8ä¸ªå­—ç¬¦ï¼ setupWizard.reallyCancel=你真的想退出 Enigmail 安装å‘导? setupWizard.invalidGpg=æ‚¨æŒ‡å®šçš„æ–‡ä»¶ä¸æ˜¯ä¸€ä¸ª GnuPG 程åºã€‚请指定å¦ä¸€ä¸ªæ–‡ä»¶ã€‚ setupWizard.specifyFile=æ‚¨éœ€è¦æŒ‡å®šè‡³å°‘一个公钥文件æ‰èƒ½ç»§ç»­ã€‚ setupWizard.installFailed=看起æ¥å®‰è£…未æˆåŠŸã€‚è¯·é‡è¯•安装,或者手动安装 GnuPG ç„¶åŽä½¿ç”¨â€œæµè§ˆâ€æŒ‰é’®å®šä½ã€‚ setupWizard.downloadForbidden=为了您的安全,我们ä¸ä¼šä¸ºæ‚¨ä¸‹è½½ GnuPG。请访问 http://www.gnupg.org/ 自行下载 GnuPG。 setupWizard.downloadImpossible=æˆ‘ä»¬ç›®å‰æ— æ³•下载 GnuPG。请ç¨åŽå†è¯•,或者访问 http://www.gnupg.org/ 自行下载 GnuPG。 setupWizard.hashSumError=本å‘导未能验è¯å·²ä¸‹è½½æ–‡ä»¶çš„完整性。此文件å¯èƒ½å·²æŸå或者被篡改。您è¦ç»§ç»­å®‰è£…å—? setupWizard.importSettingsFile=指定è¦è½½å…¥çš„备份文件 setupWizard.invalidSettingsFile=æŒ‡å®šæ–‡ä»¶ä¸æ˜¯æ­£ç¡®çš„ Enigmail 设置备份文件。 setupWizard.gpgConfExists=GnuPG é…置文件已ç»å­˜åœ¨ã€‚您是å¦è¦ä½¿ç”¨æ‚¨çš„æ—§å®‰è£…覆盖它。 # Strings in installGnuPG.jsm installGnuPG.downloadFailed=å°è¯•下载 GnuPG æ—¶å‡ºé”™ã€‚è¯·æ£€æŸ¥æŽ§åˆ¶å°æ—¥å¿—获å–进一步细节。 installGnuPG.installFailed=å°è¯•安装 GnuPG æ—¶å‡ºé”™ã€‚è¯·æ£€æŸ¥æŽ§åˆ¶å°æ—¥å¿—获å–进一步细节。 # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=您必须填写一个å称和一个电å­é‚®ä»¶åœ°å€ addUidDlg.nameMinLengthError=åç§°ä¸èƒ½å°‘于5个字符 addUidDlg.invalidEmailError=您必须指定一个有效的电å­é‚®ä»¶åœ°å€ addUidDlg.commentError=注释中ä¸å…è®¸æœ‰æ‹¬å· # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP 智能å¡åªæ”¯æŒ ASCII 字符的å/å称。 # network error types errorType.SecurityCertificate=网络æœåŠ¡å‘ˆé€’çš„å®‰å…¨è¯ä¹¦æ— æ•ˆã€‚ errorType.SecurityProtocol=网络æœåŠ¡ä½¿ç”¨çš„å®‰å…¨å议未知。 errorType.Network=å‘生网络错误。 # filter stuff filter.folderRequired=您必须选择一个目标文件夹。 filter.decryptMove.label=永久解密 (Enigmail) filter.decryptCopy.label=创建解密的副本 (Enigmail) filter.decryptMove.warnExperimental=警告 - “永久解密â€è¿‡æ»¤å™¨å¯èƒ½å¯¼è‡´æ¶ˆæ¯è¢«æ‘§æ¯ã€‚\n\n我们强烈建议您先å°è¯•“创建解密的副本â€è¿‡æ»¤å™¨ï¼Œä»”细测试其结果,åªåœ¨å®Œå…¨ç¡®å®šè¯¥è¿‡æ»¤å™¨çš„结果是您想è¦çš„æ•ˆæžœæ—¶ä½¿ç”¨æ­¤è¿‡æ»¤å™¨ã€‚ # strings in enigmailConvert.jsm converter.decryptBody.failed=未能解密主题为“%Sâ€çš„邮件。\n您想使用å¦ä¸€ä¸ªå£ä»¤é‡è¯•å—,或者您想跳过此邮件å—? converter.decryptAtt.failed=未能解密附件“%1$Sâ€ï¼Œé‚®ä»¶ä¸»é¢˜ä¸ºâ€œ%2$Sâ€ã€‚\n您想使用å¦ä¸€ä¸ªå£ä»¤é‡è¯•å—,或者您想跳过此邮件å—? saveLogFile.title=ä¿å­˜æ—¥å¿—文件 # strings in gpg.jsm unknownSigningAlg=未知签å算法 (ID: %S) unknownHashAlg=未知加密算法 (ID: %S) # strings in keyRing.jsm keyring.photo=照片 keyRing.pubKeyRevoked=密钥 %1$S (密钥 ID %2$S) 已废除。 keyRing.pubKeyExpired=密钥 %1$S (密钥 ID %2$S) 已过期。 keyRing.pubKeyNotForSigning=密钥 %1$S (密钥 ID %2$S) 无法用作签å。 keyRing.pubKeyNotForEncryption=密钥 %1$S (密钥 ID %2$S) 无法用作加密。 keyRing.keyDisabled=密钥 %1$S (密钥 ID %2$S) å·²ç¦ç”¨ï¼Œä¸èƒ½ä½¿ç”¨å®ƒã€‚ keyRing.keyNotTrusted=密钥 %1$S (密钥 ID %2$S) ä¸è¶³å¤Ÿå¯ä¿¡ã€‚请设置您的密钥的信任级别至“终æžâ€ä»¥ä½¿ç”¨å®ƒè¿›è¡Œç­¾å。 keyRing.keyInvalid=密钥 %1$S (密钥 ID %2$S) 无效(例如,它没有自签å)。 keyRing.signSubKeysRevoked=密钥 %1$S (密钥 ID %2$S) 的所有签åå­å¯†é’¥å‡å·²åºŸé™¤ã€‚ keyRing.signSubKeysExpired=密钥 %1$S (密钥 ID %2$S) 的所有签åå­å¯†é’¥å‡å·²è¿‡æœŸã€‚ keyRing.signSubKeysUnusable=密钥 %1$S (密钥 ID %2$S) 的所有签åå­å¯†é’¥å‡å·²åºŸé™¤ã€è¿‡æœŸæˆ–者无法使用。 keyRing.encSubKeysRevoked=密钥 %1$S (密钥 ID %2$S) 的所有加密å­å¯†é’¥å‡å·²åºŸé™¤ã€‚ keyRing.encSubKeysExpired=密钥 %1$S (密钥 ID %2$S) 的所有加密å­å¯†é’¥å‡å·²è¿‡æœŸã€‚ keyRing.noSecretKey=您的钥匙链似乎没有 %1$S (密钥 ID %2$S) çš„ç§é’¥ï¼Œæ‚¨ä¸èƒ½ä½¿ç”¨è¯¥å¯†é’¥è¿›è¡Œç­¾å。 keyRing.encSubKeysUnusable=密钥 %1$S (密钥 ID %2$S) 的所有加密å­å¯†é’¥å‡å·²åºŸé™¤ã€è¿‡æœŸæˆ–者无法使用。 #strings in exportSettingsWizard.js cannotWriteToFile=无法ä¿å­˜åˆ°æ–‡ä»¶â€œ%Sâ€ã€‚请指定其他文件å。 dataExportError=å¯¼å‡ºæ‚¨çš„æ•°æ®æ—¶å‘生错误。 enigmailSettings=Enigmail设置 defaultBackupFileName=Enigmail导出结果 specifyExportFile=指定导出文件å enigmail/lang/zh-CN/enigmail.properties.big5000066400000000000000000000146541266701624400212550ustar00rootroot00000000000000Enigmail=Enigmail # Strings used within enigmailCommon.js enigAlert=Enigmail ֪ͨ enigConfirm=Enigmail È·ÈÏ enigError=Enigmail ´íÎó enigPrompt=Enigmail Ìáʾ dlgYes=È·¶¨ dlgNo=·ñ dlgNever=Ï´β»ÐëÔÙÎÊÎÒ specifyEmail=ÇëÖ¸¶¨ÄúµÄÖ÷ÒªÓÊÖ·ÒÔÓÃì¶Ç©Ö¤¼Ä³öÓʼþʱʹÓá£\n Èç¹ûÄúÒªÓ᰼ijö¡±µÄÓÊÖ·×÷Ϊǩ֤Çë°Ñ´ËÀ¸Öÿա£\n\n×¢Ò⣺Enigmail 0.60 ÒÔÉÏÒÑ°Ñ default signing key Õ⺬ºýµÄÑ¡ÏîÈ¥³ý. usingFrom=¡°¼Ä³ö¡±ÓÊÖ·½«»áÓÃì¶Ç©Ö¤¼Ä³öµÄÓʼþ usingId=ʹÓÃÕß %S ½«»áÓÃì¶Ç©Ö¤¼Ä³öµÄÓʼþ configNow=ÄúҪΪ enigmail %S ½øÐÐÉ趨Â𣿠configEnigmail=É趨 Enigmail£¿ turnOffFlowed=Mozilla ÖÐµÄ Allow flowed text (RFC 2646) ÊÇÔ¤ÖÃÑ¡Ïî¡£\nµ«È´»áÔÚ½øÐÐÉú´¿ÎÄ×ÖµÄÓʼþ½øÐÐÇ©ÃûÈÏ֤ʱ·¢ÉúÎÊÌâ¡£\nËùÒÔÎÒÃǽ¨Òé°Ñ´Ë׫Ïî¹ØÉÏ¡£\n\nÄúÒª Enigmail ΪÄúÖ´Ðйرա¡Allow flowed text (RFC 2646) Õâ¸öÑ¡ÏîÂð? repeatPrefix=\n\n´ËÌáʾ½«»áÔÙ³öÏÖ%S repeatSuffixSingular=´Î¡£ repeatSuffixPlural=´Î¡£ noRepeat=\n\n´ËÌáʾ½«²»»áÔÙ³öÏÖÖµ½ÄãÏ´θüРEnigmail¡£ noLogDir=ÇëΪ½ø½×Æ«ºÃÉ趨ÖеÄÈÕ־·¾¶½øÐÐÉ趨ÒÔ±ãÐÂÔöÈÕÖ¾µµ noLogFile=ÈÕÖ¾µµ°¸²»´æÔÚ£¡ restartForLog=ÇëÖØÐÂÆô¶¯ Mozilla ÒÔ±ãÐÂÔöÈÕÖ¾µµ # Strings in enigmailAbout.js usingVersion=Enigmail %S ÔÚÖ´ÐÐÖÐ versionWarning=¾¯¸æ£ºEnigMime °æ±¾ %S ²»Ð­µ÷ enigmimeWarning=¾¯¸æ£º EnigMime Ä£×é²»´æÔÚ usingAgent=ʹÓà %S Ö´Ðеµ %S ÒÔ¼ÓÃÜ»ò½âÃÜ agentError=´íÎ󣺲»ÄÜ´æÈ¡ enigmail ʧ°Ü£¡ # Strings in enigmailKeygen.js accessError=´æÈ¡ enigmail ʧ°Ü onlyGPG=²úÉúеÄÔ¿³×Ö»ÄÜÔÚGPGÖÐʹÓã¨PGP ½«²»ÄÜʹÓã©£¡ genComplete=²úÉúеÄÔ¿³×Íê³É£¡\nʹÓÃÕßÔ¿³× <%S> ½«»áÔÚδÀ´ÓÃì¶¼ÓÃÜ»òǩ֤ genCompleteNoSign=²úÉúеÄÔ¿³×Íê³É£¡ genGoing=²úÉúеÄÔ¿³×ÕýÔÚ½øÐÐÖУ¡ passNoMatch=ÊäÈëµÄÃÜÂë²»Ïàͬ£¬ÇëÖØÊäÈë passCheckBox=²»ÓÃÃÜÂëÇëÑ¡Ôñ´ËÏî passUserName=´ËÈÏÖ¤µÄʹÓÃÕßÃû³ÆÎª keyConfirm=ҪΪ'%S'²úÉúµÄ¹«¿ªºÍÒþÃܵÄÔ¿³×Â𣿠keyAbort=ÖÐÖ¹Ô¿³×²úÉúÂ𣿠# Strings in enigmailMessengerOverlay.js securityInfo=OpenPGP °²È«×ÊѶ\n\n enigHeader=Enigmail: enigNote=Note from Enigmail: Attachments to this message have not been signed or encrypted. enigContentNote=Enigmail: *Attachments to this message have not been signed or encrypted*\r\n\r\n # Make Comment due to this translation will not display right. # enigNote=Enigmail:´ËÓʼþÖеĸ½¼þ²¢Ã»Óо­¹ý¼ÓÃÜ»òǩ֤¡£ # enigContentNote=Enigmail: *´ËÓʼþÖеĸ½¼þ²¢Ã»Óо­¹ý¼ÓÃÜ»òǩ֤*\r\n\r\n noDecrypted=ûÓпɽâÂëµÄÐÅÏ¢¿ÉÒÔ´¢´æ£¡\nÇëÔÚµµ°¸Ä¿Â¼Ñ¡Óô¢´æ noMessage=ûÓÐÐÅÏ¢¿ÉÒÔ´¢´æ£¡ useButton=ÇëÔÚĿ¼ÖÐÑ¡Ôñ½âÂëÓëÇ©ÃûÈÏÖ¤ÒÔ½âÂë saveHeader=Enigmail£º´¢´æ½âÂëááµÄÐÅÏ¢ # Strings in enigmailMsgComposeOverlay.js keysToExport=»ã³öʹÓÃÕߵĹ«¿ªÔ¿³×µÄÓÊÖ· exportPrompt=Enigmail Ô¿³×»ã³ö pubKey=%SʹÓÃÕß¹«¿ªÔ¿³×\n windowLocked=±àдÓʼþÒѱ»Ïú¶¨£¬¼Ä³ö±»È¡Ïû sendUnencrypted=EnigmailÆô¶¯Ê§³£¡£\n¼Ä³öδ¼ÓÃܵÄÓʼþÂ𣿠composeSpecifyEmail=ÇëÖ¸¶¨ÄúµÄÖ÷ÒªÓÊÖ·ÒÔÓÃì¶Ç©Ö¤¼Ä³öÓʼþʱʹÓá£\n Èç¹ûÄúÒªÓ᰼ijö¡±µÄÓÊÖ·×÷Ϊǩ֤Çë°Ñ´ËÀ¸Öÿա£ sendingBCC=´ËÓʼþÓÐÒþÃÜÊÕÐÅÕßBCC¡£Èç¹û¼ÓÃÜ´ËÓʼþËùÓеÄÊÕÐÅÕß¶¼¿ÉÒÔͨ¹ý¼ì²ì¼ÓÃÜÔ¿³×Ãûµ¥µÃ֪˭ÊÇÒþÃÜÊÕÐÅÕßÖÂʹÒþÃܱ£°²Ê§Ð§¡£\n\n°´È·¶¨ÒԼ̼¨¼ÓÃÜ»òÈ¡ÏûÖÐÖ¹¼Ä³ö¡£ sendingNews=¼ÓÃܼijöÖÐÖ¹.\n\nÓÉì¶ÓÐÐÂÎÅ×éµÄ´æÔÚ´ËÓʼþ²»ÄܼÓÃÜ¡£ÇëÓò»¼ÓÃܵķ½·¨ÖØÐ¼ijö¡£ sendingPGPMIME=ÓʼþÖеĸ½¼þÒ²»áÒ»ÆðµÄ±»¼ÓÃÜ»òǩ֤£¬Ö»ÓÐÄÜÖ§Ô®PGP/MIME¸ñʽµÄµçÓʳÌʽ¿ÉÒÔ¶ÁÈ¡´ËÀàÓʼþ¡£ÒÑÖªµÄÖ§Ô®µçÓʳÌʽÓÐ Enigmail, Evolution, and Mutt¡£\n °´È·¶¨ÒԼ̼¨Ê¹ÓÃPGP/MIME¸ñʽ»òÈ¡ÏûʹÓÃǶÈë¸ñʽ¼Ä³ö¡£ noPGPMIME=PGP/MIME²»´æÔÚ£¡\n ÓÃǶÈë¸ñʽ¼ÓÃÜ»òǩ֤£¿ hasHTML=HTML Óʼþ¾¯¸æ£º\n´ËÓʼþ´øÓÐHTML¸ñʽÕâ¿ÉÄÜ»áʹµ½¼ÓÃÜ»òǩ֤ʧ°Ü¡£ÎªÁ˱ÜÃâ´ËÀàÎÊÌâµÄ·¢ÉúÄú¿ÉÒÔÔڼijö»ò»Ø¸²Óʼþʱ°´ÏÂSHIFT¼üÒԼijöǩ֤µÄÓʼþ¡£\nÈç¹ûÄúÊÇÔ¤ÖüÓÃÜ»òǩ֤¼Ä³öÓʼþÄúÓ¦¸ÃÔÚÈ¡ÏûÑ¡Ôñ±àдHTML¸ñʽÓʼþÑ¡ÏîÒÔÈ¡ÏûHTML¸ñʽµÄÓʼþ¡£ strippingHTML="ÓʼþÖк¬ÓеĸñʽHTML½«»áÔÚת»»³É´¿ÎÄ×Ö¸ñʽ¼ÓÃÜ»òǩ֤ʱʧЧ¡£ÄúÒª¼Ì¼¨Â𣿠sendAborted=¼Ä³öÖÐÖ¹¡£\n\n statPGPMIME=PGP/MIME statSigned=ÒÑǩ֤ statEncrypted=ÒѼÓÃÜ statPlain=´¿ÎÄ×Ö offlineSave=´¢´æ %S Óʼþ %S µ½Î´¼Ä³öµÄÓʼþÂ𣿠onlineSend=¼Ä³ö %S Óʼþµ½ %SÂ𣿠offlineNote=ÄãÏÖÔÚÕýʹÓÃÀëÏßģʽ¡£Òª´¢´æ´ËÓʼþµ½Î´¼Ä³öµÄÓʼþÂ𣿠signFailed=Enigmail·¢Éú´íÎ󣬼ÓÃÜ»òǩ֤ʧ°ÜÒª¼Ä³öδ¼ÓÃܵÄÓʼþÂ𣿠# Strings in enigmailMsgHdrViewOverlay.js keyNeeded=ÐèÒª¹«¿ªÔ¿³×±àºÅ %S ÒÔ×÷Ç©ÃûÈÏÖ¤ clickDecrypt=£»°´Ï¡¸½âÃÜ¡¹¼ü clickDecryptRetry=£»°´Ï¡¸½âÃÜ¡¹¼üÖØÊÔ clickPen=£»°´Ï±Êͼ£¿ clickPenDetails=£»°´Ï¶ϱÊͼȡµÃÏêϸµÄ×ÊÁÏ£¿ clickQueryPenDetails=£»°´Ï±ÊͼȡµÃÏêϸµÄ×ÊÁÏ£¿ clickKey=£»°´Ï¶ÏÔ¿³×ͼ£¿ clickKeyDetails=£»°´Ï¶ÏÔ¿³×ͼȡµÃÏêϸµÄ×ÊÁÏ£¿ reloadImapMessage=ÖØÐÂÔØÈëÍêÕûµÄIMAPÓʼþÒÔ½øÐнâÂëÓëÇ©ÃûÈÏÖ¤£¿ reloadImapError=´íÎó£­IMAPÓʼþ¹ý´óÎÞ·¨½øÐнâÂëÓëÇ©ÃûÈÏÖ¤ unverifiedSig=δÈÏÖ¤µÄÇ©Ãû incompleteDecrypt=½âÃܲ»ÍêÕû failedSig=´íÎó£­Ç©ÃûÈÏ֤ʧ°Ü needKey=´íÎó£­ÐèÒªÒþÃܵÄÔ¿³×ÒÔ½øÐÐÓʼþ½âÂë failedDecrypt=´íÎó£­½âÂëʧ°Ü badPhrase=´íÎó£­ÃÜÂë´íÎó failedDecryptVerify=´íÎó£­½âÂëÓëÇ©ÃûÈÏ֤ʧ°Ü viewInfo=; View > Message security info for details decryptedMsg=ÒѽâÂë Óʼþ # Strings in enigmailNavigatorOverlay.js navEncryptError=¼ÓÃÜ»òǩ֤ʱʧ°Ü¡£\n navDecryptError=½âÂëʱʧ°Ü¡£\n # Strings in pref-enigmail-adv.js testNoSvc=EnigTest£ºEnigmail ´æÈ¡Ê§°Ü testNoEmail=EnigTest£ºÇëÊäÈëÓÊÖ·ÒÔ±ã²âÊÔ # Strings in pref-enigmail.js uninstallConfirm=ÄúÕæµÄҪɾ³ýËùÓÐÔÚMozilla component ºÍ chrome Ŀ¼ÄÚÓë EnigMail Óйصĵµ°¸Â𣿠uninstallFailOverlay=ÓÉ춸²¸ÇµÄRDFÒÆ³ý EnigMail ʧ°Ü£»²»É¾³ý chrome jar µµ°¸ uninstallFailDelete=ɾ³ýµµ°¸Ê±·¢ÉúÎÊÌâ uninstallFail=ÒÆ³ý EnigMail ʧ°Ü uninstallSuccess=EnigMail Òѱ»ÒƳý # Strings used in components/enigmail.js # (said file also re-uses some strings given above) enterPass=ÇëÊäÈëÄú %S µÄÃÜÂë rememberPass=¼ÇÒä %S ·ÖÖÓ notInit=´íÎó£­Enigmail »¹Î´³õʼ»¯ badCommand=´íÎó£­¼Ó½âÖ¸Áîʧ°Ü cmdLine=Ö¸ÁîģʽºÍÊä³ö£º notRequired=´íÎó£­²»Ðë¼ÓÃÜ notComplete=´íÎó£­²úÉúÔ¿³×δÍê³É invalidEmail=´íÎó£­²»ÕýÈ·µÄÓÊÖ· noPassphrase=´íÎó£­ÎÞÃÜÂëÌṩ noPGPblock=´íÎó£­Ã»ÓÐÎÄ×ÖʽµÄ PGP ×ÊÁÏ decryptToImport=°´Ï½âÂëÒÔ»ãÈëÓʼþÄڵĹ«¿ªÔ¿³× extraText=¸½¼ÓÎÄ×ÖÖк¬Óиü¶àµÄ PGP ×ÊÁÏ¡£°´Ï½âÃܼü toVerify=ÒÔÇ©ÃûÈÏÖ¤¡£ sigMismatch=´íÎó£­Ç©ÃûÈÏ֤ʧÅä cantImport=»ãÈ빫¿ªÔ¿³×ʧ°Ü\n\n prefUntrusted=²»±»ÐÅÈ뵀 prefRevoked=ÒѷϳýµÄ prefExpiredKey=ÓâÆÚµÄÔ¿³× prefExpired=ÓâÆÚµÄ prefGood=³É¹¦ÈÏÖ¤%SµÄÇ©Ãû prefBad=ʧ°ÜÈÏÖ¤%SµÄÇ©Ãû failFingerprint=´íÎó£­²ÉÖ¸ÎÆÖ¸Áîʧ°Ü failMultiple=´íÎó£­%SÓжà¸ö¹«¿ªÔ¿³× failNoKey=´íÎó£­ÕÒ²»µ½µÄ%S¹«¿ªÔ¿³× failOnlyGPG=´íÎó£­Ö»ÓÐGPGÔ¿³×¿ÉÒÔ´ÓÔ¿³×ËÅ·þÆ÷ÖÐÈ¡µÃ failCancel=´íÎó£­´ÓÔ¿³×ËÅ·þÆ÷ÖÐÈ¡µÃÔ¿³×±»Ê¹ÓÃÕßÈ¡Ïû failNoServer=´íÎó£­Ã»ÓÐÖ¸¶¨µÄÔ¿³×ËÅ·þÆ÷ÒÔÈ¡µÃÔ¿³× failNoID=´íÎó£­Ã»ÓÐÖ¸¶¨µÄÔ¿³×±àºÅ failKeyExtract=´íÎó£­Ô¿³×È¡µÃÖ¸Áîʧ°Ü notFirstBlock=´íÎó£­µÚÒ» PGP×ÊÁϷǹ«¿ªÔ¿³××ÊÁÏ importKeyConfirm=ÔÚµÄǶÈëµÄÓʼþÖлãÈ빫¿ªÔ¿³× importKey=´Ó»ãÈëÔ¿³×ËÅ·þÆ÷¹«¿ªÔ¿³×±àºÅ%S enigmail/lang/zh-CN/help/000077500000000000000000000000001266701624400154435ustar00rootroot00000000000000enigmail/lang/zh-CN/help/compose.html000066400000000000000000000070431266701624400200020ustar00rootroot00000000000000 Enigmail 帮助: 撰写邮件

Enigmail 帮助

在撰写邮件时使用 Enigmail

  • 邮件/撰写窗å£ä¸­çš„ Enigmail èœå•
    • æ•°å­—ç­¾å邮件: å¯ç”¨/ç¦ç”¨å‘逿•°å­—ç­¾å邮件。数字签å失败时用户将收到æç¤ºã€‚
    • 加密邮件: 在邮件å‘出之å‰å¯ç”¨/ç¦ç”¨é’ˆå¯¹æ‰€æœ‰æ”¶ä»¶äººçš„邮件加密。加密失败时用户将收到æç¤ºã€‚

      如果您在 选项 -> 密钥选择 标签中设置了 在需è¦çš„æ—¶å€™æç¤ºé€‰å–密钥 , 当无法找到您的邮件收件人中æŸä¸ªæ”¶ä»¶äººåœ°å€å¯¹åº”的公用密钥时将会弹出一个密钥列表。

      如果您在 选项 -> 密钥选择 标签中设置了 ä¸è¦æç¤ºé€‰å–密钥 , 当无法找到您的邮件收件人中æŸä¸ªæ”¶ä»¶äººåœ°å€å¯¹åº”的公用密钥时, å°†ä¸åР坆å‘é€é‚®ä»¶ã€‚

    • 在本邮件中使用 PGP/MIME: å¯ç”¨/ç¦æ­¢åœ¨å½“å‰é‚®ä»¶ä¸­ä½¿ç”¨ PGP/MIME。

      å¦‚æžœæ‚¨ç¡®è®¤æ‚¨çš„æ”¶ä»¶äººèƒ½å¤Ÿå¤„ç† PGP/MIME æ ¼å¼çš„邮件, 您应该使用它。

      è¦ä½¿ç”¨æœ¬åŠŸèƒ½, 您必须设置 选项 -> PGP/MIME 标签中的 å…许使用 PGP/MIME 或 总是使用 PGP/MIME。

    • 默认撰写选项: å­èœå•。
      • æ•°å­—ç­¾å/加密选项...: 访问 叿ˆ·è®¾ç½® -> OpenPGP é€‰é¡¹çš„å¿«æ·æ–¹å¼
      • å‘é€é€‰é¡¹...: 访问 选项 -> å‘é€ æ ‡ç­¾çš„å¿«æ·æ–¹å¼ã€‚
      • 密钥选择选项...: 访问 选项 -> 密钥选择 æ ‡ç­¾çš„å¿«æ·æ–¹å¼ã€‚
      • PGP/MIME 选项...: 访问 选项 -> PGP/MIME æ ‡ç­¾çš„å¿«æ·æ–¹å¼ã€‚
    • å–æ¶ˆåР坆: Enigmail ä¸ä¼šæŽ¢æµ‹åˆ°å‘é€é‚®ä»¶è¿‡ç¨‹ä¸­çš„错误,例如 POP 未接å—请求,当因出现此类情况导致å‘é€é‚®ä»¶å¤±è´¥æ—¶ï¼Œæ¯«æ— æ„义的已加密信件将会显示在邮件撰写窗å£ä¸­ã€‚通过选择此èœå•您å¯ä»¥å–消加密/æ•°å­—ç­¾åï¼Œå°†é‚®ä»¶æ’°å†™çª—å£æ¢å¤æˆåŽŸå§‹æ–‡æœ¬ã€‚
      作为一个临时的解决方案,该选项也å¯ç”¨äºŽåœ¨å›žå¤æŸåŠ å¯†é‚®ä»¶æ—¶è§£å¯†è¢«å¼•ç”¨çš„æ–‡æœ¬ã€‚Enigmail 应该å¯ä»¥è‡ªåŠ¨è§£å¯†è¢«å¼•ç”¨çš„é‚®ä»¶ï¼Œä½†æ˜¯å¦‚æžœå®ƒæ²¡èƒ½è‡ªåŠ¨è§£å¯†ï¼Œæ‚¨å¯ä»¥ä½¿ç”¨æ­¤èœå•强制其执行解密动作。
    • æ’入公用密钥: 在邮件撰写窗å£çš„当å‰å…‰æ ‡ä½ç½®æ’å…¥ ASCII-armored æ ¼å¼çš„公用密钥段。它还将æç¤ºæ‚¨è¾“å…¥è¦æ’入的密钥对应的邮件地å€ã€‚ä»¥è¿™ç§æ–¹å¼æ’入的密钥å¯ä»¥è¢«æŽ¥å—方的 Enigmail 自动识别。æ’入密钥之åŽï¼Œæ‚¨ä»å¯ä»¥æ ¹æ®éœ€è¦é€‰æ‹©å¯¹é‚®ä»¶è¿›è¡Œæ•°å­—ç­¾å/加密。除此之外,请ä¸è¦åœ¨é‚®ä»¶ä¸­æ’入多个密钥段; è¿™ç§æƒ…况下åªè¦åœ¨æŽ¥æ”¶åˆ°æç¤ºçš„æ—¶å€™æŒ‡å®šå¤šä¸ªç”¨é€—å·æˆ–者空格分隔的邮件地å€å³å¯ã€‚
    • 清除缓存的å£ä»¤: 清除缓存的å£ä»¤ã€‚å¦‚æžœæ‚¨åŒæ—¶ä½¿ç”¨å¤šä¸ªå£ä»¤è¿™ä¸ªåŠŸèƒ½å°†ä¼šå¾ˆæœ‰ç”¨ã€‚
    • 帮助: 从网站获å–å¸®åŠ©ä¿¡æ¯ (本页)。

您å¯ä»¥ä»Ž Enigmail 帮助网页获得更多的帮助

enigmail/lang/zh-CN/help/editRcptRule.html000066400000000000000000000121251266701624400207400ustar00rootroot00000000000000 Enigmail 帮助: 编辑 OpenPGP 规则

Enigmail 帮助

使用 Enigmail 规则编辑器: 编辑 OpenPGP 规则

在规则编辑器中,您å¯ä»¥ä¸ºæ¯ä¸ªæ”¶ä»¶äººå•独指定 加密,数字签åå’Œ PGP/MIME,并定义è¦ä½¿ç”¨çš„ OpenPGP 密钥。通过这个 å¯¹è¯æ¡†ï¼Œæ‚¨å¯ä»¥ä¸ºå•个收件人定义规则,也å¯ä»¥ä¸ºå…·æœ‰ç›¸ä¼¼å±žæ€§çš„一组 收件人定义规则。

  • 为如下收件人设置 OpenPGP 规则: åŒ…å«æ”¶ä»¶äººçš„电å­é‚®ä»¶åœ°å€ (ä¸åŒ…å«å§“å,例如: 类似 somebody@email.domain 的电å­é‚®ä»¶åœ°å€)。您å¯ä»¥ä½¿ç”¨ç©ºæ ¼åˆ†éš”多个ä¸åŒçš„电å­é‚®ä»¶åœ°å€ã€‚ 电å­é‚®ä»¶åœ°å€ä»…包å«åŸŸå部分则å¯ä»¥åŒ¹é…å‘往该域的任何邮件, 例如: @email.domain å°†åŒ¹é… body@email.domain〠somebody@email.domainã€anybody@email.domain 等等。
  • å¦‚æžœæ”¶ä»¶äººåœ°å€ ...: 此项修改邮件地å€çš„匹é…规则。 如果输入了多个地å€ï¼Œè¯¥è®¾ç½®å°†åº”用于所有地å€ã€‚ 下é¢çš„示例å‡å®šåœ¨ä¸Šé¢çš„ OpenPGP 规则 æ ä¸­è¾“入了 body@email.domain。
    • 与上述æŸé‚®ä»¶åœ°å€å®Œå…¨ç›¸åŒ: ä½¿ç”¨æ­¤è®¾ç½®ï¼Œåªæœ‰é‚®ä»¶åœ°å€ä¸Ž body@email.domain å®Œå…¨ç›¸åŒæ‰ä¼šè§¦å‘规则(完全相åŒï¼Œå¤§å°å†™æ•感匹é…)。
    • 包å«ä¸Šè¿°é‚®ä»¶åœ°å€ä¸­çš„字符: 使用此设置,任何包å«ä¸Šè¿°å­—符的邮件地å€éƒ½å°†è¢« 匹é…到, 例如: anybody@email.domain 或 body@email.domain.net
    • 以上述æŸé‚®ä»¶åœ°å€å¼€å¤´: 使用此设置,任何以上述字符开头的邮件地å€éƒ½å°†è¢« 匹é…到,例如: body@email.domain.net〠body@email.domain-name.com。
    • 以上述æŸé‚®ä»¶åœ°å€ç»“å°¾: 使用此设置,任何以上述字符结尾的邮件地å€éƒ½å°†è¢« 匹é…到,例如: anybody@email.domain〠somebody@email.domain。
  • 如果邮件地å€ç¬¦åˆæ¡ä»¶åˆ™æµ‹è¯•下一æ¡è§„则
    通过å¯ç”¨æ­¤åŠŸèƒ½ï¼Œæ‚¨å°†å¯ä»¥ä¸å¿…为æŸä¸ªé‚®ä»¶åœ°å€åœ¨ 使用下列 OpenPGP 密钥进行加密或数字签å: æ ä¸­æŒ‡å®š 密钥,直到å‘é€çš„æ—¶å€™å†ä¸ºå‘往该地å€çš„邮件选择一个è¦ä½¿ç”¨çš„密钥。 此外,匹é…这些邮件地å€çš„åŽç»­è§„则还会相继处ç†ã€‚
  • 如果邮件地å€ç¬¦åˆæ¡ä»¶åˆ™ä¸å†æµ‹è¯•åŽç»­è§„则
    å¯ç”¨æ­¤åŠŸèƒ½å°†ä¼šåœæ­¢å¤„ç†ä»»ä½•匹é…这些邮件地å€çš„åŽç»­è§„则; 例如: 如果邮件地å€ç¬¦åˆ æ¡ä»¶åˆ™æµ‹è¯•下一æ¡è§„则。
  • 使用下列 OpenPGP 密钥进行加密或数字签å:
    通过 选择密钥(S)... 按钮选择加密用的收件人密钥。 与上é¢çš„动作相åŒï¼Œæ­¤é¡¹è§„则匹é…åŽå°†ä¸å†å¤„ç†èƒ½å¤ŸåŒ¹é…çš„åŽç»­è§„则。
  • æ•°å­—ç­¾å: å¯ç”¨æˆ–ç¦ç”¨ 电å­é‚®ä»¶æ•°å­—ç­¾å。此选项将使用或者å–代您在邮件撰写窗å£é€‰æ‹©çš„设置。 其值为:
    • 从ä¸: ç¦ç”¨æ•°å­—ç­¾å,å³ä¾¿å·²ç»åœ¨é‚®ä»¶æ’°å†™çª—å£åšå‡ºé€‰æ‹© (å–代其他值)
    • 在撰写邮件时选择: 使用在邮件撰写窗å£ä¸­é€‰æ‹©çš„设置
    • 总是: å¯ç”¨æ•°å­—ç­¾å,å³ä¾¿æ‚¨åœ¨é‚®ä»¶æ’°å†™çª—å£ å¹¶æœª å¯ç”¨æ•°å­—ç­¾å
这些数字签å设置将应用于所有匹é…的规则。如果有任æ„ä¸€æ¡ è§„åˆ™ç¦ç”¨äº†æ•°å­—ç­¾å,ä¸ç®¡å…¶ä»–è§„åˆ™æ˜¯å¦æŒ‡å®šäº†æ€»æ˜¯è¿›è¡Œæ•°å­—ç­¾å,该邮件都ä¸ä¼šè¢«æ•°å­—ç­¾å.
  • 加密: å¯ç”¨æˆ–ç¦ç”¨ 邮件加密。å¯é€‰çš„设置åŠå…¶å«ä¹‰åŒæ•°å­—ç­¾å.
  • PGP/MIME: å¯ç”¨æˆ–ç¦ç”¨ PGP/MIME (RFC 3156) 邮件编ç ã€‚ 如果ç¦ç”¨äº† PGP/MIME,信件将使用 "åµŒå…¥å¼ PGP" ç¼–ç ã€‚å¯é€‰çš„设置åŠå…¶å«ä¹‰åŒæ•°å­—ç­¾å。

所有的规则将会按照 OpenPGP 规则编辑器 列表中的顺åºé€ä¸ªå¤„ç†ã€‚å½“ä»»ä¸€åŒ…å« OpenPGP 密钥标识的规则æˆåŠŸåŒ¹é…一个收件人,我们除了为这个收件人使用规则中包å«çš„密钥之外,还将在åŽç»­çš„规则 测试中忽略该收件人。


您å¯ä»¥ä»Ž Enigmail æ¯æ”¶ä»¶äººè®¾ç½®å¸®åЩ页 获得更多帮助

enigmail/lang/zh-CN/help/initError.html000066400000000000000000000045361266701624400203160ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/zh-CN/help/messenger.html000066400000000000000000000074601266701624400203300ustar00rootroot00000000000000 Enigmail 帮助: 阅读邮件

Enigmail 帮助

在阅读邮件的时候使用 Enigmail

  • 主邮件窗å£ä¸­çš„解密按钮
    这个按钮有多ç§ç”¨é€”: 解密ã€éªŒè¯æˆ–导入 公用密钥。一般情况下 解密/éªŒè¯ åŠ¨ä½œåº”è¯¥è‡ªåŠ¨æ‰§è¡Œ(å¯ä»¥ä»Žå±žæ€§è®¾ç½®é‡Œç¦ç”¨è‡ªåŠ¨è§£å¯†/验è¯)。 当å‘生错误时 Enigmail 状æ€è¡Œä¼šæ˜¾ç¤ºä¸€ä¸ªç®€çŸ­çš„错误信æ¯ã€‚这时如果您点击 解密按钮,您将会看到错误的详细信æ¯ï¼Œä»¥åŠ GnuPG 命令的输出信æ¯ã€‚
  • 邮件头显示区域中的钢笔图标和钥匙图标
    这些在邮件头显示区域中显示的 钢笔 å’Œ 钥匙 图标å¯ä»¥æŒ‡ç¤ºæ‚¨æ­£åœ¨é˜…读的邮件 是å¦ç»è¿‡æ•°å­—ç­¾åæˆ–加密以åŠè¿™ä¸ªæ•°å­—ç­¾åæ˜¯å¦å®Œå¥½ï¼Œä¾‹å¦‚: 该邮件在数字签å之åŽä¸ºè¢«ç¯¡æ”¹ã€‚如果邮件 å·²ç»è¢«ç¯¡æ”¹ï¼Œé‚£ä¸ª 钢笔 å›¾æ ‡å°†ä¼šå˜æˆä¸€ä¸ª 折断的钢笔 æ¥æŒ‡ç¤ºæ•°å­—ç­¾åå·²ç» é­åˆ°ç ´å。在钢笔或者钥匙图标上é¢ç‚¹å‡»å³é”®å°†ä¼šå‡ºçŽ°å¸¦æœ‰å¦‚ä¸‹é€‰é¡¹çš„èœå•:
    • OpenPGP 安全信æ¯: å…许您查看该邮件的 GnuPG 命令输出的状æ€ä¿¡æ¯ã€‚
    • å¤åˆ¶ OpenPGP 安全信æ¯: å°† GnuPG 输出的状æ€ä¿¡æ¯å¤åˆ¶åˆ°å‰ªè´´æ¿ï¼›ä»¥ä¾¿ç²˜è´´åˆ° 回å¤é‚®ä»¶ä¸­ï¼Œç­‰ç­‰ã€‚
    • 查看 OpenPGP 相片: 如果å‘件人在他的公用密钥中嵌入了相片,这个 选项将å…许您查看它。 (此选项仅在密钥中存在相片时å¯ç”¨ã€‚)
    • S/MIME 安全信æ¯: å…许您查看该邮件的 S/MIME 安全信æ¯ã€‚

    如果您的 gpg.conf 文件中没有设置 keyserver-options auto-key-retrieve,当您阅读一å°ç»è¿‡æ•°å­—ç­¾åæˆ–者 加密的邮件的时候,您会看到邮件头显示区域的 钢笔 å›¾æ ‡ä¸Šé¢æœ‰ä¸ª é—®å·ï¼Œ 邮件头区域中的 Enigmail 状æ€è¡Œå°†ä¼šæ˜¾ç¤º 邮件包å«å·² æ•°å­—ç­¾å 部分 ;请点击“钢笔â€å›¾æ ‡æŸ¥çœ‹è¯¦ç»†ä¿¡æ¯ 并且邮件正文显示部分 将显示全部 OpenPGP 段指示符å·å’Œå…¨éƒ¨æ•°å­—ç­¾åæ®µã€‚

    䏿žœå³ä½¿æ‚¨åœ¨ gpg.conf 文件中设置了 keyserver-options auto-key-retrieve,当无法从默认密钥æœåŠ¡å™¨æ‰¾åˆ°å‘件人的密钥时您也会看到此æç¤ºã€‚

    点击该 带有问å·çš„钢笔 å°†ä¼šå¼¹å‡ºä¸€ä¸ªçª—å£æç¤ºæ‚¨çš„å¯†é’¥é“¾ä¸åŒ…å«è¯¥å‘件人的密钥。 此时点击“确定â€å°±ä¼šå¼¹å‡ºå¦ä¸€ä¸ªå¸¦æœ‰å¯†é’¥æœåŠ¡å™¨åˆ—è¡¨çš„çª—å£ä»¥ä¾¿æ‚¨ä»Žä¸­é€‰æ‹©ä¸€ä¸ªæœåС噍æ¥ä¸‹è½½ å‘件人的公用密钥。

    您å¯ä»¥é€šè¿‡åœ¨ Enigmail -> 选项 -> 基本 标签的 密钥æœåС噍: 框中输入以逗å·åˆ†éš”的密钥æœåŠ¡å™¨åœ°å€æ¥é…ç½®ä¸Šé¢æåˆ°çš„å¯†é’¥æœåŠ¡å™¨åˆ—è¡¨çª—å£ä¸­æ˜¾ç¤ºçš„æœåŠ¡å™¨ã€‚ 这里所填写的第一个密钥æœåŠ¡å™¨å°†è¢«ä½œä¸ºé»˜è®¤å¯†é’¥æœåŠ¡å™¨ã€‚

  • 查看加密的附件 / 导入附件中的 OpenPGP 密钥
    Enigmail 将自动识别文件å为 *.pgp〠*.asc å’Œ *.gpg 的附件并对其进行特别处ç†ã€‚ 在此类附件上é¢ç‚¹å‡»å³é”®å¼¹å‡ºçš„èœå•将会有两个特殊的选项: 解密并打开 å’Œ 解密并ä¿å­˜ã€‚如果您希望利用 Enigmail 查看或ä¿å­˜åŠ å¯†çš„é™„ä»¶ï¼Œ å¯ä»¥ä½¿ç”¨è¿™ä¸¤ä¸ªé€‰é¡¹ã€‚如果附件被识别为 OpenPGP 密钥文件,Enigmail 将引导您将它导入您的密钥链。

您å¯ä»¥ä»Ž Enigmail 帮助网页获得更多帮助

enigmail/lang/zh-CN/help/rulesEditor.html000066400000000000000000000056151266701624400206410ustar00rootroot00000000000000 Enigmail帮助: 规则编辑器

Enigmail帮助

使用 Enigmail 规则编辑器

在规则编辑器中您å¯ä»¥ä¸ºæ¯ä¸ªæ”¶ä»¶äººé»˜è®¤è®¾ç½®åР坆ã€ç­¾åå’ŒPGP/MIME,以åŠå®šä¹‰ä½¿ç”¨æŸä¸ª OpenPGP 密钥。æ¯ä¸€æ¡è§„则由5个字段组æˆï¼Œå¹¶ä¸”æ¯æ¡è§„则å ä¸€è¡Œ:

  • 电å­é‚®ä»¶: è¦ä»Ž To:ã€Cc: å’Œ Bcc: 字段 中匹é…的电å­é‚®ä»¶åœ°å€ã€‚该匹é…使用 å­å­—串 åŒ¹é…æ–¹å¼å·¥ä½œ(详细信æ¯è¯·è§ è§„åˆ™ç¼–è¾‘å¯¹è¯æ¡†)
  • OpenPGP 密钥: 为收件人使用的 OpenPGP 密钥标识的列表
  • æ•°å­—ç­¾å: å¯ç”¨æˆ–ç¦ç”¨ 电å­é‚®ä»¶æ•°å­—ç­¾å。此选项将使用或者å–代您在邮件撰写窗å£é€‰æ‹©çš„设置。 其值为:
    • 从ä¸: ç¦ç”¨æ•°å­—ç­¾å,å³ä¾¿å·²ç»åœ¨é‚®ä»¶æ’°å†™çª—å£åšå‡ºé€‰æ‹© (å–代其他值)
    • 在撰写邮件时选择: 使用在邮件撰写窗å£ä¸­é€‰æ‹©çš„设置
    • 总是: å¯ç”¨æ•°å­—ç­¾å,å³ä¾¿æ‚¨åœ¨é‚®ä»¶æ’°å†™çª—å£ å¹¶æœª å¯ç”¨æ•°å­—ç­¾å
这些数字签å设置将应用于所有匹é…的规则。如果有任æ„ä¸€æ¡ è§„åˆ™ç¦ç”¨äº†æ•°å­—ç­¾å,ä¸ç®¡å…¶ä»–è§„åˆ™æ˜¯å¦æŒ‡å®šäº†æ€»æ˜¯è¿›è¡Œæ•°å­—ç­¾å,该邮件都ä¸ä¼šè¢«æ•°å­—ç­¾å。
  • 加密: å¯ç”¨æˆ–ç¦ç”¨ 邮件加密。å¯é€‰çš„设置åŠå…¶å«ä¹‰åŒæ•°å­—ç­¾å。
  • PGP/MIME: å¯ç”¨æˆ–ç¦ç”¨ PGP/MIME (RFC 3156) 邮件编ç ã€‚ 如果ç¦ç”¨äº† PGP/MIME,信件将使用 "åµŒå…¥å¼ PGP" ç¼–ç ã€‚å¯é€‰çš„设置åŠå…¶å«ä¹‰åŒæ•°å­—ç­¾å。

所有的规则将会按照 OpenPGP 规则编辑器 列表中的顺åºé€ä¸ªå¤„ç†ã€‚å½“ä»»ä¸€åŒ…å« OpenPGP 密钥标识的规则æˆåŠŸåŒ¹é…一个收件人,我们除了为这个收件人使用规则中包å«çš„密钥之外,还将在åŽç»­çš„规则 测试中忽略该收件人。

注æ„: 规则编辑器的功能还ä¸å®Œå…¨ã€‚ ä½ å¯ä»¥é€šè¿‡ç›´æŽ¥ç¼–辑规则文件æ¥å†™æ›´å¤šé«˜çº§çš„规则(ä¸è¦å†åœ¨è§„则编辑器中编辑这些规则)。直接编辑规则文件的更详细帮助 å¯ä»¥ Enigmail 的主页上找到


您å¯ä»¥ä»Ž Enigmail 帮助web页上获得更多的帮助信æ¯

enigmail/lang/zh-CN/help/sendingPrefs.html000066400000000000000000000047771266701624400207770ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/lang/zh-TW/000077500000000000000000000000001266701624400145455ustar00rootroot00000000000000enigmail/lang/zh-TW/am-enigprefs.properties000066400000000000000000000001221266701624400212330ustar00rootroot00000000000000# Strings used in the Mozill AccountManager prefPanel-enigprefs=OpenPGP 安全性 enigmail/lang/zh-TW/enigmail.dtd000066400000000000000000001201361266701624400170320ustar00rootroot00000000000000 OpenPGP 安全性)"> 注æ„:生æˆå¯†é‘°éœ€è¦æ•¸åˆ†é¾æ™‚間。在此期間請ä¸è¦é€€å‡ºç¨‹å¼ã€‚活跃的网é ç€è¦½æˆ–ç£ç›¤æ“作å¯ä»¥åˆ·æ–°ã€Žéš¨æ©Ÿæ± ã€ï¼Œå¾žè€ŒåŠ å¿«é€Ÿåº¦ã€‚å¯†é‘°ç”Ÿæˆå®Œæˆæ™‚您將會得到æç¤ºã€‚"> ã€æ˜¯ç„¡æ•ˆçš„。"> 注æ„:密鑰生æˆéœ€è¦æ•¸åˆ†é˜çš„æ™‚間。密鑰生æˆéŽç¨‹ä¸­è«‹å‹¿é€€å‡ºç¨‹å¼ã€‚密鑰生æˆå®Œæˆæ™‚您將會收到æç¤ºã€‚"> 注æ„:無論是å¦å•Ÿç”¨ï¼ŒEnigmail將始終驗證所有帳號或身份的郵件中的簽å。"> 公鑰 是 用來讓其他人 寄加密訊æ¯çµ¦æ‚¨çš„。您å¯ä»¥ç™¼çµ¦ä»»ä½•人。"> ç§é‘° 是 用來讓您自己 解開加密郵件或簽署郵件用的。 ä¸è¦æ´©æ¼çµ¦ä»»ä½•人。"> ç§é‘° 是 用來讓您自己 解開加密郵件或簽署郵件用的。 ä¸è¦æ´©æ¼çµ¦ä»»ä½•人。 為了讓您的ç§é‘°æœ‰å¤šä¸€å±¤ä¿è­·ï¼Œæ‚¨å°‡åœ¨æŽ¥ä¸‹ä¾†å…©å€‹è¦–窗被æç¤ºè¼¸å…¥å¯†èªžã€‚"> 密語 是用來ä¿è­·æ‚¨çš„ç§é‘°çš„密碼,å¯é˜²æ­¢æ‚¨çš„ç§é‘°è¢«æ¿«ç”¨ã€‚"> ä¸ å»ºè­°æ‚¨ä½¿ç”¨è®ŠéŸ³å­—æ¯ï¼ˆä¾‹å¦‚ äã€Ã©ã€Ã±ï¼‰æˆ–其他語言的特殊字元。"> 您將會為此被æç¤ºè¼¸å…¥å¯†ç¢¼ã€‚"> 感è¬ä½¿ç”¨Enigmail。"> enigmail/lang/zh-TW/enigmail.properties000066400000000000000000000633071266701624400204610ustar00rootroot00000000000000Enigmail=Enigmail enigAlert=Enigmail 警告 enigConfirm=Enigmail ç¢ºèª enigError=Enigmail 錯誤 enigPrompt=Enigmail æç¤º dlgYes=是 (&Y) dlgNo=å¦ (&N) dlgKeepSetting=è¨˜ä½æˆ‘的答案,ä¸è¦å†å•我 dlgNoPrompt=ä¸å†é¡¯ç¤ºæ­¤å°è©±æ¡† dlg.button.delete=刪除 (&D) dlg.button.cancel=å–æ¶ˆ (&C) dlg.button.close=關閉 (&C) dlg.button.continue=繼續 (&T) dlg.button.skip=ç•¥éŽ (&S) dlg.button.view=檢視 (&V) dlg.button.retry=é‡è©¦ (&R) dlg.button.ignore=忽略 (&I) repeatPrefix=\n\n該警告é‡è¤‡ %S。 repeatSuffixSingular=次 repeatSuffixPlural=次 noRepeat=\n\n您å‡ç´š Enigmail å‰å°‡ä¸å†é‡è¤‡å‡ºç¾æ­¤è­¦å‘Šã€‚ pgpNotSupported=æ‚¨ä¼¼ä¹Žæ­£åŒæ™‚使用 Enigmail å’Œ PGP 6.x。\n\nPGP 6.x 有諸多å•é¡Œï¼Œé€ æˆ Enigmail 無法正常工作。因此,Enigmail ä¸å†æ”¯æŒ PGP 6.x,請改用 GnuPG(GPG)。\n\n如果您需è¦è½‰æ›è‡³ GnuPG 的幫助,請åƒè€ƒ Enigmail 網站的 Help 段è½ã€‚ initErr.howToFixIt=å¿…é ˆè¦æœ‰ GnuPG æ‰èƒ½ä½¿ç”¨ Enigmailã€‚è‹¥æ‚¨é‚„æ²’æœ‰å®‰è£ GnuPG,最簡單的方å¼å°±æ˜¯ç›´æŽ¥ä½¿ç”¨ä¸‹æ–¹çš„「安è£ç²¾éˆã€ã€‚ initErr.setupWizard.button=安è£ç²¾éˆ (&S) passphraseCleared=已清除密碼。 noPhotoAvailable=ç„¡å¯ç”¨ç…§ç‰‡ debugLog.title=Enigmail 除錯紀錄 error.photoPathNotReadable=無法讀å–照片路徑「%Sã€ã€‚ # Strings in configure.jsm enigmailCommon.versionSignificantlyChanged=這個新版的 Enigmail 在處ç†è¨­å®šèˆ‡é¸é …ä¸Šæœ‰å¤§å¹…åº¦çš„è®Šæ›´ã€‚æˆ‘å€‘å·²å˜—è©¦ç§»è½‰èˆŠç‰ˆçš„è¨­å®šåˆ°é€™å€‹ç‰ˆæœ¬ï¼Œä½†ç„¡æ³•è‡ªå‹•è½‰æ›æ‰€æœ‰è¨­å®šã€‚è«‹å†æ¬¡æª¢æŸ¥æ–°çš„設定有沒有å•題。 enigmailCommon.checkPreferences=檢查å好設定… usingVersion=使用 Enigmail 版本 %S usingAgent=使用 %1$S 執行檔 %2$S 來進行加解密 agentError=錯誤: ç„¡æ³•å­˜å– Enigmime æœå‹™ï¼ accessError=å­˜å– Enigmail æœå‹™æ™‚發生錯誤 onlyGPG=Enigmail 僅能使用 GnuPGï¼ˆéž PGPï¼‰ç”¢ç”Ÿé‡‘é‘°ï¼ keygenComplete=金鑰產生完æˆï¼å°‡ä½¿ç”¨ <%S> 身份簽署。 revokeCertRecommended=我們強烈建議您為金鑰產生撤銷憑證。當金鑰éºå¤±æˆ–æ´©æ¼æ™‚,å¯ä½¿ç”¨è©²æ†‘證讓金鑰失效。您è¦ç”¢ç”Ÿé€™æ¨£çš„æ’¤éŠ·æ†‘è­‰å—Žï¼Ÿ keyMan.button.generateCert=產生憑證 (&G) genCompleteNoSign=金鑰產生完æˆï¼ genGoing=å·²åœ¨ç”¢ç”Ÿé‡‘é‘°ï¼ passNoMatch=密語ä¸ç›¸åŒï¼Œè«‹é‡æ–°è¼¸å…¥ã€‚ passCheckBox=è‹¥ä¸è¦ç‚ºé‡‘é‘°æŒ‡å®šå¯†èªžè«‹å‹¾é¸æ­¤æ¬„ä½ passUserName=請指定此身份的使用者å稱。 keygen.passCharProblem=您在密語中使用特殊字元,但å¯èƒ½æœƒåœ¨å…¶ä»–應用程å¼ä¸­é€ æˆå•題。我們建議您åªä½¿ç”¨ä¸‹åˆ—å­—å…ƒ:\na-z A-Z 0-9 /.;:-,!?(){}[]%* passSpaceProblem=由於技術å•題,您的密語ä¸èƒ½ä»¥ç©ºç™½é–‹å§‹æˆ–çµæŸã€‚ changePassFailed=密語更改失敗。 keyConfirm=是å¦ç‚ºã€Œ%Sã€ç”¢ç”Ÿå…¬é‘°å’Œç§é‘°ï¼Ÿ keyMan.button.generateKey=產生金鑰 (&G) keyAbort=åœæ­¢ç”¢ç”Ÿé‡‘鑰? keyMan.button.generateKeyAbort=åœæ­¢ç”¢ç”Ÿé‡‘é‘° (&A) keyMan.button.generateKeyContinue=繼續產生金鑰 (&C) expiryTooLong=æ‚¨ç„¡æ³•å»ºç«‹ä¸€æŠŠè¶…éŽ 100 å¹´å¾Œæ‰æœƒéŽæœŸçš„金鑰。 expiryTooLongShorter=æ‚¨ç„¡æ³•å»ºç«‹ä¸€æŠŠè¶…éŽ 90 å¹´å¾Œæ‰æœƒéŽæœŸçš„金鑰。 expiryTooShort=您的金鑰必須至少有效 1 天。 dsaSizeLimit=DSA 簽署金鑰被é™åˆ¶ç‚º 3072 bit。金鑰將會被縮å°ã€‚ keyGenFailed=金鑰產生失敗。請檢查 Enigmail 主控å°ï¼ˆé¸å–® > Enigmail > Enigmail 除錯)以å–得更多資訊。 setKeyExpirationDateFailed=ç„¡æ³•è®Šæ›´éŽæœŸæ—¥ # Strings in enigmailMessengerOverlay.js securityInfo=Enigmail 安全資訊\n\n\n enigHeader=Enigmail: enigContentNote=Enigmail: * 此訊æ¯é™„件尚未經簽署或加密 *\n\n\n possiblyPgpMime=å¯èƒ½æ˜¯ç”± PGP/MIME 加密或簽署的訊æ¯ï¼Œè«‹é»žæ“Šã€Œè§£å¯†ã€æŒ‰éˆ•以驗證。 noDecrypted=沒有已解密的訊æ¯å¯ä»¥å„²å­˜ï¼\n請使用「檔案ã€é¸å–®çš„ã€Œå„²å­˜ã€æŒ‡ä»¤ã€‚ noMessage=沒有å¯å„²å­˜çš„訊æ¯ï¼ useButton=è«‹é»žæ“Šã€Œè§£å¯†ã€æŒ‰éˆ•來解密訊æ¯ã€‚ saveHeader=Enigmail: å„²å­˜è§£å¯†è¨Šæ¯ saveAttachmentHeader=Enigmail: 儲存解密附件 noTempDir=找ä¸åˆ°å¯å¯«å…¥çš„站存目錄,\n請設定 TEMP ç’°å¢ƒåƒæ•¸ attachmentPgpKey=您正è¦é–‹å•Ÿçš„附件「%Sã€å¯èƒ½æ˜¯ OpenPGP 金鑰。\n\n點擊「匯入ã€ä¾†åŒ¯å…¥åŒ…å«çš„金鑰,或點擊「檢視ã€åœ¨ç€è¦½å™¨è¦–窗中檢視該檔案 beginPgpPart=********* *BEGIN ENCRYPTED or SIGNED PART* ********* endPgpPart=********** *END ENCRYPTED or SIGNED PART* ********** notePartEncrypted=Enigmail: * 此訊æ¯éƒ¨åˆ†å…§å®¹æœªç¶“簽署或加密 * noteCutMessage=Enigmail: * 發ç¾å¤šå€‹è¨Šæ¯å€å¡Šï¼Œçµ‚止解密/é©—è­‰ * decryptOkNoSig=警告\n\nå·²æˆåŠŸè§£å¯†ï¼Œä½†ç„¡æ³•æ­£ç¢ºé©—è­‰ç°½ç«  msgOvl.button.contAnyway=還是繼續 (&C) signature.verifiedOK=æˆåŠŸé©—è­‰é™„ä»¶ %S 的簽章 signature.verifyFailed=無法驗證附件 %S 的簽章 attachment.noMatchToSignature=簽章檔案中沒有與「%Sã€ç¬¦åˆçš„簽章 attachment.noMatchFromSignature=附件中沒有與「%Sã€ç¬¦åˆçš„簽章 fixBrokenExchangeMsg.failed=並未æˆåŠŸä¿®å¾©è¨Šæ¯ã€‚ keysToExport=鏿“‡è¦æ’入的 OpenPGP 金鑰 keysToUse=鏿“‡è¦ç”¨ä¾† %S çš„ OpenPGP 金鑰 pubKey=%S 的公鑰\n windowLocked=編輯窗å£å·²éŽ–å®šï¼Œå·²å–æ¶ˆå‚³é€ã€‚ sendUnencrypted=Enigmail åˆå§‹åŒ–失敗。\n是å¦è¦å¯„逿œªåŠ å¯†çš„è¨Šæ¯ï¼Ÿ composeSpecifyEmail=請指定您的主è¦é›»å­éƒµä»¶åœ°å€ï¼Œå®ƒå°‡åœ¨å¯„é€è¨Šæ¯æ™‚ç”¨ä¾†é¸æ“‡è¦ç°½ç½²é‡‘鑰。\n若您留空,將ä¾ç…§è¨Šæ¯çš„寄件地å€ä¾†é¸æ“‡ç°½ç½²ç”¨é‡‘鑰。 sendingHiddenRcpt=æ­¤è¨Šæ¯æœ‰å¯†ä»¶å‰¯æœ¬æ”¶ä»¶äººã€‚è‹¥æ­¤è¨Šæ¯æ˜¯åŠ å¯†è¨Šæ¯ï¼Œæ‚¨å¯ä»¥éš±è—密件副本收件者,但æŸäº›ç”¢å“使用者(例如 PGP)將無法解密該訊æ¯ã€‚因此我們建議您ä¸è¦åŠ å¯†æœ‰å¯†ä»¶å‰¯æœ¬æ”¶ä»¶è€…çš„è¨Šæ¯ã€‚ sendWithHiddenBcc=éš±è—密件副本收件者 sendWithShownBcc=正常加密 sendingNews=åŠ å¯†å‚³é€æ“作中止。\n\n因為有新èžç¾¤çµ„收件者,無法加密此訊æ¯ã€‚è«‹å–æ¶ˆåŠ å¯†å¾Œå†ç™¼é€ã€‚ sendToNewsWarning=警告:您正è¦å‘æ–°èžç¾¤çµ„傳é€åŠ å¯†éƒµä»¶ã€‚\n\nåªæœ‰æ–°èžç¾¤çµ„的所有æˆå“¡éƒ½èƒ½è§£å¯†è¨Šæ¯çš„æƒ…å†µä¸‹æ‰æœ‰æ„義(也就是說,訊æ¯éœ€è¦ä½¿ç”¨ç¾¤çµ„中所有æˆå“¡çš„é‡‘é‘°åŠ å¯†ï¼‰ï¼Œå› æ­¤ä¸æŽ¨è–¦é€™æ¨£åšã€‚請確定您知é“自己正在åšä»€éº¼ã€‚\n\nè¦ç¹¼çºŒå—Žï¼Ÿ hasHTML=HTML 郵件警告:\n此訊æ¯åŒ…å« HTML,å¯èƒ½æœƒä½¿ç°½ç½²æˆ–加密失敗。為é¿å…這個情况,您應該在點擊「寫信/å›žè¦†ã€æ™‚æŒ‰ä½ Shift éµä¾†å‚³é€ç¶“簽署的郵件。\n如果您é è¨­è¦ç°½ç½²éƒµä»¶ï¼Œæ‚¨æ‡‰è©²ç‚ºæ­¤å¸³è™Ÿå–æ¶ˆé¸æ“‡ã€Œç”¨ HTML æ ¼å¼æ’°å¯«éƒµä»¶ã€ä¾†æ°¸ä¹…åœç”¨ HTML。 strippingHTML=訊æ¯ä¸­çš„ HTML æ ¼å¼å°‡åœ¨è½‰æ›æˆç´”文字以進行簽署/加密消失。您è¦ç¹¼çºŒå—Žï¼Ÿ msgCompose.button.sendAnyway=還是傳é€è¨Šæ¯ (&S) attachWarning=此訊æ¯çš„附件ä¸åœ¨æœ¬æ©Ÿï¼Œç„¡æ³•加密。若è¦åŠ å¯†é™„ä»¶ï¼Œè«‹å…ˆå°‡å®ƒå€‘å„²å­˜è‡³æœ¬æ©Ÿå¾Œå†æ–°å¢žç‚ºé™„件。您還是è¦ç™¼é€è¨Šæ¯å—Žï¼Ÿ quotedPrintableWarn=您為è¦å‚³é€çš„訊æ¯å•Ÿç”¨äº†ã€Œquoted-printableã€ç·¨ç¢¼ã€‚å¯èƒ½æœƒåœ¨è§£å¯†æˆ–驗證時出ç¾éŒ¯èª¤ã€‚\n您是å¦è¦é—œé–‰ä»¥ã€Œquoted-printableã€ç·¨ç¢¼ç™¼é€è¨Šæ¯ï¼Ÿ minimalLineWrapping=您設定æ¯è¡Œåœ¨ %S 字元後æ›è¡Œã€‚為了正確加密和簽署,這個值應至少為 68。\n您ç¾åœ¨æ˜¯å¦æƒ³æ”¹æˆ 68 字元後æ›è¡Œï¼Ÿ warning=警告 signIconClicked=您已經手動修改簽章。所以當您撰寫郵件的時候,啟(åœï¼‰ç”¨ç°½ç½²ä¸å†è·Ÿéš¨å•Ÿï¼ˆåœï¼‰ç”¨åŠ å¯†ã€‚ pgpMime_sMime.dlg.text=ç„¡æ³•åŒæ™‚使用 PGP/MIME å’Œ S/MIMEï¼Œè«‹é¸æ“‡æ‚¨è¦å•Ÿç”¨å“ªä¸€å€‹é€šè¨Šå”定。 pgpMime_sMime.dlg.pgpMime.button=使用 PGP/MIME (&P) pgpMime_sMime.dlg.sMime.button=使用 S/MIME (&S) errorKeyUnusable=é›»å­éƒµä»¶åœ°å€æˆ–金鑰 ID「%Sã€ç„¡æ³•å°æ‡‰åˆ°ä¸€æŠŠå¯ç”¨ä¸”æœªéŽæœŸçš„ OpenPGP 金鑰。\nè«‹ç¢ºèªæ‚¨æœ‰æœ‰æ•ˆçš„ OpenPGP 金鑰,並在帳戶設定中指定了該金鑰。 msgCompose.internalEncryptionError=內部錯誤: promised encryption disabled msgCompose.toolbarTxt.signAndEncrypt=å°‡ç°½ç½²ä¸¦åŠ å¯†æ­¤è¨Šæ¯ msgCompose.toolbarTxt.signOnly=å°‡ç°½ç½²æ­¤è¨Šæ¯ msgCompose.toolbarTxt.encryptOnly=å°‡åŠ å¯†æ­¤è¨Šæ¯ msgCompose.toolbarTxt.noEncryption=將䏿œƒç°½ç½²ä¸¦åŠ å¯†æ­¤è¨Šæ¯ msgCompose.toolbarTxt.disabled=å·²ç‚ºæ‰€é¸æ“‡çš„身分åœç”¨ Enigmail msgCompose.toolbarTxt.smime=已啟用 S/MIME,å¯èƒ½æœƒèˆ‡ Enigmail è¡çª msgCompose.detailsButton.accessKey=D # note: should end with double newline: sendAborted=已中止傳é€ã€‚\n # details: keyNotTrusted=金鑰「%Sã€çš„信任等級ä¸è¶³ keyNotFound=找ä¸åˆ°é‡‘鑰「%S〠keyRevoked=金鑰「%Sã€å·²è¢«æ’¤éŠ· keyExpired=金鑰「%Sã€å·²éŽæœŸ statPGPMIME=PGP/MIME statSigned=已簽署 statEncrypted=已加密 statPlain=未簽署或加密 offlineSave=è¦å„²å­˜çµ¦ %2$S çš„ %1$S å°è¨Šæ¯åˆ°æœªå¯„出訊æ¯ä¿¡ä»¶åŒ£ä¸­å—Žï¼Ÿ onlineSend=è¦å¯„é€ %1$S å°è¨Šæ¯çµ¦ %1$S 嗎? encryptKeysNote=註: 此訊æ¯ä»¥ä½¿ç”¨ä¸‹åˆ—使用者身分/金鑰加密: %S hiddenKey=<金鑰已隱è—> signFailed=Enigmail 發生錯誤,加密/簽署失敗,è¦å¯„逿œªåŠ å¯†çš„è¨Šæ¯å—Žï¼Ÿ msgCompose.button.sendUnencrypted=傳逿œªåŠ å¯†çš„è¨Šæ¯ (&S) recipientsSelectionHdr=鏿“‡è¦åŠ å¯†çš„æ”¶ä»¶äºº configureNow=您尚未為這個身份設定 Enigmail 安全資訊,您è¦ç¾åœ¨è¨­å®šå—Žï¼Ÿ encryptOff=加密: é—œ encryptOnWithReason=加密: é–‹ (%S) encryptOffWithReason=加密: é—œ (%S) encryptOn=加密: é–‹ signOn=簽署: é–‹ signOff=簽署: é—œ signOnWithReason=簽署: é–‹ (%S) signOffWithReason=簽署: é—œ (%S) reasonEnabledByDefault=é è¨­é–‹å•Ÿ reasonManuallyForced=手動強制 reasonByRecipientRules=因收件者è¦å‰‡è€Œå¼·åˆ¶ reasonByAutoEncryption=因自動加密而強制 reasonByConflict=因收件者è¦å‰‡è¡çª reasonByEncryptionMode=å› åŠ å¯†æ¨¡å¼ # should not be used anymore: encryptYes=訊æ¯å°‡è¢«åР坆 encryptNo=訊æ¯å°‡ä¸è¢«åР坆 # should not be used anymore: signYes=訊æ¯å°‡è¢«ç°½ç½² signNo=訊æ¯å°‡ä¸è¢«ç°½ç½² # should not be used anymore pgpmimeYes=將使用 PGP/MIME pgpmimeNo=將使用行內 PGP rulesConflict=嵿¸¬åˆ°æ”¶ä»¶è€…è¦å‰‡è¡çªã€‚\n%S\n\n您是è¦ä»ç„¶æŒ‰ç…§æ­¤è¨­å®šå‚³é€è¨Šæ¯å—Žï¼Ÿ msgCompose.button.configure=設定 (&C) msgCompose.button.send=傳é€è¨Šæ¯ (&S) msgCompose.button.save=å„²å­˜è¨Šæ¯ (&S) # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=需è¦å…¬é‘° %S æ‰èƒ½é©—證簽å keyUsed=已用公鑰 %S 驗證簽章 clickDecrypt=ï¼Œé»žæ“Šã€Œè§£å¯†ã€æŒ‰éˆ• clickDecryptRetry=ï¼Œé»žæ“Šã€Œè§£å¯†ã€æŒ‰éˆ•以é‡è©¦ clickDetailsButton=ï¼Œé»žæ“Šã€Œè©³ç´°è³‡è¨Šã€æŒ‰éˆ•å–得更多資訊 clickImportButton=ï¼Œé»žæ“Šã€ŒåŒ¯å…¥é‡‘é‘°ã€æŒ‰éˆ•下載金鑰 keyTypeUnsupported=,您的版本的 GnuPG 䏿”¯æ´è©²é¡žåž‹é‡‘é‘° msgPart=郵件 %S 的片段 msgSigned=已簽署 msgSignedUnkownKey=已用未知金鑰簽署 msgEncrypted=已加密 msgSignedAndEnc=已簽署並加密 unverifiedSig=未驗證的簽章 incompleteDecrypt=è§£å¯†æœªå®Œæˆ needKey=錯誤 - 缺少用於解密訊æ¯çš„ç§é‘° failedDecrypt=錯誤 - 解密失敗 badPhrase=錯誤 - 密語無效 failedDecryptVerify=錯誤 - 解密/驗證失敗 viewInfo=,請åƒè€ƒæª¢è¦– > 訊æ¯å®‰å…¨æ€§è³‡è¨Š decryptedMsg=è§£å¯†å¾Œçš„è¨Šæ¯ decryptedMsgWithFormatError=已解密的訊æ¯ï¼ˆå¯èƒ½å› èˆŠç‰ˆçš„ Exchange 伺æœå™¨æ¯€æäº† PGP 郵件,已æ¢å¾©çš„內容å¯èƒ½ä¸èƒ½æ­£å¸¸é–±è®€ï¼‰ locateGpg=尋找 GnuPG ç¨‹å¼ invalidGpgPath=無法執行指定路徑下的 GnuPGã€‚åœ¨æ‚¨é‡æ–°å•Ÿå‹•軟體或更改路徑å‰å°‡ç„¡æ³•使用 Enigmail。 warningsAreReset=å·²é‡è¨­æ‰€æœ‰è­¦å‘Šã€‚ prefs.gpgFound=在 %S 找到 GnuPG prefs.gpgNotFound=找ä¸åˆ° GnuPG prefs.warnAskNever=警告: 啟用該é¸é …會造æˆç•¶æ‚¨ç¼ºå°‘ä»»ä½•æ”¶ä»¶è€…çš„å…¬é‘°æ™‚å‚³é€æœªåŠ å¯†çš„éƒµä»¶ï¼Œä¸” Enigmail 將䏿œƒæé†’您。 prefs.warnIdleTimeForUnknownAgent=無法連線至 gpg-agent。å¯èƒ½æ˜¯æ‚¨çš„系統使用了特別的工具來管ç†å¯†èªžï¼ˆä¾‹: gnome-keyring, seahorse-agent, KDE wallet manager ç­‰ç­‰ï¼‰ã€‚å¯æƒœçš„æ˜¯ Enigmail 無法控制您使用的工具的密語逾時設定,所以 Enigmail 當中的逾時設定將被忽略。 prefEnigmail.oneKeyserverOnly=錯誤 - 您僅能指定一組金鑰伺æœå™¨ä¾†è‡ªå‹•下載缺少的 OpenPGP 金鑰。 enterAdminPin=請输入您智慧å¡çš„ç®¡ç† PIN 碼 enterCardPin=è«‹è¼¸å…¥æ‚¨çš„æ™ºæ…§å¡ PIN 碼 notInit=錯誤 - Enigmail æœå‹™å°šæœªåˆå§‹åŒ– badCommand=錯誤 - 加密指令失敗 cmdLine=命令列和輸出資料: notRequired=錯誤 - 無加密需求 notComplete=錯誤 - é‡‘é‘°å°šæœªç”¢ç”Ÿå®Œæˆ invalidEmail=錯誤 - é›»å­éƒµä»¶åœ°å€ç„¡æ•ˆ noPassphrase=錯誤 - 未指定密語 noPGPblock=錯誤 - 找ä¸åˆ°æœ‰æ•ˆçš„ armored OpenPGP 資料å€å¡Š unverifiedReply=訊æ¯çš„縮排部分(引用文章)å¯èƒ½è¢«ä¿®æ”¹éŽ sigMismatch=錯誤 - 簽章ä¸ç¬¦ cantImport=匯入公鑰時發生錯誤\n\n # Strings used in errorHandling.jsm sc.wrongCardAvailable=è®€å¡æ©Ÿä¸­çš„æ™ºæ…§å¡ %S 無法用於處ç†è¨Šæ¯ã€‚\nè«‹æ’å…¥æ™ºæ…§å¡ %S 後é‡è©¦ã€‚ sc.insertCard=æ­¤æ“ä½œéœ€è¦æ‚¨çš„æ™ºæ…§å¡ %S。\nè«‹æ’入智慧å¡å¾Œé‡è©¦ã€‚ sc.removeCard=è®€å¡æ©Ÿä¸­ä¸èƒ½æœ‰æ™ºæ…§å¡ã€‚\n請移除智慧å¡å¾Œé‡è©¦ã€‚ sc.noCardAvailable=è®€å¡æ©Ÿä¸­æ‰¾ä¸åˆ°ä»»ä½•智慧å¡ã€‚\nè«‹æ’入智慧å¡å¾Œé‡è©¦ã€‚ sc.noReaderAvailable=ç„¡æ³•å­˜å–æ‚¨çš„æ™ºæ…§å¡è®€å¡æ©Ÿ\nè«‹é€£çµæ‚¨çš„è®€å¡æ©Ÿä¸¦æ’入智慧å¡å¾Œé‡è©¦ã€‚ gpgNotFound=找ä¸åˆ° GnuPG 程å¼ã€Œ%Sã€ã€‚\n請確定你已經在 Enigmail å好設定中設定正確的 GnuPG 執行檔路徑。 gpgNotInPath=無法在 PATH 環境變數的路徑中找到 GnuPG。\n請確定你已經在 Enigmail å好設定中設定正確的 GnuPG 執行檔路徑。 gpgAgentNotStarted=無法啟動您的 GnuPG 版本 %S 所需的 gpg-agent 程å¼ã€‚ prefUntrusted=未信任 prefRevoked=已撤銷的金鑰 prefExpiredKey=å·²éŽæœŸçš„金鑰 prefExpired=å·²éŽæœŸ prefGood=來自 %S 的有效簽章 prefBad=來自 %S 的無效簽章 failCancel=錯誤 - ä½¿ç”¨è€…å–æ¶ˆæŽ¥æ”¶é‡‘é‘° failNoServer=錯誤 - 未指定è¦å¾žå“ªå°é‡‘鑰伺æœå™¨å–得金鑰 failNoID=錯誤 - 未指定è¦ä¸‹è¼‰çš„金鑰身分 failKeyExtract=錯誤 - 金鑰解壓縮指令失敗 notFirstBlock=錯誤 -第一個 OpenPGP å€å¡Šä¸æ˜¯å…¬é‘°å€å¡Š importKeyConfirm=è¦åŒ¯å…¥è¨Šæ¯ä¸­åµŒå…¥çš„公鑰嗎? failKeyImport=錯誤 - 金鑰匯入失敗 fileWriteFailed=檔案 %S 寫入失敗 importKey=自下列金鑰伺æœå™¨åŒ¯å…¥å…¬é‘° %S: uploadKey=傳é€å…¬é‘° %S 發é€åˆ°é‡‘鑰伺æœå™¨: keyId=金鑰 ID keyAndSigDate=金鑰 ID:0x%1$S / 簽署於 %2$S keyFpr=金鑰指紋: %S noEmailProvided=未指定電å­éƒµä»¶åœ°å€ï¼ keyAlreadySigned=已經簽署éŽé€™æŠŠé‡‘鑰,您ä¸èƒ½å†æ¬¡ç°½ç½²ã€‚ gnupg.invalidKey.desc=找ä¸åˆ°é‡‘é‘° %S 或金鑰無效,該金鑰或å­é‡‘é‘°å¯èƒ½å·²ç¶“éŽæœŸã€‚ selKeyExpired=å·²éŽæœŸ %S createdHeader=已建立 atLeastOneKey=æœªé¸æ“‡é‡‘é‘°ï¼æ‚¨å¿…é ˆè‡³å°‘é¸æ“‡ä¸€æŠŠé‡‘é‘°æ‰èƒ½æŽ¥å—æ­¤å°è©± fewerKeysThanRecipients=æ‚¨é¸æ“‡çš„金鑰數é‡å°‘於收件者數é‡ï¼Œæ‚¨ç¢ºå®šæ­¤åŠ å¯†é‡‘é‘°æ¸…å–®æ˜¯å®Œæ•´çš„å—Žï¼Ÿ userSel.button.goBack=鏿“‡æ›´å¤šé‡‘é‘° userSel.secretKeySel.title=鏿“‡ä¸€æŠŠ OpenPGP ç§é‘°ä¾†ç°½ç½²æ‚¨çš„è¨Šæ¯ userSel.problemNoKey=無有效金鑰 userSel.problemMultipleKeys=多é‡é‡‘é‘° # should be same as thunderbird ENTITY sendLaterCmd.label: sendLaterCmd.label=ç¨å¾Œå†å¯„ # Strings used in enigmailAttachmentDialog.js pgpMimeNote=注æ„: ç›®å‰åªæœ‰éƒ¨åˆ†éƒµä»¶è»Ÿé«”æ”¯æ´ PGP/MIMEï¼Windows 下僅有Mozilla/Thunderbirdã€Sylpheedã€Pegasus 與 Mulberry æ”¯æ´æ­¤æ¨™æº–,在 Linux/UNIX å’Œ Mac OS X 下,大部分知åçš„è»Ÿé«”éƒ½æ”¯æ´æ­¤æ¨™æº–。若您ä¸ç¢ºå®šï¼Œè«‹é¸æ“‡ %S é¸é …。 first=第一 second=第二 # Strings used in am-enigprefs.js encryptKeyHeader=鏿“‡ç”¨ä¾†åŠ å¯†çš„ OpenPGP 金鑰 identityName=身份: %S # Strings used in enigmailSingleRcptSettings.js noEncryption=æ‚¨å·²ç¶“å•Ÿç”¨åŠ å¯†ï¼Œä½†æ‚¨æ²’æœ‰é¸æ“‡æ‰€ä½¿ç”¨çš„金鑰。您需è¦å¾žæ‚¨çš„金鑰清單中指定有效的金鑰來發é€åŠ å¯†éƒµä»¶çµ¦ %1$S。您是å¦è¦ç‚º %2$S å–æ¶ˆåŠ å¯†ï¼Ÿ noKeyToUse=(無 — ä¸åŠ å¯†ï¼‰ noEmptyRule=è¦å‰‡ä¸èƒ½ç‚ºç©ºï¼è«‹åœ¨è¦å‰‡æ¬„ä½ä¸­è¼¸å…¥é›»å­éƒµä»¶åœ°å€ã€‚ invalidAddress=您輸入的電å­éƒµä»¶åœ°å€ç„¡æ•ˆã€‚è«‹ä¸è¦è¼¸å…¥æ”¶ä»¶äººçš„å字,åªéœ€è¦é›»å­éƒµä»¶åœ°å€å³å¯ã€‚例如:\n無效:Some Name \n有效:some.name@address.net noCurlyBrackets=大括號 { } 有特殊æ„義,ä¸èƒ½ç”¨æ–¼é›»å­éƒµä»¶åœ°å€ã€‚如果您需è¦ä¿®æ”¹é€™å€‹è¦å‰‡çš„符åˆè¡Œç‚ºï¼Œè«‹ä½¿ç”¨ã€Œç•¶æ”¶ä»¶äººâ€¦ï¼Œå¥—用è¦å‰‡ã€é¸é …。\né»žæ“Šã€Œèªªæ˜Žã€æŒ‰éˆ•檢視更多資訊。 # Strings used in enigmailRulesEditor.js never=å¾žä¸ always=總是 possible=å¯èƒ½ deleteRule=真的è¦è¦åˆ é™¤æ‰€é¸çš„è¦å‰‡å—Žï¼Ÿ nextRcpt=(下個收件者) negateRule=éž addKeyToRule=將金鑰 %1$S(%2$S)加入至收件人è¦å‰‡ # Strings used in enigmailSearchKey.js needOnline=æ‚¨é¸æ“‡çš„功能在離線模å¼ä¸‹ç„¡æ³•使用。請連線後é‡è©¦ã€‚ protocolNotSupported=ç„¡æ³•ä½¿ç”¨æ‚¨é¸æ“‡çš„通訊å”定「%S://ã€ä¾†ä¸‹è¼‰ OpenPGP 金鑰。 gpgkeysDisabled=啟用「extensions.enigmail.useGpgKeysToolã€é¸é …å¯èƒ½æœƒæœ‰å¹«åŠ©ã€‚ noKeyserverConn=無法連線至金鑰伺æœå™¨ %S。 keyDownloadFailed=從金鑰伺æœå™¨ä¸‹è¼‰é‡‘鑰失敗。錯誤資訊如下:\n%S internalError=發生內部錯誤。無法下載或匯入金鑰。 noKeyFound=很抱歉,找ä¸åˆ°ç¬¦åˆæœå°‹æ¢ä»¶çš„金鑰。\n請注æ„金鑰 ID å‰éœ€è¦åŠ  0x 字樣(例如 0xABCDEF12)。 # gpgkeys_%S is one of the gpg command line tools gpgkeys_hkp, gpgkeys_ldap, etc. gpgKeysFailed=從金鑰伺æœå™¨æœå°‹æˆ–下載金鑰失敗: 無法執行 gpgkeys_%S。 # Strings in enigmailEditKeyTrustDlg.xul setKeyTrustFailed=設定所有人信任程度失敗 # Strings in enigmailSignKeyDlg.js signKeyFailed=金鑰簽署失敗 alreadySigned.label=註: 已使用指定的ç§é‘°ç°½ç½²é‡‘é‘° %S。 partlySigned.label=註: å·²ä½¿ç”¨é¸æ“‡çš„ç§é‘°ç°½ç½²é‡‘é‘° %S çš„æŸäº›ä½¿ç”¨è€…身分。 # Strings in enigmailKeyManager.js keyMan.loadingKeys=金鑰載入中,請ç¨å€™â€¦ keyValid.unknown=未知 keyValid.invalid=無效 keyValid.disabled=å·²åœç”¨ keyValid.revoked=已撤銷 keyValid.expired=已失效 keyValid.noSubkey=無有效的å­é‘° keyTrust.untrusted=ä¸ä¿¡ä»» keyTrust.marginal=部分信任 keyTrust.full=å—ä¿¡ä»» keyTrust.ultimate=完全信任 keyTrust.group=(群組) keyType.public=公鑰 keyType.publicAndSec=公鑰/ç§é‘° keyMan.enableKey=啟用金鑰 keyMan.disableKey=åœç”¨é‡‘é‘° userAtt.photo=使用者屬性(JPEG 圖片) asciiArmorFile=ASCII Armored 檔案(*.asc) importKeyFile=匯入 OpenPGP 金鑰檔案 gnupgFile=GnuPG 檔案 saveRevokeCertAs=建立並儲存撤銷憑證 revokeCertOK=å·²æˆåŠŸå»ºç«‹æ’¤éŠ·æ†‘è­‰ã€‚ç•¶æ‚¨æžä¸Ÿå¯†é‘°æ™‚,您å¯ä»¥ä½¿ç”¨å®ƒè®“您的公鑰失效。\n\n請將它存放在安全的媒體,例如 CD 或隨身碟當中,若其它人得到它一樣å¯ä½¿æ‚¨çš„金鑰失效。 revokeCertFailed=無法建立撤銷憑證。 addUidOK=使用者 ID 新增æˆåŠŸ addUidFailed=使用者 ID 新增失敗 noKeySelected=您需è¦é¸æ“‡è‡³å°‘一把金鑰æ‰èƒ½é€²è¡Œé¸æ“‡çš„æ“ä½œã€‚ exportToFile=導出公鑰至檔案 exportKeypairToFile=匯出公鑰與ç§é‘°è‡³æª”案 exportSecretKey=您想è¦åœ¨å„²å­˜çš„ OpenPGP 金鑰檔案中加入ç§é‘°å—Žï¼Ÿ saveKeysOK=æˆåŠŸå„²å­˜é‡‘é‘° saveKeysFailed=金鑰儲存失敗 importKeysFailed=金鑰匯入失敗 enableKeyFailed=啟(åœï¼‰ç”¨é‡‘鑰失敗 specificPubKeyFilename=%S (0x%S) 公鑰 specificPubSecKeyFilename=%S (0x%S) 公鑰-ç§é‘° defaultPubKeyFilename=匯入公鑰 defaultPubSecKeyFilename=匯入公鑰和ç§é‘° noSecretKeys=未找到ç§é‘°ã€‚\n\n是å¦è¦ç«‹åˆ»ç”¢ç”Ÿæ‚¨è‡ªå·±çš„金鑰? sendKeysOk=金鑰傳逿ˆåŠŸ sendKeysFailed=金鑰傳é€å¤±æ•— receiveKeysOk=金鑰更新æˆåŠŸ receiveKeysFailed=金鑰下載失敗 importFromClip=您想è¦å¾žå‰ªè²¼ç°¿ä¸­åŒ¯å…¥é‡‘鑰嗎? copyToClipbrdFailed=ç„¡æ³•è¤‡è£½é¸æ“‡çš„金鑰到剪貼簿。 copyToClipbrdOK=已複製金鑰至剪貼簿。 deleteSecretKey=警告:您正è¦åˆ é™¤ä¸€æŠŠç§é‘°ï¼\n如果您删除了您的ç§é‘°ï¼Œæ‚¨å°‡ä¸å†èƒ½å¤ è§£é–‹ä»»ä½•為該ç§é‘°åŠ å¯†çš„è¨Šæ¯ï¼Œä¹Ÿå°‡ç„¡æ³•撤銷您的金鑰了。\n\n您真的è¦åˆ é™¤å…¬é‘°å’Œç§é‘°\n「%Sã€å—Žï¼Ÿ deleteMix=警告:您正è¦åˆ é™¤ä¸€å€‹ç§é‘°ï¼\n如果您删除了您的ç§é‘°ï¼Œæ‚¨å°‡ä¸å†èƒ½å¤ è§£å¯†ä»»ä½•為該ç§é‘°åŠ å¯†çš„éƒµä»¶ã€‚\n\n您真的è¦åˆ é™¤å…¬é‘°å’Œç§é‘°å°\n%S嗎? deletePubKey=您是è¦åˆ é™¤å…¬é‘°\n%S嗎? deleteSelectedPubKey=您是è¦åˆ é™¤å…¬é‘°å—Žï¼Ÿ deleteKeyFailed=無法删除金鑰。 revokeKeyQuestion=您å³å°‡æ’¤éŠ·é‡‘é‘°ã€Œ%Sã€ã€‚\n\n您將ä¸å†èƒ½ä½¿ç”¨è©²é‡‘鑰進行簽署,且一旦公開後,其他人也將ä¸å†èƒ½ä½¿ç”¨è©²é‡‘鑰進行加密。您還是能使用該金鑰解開舊訊æ¯ã€‚\n\n您è¦ç¹¼çºŒå—Žï¼Ÿ revokeKeyOk=金鑰已被撤銷。如果您的金鑰在æŸé‡‘鑰伺æœå™¨ä¸Šï¼Œå»ºè­°æ‚¨é‡æ–°ä¸Šå‚³ä¸€æ¬¡ï¼Œè®“其它人å¯ä»¥å¾—知撤銷消æ¯ã€‚ revokeKeyFailed=無法撤銷金鑰。 refreshAllQuestion=æ‚¨å°šæœªé¸æ“‡ä»»ä½•金鑰,您是å¦è¦é‡æ–°æ•´ç†æ‰€æœ‰é‡‘鑰? refreshKey.warn=警告: 視金鑰數é‡èˆ‡é€£ç·šé€Ÿåº¦è€Œå®šï¼Œé‡æ–°æ•´ç†é‡‘é‘°å¯èƒ½è¦èŠ±ä¸Šä¸å°‘æ™‚é–“ï¼ downloadContactsKeys.warn=警告: 視è¯çµ¡äººæ•¸é‡èˆ‡é€£ç·šé€Ÿåº¦è€Œå®šï¼Œä¸‹è¼‰é‡‘é‘°å¯èƒ½è¦èŠ±ä¸€é»žæ™‚é–“ï¼ downloadContactsKeys.importFrom=è¦å¾žé€šè¨ŠéŒ„「%Sã€åŒ¯å…¥è¯çµ¡äººå—Žï¼Ÿ keyMan.button.exportSecKey=匯出ç§é‘° (&S) keyMan.button.exportPubKey=僅匯出公鑰 (&P) keyMan.button.import=匯入 (&I) keyMan.button.refreshAll=釿–°è¼‰å…¥æ‰€æœ‰é‡‘é‘° (&R) keyMan.button.revokeKey=撤銷金鑰 (&R) keyMan.button.skip=ç•¥éŽé‡‘é‘° (&S) keylist.noOtherUids=無其它身份 keylist.hasOtherUids=別å keylist.noPhotos=無相片 keylist.hasPhotos=相片 keyMan.addphoto.filepicker.title=鏿“‡è¦åŠ å…¥çš„ç›¸ç‰‡ keyMan.addphoto.warnLargeFile=æ‚¨é¸æ“‡çš„æª”æ¡ˆè¶…éŽ 25 kB。\nä¸æŽ¨è–¦æ‚¨åŠ å…¥å¤§æª”æ¡ˆï¼Œå› ç‚ºé€™æ¨£æœƒä½¿æ‚¨çš„é‡‘é‘°ä¹Ÿè®Šå¤§ã€‚ keyMan.addphoto.noJpegFile=鏿“‡çš„æª”æ¡ˆä¸æ˜¯ JPEG æª”æ¡ˆï¼Œè«‹é‡æ–°é¸æ“‡ã€‚ keyMan.addphoto.failed=無法新增相片。 # Strings in enigmailManageUidDlg.xul changePrimUidFailed=主è¦ä½¿ç”¨è€… ID 變更失敗 changePrimUidOK=主è¦ä½¿ç”¨è€… ID 變更æˆåŠŸ deleteUidFailed=用戶ID %S 删除失敗 deleteUidOK=用戶ID %S 删除æˆåŠŸ revokeUidFailed=用戶ID %S 撤銷失敗 revokeUidOK=å·²æˆåŠŸæ’¤éŠ·ä½¿ç”¨è€… ID %S,若您曾將金鑰上傳到金鑰伺æœå™¨ï¼Œå»ºè­°æ‚¨é‡æ–°ä¸Šå‚³ä¸€æ¬¡ï¼Œè®“其它人能夠得知金鑰已撤銷。 revokeUidQuestion=æ‚¨çœŸçš„æƒ³è¦æ’¤éŠ·ä½¿ç”¨è€… ID %S 嗎? deleteUidQuestion=您真的想è¦åˆªé™¤ä½¿ç”¨è€… ID %S 嗎?\n\n請注æ„: 若您曾å‘金鑰伺æœå™¨ä¸Šå‚³éŽå…¬é‘°ï¼Œåˆ é™¤è©²ä½¿ç”¨è€… ID 將䏿œƒé€ æˆä»»ä½•改變。這時您應該使用「撤銷使用者 IDã€åŠŸèƒ½ã€‚ importInfoSuccess=✅ # Strings in enigmailKeyDetailsDlg.xul keyTypePublic=公鑰 keyTypePrimary=主金鑰 keyTypeSubkey=å­é‘° keyTypePair=é‡‘é‘°å° keyExpiryNever=å¾žä¸ keyAlgorithm_1=RSA keyAlgorithm_2=RSA keyAlgorithm_3=RSA keyAlgorithm_16=ELG keyAlgorithm_17=DSA keyAlgorithm_18=ECC keyAlgorithm_19=ECC keyAlgorithm_20=ELG keyUsageEncrypt=加密 keyUsageSign=簽署 keyUsageCertify=ç¢ºèª keyUsageAuthentication=é©—è­‰ # Strings in enigmailGenCardKey.xul keygen.started=è«‹ç¨å€™é‡‘鑰產生… keygen.completed=已產生金鑰。新金鑰 ID 為: 0x%S keygen.keyBackup=已備份金鑰至 %S keygen.passRequired=如果您需è¦åœ¨æ™ºæ…§å¡å¤–åšé‡‘鑰備份,請指定一組密語。 # Strings in enigmailSetCardPin.xul cardPin.dontMatch=您输入的 PIN 碼ä¸ç›¸åŒï¼Œè«‹é‡æ–°è¾“å…¥ cardPin.minLength=PIN ç¢¼è‡³å°‘éœ€è¦ %S 個字符或數字 cardPin.processFailed=PIN 碼修改失敗 # Strings in enigRetrieveProgres.xul keyserverProgress.refreshing=æ­£åœ¨é‡æ–°æ•´ç†é‡‘鑰,請ç¨å€™â€¦ keyserverProgress.uploading=正在上傳金鑰,請ç¨å€™â€¦ keyserverTitle.refreshing=釿–°æ•´ç†é‡‘é‘° keyserverTitle.uploading=上傳金鑰 # Strings in enigmailSetupWizard passphrase.min8keys=最少應有 8 å­—å…ƒçš„å¯†èªžï¼ setupWizard.reallyCancel=您確定è¦é—œé–‰ Enigmail 設定精éˆå—Žï¼Ÿ setupWizard.invalidGpg=æ‚¨æŒ‡å®šçš„æª”æ¡ˆä¸æ˜¯ GnuPG 執行檔,請指定å¦ä¸€å€‹æª”案。 setupWizard.specifyFile=您需è¦è‡³å°‘指定一個公鑰檔案æ‰èƒ½ç¹¼çºŒã€‚ setupWizard.installFailed=看來安è£ä¸¦æœªæˆåŠŸï¼Œè«‹é‡è©¦å®‰è£ç¨‹å¼ï¼Œæˆ–æ‰‹å‹•å®‰è£ GnuPG 並用ç€è¦½æŒ‰éˆ•手動尋找該程å¼ã€‚ setupWizard.downloadForbidden=ç‚ºäº†æ‚¨çš„å®‰å…¨ï¼Œæˆ‘å€‘ä¸æœƒä¸‹è¼‰ GnuPG。請å‰å¾€å‰å¾€ http://www.gnupg.org/ 下載 GnuPG。 setupWizard.downloadImpossible=ç›®å‰ç„¡æ³•下載 GnuPG,請ç¨å¾Œå†è©¦æˆ–å‰å¾€ http://www.gnupg.org/ 下載 GnuPG。 setupWizard.hashSumError=本精éˆç„¡æ³•驗證已下載檔案的完整性,此檔案å¯èƒ½å·²ææ¯€æˆ–被竄改。您還è¦ç¹¼çºŒå®‰è£å—Žï¼Ÿ # Strings in installGnuPG.jsm installGnuPG.downloadFailed=嘗試下載 GnuPG 時發生錯誤,若需更多資訊,請檢查主控å°çš„記錄。 installGnuPG.installFailed=å®‰è£ GnuPG 時發生錯誤,若需更多資訊,請檢查主控å°çš„記錄。 # Strings in enigmailAddUidDlg.xul addUidDlg.nameOrEmailError=您需è¦è¾“入一個å字和一個電å­éƒµä»¶åœ°å€ addUidDlg.nameMinLengthError=åå­—è‡³å°‘éœ€è¦æœ‰ 5 個字元 addUidDlg.invalidEmailError=æ‚¨å¿…é ˆæŒ‡å®šä¸€å€‹æœ‰æ•ˆçš„éƒµç®±åœ°å€ addUidDlg.commentError=註解中ä¸å¾—åŒ…å«æ‹¬è™Ÿ # Strings in enigmailCardDetails.js Carddetails.NoASCII=OpenPGP 智慧å¡åƒ…支æ´åœ¨å§“忬„ä½ä¸­ä½¿ç”¨ ASCII 字元。 # network error types errorType.SecurityCertificate=ç¶²é æœå‹™æä¾›çš„安全性憑證無效。 errorType.SecurityProtocol=ç¶²é æœå‹™ä½¿ç”¨æœªçŸ¥çš„安全通訊å”定。 errorType.Network=發生網路錯誤。 # filter stuff filter.folderRequired=æ‚¨å¿…é ˆé¸æ“‡ç›®çš„資訊夾。 filter.decryptMove.label=永久解密(Enigmail) filter.decryptCopy.label=建立已解密的副本(Enigmail) filter.decryptMove.warnExperimental=è­¦å‘Šï¼šéŽæ¿¾å™¨è¡Œç‚ºã€Œæ°¸ä¹…解密ã€å¯èƒ½æœƒæ¯€æè¨Šæ¯ã€‚\n\n我們強烈建議您先使用「建立已解密的副本ã€éŽæ¿¾å™¨ï¼Œå°å¿ƒæ¸¬è©¦ä¸€ä¸‹çµæžœï¼Œç¢ºèªçµæžœæ»¿æ„後å†ä½¿ç”¨ã€Œæ°¸ä¹…解密ã€éŽæ¿¾å™¨ã€‚ # strings in enigmailConvert.jsm converter.decryptBody.failed=無法解密主旨為「%Sã€çš„訊æ¯ã€‚\n\n您想è¦ä½¿ç”¨ä¸åŒçš„密語å†è©¦ä¸€æ¬¡ï¼Œæˆ–是跳éŽè©²è¨Šæ¯ï¼Ÿ converter.decryptAtt.failed=無法解密主旨為「%2$Sã€è¨Šæ¯çš„附件「%1$Sã€ã€‚\n\n您想è¦ä½¿ç”¨ä¸åŒçš„密語å†è©¦ä¸€æ¬¡ï¼Œæˆ–是跳éŽè©²è¨Šæ¯ï¼Ÿ saveLogFile.title=儲存紀錄檔 enigmail/lang/zh-TW/enigmail.properties.big5000066400000000000000000000146541266701624400213070ustar00rootroot00000000000000Enigmail=Enigmail # Strings used within enigmailCommon.js enigAlert=Enigmail ³qª¾ enigConfirm=Enigmail ½T»{ enigError=Enigmail ¿ù»~ enigPrompt=Enigmail ´£¥Ü dlgYes=½T©w dlgNo=§_ dlgNever=¤U¦¸¤£¶·¦A°Ý§Ú specifyEmail=½Ð«ü©w±zªº¥D­n¶l§}¥H¥Î©óñÃÒ±H¥X¶l¥ó®É¨Ï¥Î¡C\n ¦pªG±z­n¥Î¡§±H¥X¡¨ªº¶l§}§@¬°Ã±ÃÒ½Ð§â¦¹Äæ¸mªÅ¡C\n\nª`·N¡GEnigmail 0.60 ¥H¤W¤w§â default signing key ³o§t½kªº¿ï¶µ¥h°£. usingFrom=¡§±H¥X¡¨¶l§}±N·|¥Î©óñÃÒ±H¥Xªº¶l¥ó usingId=¨Ï¥ÎªÌ %S ±N·|¥Î©óñÃÒ±H¥Xªº¶l¥ó configNow=±z­n¬° enigmail %S ¶i¦æ³]©w¶Ü¡H configEnigmail=³]©w Enigmail¡H turnOffFlowed=Mozilla ¤¤ªº Allow flowed text (RFC 2646) ¬O¹w¸m¿ï¶µ¡C\n¦ý«o·|¦b¶i¦æ¥Í¯Â¤å¦rªº¶l¥ó¶i¦æÃ±¦W»{ÃҮɵo¥Í°ÝÃD¡C\n©Ò¥H§Ú­Ì«ØÄ³§â¦¹¼¶¶µÃö¤W¡C\n\n±z­n Enigmail ¬°±z°õ¦æÃö³¬¡@Allow flowed text (RFC 2646) ³o­Ó¿ï¶µ¶Ü? repeatPrefix=\n\n¦¹´£¥Ü±N·|¦A¥X²{%S repeatSuffixSingular=¦¸¡C repeatSuffixPlural=¦¸¡C noRepeat=\n\n¦¹´£¥Ü±N¤£·|¦A¥X²{­P¨ì§A¤U¦¸§ó·s Enigmail¡C noLogDir=½Ð¬°¶i¶¥°¾¦n³]©w¤¤ªº¤é»x¸ô®|¶i¦æ³]©w¥H«K·s¼W¤é»xÀÉ noLogFile=¤é»xÀɮפ£¦s¦b¡I restartForLog=½Ð­«·s±Ò°Ê Mozilla ¥H«K·s¼W¤é»xÀÉ # Strings in enigmailAbout.js usingVersion=Enigmail %S ¦b°õ¦æ¤¤ versionWarning=ĵ§i¡GEnigMime ª©¥» %S ¤£¨ó½Õ enigmimeWarning=ĵ§i¡G EnigMime ¼Ò²Õ¤£¦s¦b usingAgent=¨Ï¥Î %S °õ¦æÀÉ %S ¥H¥[±K©Î¸Ñ±K agentError=¿ù»~¡G¤£¯à¦s¨ú enigmail ¥¢±Ñ¡I # Strings in enigmailKeygen.js accessError=¦s¨ú enigmail ¥¢±Ñ onlyGPG=²£¥Í·sªºÆ_°Í¥u¯à¦bGPG¤¤¨Ï¥Î¡]PGP ±N¤£¯à¨Ï¥Î¡^¡I genComplete=²£¥Í·sªºÆ_°Í§¹¦¨¡I\n¨Ï¥ÎªÌÆ_°Í <%S> ±N·|¦b¥¼¨Ó¥Î©ó¥[±K©ÎñÃÒ genCompleteNoSign=²£¥Í·sªºÆ_°Í§¹¦¨¡I genGoing=²£¥Í·sªºÆ_°Í¥¿¦b¶i¦æ¤¤¡I passNoMatch=¿é¤Jªº±K½X¤£¬Û¦P¡A½Ð­«¿é¤J passCheckBox=¤£¥Î±K½X½Ð¿ï¾Ü¦¹¶µ passUserName=¦¹»{ÃÒªº¨Ï¥ÎªÌ¦WºÙ¬° keyConfirm=­n¬°'%S'²£¥Íªº¤½¶}©MÁô±KªºÆ_°Í¶Ü¡H keyAbort=¤¤¤îÆ_°Í²£¥Í¶Ü¡H # Strings in enigmailMessengerOverlay.js securityInfo=OpenPGP ¦w¥þ¸ê°T\n\n enigHeader=Enigmail: enigNote=Note from Enigmail: Attachments to this message have not been signed or encrypted. enigContentNote=Enigmail: *Attachments to this message have not been signed or encrypted*\r\n\r\n # Make Comment due to this translation will not display right. # enigNote=Enigmail:¦¹¶l¥ó¤¤ªºªþ¥ó¨Ã¨S¦³¸g¹L¥[±K©ÎñÃÒ¡C # enigContentNote=Enigmail: *¦¹¶l¥ó¤¤ªºªþ¥ó¨Ã¨S¦³¸g¹L¥[±K©ÎñÃÒ*\r\n\r\n noDecrypted=¨S¦³¥i¸Ñ½Xªº«H®§¥i¥HÀx¦s¡I\n½Ð¦bÀɮץؿý¿ï¥ÎÀx¦s noMessage=¨S¦³«H®§¥i¥HÀx¦s¡I useButton=½Ð¦b¥Ø¿ý¤¤¿ï¾Ü¸Ñ½X»Pñ¦W»{ÃÒ¥H¸Ñ½X saveHeader=Enigmail¡GÀx¦s¸Ñ½X«áªº«H®§ # Strings in enigmailMsgComposeOverlay.js keysToExport=¶×¥X¨Ï¥ÎªÌªº¤½¶}Æ_°Íªº¶l§} exportPrompt=Enigmail Æ_°Í¶×¥X pubKey=%S¨Ï¥ÎªÌ¤½¶}Æ_°Í\n windowLocked=½s¼g¶l¥ó¤w³Q¾P©w¡A±H¥X³Q¨ú®ø sendUnencrypted=Enigmail±Ò°Ê¥¢±`¡C\n±H¥X¥¼¥[±Kªº¶l¥ó¶Ü¡H composeSpecifyEmail=½Ð«ü©w±zªº¥D­n¶l§}¥H¥Î©óñÃÒ±H¥X¶l¥ó®É¨Ï¥Î¡C\n ¦pªG±z­n¥Î¡§±H¥X¡¨ªº¶l§}§@¬°Ã±ÃÒ½Ð§â¦¹Äæ¸mªÅ¡C sendingBCC=¦¹¶l¥ó¦³Áô±K¦¬«HªÌBCC¡C¦pªG¥[±K¦¹¶l¥ó©Ò¦³ªº¦¬«HªÌ³£¥i¥H³q¹LÀ˹î¥[±KÆ_°Í¦W³æ±oª¾½Ö¬OÁô±K¦¬«HªÌ­P¨ÏÁô±K«O¦w¥¢®Ä¡C\n\n«ö½T©w¥HÄ~ÁZ¥[±K©Î¨ú®ø¤¤¤î±H¥X¡C sendingNews=¥[±K±H¥X¤¤¤î.\n\n¥Ñ©ó¦³·s»D²Õªº¦s¦b¦¹¶l¥ó¤£¯à¥[±K¡C½Ð¥Î¤£¥[±Kªº¤èªk­«·s±H¥X¡C sendingPGPMIME=¶l¥ó¤¤ªºªþ¥ó¤]·|¤@°_ªº³Q¥[±K©ÎñÃÒ¡A¥u¦³¯à¤ä´©PGP/MIME®æ¦¡ªº¹q¶lµ{¦¡¥i¥HŪ¨ú¦¹Ãþ¶l¥ó¡C¤wª¾ªº¤ä´©¹q¶lµ{¦¡¦³ Enigmail, Evolution, and Mutt¡C\n «ö½T©w¥HÄ~ÁZ¨Ï¥ÎPGP/MIME®æ¦¡©Î¨ú®ø¨Ï¥Î´O¤J®æ¦¡±H¥X¡C noPGPMIME=PGP/MIME¤£¦s¦b¡I\n ¥Î´O¤J®æ¦¡¥[±K©ÎñÃÒ¡H hasHTML=HTML ¶l¥óĵ§i¡G\n¦¹¶l¥ó±a¦³HTML®æ¦¡³o¥i¯à·|¨Ï¨ì¥[±K©ÎñÃÒ¥¢±Ñ¡C¬°¤FÁ×§K¦¹Ãþ°ÝÃDªºµo¥Í±z¥i¥H¦b±H¥X©Î¦^Âжl¥ó®É«ö¤USHIFTÁä¥H±H¥XñÃÒªº¶l¥ó¡C\n¦pªG±z¬O¹w¸m¥[±K©ÎñÃÒ±H¥X¶l¥ó±zÀ³¸Ó¦b¨ú®ø¿ï¾Ü½s¼gHTML®æ¦¡¶l¥ó¿ï¶µ¥H¨ú®øHTML®æ¦¡ªº¶l¥ó¡C strippingHTML="¶l¥ó¤¤§t¦³ªº®æ¦¡HTML±N·|¦bÂà´«¦¨¯Â¤å¦r®æ¦¡¥[±K©ÎñÃҮɥ¢®Ä¡C±z­nÄ~ÁZ¶Ü¡H sendAborted=±H¥X¤¤¤î¡C\n\n statPGPMIME=PGP/MIME statSigned=¤wñÃÒ statEncrypted=¤w¥[±K statPlain=¯Â¤å¦r offlineSave=Àx¦s %S ¶l¥ó %S ¨ì¥¼±H¥Xªº¶l¥ó¶Ü¡H onlineSend=±H¥X %S ¶l¥ó¨ì %S¶Ü¡H offlineNote=§A²{¦b¥¿¨Ï¥ÎÂ÷½u¼Ò¦¡¡C­nÀx¦s¦¹¶l¥ó¨ì¥¼±H¥Xªº¶l¥ó¶Ü¡H signFailed=Enigmailµo¥Í¿ù»~¡A¥[±K©ÎñÃÒ¥¢±Ñ­n±H¥X¥¼¥[±Kªº¶l¥ó¶Ü¡H # Strings in enigmailMsgHdrViewOverlay.js keyNeeded=»Ý­n¤½¶}Æ_°Í½s¸¹ %S ¥H§@ñ¦W»{ÃÒ clickDecrypt=¡F«ö¤U¡u¸Ñ±K¡vÁä clickDecryptRetry=¡F«ö¤U¡u¸Ñ±K¡vÁä­«¸Õ clickPen=¡F«ö¤Uµ§¹Ï¡H clickPenDetails=¡F«ö¤UÂ_µ§¹Ï¨ú±o¸Ô²Óªº¸ê®Æ¡H clickQueryPenDetails=¡F«ö¤Uµ§¹Ï¨ú±o¸Ô²Óªº¸ê®Æ¡H clickKey=¡F«ö¤UÂ_Æ_°Í¹Ï¡H clickKeyDetails=¡F«ö¤UÂ_Æ_°Í¹Ï¨ú±o¸Ô²Óªº¸ê®Æ¡H reloadImapMessage=­«·s¸ü¤J§¹¾ãªºIMAP¶l¥ó¥H¶i¦æ¸Ñ½X»Pñ¦W»{ÃÒ¡H reloadImapError=¿ù»~¡ÐIMAP¶l¥ó¹L¤jµLªk¶i¦æ¸Ñ½X»Pñ¦W»{ÃÒ unverifiedSig=¥¼»{ÃÒªºÃ±¦W incompleteDecrypt=¸Ñ±K¤£§¹¾ã failedSig=¿ù»~¡Ðñ¦W»{ÃÒ¥¢±Ñ needKey=¿ù»~¡Ð»Ý­nÁô±KªºÆ_°Í¥H¶i¦æ¶l¥ó¸Ñ½X failedDecrypt=¿ù»~¡Ð¸Ñ½X¥¢±Ñ badPhrase=¿ù»~¡Ð±K½X¿ù»~ failedDecryptVerify=¿ù»~¡Ð¸Ñ½X»Pñ¦W»{ÃÒ¥¢±Ñ viewInfo=; View > Message security info for details decryptedMsg=¤w¸Ñ½XÊú¶l¥ó # Strings in enigmailNavigatorOverlay.js navEncryptError=¥[±K©ÎñÃҮɥ¢±Ñ¡C\n navDecryptError=¸Ñ½X®É¥¢±Ñ¡C\n # Strings in pref-enigmail-adv.js testNoSvc=EnigTest¡GEnigmail ¦s¨ú¥¢±Ñ testNoEmail=EnigTest¡G½Ð¿é¤J¶l§}¥H«K´ú¸Õ # Strings in pref-enigmail.js uninstallConfirm=±z¯uªº­n§R°£©Ò¦³¦bMozilla component ©M chrome ¥Ø¿ý¤º»P EnigMail ¦³ÃöªºÀÉ®×¶Ü¡H uninstallFailOverlay=¥Ñ©óÂл\ªºRDF²¾°£ EnigMail ¥¢±Ñ¡F¤£§R°£ chrome jar ÀÉ®× uninstallFailDelete=§R°£Àɮ׮ɵo¥Í°ÝÃD uninstallFail=²¾°£ EnigMail ¥¢±Ñ uninstallSuccess=EnigMail ¤w³Q²¾°£ # Strings used in components/enigmail.js # (said file also re-uses some strings given above) enterPass=½Ð¿é¤J±z %S ªº±K½X rememberPass=°O¾Ð %S ¤ÀÄÁ notInit=¿ù»~¡ÐEnigmail ÁÙ¥¼ªì©l¤Æ badCommand=¿ù»~¡Ð¥[¸Ñ«ü¥O¥¢±Ñ cmdLine=«ü¥O¼Ò¦¡©M¿é¥X¡G notRequired=¿ù»~¡Ð¤£¶·¥[±K notComplete=¿ù»~¡Ð²£¥ÍÆ_°Í¥¼§¹¦¨ invalidEmail=¿ù»~¡Ð¤£¥¿½Tªº¶l§} noPassphrase=¿ù»~¡ÐµL±K½X´£¨Ñ noPGPblock=¿ù»~¡Ð¨S¦³¤å¦r¦¡ªº PGP ¸ê®Æ decryptToImport=«ö¤U¸Ñ½X¥H¶×¤J¶l¥ó¤ºªº¤½¶}Æ_°Í extraText=ªþ¥[¤å¦r¤¤§t¦³§ó¦hªº PGP ¸ê®Æ¡C«ö¤U¸Ñ±KÁä toVerify=¥Hñ¦W»{ÃÒ¡C sigMismatch=¿ù»~¡Ðñ¦W»{ÃÒ¥¢°t cantImport=¶×¤J¤½¶}Æ_°Í¥¢±Ñ\n\n prefUntrusted=¤£³Q«H¥ôªº prefRevoked=¤w¼o°£ªº prefExpiredKey=¹O´ÁªºÆ_°Í prefExpired=¹O´Áªº prefGood=¦¨¥\»{ÃÒ%SªºÃ±¦W prefBad=¥¢±Ñ»{ÃÒ%SªºÃ±¦W failFingerprint=¿ù»~¡Ðªö«ü¯¾«ü¥O¥¢±Ñ failMultiple=¿ù»~¡Ð%S¦³¦h­Ó¤½¶}Æ_°Í failNoKey=¿ù»~¡Ð§ä¤£¨ìªº%S¤½¶}Æ_°Í failOnlyGPG=¿ù»~¡Ð¥u¦³GPGÆ_°Í¥i¥H±qÆ_°Í¦øªA¾¹¤¤¨ú±o failCancel=¿ù»~¡Ð±qÆ_°Í¦øªA¾¹¤¤¨ú±oÆ_°Í³Q¨Ï¥ÎªÌ¨ú®ø failNoServer=¿ù»~¡Ð¨S¦³«ü©wªºÆ_°Í¦øªA¾¹¥H¨ú±oÆ_°Í failNoID=¿ù»~¡Ð¨S¦³«ü©wªºÆ_°Í½s¸¹ failKeyExtract=¿ù»~¡ÐÆ_°Í¨ú±o«ü¥O¥¢±Ñ notFirstBlock=¿ù»~¡Ð²Ä¤@ PGP¸ê®Æ«D¤½¶}Æ_°Í¸ê®Æ importKeyConfirm=¦bªº´O¤Jªº¶l¥ó¤¤¶×¤J¤½¶}Æ_°Í importKey=±q¶×¤JÆ_°Í¦øªA¾¹¤½¶}Æ_°Í½s¸¹%S enigmail/lang/zh-TW/help/000077500000000000000000000000001266701624400154755ustar00rootroot00000000000000enigmail/lang/zh-TW/help/compose.html000066400000000000000000000100751266701624400200330ustar00rootroot00000000000000 Enigmail Help: Message Composition

Enigmail Help

Using Enigmail when composing messages

Enigmail menu in Mail/Compose window
Sign message
Enable/Disable sending signed mail. User is notified, if signing fails.
Encrypt message

Enable/Disable encryption to all recipient(s) before sending. User is notified, if encryption fails.

If Display selection when necessary is set in Preferences -> Key Selection tab, a list of keys will pop up if there are addresses in the list of recipients for the message for whom you have no public key.

If Never display OpenPGP key selection dialog is set in Preferences -> Key Selection tab, and there are addresses in the list of recipients for the message for whom you have no public key, the message will be sent unencrypted.

Use PGP/MIME for this message
Enable/Disable the use of PGP/MIME for this message.

If you know the recipient(s) can read mail using the PGP/MIME format, you should use it.

This feature is dependent on the settings in Preferences -> PGP/MIME tab being set to Allow to use PGP/MIME or Always use PGP/MIME.

Default composition options
  • Signing/Encryption Options...: shortcut to Account Settings -> OpenPGP Options.
  • Send options...: shortcut to Preferences -> Send tab.
  • Key selection options...: shortcut to Preferences -> Key Selection tab.
  • PGP/MIME options...: shortcut to Preferences -> PGP/MIME tab.
Undo encryption

If there is a failure when actually sending mail, such as the POP server not accepting the request, Enigmail will not know about it, and the encrypted message will continue to be displayed in the Compose window. Choosing this menu item will undo the encryption/signing, reverting the Compose window back to its original text.

As a temporary fix, this option may also be used to decrypt the quoted text when replying to encrypted messages. Enigmail should automatically decrypt the quoted message, but if that fails for some reason, you can use this menu item to force it.

Insert public key
insert ASCII-armored public key block at the current cursor location in the Compose window. You will be prompted for the email addresses of the key(s) to be inserted. Keys inserted in this manner will automatically be recognized at the receiving end by Enigmail. After key insertion, you may still choose to sign/encrypt the mail as needed. Also, do not insert more than one key block in a message; just specify multiple email addresses, separated by commas or spaces, when prompted.
Clear save passphrase
Clears cached passphrase. Useful if you have multiple passphrases.
Help
Displays Help information from the website (this page).

Further help is available on the Enigmail Help web page

enigmail/lang/zh-TW/help/editRcptRule.html000066400000000000000000000115571266701624400210020ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Using the Enigmail Rules Editor: Edit OpenPGP Rule

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. In this dialog, you can specify the rules for a single recipient, and for a group of recipients with very similar attributes.

Set OpenPGP Rules for
Contains the email addresses of the recipients (without names, i.e. just an address like somebody@email.domain). You can specify several email addresses, separated by spaces. The address specified here can consist of only the domain section so that mail to any address at that domain will be matched, e.g. @email.domain will allow matching to body@email.domain, somebody@email.domain, anybody@email.domain, etc.
Apply rule if recipient ...
This modifies the matching of the email addresses. If multiple addresses are entered, the setting will apply to all. The examples below are based on body@email.domain entered in the OpenPGP Rules field above.
  • Is exactly: with this setting, the rule will only trigger on emails to body@email.domain (exact, case insensitive matching).
  • Contains: with this setting, any email address containing the string is matched, e.g. anybody@email.domain or body@email.domain.net
  • Begins with: with this setting, any email address starting with the string is matched, e.g. body@email.domain.net, body@email.domain-name.com.
  • Ends with: with this setting, any email address ending with the string is matched, e.g. anybody@email.domain , somebody@email.domain.
Continue with the next rule for the matching address
Enabling this function will allow you to define a rule but not have to specify a KeyID in the Use the following OpenPGP keys: field, so that the email address is used to check for a key at the time of sending. Also, further rules for the same address(es) will be processed as well.
Do not check further rules for the matching address
Enabling this function stops processing any other rules for the matching address(es) if this rule is matched; i.e. rule processing continues with the next recipient.
Use the following OpenPGP keys:
Use the Select Key(s).. button to select the recipient keys to be used for encryption. As in the action above, no further rules for the matching address(es) are processed.
Default for Signing
Enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Yes, if selected from in Message Composition: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window
These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.
Encryption
Enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
Enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning are the same as for message signing.

The rules are processed in the order displayed in the list in the OpenPGP Rules Editor. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.


Further help is available on the Enigmail Per-Recipient Settings page

enigmail/lang/zh-TW/help/initError.html000066400000000000000000000045361266701624400203500ustar00rootroot00000000000000 Enigmail Help: How to Resolve Problems with Initializing OpenPGP

Enigmail Help

How to Resolve Problems with Initializing OpenPGP

There are several reasons why initializing OpenPGP does not succeed. The most common ones are described below; for more information please visit the Enigmail Support page.

GnuPG could not be found

In order for OpenPGP to work, the tool GnuPG needs to be installed. If GnuPG cannot be found, then first make sure that the executable gpg.exe (on Windows; gpg on other platforms) is installed on your computer. If GnuPG is installed, and OpenPGP cannot find it, then you need to manually set the path to GnuPG in the OpenPGP Preferences (menu OpenPGP > Preferences)

Enigmime failed to initialize

OpenPGP works only if it is built using the same build environment as Thunderbird or SeaMonkey was built. This means that you can use the official Enigmail releases only if you use the official releases of Thunderbird or SeaMonkey provided by mozilla.org.

If you use a Thunderbird or SeaMonkey version coming from some other source (e.g. the provider of your Linux distribution), or if you built the application yourself, you should either use an Enigmail version built by the same source, or build Enigmail yourself. For building Enigmail, refer to the Source Code section on the Enigmail home page. Please don't file any bug report concerning this problem, it is not solvable.

Further help is available on the Enigmail Support Web Site.

enigmail/lang/zh-TW/help/messenger.html000066400000000000000000000101211266701624400203460ustar00rootroot00000000000000 Enigmail Help: Message Reading

Enigmail Help

Using Enigmail when reading messages

Decrypt button in main Mail window
This button can be used for several purposes: decrypt, verify, or import public keys. Normally decryption/verification happens automatically, although this can be disabled through a preference. However, if this fails, usually a short error message will appear in the Enigmail status line. If you click the Decrypt button, you will be able to see a more detailed error message, including the output from the GnuPG command.
Pen and Key icons in Message Header display
The Pen and Key icons in the Message Header display indicate if the message you are reading was signed and/or encrypted and if the signature is good, i.e. the message has not been changed since it was signed. If the message has been changed, the Pen icon will change to a Broken Pen to indicate that the signature is bad. Right clicking on either the Pen or Key icons will bring up a menu with the following options:
  • OpenPGP Security info: allows you to view the output status from GnuPG for the message.
  • Copy OpenPGP Security info: copies the output status from GnuPG to the clipboard; to paste into a reply message, etc.
  • View OpenPGP Photo ID: allows you to view the Photo ID of the person who sent the message, if they have a photo embedded in their Public Key. (This option will only be enabled if a Photo ID exists in their key.)
  • S/MIME Security info: allows you to view the S/MIME Security Info for the message.

If you do not have keyserver-options auto-key-retrieve set in your gpg.conf file and you read a message which is signed or encrypted, you will see a Pen icon in the headers display area with a Question mark on it, the Enigmail status line in the headers area will say Part of the message signed; click pen icon for details and the message in the Message Pane will show all the OpenPGP message block indicators and the signature block.

You may also see this if you have keyserver-options auto-key-retrieve set in your gpg.conf file and the OpenPGP key is not available on the default keyserver.

Clicking on the Pen and Question mark icon will bring up a window advising that the key is unavailable in your keyring. Clicking on OK will bring up another window with a list of keyservers from which you can select to download the sender's public key from.

To configure the list of keyservers you wish to use, go to Enigmail -> Preferences -> Basic tab and enter the keyserver addresses in the Keyserver(s): box, separated by a comma. The first keyserver in the list will be used as the default.

Opening encrypted attachments / importing attached OpenPGP keys
Attachments named *.pgp, *.asc and *.gpg are recognized as attachments that can be handled specially by Enigmail. Right clicking on such an attachment enables two special menu items in the context menu: Decrypt and Open and Decrypt and Save. Use these two menu items if you want Enigmail to decrypt an attachment before opening or saving it. If an attachment is recognized as an OpenPGP key file, you are offered to import the keys it into your keyrings.

Further help is available on the Enigmail Help web page

enigmail/lang/zh-TW/help/rulesEditor.html000066400000000000000000000060311266701624400206640ustar00rootroot00000000000000 Enigmail Help: Rules Editor

Enigmail Help

Using the Enigmail Rules Editor

In the Rules Editor, you can specify defaults per recipient for enabling encryption, signing and PGP/MIME, and to define what OpenPGP key(s) to use. Each rule consists of 5 fields and is represented on a single line:

Email
The e-mail(s) from the To:, Cc: and Bcc: fields to match. The matching works on substrings (Further details can be found in the Edit Rule dialog)
OpenPGP Key(s)
a list of OpenPGP Key ID's to use for the recipient
Sign
enable or disable message signing. This either uses or overrides what you have specified in the message composition window. The values are:
  • Never: disable signing, even if it was enabled in the message composition window (overrules the other values)
  • Possible: leave signing as specified in the message composition window
  • Always: enable signing, even if it was not enabled in the message composition window

These signing settings are applied for all rules that match. If one of the rules disables signing, the message will not be signed, regardless of other rules that specify Always.

Encrypt
enable or disable message encryption. The allowed settings and their meaning are the same as for message signing.
PGP/MIME
enable or disable the use of the PGP/MIME (RFC 3156) message encoding. If PGP/MIME is disabled, the messages are encoded using "inline PGP". The allowed values and their meaning a re the same as for message signing.

The rules are processed in the order displayed in the list. Whenever a rule matches a recipient and contains a OpenPGP Key ID, in addition to using the specified Key ID, the recipient is not considered anymore when processing further rules.

Note: The rule editor is not yet complete. It is possible to write some more advanced rules by directly editing the rules file (these rules should then not be edited anymore in the rule editor). Further information for directly editing the file is available on the Enigmail Homepage


Further help is available on the Enigmail Help web page

enigmail/lang/zh-TW/help/sendingPrefs.html000066400000000000000000000047771266701624400210310ustar00rootroot00000000000000 Enigmail Help: Edit OpenPGP Rule

Enigmail Help

Defining Preferences to Send Encrypted

In the Sending Preferences you can choose the general model and preferences for encryption.

Convenient Encryption
With these settings, emails are encrypted without confirmation whenever possible.

This setup is appropriate, if you just want to improve your privacy by sending emails encyrpted instead of unencrypted if that's possible.

The effect is like sending emails as letters instead of postcards. Unlike postcards, letters usually hide their contents while in transit.

Note however that as with letters you can't be sure that nobody is opening the letter while it is in transit (although, some technical effort is necessary for that).

A concrete risk is that you accidentally use "faked keys" you got from somewhere or somebody claiming that the key belongs to the person you want to send emails to. To avoid this risk, you can either use the trust model of PGP (see below) or you should always verify, whether the fingerprint of a public key is correct.

Manual Encryption
This option allows you to specify the different preferences for encryption according to your needs. You can specify
  • whether replies to encrypted/signed emails should automatically also be encrypted/signed-
  • whether to use the trust model of OpenPGP to accept keys (this means that to use a key you either have to sign the key or have enough other people you trust having signed the key).
  • whether you want to automatically send emails encrypted if all keys are accepted.
  • whether and when you want to finally confirm sending an email.
If it is important for you that content you send encrypted can't be read by other people or organizations, you should use the manual preferences at least choose the option to accept keys only if you or other people signed them. While this model reduces the risk of using faked keys, it requires that you actively sign keys and declare owner trust using the key managament dialog. enigmail/package/000077500000000000000000000000001266701624400142465ustar00rootroot00000000000000enigmail/package/.gitattributes000066400000000000000000000000131266701624400171330ustar00rootroot00000000000000*.rdf text enigmail/package/Makefile000066400000000000000000000044441266701624400157140ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = .. include $(DEPTH)/config/autoconf.mk PREF_JS_EXPORTS = $(srcdir)/prefs/enigmail.js COMPFILES = \ enigmail.js \ pgpmimeHandler.js \ mimeEncrypt.js \ prefs-service.js \ msgCompFields.js PREFFILES = prefs/enigmail.js MODFILES = \ app.jsm \ armor.jsm \ attachment.jsm \ card.jsm \ commandLine.jsm \ configBackup.jsm \ configure.jsm \ constants.jsm \ data.jsm \ decryption.jsm \ decryptPermanently.jsm \ dialog.jsm \ encryption.jsm \ core.jsm \ errorHandling.jsm \ funcs.jsm \ gpgAgent.jsm \ protocolHandler.jsm \ events.jsm \ execution.jsm \ expiry.jsm \ files.jsm \ filters.jsm \ fixExchangeMsg.jsm \ glodaMime.jsm \ glodaUtils.jsm \ gpg.jsm \ hash.jsm \ httpProxy.jsm \ installGnuPG.jsm \ key.jsm \ keyEditor.jsm \ keyRing.jsm \ keyserver.jsm \ lazy.jsm \ locale.jsm \ log.jsm \ mime.jsm \ mimeDecrypt.jsm \ mimeVerify.jsm \ os.jsm \ passwordCheck.jsm \ passwords.jsm \ pipeConsole.jsm \ prefs.jsm \ promise.jsm \ rules.jsm \ streams.jsm \ system.jsm \ time.jsm \ timer.jsm \ trust.jsm \ uris.jsm \ verify.jsm \ windows.jsm all: deploy deploy: $(PREFFILES) $(COMPFILES) $(MODFILES) $(DEPTH)/util/install -m 644 $(DIST)/components $(COMPFILES) $(DEPTH)/util/install -m 644 $(DIST)/defaults/preferences $(PREFFILES) $(DEPTH)/util/install -m 644 $(DIST)/modules $(MODFILES) clean: $(DEPTH)/util/install -u $(DIST)/components $(COMPFILES) $(DEPTH)/util/install -u $(DIST)/defaults/preferences $(PREFFILES) $(DEPTH)/util/install -u $(DIST)/modules $(MODFILES) enigmail/package/app.jsm000066400000000000000000000041561266701624400155470ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailApp"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://gre/modules/AddonManager.jsm"); /*global AddonManager: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ const DIR_SERV_CONTRACTID = "@mozilla.org/file/directory_service;1"; const ENIG_EXTENSION_GUID = "{847b3a00-7ab1-11d4-8f02-006008948af5}"; const SEAMONKEY_ID = "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}"; const XPCOM_APPINFO = "@mozilla.org/xre/app-info;1"; const EnigmailApp = { /** * Platform application name (e.g. Thunderbird) */ getName: function() { return Cc[XPCOM_APPINFO].getService(Ci.nsIXULAppInfo).name; }, /** * Return the directory holding the current profile as nsIFile object */ getProfileDirectory: function() { let ds = Cc[DIR_SERV_CONTRACTID].getService(Ci.nsIProperties); return ds.get("ProfD", Ci.nsIFile); }, isSuite: function() { // return true if Seamonkey, false otherwise return Cc[XPCOM_APPINFO].getService(Ci.nsIXULAppInfo).ID == SEAMONKEY_ID; }, getVersion: function() { EnigmailLog.DEBUG("app.jsm: getVersion\n"); EnigmailLog.DEBUG("app.jsm: installed version: " + EnigmailApp.version + "\n"); return EnigmailApp.version; }, getInstallLocation: function() { return EnigmailApp.installLocation; }, setVersion: function(version) { EnigmailApp.version = version; }, setInstallLocation: function(location) { EnigmailApp.installLocation = location; }, registerAddon: function(addon) { EnigmailApp.setVersion(addon.version); EnigmailApp.setInstallLocation(addon.getResourceURI("").QueryInterface(Ci.nsIFileURL).file); }, initAddon: function() { AddonManager.getAddonByID(ENIG_EXTENSION_GUID, EnigmailApp.registerAddon); } }; EnigmailApp.initAddon(); enigmail/package/armor.jsm000066400000000000000000000137271266701624400161130ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailArmor"]; Components.utils.import("resource://enigmail/log.jsm"); /* global EnigmailLog: false */ const Ci = Components.interfaces; const nsIEnigmail = Ci.nsIEnigmail; // Locates STRing in TEXT occurring only at the beginning of a line function indexOfArmorDelimiter(text, str, offset) { let currentOffset = offset; while (currentOffset < text.length) { let loc = text.indexOf(str, currentOffset); if (loc === -1 || loc === 0 || text.charAt(loc - 1) == "\n") { return loc; } currentOffset = loc + str.length; } return -1; } function searchBlankLine(str, then) { var offset = str.search(/\n\s*\r?\n/); if (offset === -1) { return ""; } else { return then(offset); } } function indexOfNewline(str, off, then) { var offset = str.indexOf("\n", off); if (offset === -1) { return ""; } else { return then(offset); } } const EnigmailArmor = { // Locates offsets bracketing PGP armored block in text, // starting from given offset, and returns block type string. // beginIndex = offset of first character of block // endIndex = offset of last character of block (newline) // If block is not found, the null string is returned; locateArmoredBlock: function(text, offset, indentStr, beginIndexObj, endIndexObj, indentStrObj) { EnigmailLog.DEBUG("enigmail.js: Enigmail.locateArmoredBlock: " + offset + ", '" + indentStr + "'\n"); beginIndexObj.value = -1; endIndexObj.value = -1; var beginIndex = indexOfArmorDelimiter(text, indentStr + "-----BEGIN PGP ", offset); if (beginIndex == -1) { var blockStart = text.indexOf("-----BEGIN PGP "); if (blockStart >= 0) { var indentStart = text.search(/\n.*\-\-\-\-\-BEGIN PGP /) + 1; indentStrObj.value = text.substring(indentStart, blockStart); indentStr = indentStrObj.value; beginIndex = indexOfArmorDelimiter(text, indentStr + "-----BEGIN PGP ", offset); } } if (beginIndex == -1) return ""; // Locate newline at end of armor header offset = text.indexOf("\n", beginIndex); if (offset == -1) return ""; var endIndex = indexOfArmorDelimiter(text, indentStr + "-----END PGP ", offset); if (endIndex == -1) return ""; // Locate newline at end of PGP block endIndex = text.indexOf("\n", endIndex); if (endIndex == -1) { // No terminating newline endIndex = text.length - 1; } var blockHeader = text.substr(beginIndex, offset - beginIndex + 1); var blockRegex = new RegExp("^" + indentStr + "-----BEGIN PGP (.*)-----\\s*\\r?\\n"); var matches = blockHeader.match(blockRegex); var blockType = ""; if (matches && (matches.length > 1)) { blockType = matches[1]; EnigmailLog.DEBUG("enigmail.js: Enigmail.locateArmoredBlock: blockType=" + blockType + "\n"); } if (blockType == "UNVERIFIED MESSAGE") { // Skip any unverified message block return EnigmailArmor.locateArmoredBlock(text, endIndex + 1, indentStr, beginIndexObj, endIndexObj, indentStrObj); } beginIndexObj.value = beginIndex; endIndexObj.value = endIndex; return blockType; }, /* * locateArmoredBlocks returns an array with GPGBlock positions * * Struct: * int obj.begin * int obj.end * string obj.blocktype * * * @param string text * * @return empty array if no block was found * */ locateArmoredBlocks: function(text) { var beginObj = {}; var endObj = {}; var blocks = []; var i = 0; var b; while ((b = EnigmailArmor.locateArmoredBlock(text, i, "", beginObj, endObj, {})) !== "") { blocks.push({ begin: beginObj.value, end: endObj.value, blocktype: b }); i = endObj.value; } EnigmailLog.DEBUG("enigmail.js: locateArmorBlocks: Found " + blocks.length + " Blocks\n"); return blocks; }, extractSignaturePart: function(signatureBlock, part) { EnigmailLog.DEBUG("enigmail.js: Enigmail.extractSignaturePart: part=" + part + "\n"); return searchBlankLine(signatureBlock, function(offset) { return indexOfNewline(signatureBlock, offset + 1, function(offset) { var beginIndex = signatureBlock.indexOf("-----BEGIN PGP SIGNATURE-----", offset + 1); if (beginIndex == -1) { return ""; } if (part === nsIEnigmail.SIGNATURE_TEXT) { return signatureBlock.substr(offset + 1, beginIndex - offset - 1). replace(/^- -/, "-"). replace(/\n- -/g, "\n-"). replace(/\r- -/g, "\r-"); } return indexOfNewline(signatureBlock, beginIndex, function(offset) { var endIndex = signatureBlock.indexOf("-----END PGP SIGNATURE-----", offset); if (endIndex == -1) { return ""; } var signBlock = signatureBlock.substr(offset, endIndex - offset); return searchBlankLine(signBlock, function(armorIndex) { if (part == nsIEnigmail.SIGNATURE_HEADERS) { return signBlock.substr(1, armorIndex); } return indexOfNewline(signBlock, armorIndex + 1, function(armorIndex) { if (part == nsIEnigmail.SIGNATURE_ARMOR) { return signBlock.substr(armorIndex, endIndex - armorIndex). replace(/\s*/g, ""); } else { return ""; } }); }); }); }); }); }, registerOn: function(target) { target.locateArmoredBlock = EnigmailArmor.locateArmoredBlock; target.locateArmoredBlocks = EnigmailArmor.locateArmoredBlocks; target.extractSignaturePart = EnigmailArmor.extractSignaturePart; } }; enigmail/package/attachment.jsm000066400000000000000000000034711266701624400171160ustar00rootroot00000000000000/*global Components: false, escape: false, unescape: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailAttachment"]; const Cu = Components.utils; Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/passwords.jsm"); /*global EnigmailPassword: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ const EnigmailAttachment = { getFileName: function(parent, byteData) { EnigmailLog.DEBUG("attachment.jsm: getFileName\n"); const args = EnigmailGpg.getStandardArgs(true). concat(EnigmailPassword.command()). concat(["--list-packets"]); const listener = EnigmailExecution.newSimpleListener( function _stdin(pipe) { EnigmailLog.DEBUG("attachment.jsm: getFileName: _stdin\n"); pipe.write(byteData); pipe.write("\n"); pipe.close(); }); const proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, false, parent, listener, {}); if (!proc) { return null; } proc.wait(); const matches = listener.stdoutData.match(/:literal data packet:\r?\n.*name="(.*)",/m); if (matches && (matches.length > 1)) { var filename = escape(matches[1]).replace(/%5Cx/g, "%"); return EnigmailData.convertToUnicode(unescape(filename), "utf-8"); } else { return null; } } }; enigmail/package/card.jsm000066400000000000000000000022541266701624400156750ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailCard"]; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ const EnigmailCard = { getCardStatus: function(exitCodeObj, errorMsgObj) { EnigmailLog.DEBUG("card.jsm: EnigmailCard.getCardStatus\n"); const args = EnigmailGpg.getStandardArgs(false). concat(["--status-fd", "2", "--fixed-list-mode", "--with-colons", "--card-status"]); const statusMsgObj = {}; const statusFlagsObj = {}; const outputTxt = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj); if ((exitCodeObj.value === 0) && !outputTxt) { exitCodeObj.value = -1; return ""; } return outputTxt; } }; enigmail/package/chrome.manifest000077500000000000000000000151711266701624400172630ustar00rootroot00000000000000content enigmail jar:chrome/enigmail.jar!/content/enigmail/ locale enigmail en-US jar:chrome/enigmail.jar!/locale/en-US/ # Skin for TBird Mac OS X skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-mac/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=Darwin # Skin for TBird Windows skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-win-xp/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=WINNT osversion<6 skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/aero/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=WINNT osversion>=6 skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-win-xp/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=OS2 # Skin for TBird other OS (e.g. Linux) skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=Linux skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=SunOS skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=FreeBSD skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=OpenBSD skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=NetBSD skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=AIX skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=HP-UX skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/tb-linux/enigmail/ application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} os=DragonFly # Skin for SeaMonkey skin enigmail classic/1.0 jar:chrome/enigmail.jar!/skin/classic-seamonkey/enigmail/ application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} skin enigmail modern/1.0 jar:chrome/enigmail.jar!/skin/modern/enigmail/ overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://enigmail/content/enigmailCheckLanguage.xul overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://enigmail/content/enigmailMsgComposeOverlay.xul overlay chrome://messenger/content/mailWindowOverlay.xul chrome://enigmail/content/enigmailCheckLanguage.xul overlay chrome://messenger/content/messenger.xul chrome://enigmail/content/columnOverlay.xul overlay chrome://messenger/content/csMailWindowOverlay.xul chrome://enigmail/content/enigmailCheckLanguage.xul # Overlay for mailWindowOverlay on Spicebird overlay chrome://messenger/content/csMailWindowOverlay.xul chrome://enigmail/content/messengerOverlay-tbird.xul # Overlay for mailWindowOverlay on Thunderbird overlay chrome://messenger/content/mailWindowOverlay.xul chrome://enigmail/content/messengerOverlay-tbird.xul application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} overlay chrome://enigmail/content/messengerOverlay-tbird.xul chrome://enigmail/content/enigmailMessengerOverlay.xul application!={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} # Overlay for mailWindowOverlay on SeaMonkey overlay chrome://messenger/content/mailWindowOverlay.xul chrome://enigmail/content/messengerOverlay-sm.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} overlay chrome://enigmail/content/messengerOverlay-sm.xul chrome://enigmail/content/enigmailMessengerOverlay.xul application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} overlay chrome://messenger/content/msgHdrViewOverlay.xul chrome://enigmail/content/enigmailMsgHdrViewOverlay.xul overlay chrome://messenger/content/FilterEditor.xul chrome://enigmail/content/enigmailFilterEditorOverlay.xul overlay chrome://messenger/content/msgPrintEngine.xul chrome://enigmail/content/enigmailMsgPrintOverlay.xul overlay chrome://messenger/content/am-identity-edit.xul chrome://enigmail/content/enigmailAmIdEditOverlay.xul overlay chrome://messenger/content/am-identity-edit.xul chrome://enigmail/content/enigmailEditIdentity.xul overlay chrome://messenger/content/addressbook/addressbook.xul chrome://enigmail/content/enigmailAbCardViewOverlay.xul overlay chrome://messenger/content/addressbook/csContactsOverlay.xul chrome://enigmail/content/enigmailAbCardViewOverlay.xul overlay chrome://messenger/content/addressbook/abContactsPanel.xul chrome://enigmail/content/enigmailAbContactsPanel.xul overlay chrome://global/content/customizeToolbar.xul chrome://enigmail/content/enigmailCustToolOverlay.xul overlay chrome://enigmail/content/am-enigprefs.xul chrome://enigmail/content/enigmailEditIdentity.xul overlay chrome://enigmail/content/am-enigprefs-edit.xul chrome://enigmail/content/enigmailEditIdentity.xul # Resource module registration resource enigmail modules/ ## Gecko 2.0 JavaScript component registration # Enigmail component {847b3a01-7ab1-11d4-8f02-006008948af5} components/enigmail.js contract @mozdev.org/enigmail/enigmail;1 {847b3a01-7ab1-11d4-8f02-006008948af5} # EnigmailProtocolHandler component {847b3a11-7ab1-11d4-8f02-006008948af5} components/enigmail.js contract @mozilla.org/network/protocol;1?name=enigmail {847b3a11-7ab1-11d4-8f02-006008948af5} # Command line service component {847b3ab1-7ab1-11d4-8f02-006008948af5} components/enigmail.js contract @mozilla.org/enigmail/cline-handler;1 {847b3ab1-7ab1-11d4-8f02-006008948af5} category command-line-handler cline-enigmail @mozilla.org/enigmail/cline-handler;1 # EnigMsgCompFields component {847b3a30-7ab1-11d4-8f02-006008948af5} components/msgCompFields.js contract @mozdev.org/enigmail/composefields;1 {847b3a30-7ab1-11d4-8f02-006008948af5} # registration of service to decrypt PGP/MIME messages component {7514cbeb-2bfd-4b2c-829b-1a4691fa0ac8} components/pgpmimeHandler.js contract @mozilla.org/mime/pgp-mime-js-decrypt;1 {7514cbeb-2bfd-4b2c-829b-1a4691fa0ac8} # registration of service to create PGP/MIME enrypted messages component {1b040e64-e704-42b9-b05a-942e569afffc} components/mimeEncrypt.js contract @mozilla.org/messengercompose/composesecure;1 {1b040e64-e704-42b9-b05a-942e569afffc} # Preference Service component {847b3ab0-7ab1-11d4-8f02-006008948af5} components/prefs-service.js contract @mozilla.org/accountmanager/extension;1?name=enigprefs {847b3ab0-7ab1-11d4-8f02-006008948af5} category mailnews-accountmanager-extensions enigmail-account-manager-extension @mozilla.org/accountmanager/extension;1?name=enigprefs ## interface specifiacations interfaces components/enigmail.xpt enigmail/package/commandLine.jsm000066400000000000000000000033551266701624400172150ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailCommandLine"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ const NS_ENIGCLINE_SERVICE_CID = Components.ID("{847b3ab1-7ab1-11d4-8f02-006008948af5}"); const NS_CLINE_SERVICE_CONTRACTID = "@mozilla.org/enigmail/cline-handler;1"; const nsICommandLineHandler = Ci.nsICommandLineHandler; const nsIFactory = Ci.nsIFactory; const nsISupports = Ci.nsISupports; function Handler() {} Handler.prototype = { classDescription: "Enigmail Key Management CommandLine Service", classID: NS_ENIGCLINE_SERVICE_CID, contractID: NS_CLINE_SERVICE_CONTRACTID, _xpcom_categories: [{ category: "command-line-handler", entry: "m-cline-enigmail", service: false }], QueryInterface: XPCOMUtils.generateQI([nsICommandLineHandler, nsIFactory, nsISupports]), // nsICommandLineHandler handle: function(cmdLine) { if (cmdLine.handleFlag("pgpkeyman", false)) { cmdLine.preventDefault = true; // do not open main app window const wwatch = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher); wwatch.openWindow(null, "chrome://enigmail/content/enigmailKeyManager.xul", "_blank", "chrome,dialog=no,all", cmdLine); } }, helpInfo: " -pgpkeyman Open the OpenPGP key management.\n", lockFactory: function(lock) {} }; const EnigmailCommandLine = { Handler: Handler }; enigmail/package/configBackup.jsm000066400000000000000000000152761266701624400173670ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailConfigBackup"]; Components.utils.import("resource://enigmail/log.jsm"); /* global EnigmailLog: false */ Components.utils.import("resource://enigmail/rules.jsm"); /* global EnigmailRules: false */ Components.utils.import("resource://enigmail/files.jsm"); /* global EnigmailFiles: false */ Components.utils.import("resource://enigmail/prefs.jsm"); /* global EnigmailPrefs: false */ const Cc = Components.classes; const Ci = Components.interfaces; const TYPE_BOOL = 1; const TYPE_CHAR = 2; const TYPE_INT = 3; const IdentityPref = { enablePgp: TYPE_BOOL, pgpkeyId: TYPE_CHAR, pgpKeyMode: TYPE_INT, pgpSignPlain: TYPE_BOOL, pgpSignEncrypted: TYPE_BOOL, defaultSigningPolicy: TYPE_INT, defaultEncryptionPolicy: TYPE_INT, openPgpHeaderMode: TYPE_INT, openPgpUrlName: TYPE_CHAR, pgpMimeMode: TYPE_BOOL, attachPgpKey: TYPE_BOOL, autoEncryptDrafts: TYPE_BOOL }; var EnigmailConfigBackup = { getAccountManager: function() { let amService = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); return amService; }, /** * itereate over all identities and execute a callback function for each found element * * @param callbackFunc function - the callback for each identity * The function takes the identity as 1st argument, i.e. * callbackFunc(nsIMsgIdentity) * @return - undefined */ forAllIdentitites: function(callbackFunc) { let amService = this.getAccountManager(); amService.LoadAccounts(); // ensure accounts are really loaded let a = amService.allIdentities; for (let i = 0; i < a.length; i++) { let id = a.queryElementAt(i, Ci.nsIMsgIdentity); try { callbackFunc(id); } catch (ex) { EnigmailLog.DEBUG("configBackup.jsm: forAllIdentitites: exception " + ex.toString() + "\n"); } } }, /** * backup Enigmail preferences to a file * * @param outputFile nsIFile - handle to file to be saved * * @return 0: success, other values: failure */ backupPrefs: function(outputFile) { EnigmailLog.DEBUG("configBackup.jsm: backupPrefs\n"); // user preference let prefObj = { enigmailPrefs: EnigmailPrefs.getAllPrefs(), mailIdentities: {} }; function getIdentityPrefs(identity) { if (!identity.getBoolAttribute("enablePgp")) return; // do nothing if Enigmail disabled let keyObj = { emailAddress: identity.email.toLowerCase(), identityName: identity.identityName }; for (let pref in IdentityPref) { switch (IdentityPref[pref]) { case TYPE_BOOL: keyObj[pref] = identity.getBoolAttribute(pref); break; case TYPE_INT: keyObj[pref] = identity.getIntAttribute(pref); break; case TYPE_CHAR: keyObj[pref] = identity.getCharAttribute(pref); break; } } prefObj.mailIdentities[identity.key] = keyObj; } this.forAllIdentitites(getIdentityPrefs); // per-recipient rules (aka pgpRules.xml) var rulesFile = EnigmailRules.getRulesFile(); if (rulesFile.exists()) { prefObj.rules = EnigmailFiles.readFile(rulesFile); } // serialize everything to UTF-8 encoded JSON. var strm = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); try { strm.init(outputFile, -1, -1, 0); nativeJSON.encodeToStream(strm, "UTF-8", false, prefObj); strm.close(); } catch (ex) { return -1; } return 0; }, /** * Restore Enigmail preferences from a file as generated by backpPrefs() * * @param inputFile nsIFile - handle to file to be saved * * @return Object: { * retVal: Number - 0: success, other values: failure * unmatchedIds: Array (String): keys of identities * } */ restorePrefs: function(inputFile) { EnigmailLog.DEBUG("configBackup.jsm: restorePrefs\n"); var prefObj; var returnObj = { retVal: -1, unmatchedIds: [] }; function setIdentityPref(identity) { for (let k in prefObj.mailIdentities) { if (prefObj.mailIdentities[k].emailAddress === identity.email.toLowerCase()) { EnigmailLog.DEBUG("configBackup.jsm: setIdentityPref: restoring values for " + identity.email + "\n"); prefObj.mailIdentities[k].foundMatchingEmail = true; let keyObj = prefObj.mailIdentities[k]; for (let pref in IdentityPref) { switch (IdentityPref[pref]) { case TYPE_BOOL: identity.setBoolAttribute(pref, keyObj[pref]); break; case TYPE_INT: identity.setIntAttribute(pref, keyObj[pref]); break; case TYPE_CHAR: identity.setCharAttribute(pref, keyObj[pref]); break; } } return; } } EnigmailLog.DEBUG("configBackup.jsm: setIdentityPref: no matching data for " + identity.email + "\n"); } // Profile must be a single UTF-8 encoded JSON object. var strm = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); try { strm.init(inputFile, -1, -1, 0); prefObj = nativeJSON.decodeFromStream(strm, "UTF-8", false); strm.close(); var nsIPB = Ci.nsIPrefBranch; var branch = EnigmailPrefs.getPrefBranch(); // Set all options recorded in the JSON file. for (let name in prefObj.enigmailPrefs) { EnigmailPrefs.setPref(name, prefObj.enigmailPrefs[name]); } this.forAllIdentitites(setIdentityPref); for (let i in prefObj.mailIdentities) { if (!("foundMatchingEmail" in prefObj.mailIdentities[i])) { returnObj.unmatchedIds.push(prefObj.mailIdentities[i].identityName); } } let am = this.getAccountManager(); am.saveAccountInfo(); EnigmailPrefs.savePrefs(); if ("rules" in prefObj) { EnigmailRules.loadRulesFromString(prefObj.rules); EnigmailRules.saveRulesFile(); } } catch (ex) { EnigmailLog.ERROR("configBackup.jsm: restorePrefs - exception " + ex.toString() + "\n"); return returnObj; } returnObj.retVal = 0; return returnObj; } }; enigmail/package/configure.jsm000066400000000000000000000213251266701624400167450ustar00rootroot00000000000000/*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /*global Components: false */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailConfigure"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; /*global EnigmailLog: false, EnigmailPrefs: false, EnigmailTimer: false, EnigmailApp: false, EnigmailLocale: false, EnigmailDialog: false, EnigmailWindows: false */ Cu.import("resource://enigmail/log.jsm"); Cu.import("resource://enigmail/prefs.jsm"); Cu.import("resource://enigmail/timer.jsm"); Cu.import("resource://enigmail/app.jsm"); Cu.import("resource://enigmail/locale.jsm"); Cu.import("resource://enigmail/dialog.jsm"); Cu.import("resource://enigmail/windows.jsm"); function upgradeRecipientsSelection() { // Upgrade perRecipientRules and recipientsSelectionOption to // new recipientsSelection var keySel = EnigmailPrefs.getPref("recipientsSelectionOption"); var perRecipientRules = EnigmailPrefs.getPref("perRecipientRules"); var setVal = 2; /* 1: rules only 2: rules & email addresses (normal) 3: email address only (no rules) 4: manually (always prompt, no rules) 5: no rules, no key selection */ switch (perRecipientRules) { case 0: switch (keySel) { case 0: setVal = 5; break; case 1: setVal = 3; break; case 2: setVal = 4; break; default: setVal = 2; } break; case 1: setVal = 2; break; case 2: setVal = 1; break; default: setVal = 2; } // set new pref EnigmailPrefs.setPref("recipientsSelection", setVal); // clear old prefs EnigmailPrefs.getPrefBranch().clearUserPref("perRecipientRules"); EnigmailPrefs.getPrefBranch().clearUserPref("recipientsSelectionOption"); } function upgradePrefsSending() { EnigmailLog.DEBUG("enigmailCommon.jsm: upgradePrefsSending()\n"); var cbs = EnigmailPrefs.getPref("confirmBeforeSend"); var ats = EnigmailPrefs.getPref("alwaysTrustSend"); var ksfr = EnigmailPrefs.getPref("keepSettingsForReply"); EnigmailLog.DEBUG("enigmailCommon.jsm: upgradePrefsSending cbs=" + cbs + " ats=" + ats + " ksfr=" + ksfr + "\n"); // Upgrade confirmBeforeSend (bool) to confirmBeforeSending (int) switch (cbs) { case false: EnigmailPrefs.setPref("confirmBeforeSending", 0); // never break; case true: EnigmailPrefs.setPref("confirmBeforeSending", 1); // always break; } // Upgrade alwaysTrustSend (bool) to acceptedKeys (int) switch (ats) { case false: EnigmailPrefs.setPref("acceptedKeys", 0); // valid break; case true: EnigmailPrefs.setPref("acceptedKeys", 1); // all break; } // if all settings are default settings, use convenient encryption if (cbs === false && ats === true && ksfr === true) { EnigmailPrefs.setPref("encryptionModel", 0); // convenient EnigmailLog.DEBUG("enigmailCommon.jsm: upgradePrefsSending() encryptionModel=0 (convenient)\n"); } else { EnigmailPrefs.setPref("encryptionModel", 1); // manually EnigmailLog.DEBUG("enigmailCommon.jsm: upgradePrefsSending() encryptionModel=1 (manually)\n"); } // clear old prefs EnigmailPrefs.getPrefBranch().clearUserPref("confirmBeforeSend"); EnigmailPrefs.getPrefBranch().clearUserPref("alwaysTrustSend"); } function upgradeHeadersView() { // all headers hack removed -> make sure view is correct var hdrMode = null; try { hdrMode = EnigmailPrefs.getPref("show_headers"); } catch (ex) {} if (!hdrMode) hdrMode = 1; try { EnigmailPrefs.getPrefBranch().clearUserPref("show_headers"); } catch (ex) {} EnigmailPrefs.getPrefRoot().setIntPref("mail.show_headers", hdrMode); } function upgradeCustomHeaders() { try { var extraHdrs = " " + EnigmailPrefs.getPrefRoot().getCharPref("mailnews.headers.extraExpandedHeaders").toLowerCase() + " "; var extraHdrList = [ "x-enigmail-version", "content-transfer-encoding", "openpgp", "x-mimeole", "x-bugzilla-reason", "x-php-bug" ]; for (let hdr in extraHdrList) { extraHdrs = extraHdrs.replace(" " + extraHdrList[hdr] + " ", " "); } extraHdrs = extraHdrs.replace(/^ */, "").replace(/ *$/, ""); EnigmailPrefs.getPrefRoot().setCharPref("mailnews.headers.extraExpandedHeaders", extraHdrs); } catch (ex) {} } /** * Change from global PGP/MIME setting to per-identity setting */ function upgradeOldPgpMime() { var pgpMimeMode = false; try { pgpMimeMode = (EnigmailPrefs.getPref("usePGPMimeOption") == 2); } catch (ex) { return; } try { var accountManager = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); for (var i = 0; i < accountManager.allIdentities.length; i++) { var id = accountManager.allIdentities.queryElementAt(i, Ci.nsIMsgIdentity); if (id.getBoolAttribute("enablePgp")) { id.setBoolAttribute("pgpMimeMode", pgpMimeMode); } } EnigmailPrefs.getPrefBranch().clearUserPref("usePGPMimeOption"); } catch (ex) {} } /** * Change the default to PGP/MIME for all accounts, except nntp */ function defaultPgpMime() { let accountManager = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); let changedSomething = false; for (let acct = 0; acct < accountManager.accounts.length; acct++) { let ac = accountManager.accounts.queryElementAt(acct, Ci.nsIMsgAccount); if (ac.incomingServer.type.search(/(pop3|imap|movemail)/) >= 0) { for (let i = 0; i < ac.identities.length; i++) { let id = ac.identities.queryElementAt(i, Ci.nsIMsgIdentity); if (id.getBoolAttribute("enablePgp") && !id.getBoolAttribute("pgpMimeMode")) { changedSomething = true; } id.setBoolAttribute("pgpMimeMode", true); } } } if (EnigmailPrefs.getPref("advancedUser") && changedSomething) { EnigmailDialog.alert(null, EnigmailLocale.getString("preferences.defaultToPgpMime")); } } const EnigmailConfigure = { configureEnigmail: function(win, startingPreferences) { EnigmailLog.DEBUG("configure.jsm: configureEnigmail\n"); let oldVer = EnigmailPrefs.getPref("configuredVersion"); let vc = Cc["@mozilla.org/xpcom/version-comparator;1"].getService(Ci.nsIVersionComparator); if (oldVer === "") { EnigmailWindows.openSetupWizard(win, false); } else { if (oldVer < "0.95") { try { upgradeHeadersView(); upgradeOldPgpMime(); upgradeRecipientsSelection(); } catch (ex) {} } if (vc.compare(oldVer, "1.0") < 0) { upgradeCustomHeaders(); } if (vc.compare(oldVer, "1.7a1pre") < 0) { // 1: rules only // => assignKeysByRules true; rest false // 2: rules & email addresses (normal) // => assignKeysByRules/assignKeysByEmailAddr/assignKeysManuallyIfMissing true // 3: email address only (no rules) // => assignKeysByEmailAddr/assignKeysManuallyIfMissing true // 4: manually (always prompt, no rules) // => assignKeysManuallyAlways true // 5: no rules, no key selection // => assignKeysByRules/assignKeysByEmailAddr true upgradePrefsSending(); } if (vc.compare(oldVer, "1.7") < 0) { // open a modal dialog. Since this might happen during the opening of another // window, we have to do this asynchronously EnigmailTimer.setTimeout( function _cb() { var doIt = EnigmailDialog.confirmDlg(win, EnigmailLocale.getString("enigmailCommon.versionSignificantlyChanged"), EnigmailLocale.getString("enigmailCommon.checkPreferences"), EnigmailLocale.getString("dlg.button.close")); if (!startingPreferences && doIt) { // same as: // - EnigmailWindows.openPrefWindow(window, true, 'sendingTab'); // but // - without starting the service again because we do that right now // - and modal (waiting for its end) win.openDialog("chrome://enigmail/content/pref-enigmail.xul", "_blank", "chrome,resizable=yes,modal", { 'showBasic': true, 'clientType': 'thunderbird', 'selectTab': 'sendingTab' }); } }, 100); } if (vc.compare(oldVer, "1.9a2pre") < 0) { defaultPgpMime(); } } EnigmailPrefs.setPref("configuredVersion", EnigmailApp.getVersion()); EnigmailPrefs.savePrefs(); } }; enigmail/package/constants.jsm000066400000000000000000000021061266701624400167740ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailConstants"]; const EnigmailConstants = { POSSIBLE_PGPMIME: -2081, // possible values for // - encryptByRule, signByRules, pgpmimeByRules // - encryptForced, signForced, pgpmimeForced (except CONFLICT) // NOTE: // - values 0/1/2 are used with this fixed semantics in the persistent rules // - see also enigmailEncryptionDlg.xul ENIG_NEVER: 0, ENIG_UNDEF: 1, ENIG_ALWAYS: 2, ENIG_AUTO_ALWAYS: 22, ENIG_CONFLICT: 99, ENIG_FINAL_UNDEF: -1, ENIG_FINAL_NO: 0, ENIG_FINAL_YES: 1, ENIG_FINAL_FORCENO: 10, ENIG_FINAL_FORCEYES: 11, ENIG_FINAL_SMIME_DISABLED: 98, // disabled to to preferring S/MIME ENIG_FINAL_CONFLICT: 99, MIME_HANDLER_UNDEF: 0, MIME_HANDLER_SMIME: 1, MIME_HANDLER_PGPMIME: 2, nsIEnigmail: Components.interfaces.nsIEnigmail }; enigmail/package/core.jsm000066400000000000000000000047431266701624400157210ustar00rootroot00000000000000/*global Components: false, Enigmail: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailCore"]; const Cc = Components.classes; const Ci = Components.interfaces; const enigmailHolder = { svc: null }; // Global Enigmail Service let envList = null; // currently filled from enigmail.js function lazy(importName, name) { let holder = null; return function(f) { if (!holder) { if (f) { holder = f(); } else { const result = {}; Components.utils.import("resource://enigmail/" + importName, result); holder = result[name]; } } return holder; }; } const EnigmailCore = { version: "", init: function(enigmailVersion) { this.version = enigmailVersion; }, /** * get and or initialize the Enigmail service, * including the handling for upgrading old preferences to new versions * * @win: - nsIWindow: parent window (optional) * @startingPreferences - Boolean: true - called while switching to new preferences * (to avoid re-check for preferences) */ getService: function(win, startingPreferences) { // Lazy initialization of Enigmail JS component (for efficiency) if (enigmailHolder.svc) { return enigmailHolder.svc.initialized ? enigmailHolder.svc : null; } try { enigmailHolder.svc = Cc["@mozdev.org/enigmail/enigmail;1"].createInstance(Ci.nsIEnigmail); return enigmailHolder.svc.wrappedJSObject.getService(enigmailHolder, win, startingPreferences); } catch (ex) { return null; } }, getEnigmailService: function() { return enigmailHolder.svc; }, setEnigmailService: function(v) { enigmailHolder.svc = v; }, ensuredEnigmailService: function(f) { if (!enigmailHolder.svc) { EnigmailCore.setEnigmailService(f()); } return enigmailHolder.svc; }, getKeyRing: lazy("keyRing.jsm", "EnigmailKeyRing"), /** * obtain a list of all environment variables * * @return: Array of Strings with the following structrue * variable_name=variable_content */ getEnvList: function() { return envList; }, addToEnvList: function(str) { EnigmailCore.getEnvList().push(str); }, initEnvList: function() { envList = []; } }; enigmail/package/data.jsm000066400000000000000000000072751266701624400157050ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, unescape: false, atob: false, btoa: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailData"]; const Cc = Components.classes; const Ci = Components.interfaces; const SCRIPTABLEUNICODECONVERTER_CONTRACTID = "@mozilla.org/intl/scriptableunicodeconverter"; const HEX_TABLE = "0123456789abcdef"; function converter(charset) { let unicodeConv = Cc[SCRIPTABLEUNICODECONVERTER_CONTRACTID].getService(Ci.nsIScriptableUnicodeConverter); unicodeConv.charset = charset || "utf-8"; return unicodeConv; } const EnigmailData = { getUnicodeData: function(data) { // convert output from subprocess to Unicode var tmpStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream); tmpStream.setData(data, data.length); var inStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); inStream.init(tmpStream); return inStream.read(tmpStream.available()); }, extractMessageId: function(uri) { var messageId = ""; var matches = uri.match(/^enigmail:message\/(.+)/); if (matches && (matches.length > 1)) { messageId = matches[1]; } return messageId; }, extractMimeMessageId: function(uri) { var messageId = ""; var matches = uri.match(/^enigmail:mime-message\/(.+)/); if (matches && (matches.length > 1)) { messageId = matches[1]; } return messageId; }, decodeQuotedPrintable: function(str) { return unescape(str.replace(/%/g, "=25").replace(/\=/g, '%')); }, decodeBase64: function(str) { return atob(str.replace(/[\s\r\n]*/g, "")); }, /*** * Encode a string in base64, with a max. line length of 72 characters */ encodeBase64: function(str) { return btoa(str).replace(/(.{72})/g, "$1\r\n"); }, convertToUnicode: function(text, charset) { if (!text || (charset && (charset.toLowerCase() == "iso-8859-1"))) { return text; } // Encode plaintext try { return converter(charset).ConvertToUnicode(text); } catch (ex) { return text; } }, convertFromUnicode: function(text, charset) { if (!text) { return ""; } try { return converter(charset).ConvertFromUnicode(text); } catch (ex) { return text; } }, convertGpgToUnicode: function(text) { if (typeof(text) === "string") { text = text.replace(/\\x3a/ig, "\\e3A"); var a = text.search(/\\x[0-9a-fA-F]{2}/); while (a >= 0) { var ch = unescape('%' + text.substr(a + 2, 2)); var r = new RegExp("\\" + text.substr(a, 4)); text = text.replace(r, ch); a = text.search(/\\x[0-9a-fA-F]{2}/); } text = EnigmailData.convertToUnicode(text, "utf-8").replace(/\\e3A/g, ":"); } return text; }, pack: function(value, bytes) { let str = ''; let mask = 0xff; for (let j = 0; j < bytes; j++) { str = String.fromCharCode((value & mask) >> j * 8) + str; mask <<= 8; } return str; }, unpack: function(str) { let len = str.length; let value = 0; for (let j = 0; j < len; j++) { value <<= 8; value |= str.charCodeAt(j); } return value; }, bytesToHex: function(str) { let len = str.length; let hex = ''; for (let j = 0; j < len; j++) { let charCode = str.charCodeAt(j); hex += HEX_TABLE.charAt((charCode & 0xf0) >> 4) + HEX_TABLE.charAt((charCode & 0x0f)); } return hex; } }; enigmail/package/decryptPermanently.jsm000066400000000000000000001114001266701624400206470ustar00rootroot00000000000000/*global Components: false, btoa: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailDecryptPermanently"]; const Cu = Components.utils; Cu.import("resource://gre/modules/AddonManager.jsm"); /*global AddonManager: false */ Cu.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/armor.jsm"); /*global EnigmailArmor: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ Cu.import("resource://enigmail/glodaUtils.jsm"); /*global GlodaUtils: false */ Cu.import("resource://enigmail/promise.jsm"); /*global Promise: false */ Cu.import("resource:///modules/MailUtils.js"); /*global MailUtils: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/streams.jsm"); /*global EnigmailStreams: false */ Cu.import("resource://enigmail/passwords.jsm"); /*global EnigmailPassword: false */ Cu.import("resource://enigmail/mime.jsm"); /*global EnigmailMime: false */ Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Cu.import("resource://enigmail/attachment.jsm"); /*global EnigmailAttachment: false */ /*global MimeBody: false, MimeUnknown: false, MimeMessageAttachment: false */ /*global msgHdrToMimeMessage: false, MimeMessage: false, MimeContainer: false */ Cu.import("resource://enigmail/glodaMime.jsm"); var EC = EnigmailCore; const Cc = Components.classes; const Ci = Components.interfaces; const nsIEnigmail = Components.interfaces.nsIEnigmail; const STATUS_OK = 0; const STATUS_FAILURE = 1; const STATUS_NOT_REQUIRED = 2; const IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; /* * Decrypt a message and copy it to a folder * * @param nsIMsgDBHdr hdr Header of the message * @param String destFolder Folder URI * @param Boolean move If true the original message will be deleted * * @return a Promise that we do that */ const EnigmailDecryptPermanently = { /*** * dispatchMessages * * Because Thunderbird throws all messages at once at us thus we have to rate limit the dispatching * of the message processing. Because there is only a negligible performance gain when dispatching * several message at once we serialize to not overwhelm low power devices. * * The function is implemented such that the 1st call (requireSync == true) is a synchronous function, * while any other call is asynchronous. This is required to make the filters work correctly in case * there are other filters that work on the message. (see bug 374). * * Parameters * aMsgHdrs: Array of nsIMsgDBHdr * targetFolder: String; target folder URI * move: Boolean: type of action; true = "move" / false = "copy" * requireSync: Boolean: true = require function to behave synchronously * false = async function (no useful return value) * **/ dispatchMessages: function(aMsgHdrs, targetFolder, move, requireSync) { var inspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector); var promise = EnigmailDecryptPermanently.decryptMessage(aMsgHdrs[0], targetFolder, move); var done = false; var processNext = function(data) { aMsgHdrs.splice(0, 1); if (aMsgHdrs.length > 0) { EnigmailDecryptPermanently.dispatchMessages(aMsgHdrs, targetFolder, move, false); } else { // last message was finished processing done = true; inspector.exitNestedEventLoop(); } }; promise.then(processNext); promise.catch(function(err) { processNext(null); }); if (requireSync && !done) { // wait here until all messages processed, such that the function returns // synchronously inspector.enterNestedEventLoop({ value: 0 }); } }, decryptMessage: function(hdr, destFolder, move) { return new Promise( function(resolve, reject) { let msgUriSpec = hdr.folder.getUriForMsg(hdr); const msgSvc = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger). messageServiceFromURI(msgUriSpec); const decrypt = new DecryptMessageIntoFolder(destFolder, move, resolve); try { msgHdrToMimeMessage(hdr, decrypt, decrypt.messageParseCallback, true, { examineEncryptedParts: false, partsOnDemand: false }); } catch (ex) { reject("msgHdrToMimeMessage failed"); } return; } ); } }; function DecryptMessageIntoFolder(destFolder, move, resolve) { this.destFolder = destFolder; this.move = move; this.resolve = resolve; this.foundPGP = 0; this.mime = null; this.hdr = null; this.decryptionTasks = []; this.subject = ""; } DecryptMessageIntoFolder.prototype = { messageParseCallback: function(hdr, mime) { this.hdr = hdr; this.mime = mime; var self = this; try { if (!mime) { this.resolve(true); return; } var ct = getContentType(getHeaderValue(mime, 'content-type')); var pt = getProtocol(getHeaderValue(mime, 'content-type')); this.subject = GlodaUtils.deMime(getHeaderValue(mime, 'subject')); if (!ct) { this.resolve(true); return; } this.walkMimeTree(this.mime, this.mime); this.decryptINLINE(this.mime); if (this.foundPGP < 0) { // decryption failed this.resolve(true); return; } for (let i in this.mime.allAttachments) { let a = this.mime.allAttachments[i]; let suffixIndexEnd = a.name.toLowerCase().lastIndexOf('.pgp'); if (suffixIndexEnd < 0) { suffixIndexEnd = a.name.toLowerCase().lastIndexOf('.asc'); } if (suffixIndexEnd > 0 && a.contentType.search(/application\/pgp-signature/i) < 0) { // possible OpenPGP attachment let p = self.decryptAttachment(a, a.name.substring(0, suffixIndexEnd)); this.decryptionTasks.push(p); } else { let p = this.readAttachment(a); this.decryptionTasks.push(p); } } Promise.all(this.decryptionTasks).then( function(tasks) { self.allTasks = tasks; for (let a in tasks) { switch (tasks[a].status) { case STATUS_NOT_REQUIRED: tasks[a].name = tasks[a].origName; break; case STATUS_OK: ++self.foundPGP; break; case STATUS_FAILURE: // attachment did not decrypt successfully self.resolve(true); return; default: // no valid result?! tasks[a].name = tasks[a].origName; } } if (self.foundPGP === 0) { self.resolve(true); return; } var msg = self.mimeToString(self.mime, true); if (!msg || msg === "") { // no message data found self.resolve(true); return; } //XXX Do we wanna use the tmp for this? var tempFile = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("TmpD", Ci.nsIFile); tempFile.append("message.eml"); tempFile.createUnique(0, 384); // == 0600, octal is deprecated // ensure that file gets deleted on exit, if something goes wrong ... var extAppLauncher = Cc["@mozilla.org/mime;1"].getService(Ci.nsPIExternalAppLauncher); var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); foStream.init(tempFile, 2, 0x200, false); // open as "write only" foStream.write(msg, msg.length); foStream.close(); extAppLauncher.deleteTemporaryFileOnExit(tempFile); // // This was taken from the HeaderToolsLite Example Addon "original by Frank DiLecce" // // this is interesting: nsIMsgFolder.copyFileMessage seems to have a bug on Windows, when // the nsIFile has been already used by foStream (because of Windows lock system?), so we // must initialize another nsIFile object, pointing to the temporary file var fileSpec = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); fileSpec.initWithPath(tempFile.path); const copySvc = Cc["@mozilla.org/messenger/messagecopyservice;1"].getService(Ci.nsIMsgCopyService); var copyListener = { QueryInterface: function(iid) { if (iid.equals(Ci.nsIMsgCopyServiceListener) || iid.equals(Ci.nsISupports)) { return this; } EnigmailLog.DEBUG("decryptPermanently.jsm: copyListener error\n"); throw Components.results.NS_NOINTERFACE; }, GetMessageId: function(messageId) {}, OnProgress: function(progress, progressMax) {}, OnStartCopy: function() {}, SetMessageKey: function(key) {}, OnStopCopy: function(statusCode) { if (statusCode !== 0) { //XXX complain? EnigmailLog.DEBUG("decryptPermanently.jsm: Error copying message: " + statusCode + "\n"); try { tempFile.remove(false); } catch (ex) { try { fileSpec.remove(false); } catch (e2) { EnigmailLog.DEBUG("decryptPermanently.jsm: Could not delete temp file\n"); } } self.resolve(true); return; } EnigmailLog.DEBUG("decryptPermanently.jsm: Copy complete\n"); if (self.move) { EnigmailLog.DEBUG("decryptPermanently.jsm: Delete original\n"); var folderInfoObj = {}; self.hdr.folder.getDBFolderInfoAndDB(folderInfoObj).DeleteMessage(self.hdr.messageKey, null, true); } try { tempFile.remove(false); } catch (ex) { try { fileSpec.remove(false); } catch (e2) { EnigmailLog.DEBUG("decryptPermanently.jsm: Could not delete temp file\n"); } } EnigmailLog.DEBUG("decryptPermanently.jsm: Cave Johnson. We're done\n"); self.resolve(true); } }; copySvc.CopyFileMessage(fileSpec, MailUtils.getFolderForURI(self.destFolder, false), self.hdr, false, 0, null, copyListener, null); } ).catch( function catchErr(errorMsg) { EnigmailLog.DEBUG("decryptPermanently.jsm: Promise.catchErr: " + errorMsg + "\n"); self.resolve(false); } ); } catch (ex) { EnigmailLog.DEBUG("decryptPermanently.jsm: messageParseCallback: caught error " + ex.toString() + "\n"); self.resolve(false); } }, readAttachment: function(attachment, strippedName) { return new Promise( function(resolve, reject) { EnigmailLog.DEBUG("decryptPermanently.jsm: readAttachment\n"); let o; var f = function _cb(data) { EnigmailLog.DEBUG("decryptPermanently.jsm: readAttachment - got data (" + data.length + ")\n"); o = { type: "attachment", data: data, name: strippedName ? strippedName : attachment.name, partName: attachment.partName, origName: attachment.name, status: STATUS_NOT_REQUIRED }; resolve(o); }; try { var bufferListener = EnigmailStreams.newStringStreamListener(f); var ioServ = Cc[IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService); var msgUri = ioServ.newURI(attachment.url, null, null); var channel = ioServ.newChannelFromURI(msgUri); channel.asyncOpen(bufferListener, msgUri); } catch (ex) { reject(o); } } ); }, decryptAttachment: function(attachment, strippedName) { var self = this; return new Promise( function(resolve, reject) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment\n"); self.readAttachment(attachment, strippedName).then( function(o) { var attachmentHead = o.data.substr(0, 30); if (attachmentHead.match(/\-\-\-\-\-BEGIN PGP \w+ KEY BLOCK\-\-\-\-\-/)) { // attachment appears to be a PGP key file, we just go-a-head resolve(o); return; } var enigmailSvc = EnigmailCore.getService(); var args = EnigmailGpg.getStandardArgs(true); args = args.concat(EnigmailPassword.command()); args.push("-d"); var statusMsgObj = {}; var cmdLineObj = {}; var exitCode = -1; var statusFlagsObj = {}; var errorMsgObj = {}; statusFlagsObj.value = 0; var listener = EnigmailExecution.newSimpleListener( function _stdin(pipe) { // try to get original file name if file does not contain suffix if (strippedName.indexOf(".") < 0) { let s = EnigmailAttachment.getFileName(null, o.data); if (s) o.name = s; } pipe.write(o.data); pipe.close(); } ); do { var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, false, null, listener, statusFlagsObj); if (!proc) { resolve(o); return; } // Wait for child STDOUT to close proc.wait(); EnigmailExecution.execEnd(listener, statusFlagsObj, statusMsgObj, cmdLineObj, errorMsgObj); if ((listener.stdoutData && listener.stdoutData.length > 0) || (statusFlagsObj.value & nsIEnigmail.DECRYPTION_OKAY)) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment: decryption OK\n"); exitCode = 0; } else if (statusFlagsObj.value & nsIEnigmail.DECRYPTION_FAILED) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment: decryption failed\n"); if (EnigmailGpgAgent.useGpgAgent()) { // since we cannot find out if the user wants to cancel // we should ask let msg = EnigmailLocale.getString("converter.decryptAtt.failed", [attachment.name, self.subject]); if (!EnigmailDialog.confirmDlg(null, msg, EnigmailLocale.getString("dlg.button.retry"), EnigmailLocale.getString("dlg.button.skip"))) { o.status = STATUS_FAILURE; resolve(o); return; } } } else if (statusFlagsObj.value & nsIEnigmail.DECRYPTION_INCOMPLETE) { // failure; message not complete EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment: decryption incomplete\n"); o.status = STATUS_FAILURE; resolve(o); return; } else { // there is nothing to be decrypted EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment: no decryption required\n"); o.status = STATUS_NOT_REQUIRED; resolve(o); return; } } while (exitCode !== 0); EnigmailLog.DEBUG("decryptPermanently.jsm: decryptAttachment: decrypted to " + listener.stdoutData.length + " bytes\n"); o.data = listener.stdoutData; o.status = STATUS_OK; resolve(o); } ); } ); }, /* * The following functions walk the MIME message structure and decrypt if they find something to decrypt */ // the sunny world of PGP/MIME walkMimeTree: function(mime, parent) { EnigmailLog.DEBUG("decryptPermanently.jsm: walkMimeTree:\n"); let ct = getContentType(getHeaderValue(mime, 'content-type')); EnigmailLog.DEBUG("decryptPermanently.jsm: walkMimeTree: part=" + mime.partName + " - " + ct + "\n"); // assign part name on lowest possible level -> that's where the attachment // really belongs to for (let i in mime.allAttachments) { mime.allAttachments[i].partName = mime.partName; } if (this.isPgpMime(mime) || this.isSMime(mime)) { let p = this.decryptPGPMIME(parent, mime.partName); this.decryptionTasks.push(p); } else if (this.isBrokenByExchange(mime)) { let p = this.decryptAttachment(mime.parts[0].parts[2], "decrypted.txt"); mime.isBrokenByExchange = true; mime.parts[0].parts[2].name = "ignore.txt"; this.decryptionTasks.push(p); } else if (typeof(mime.body) == "string") { EnigmailLog.DEBUG(" body size: " + mime.body.length + "\n"); } for (var i in mime.parts) { this.walkMimeTree(mime.parts[i], mime); } }, /*** * * Detect if mime part is PGP/MIME message that got modified by MS-Exchange: * * - multipart/mixed Container with * - application/pgp-encrypted Attachment with name "PGPMIME Version Identification" * - application/octet-stream Attachment with name "encrypted.asc" having the encrypted content in base64 * - see: * - http://www.mozilla-enigmail.org/forum/viewtopic.php?f=4&t=425 * - http://sourceforge.net/p/enigmail/forum/support/thread/4add2b69/ */ isBrokenByExchange: function(mime) { EnigmailLog.DEBUG("decryptPermanently.jsm: isBrokenByExchange:\n"); try { if (mime.parts && mime.parts.length && mime.parts.length == 1 && mime.parts[0].parts && mime.parts[0].parts.length && mime.parts[0].parts.length == 3 && mime.parts[0].headers["content-type"][0].indexOf("multipart/mixed") >= 0 && mime.parts[0].parts[0].size === 0 && mime.parts[0].parts[0].headers["content-type"][0].search(/multipart\/encrypted/i) < 0 && mime.parts[0].parts[0].headers["content-type"][0].indexOf("text/plain") >= 0 && mime.parts[0].parts[1].headers["content-type"][0].indexOf("application/pgp-encrypted") >= 0 && mime.parts[0].parts[1].headers["content-type"][0].search(/multipart\/encrypted/i) < 0 && mime.parts[0].parts[1].headers["content-type"][0].search(/PGPMIME Versions? Identification/i) >= 0 && mime.parts[0].parts[2].headers["content-type"][0].indexOf("application/octet-stream") >= 0 && mime.parts[0].parts[2].headers["content-type"][0].indexOf("encrypted.asc") >= 0) { EnigmailLog.DEBUG("decryptPermanently.jsm: isBrokenByExchange: found message broken by MS-Exchange\n"); return true; } } catch (ex) {} return false; }, isPgpMime: function(mime) { EnigmailLog.DEBUG("decryptPermanently.jsm: isPgpMime:\n"); try { var ct = mime.contentType; if (!ct) return false; if (!('content-type' in mime.headers)) return false; var pt = getProtocol(getHeaderValue(mime, 'content-type')); if (!pt) return false; if (ct.toLowerCase() == "multipart/encrypted" && pt == "application/pgp-encrypted") { return true; } } catch (ex) { //EnigmailLog.DEBUG("decryptPermanently.jsm: isPgpMime:"+ex+"\n"); } return false; }, // smime-type=enveloped-data isSMime: function(mime) { EnigmailLog.DEBUG("decryptPermanently.jsm: isSMime:\n"); try { var ct = mime.contentType; if (!ct) return false; if (!('content-type' in mime.headers)) return false; var pt = getSMimeProtocol(getHeaderValue(mime, 'content-type')); if (!pt) return false; if (ct.toLowerCase() == "application/pkcs7-mime" && pt == "enveloped-data") { return true; } } catch (ex) { EnigmailLog.DEBUG("decryptPermanently.jsm: isSMime:" + ex + "\n"); } return false; }, decryptPGPMIME: function(mime, part) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptPGPMIME: part=" + part + "\n"); var self = this; return new Promise( function(resolve, reject) { var m = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); var messenger = Cc["@mozilla.org/messenger;1"].getService(Ci.nsIMessenger); let msgSvc = messenger.messageServiceFromURI(self.hdr.folder.getUriForMsg(self.hdr)); let u = {}; msgSvc.GetUrlForUri(self.hdr.folder.getUriForMsg(self.hdr), u, null); let op = (u.value.spec.indexOf("?") > 0 ? "&" : "?"); let url = u.value.spec + op + 'part=' + part + "&header=enigmailConvert"; EnigmailLog.DEBUG("decryptPermanently.jsm: getting data from URL " + url + "\n"); let s = EnigmailStreams.newStringStreamListener( function analyzeDecryptedData(data) { EnigmailLog.DEBUG("decryptPermanently.jsm: analyzeDecryptedData: got " + data.length + " bytes\n"); if (EnigmailLog.getLogLevel() > 5) { EnigmailLog.DEBUG("*** start data ***\n'" + data + "'\n***end data***\n"); } let subpart = mime.parts[0]; let o = { type: "mime", name: "", origName: "", data: "", partName: part, status: STATUS_OK }; if (data.length === 0) { // fail if no data found o.status = STATUS_FAILURE; resolve(o); return; } let bodyIndex = data.search(/\n\s*\r?\n/); if (bodyIndex < 0) { bodyIndex = 0; } else { ++bodyIndex; } if (data.substr(bodyIndex).search(/\r?\n$/) === 0) { o.status = STATUS_FAILURE; resolve(o); return; } m.initialize(data.substr(0, bodyIndex)); let ct = m.extractHeader("content-type", false) || ""; let boundary = getBoundary(getHeaderValue(mime, 'content-type')); if (!boundary) boundary = EnigmailMime.createBoundary(); // append relevant headers mime.headers['content-type'] = "multipart/mixed; boundary=\"" + boundary + "\""; o.data = "--" + boundary + "\n"; o.data += "Content-Type: " + ct + "\n"; let h = m.extractHeader("content-transfer-encoding", false); if (h) o.data += "content-transfer-encoding: " + h + "\n"; h = m.extractHeader("content-description", true); if (h) o.data += "content-description: " + h + "\n"; o.data += data.substr(bodyIndex); if (subpart) { subpart.body = undefined; subpart.headers['content-type'] = ct; } resolve(o); } ); var ioServ = Components.classes[IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService); try { var channel = ioServ.newChannel(url, null, null); channel.asyncOpen(s, null); } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptPGPMIME: exception " + e + "\n"); } } ); }, //inline wonderland decryptINLINE: function(mime) { EnigmailLog.DEBUG("decryptPermanently.jsm: decryptINLINE:\n"); if (typeof mime.body !== 'undefined') { let ct = getContentType(getHeaderValue(mime, 'content-type')); if (ct == "text/html") { mime.body = this.stripHTMLFromArmoredBlocks(mime.body); } var enigmailSvc = EnigmailCore.getService(); var exitCodeObj = {}; var statusFlagsObj = {}; var userIdObj = {}; var sigDetailsObj = {}; var errorMsgObj = {}; var keyIdObj = {}; var blockSeparationObj = { value: "" }; var encToDetailsObj = {}; var signatureObj = {}; signatureObj.value = ""; var uiFlags = nsIEnigmail.UI_INTERACTIVE | nsIEnigmail.UI_UNVERIFIED_ENC_OK; var plaintexts = []; var blocks = EnigmailArmor.locateArmoredBlocks(mime.body); var tmp = []; for (let i = 0; i < blocks.length; i++) { if (blocks[i].blocktype == "MESSAGE") { tmp.push(blocks[i]); } } blocks = tmp; if (blocks.length < 1) { return 0; } let charset = "utf-8"; for (let i = 0; i < blocks.length; i++) { let plaintext = null; do { let ciphertext = mime.body.substring(blocks[i].begin, blocks[i].end + 1); if (ciphertext.length === 0) { break; } let hdr = ciphertext.search(/(\r\r|\n\n|\r\n\r\n)/); if (hdr > 0) { let chset = ciphertext.substr(0, hdr).match(/^(charset:)(.*)$/mi); if (chset && chset.length == 3) { charset = chset[2].trim(); } } plaintext = enigmailSvc.decryptMessage(null, uiFlags, ciphertext, signatureObj, exitCodeObj, statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj, blockSeparationObj, encToDetailsObj); if (!plaintext || plaintext.length === 0) { if (statusFlagsObj.value & nsIEnigmail.DISPLAY_MESSAGE) { EnigmailDialog.alert(null, errorMsgObj.value); this.foundPGP = -1; return -1; } if (statusFlagsObj.value & nsIEnigmail.DECRYPTION_FAILED) { if (EnigmailGpgAgent.useGpgAgent()) { // since we cannot find out if the user wants to cancel // we should ask let msg = EnigmailLocale.getString("converter.decryptBody.failed", this.subject); if (!EnigmailDialog.confirmDlg(null, msg, EnigmailLocale.getString("dlg.button.retry"), EnigmailLocale.getString("dlg.button.skip"))) { this.foundPGP = -1; return -1; } } } else if (statusFlagsObj.value & nsIEnigmail.DECRYPTION_INCOMPLETE) { this.foundPGP = -1; return -1; } } if (ct == "text/html") { plaintext = plaintext.replace(/\n/ig, "
\n"); } if (plaintext) { plaintexts.push(plaintext); } } while (!plaintext || plaintext === ""); } var decryptedMessage = mime.body.substring(0, blocks[0].begin) + plaintexts[0]; for (let i = 1; i < blocks.length; i++) { decryptedMessage += mime.body.substring(blocks[i - 1].end + 1, blocks[i].begin + 1) + plaintexts[i]; } decryptedMessage += mime.body.substring(blocks[(blocks.length - 1)].end + 1); // enable base64 encoding if non-ASCII character(s) found let j = decryptedMessage.search(/[^\x01-\x7F]/); if (j >= 0) { mime.headers['content-transfer-encoding'] = ['base64']; mime.body = EnigmailData.encodeBase64(decryptedMessage); } else { mime.body = decryptedMessage; mime.headers['content-transfer-encoding'] = ['8bit']; } let origCharset = getCharset(getHeaderValue(mime, 'content-type')); if (origCharset) { mime.headers['content-type'] = getHeaderValue(mime, 'content-type').replace(origCharset, charset); } else { mime.headers['content-type'] = getHeaderValue(mime, 'content-type') + "; charset=" + charset; } this.foundPGP = 1; return 1; } if (typeof mime.parts !== 'undefined' && mime.parts.length > 0) { var ret = 0; for (let part in mime.parts) { ret += this.decryptINLINE(mime.parts[part]); } return ret; } let ct = getContentType(getHeaderValue(mime, 'content-type')); EnigmailLog.DEBUG("decryptPermanently.jsm: Decryption skipped: " + ct + "\n"); return 0; }, stripHTMLFromArmoredBlocks: function(text) { var index = 0; var begin = text.indexOf("-----BEGIN PGP"); var end = text.indexOf("-----END PGP"); while (begin > -1 && end > -1) { let sub = text.substring(begin, end); sub = sub.replace(/(<([^>]+)>)/ig, ""); sub = sub.replace(/&[A-z]+;/ig, ""); text = text.substring(0, begin) + sub + text.substring(end); index = end + 10; begin = text.indexOf("-----BEGIN PGP", index); end = text.indexOf("-----END PGP", index); } return text; }, /****** * * We have the technology we can rebuild. * * Function to reassemble the message from the MIME Tree * into a String. * ******/ mimeToString: function(mime, topLevel) { EnigmailLog.DEBUG("decryptPermanently.jsm: mimeToString: part: '" + mime.partName + "', is of type '" + typeof(mime) + "'\n"); let ct = getContentType(getHeaderValue(mime, 'content-type')); if (!ct) { return ""; } let boundary = getBoundary(getHeaderValue(mime, 'content-type')); let msg = ""; if (mime.isBrokenByExchange) { EnigmailLog.DEBUG("decryptPermanently.jsm: mimeToString: MS-Exchange fix\n"); for (let j in this.allTasks) { if (this.allTasks[j].partName == mime.parts[0].partName) { boundary = EnigmailMime.createBoundary(); msg += getRfc822Headers(mime.headers, ct, "content-type"); msg += 'Content-Type: multipart/mixed; boundary="' + boundary + '"\r\n\r\n'; msg += "This is a multi-part message in MIME format."; msg += "\r\n--" + boundary + "\r\n"; msg += this.allTasks[j].data; msg += "\r\n--" + boundary + "--\r\n"; return msg; } } } else if (mime instanceof MimeMessageAttachment) { for (let j in this.allTasks) { if (this.allTasks[j].partName == mime.partName && this.allTasks[j].origName == mime.name) { let a = this.allTasks[j]; EnigmailLog.DEBUG("decryptPermanently.jsm: mimeToString: attaching " + j + " as '" + a.name + "'\n"); for (let header in mime.headers) { if (!(a.status == STATUS_OK && header == "content-type")) { msg += prettyPrintHeader(header, mime.headers[header]) + "\r\n"; } } if (a.type == "attachment") { if (a.status == STATUS_OK) { msg += "Content-Type: application/octet-stream; name=\"" + a.name + "\"\r\n"; msg += "Content-Disposition: attachment; filename\"" + a.name + "\"\r\n"; } msg += "Content-Transfer-Encoding: base64\r\n\r\n"; msg += EnigmailData.encodeBase64(a.data) + "\r\n"; } } } } else if (mime instanceof MimeContainer || mime instanceof MimeUnknown) { for (let j in this.allTasks) { if (this.allTasks[j].partName == mime.partName && this.allTasks[j].type == "mime") { let a = this.allTasks[j]; msg += a.data; mime.noBottomBoundary = true; } } } else if (mime instanceof MimeMessage && ct.substr(0, 5) == "text/") { let subct = mime.parts[0].headers['content-type']; if (subct) { mime.headers['content-type'] = subct; } subct = mime.parts[0].headers['content-transfer-encoding']; if (subct) { mime.headers['content-transfer-encoding'] = subct; } msg += getRfc822Headers(mime.headers, ct); msg += "\r\n" + mime.parts[0].body + "\r\n"; return msg; } else { if (!topLevel && (mime instanceof MimeMessage)) { let mimeName = mime.name; if (!mimeName || mimeName === "") { mimeName = getHeaderValue(mime, 'subject') + ".eml"; } msg += 'Content-Type: message/rfc822; name="' + EnigmailMime.encodeHeaderValue(mimeName) + '\r\n'; msg += 'Content-Transfer-Encoding: 7bit\r\n'; msg += 'Content-Disposition: attachment; filename="' + EnigmailMime.encodeHeaderValue(mimeName) + '"\r\n\r\n'; } msg += getRfc822Headers(mime.headers, ct); msg += "\r\n"; if (mime.body) { msg += mime.body + "\r\n"; } else if ((mime instanceof MimeMessage) && ct.substr(0, 5) != "text/") { msg += "This is a multi-part message in MIME format.\r\n"; } } for (let i in mime.parts) { let subPart = this.mimeToString(mime.parts[i], false); if (subPart.length > 0) { if (boundary && !(mime instanceof MimeMessage)) { msg += "--" + boundary + "\r\n"; } msg += subPart + "\r\n"; } } if (ct.indexOf("multipart/") === 0 && !(mime instanceof MimeContainer)) { if (!mime.noBottomBoundary) { msg += "--" + boundary + "--\r\n"; } } return msg; } }; /** * Format a mime header * * e.g. content-type -> Content-Type */ function formatHeader(headerLabel) { return headerLabel.replace(/^.|(\-.)/g, function(match) { return match.toUpperCase(); }); } function formatMimeHeader(headerLabel, headerValue) { if (headerLabel.search(/^(sender|from|reply-to|to|cc|bcc)$/i) === 0) { return formatHeader(headerLabel) + ": " + EnigmailMime.formatHeaderData(EnigmailMime.formatEmailAddress(headerValue)); } else { return formatHeader(headerLabel) + ": " + EnigmailMime.formatHeaderData(EnigmailMime.encodeHeaderValue(headerValue)); } } function prettyPrintHeader(headerLabel, headerData) { let hdrData = ""; if (Array.isArray(headerData)) { let h = []; for (let i in headerData) { h.push(formatMimeHeader(headerLabel, GlodaUtils.deMime(headerData[i]))); } return h.join("\r\n"); } else { return formatMimeHeader(headerLabel, GlodaUtils.deMime(String(headerData))); } } function getHeaderValue(mimeStruct, header) { EnigmailLog.DEBUG("decryptPermanently.jsm: getHeaderValue: '" + header + "'\n"); try { if (header in mimeStruct.headers) { if (typeof mimeStruct.headers[header] == "string") { return mimeStruct.headers[header]; } else { return mimeStruct.headers[header].join(" "); } } else { return ""; } } catch (ex) { EnigmailLog.DEBUG("decryptPermanently.jsm: getHeaderValue: header not present\n"); return ""; } } /*** * get the formatted headers for MimeMessage objects * * @headerArr: Array of headers (key/value pairs), such as mime.headers * @ignoreHeadersArr: Array of headers to exclude from returning * * @return: String containing formatted header list */ function getRfc822Headers(headerArr, contentType, ignoreHeadersArr) { let hdrs = ""; let ignore = []; if (contentType.indexOf("multipart/") >= 0) { ignore = ['content-transfer-encoding', 'content-disposition', 'content-description' ]; } if (ignoreHeadersArr) { ignore = ignore.concat(ignoreHeadersArr); } for (let i in headerArr) { if (ignore.indexOf(i) < 0) { hdrs += prettyPrintHeader(i, headerArr[i]) + "\r\n"; } } return hdrs; } function getContentType(shdr) { try { shdr = String(shdr); return shdr.match(/([A-z-]+\/[A-z-]+)/)[1].toLowerCase(); } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: getContentType: " + e + "\n"); return null; } } // return the content of the boundary parameter function getBoundary(shdr) { try { shdr = String(shdr); return shdr.match(/boundary="?([A-z0-9'()+_,-.\/:=?]+)"?/i)[1]; } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: getBoundary: " + e + "\n"); return null; } } function getCharset(shdr) { try { shdr = String(shdr); return shdr.match(/charset="?([A-z0-9'()+_,-.\/:=?]+)"?/)[1].toLowerCase(); } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: getCharset: " + e + "\n"); return null; } } function getProtocol(shdr) { try { shdr = String(shdr); return shdr.match(/protocol="?([A-z0-9'()+_,-.\/:=?]+)"?/)[1].toLowerCase(); } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: getProtocol: " + e + "\n"); return ""; } } function getSMimeProtocol(shdr) { try { shdr = String(shdr); return shdr.match(/smime-type="?([A-z0-9'()+_,-.\/:=?]+)"?/)[1].toLowerCase(); } catch (e) { EnigmailLog.DEBUG("decryptPermanently.jsm: getSMimeProtocol: " + e + "\n"); return ""; } } enigmail/package/decryption.jsm000066400000000000000000000665501266701624400171550ustar00rootroot00000000000000/*global Components: false, EnigmailData: false, EnigmailLog: false, EnigmailPrefs: false, EnigmailLocale: false, EnigmailArmor: false, EnigmailExecution: false, EnigmailDialog: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailDecryption"]; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/data.jsm"); Cu.import("resource://enigmail/log.jsm"); Cu.import("resource://enigmail/prefs.jsm"); Cu.import("resource://enigmail/armor.jsm"); Cu.import("resource://enigmail/locale.jsm"); Cu.import("resource://enigmail/data.jsm"); Cu.import("resource://enigmail/execution.jsm"); Cu.import("resource://enigmail/dialog.jsm"); Cu.import("resource://enigmail/httpProxy.jsm"); /*global EnigmailHttpProxy: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/errorHandling.jsm"); /*global EnigmailErrorHandling: false */ Cu.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ Cu.import("resource://enigmail/key.jsm"); /*global EnigmailKey: false */ Cu.import("resource://enigmail/passwords.jsm"); /*global EnigmailPassword: false */ const nsIEnigmail = Ci.nsIEnigmail; const EC = EnigmailCore; const STATUS_ERROR = nsIEnigmail.BAD_SIGNATURE | nsIEnigmail.DECRYPTION_FAILED; const STATUS_DECRYPTION_OK = nsIEnigmail.DECRYPTION_OKAY; const STATUS_GOODSIG = nsIEnigmail.GOOD_SIGNATURE; const NS_WRONLY = 0x02; function statusObjectFrom(signatureObj, exitCodeObj, statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj, blockSeparationObj, encToDetailsObj) { return { signature: signatureObj, exitCode: exitCodeObj, statusFlags: statusFlagsObj, keyId: keyIdObj, userId: userIdObj, sigDetails: sigDetailsObj, message: errorMsgObj, blockSeparation: blockSeparationObj, encToDetails: encToDetailsObj }; } function newStatusObject() { return statusObjectFrom({ value: "" }, {}, {}, {}, {}, {}, {}, {}, {}); } const EnigmailDecryption = { decryptMessageStart: function(win, verifyOnly, noOutput, listener, statusFlagsObj, errorMsgObj, mimeSignatureFile, maxOutputLength) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageStart: verifyOnly=" + verifyOnly + "\n"); if (!EnigmailCore.getService(win)) { EnigmailLog.ERROR("enigmailCommon.jsm: decryptMessageStart: not yet initialized\n"); errorMsgObj.value = EnigmailLocale.getString("notInit"); return null; } if (EnigmailKeyRing.isGeneratingKey()) { errorMsgObj.value = EnigmailLocale.getString("notComplete"); return null; } var args = EnigmailGpg.getStandardArgs(true); var keyserver = EnigmailPrefs.getPref("autoKeyRetrieve"); if (keyserver && keyserver !== "") { keyserver = keyserver.trim(); args.push("--keyserver-options"); var keySrvArgs = "auto-key-retrieve"; var srvProxy = EnigmailHttpProxy.getHttpProxy(keyserver); if (srvProxy) { keySrvArgs += ",http-proxy=" + srvProxy; } args.push(keySrvArgs); args.push("--keyserver"); args.push(keyserver); } if (noOutput) { args.push("--verify"); if (mimeSignatureFile) { args.push(mimeSignatureFile); args.push("-"); } } else { if (maxOutputLength) { args.push("--max-output"); args.push(String(maxOutputLength)); } args.push("--decrypt"); } var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, !verifyOnly, win, listener, statusFlagsObj); if (statusFlagsObj.value & nsIEnigmail.MISSING_PASSPHRASE) { EnigmailLog.ERROR("enigmailCommon.jsm: decryptMessageStart: Error - no passphrase supplied\n"); errorMsgObj.value = EnigmailLocale.getString("noPassphrase"); return null; } return proc; }, decryptMessageEnd: function(stderrStr, exitCode, outputLen, verifyOnly, noOutput, uiFlags, retStatusObj) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: uiFlags=" + uiFlags + ", verifyOnly=" + verifyOnly + ", noOutput=" + noOutput + "\n"); stderrStr = stderrStr.replace(/\r\n/g, "\n"); EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: stderrStr=\n" + stderrStr + "\n"); var interactive = uiFlags & nsIEnigmail.UI_INTERACTIVE; var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME; var allowImport = uiFlags & nsIEnigmail.UI_ALLOW_KEY_IMPORT; var unverifiedEncryptedOK = uiFlags & nsIEnigmail.UI_UNVERIFIED_ENC_OK; var j; retStatusObj.statusFlags = 0; retStatusObj.errorMsg = ""; retStatusObj.blockSeparation = ""; var errorMsg = EnigmailErrorHandling.parseErrorOutput(stderrStr, retStatusObj); if (retStatusObj.statusFlags & STATUS_ERROR) { retStatusObj.errorMsg = errorMsg; } else { retStatusObj.errorMsg = ""; } if (pgpMime) { retStatusObj.statusFlags |= verifyOnly ? nsIEnigmail.PGP_MIME_SIGNED : nsIEnigmail.PGP_MIME_ENCRYPTED; } var statusMsg = retStatusObj.statusMsg; exitCode = EnigmailExecution.fixExitCode(exitCode, retStatusObj); if ((exitCode === 0) && !noOutput && !outputLen && ((retStatusObj.statusFlags & (STATUS_DECRYPTION_OK | STATUS_GOODSIG)) === 0)) { exitCode = -1; } if (retStatusObj.statusFlags & nsIEnigmail.DISPLAY_MESSAGE && retStatusObj.extendedStatus.search(/\bdisp:/) >= 0) { EnigmailDialog.alert(null, statusMsg); return -1; } var errLines; if (statusMsg) { errLines = statusMsg.split(/\r?\n/); } else { // should not really happen ... errLines = stderrStr.split(/\r?\n/); } // possible STATUS Patterns (see GPG dod DETAILS.txt): // one of these should be set for a signature: var goodsigPat = /GOODSIG (\w{16}) (.*)$/i; var badsigPat = /BADSIG (\w{16}) (.*)$/i; var expsigPat = /EXPSIG (\w{16}) (.*)$/i; var expkeysigPat = /EXPKEYSIG (\w{16}) (.*)$/i; var revkeysigPat = /REVKEYSIG (\w{16}) (.*)$/i; var errsigPat = /ERRSIG (\w{16}) (.*)$/i; // additional infos for good signatures: var validSigPat = /VALIDSIG (\w+) (.*) (\d+) (.*)/i; // hint for a certain key id: var userIdHintPat = /USERID_HINT (\w{16}) (.*)$/i; // to find out for which recipients the email was encrypted: var encToPat = /ENC_TO (\w{16}) (.*)$/i; var matches; var signed = false; var goodOrExpOrRevSignature = false; var sigKeyId = ""; // key of sender var sigUserId = ""; // user ID of sender var sigDetails = ""; var encToDetails = ""; var encToArray = []; // collect ENC_TO lines here for (j = 0; j < errLines.length; j++) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: process: " + errLines[j] + "\n"); // ENC_TO entry // - collect them for later processing to print details matches = errLines[j].match(encToPat); if (matches && (matches.length > 2)) { encToArray.push("0x" + matches[1]); } // USERID_HINT entry // - NOTE: NO END of loop // ERROR: wrong to set userId because ecom is NOT the sender: //matches = errLines[j].match(userIdHintPat); //if (matches && (matches.length > 2)) { // sigKeyId = matches[1]; // sigUserId = matches[2]; //} // check for one of the possible SIG entries: // GOODSIG entry matches = errLines[j].match(goodsigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; sigKeyId = matches[1]; sigUserId = matches[2]; } else { // BADSIG entry => signature found but bad matches = errLines[j].match(badsigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = false; sigKeyId = matches[1]; sigUserId = matches[2]; } else { // EXPSIG entry => expired signature found matches = errLines[j].match(expsigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; sigKeyId = matches[1]; sigUserId = matches[2]; } else { // EXPKEYSIG entry => signature found but key expired matches = errLines[j].match(expkeysigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; sigKeyId = matches[1]; sigUserId = matches[2]; } else { // REVKEYSIG entry => signature found but key revoked matches = errLines[j].match(revkeysigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; sigKeyId = matches[1]; sigUserId = matches[2]; } else { // ERRSIG entry => signature found but key not usable or unavailable matches = errLines[j].match(errsigPat); if (matches && (matches.length > 2)) { if (signed) { EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = false; sigKeyId = matches[1]; // no user id with ecom istatus entry } } } } } } } // end loop of processing errLines if (goodOrExpOrRevSignature) { for (j = 0; j < errLines.length; j++) { matches = errLines[j].match(validSigPat); if (matches && (matches.length > 4)) { if (matches[4].length == 40) // in case of several subkeys refer to the main key ID. // Only works with PGP V4 keys (Fingerprint length ==40) sigKeyId = matches[4].substr(-16); } if (matches && (matches.length > 2)) { sigDetails = errLines[j].substr(9); break; } } } if (sigUserId && sigKeyId && EnigmailPrefs.getPref("displaySecondaryUid")) { let keyObj = EnigmailKeyRing.getKeyById(sigKeyId); if (keyObj) { if (keyObj.photoAvailable) { retStatusObj.statusFlags |= nsIEnigmail.PHOTO_AVAILABLE; } sigUserId = EnigmailKeyRing.getValidUids(sigKeyId).join("\n"); } } else if (sigUserId) { sigUserId = EnigmailData.convertToUnicode(sigUserId, "UTF-8"); } // add list of keys used for encryption if known (and their user IDs) if known // Parsed status messages are something like (here the German version): // [GNUPG:] ENC_TO AAAAAAAAAAAAAAAA 1 0 // [GNUPG:] ENC_TO 5B820D2D4553884F 16 0 // [GNUPG:] ENC_TO 37904DF2E631552F 1 0 // [GNUPG:] ENC_TO BBBBBBBBBBBBBBBB 1 0 // gpg: verschlüsselt mit 3072-Bit RSA Schlüssel, ID BBBBBBBB, erzeugt 2009-11-28 // "Joe Doo " // [GNUPG:] NO_SECKEY E71712DF47BBCC40 // gpg: verschlüsselt mit RSA Schlüssel, ID AAAAAAAA // [GNUPG:] NO_SECKEY AAAAAAAAAAAAAAAA if (encToArray.length > 0) { // for each key also show an associated user ID if known: for (var encIdx = 0; encIdx < encToArray.length; ++encIdx) { var localKeyId = encToArray[encIdx]; // except for ID 00000000, which signals hidden keys if (localKeyId != "0x0000000000000000") { let localKey = EnigmailKeyRing.getKeyById(localKeyId); if (localKey) { encToArray[encIdx] += " (" + localKey.userId + ")"; } } else { encToArray[encIdx] = EnigmailLocale.getString("hiddenKey"); } } encToDetails = "\n " + encToArray.join(",\n ") + "\n"; } retStatusObj.userId = sigUserId; retStatusObj.keyId = sigKeyId; retStatusObj.sigDetails = sigDetails; retStatusObj.encToDetails = encToDetails; if (signed) { var trustPrefix = ""; if (retStatusObj.statusFlags & nsIEnigmail.UNTRUSTED_IDENTITY) { trustPrefix += EnigmailLocale.getString("prefUntrusted") + " "; } if (retStatusObj.statusFlags & nsIEnigmail.REVOKED_KEY) { trustPrefix += EnigmailLocale.getString("prefRevoked") + " "; } if (retStatusObj.statusFlags & nsIEnigmail.EXPIRED_KEY_SIGNATURE) { trustPrefix += EnigmailLocale.getString("prefExpiredKey") + " "; } else if (retStatusObj.statusFlags & nsIEnigmail.EXPIRED_SIGNATURE) { trustPrefix += EnigmailLocale.getString("prefExpired") + " "; } if (goodOrExpOrRevSignature) { retStatusObj.errorMsg = trustPrefix + EnigmailLocale.getString("prefGood", [sigUserId]); /* + ", " + EnigmailLocale.getString("keyId") + " 0x" + sigKeyId.substring(8,16); */ } else { if (sigUserId.length > 0) { retStatusObj.errorMsg = trustPrefix + EnigmailLocale.getString("prefBad", [sigUserId]); } if (!exitCode) exitCode = 1; } } if (retStatusObj.statusFlags & nsIEnigmail.UNVERIFIED_SIGNATURE) { retStatusObj.keyId = EnigmailKey.extractPubkey(statusMsg); if (retStatusObj.statusFlags & nsIEnigmail.DECRYPTION_OKAY) { exitCode = 0; } } if (exitCode !== 0) { // Error processing EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: command execution exit code: " + exitCode + "\n"); } return exitCode; }, /** * Decrypts a PGP ciphertext and returns the the plaintext * *in @parent a window object *in @uiFlags see flag options in nsIEnigmail.idl, UI_INTERACTIVE, UI_ALLOW_KEY_IMPORT *in @cipherText a string containing a PGP Block *out @signatureObj *out @exitCodeObj contains the exit code *out @statusFlagsObj see status flags in nslEnigmail.idl, GOOD_SIGNATURE, BAD_SIGNATURE *out @keyIdObj holds the key id *out @userIdObj holds the user id *out @sigDetailsObj *out @errorMsgObj error string *out @blockSeparationObj *out @encToDetailsObj returns in details, which keys the mesage was encrypted for (ENC_TO entries) * * @return string plaintext ("" if error) * */ decryptMessage: function(parent, uiFlags, cipherText, signatureObj, exitCodeObj, statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj, blockSeparationObj, encToDetailsObj) { const esvc = EnigmailCore.getEnigmailService(); EnigmailLog.DEBUG("enigmail.js: Enigmail.decryptMessage: " + cipherText.length + " bytes, " + uiFlags + "\n"); if (!cipherText) return ""; var interactive = uiFlags & nsIEnigmail.UI_INTERACTIVE; var allowImport = uiFlags & nsIEnigmail.UI_ALLOW_KEY_IMPORT; var unverifiedEncryptedOK = uiFlags & nsIEnigmail.UI_UNVERIFIED_ENC_OK; var oldSignature = signatureObj.value; EnigmailLog.DEBUG("enigmail.js: Enigmail.decryptMessage: oldSignature=" + oldSignature + "\n"); signatureObj.value = ""; exitCodeObj.value = -1; statusFlagsObj.value = 0; keyIdObj.value = ""; userIdObj.value = ""; errorMsgObj.value = ""; var beginIndexObj = {}; var endIndexObj = {}; var indentStrObj = {}; var blockType = EnigmailArmor.locateArmoredBlock(cipherText, 0, "", beginIndexObj, endIndexObj, indentStrObj); if (!blockType || blockType == "SIGNATURE") { errorMsgObj.value = EnigmailLocale.getString("noPGPblock"); statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE; return ""; } var publicKey = (blockType == "PUBLIC KEY BLOCK"); var verifyOnly = (blockType == "SIGNED MESSAGE"); var pgpBlock = cipherText.substr(beginIndexObj.value, endIndexObj.value - beginIndexObj.value + 1); if (indentStrObj.value) { var indentRegexp = new RegExp("^" + indentStrObj.value, "gm"); pgpBlock = pgpBlock.replace(indentRegexp, ""); if (indentStrObj.value.substr(-1) == " ") { var indentRegexpStr = "^" + indentStrObj.value.replace(/ $/m, "$"); indentRegexp = new RegExp(indentRegexpStr, "gm"); pgpBlock = pgpBlock.replace(indentRegexp, ""); } } // HACK to better support messages from Outlook: if there are empty lines, drop them if (pgpBlock.search(/MESSAGE-----\r?\n\r?\nVersion/) >= 0) { EnigmailLog.DEBUG("enigmail.js: Enigmail.decryptMessage: apply Outlook empty line workaround\n"); pgpBlock = pgpBlock.replace(/\r?\n\r?\n/g, "\n"); } var head = cipherText.substr(0, beginIndexObj.value); var tail = cipherText.substr(endIndexObj.value + 1, cipherText.length - endIndexObj.value - 1); if (publicKey) { if (!allowImport) { errorMsgObj.value = EnigmailLocale.getString("keyInMessageBody"); statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE; statusFlagsObj.value |= nsIEnigmail.INLINE_KEY; return ""; } // Import public key exitCodeObj.value = EnigmailKeyRing.importKey(parent, true, pgpBlock, "", errorMsgObj); if (exitCodeObj.value === 0) { statusFlagsObj.value |= nsIEnigmail.IMPORTED_KEY; } return ""; } var newSignature = ""; if (verifyOnly) { newSignature = EnigmailArmor.extractSignaturePart(pgpBlock, nsIEnigmail.SIGNATURE_ARMOR); if (oldSignature && (newSignature != oldSignature)) { EnigmailLog.ERROR("enigmail.js: Enigmail.decryptMessage: Error - signature mismatch " + newSignature + "\n"); errorMsgObj.value = EnigmailLocale.getString("sigMismatch"); statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE; return ""; } } var startErrorMsgObj = {}; var noOutput = false; var listener = EnigmailExecution.newSimpleListener( function _stdin(pipe) { pipe.write(pgpBlock); pipe.close(); }); var maxOutput = pgpBlock.length * 100; // limit output to 100 times message size // to avoid DoS attack var proc = EnigmailDecryption.decryptMessageStart(parent, verifyOnly, noOutput, listener, statusFlagsObj, startErrorMsgObj, null, maxOutput); if (!proc) { errorMsgObj.value = startErrorMsgObj.value; statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE; return ""; } // Wait for child to close proc.wait(); var plainText = EnigmailData.getUnicodeData(listener.stdoutData); var retStatusObj = {}; var exitCode = EnigmailDecryption.decryptMessageEnd(EnigmailData.getUnicodeData(listener.stderrData), listener.exitCode, plainText.length, verifyOnly, noOutput, uiFlags, retStatusObj); exitCodeObj.value = exitCode; statusFlagsObj.value = retStatusObj.statusFlags; errorMsgObj.value = retStatusObj.errorMsg; userIdObj.value = retStatusObj.userId; keyIdObj.value = retStatusObj.keyId; sigDetailsObj.value = retStatusObj.sigDetails; if (encToDetailsObj) { encToDetailsObj.value = retStatusObj.encToDetails; } blockSeparationObj.value = retStatusObj.blockSeparation; if ((head.search(/\S/) >= 0) || (tail.search(/\S/) >= 0)) { statusFlagsObj.value |= nsIEnigmail.PARTIALLY_PGP; } if (exitCodeObj.value === 0) { // Normal return var doubleDashSeparator = false; try { doubleDashSeparator = EnigmailPrefs.getPrefBranch().getBoolPref("doubleDashSeparator"); } catch (ex) {} if (doubleDashSeparator && (plainText.search(/(\r|\n)-- +(\r|\n)/) < 0)) { // Workaround for MsgCompose stripping trailing spaces from sig separator plainText = plainText.replace(/(\r|\n)--(\r|\n)/, "$1-- $2"); } statusFlagsObj.value |= nsIEnigmail.DISPLAY_MESSAGE; if (verifyOnly && indentStrObj.value) { plainText = plainText.replace(/^/gm, indentStrObj.value); } return EnigmailDecryption.inlineInnerVerification(parent, uiFlags, plainText, statusObjectFrom(signatureObj, exitCodeObj, statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj, blockSeparationObj, encToDetailsObj)); } var pubKeyId = keyIdObj.value; if (statusFlagsObj.value & nsIEnigmail.BAD_SIGNATURE) { if (verifyOnly && indentStrObj.value) { // Probably replied message that could not be verified errorMsgObj.value = EnigmailLocale.getString("unverifiedReply") + "\n\n" + errorMsgObj.value; return ""; } // Return bad signature (for checking later) signatureObj.value = newSignature; } else if (pubKeyId && (statusFlagsObj.value & nsIEnigmail.UNVERIFIED_SIGNATURE)) { var innerKeyBlock; if (verifyOnly) { // Search for indented public key block in signed message var innerBlockType = EnigmailArmor.locateArmoredBlock(pgpBlock, 0, "- ", beginIndexObj, endIndexObj, indentStrObj); if (innerBlockType == "PUBLIC KEY BLOCK") { innerKeyBlock = pgpBlock.substr(beginIndexObj.value, endIndexObj.value - beginIndexObj.value + 1); innerKeyBlock = innerKeyBlock.replace(/- -----/g, "-----"); statusFlagsObj.value |= nsIEnigmail.INLINE_KEY; EnigmailLog.DEBUG("enigmail.js: Enigmail.decryptMessage: innerKeyBlock found\n"); } } if (allowImport) { var importedKey = false; if (innerKeyBlock) { var importErrorMsgObj = {}; var exitStatus = EnigmailKeyRing.importKey(parent, true, innerKeyBlock, pubKeyId, importErrorMsgObj); importedKey = (exitStatus === 0); if (exitStatus > 0) { EnigmailDialog.alert(parent, EnigmailLocale.getString("cantImport") + importErrorMsgObj.value); } } if (importedKey) { // Recursive call; note that nsIEnigmail.UI_ALLOW_KEY_IMPORT is unset // to break the recursion var uiFlagsDeep = interactive ? nsIEnigmail.UI_INTERACTIVE : 0; signatureObj.value = ""; return EnigmailDecryption.decryptMessage(parent, uiFlagsDeep, pgpBlock, signatureObj, exitCodeObj, statusFlagsObj, keyIdObj, userIdObj, sigDetailsObj, errorMsgObj); } } if (plainText && !unverifiedEncryptedOK) { // Append original PGP block to unverified message plainText = "-----BEGIN PGP UNVERIFIED MESSAGE-----\r\n" + plainText + "-----END PGP UNVERIFIED MESSAGE-----\r\n\r\n" + pgpBlock; } } return verifyOnly ? "" : plainText; }, inlineInnerVerification: function(parent, uiFlags, text, statusObject) { EnigmailLog.DEBUG("enigmail.js: Enigmail.inlineInnerVerification\n"); if (text && text.indexOf("-----BEGIN PGP SIGNED MESSAGE-----") === 0) { var status = newStatusObject(); var newText = EnigmailDecryption.decryptMessage(parent, uiFlags, text, status.signature, status.exitCode, status.statusFlags, status.keyId, status.userId, status.sigDetails, status.message, status.blockSeparation, status.encToDetails); if (status.exitCode.value === 0) { text = newText; // merge status into status object: statusObject.statusFlags.value = statusObject.statusFlags.value | status.statusFlags.value; statusObject.keyId.value = status.keyId.value; statusObject.userId.value = status.userId.value; statusObject.sigDetails.value = status.sigDetails.value; statusObject.message.value = status.message.value; // we don't merge encToDetails } } return text; }, decryptAttachment: function(parent, outFile, displayName, byteData, exitCodeObj, statusFlagsObj, errorMsgObj) { const esvc = EnigmailCore.getEnigmailService(); EnigmailLog.DEBUG("enigmail.js: Enigmail.decryptAttachment: parent=" + parent + ", outFileName=" + outFile.path + "\n"); var attachmentHead = byteData.substr(0, 200); if (attachmentHead.match(/\-\-\-\-\-BEGIN PGP \w+ KEY BLOCK\-\-\-\-\-/)) { // attachment appears to be a PGP key file if (EnigmailDialog.confirmDlg(parent, EnigmailLocale.getString("attachmentPgpKey", [displayName]), EnigmailLocale.getString("keyMan.button.import"), EnigmailLocale.getString("dlg.button.view"))) { var preview = EnigmailKey.getKeyListFromKeyBlock(byteData, errorMsgObj); exitCodeObj.keyList = preview; var exitStatus = 0; if (errorMsgObj.value === "") { if (preview.length > 0) { if (preview.length == 1) { exitStatus = EnigmailDialog.confirmDlg(parent, EnigmailLocale.getString("doImportOne", [preview[0].name, preview[0].id])); } else { exitStatus = EnigmailDialog.confirmDlg(parent, EnigmailLocale.getString("doImportMultiple", [ preview.map(function(a) { return "\t" + a.name + " (" + a.id + ")"; }). join("\n") ])); } if (exitStatus) { exitCodeObj.value = EnigmailKeyRing.importKey(parent, false, byteData, "", errorMsgObj); statusFlagsObj.value = nsIEnigmail.IMPORTED_KEY; } else { exitCodeObj.value = 0; statusFlagsObj.value = nsIEnigmail.DISPLAY_MESSAGE; } } } } else { exitCodeObj.value = 0; statusFlagsObj.value = nsIEnigmail.DISPLAY_MESSAGE; } return true; } var outFileName = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePathReadonly(outFile.QueryInterface(Ci.nsIFile), NS_WRONLY)); var args = EnigmailGpg.getStandardArgs(true); args = args.concat(["-o", outFileName, "--yes"]); args = args.concat(EnigmailPassword.command()); args.push("-d"); statusFlagsObj.value = 0; var listener = EnigmailExecution.newSimpleListener( function _stdin(pipe) { pipe.write(byteData); pipe.close(); }); var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, false, parent, listener, statusFlagsObj); if (!proc) { return false; } // Wait for child STDOUT to close proc.wait(); var statusMsgObj = {}; var cmdLineObj = {}; exitCodeObj.value = EnigmailExecution.execEnd(listener, statusFlagsObj, statusMsgObj, cmdLineObj, errorMsgObj); return true; }, registerOn: function(target) { target.decryptMessage = EnigmailDecryption.decryptMessage; target.decryptAttachment = EnigmailDecryption.decryptAttachment; } }; enigmail/package/dialog.jsm000066400000000000000000000326151266701624400162270ustar00rootroot00000000000000/*global Components: false, EnigmailLocale: false, EnigmailLog: false, EnigmailWindows: false, EnigmailPrefs: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailDialog"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/locale.jsm"); Cu.import("resource://enigmail/log.jsm"); Cu.import("resource://enigmail/windows.jsm"); Cu.import("resource://enigmail/prefs.jsm"); const BUTTON_POS_0 = 1; const BUTTON_POS_1 = 1 << 8; const BUTTON_POS_2 = 1 << 16; const gPromptSvc = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService); const LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const EnigmailDialog = { /*** * Confirmation dialog with OK / Cancel buttons (both customizable) * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * @okLabel: String - OPTIONAL label for OK button * @cancelLabel: String - OPTIONAL label for cancel button * * @return: Boolean - true: OK pressed / false: Cancel or ESC pressed */ confirmDlg: function(win, mesg, okLabel, cancelLabel) { var buttonTitles = 0; if (!okLabel && !cancelLabel) { buttonTitles = (gPromptSvc.BUTTON_TITLE_YES * BUTTON_POS_0) + (gPromptSvc.BUTTON_TITLE_NO * BUTTON_POS_1); } else { if (okLabel) { buttonTitles += (gPromptSvc.BUTTON_TITLE_IS_STRING * gPromptSvc.BUTTON_POS_0); } else { buttonTitles += gPromptSvc.BUTTON_TITLE_OK * BUTTON_POS_0; } if (cancelLabel) { buttonTitles += (gPromptSvc.BUTTON_TITLE_IS_STRING * gPromptSvc.BUTTON_POS_1); } else { buttonTitles += gPromptSvc.BUTTON_TITLE_CANCEL * BUTTON_POS_1; } } let buttonPressed = gPromptSvc.confirmEx(win, EnigmailLocale.getString("enigConfirm"), mesg, buttonTitles, okLabel, cancelLabel, null, null, {}); return (buttonPressed === 0); }, /** * Displays an alert dialog. * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * * no return value */ alert: function(win, mesg) { if (mesg.length > 1000) { EnigmailDialog.longAlert(win, mesg, null, EnigmailLocale.getString("dlg.button.close")); } else { try { gPromptSvc.alert(win, EnigmailLocale.getString("enigAlert"), mesg); } catch (ex) { EnigmailLog.writeException("alert", ex); } } }, /** * Displays an alert dialog with 1-3 optional buttons. * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * @checkBoxLabel: String - if not null, display checkbox with text; the * checkbox state is returned in checkedObj.value * @button-Labels: String - use "&" to indicate access key * use "buttonType:label" or ":buttonType" to indicate special button types * (buttonType is one of cancel, help, extra1, extra2) * @checkedObj: Object - holding the checkbox value * * @return: 0-2: button Number pressed * -1: ESC or close window button pressed * */ longAlert: function(win, mesg, checkBoxLabel, okLabel, labelButton2, labelButton3, checkedObj) { var result = { value: -1, checked: false }; if (!win) { win = EnigmailWindows.getBestParentWin(); } win.openDialog("chrome://enigmail/content/enigmailAlertDlg.xul", "", "chrome,dialog,modal,centerscreen,resizable", { msgtext: mesg, checkboxLabel: checkBoxLabel, button1: okLabel, button2: labelButton2, button3: labelButton3 }, result); if (checkBoxLabel) { checkedObj.value = result.checked; } return result.value; }, /** * Display a dialog with a message and a text entry field * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * @valueObj: Object - object to hold the entered text in .value * * @return: Boolean - true if OK was pressed / false otherwise */ promptValue: function(win, mesg, valueObj) { return gPromptSvc.prompt(win, EnigmailLocale.getString("enigPrompt"), mesg, valueObj, "", {}); }, /** * Display an alert message with an OK button and a checkbox to hide * the message in the future. * In case the checkbox was pressed in the past, the dialog is skipped * * @win: nsIWindow - the parent window to hold the modal dialog * @mesg: String - the localized message to display * @prefText: String - the name of the Enigmail preference to read/store the * the future display status */ alertPref: function(win, mesg, prefText) { const display = true; const dontDisplay = false; let prefValue = EnigmailPrefs.getPref(prefText); if (prefValue === display) { let checkBoxObj = { value: false }; let buttonPressed = gPromptSvc.confirmEx(win, EnigmailLocale.getString("enigAlert"), mesg, (gPromptSvc.BUTTON_TITLE_OK * BUTTON_POS_0), null, null, null, EnigmailLocale.getString("dlgNoPrompt"), checkBoxObj); if (checkBoxObj.value && buttonPressed === 0) { EnigmailPrefs.setPref(prefText, dontDisplay); } } }, /** * Display an alert dialog together with the message "this dialog will be * displayed |counter| more times". * If |counter| is 0, the dialog is not displayed. * * @win: nsIWindow - the parent window to hold the modal dialog * @countPrefName: String - the name of the Enigmail preference to read/store the * the |counter| value * @mesg: String - the localized message to display * */ alertCount: function(win, countPrefName, mesg) { let alertCount = EnigmailPrefs.getPref(countPrefName); if (alertCount <= 0) return; alertCount--; EnigmailPrefs.setPref(countPrefName, alertCount); if (alertCount > 0) { mesg += EnigmailLocale.getString("repeatPrefix", [alertCount]) + " "; mesg += (alertCount == 1) ? EnigmailLocale.getString("repeatSuffixSingular") : EnigmailLocale.getString("repeatSuffixPlural"); } else { mesg += EnigmailLocale.getString("noRepeat"); } EnigmailDialog.alert(win, mesg); }, /** * Display a confirmation dialog with OK / Cancel buttons (both customizable) and * a checkbox to remember the selected choice. * * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * @prefText String - the name of the Enigmail preference to read/store the * the future display status. * the default action is chosen * @okLabel: String - OPTIONAL label for OK button * @cancelLabel: String - OPTIONAL label for cancel button * * @return: Boolean - true: 1 pressed / 0: Cancel pressed / -1: ESC pressed * * If the dialog is not displayed: * - if @prefText is type Boolean: return 1 * - if @prefText is type Number: return the last choice of the user */ confirmPref: function(win, mesg, prefText, okLabel, cancelLabel) { const notSet = 0; const yes = 1; const no = 2; const display = true; const dontDisplay = false; var buttonTitles = 0; if (!okLabel && !cancelLabel) { buttonTitles = (gPromptSvc.BUTTON_TITLE_YES * BUTTON_POS_0) + (gPromptSvc.BUTTON_TITLE_NO * BUTTON_POS_1); } else { if (okLabel) { buttonTitles += (gPromptSvc.BUTTON_TITLE_IS_STRING * gPromptSvc.BUTTON_POS_0); } else { buttonTitles += gPromptSvc.BUTTON_TITLE_OK * BUTTON_POS_0; } if (cancelLabel) { buttonTitles += (gPromptSvc.BUTTON_TITLE_IS_STRING * gPromptSvc.BUTTON_POS_1); } else { buttonTitles += gPromptSvc.BUTTON_TITLE_CANCEL * BUTTON_POS_1; } } var prefValue = EnigmailPrefs.getPref(prefText); if (typeof(prefValue) != "boolean") { // number: remember user's choice switch (prefValue) { case notSet: { let checkBoxObj = { value: false }; let buttonPressed = gPromptSvc.confirmEx(win, EnigmailLocale.getString("enigConfirm"), mesg, buttonTitles, okLabel, cancelLabel, null, EnigmailLocale.getString("dlgKeepSetting"), checkBoxObj); if (checkBoxObj.value) { EnigmailPrefs.setPref(prefText, (buttonPressed === 0 ? yes : no)); } return (buttonPressed === 0 ? 1 : 0); } case yes: return 1; case no: return 0; default: return -1; } } else { // boolean: "do not show this dialog anymore" (and return default) switch (prefValue) { case display: { let checkBoxObj = { value: false }; let buttonPressed = gPromptSvc.confirmEx(win, EnigmailLocale.getString("enigConfirm"), mesg, buttonTitles, okLabel, cancelLabel, null, EnigmailLocale.getString("dlgNoPrompt"), checkBoxObj); if (checkBoxObj.value) { EnigmailPrefs.setPref(prefText, false); } return (buttonPressed === 0 ? 1 : 0); } case dontDisplay: return 1; default: return -1; } } }, /** * Display a "open file" or "save file" dialog * * win: nsIWindow - parent window * title: String - window title * displayDir: String - optional: directory to be displayed * save: Boolean - true = Save file / false = Open file * defaultExtension: String - optional: extension for the type of files to work with, e.g. "asc" * defaultName: String - optional: filename, incl. extension, that should be suggested to * the user as default, e.g. "keys.asc" * filterPairs: Array - optional: [title, extension], e.g. ["Pictures", "*.jpg; *.png"] * * return value: nsIFile object representing the file to load or save */ filePicker: function(win, title, displayDir, save, defaultExtension, defaultName, filterPairs) { EnigmailLog.DEBUG("enigmailCommon.jsm: filePicker: " + save + "\n"); let filePicker = Cc["@mozilla.org/filepicker;1"].createInstance(); filePicker = filePicker.QueryInterface(Ci.nsIFilePicker); let mode = save ? Ci.nsIFilePicker.modeSave : Ci.nsIFilePicker.modeOpen; filePicker.init(win, title, mode); if (displayDir) { var localFile = Cc[LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); try { localFile.initWithPath(displayDir); filePicker.displayDirectory = localFile; } catch (ex) {} } if (defaultExtension) { filePicker.defaultExtension = defaultExtension; } if (defaultName) { filePicker.defaultString = defaultName; } let nfilters = 0; if (filterPairs && filterPairs.length) { nfilters = filterPairs.length / 2; } for (let index = 0; index < nfilters; index++) { filePicker.appendFilter(filterPairs[2 * index], filterPairs[2 * index + 1]); } filePicker.appendFilters(Ci.nsIFilePicker.filterAll); if (filePicker.show() == Ci.nsIFilePicker.returnCancel) { return null; } return filePicker.file.QueryInterface(Ci.nsIFile); }, /** * Displays a dialog with success/failure information after importing * keys. * * @win: nsIWindow - parent window to display modal dialog; can be null * @mesg: String - message text * @checkBoxLabel: String - if not null, display checkbox with text; the * checkbox state is returned in checkedObj.value * @button-Labels: String - use "&" to indicate access key * use "buttonType:label" or ":buttonType" to indicate special button types * (buttonType is one of cancel, help, extra1, extra2) * @checkedObj: Object - holding the checkbox value * * @return: 0-2: button Number pressed * -1: ESC or close window button pressed * */ keyImportDlg: function(win, keyList, checkBoxLabel, okLabel, labelButton2, labelButton3, checkedObj) { var result = { value: -1, checked: false }; if (!win) { win = EnigmailWindows.getBestParentWin(); } win.openDialog("chrome://enigmail/content/enigmailKeyImportInfo.xul", "", "chrome,dialog,modal,centerscreen,resizable", { keyList: keyList, checkboxLabel: checkBoxLabel, button1: okLabel, }, result); if (checkBoxLabel) { checkedObj.value = result.checked; } return result.value; }, /** * return a pre-initialized prompt service */ getPromptSvc: function() { return gPromptSvc; } }; EnigmailWindows.alert = EnigmailDialog.alert; enigmail/package/encryption.jsm000066400000000000000000000423271266701624400171630ustar00rootroot00000000000000/*global Components: false, EnigmailCore: false, EnigmailLog: false, EnigmailPrefs: false, EnigmailApp: false, EnigmailLocale: false, EnigmailDialog: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailEncryption"]; Components.utils.import("resource://enigmail/core.jsm"); Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Components.utils.import("resource://enigmail/log.jsm"); Components.utils.import("resource://enigmail/prefs.jsm"); Components.utils.import("resource://enigmail/app.jsm"); Components.utils.import("resource://enigmail/locale.jsm"); Components.utils.import("resource://enigmail/dialog.jsm"); Components.utils.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Components.utils.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Components.utils.import("resource://enigmail/errorHandling.jsm"); /*global EnigmailErrorHandling: false */ Components.utils.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Components.utils.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Components.utils.import("resource://enigmail/passwords.jsm"); /*global EnigmailPassword: false */ Components.utils.import("resource://enigmail/funcs.jsm"); /*global EnigmailFuncs: false */ Components.utils.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ const Cc = Components.classes; const Ci = Components.interfaces; const nsIEnigmail = Ci.nsIEnigmail; var EC = EnigmailCore; const gMimeHashAlgorithms = [null, "sha1", "ripemd160", "sha256", "sha384", "sha512", "sha224", "md5"]; const ENC_TYPE_MSG = 0; const ENC_TYPE_ATTACH_BINARY = 1; const ENC_TYPE_ATTACH_ASCII = 2; const GPG_COMMENT_OPT = "Using GnuPG with %s - http://www.enigmail.net/"; const EnigmailEncryption = { getEncryptCommand: function(fromMailAddr, toMailAddr, bccMailAddr, hashAlgorithm, sendFlags, isAscii, errorMsgObj) { EnigmailLog.DEBUG("encryption.jsm: getEncryptCommand: hashAlgorithm=" + hashAlgorithm + "\n"); try { fromMailAddr = EnigmailFuncs.stripEmail(fromMailAddr); toMailAddr = EnigmailFuncs.stripEmail(toMailAddr); bccMailAddr = EnigmailFuncs.stripEmail(bccMailAddr); } catch (ex) { errorMsgObj.value = EnigmailLocale.getString("invalidEmail"); return null; } var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT; var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED; var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED; var usePgpMime = sendFlags & nsIEnigmail.SEND_PGP_MIME; var useDefaultComment = false; try { useDefaultComment = EnigmailPrefs.getPref("useDefaultComment"); } catch (ex) {} var hushMailSupport = false; try { hushMailSupport = EnigmailPrefs.getPref("hushMailSupport"); } catch (ex) {} var detachedSig = (usePgpMime || (sendFlags & nsIEnigmail.SEND_ATTACHMENT)) && signMsg && !encryptMsg; var toAddrList = toMailAddr.split(/\s*,\s*/); var bccAddrList = bccMailAddr.split(/\s*,\s*/); var k; var encryptArgs = EnigmailGpg.getStandardArgs(true); if (!useDefaultComment) encryptArgs = encryptArgs.concat(["--comment", GPG_COMMENT_OPT.replace(/\%s/, EnigmailApp.getName())]); var angledFromMailAddr = ((fromMailAddr.search(/^0x/) === 0) || hushMailSupport) ? fromMailAddr : "<" + fromMailAddr + ">"; angledFromMailAddr = angledFromMailAddr.replace(/([\"\'\`])/g, "\\$1"); if (signMsg && hashAlgorithm) { encryptArgs = encryptArgs.concat(["--digest-algo", hashAlgorithm]); } if (encryptMsg) { switch (isAscii) { case ENC_TYPE_MSG: encryptArgs.push("-a"); encryptArgs.push("-t"); break; case ENC_TYPE_ATTACH_ASCII: encryptArgs.push("-a"); } encryptArgs.push("--encrypt"); if (signMsg) encryptArgs.push("--sign"); if (sendFlags & nsIEnigmail.SEND_ALWAYS_TRUST) { encryptArgs.push("--trust-model"); encryptArgs.push("always"); } if ((sendFlags & nsIEnigmail.SEND_ENCRYPT_TO_SELF) && fromMailAddr) encryptArgs = encryptArgs.concat(["--encrypt-to", angledFromMailAddr]); for (k = 0; k < toAddrList.length; k++) { toAddrList[k] = toAddrList[k].replace(/\'/g, "\\'"); if (toAddrList[k].length > 0) { encryptArgs.push("-r"); if (toAddrList[k].search(/^GROUP:/) === 0) { // groups from gpg.conf file encryptArgs.push(toAddrList[k].substr(6)); } else { encryptArgs.push((hushMailSupport || (toAddrList[k].search(/^0x/) === 0)) ? toAddrList[k] : "<" + toAddrList[k] + ">"); } } } for (k = 0; k < bccAddrList.length; k++) { bccAddrList[k] = bccAddrList[k].replace(/\'/g, "\\'"); if (bccAddrList[k].length > 0) { encryptArgs.push("--hidden-recipient"); encryptArgs.push((hushMailSupport || (bccAddrList[k].search(/^0x/) === 0)) ? bccAddrList[k] : "<" + bccAddrList[k] + ">"); } } } else if (detachedSig) { encryptArgs = encryptArgs.concat(["-s", "-b"]); switch (isAscii) { case ENC_TYPE_MSG: encryptArgs = encryptArgs.concat(["-a", "-t"]); break; case ENC_TYPE_ATTACH_ASCII: encryptArgs.push("-a"); } } else if (signMsg) { encryptArgs = encryptArgs.concat(["-t", "--clearsign"]); } if (fromMailAddr) { encryptArgs = encryptArgs.concat(["-u", angledFromMailAddr]); } return encryptArgs; }, /** * Determine if the sender key ID or user ID can be used for signing and/or encryption * * @param sendFlags: Number - the send Flags; need to contain SEND_SIGNED and/or SEND_ENCRYPTED * @param fromMailAddr: String - the sender email address or key ID * * @return Object: * - keyId: String - the found key ID, or null if fromMailAddr is not valid * - errorMsg: String - the erorr message if key not valid, or null if key is valid */ determineOwnKeyUsability: function(sendFlags, fromMailAddr) { EnigmailLog.DEBUG("encryption.jsm: determineOwnKeyUsability: sendFlags=" + sendFlags + ", sender=" + fromMailAddr + "\n"); let keyList = []; let ret = { keyId: null, errorMsg: null }; let sign = (sendFlags & nsIEnigmail.SEND_SIGNED ? true : false); let encrypt = (sendFlags & nsIEnigmail.SEND_ENCRYPTED ? true : false); if (fromMailAddr.search(/^(0x)?[A-Z0-9]+$/) === 0) { // key ID specified let key = EnigmailKeyRing.getKeyById(fromMailAddr); keyList.push(key); } else { // email address specified keyList = EnigmailKeyRing.getKeysByUserId(fromMailAddr); } if (keyList.length === 0) { ret.errorMsg = EnigmailLocale.getString("errorOwnKeyUnusable", fromMailAddr); return ret; } if (sign) { keyList = keyList.reduce(function _f(p, keyObj) { if (keyObj.getSigningValidity().keyValid) p.push(keyObj); return p; }, []); } if (encrypt) { keyList = keyList.reduce(function _f(p, keyObj) { if (keyObj.getEncryptionValidity().keyValid) p.push(keyObj); return p; }, []); } if (keyList.length === 0) { if (sign) { ret.errorMsg = EnigmailErrorHandling.determineInvSignReason(fromMailAddr); } else { ret.errorMsg = EnigmailErrorHandling.determineInvRcptReason(fromMailAddr); } } else { // TODO: use better algorithm ret.keyId = keyList[0].fpr; } return ret; }, encryptMessageStart: function(win, uiFlags, fromMailAddr, toMailAddr, bccMailAddr, hashAlgorithm, sendFlags, listener, statusFlagsObj, errorMsgObj) { EnigmailLog.DEBUG("encryption.jsm: encryptMessageStart: uiFlags=" + uiFlags + ", from " + fromMailAddr + " to " + toMailAddr + ", hashAlgorithm=" + hashAlgorithm + " (" + EnigmailData.bytesToHex( EnigmailData.pack(sendFlags, 4)) + ")\n"); let keyUseability = this.determineOwnKeyUsability(sendFlags, fromMailAddr); if (!keyUseability.keyId) { EnigmailLog.DEBUG("encryption.jsm: encryptMessageStart: own key invalid\n"); errorMsgObj.value = keyUseability.errorMsg; statusFlagsObj.value = nsIEnigmail.INVALID_RECIPIENT | nsIEnigmail.NO_SECKEY | nsIEnigmail.DISPLAY_MESSAGE; return null; } // TODO: else - use the found key ID var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME; var hashAlgo = gMimeHashAlgorithms[EnigmailPrefs.getPref("mimeHashAlgorithm")]; if (hashAlgorithm) { hashAlgo = hashAlgorithm; } errorMsgObj.value = ""; if (!sendFlags) { EnigmailLog.DEBUG("encryption.jsm: encryptMessageStart: NO ENCRYPTION!\n"); errorMsgObj.value = EnigmailLocale.getString("notRequired"); return null; } if (!EnigmailCore.getService(win)) { EnigmailLog.ERROR("encryption.jsm: encryptMessageStart: not yet initialized\n"); errorMsgObj.value = EnigmailLocale.getString("notInit"); return null; } var encryptArgs = EnigmailEncryption.getEncryptCommand(fromMailAddr, toMailAddr, bccMailAddr, hashAlgo, sendFlags, ENC_TYPE_MSG, errorMsgObj); if (!encryptArgs) return null; var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED; var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, encryptArgs, signMsg, win, listener, statusFlagsObj); if (statusFlagsObj.value & nsIEnigmail.MISSING_PASSPHRASE) { EnigmailLog.ERROR("encryption.jsm: encryptMessageStart: Error - no passphrase supplied\n"); errorMsgObj.value = ""; } if (pgpMime && errorMsgObj.value) { EnigmailDialog.alert(win, errorMsgObj.value); } return proc; }, encryptMessageEnd: function(fromMailAddr, stderrStr, exitCode, uiFlags, sendFlags, outputLen, retStatusObj) { EnigmailLog.DEBUG("encryption.jsm: encryptMessageEnd: uiFlags=" + uiFlags + ", sendFlags=" + EnigmailData.bytesToHex(EnigmailData.pack(sendFlags, 4)) + ", outputLen=" + outputLen + "\n"); var pgpMime = uiFlags & nsIEnigmail.UI_PGP_MIME; var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT; var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED; var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED; retStatusObj.statusFlags = 0; retStatusObj.errorMsg = ""; retStatusObj.blockSeparation = ""; if (!EnigmailCore.getService().initialized) { EnigmailLog.ERROR("encryption.jsm: encryptMessageEnd: not yet initialized\n"); retStatusObj.errorMsg = EnigmailLocale.getString("notInit"); return -1; } EnigmailErrorHandling.parseErrorOutput(stderrStr, retStatusObj); exitCode = EnigmailExecution.fixExitCode(exitCode, retStatusObj); if ((exitCode === 0) && !outputLen) { exitCode = -1; } if (exitCode !== 0 && (signMsg || encryptMsg)) { // GnuPG might return a non-zero exit code, even though the message was correctly // signed or encryped -> try to fix the exit code var correctedExitCode = 0; if (signMsg) { if (!(retStatusObj.statusFlags & nsIEnigmail.SIG_CREATED)) correctedExitCode = exitCode; } if (encryptMsg) { if (!(retStatusObj.statusFlags & nsIEnigmail.END_ENCRYPTION)) correctedExitCode = exitCode; } exitCode = correctedExitCode; } EnigmailLog.DEBUG("encryption.jsm: encryptMessageEnd: command execution exit code: " + exitCode + "\n"); if (retStatusObj.statusFlags & nsIEnigmail.DISPLAY_MESSAGE) { if (retStatusObj.extendedStatus.search(/\bdisp:/) >= 0) { retStatusObj.errorMsg = retStatusObj.statusMsg; } else { if (fromMailAddr.search(/^0x/) === 0) { fromMailAddr = fromMailAddr.substr(2); } if (fromMailAddr.search(/^[A-F0-9]{8,40}$/i) === 0) { fromMailAddr = "[A-F0-9]+" + fromMailAddr; } let s = new RegExp("^(\\[GNUPG:\\] )?INV_(RECP|SGNR) [0-9]+ (\\<|0x)?" + fromMailAddr + "\\>?", "m"); if (retStatusObj.statusMsg.search(s) >= 0) { retStatusObj.errorMsg += "\n\n" + EnigmailLocale.getString("keyError.resolutionAction"); } else if (retStatusObj.statusMsg.length > 0) { retStatusObj.errorMsg = retStatusObj.statusMsg; } } } else if (retStatusObj.statusFlags & nsIEnigmail.INVALID_RECIPIENT) { retStatusObj.errorMsg = retStatusObj.statusMsg; } else if (exitCode !== 0) { retStatusObj.errorMsg = EnigmailLocale.getString("badCommand"); } return exitCode; }, encryptMessage: function(parent, uiFlags, plainText, fromMailAddr, toMailAddr, bccMailAddr, sendFlags, exitCodeObj, statusFlagsObj, errorMsgObj) { EnigmailLog.DEBUG("enigmail.js: Enigmail.encryptMessage: " + plainText.length + " bytes from " + fromMailAddr + " to " + toMailAddr + " (" + sendFlags + ")\n"); exitCodeObj.value = -1; statusFlagsObj.value = 0; errorMsgObj.value = ""; if (!plainText) { EnigmailLog.DEBUG("enigmail.js: Enigmail.encryptMessage: NO ENCRYPTION!\n"); exitCodeObj.value = 0; EnigmailLog.DEBUG(" <=== encryptMessage()\n"); return plainText; } var defaultSend = sendFlags & nsIEnigmail.SEND_DEFAULT; var signMsg = sendFlags & nsIEnigmail.SEND_SIGNED; var encryptMsg = sendFlags & nsIEnigmail.SEND_ENCRYPTED; if (encryptMsg) { // First convert all linebreaks to newlines plainText = plainText.replace(/\r\n/g, "\n"); plainText = plainText.replace(/\r/g, "\n"); // we need all data in CRLF according to RFC 4880 plainText = plainText.replace(/\n/g, "\r\n"); } var inspector = Cc["@mozilla.org/jsinspector;1"].createInstance(Ci.nsIJSInspector); var listener = EnigmailExecution.newSimpleListener( function _stdin(pipe) { pipe.write(plainText); pipe.close(); }, function _done(exitCode) { // unlock wait if (inspector.eventLoopNestLevel > 0) { inspector.exitNestedEventLoop(); } }); var proc = EnigmailEncryption.encryptMessageStart(parent, uiFlags, fromMailAddr, toMailAddr, bccMailAddr, null, sendFlags, listener, statusFlagsObj, errorMsgObj); if (!proc) { exitCodeObj.value = -1; EnigmailLog.DEBUG(" <=== encryptMessage()\n"); return ""; } // Wait for child pipes to close inspector.enterNestedEventLoop(0); var retStatusObj = {}; exitCodeObj.value = EnigmailEncryption.encryptMessageEnd(fromMailAddr, EnigmailData.getUnicodeData(listener.stderrData), listener.exitCode, uiFlags, sendFlags, listener.stdoutData.length, retStatusObj); statusFlagsObj.value = retStatusObj.statusFlags; statusFlagsObj.statusMsg = retStatusObj.statusMsg; errorMsgObj.value = retStatusObj.errorMsg; if ((exitCodeObj.value === 0) && listener.stdoutData.length === 0) exitCodeObj.value = -1; if (exitCodeObj.value === 0) { // Normal return EnigmailLog.DEBUG(" <=== encryptMessage()\n"); return EnigmailData.getUnicodeData(listener.stdoutData); } // Error processing EnigmailLog.DEBUG("enigmail.js: Enigmail.encryptMessage: command execution exit code: " + exitCodeObj.value + "\n"); return ""; }, encryptAttachment: function(parent, fromMailAddr, toMailAddr, bccMailAddr, sendFlags, inFile, outFile, exitCodeObj, statusFlagsObj, errorMsgObj) { EnigmailLog.DEBUG("encryption.jsm: EnigmailEncryption.encryptAttachment infileName=" + inFile.path + "\n"); statusFlagsObj.value = 0; sendFlags |= nsIEnigmail.SEND_ATTACHMENT; let asciiArmor = false; try { asciiArmor = EnigmailPrefs.getPrefBranch().getBoolPref("inlineAttachAsciiArmor"); } catch (ex) {} const asciiFlags = (asciiArmor ? ENC_TYPE_ATTACH_ASCII : ENC_TYPE_ATTACH_BINARY); let args = EnigmailEncryption.getEncryptCommand(fromMailAddr, toMailAddr, bccMailAddr, "", sendFlags, asciiFlags, errorMsgObj); if (!args) { return null; } const signMessage = (sendFlags & nsIEnigmail.SEND_SIGNED); if (signMessage) { args = args.concat(EnigmailPassword.command()); } const inFilePath = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePathReadonly(inFile.QueryInterface(Ci.nsIFile))); const outFilePath = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePathReadonly(outFile.QueryInterface(Ci.nsIFile))); args = args.concat(["--yes", "-o", outFilePath, inFilePath]); let cmdErrorMsgObj = {}; const msg = EnigmailExecution.execCmd(EnigmailGpgAgent.agentPath, args, "", exitCodeObj, statusFlagsObj, {}, cmdErrorMsgObj); if (exitCodeObj.value !== 0) { if (cmdErrorMsgObj.value) { errorMsgObj.value = EnigmailFiles.formatCmdLine(EnigmailGpgAgent.agentPath, args); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } else { errorMsgObj.value = "An unknown error has occurred"; } return ""; } return msg; }, registerOn: function(target) { target.encryptMessage = EnigmailEncryption.encryptMessage; target.encryptAttachment = EnigmailEncryption.encryptAttachment; } }; enigmail/package/enigmail.js000066400000000000000000000272641266701624400164040ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/pipeConsole.jsm"); /*global EnigmailConsole: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/encryption.jsm"); /*global EnigmailEncryption: false */ Cu.import("resource://enigmail/decryption.jsm"); /*global EnigmailDecryption: false */ Cu.import("resource://enigmail/protocolHandler.jsm"); /*global EnigmailProtocolHandler: false */ Cu.import("resource://enigmail/rules.jsm"); /*global EnigmailRules: false */ Cu.import("resource://enigmail/filters.jsm"); /*global EnigmailFilters: false */ Cu.import("resource://enigmail/armor.jsm"); /*global EnigmailArmor: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/commandLine.jsm"); /*global EnigmailCommandLine: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/uris.jsm"); /*global EnigmailURIs: false */ Cu.import("resource://enigmail/verify.jsm"); /*global EnigmailVerifyAttachment: false */ Cu.import("resource://enigmail/mimeVerify.jsm"); /*global EnigmailVerify: false */ Cu.import("resource://enigmail/windows.jsm"); /*global EnigmailWindows: false */ Cu.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ Cu.import("resource://enigmail/configure.jsm"); /*global EnigmailConfigure: false */ Cu.import("resource://enigmail/app.jsm"); /*global EnigmailApp: false */ /* Implementations supplied by this module */ const NS_ENIGMAIL_CONTRACTID = "@mozdev.org/enigmail/enigmail;1"; const NS_ENIGMAIL_CID = Components.ID("{847b3a01-7ab1-11d4-8f02-006008948af5}"); // Contract IDs and CIDs used by this module const NS_OBSERVERSERVICE_CONTRACTID = "@mozilla.org/observer-service;1"; const Cc = Components.classes; const Ci = Components.interfaces; // Interfaces const nsISupports = Ci.nsISupports; const nsIObserver = Ci.nsIObserver; const nsIEnvironment = Ci.nsIEnvironment; const nsIEnigmail = Ci.nsIEnigmail; const NS_XPCOM_SHUTDOWN_OBSERVER_ID = "xpcom-shutdown"; /////////////////////////////////////////////////////////////////////////////// // Enigmail encryption/decryption service /////////////////////////////////////////////////////////////////////////////// function getLogDirectoryPrefix() { try { return EnigmailPrefs.getPrefBranch().getCharPref("logDirectory") || ""; } catch (ex) { return ""; } } function initializeLogDirectory() { const prefix = getLogDirectoryPrefix(); if (prefix) { EnigmailLog.setLogLevel(5); EnigmailLog.setLogDirectory(prefix); EnigmailLog.DEBUG("enigmail.js: Logging debug output to " + prefix + "/enigdbug.txt\n"); } } function initializeLogging(env) { const nspr_log_modules = env.get("NSPR_LOG_MODULES"); const matches = nspr_log_modules.match(/enigmail.js:(\d+)/); if (matches && (matches.length > 1)) { EnigmailLog.setLogLevel(Number(matches[1])); EnigmailLog.WARNING("enigmail.js: Enigmail: LogLevel=" + matches[1] + "\n"); } } function initializeSubprocessLogging(env) { const nspr_log_modules = env.get("NSPR_LOG_MODULES"); const matches = nspr_log_modules.match(/subprocess:(\d+)/); subprocess.registerLogHandler(function(txt) { EnigmailLog.ERROR("subprocess.jsm: " + txt); }); if (matches && matches.length > 1 && matches[1] > 2) { subprocess.registerDebugHandler(function(txt) { EnigmailLog.DEBUG("subprocess.jsm: " + txt); }); } } function initializeAgentInfo() { if (EnigmailGpgAgent.useGpgAgent() && (!EnigmailOS.isDosLike())) { if (!EnigmailGpgAgent.isDummy()) { EnigmailCore.addToEnvList("GPG_AGENT_INFO=" + EnigmailGpgAgent.gpgAgentInfo.envStr); } } } function failureOn(ex, status) { status.initializationError = EnigmailLocale.getString("enigmailNotAvailable"); EnigmailLog.ERROR("enigmail.js: Enigmail.initialize: Error - " + status.initializationError + "\n"); EnigmailLog.DEBUG("enigmail.js: Enigmail.initialize: exception=" + ex.toString() + "\n"); throw Components.results.NS_ERROR_FAILURE; } function getEnvironment(status) { try { return Cc["@mozilla.org/process/environment;1"].getService(nsIEnvironment); } catch (ex) { failureOn(ex, status); } } function initializeEnvironment(env) { // Initialize global environment variables list const passEnv = ["GNUPGHOME", "GPGDIR", "ETC", "ALLUSERSPROFILE", "APPDATA", "BEGINLIBPATH", "COMMONPROGRAMFILES", "COMSPEC", "DBUS_SESSION_BUS_ADDRESS", "DISPLAY", "ENIGMAIL_PASS_ENV", "ENDLIBPATH", "GTK_IM_MODULE", "HOME", "HOMEDRIVE", "HOMEPATH", "LANG", "LANGUAGE", "LC_ALL", "LC_COLLATE", "LC_CTYPE", "LC_MESSAGES", "LC_MONETARY", "LC_NUMERIC", "LC_TIME", "LOCPATH", "LOGNAME", "LD_LIBRARY_PATH", "MOZILLA_FIVE_HOME", "NLSPATH", "PATH", "PATHEXT", "PROGRAMFILES", "PWD", "QT_IM_MODULE", "SHELL", "SYSTEMDRIVE", "SYSTEMROOT", "TEMP", "TMP", "TMPDIR", "TZ", "TZDIR", "UNIXROOT", "USER", "USERPROFILE", "WINDIR", "XAUTHORITY", "XMODIFIERS" ]; const passList = env.get("ENIGMAIL_PASS_ENV"); if (passList) { const passNames = passList.split(":"); for (var k = 0; k < passNames.length; k++) { passEnv.push(passNames[k]); } } EnigmailCore.initEnvList(); for (var j = 0; j < passEnv.length; j++) { const envName = passEnv[j]; const envValue = env.get(envName); if (envValue) { EnigmailCore.addToEnvList(envName + "=" + envValue); } } EnigmailLog.DEBUG("enigmail.js: Enigmail.initialize: Ec.envList = " + EnigmailCore.getEnvList() + "\n"); } function initializeObserver(on) { // Register to observe XPCOM shutdown const obsServ = Cc[NS_OBSERVERSERVICE_CONTRACTID].getService(). QueryInterface(Ci.nsIObserverService); obsServ.addObserver(on, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false); } function Enigmail() { this.wrappedJSObject = this; } Enigmail.prototype = { classDescription: "Enigmail", classID: NS_ENIGMAIL_CID, contractID: NS_ENIGMAIL_CONTRACTID, initialized: false, initializationAttempted: false, initializationError: "", _xpcom_factory: { createInstance: function(aOuter, iid) { // Enigmail is a service -> only instanciate once return EnigmailCore.ensuredEnigmailService(function() { return new Enigmail(); }); }, lockFactory: function(lock) {} }, QueryInterface: XPCOMUtils.generateQI([nsIEnigmail, nsIObserver, nsISupports]), observe: function(aSubject, aTopic, aData) { EnigmailLog.DEBUG("enigmail.js: Enigmail.observe: topic='" + aTopic + "' \n"); if (aTopic == NS_XPCOM_SHUTDOWN_OBSERVER_ID) { // XPCOM shutdown this.finalize(); } else { EnigmailLog.DEBUG("enigmail.js: Enigmail.observe: no handler for '" + aTopic + "'\n"); } }, finalize: function() { EnigmailLog.DEBUG("enigmail.js: Enigmail.finalize:\n"); if (!this.initialized) return; EnigmailGpgAgent.finalize(); EnigmailLog.onShutdown(); EnigmailLog.setLogLevel(3); this.initializationError = ""; this.initializationAttempted = false; this.initialized = false; }, initialize: function(domWindow, version) { this.initializationAttempted = true; EnigmailLog.DEBUG("enigmail.js: Enigmail.initialize: START\n"); if (this.initialized) return; initializeLogDirectory(); EnigmailCore.setEnigmailService(this); this.environment = getEnvironment(this); initializeLogging(this.environment); initializeSubprocessLogging(this.environment); initializeEnvironment(this.environment); try { EnigmailConsole.write("Initializing Enigmail service ...\n"); } catch (ex) { failureOn(ex, this); } EnigmailGpgAgent.setAgentPath(domWindow, this); EnigmailGpgAgent.detectGpgAgent(domWindow, this); initializeAgentInfo(); initializeObserver(this); this.initialized = true; EnigmailLog.DEBUG("enigmail.js: Enigmail.initialize: END\n"); }, reinitialize: function() { this.initialized = false; this.initializationAttempted = true; EnigmailConsole.write("Reinitializing Enigmail service ...\n"); EnigmailGpgAgent.setAgentPath(null, this); this.initialized = true; }, getService: function(holder, win, startingPreferences) { if (!win) { win = EnigmailWindows.getBestParentWin(); } EnigmailLog.DEBUG("enigmail.js: svc = " + holder.svc + "\n"); if (!holder.svc.initialized) { const firstInitialization = !holder.svc.initializationAttempted; try { // Initialize enigmail EnigmailCore.init(EnigmailApp.getVersion()); holder.svc.initialize(win, EnigmailApp.getVersion()); try { // Reset alert count to default value EnigmailPrefs.getPrefBranch().clearUserPref("initAlert"); } catch (ex) {} } catch (ex) { if (firstInitialization) { // Display initialization error alert const errMsg = (holder.svc.initializationError ? holder.svc.initializationError : EnigmailLocale.getString("accessError")) + "\n\n" + EnigmailLocale.getString("initErr.howToFixIt"); const checkedObj = { value: false }; if (EnigmailPrefs.getPref("initAlert")) { const r = EnigmailDialog.longAlert(win, "Enigmail: " + errMsg, EnigmailLocale.getString("dlgNoPrompt"), null, EnigmailLocale.getString("initErr.setupWizard.button"), null, checkedObj); if (r >= 0 && checkedObj.value) { EnigmailPrefs.setPref("initAlert", false); } if (r == 1) { // start setup wizard EnigmailWindows.openSetupWizard(win, false); return Enigmail.getService(holder, win); } } if (EnigmailPrefs.getPref("initAlert")) { holder.svc.initializationAttempted = false; holder.svc = null; } } return null; } const configuredVersion = EnigmailPrefs.getPref("configuredVersion"); EnigmailLog.DEBUG("enigmailCommon.jsm: getService: " + configuredVersion + "\n"); if (firstInitialization && holder.svc.initialized && EnigmailGpgAgent.agentType === "pgp") { EnigmailDialog.alert(win, EnigmailLocale.getString("pgpNotSupported")); } if (holder.svc.initialized && (EnigmailApp.getVersion() != configuredVersion)) { EnigmailConfigure.configureEnigmail(win, startingPreferences); } } return holder.svc.initialized ? holder.svc : null; } }; // Enigmail.prototype EnigmailArmor.registerOn(Enigmail.prototype); EnigmailDecryption.registerOn(Enigmail.prototype); EnigmailEncryption.registerOn(Enigmail.prototype); EnigmailRules.registerOn(Enigmail.prototype); EnigmailURIs.registerOn(Enigmail.prototype); EnigmailVerifyAttachment.registerOn(Enigmail.prototype); EnigmailVerify.registerContentTypeHandler(); // This variable is exported implicitly and should not be refactored or removed const NSGetFactory = XPCOMUtils.generateNSGetFactory([Enigmail, EnigmailProtocolHandler, EnigmailCommandLine.Handler]); EnigmailFilters.registerAll(); enigmail/package/errorHandling.jsm000066400000000000000000000446501266701624400175700ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, EnigmailLocale: false, EnigmailData: false, EnigmailCore: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailErrorHandling"]; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); Cu.import("resource://enigmail/locale.jsm"); Cu.import("resource://enigmail/data.jsm"); Cu.import("resource://enigmail/core.jsm"); Cu.import("resource://enigmail/system.jsm"); /* global EnigmailSystem: false */ Cu.import("resource://enigmail/lazy.jsm"); /* global EnigmailLazy: false */ const getEnigmailKeyRing = EnigmailLazy.loader("enigmail/keyRing.jsm", "EnigmailKeyRing"); const nsIEnigmail = Ci.nsIEnigmail; const gStatusFlags = { GOODSIG: nsIEnigmail.GOOD_SIGNATURE, BADSIG: nsIEnigmail.BAD_SIGNATURE, ERRSIG: nsIEnigmail.UNVERIFIED_SIGNATURE, EXPSIG: nsIEnigmail.EXPIRED_SIGNATURE, REVKEYSIG: nsIEnigmail.GOOD_SIGNATURE, EXPKEYSIG: nsIEnigmail.EXPIRED_KEY_SIGNATURE, KEYEXPIRED: nsIEnigmail.EXPIRED_KEY, KEYREVOKED: nsIEnigmail.REVOKED_KEY, NO_PUBKEY: nsIEnigmail.NO_PUBKEY, NO_SECKEY: nsIEnigmail.NO_SECKEY, IMPORTED: nsIEnigmail.IMPORTED_KEY, INV_RECP: nsIEnigmail.INVALID_RECIPIENT, MISSING_PASSPHRASE: nsIEnigmail.MISSING_PASSPHRASE, BAD_PASSPHRASE: nsIEnigmail.BAD_PASSPHRASE, BADARMOR: nsIEnigmail.BAD_ARMOR, NODATA: nsIEnigmail.NODATA, ERROR: nsIEnigmail.BAD_SIGNATURE | nsIEnigmail.DECRYPTION_FAILED, DECRYPTION_FAILED: nsIEnigmail.DECRYPTION_FAILED, DECRYPTION_OKAY: nsIEnigmail.DECRYPTION_OKAY, TRUST_UNDEFINED: nsIEnigmail.UNTRUSTED_IDENTITY, TRUST_NEVER: nsIEnigmail.UNTRUSTED_IDENTITY, TRUST_MARGINAL: nsIEnigmail.UNTRUSTED_IDENTITY, TRUST_FULLY: nsIEnigmail.TRUSTED_IDENTITY, TRUST_ULTIMATE: nsIEnigmail.TRUSTED_IDENTITY, CARDCTRL: nsIEnigmail.CARDCTRL, SC_OP_FAILURE: nsIEnigmail.SC_OP_FAILURE, UNKNOWN_ALGO: nsIEnigmail.UNKNOWN_ALGO, SIG_CREATED: nsIEnigmail.SIG_CREATED, END_ENCRYPTION: nsIEnigmail.END_ENCRYPTION, INV_SGNR: 0x100000000, IMPORT_OK: 0x200000000, FAILURE: 0x400000000 }; // taken from libgpg-error: gpg-error.h const GPG_SOURCE_SYSTEM = { GPG_ERR_SOURCE_UNKNOWN: 0, GPG_ERR_SOURCE_GCRYPT: 1, GPG_ERR_SOURCE_GPG: 2, GPG_ERR_SOURCE_GPGSM: 3, GPG_ERR_SOURCE_GPGAGENT: 4, GPG_ERR_SOURCE_PINENTRY: 5, GPG_ERR_SOURCE_SCD: 6, GPG_ERR_SOURCE_GPGME: 7, GPG_ERR_SOURCE_KEYBOX: 8, GPG_ERR_SOURCE_KSBA: 9, GPG_ERR_SOURCE_DIRMNGR: 10, GPG_ERR_SOURCE_GSTI: 11, GPG_ERR_SOURCE_GPA: 12, GPG_ERR_SOURCE_KLEO: 13, GPG_ERR_SOURCE_G13: 14, GPG_ERR_SOURCE_ASSUAN: 15, GPG_ERR_SOURCE_TLS: 17, GPG_ERR_SOURCE_ANY: 31 }; /** * Handling of specific error codes from GnuPG * * @param c Object - the retStatusObj * @param errorNumber String - the error number as printed by GnuPG */ function handleErrorCode(c, errorNumber) { if (errorNumber && errorNumber.search(/^[0-9]+$/) === 0) { let errNum = Number(errorNumber); let sourceSystem = errNum >> 24; let errorCode = errNum & 0xFFFFFF; switch (errorCode) { case 11: // bad Passphrase case 87: // bad PIN badPassphrase(c); break; case 177: // no passphrase case 178: // no PIN missingPassphrase(c); break; case 99: // operation canceled if (sourceSystem === GPG_SOURCE_SYSTEM.GPG_ERR_SOURCE_PINENTRY) { missingPassphrase(c); } break; case 77: // no agent case 78: // agent error case 80: // assuan server fault case 81: // assuan error c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.retStatusObj.extendedStatus += "disp:get_passphrase "; c.retStatusObj.statusMsg = EnigmailLocale.getString("errorHandling.gpgAgentError") + "\n\n" + EnigmailLocale.getString("errorHandling.readFaq"); c.isError = true; break; case 85: // no pinentry case 86: // pinentry error c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.retStatusObj.extendedStatus += "disp:get_passphrase "; c.retStatusObj.statusMsg = EnigmailLocale.getString("errorHandling.pinentryError") + "\n\n" + EnigmailLocale.getString("errorHandling.readFaq"); c.isError = true; break; case 92: // no dirmngr case 93: // dirmngr error c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.retStatusObj.extendedStatus += "disp:get_passphrase "; c.retStatusObj.statusMsg = EnigmailLocale.getString("errorHandling.dirmngrError") + "\n\n" + EnigmailLocale.getString("errorHandling.readFaq"); c.isError = true; break; case 2: case 3: case 149: case 188: c.statusFlags |= Ci.nsIEnigmail.UNKNOWN_ALGO; break; case 15: c.statusFlags |= Ci.nsIEnigmail.BAD_ARMOR; break; case 58: c.statusFlags |= Ci.nsIEnigmail.NODATA; break; } } } /** * Special treatment for some ERROR messages from GnuPG * * extendedStatus are preceeded by "disp:" if an error message is set in statusMsg * * isError is set to true if this is a hard error that makes further processing of * the status codes useless */ function handleError(c) { /* check_hijacking: gpg-agent was hijacked by some other process (like gnome-keyring) proc_pkt.plaintext: multiple plaintexts seen pkdecrypt_failed: public key decryption failed keyedit.passwd: error changing the passphrase card_key_generate: key generation failed (card) key_generate: key generation failed keyserver_send: keyserver send failed get_passphrase: gpg-agent cannot query the passphrase from pinentry (GnuPG 2.0.x) */ var lineSplit = c.statusLine.split(/ +/); if (lineSplit.length > 0) { if (lineSplit.length >= 3) { // first check if the error code is a specifically treated hard failure handleErrorCode(c, lineSplit[2]); if (c.isError) return true; } switch (lineSplit[1]) { case "check_hijacking": c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.retStatusObj.extendedStatus += "disp:invalid_gpg_agent "; c.retStatusObj.statusMsg = EnigmailLocale.getString("errorHandling.gpgAgentInvalid") + "\n\n" + EnigmailLocale.getString("errorHandling.readFaq"); c.isError = true; break; case "get_passphrase": c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.retStatusObj.extendedStatus += "disp:get_passphrase "; c.retStatusObj.statusMsg = EnigmailLocale.getString("errorHandling.pinentryError") + "\n\n" + EnigmailLocale.getString("errorHandling.readFaq"); c.isError = true; break; case "proc_pkt.plaintext": c.retStatusObj.extendedStatus += "multiple_plaintexts "; c.isError = true; break; case "pkdecrypt_failed": c.retStatusObj.extendedStatus += "pubkey_decrypt "; handleErrorCode(c, lineSplit[2]); break; case "keyedit.passwd": c.retStatusObj.extendedStatus += "passwd_change_failed "; break; case "card_key_generate": case "key_generate": c.retStatusObj.extendedStatus += "key_generate_failure "; break; case "keyserver_send": c.retStatusObj.extendedStatus += "keyserver_send_failed "; c.isError = true; break; default: return false; } return true; } else { return false; } } // handle GnuPG FAILURE message (GnuPG 2.1.10 and newer) function failureMessage(c) { let lineSplit = c.statusLine.split(/ +/); if (lineSplit.length >= 3) { handleErrorCode(c, lineSplit[2]); } } function missingPassphrase(c) { c.statusFlags |= Ci.nsIEnigmail.MISSING_PASSPHRASE; if (c.retStatusObj.statusMsg.indexOf(EnigmailLocale.getString("missingPassphrase")) < 0) { c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.flag = 0; EnigmailLog.DEBUG("errorHandling.jsm: missingPassphrase: missing passphrase\n"); c.retStatusObj.statusMsg += EnigmailLocale.getString("missingPassphrase") + "\n"; } } function badPassphrase(c) { c.statusFlags |= Ci.nsIEnigmail.MISSING_PASSPHRASE; if (!(c.statusFlags & Ci.nsIEnigmail.BAD_PASSPHRASE)) { c.statusFlags |= Ci.nsIEnigmail.BAD_PASSPHRASE; c.flag = 0; EnigmailLog.DEBUG("errorHandling.jsm: badPassphrase: bad passphrase\n"); c.retStatusObj.statusMsg += EnigmailLocale.getString("badPhrase") + "\n"; } } function invalidSignature(c) { if (c.isError) return; var lineSplit = c.statusLine.split(/ +/); c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.flag = 0; let keySpec = lineSplit[2]; if (keySpec) { EnigmailLog.DEBUG("errorHandling.jsm: invalidRecipient: detected invalid sender " + keySpec + " / code: " + lineSplit[1] + "\n"); c.retStatusObj.errorMsg += EnigmailErrorHandling.determineInvSignReason(keySpec); } } function invalidRecipient(c) { if (c.isError) return; var lineSplit = c.statusLine.split(/ +/); c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; c.flag = 0; let keySpec = lineSplit[2]; if (keySpec) { EnigmailLog.DEBUG("errorHandling.jsm: invalidRecipient: detected invalid recipient " + keySpec + " / code: " + lineSplit[1] + "\n"); c.retStatusObj.errorMsg += EnigmailErrorHandling.determineInvRcptReason(keySpec); } } function importOk(c) { var lineSplit = c.statusLine.split(/ +/); if (lineSplit.length > 1) { EnigmailLog.DEBUG("errorHandling.jsm: importOk: key imported: " + lineSplit[2] + "\n"); } else { EnigmailLog.DEBUG("errorHandling.jsm: importOk: key without FPR imported\n"); } let importFlag = Number(lineSplit[1]); if (importFlag & (1 | 2 | 8)) { EnigmailCore.getKeyRing().clearCache(); } } function unverifiedSignature(c) { var lineSplit = c.statusLine.split(/ +/); if (lineSplit.length > 7 && lineSplit[7] == "4") { c.flag = Ci.nsIEnigmail.UNKNOWN_ALGO; } } function noData(c) { // Recognize only "NODATA 1" if (c.statusLine.search(/NODATA 1\b/) < 0) { c.flag = 0; } } function decryptionFailed(c) { c.inDecryptionFailed = true; } function cardControl(c) { var lineSplit = c.statusLine.split(/ +/); if (lineSplit[1] == "3") { c.detectedCard = lineSplit[2]; } else { c.errCode = Number(lineSplit[1]); if (c.errCode == 1) c.requestedCard = lineSplit[2]; } } function setupFailureLookup() { var result = {}; result[Ci.nsIEnigmail.DECRYPTION_FAILED] = decryptionFailed; result[Ci.nsIEnigmail.NODATA] = noData; result[Ci.nsIEnigmail.CARDCTRL] = cardControl; result[Ci.nsIEnigmail.UNVERIFIED_SIGNATURE] = unverifiedSignature; result[Ci.nsIEnigmail.MISSING_PASSPHRASE] = missingPassphrase; result[Ci.nsIEnigmail.BAD_PASSPHRASE] = badPassphrase; result[gStatusFlags.INV_RECP] = invalidRecipient; result[gStatusFlags.INV_SGNR] = invalidSignature; result[gStatusFlags.IMPORT_OK] = importOk; result[gStatusFlags.FAILURE] = failureMessage; return result; } function ignore() {} const failureLookup = setupFailureLookup(); function handleFailure(c, errorFlag) { c.flag = gStatusFlags[errorFlag]; // yields known flag or undefined (failureLookup[c.flag] || ignore)(c); // if known flag, story it in our status if (c.flag) { c.statusFlags |= c.flag; } } function newContext(errOutput, retStatusObj) { retStatusObj.statusMsg = ""; retStatusObj.errorMsg = ""; retStatusObj.extendedStatus = ""; retStatusObj.blockSeparation = ""; return { errOutput: errOutput, retStatusObj: retStatusObj, errArray: [], statusArray: [], errCode: 0, detectedCard: null, requestedCard: null, errorMsg: "", statusPat: /^\[GNUPG:\] /, statusFlags: 0, plaintextCount: 0, withinCryptoMsg: false, cryptoStartPat: /^BEGIN_DECRYPTION/, cryptoEndPat: /^END_DECRYPTION/, plaintextPat: /^PLAINTEXT /, plaintextLengthPat: /^PLAINTEXT_LENGTH / }; } function splitErrorOutput(errOutput) { var errLines = errOutput.split(/\r?\n/); // Discard last null string, if any if ((errLines.length > 1) && !errLines[errLines.length - 1]) { errLines.pop(); } return errLines; } function parseErrorLine(errLine, c) { if (errLine.search(c.statusPat) === 0) { // status line c.statusLine = errLine.replace(c.statusPat, ""); c.statusArray.push(c.statusLine); // extract first word as flag var matches = c.statusLine.match(/^((\w+)\b)/); if (matches && (matches.length > 1)) { let isError = (matches[1] == "ERROR"); (isError ? handleError : handleFailure)(c, matches[1]); } } else { // non-status line (details of previous status command) c.errArray.push(errLine); // save details of DECRYPTION_FAILED message ass error message if (c.inDecryptionFailed) { c.errorMsg += errLine; } } } function detectForgedInsets(c) { // detect forged message insets for (var j = 0; j < c.statusArray.length; j++) { if (c.statusArray[j].search(c.cryptoStartPat) === 0) { c.withinCryptoMsg = true; } else if (c.withinCryptoMsg && c.statusArray[j].search(c.cryptoEndPat) === 0) { c.withinCryptoMsg = false; } else if (c.statusArray[j].search(c.plaintextPat) === 0) { ++c.plaintextCount; if ((c.statusArray.length > j + 1) && (c.statusArray[j + 1].search(c.plaintextLengthPat) === 0)) { var matches = c.statusArray[j + 1].match(/(\w+) (\d+)/); if (matches.length >= 3) { c.retStatusObj.blockSeparation += (c.withinCryptoMsg ? "1" : "0") + ":" + matches[2] + " "; } } else { // strange: we got PLAINTEXT XX, but not PLAINTEXT_LENGTH XX c.retStatusObj.blockSeparation += (c.withinCryptoMsg ? "1" : "0") + ":0 "; } } } if (c.plaintextCount > 1) { c.statusFlags |= (Ci.nsIEnigmail.PARTIALLY_PGP | Ci.nsIEnigmail.DECRYPTION_FAILED | Ci.nsIEnigmail.BAD_SIGNATURE); } } function buildErrorMessageForCardCtrl(c, errCode, detectedCard) { var errorMsg = ""; switch (errCode) { case 1: if (detectedCard) { errorMsg = EnigmailLocale.getString("sc.wrongCardAvailable", [c.detectedCard, c.requestedCard]); } else { errorMsg = EnigmailLocale.getString("sc.insertCard", [c.requestedCard]); } break; case 2: errorMsg = EnigmailLocale.getString("sc.removeCard"); break; case 4: errorMsg = EnigmailLocale.getString("sc.noCardAvailable"); break; case 5: errorMsg = EnigmailLocale.getString("sc.noReaderAvailable"); break; } return errorMsg; } function parseErrorOutputWith(c) { EnigmailLog.DEBUG("errorHandling.jsm: parseErrorOutputWith: status message: \n" + c.errOutput + "\n"); c.errLines = splitErrorOutput(c.errOutput); c.isError = false; // set to true if a hard error was found // parse all error lines c.inDecryptionFailed = false; // to save details of encryption failed messages for (var j = 0; j < c.errLines.length; j++) { var errLine = c.errLines[j]; parseErrorLine(errLine, c); if (c.isError) break; } detectForgedInsets(c); c.retStatusObj.blockSeparation = c.retStatusObj.blockSeparation.replace(/ $/, ""); c.retStatusObj.statusFlags = c.statusFlags; if (c.retStatusObj.statusMsg.length === 0) c.retStatusObj.statusMsg = c.statusArray.join("\n"); if (c.errorMsg.length === 0) { c.errorMsg = c.errArray.map(function f(str, idx) { return EnigmailSystem.convertNativeToUnicode(str); }, EnigmailSystem).join("\n"); } else { c.errorMsg = EnigmailSystem.convertNativeToUnicode(c.errorMsg); } if ((c.statusFlags & Ci.nsIEnigmail.CARDCTRL) && c.errCode > 0) { c.errorMsg = buildErrorMessageForCardCtrl(c, c.errCode, c.detectedCard); c.statusFlags |= Ci.nsIEnigmail.DISPLAY_MESSAGE; } EnigmailLog.DEBUG("errorHandling.jsm: parseErrorOutputWith: statusFlags = " + EnigmailData.bytesToHex(EnigmailData.pack(c.statusFlags, 4)) + "\n"); EnigmailLog.DEBUG("errorHandling.jsm: parseErrorOutputWith: return with c.errorMsg = " + c.errorMsg + "\n"); return c.errorMsg; } var EnigmailErrorHandling = { parseErrorOutput: function(errOutput, retStatusObj) { var context = newContext(errOutput, retStatusObj); return parseErrorOutputWith(context); }, /** * Determin why a given key or userID cannot be used for signing * * @param keySpec String - key ID or user ID * * @return String - the reason(s) as message to display to the user * "" in case the key is valid */ determineInvSignReason: function(keySpec) { EnigmailLog.DEBUG("errorHandling.jsm: determineInvSignReason: keySpec: " + keySpec + "\n"); let reasonMsg = ""; if (keySpec.search(/^(0x)?[0-9A-F]+$/) === 0) { let key = getEnigmailKeyRing().getKeyById(keySpec); if (!key) { reasonMsg = EnigmailLocale.getString("keyError.keyIdNotFound", keySpec); } else { let r = key.getSigningValidity(); if (!r.keyValid) reasonMsg = r.reason; } } else { let keys = getEnigmailKeyRing().getKeysByUserId(keySpec); if (!keys || keys.length === 0) { reasonMsg = EnigmailLocale.getString("keyError.keySpecNotFound", keySpec); } else { for (let i in keys) { let r = keys[i].getSigningValidity(); if (!r.keyValid) reasonMsg += r.reason + "\n"; } } } return reasonMsg; }, /** * Determin why a given key or userID cannot be used for encryption * * @param keySpec String - key ID or user ID * * @return String - the reason(s) as message to display to the user * "" in case the key is valid */ determineInvRcptReason: function(keySpec) { EnigmailLog.DEBUG("errorHandling.jsm: determineInvRcptReason: keySpec: " + keySpec + "\n"); let reasonMsg = ""; if (keySpec.search(/^(0x)?[0-9A-F]+$/) === 0) { let key = getEnigmailKeyRing().getKeyById(keySpec); if (!key) { reasonMsg = EnigmailLocale.getString("keyError.keyIdNotFound", keySpec); } else { let r = key.getEncryptionValidity(); if (!r.keyValid) reasonMsg = r.reason; } } else { let keys = getEnigmailKeyRing().getKeysByUserId(keySpec); if (!keys || keys.length === 0) { reasonMsg = EnigmailLocale.getString("keyError.keySpecNotFound", keySpec); } else { for (let i in keys) { let r = keys[i].getEncryptionValidity(); if (!r.keyValid) reasonMsg += r.reason + "\n"; } } } return reasonMsg; } }; enigmail/package/events.jsm000066400000000000000000000043321266701624400162670ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailEvents"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/timer.jsm"); /*global EnigmailTimer: false */ const EnigmailEvents = { /** * dispatch event aynchronously to the main thread * * @callbackFunction: Function - any function specification * @sleepTimeMs: Number - optional number of miliseconds to delay * (0 if not specified) * @arrayOfArgs: Array - arguments to pass to callbackFunction */ dispatchEvent: function(callbackFunction, sleepTimeMs, arrayOfArgs) { EnigmailLog.DEBUG("enigmailCommon.jsm: dispatchEvent f=" + callbackFunction.name + "\n"); // object for dispatching callback back to main thread var MainEvent = function() {}; MainEvent.prototype = { QueryInterface: function(iid) { if (iid.equals(Ci.nsIRunnable) || iid.equals(Ci.nsISupports)) { return this; } throw Components.results.NS_ERROR_NO_INTERFACE; }, init: function(cbFunc, arrayOfArgs) { this.cbFunc = cbFunc; this.args = arrayOfArgs; }, run: function() { EnigmailLog.DEBUG("enigmailCommon.jsm: dispatchEvent running mainEvent\n"); this.cbFunc(this.args); }, notify: function() { EnigmailLog.DEBUG("enigmailCommon.jsm: dispatchEvent got notified\n"); this.cbFunc(this.args); } }; const event = new MainEvent(); event.init(callbackFunction, arrayOfArgs); if (sleepTimeMs > 0) { return EnigmailTimer.setTimeout(event, sleepTimeMs); } else { const tm = Cc["@mozilla.org/thread-manager;1"].getService(Ci.nsIThreadManager); // dispatch the event to the main thread tm.mainThread.dispatch(event, Ci.nsIThread.DISPATCH_NORMAL); } return event; } }; enigmail/package/execution.jsm000066400000000000000000000305571266701624400167760ustar00rootroot00000000000000/*global Components: false, EnigmailData: false, EnigmailFiles: false, EnigmailLog: false, subprocess: false, EnigmailErrorHandling: false, EnigmailCore: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailExecution"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/data.jsm"); Cu.import("resource://enigmail/files.jsm"); Cu.import("resource://enigmail/log.jsm"); Cu.import("resource://enigmail/subprocess.jsm"); Cu.import("resource://enigmail/errorHandling.jsm"); Cu.import("resource://enigmail/core.jsm"); Cu.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Cu.import("resource://enigmail/system.jsm"); /*global EnigmailSystem: false */ const nsIEnigmail = Ci.nsIEnigmail; const EnigmailExecution = { agentType: "", /** * execStart Listener Object * * The listener object must implement at least the following methods: * * stdin(pipe) - OPTIONAL - write data to subprocess stdin via |pipe| hanlde * stdout(data) - receive |data| from subprocess stdout * stderr(data) - receive |data| from subprocess stderr * done(exitCode) - receive signal when subprocess has terminated */ /** * start a subprocess (usually gpg) that gets and/or receives data via stdin/stdout/stderr. * * @command: either: String - full path to executable * or: nsIFile object referencing executable * @args: Array of Strings: command line parameters for executable * @needPassphrase: Boolean - is a passphrase required for the action? * if true, the password may be promted using a dialog * (unless alreday cached or gpg-agent is used) * @domWindow: nsIWindow - window on top of which password dialog is shown * @listener: Object - Listener to interact with subprocess; see spec. above * @statusflagsObj: Object - .value will hold status Flags * * @return: handle to suprocess */ execStart: function(command, args, needPassphrase, domWindow, listener, statusFlagsObj) { EnigmailLog.WRITE("execution.jsm: execStart: " + "command = " + EnigmailFiles.formatCmdLine(command, args) + ", needPassphrase=" + needPassphrase + ", domWindow=" + domWindow + ", listener=" + listener + "\n"); listener = listener || {}; statusFlagsObj.value = 0; var proc = null; listener.command = command; EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); try { proc = subprocess.call({ command: command, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, bufferedOutput: true, stdin: function(pipe) { if (listener.stdin) listener.stdin(pipe); }, stdout: function(data) { listener.stdout(data); }, stderr: function(data) { listener.stderr(data); }, done: function(result) { try { listener.done(result.exitCode); } catch (ex) { EnigmailLog.writeException("execution.jsm", ex); } }, mergeStderr: false }); } catch (ex) { EnigmailLog.ERROR("execution.jsm: execStart: subprocess.call failed with '" + ex.toString() + "'\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); return null; } EnigmailLog.DEBUG(" enigmail> DONE\n"); return proc; }, /* requirements for listener object: exitCode stderrData */ execEnd: function(listener, statusFlagsObj, statusMsgObj, cmdLineObj, errorMsgObj, blockSeparationObj) { EnigmailLog.DEBUG("execution.jsm: execEnd:\n"); cmdLineObj.value = listener.command; var exitCode = listener.exitCode; var errOutput = listener.stderrData; EnigmailLog.DEBUG("execution.jsm: execEnd: exitCode = " + exitCode + "\n"); EnigmailLog.DEBUG("execution.jsm: execEnd: errOutput = " + errOutput + "\n"); var retObj = {}; errorMsgObj.value = EnigmailErrorHandling.parseErrorOutput(errOutput, retObj); statusFlagsObj.value = retObj.statusFlags; statusMsgObj.value = retObj.statusMsg; if (!blockSeparationObj) blockSeparationObj = {}; blockSeparationObj.value = retObj.blockSeparation; if (errOutput.search(/jpeg image of size \d+/) > -1) { statusFlagsObj.value |= nsIEnigmail.PHOTO_AVAILABLE; } if (blockSeparationObj && blockSeparationObj.value.indexOf(" ") > 0) { exitCode = 2; } EnigmailLog.CONSOLE(EnigmailData.convertFromUnicode(errorMsgObj.value) + "\n"); return exitCode; }, simpleExecCmd: function(command, args, exitCodeObj, errorMsgObj) { EnigmailLog.WRITE("execution.jsm: EnigmailExecution.simpleExecCmd: command = " + command + " " + args.join(" ") + "\n"); var outputData = ""; var errOutput = ""; EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); try { subprocess.call({ command: command, arguments: args, charset: null, environment: EnigmailCore.getEnvList(), done: function(result) { exitCodeObj.value = result.exitCode; outputData = result.stdout; errOutput = result.stderr; }, mergeStderr: false }).wait(); } catch (ex) { EnigmailLog.ERROR("execution.jsm: EnigmailExecution.simpleExecCmd: " + command.path + " failed\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); exitCodeObj.value = -1; } EnigmailLog.DEBUG(" enigmail> DONE\n"); if (errOutput) { errorMsgObj.value = errOutput; } EnigmailLog.DEBUG("execution.jsm: EnigmailExecution.simpleExecCmd: exitCode = " + exitCodeObj.value + "\n"); EnigmailLog.DEBUG("execution.jsm: EnigmailExecution.simpleExecCmd: errOutput = " + errOutput + "\n"); return outputData; }, execCmd: function(command, args, input, exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj, retStatusObj) { EnigmailLog.WRITE("execution.jsm: EnigmailExecution.execCmd: subprocess = '" + command.path + "'\n"); if ((typeof input) != "string") input = ""; var preInput = ""; var outputData = ""; var errOutput = ""; EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); var procBuilder = new EnigmailExecution.processBuilder(); procBuilder.setCommand(command); procBuilder.setArguments(args); procBuilder.setEnvironment(EnigmailCore.getEnvList()); procBuilder.setStdin( function(pipe) { if (input.length > 0 || preInput.length > 0) { pipe.write(preInput + input); } pipe.close(); } ); procBuilder.setDone( function(result) { if (result.stdout) outputData = result.stdout; if (result.stderr) errOutput = result.stderr; exitCodeObj.value = result.exitCode; } ); var proc = procBuilder.build(); try { subprocess.call(proc).wait(); } catch (ex) { EnigmailLog.ERROR("execution.jsm: EnigmailExecution.execCmd: subprocess.call failed with '" + ex.toString() + "'\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); exitCodeObj.value = -1; } EnigmailLog.DEBUG(" enigmail> DONE\n"); if (proc.resultData) outputData = proc.resultData; if (proc.errorData) errOutput = proc.errorData; EnigmailLog.DEBUG("execution.jsm: EnigmailExecution.execCmd: exitCode = " + exitCodeObj.value + "\n"); EnigmailLog.DEBUG("execution.jsm: EnigmailExecution.execCmd: errOutput = " + errOutput + "\n"); if (!retStatusObj) { retStatusObj = {}; } errorMsgObj.value = EnigmailErrorHandling.parseErrorOutput(errOutput, retStatusObj); statusFlagsObj.value = retStatusObj.statusFlags; statusMsgObj.value = retStatusObj.statusMsg; var blockSeparation = retStatusObj.blockSeparation; exitCodeObj.value = EnigmailExecution.fixExitCode(exitCodeObj.value, statusFlagsObj); if (blockSeparation.indexOf(" ") > 0) { exitCodeObj.value = 2; } EnigmailLog.CONSOLE(errorMsgObj.value + "\n"); return outputData; }, /** * Fix the exit code of GnuPG (which may be wrong in some circumstances) * * @exitCode: Number - the exitCode obtained from GnuPG * @statusFlagsObj: Object - the statusFlagsObj as received from parseErrorOutput() * * @return: Number - fixed exit code */ fixExitCode: function(exitCode, statusFlagsObj) { EnigmailLog.DEBUG("execution.jsm: EnigmailExecution.fixExitCode: agentType: " + EnigmailExecution.agentType + " exitCode: " + exitCode + " statusFlags " + statusFlagsObj.statusFlags + "\n"); let statusFlags = statusFlagsObj.statusFlags; if (exitCode !== 0) { if ((statusFlags & (nsIEnigmail.BAD_PASSPHRASE | nsIEnigmail.UNVERIFIED_SIGNATURE)) && (statusFlags & nsIEnigmail.DECRYPTION_OKAY)) { EnigmailLog.DEBUG("enigmailCommon.jsm: Enigmail.fixExitCode: Changing exitCode for decrypted msg " + exitCode + "->0\n"); exitCode = 0; } if ((EnigmailExecution.agentType === "gpg") && (exitCode == 256) && (EnigmailOS.getOS() == "WINNT")) { EnigmailLog.WARNING("enigmailCommon.jsm: Enigmail.fixExitCode: Using gpg and exit code is 256. You seem to use cygwin-gpg, activating countermeasures.\n"); if (statusFlags & (nsIEnigmail.BAD_PASSPHRASE | nsIEnigmail.UNVERIFIED_SIGNATURE)) { EnigmailLog.WARNING("enigmailCommon.jsm: Enigmail.fixExitCode: Changing exitCode 256->2\n"); exitCode = 2; } else { EnigmailLog.WARNING("enigmailCommon.jsm: Enigmail.fixExitCode: Changing exitCode 256->0\n"); exitCode = 0; } } } else { if (statusFlags & (nsIEnigmail.INVALID_RECIPIENT | nsIEnigmail.DECRYPTION_FAILED | nsIEnigmail.BAD_ARMOR | nsIEnigmail.MISSING_PASSPHRASE | nsIEnigmail.BAD_PASSPHRASE)) { exitCode = 1; } else if (typeof(statusFlagsObj.extendedStatus) === "string" && statusFlagsObj.extendedStatus.search(/\bdisp:/) >= 0) { exitCode = 1; } } return exitCode; }, processBuilder: function() { this.process = {}; this.setCommand = function(command) { this.process.command = command; }; this.setArguments = function(args) { this.process.arguments = args; }; this.setEnvironment = function(envList) { this.process.environment = envList; }; this.setStdin = function(stdin) { this.process.stdin = stdin; }; this.setStdout = function(stdout) { this.process.stdout = stdout; }; this.setDone = function(done) { this.process.done = done; }; this.build = function() { this.process.charset = null; this.process.mergeStderr = false; this.process.resultData = ""; this.process.errorData = ""; this.process.exitCode = -1; return this.process; }; return this; }, execCmd2: function(command, args, stdinFunc, stdoutFunc, doneFunc) { var procBuilder = new EnigmailExecution.processBuilder(); procBuilder.setCommand(command); procBuilder.setArguments(args); procBuilder.setEnvironment(EnigmailCore.getEnvList()); procBuilder.setStdin(stdinFunc); procBuilder.setStdout(stdoutFunc); procBuilder.setDone(doneFunc); var proc = procBuilder.build(); subprocess.call(proc).wait(); }, /** * simple listener for using with execStart * * stdinFunc: optional function to write to stdin * doneFunc : optional function that is called when the process is terminated */ newSimpleListener: function(stdinFunc, doneFunc) { let simpleListener = { stdoutData: "", stderrData: "", exitCode: -1, stdin: function(pipe) { if (stdinFunc) { stdinFunc(pipe); } else { pipe.close(); } }, stdout: function(data) { simpleListener.stdoutData += data; }, stderr: function(data) { simpleListener.stderrData += data; }, done: function(exitCode) { simpleListener.exitCode = exitCode; if (doneFunc) { doneFunc(exitCode); } } }; return simpleListener; } }; enigmail/package/expiry.jsm000066400000000000000000000135021266701624400163020ustar00rootroot00000000000000/*global Components: false, Number: false, Math: false, Date: false, JSON: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailExpiry"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ const nsIEnigmail = Ci.nsIEnigmail; const DAY = 86400; // number of seconds of 1 day var EnigmailExpiry = { /** * Check whether some key pairs expire in less than N days from now. * * @param keySpecArr - Array: list of key IDs or User IDs * @param numDay - Number: number of days from now * * @return Array - list of keys that will expire */ getExpiryForKeySpec: function(keySpecArr, numDays) { EnigmailLog.DEBUG("expiry.jsm: getExpiryForKeySpec()\n"); let now = Math.floor(Date.now() / 1000); let enigmailSvc = EnigmailCore.getService(); if (!enigmailSvc) return []; let result = keySpecArr.reduce(function(p, keySpec) { let keys; if (keySpec.search(/^(0x)?[0-9A-F]{8,40}$/i) === 0) { let key = EnigmailKeyRing.getKeyById(keySpec); if (!key) return p; keys = [key]; } else { keys = EnigmailKeyRing.getKeysByUserId(keySpec); if (keys.length === 0) return p; } let maxExpiry = Number.MIN_VALUE; let maxKey = null; for (let i in keys) { let ex = keys[i].getKeyExpiry(); if (ex > maxExpiry) { maxExpiry = ex; maxKey = keys[i]; } } if (maxExpiry < now + (DAY * numDays) && maxExpiry >= now) p.push(maxKey); return p; }, []); result = uniqueKeyList(result); return result; }, /** * Determine the configured key specifications for all identities * where Enigmail is enabled * * @return Array of Strings - list of keyId and email addresses */ getKeysSpecForIdentities: function() { EnigmailLog.DEBUG("expiry.jsm: getKeysSpecForIdentities()\n"); let accountManager = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); let keySpecList = []; for (let acct = 0; acct < accountManager.accounts.length; acct++) { let ac = accountManager.accounts.queryElementAt(acct, Ci.nsIMsgAccount); for (let i = 0; i < ac.identities.length; i++) { let id = ac.identities.queryElementAt(i, Ci.nsIMsgIdentity); if (id.getBoolAttribute("enablePgp")) { if (id.getIntAttribute("pgpKeyMode") === 1) { keySpecList.push(id.getCharAttribute("pgpkeyId")); } else { keySpecList.push(id.email); } } } } return keySpecList; }, /** * Check if all keys of all configured identities are still valid in N days. * (N is configured via warnKeyExpiryNumDays; 0 = disable the check) * * @return Array of keys - the keys that have expired since the last check * null in case no check was performed */ getNewlyExpiredKeys: function() { EnigmailLog.DEBUG("expiry.jsm: getNewlyExpiredKeys()\n"); let numDays = EnigmailPrefs.getPref("warnKeyExpiryNumDays"); if (numDays < 1) return null; let now = Date.now(); let lastResult = { expiredList: [], lastCheck: 0 }; let lastRes = EnigmailPrefs.getPref("keyCheckResult"); if (lastRes.length > 0) { lastResult = JSON.parse(lastRes); } if (now - lastResult.lastCheck < DAY * 1000) return null; let keys = this.getKeysSpecForIdentities(); if (keys.length === 0) { lastResult.lastCheck = now; EnigmailPrefs.setPref("keyCheckResult", JSON.stringify(lastResult)); return []; } let expired = this.getExpiryForKeySpec(keys, numDays); let expiredList = expired.reduce(function _f(p, key) { p.push(key.keyId); return p; }, []); let newResult = { expiredList: expiredList, lastCheck: now }; EnigmailPrefs.setPref("keyCheckResult", JSON.stringify(newResult)); let warnList = expired.reduce(function _f(p, key) { if (lastResult.expiredList.indexOf(key.keyId) < 0) { p.push(key); } return p; }, []); return warnList; }, keyExpiryCheck: function() { EnigmailLog.DEBUG("expiry.jsm: keyExpiryCheck()\n"); let expiredKeys = this.getNewlyExpiredKeys(); if (!expiredKeys || expiredKeys.length === 0) return ""; let numDays = EnigmailPrefs.getPref("warnKeyExpiryNumDays"); if (expiredKeys.length === 1) { return EnigmailLocale.getString("expiry.keyExpiresSoon", [getKeyDesc(expiredKeys[0]), numDays]); } else { let keyDesc = ""; for (let i = 0; i < expiredKeys.length; i++) { keyDesc += "- " + getKeyDesc(expiredKeys[i]) + "\n"; } return EnigmailLocale.getString("expiry.keysExpireSoon", [numDays, keyDesc]); } } }; /** * Remove duplicate key Object elements from an array * * @param arr - Array of key Objects to be worked on * * @return Array - the array without duplicates */ function uniqueKeyList(arr) { return arr.reduce(function(p, c) { let r = p.find(function _f(e, i, a) { if (e.keyId === c.keyId) return true; }); if (r === undefined) p.push(c); return p; }, []); } function getKeyDesc(key) { return '"' + key.userId + '" (key ID ' + key.fprFormatted + ')'; } enigmail/package/files.jsm000066400000000000000000000223761266701624400160750ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, EnigmailOS: false, EnigmailData: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailFiles"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/os.jsm"); Cu.import("resource://enigmail/data.jsm"); const NS_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const NS_LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const NS_LOCALFILEOUTPUTSTREAM_CONTRACTID = "@mozilla.org/network/file-output-stream;1"; const NS_IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; const NS_SCRIPTABLEINPUTSTREAM_CONTRACTID = "@mozilla.org/scriptableinputstream;1"; const DIRSERVICE_CONTRACTID = "@mozilla.org/file/directory_service;1"; const NS_RDONLY = 0x01; const NS_WRONLY = 0x02; const NS_CREATE_FILE = 0x08; const NS_TRUNCATE = 0x20; const DEFAULT_FILE_PERMS = 0x180; // equals 0600 const lazyLog = (function() { let log = null; return function() { if (!log) { Components.utils.import("resource://enigmail/log.jsm"); log = EnigmailLog; } return log; }; })(); const EnigmailFiles = { isAbsolutePath: function(filePath, isDosLike) { // Check if absolute path if (isDosLike) { return ((filePath.search(/^\w+:\\/) === 0) || (filePath.search(/^\\\\/) === 0) || (filePath.search(/^\/\//) === 0)); } else { return (filePath.search(/^\//) === 0); } }, resolvePath: function(filePath, envPath, isDosLike) { lazyLog().DEBUG("files.jsm: resolvePath: filePath=" + filePath + "\n"); if (EnigmailFiles.isAbsolutePath(filePath, isDosLike)) return filePath; if (!envPath) return null; var fileNames = filePath.split(";"); var pathDirs = envPath.split(isDosLike ? ";" : ":"); for (var i = 0; i < fileNames.length; i++) { for (var j = 0; j < pathDirs.length; j++) { try { var pathDir = Cc[NS_FILE_CONTRACTID].createInstance(Ci.nsIFile); lazyLog().DEBUG("files.jsm: resolvePath: checking for " + pathDirs[j] + "/" + fileNames[i] + "\n"); EnigmailFiles.initPath(pathDir, pathDirs[j]); try { if (pathDir.exists() && pathDir.isDirectory()) { pathDir.appendRelativePath(fileNames[i]); if (pathDir.exists() && !pathDir.isDirectory()) { return pathDir; } } } catch (ex) {} } catch (ex) {} } } return null; }, createFileStream: function(filePath, permissions) { try { var localFile; if (typeof filePath == "string") { localFile = Cc[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); EnigmailFiles.initPath(localFile, filePath); } else { localFile = filePath.QueryInterface(Ci.nsIFile); } if (localFile.exists()) { if (localFile.isDirectory() || !localFile.isWritable()) throw Components.results.NS_ERROR_FAILURE; if (!permissions) permissions = localFile.permissions; } if (!permissions) permissions = DEFAULT_FILE_PERMS; var flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE; var fileStream = Cc[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Ci.nsIFileOutputStream); fileStream.init(localFile, flags, permissions, 0); return fileStream; } catch (ex) { lazyLog().ERROR("files.jsm: createFileStream: Failed to create " + filePath + "\n"); return null; } }, // path initialization function // uses persistentDescriptor in case that initWithPath fails // (seems to happen frequently with UTF-8 characters in path names) initPath: function(localFileObj, pathStr) { localFileObj.initWithPath(pathStr); if (!localFileObj.exists()) { localFileObj.persistentDescriptor = pathStr; } }, // Read the contents of a file into a string readFile: function(filePath) { // @filePath: nsIFile if (filePath.exists()) { var ioServ = Cc[NS_IOSERVICE_CONTRACTID].getService(Ci.nsIIOService); if (!ioServ) throw Components.results.NS_ERROR_FAILURE; var fileURI = ioServ.newFileURI(filePath); var fileChannel = ioServ.newChannel(fileURI.asciiSpec, null, null); var rawInStream = fileChannel.open(); var scriptableInStream = Cc[NS_SCRIPTABLEINPUTSTREAM_CONTRACTID].createInstance(Ci.nsIScriptableInputStream); scriptableInStream.init(rawInStream); var available = scriptableInStream.available(); var fileContents = scriptableInStream.read(available); scriptableInStream.close(); return fileContents; } return ""; }, formatCmdLine: function(command, args) { function getQuoted(str) { let i = str.indexOf(" "); if (i >= 0) { return '"' + str + '"'; } else { return str; } } var cmdStr = getQuoted(EnigmailFiles.getFilePathDesc(command)) + " "; var argStr = args.map(getQuoted).join(" ").replace(/\\\\/g, '\\'); return cmdStr + argStr; }, getFilePathDesc: function(nsFileObj) { if (EnigmailOS.getOS() == "WINNT") { return nsFileObj.persistentDescriptor; } else { return nsFileObj.path; } }, getFilePath: function(nsFileObj) { return EnigmailData.convertToUnicode(EnigmailFiles.getFilePathDesc(nsFileObj), "utf-8"); }, getEscapedFilename: function(fileNameStr) { if (EnigmailOS.isDosLike()) { // escape the backslashes and the " character (for Windows and OS/2) fileNameStr = fileNameStr.replace(/([\\\"])/g, "\\$1"); } if (EnigmailOS.getOS() == "WINNT") { // replace leading "\\" with "//" fileNameStr = fileNameStr.replace(/^\\\\*/, "//"); } return fileNameStr; }, /** * get the temporary folder * * @return nsIFile object holding a reference to the temp directory */ getTempDirObj: function() { const TEMPDIR_PROP = "TmpD"; try { let dsprops = Cc[DIRSERVICE_CONTRACTID].getService(). QueryInterface(Ci.nsIProperties); return dsprops.get(TEMPDIR_PROP, Ci.nsIFile); } catch (ex) { // let's guess ... let tmpDirObj = Cc[NS_FILE_CONTRACTID].createInstance(Ci.nsIFile); if (EnigmailOS.getOS() == "WINNT") { tmpDirObj.initWithPath("C:/TEMP"); } else { tmpDirObj.initWithPath("/tmp"); } return tmpDirObj; } }, /** * get the temporary folder as string * * @return String containing the temp directory name */ getTempDir: function() { return EnigmailFiles.getTempDirObj().path; }, /** * create a new folder as subfolder of the temporary directory * * @param dirName String - name of subfolder * @param unique Boolean - if true, the directory is guaranteed to be unique * * @return nsIFile object holding a reference to the created directory */ createTempSubDir: function(dirName, unique = false) { let localFile = EnigmailFiles.getTempDirObj().clone(); localFile.append(dirName); if (unique) { localFile.createUnique(Ci.nsIFile.DIRECTORY_TYPE, 509 /* = 0775 */ ); } else { localFile.create(Ci.nsIFile.DIRECTORY_TYPE, 509 /* = 0775 */ ); } return localFile; }, /** * Write data to a file * @filePath |string| or |nsIFile| object - the file to be created * @data |string| - the data to write to the file * @permissions |number| - file permissions according to Unix spec (0600 by default) * * @return true if data was written successfully, false otherwise */ writeFileContents: function(filePath, data, permissions) { try { var fileOutStream = EnigmailFiles.createFileStream(filePath, permissions); if (data.length) { if (fileOutStream.write(data, data.length) != data.length) { throw Components.results.NS_ERROR_FAILURE; } fileOutStream.flush(); } fileOutStream.close(); } catch (ex) { EnigmailLog.ERROR("files.jsm: writeFileContents: Failed to write to " + filePath + "\n"); return false; } return true; }, // return the useable path (for gpg) of a file object getFilePathReadonly: function(nsFileObj, creationMode) { if (creationMode === null) creationMode = NS_RDONLY; return nsFileObj.path; }, /** * Create an empty ZIP file * * @param nsFileObj - nsIFile object: reference to the file to be created * * @return nsIZipWriter object allow to perform write operations on the ZIP file */ createZipFile: function(nsFileObj) { let zipW = Cc['@mozilla.org/zipwriter;1'].createInstance(Ci.nsIZipWriter); zipW.open(nsFileObj, NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE); return zipW; }, /** * Open a ZIP file for reading * * @param nsFileObj - nsIFile object: reference to the file to be created * * @return nsIZipReader object allow to perform read operations on the ZIP file */ openZipFile: function(nsFileObj) { let zipR = Cc['@mozilla.org/libjar/zip-reader;1'].createInstance(Ci.nsIZipReader); zipR.open(nsFileObj); return zipR; } }; enigmail/package/filters.jsm000066400000000000000000000065561266701624400164450ustar00rootroot00000000000000/*global Components: false, EnigmailDecryptPermanently: false, EnigmailCore: false, EnigmailLog: false, EnigmailLocale: false, EnigmailDialog: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailFilters"]; Components.utils.import("resource://enigmail/core.jsm"); Components.utils.import("resource://enigmail/decryptPermanently.jsm"); Components.utils.import("resource://enigmail/log.jsm"); Components.utils.import("resource://enigmail/locale.jsm"); Components.utils.import("resource://enigmail/dialog.jsm"); const Cc = Components.classes; const Ci = Components.interfaces; /******************************************************************************** Filter actions for decrypting messages permanently ********************************************************************************/ /** * filter action for creating a decrypted version of the mail and * deleting the original mail at the same time */ const filterActionMoveDecrypt = { id: "enigmail@enigmail.net#filterActionMoveDecrypt", name: EnigmailLocale.getString("filter.decryptMove.label"), value: "movemessage", apply: function(aMsgHdrs, aActionValue, aListener, aType, aMsgWindow) { EnigmailLog.DEBUG("enigmail.js: filterActionMoveDecrypt: Move to: " + aActionValue + "\n"); var msgHdrs = []; for (var i = 0; i < aMsgHdrs.length; i++) { msgHdrs.push(aMsgHdrs.queryElementAt(i, Ci.nsIMsgDBHdr)); } EnigmailDecryptPermanently.dispatchMessages(msgHdrs, aActionValue, true, true); return; }, isValidForType: function(type, scope) { return true; }, validateActionValue: function(value, folder, type) { EnigmailDialog.alert(null, EnigmailLocale.getString("filter.decryptMove.warnExperimental")); if (value === "") { return EnigmailLocale.getString("filter.folderRequired"); } return null; }, allowDuplicates: false, isAsync: false, needsBody: true }; /** * filter action for creating a decrypted copy of the mail, leaving the original * message untouched */ const filterActionCopyDecrypt = { id: "enigmail@enigmail.net#filterActionCopyDecrypt", name: EnigmailLocale.getString("filter.decryptCopy.label"), value: "copymessage", apply: function(aMsgHdrs, aActionValue, aListener, aType, aMsgWindow) { EnigmailLog.DEBUG("enigmail.js: filterActionCopyDecrypt: Copy to: " + aActionValue + "\n"); var msgHdrs = []; for (var i = 0; i < aMsgHdrs.length; i++) { msgHdrs.push(aMsgHdrs.queryElementAt(i, Ci.nsIMsgDBHdr)); } EnigmailDecryptPermanently.dispatchMessages(msgHdrs, aActionValue, false, true); return; }, isValidForType: function(type, scope) { return true; }, validateActionValue: function(value, folder, type) { if (value === "") { return EnigmailLocale.getString("filter.folderRequired"); } return null; }, allowDuplicates: false, isAsync: false, needsBody: true }; const EnigmailFilters = { registerAll: function() { var filterService = Cc["@mozilla.org/messenger/services/filters;1"].getService(Ci.nsIMsgFilterService); filterService.addCustomAction(filterActionMoveDecrypt); filterService.addCustomAction(filterActionCopyDecrypt); } }; enigmail/package/fixExchangeMsg.jsm000066400000000000000000000327651266701624400176760ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailFixExchangeMsg"]; const Cu = Components.utils; Cu.import("resource:///modules/MailUtils.js"); /*global MailUtils: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/funcs.jsm"); /*global EnigmailFuncs: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/promise.jsm"); /*global Promise: false */ Cu.import("resource://enigmail/streams.jsm"); /*global EnigmailStreams: false */ const EC = EnigmailCore; const Cc = Components.classes; const Ci = Components.interfaces; const nsIEnigmail = Components.interfaces.nsIEnigmail; const IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; /* * Fix a broken message from MS-Exchange and replace it with the original message * * @param nsIMsgDBHdr hdr Header of the message to fix (= pointer to message) * @param String brokenByApp Type of app that created the message. Currently one of * exchange, iPGMail * @param String destFolderUri optional destination Folder URI * * @return Promise; upon success, the promise returns the messageKey */ const EnigmailFixExchangeMsg = { fixExchangeMessage: function(hdr, brokenByApp, destFolderUri) { var self = this; return new Promise( function fixExchangeMessage_p(resolve, reject) { let msgUriSpec = hdr.folder.getUriForMsg(hdr); EnigmailLog.DEBUG("fixExchangeMsg.jsm: fixExchangeMessage: msgUriSpec: " + msgUriSpec + "\n"); self.hdr = hdr; self.destFolder = hdr.folder; self.resolve = resolve; self.reject = reject; self.brokenByApp = brokenByApp; if (destFolderUri) { self.destFolder = MailUtils.getFolderForURI(destFolderUri, false); } let messenger = Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger); self.msgSvc = messenger.messageServiceFromURI(msgUriSpec); let p = self.getMessageBody(); p.then( function resolved(fixedMsgData) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: fixExchangeMessage: got fixedMsgData\n"); self.copyToTargetFolder(fixedMsgData); }); p.catch( function rejected(reason) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: fixExchangeMessage: caught rejection: " + reason + "\n"); reject(); return; }); } ); }, getMessageBody: function() { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getMessageBody:\n"); var self = this; return new Promise( function(resolve, reject) { let u = {}; self.msgSvc.GetUrlForUri(self.hdr.folder.getUriForMsg(self.hdr), u, null); let op = (u.value.spec.indexOf("?") > 0 ? "&" : "?"); let url = u.value.spec; // + op + 'part=' + part+"&header=enigmailConvert"; EnigmailLog.DEBUG("fixExchangeMsg.jsm: getting data from URL " + url + "\n"); let s = EnigmailStreams.newStringStreamListener( function analyzeData(data) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: analyzeDecryptedData: got " + data.length + " bytes\n"); if (EnigmailLog.getLogLevel() > 5) { EnigmailLog.DEBUG("*** start data ***\n'" + data + "'\n***end data***\n"); } let hdrEnd = data.search(/\r?\n\r?\n/); if (hdrEnd <= 0) { // cannot find end of header data reject(0); return; } let hdrLines = data.substr(0, hdrEnd).split(/\r?\n/); let hdrObj = self.getFixedHeaderData(hdrLines); if (hdrObj.headers.length === 0 || hdrObj.boundary.length === 0) { reject(1); return; } let boundary = hdrObj.boundary; let body; switch (self.brokenByApp) { case "exchange": body = self.getCorrectedExchangeBodyData(data.substr(hdrEnd + 2), boundary); break; case "iPGMail": body = self.getCorrectediPGMailBodyData(data.substr(hdrEnd + 2), boundary); break; default: EnigmailLog.ERROR("fixExchangeMsg.jsm: getMessageBody: unknown appType " + self.brokenByApp + "\n"); reject(99); return; } if (body) { resolve(hdrObj.headers + "\r\n" + body); return; } else { reject(2); return; } } ); var ioServ = Components.classes[IOSERVICE_CONTRACTID].getService(Components.interfaces.nsIIOService); try { var channel = ioServ.newChannel(url, null, null); channel.asyncOpen(s, null); } catch (e) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getMessageBody: exception " + e + "\n"); } } ); }, /** * repair header data, such that they are working for PGP/MIME * * @return: object: { * headers: String - all headers ready for appending to message * boundary: String - MIME part boundary (incl. surrounding "" or '') * } */ getFixedHeaderData: function(hdrLines) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getFixedHeaderData: hdrLines[]:'" + hdrLines.length + "'\n"); let r = { headers: "", boundary: "" }; for (let i = 0; i < hdrLines.length; i++) { if (hdrLines[i].search(/^content-type:/i) >= 0) { // Join the rest of the content type lines together. // See RFC 2425, section 5.8.1 let contentTypeLine = hdrLines[i]; i++; while (i < hdrLines.length) { // Does the line start with a space or a tab, followed by something else? if (hdrLines[i].search(/^[ \t]+?/) === 0) { contentTypeLine += hdrLines[i]; i++; } else { // we got the complete content-type header contentTypeLine = contentTypeLine.replace(/[\r\n]/g, ""); let h = EnigmailFuncs.getHeaderData(contentTypeLine); r.boundary = h.boundary || ""; break; } } } else { r.headers += hdrLines[i] + "\r\n"; } } r.boundary = r.boundary.replace(/^(['"])(.*)(['"])/, "$2"); r.headers += 'Content-Type: multipart/encrypted;\r\n' + ' protocol="application/pgp-encrypted";\r\n' + ' boundary="' + r.boundary + '"\r\n' + 'X-Enigmail-Info: Fixed broken PGP/MIME message\r\n'; return r; }, /** * Get corrected body for MS-Exchange messages */ getCorrectedExchangeBodyData: function(bodyData, boundary) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: boundary='" + boundary + "'\n"); let boundRx = new RegExp("^--" + boundary, "gm"); let match = boundRx.exec(bodyData); if (match.index < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: did not find index of mime type to skip\n"); return null; } let skipStart = match.index; // found first instance -- that's the message part to ignore match = boundRx.exec(bodyData); if (match.index <= 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: did not find boundary of PGP/MIME version identification\n"); return null; } let versionIdent = match.index; if (bodyData.substring(skipStart, versionIdent).search(/^content-type:[ \t]*text\/plain/mi) < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: first MIME part is not content-type text/plain\n"); return null; } match = boundRx.exec(bodyData); if (match.index < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: did not find boundary of PGP/MIME encrypted data\n"); return null; } let encData = match.index; let mimeHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); mimeHdr.initialize(bodyData.substring(versionIdent, encData)); let ct = mimeHdr.extractHeader("content-type", false); if (!ct || ct.search(/application\/pgp-encrypted/i) < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: wrong content-type of version-identification\n"); EnigmailLog.DEBUG(" ct = '" + ct + "'\n"); return null; } mimeHdr.initialize(bodyData.substr(encData, 500)); ct = mimeHdr.extractHeader("content-type", false); if (!ct || ct.search(/application\/octet-stream/i) < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectedExchangeBodyData: wrong content-type of PGP/MIME data\n"); EnigmailLog.DEBUG(" ct = '" + ct + "'\n"); return null; } return bodyData.substr(versionIdent); }, /** * Get corrected body for iPGMail messages */ getCorrectediPGMailBodyData: function(bodyData, boundary) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectediPGMailBodyData: boundary='" + boundary + "'\n"); let boundRx = new RegExp("^--" + boundary, "gm"); let match = boundRx.exec(bodyData); if (match.index < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectediPGMailBodyData: did not find index of mime type to skip\n"); return null; } let skipStart = match.index; // found first instance -- that's the message part to ignore match = boundRx.exec(bodyData); if (match.index <= 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectediPGMailBodyData: did not find boundary of text/plain msg part\n"); return null; } let encData = match.index; match = boundRx.exec(bodyData); if (match.index < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectediPGMailBodyData: did not find end boundary of PGP/MIME encrypted data\n"); return null; } let mimeHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); mimeHdr.initialize(bodyData.substr(encData, 500)); let ct = mimeHdr.extractHeader("content-type", false); if (!ct || ct.search(/application\/pgp-encrypted/i) < 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: getCorrectediPGMailBodyData: wrong content-type of PGP/MIME data\n"); EnigmailLog.DEBUG(" ct = '" + ct + "'\n"); return null; } return "--" + boundary + "\r\n" + "Content-Type: application/pgp-encrypted\r\n" + "Content-Description: PGP/MIME version identification\r\n\r\n" + "Version: 1\r\n\r\n" + bodyData.substring(encData, match.index). replace(/^Content-Type: +application\/pgp-encrypted/im, "Content-Type: application/octet-stream") + "--" + boundary + "--\r\n"; }, copyToTargetFolder: function(msgData) { var self = this; var tempFile = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("TmpD", Ci.nsIFile); tempFile.append("message.eml"); tempFile.createUnique(0, 384); // octal 0600 - since octal is deprected in JS // ensure that file gets deleted on exit, if something goes wrong ... var extAppLauncher = Cc["@mozilla.org/mime;1"].getService(Ci.nsPIExternalAppLauncher); var foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream); foStream.init(tempFile, 2, 0x200, false); // open as "write only" foStream.write(msgData, msgData.length); foStream.close(); extAppLauncher.deleteTemporaryFileOnExit(tempFile); // note: nsIMsgFolder.copyFileMessage seems to have a bug on Windows, when // the nsIFile has been already used by foStream (because of Windows lock system?), so we // must initialize another nsIFile object, pointing to the temporary file var fileSpec = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); fileSpec.initWithPath(tempFile.path); var copyListener = { QueryInterface: function(iid) { if (iid.equals(Ci.nsIMsgCopyServiceListener) || iid.equals(Ci.nsISupports)) { return this; } throw Components.results.NS_NOINTERFACE; }, msgKey: null, GetMessageId: function(messageId) {}, OnProgress: function(progress, progressMax) {}, OnStartCopy: function() {}, SetMessageKey: function(key) { this.msgKey = key; }, OnStopCopy: function(statusCode) { if (statusCode !== 0) { EnigmailLog.DEBUG("fixExchangeMsg.jsm: error copying message: " + statusCode + "\n"); tempFile.remove(false); self.reject(3); return; } EnigmailLog.DEBUG("fixExchangeMsg.jsm: copy complete\n"); EnigmailLog.DEBUG("fixExchangeMsg.jsm: deleting message key=" + self.hdr.messageKey + "\n"); let msgArray = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray); msgArray.appendElement(self.hdr, false); self.hdr.folder.deleteMessages(msgArray, null, true, false, null, false); EnigmailLog.DEBUG("fixExchangeMsg.jsm: deleted original message\n"); tempFile.remove(false); self.resolve(this.msgKey); return; } }; let copySvc = Cc["@mozilla.org/messenger/messagecopyservice;1"].getService(Ci.nsIMsgCopyService); copySvc.CopyFileMessage(fileSpec, this.destFolder, null, false, this.hdr.flags, null, copyListener, null); } }; enigmail/package/funcs.jsm000066400000000000000000000255111266701624400161030ustar00rootroot00000000000000/*global Components: false, escape: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailFuncs"]; /* * Common Enigmail crypto-related GUI functionality * */ const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ var gTxtConverter = null; const EnigmailFuncsRegexTwoAddr = new RegExp("<[^>,]*>[^,<]*<[^>,]*>"); const EnigmailFuncsRegexExtractPureEmail = new RegExp("(^|,)[^,]*<([^>]+)>[^,]*", "g"); const EnigmailFuncs = { /** * get a list of plain email addresses without name or surrounding <> * @mailAddrs |string| - address-list as specified in RFC 2822, 3.4 * separated by "," * * @return |string| - list of pure email addresses separated by "," */ stripEmail: function(mailAddrs) { //EnigmailLog.DEBUG("funcs.jsm: stripEmail(): mailAddrs=" + mailAddrs + "\n"); var qStart, qEnd; while ((qStart = mailAddrs.indexOf('"')) != -1) { qEnd = mailAddrs.indexOf('"', qStart + 1); if (qEnd == -1) { EnigmailLog.ERROR("funcs.jsm: stripEmail: Unmatched quote in mail address: " + mailAddrs + "\n"); throw Components.results.NS_ERROR_FAILURE; } mailAddrs = mailAddrs.substring(0, qStart) + mailAddrs.substring(qEnd + 1); } // Eliminate all whitespace, just to be safe mailAddrs = mailAddrs.replace(/\s+/g, ""); // having two <..> <..> in one email is an error if (mailAddrs.match(EnigmailFuncsRegexTwoAddr)) { EnigmailLog.ERROR("funcs.jsm: stripEmail: Two <..> entries in mail address: " + mailAddrs + "\n"); throw Components.results.NS_ERROR_FAILURE; } // Extract pure e-mail address list (stripping out angle brackets) mailAddrs = mailAddrs.replace(EnigmailFuncsRegexExtractPureEmail, "$1$2"); // remove empty email addresses (including removing all ';') mailAddrs = mailAddrs.replace(/[,;]+/g, ",").replace(/^,/, "").replace(/,$/, ""); return mailAddrs; }, /** * Hide all menu entries and other XUL elements that are considered for * advanced users. The XUL items must contain 'advanced="true"' or * 'advanced="reverse"'. * * @obj: |object| - XUL tree element * @attribute: |string| - attribute to set or remove (i.e. "hidden" or "collapsed") * @dummy: |object| - anything * * no return value */ collapseAdvanced: function(obj, attribute, dummy) { EnigmailLog.DEBUG("funcs.jsm: collapseAdvanced:\n"); var advancedUser = EnigmailPrefs.getPref("advancedUser"); obj = obj.firstChild; while (obj) { if (obj.getAttribute("advanced") == "true") { if (advancedUser) { obj.removeAttribute(attribute); } else { obj.setAttribute(attribute, "true"); } } else if (obj.getAttribute("advanced") == "reverse") { if (advancedUser) { obj.setAttribute(attribute, "true"); } else { obj.removeAttribute(attribute); } } obj = obj.nextSibling; } }, /** * determine default values for signing and encryption. * Translates "old-style" defaults (pre-Enigmail v1.0) to "current" defaults * * @identiy - nsIMsgIdentity object * * no return values */ getSignMsg: function(identity) { EnigmailLog.DEBUG("funcs.jsm: getSignMsg: identity.key=" + identity.key + "\n"); var sign = null; EnigmailPrefs.getPref("configuredVersion"); // dummy call to getPref to ensure initialization var prefRoot = EnigmailPrefs.getPrefRoot(); if (prefRoot.getPrefType("mail.identity." + identity.key + ".pgpSignPlain") === 0) { if (prefRoot.getPrefType("mail.identity." + identity.key + ".pgpSignMsg") === 0) { sign = identity.getBoolAttribute("pgpAlwaysSign"); identity.setBoolAttribute("pgpSignEncrypted", sign); identity.setBoolAttribute("pgpSignPlain", sign); } else { sign = identity.getIntAttribute("pgpSignMsg"); identity.setBoolAttribute("pgpSignEncrypted", sign == 1); identity.setBoolAttribute("pgpSignPlain", sign > 0); } prefRoot.deleteBranch("mail.identity." + identity.key + ".pgpSignMsg"); prefRoot.deleteBranch("mail.identity." + identity.key + ".pgpAlwaysSign"); } }, /** * this function tries to mimic the Thunderbird plaintext viewer * * @plainTxt - |string| containing the plain text data * * @ return HTML markup to display mssage */ formatPlaintextMsg: function(plainTxt) { if (!gTxtConverter) gTxtConverter = Cc["@mozilla.org/txttohtmlconv;1"].createInstance(Ci.mozITXTToHTMLConv); var prefRoot = EnigmailPrefs.getPrefRoot(); var fontStyle = ""; // set the style stuff according to perferences switch (prefRoot.getIntPref("mail.quoted_style")) { case 1: fontStyle = "font-weight: bold; "; break; case 2: fontStyle = "font-style: italic; "; break; case 3: fontStyle = "font-weight: bold; font-style: italic; "; break; } switch (prefRoot.getIntPref("mail.quoted_size")) { case 1: fontStyle += "font-size: large; "; break; case 2: fontStyle += "font-size: small; "; break; } fontStyle += "color: " + prefRoot.getCharPref("mail.citation_color") + ";"; var convFlags = Ci.mozITXTToHTMLConv.kURLs; if (prefRoot.getBoolPref("mail.display_glyph")) convFlags |= Ci.mozITXTToHTMLConv.kGlyphSubstitution; if (prefRoot.getBoolPref("mail.display_struct")) convFlags |= Ci.mozITXTToHTMLConv.kStructPhrase; // start processing the message plainTxt = plainTxt.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); var lines = plainTxt.split(/\n/); var oldCiteLevel = 0; var citeLevel = 0; var preface = ""; var logLineStart = { value: 0 }; var isSignature = false; for (var i = 0; i < lines.length; i++) { preface = ""; oldCiteLevel = citeLevel; if (lines[i].search(/^[\> \t]*\>$/) === 0) lines[i] += " "; citeLevel = gTxtConverter.citeLevelTXT(lines[i], logLineStart); if (citeLevel > oldCiteLevel) { preface = ''; for (let j = 0; j < citeLevel - oldCiteLevel; j++) { preface += '
'; } preface += '
\n';
      }
      else if (citeLevel < oldCiteLevel) {
        preface = '
'; for (let j = 0; j < oldCiteLevel - citeLevel; j++) preface += "
"; preface += '
\n';
      }

      if (logLineStart.value > 0) {
        preface += '' +
          gTxtConverter.scanTXT(lines[i].substr(0, logLineStart.value), convFlags) +
          '';
      }
      else if (lines[i] == "-- ") {
        preface += '
'; isSignature = true; } lines[i] = preface + gTxtConverter.scanTXT(lines[i].substr(logLineStart.value), convFlags); } var r = '
' + lines.join("\n") + (isSignature ? '
' : '') + '
'; //EnigmailLog.DEBUG("funcs.jsm: r='"+r+"'\n"); return r; }, /** * extract the data fields following a header. * e.g. ContentType: xyz; Aa=b; cc=d * @data: |string| containing a single header * * @return |array| of |arrays| containing pairs of aa/b and cc/d */ getHeaderData: function(data) { EnigmailLog.DEBUG("funcs.jsm: getHeaderData: " + data.substr(0, 100) + "\n"); var a = data.split(/\n/); var res = []; for (let i = 0; i < a.length; i++) { if (a[i].length === 0) break; let b = a[i].split(/;/); // extract "abc = xyz" tuples for (let j = 0; j < b.length; j++) { let m = b[j].match(/^(\s*)([^=\s;]+)(\s*)(=)(\s*)(.*)(\s*)$/); if (m) { // m[2]: identifier / m[6]: data res[m[2].toLowerCase()] = m[6].replace(/\s*$/, ""); EnigmailLog.DEBUG("funcs.jsm: getHeaderData: " + m[2].toLowerCase() + " = " + res[m[2].toLowerCase()] + "\n"); } } if (i === 0 && a[i].indexOf(";") < 0) break; if (i > 0 && a[i].search(/^\s/) < 0) break; } return res; }, /*** * Get the text for the encrypted subject (either configured by user or default) */ getProtectedSubjectText: function() { if (EnigmailPrefs.getPref("protectedSubjectText").length > 0) { return EnigmailPrefs.getPref("protectedSubjectText"); } else { return EnigmailLocale.getString("msgCompose.encryptedSubjectStub"); } }, cloneObj: function(orig) { let newObj; if (typeof orig !== "object" || orig === null || orig === undefined) { return orig; } if ("clone" in orig && typeof orig.clone === "function") { return orig.clone(); } if (Array.isArray(orig) && orig.length > 0) { newObj = []; for (let i in orig) { if (typeof orig[i] === "object") { newObj.push(this.cloneObj(orig[i])); } else { newObj.push(orig[i]); } } } else { newObj = {}; for (let i in orig) { if (typeof orig[i] === "object") { newObj[i] = this.cloneObj(orig[i]); } else newObj[i] = orig[i]; } } return newObj; }, /** * Compare two MIME part numbers to determine which of the two is earlier in the tree * MIME part numbers have the structure "x.y.z...", e.g 1, 1.2, 2.3.1.4.5.1.2 * * @param mime1, mime2 - String the two mime part numbers to compare. * * @return Number (one of -2, -1, 0, 1 , 2) * - Negative number if mime1 is before mime2 * - Positive number if mime1 is after mime2 * - 0 if mime1 and mime2 are equal * - if mime1 is a parent of mime2 the return value is -2 * - if mime2 is a parent of mime1 the return value is 2 * * Throws an error if mime1 or mime2 do not comply to the required format */ compareMimePartLevel: function(mime1, mime2) { let s = new RegExp("^[0-9]+(\.[0-9]+)*$"); if (mime1.search(s) < 0) throw "Invalid mime1"; if (mime2.search(s) < 0) throw "Invalid mime2"; let a1 = mime1.split(/./); let a2 = mime2.split(/./); for (let i = 0; i < Math.min(a1.length, a2.length); i++) { if (Number(mime1[i]) < Number(mime2[i])) return -1; if (Number(mime1[i]) > Number(mime2[i])) return 1; } if (a2.length > a1.length) return -2; if (a2.length < a1.length) return 2; return 0; } }; enigmail/package/glodaMime.jsm000066400000000000000000000020571266701624400166630ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* This module is a shim module to make it easier to load the Gloda EnigmailMime utilities from the various potential sources */ "use strict"; var EXPORTED_SYMBOLS = ["msgHdrToMimeMessage", "MimeMessage", "MimeContainer", "MimeBody", "MimeUnknown", "MimeMessageAttachment" ]; const Cu = Components.utils; /*global MsgHdrToMimeMessage: false */ try { // TB with omnijar Cu.import("resource:///modules/gloda/mimemsg.js"); } catch (ex) { // "old style" TB Cu.import("resource://app/modules/gloda/mimemsg.js"); } // The original naming is inconsistent with JS standards for classes vs functions // Thus we rename it here. const msgHdrToMimeMessage = MsgHdrToMimeMessage; // We don't need to explicitly create the other variables, since they will be // imported into the current namespace anyway enigmail/package/glodaUtils.jsm000066400000000000000000000013721266701624400170730ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* This module is a shim module to make it easier to load GlodaUtils from the various potential sources */ "use strict"; var EXPORTED_SYMBOLS = ["GlodaUtils"]; const Cu = Components.utils; try { // TB with omnijar Cu.import("resource:///modules/gloda/utils.js"); } catch (ex) { // "old style" TB Cu.import("resource://app/modules/gloda/utils.js"); } // We don't define the exported symbol here - that is on purpose // The goal of this module is simply to simplify loading of the component enigmail/package/gpg.jsm000066400000000000000000000206271266701624400155450ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailGpg"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ const GPG_BATCH_OPT_LIST = ["--batch", "--no-tty", "--status-fd", "2"]; function pushTrimmedStr(arr, str, splitStr) { // Helper function for pushing a string without leading/trailing spaces // to an array str = str.replace(/^ */, "").replace(/ *$/, ""); if (str.length > 0) { if (splitStr) { const tmpArr = str.split(/[\t ]+/); for (let i = 0; i < tmpArr.length; i++) { arr.push(tmpArr[i]); } } else { arr.push(str); } } return (str.length > 0); } const EnigmailGpg = { agentVersion: "", _agentPath: null, get agentPath() { return this._agentPath; }, setAgentPath: function(path) { this._agentPath = path; }, /*** determine if a specific feature is available in the GnuPG version used @featureName: String; one of the following values: version-supported - is the gpg version supported at all (true for gpg >= 2.0.7) supports-gpg-agent - is gpg-agent is usually provided (true for gpg >= 2.0) autostart-gpg-agent - is gpg-agent started automatically by gpg (true for gpg >= 2.0.16) keygen-passphrase - can the passphrase be specified when generating keys (false for gpg 2.1 and 2.1.1) windows-photoid-bug - is there a bug in gpg with the output of photoid on Windows (true for gpg < 2.0.16) @return: depending on featureName - Boolean unless specified differently: (true if feature is available / false otherwise) If the feature cannot be found, undefined is returned */ getGpgFeature: function(featureName) { let gpgVersion = EnigmailGpg.agentVersion; if (!gpgVersion || typeof(gpgVersion) != "string" || gpgVersion.length === 0) { return undefined; } gpgVersion = gpgVersion.replace(/\-.*$/, ""); if (gpgVersion.search(/^\d+\.\d+/) < 0) { // not a valid version number return undefined; } const vc = Cc["@mozilla.org/xpcom/version-comparator;1"].getService(Ci.nsIVersionComparator); switch (featureName) { case 'version-supported': return vc.compare(gpgVersion, "2.0.7") >= 0; case 'supports-gpg-agent': return vc.compare(gpgVersion, "2.0") >= 0; case 'autostart-gpg-agent': return vc.compare(gpgVersion, "2.0.16") >= 0; case 'keygen-passphrase': return vc.compare(gpgVersion, "2.1") < 0 || vc.compare(gpgVersion, "2.1.2") >= 0; case 'windows-photoid-bug': return vc.compare(gpgVersion, "2.0.16") < 0; } return undefined; }, /** * get the standard arguments to pass to every GnuPG subprocess * * @withBatchOpts: Boolean - true: use --batch and some more options * false: don't use --batch and co. * * @return: Array of String - the list of arguments */ getStandardArgs: function(withBatchOpts) { // return the arguments to pass to every GnuPG subprocess let r = ["--charset", "utf-8", "--display-charset", "utf-8", "--use-agent"]; // mandatory parameter to add in all cases try { let p = EnigmailPrefs.getPref("agentAdditionalParam").replace(/\\\\/g, "\\"); let i = 0; let last = 0; let foundSign = ""; let startQuote = -1; while ((i = p.substr(last).search(/['"]/)) >= 0) { if (startQuote == -1) { startQuote = i; foundSign = p.substr(last).charAt(i); last = i + 1; } else if (p.substr(last).charAt(i) == foundSign) { // found enquoted part if (startQuote > 1) pushTrimmedStr(r, p.substr(0, startQuote), true); pushTrimmedStr(r, p.substr(startQuote + 1, last + i - startQuote - 1), false); p = p.substr(last + i + 1); last = 0; startQuote = -1; foundSign = ""; } else { last = last + i + 1; } } pushTrimmedStr(r, p, true); } catch (ex) {} if (withBatchOpts) { r = r.concat(GPG_BATCH_OPT_LIST); } return r; }, // returns the output of --with-colons --list-config getGnupgConfig: function(exitCodeObj, errorMsgObj) { const args = EnigmailGpg.getStandardArgs(true). concat(["--fixed-list-mode", "--with-colons", "--list-config"]); const statusMsgObj = {}; const cmdErrorMsgObj = {}; const statusFlagsObj = {}; const listText = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, statusFlagsObj, statusMsgObj, cmdErrorMsgObj); if (exitCodeObj.value !== 0) { errorMsgObj.value = EnigmailLocale.getString("badCommand"); if (cmdErrorMsgObj.value) { errorMsgObj.value += "\n" + EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, args); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } return ""; } return listText.replace(/(\r\n|\r)/g, "\n"); }, /** * return an array containing the aliases and the email addresses * of groups defined in gpg.conf * * @return: array of objects with the following properties: * - alias: group name as used by GnuPG * - keylist: list of keys (any form that GnuPG accepts), separated by ";" * * (see docu for gnupg parameter --group) */ getGpgGroups: function() { let exitCodeObj = {}; let errorMsgObj = {}; let cfgStr = EnigmailGpg.getGnupgConfig(exitCodeObj, errorMsgObj); if (exitCodeObj.value !== 0) { EnigmailDialog.alert(errorMsgObj.value); return null; } let groups = []; let cfg = cfgStr.split(/\n/); for (let i = 0; i < cfg.length; i++) { if (cfg[i].indexOf("cfg:group") === 0) { let groupArr = cfg[i].split(/:/); groups.push({ alias: groupArr[2], keylist: groupArr[3] }); } } return groups; }, /** * Force GnuPG to recalculate the trust db. This is sometimes required after importing keys. * * no return value */ recalcTrustDb: function() { EnigmailLog.DEBUG("enigmailCommon.jsm: recalcTrustDb:\n"); const command = EnigmailGpg.agentPath; const args = EnigmailGpg.getStandardArgs(false). concat(["--check-trustdb"]); try { const proc = subprocess.call({ command: EnigmailGpg.agentPath, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, mergeStderr: false }); proc.wait(); } catch (ex) { EnigmailLog.ERROR("enigmailCommon.jsm: recalcTrustDb: subprocess.call failed with '" + ex.toString() + "'\n"); throw ex; } }, signingAlgIdToString: function(id) { // RFC 4880 Sec. 9.1, RFC 6637 Sec. 5 and draft-koch-eddsa-for-openpgp-03 Sec. 8 switch (parseInt(id, 10)) { case 1: case 2: case 3: return "RSA"; case 16: return "Elgamal"; case 17: return "DSA"; case 18: return "ECDH"; case 19: return "ECDSA"; case 20: return "ELG"; case 22: return "EDDSA"; default: return EnigmailLocale.getString("unknownSigningAlg", [parseInt(id, 10)]); } }, hashAlgIdToString: function(id) { // RFC 4880 Sec. 9.4 switch (parseInt(id, 10)) { case 1: return "MD5"; case 2: return "SHA-1"; case 3: return "RIPE-MD/160"; case 8: return "SHA256"; case 9: return "SHA384"; case 10: return "SHA512"; case 11: return "SHA224"; default: return EnigmailLocale.getString("unknownHashAlg", [parseInt(id, 10)]); } } }; enigmail/package/gpgAgent.jsm000066400000000000000000000625411266701624400165250ustar00rootroot00000000000000/*global Components: false, unescape: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailGpgAgent"]; const Cu = Components.utils; Cu.import("resource://gre/modules/ctypes.jsm"); /*global ctypes: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ Cu.import("resource://enigmail/windows.jsm"); /*global EnigmailWindows: false */ Cu.import("resource://enigmail/app.jsm"); /*global EnigmailApp: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/passwords.jsm"); /*global EnigmailPassword: false */ Cu.import("resource://enigmail/system.jsm"); /*global EnigmailSystem: false */ Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ const Cc = Components.classes; const Ci = Components.interfaces; const nsIEnigmail = Ci.nsIEnigmail; const NS_LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const DIR_SERV_CONTRACTID = "@mozilla.org/file/directory_service;1"; const NS_LOCALFILEOUTPUTSTREAM_CONTRACTID = "@mozilla.org/network/file-output-stream;1"; const DEFAULT_FILE_PERMS = 0x180; // equals 0600 // Making this a var makes it possible to test windows things on linux var nsIWindowsRegKey = Ci.nsIWindowsRegKey; var gIsGpgAgent = -1; const DUMMY_AGENT_INFO = "none"; function cloneOrNull(v) { if (v && typeof v.clone === "function") { return v.clone(); } else { return v; } } function extractAgentInfo(fullStr) { if (fullStr) { return fullStr. replace(/[\r\n]/g, ""). replace(/^.*\=/, ""). replace(/\;.*$/, ""); } else { return ""; } } function getHomedirFromParam(param) { let i = param.search(/--homedir/); if (i >= 0) { param = param.substr(i + 9); let m = param.match(/^(\s*)([^\\]".+[^\\]")/); if (m && m.length > 2) { param = m[2].substr(1); let j = param.search(/[^\\]"/); return param.substr(1, j); } m = param.match(/^(\s*)([^\\]'.+[^\\]')/); if (m && m.length > 2) { param = m[2].substr(1); let j = param.search(/[^\\]'/); return param.substr(1, j); } m = param.match(/^(\s*)(\S+)/); if (m && m.length > 2) { return m[2]; } } return null; } var EnigmailGpgAgent = { agentType: "", agentPath: null, connGpgAgentPath: null, gpgconfPath: null, gpgAgentInfo: { preStarted: false, envStr: "" }, gpgAgentProcess: null, gpgAgentIsOptional: true, isDummy: function() { return EnigmailGpgAgent.gpgAgentInfo.envStr === DUMMY_AGENT_INFO; }, useGpgAgent: function() { let useAgent = false; try { if (EnigmailOS.isDosLike() && !EnigmailGpg.getGpgFeature("supports-gpg-agent")) { useAgent = false; } else { // gpg version >= 2.0.16 launches gpg-agent automatically if (EnigmailGpg.getGpgFeature("autostart-gpg-agent")) { useAgent = true; EnigmailLog.DEBUG("enigmail.js: Setting useAgent to " + useAgent + " for gpg2 >= 2.0.16\n"); } else { useAgent = (EnigmailGpgAgent.gpgAgentInfo.envStr.length > 0 || EnigmailPrefs.getPrefBranch().getBoolPref("useGpgAgent")); } } } catch (ex) {} return useAgent; }, resetGpgAgent: function() { EnigmailLog.DEBUG("gpgAgent.jsm: resetGpgAgent\n"); gIsGpgAgent = -1; }, isCmdGpgAgent: function(pid) { EnigmailLog.DEBUG("gpgAgent.jsm: isCmdGpgAgent:\n"); const environment = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); let ret = false; let path = environment.get("PATH"); if (!path || path.length === 0) { path = "/bin:/usr/bin:/usr/local/bin"; } const psCmd = EnigmailFiles.resolvePath("ps", path, false); const proc = { command: psCmd, arguments: ["-o", "comm", "-p", pid], environment: EnigmailCore.getEnvList(), charset: null, done: function(result) { EnigmailLog.DEBUG("gpgAgent.jsm: isCmdGpgAgent: got data: '" + result.stdout + "'\n"); var data = result.stdout.replace(/[\r\n]/g, " "); if (data.search(/gpg-agent/) >= 0) { ret = true; } } }; try { subprocess.call(proc).wait(); } catch (ex) {} return ret; }, isAgentTypeGpgAgent: function() { // determine if the used agent is a gpg-agent EnigmailLog.DEBUG("gpgAgent.jsm: isAgentTypeGpgAgent:\n"); // to my knowledge there is no other agent than gpg-agent on Windows if (EnigmailOS.getOS() == "WINNT") return true; if (gIsGpgAgent >= 0) { return gIsGpgAgent == 1; } let pid = -1; let exitCode = -1; if (!EnigmailCore.getService()) return false; const proc = { command: EnigmailGpgAgent.connGpgAgentPath, arguments: [], charset: null, environment: EnigmailCore.getEnvList(), stdin: function(pipe) { pipe.write("/subst\n"); pipe.write("/serverpid\n"); pipe.write("/echo pid: ${get serverpid}\n"); pipe.write("/bye\n"); pipe.close(); }, done: function(result) { exitCode = result.exitCode; const data = result.stdout.replace(/[\r\n]/g, ""); if (data.search(/^pid: [0-9]+$/) === 0) { pid = data.replace(/^pid: /, ""); } } }; try { subprocess.call(proc).wait(); if (exitCode) pid = -2; } catch (ex) {} EnigmailLog.DEBUG("gpgAgent.jsm: isAgentTypeGpgAgent: pid=" + pid + "\n"); EnigmailGpgAgent.isCmdGpgAgent(pid); let isAgent = false; try { isAgent = EnigmailGpgAgent.isCmdGpgAgent(pid); gIsGpgAgent = isAgent ? 1 : 0; } catch (ex) {} return isAgent; }, getAgentMaxIdle: function() { EnigmailLog.DEBUG("gpgAgent.jsm: getAgentMaxIdle:\n"); let maxIdle = -1; if (!EnigmailCore.getService()) return maxIdle; const DEFAULT = 7; const CFGVALUE = 9; const proc = { command: EnigmailGpgAgent.gpgconfPath, arguments: ["--list-options", "gpg-agent"], charset: null, environment: EnigmailCore.getEnvList(), done: function(result) { const lines = result.stdout.split(/[\r\n]/); for (let i = 0; i < lines.length; i++) { EnigmailLog.DEBUG("gpgAgent.jsm: getAgentMaxIdle: line: " + lines[i] + "\n"); if (lines[i].search(/^default-cache-ttl:/) === 0) { const m = lines[i].split(/:/); if (m[CFGVALUE].length === 0) { maxIdle = Math.round(m[DEFAULT] / 60); } else { maxIdle = Math.round(m[CFGVALUE] / 60); } break; } } } }; subprocess.call(proc).wait(); return maxIdle; }, setAgentMaxIdle: function(idleMinutes) { EnigmailLog.DEBUG("gpgAgent.jsm: setAgentMaxIdle:\n"); if (!EnigmailCore.getService()) return; const RUNTIME = 8; const proc = { command: EnigmailGpgAgent.gpgconfPath, arguments: ["--runtime", "--change-options", "gpg-agent"], environment: EnigmailCore.getEnvList(), charset: null, mergeStderr: true, stdin: function(pipe) { pipe.write("default-cache-ttl:" + RUNTIME + ":" + (idleMinutes * 60) + "\n"); pipe.write("max-cache-ttl:" + RUNTIME + ":" + (idleMinutes * 600) + "\n"); pipe.close(); }, stdout: function(data) { EnigmailLog.DEBUG("gpgAgent.jsm: setAgentMaxIdle.stdout: " + data + "\n"); }, done: function(result) { EnigmailLog.DEBUG("gpgAgent.jsm: setAgentMaxIdle.stdout: gpgconf exitCode=" + result.exitCode + "\n"); } }; try { subprocess.call(proc); } catch (ex) { EnigmailLog.DEBUG("gpgAgent.jsm: setAgentMaxIdle: exception: " + ex.toString() + "\n"); } }, getMaxIdlePref: function(win) { let maxIdle = EnigmailPrefs.getPref("maxIdleMinutes"); try { if (EnigmailCore.getService(win)) { if (EnigmailGpgAgent.gpgconfPath && EnigmailGpgAgent.connGpgAgentPath) { if (EnigmailGpgAgent.isAgentTypeGpgAgent()) { const m = EnigmailGpgAgent.getAgentMaxIdle(); if (m > -1) maxIdle = m; } } } } catch (ex) {} return maxIdle; }, setMaxIdlePref: function(minutes) { EnigmailPrefs.setPref("maxIdleMinutes", minutes); if (EnigmailGpgAgent.isAgentTypeGpgAgent()) { try { EnigmailGpgAgent.setAgentMaxIdle(minutes); } catch (ex) {} } }, /** * Determine the "gpg home dir", i.e. the directory where gpg.conf and the keyring are * stored * * @return String - directory name, or NULL (in case the command did not succeed) */ getGpgHomeDir: function() { let param = EnigmailPrefs.getPref("agentAdditionalParam"); if (param) { let hd = getHomedirFromParam(param); if (hd) return hd; } if (EnigmailGpgAgent.gpgconfPath === null) return null; const command = EnigmailGpgAgent.gpgconfPath; let args = ["--list-dirs"]; let exitCode = -1; let outStr = ""; EnigmailLog.DEBUG("enigmail.js: Enigmail.setAgentPath: calling subprocess with '" + command.path + "'\n"); EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); const proc = { command: command, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, done: function(result) { exitCode = result.exitCode; outStr = result.stdout; }, mergeStderr: false }; try { subprocess.call(proc).wait(); } catch (ex) { EnigmailLog.ERROR("enigmail.js: Enigmail.getGpgHomeDir: subprocess.call failed with '" + ex.toString() + "'\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); throw ex; } let m = outStr.match(/^(homedir:)(.*)$/mi); if (m && m.length > 2) { return EnigmailData.convertGpgToUnicode(unescape(m[2])); } return null; }, setAgentPath: function(domWindow, esvc) { let agentPath = ""; try { agentPath = EnigmailPrefs.getPrefBranch().getCharPref("agentPath"); } catch (ex) {} var agentType = "gpg"; var agentName = ""; EnigmailGpgAgent.resetGpgAgent(); if (EnigmailOS.isDosLike()) { agentName = "gpg2.exe;gpg.exe;gpg1.exe"; } else { agentName = "gpg2;gpg;gpg1"; } if (agentPath) { // Locate GnuPG executable // Append default .exe extension for DOS-Like systems, if needed if (EnigmailOS.isDosLike() && (agentPath.search(/\.\w+$/) < 0)) { agentPath += ".exe"; } try { let pathDir = Cc[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); if (!EnigmailFiles.isAbsolutePath(agentPath, EnigmailOS.isDosLike())) { // path relative to Mozilla installation dir const ds = Cc[DIR_SERV_CONTRACTID].getService(); const dsprops = ds.QueryInterface(Ci.nsIProperties); pathDir = dsprops.get("CurProcD", Ci.nsIFile); const dirs = agentPath.split(new RegExp(EnigmailOS.isDosLike() ? "\\\\" : "/")); for (let i = 0; i < dirs.length; i++) { if (dirs[i] != ".") { pathDir.append(dirs[i]); } } pathDir.normalize(); } else { // absolute path EnigmailFiles.initPath(pathDir, agentPath); } if (!(pathDir.isFile() /* && pathDir.isExecutable()*/ )) { throw Components.results.NS_ERROR_FAILURE; } agentPath = pathDir.QueryInterface(Ci.nsIFile); } catch (ex) { esvc.initializationError = EnigmailLocale.getString("gpgNotFound", [agentPath]); EnigmailLog.ERROR("enigmail.js: Enigmail.initialize: Error - " + esvc.initializationError + "\n"); throw Components.results.NS_ERROR_FAILURE; } } else { // Resolve relative path using PATH environment variable const envPath = esvc.environment.get("PATH"); agentPath = EnigmailFiles.resolvePath(agentName, envPath, EnigmailOS.isDosLike()); if (!agentPath && EnigmailOS.isDosLike()) { // DOS-like systems: search for GPG in c:\gnupg, c:\gnupg\bin, d:\gnupg, d:\gnupg\bin let gpgPath = "c:\\gnupg;c:\\gnupg\\bin;d:\\gnupg;d:\\gnupg\\bin"; agentPath = EnigmailFiles.resolvePath(agentName, gpgPath, EnigmailOS.isDosLike()); } if ((!agentPath) && EnigmailOS.isWin32) { // Look up in Windows Registry try { let gpgPath = EnigmailOS.getWinRegistryString("Software\\GNU\\GNUPG", "Install Directory", nsIWindowsRegKey.ROOT_KEY_LOCAL_MACHINE); agentPath = EnigmailFiles.resolvePath(agentName, gpgPath, EnigmailOS.isDosLike()); } catch (ex) {} if (!agentPath) { let gpgPath = gpgPath + "\\pub"; agentPath = EnigmailFiles.resolvePath(agentName, gpgPath, EnigmailOS.isDosLike()); } } if (!agentPath && !EnigmailOS.isDosLike()) { // Unix-like systems: check /usr/bin and /usr/local/bin let gpgPath = "/usr/bin:/usr/local/bin"; agentPath = EnigmailFiles.resolvePath(agentName, gpgPath, EnigmailOS.isDosLike()); } if (!agentPath) { esvc.initializationError = EnigmailLocale.getString("gpgNotInPath"); EnigmailLog.ERROR("enigmail.js: Enigmail: Error - " + esvc.initializationError + "\n"); throw Components.results.NS_ERROR_FAILURE; } agentPath = agentPath.QueryInterface(Ci.nsIFile); } EnigmailLog.CONSOLE("EnigmailAgentPath=" + EnigmailFiles.getFilePathDesc(agentPath) + "\n\n"); EnigmailGpgAgent.agentType = agentType; EnigmailGpgAgent.agentPath = agentPath; EnigmailGpg.setAgentPath(agentPath); EnigmailExecution.agentType = agentType; const command = agentPath; let args = []; if (agentType == "gpg") { args = ["--version", "--version", "--batch", "--no-tty", "--charset", "utf-8", "--display-charset", "utf-8"]; } let exitCode = -1; let outStr = ""; let errStr = ""; EnigmailLog.DEBUG("enigmail.js: Enigmail.setAgentPath: calling subprocess with '" + command.path + "'\n"); EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); const proc = { command: command, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, done: function(result) { exitCode = result.exitCode; outStr = result.stdout; errStr = result.stderr; }, mergeStderr: false }; try { subprocess.call(proc).wait(); } catch (ex) { EnigmailLog.ERROR("enigmail.js: Enigmail.setAgentPath: subprocess.call failed with '" + ex.toString() + "'\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); throw ex; } EnigmailLog.DEBUG(" enigmail> DONE\n"); outStr = EnigmailSystem.convertNativeToUnicode(outStr); if (exitCode !== 0) { EnigmailLog.ERROR("enigmail.js: Enigmail.setAgentPath: gpg failed with exitCode " + exitCode + " msg='" + outStr + " " + errStr + "'\n"); throw Components.results.NS_ERROR_FAILURE; } EnigmailLog.CONSOLE(outStr + "\n"); // detection for Gpg4Win wrapper if (outStr.search(/^gpgwrap.*;/) === 0) { const outLines = outStr.split(/[\n\r]+/); const firstLine = outLines[0]; outLines.splice(0, 1); outStr = outLines.join("\n"); agentPath = firstLine.replace(/^.*;[ \t]*/, ""); EnigmailLog.CONSOLE("gpg4win-gpgwrapper detected; EnigmailAgentPath=" + agentPath + "\n\n"); } const versionParts = outStr.replace(/[\r\n].*/g, "").replace(/ *\(gpg4win.*\)/i, "").split(/ /); const gpgVersion = versionParts[versionParts.length - 1]; EnigmailLog.DEBUG("enigmail.js: detected GnuPG version '" + gpgVersion + "'\n"); EnigmailGpg.agentVersion = gpgVersion; if (!EnigmailGpg.getGpgFeature("version-supported")) { if (!domWindow) { domWindow = EnigmailWindows.getBestParentWin(); } EnigmailDialog.alert(domWindow, EnigmailLocale.getString("oldGpgVersion14", [gpgVersion])); throw Components.results.NS_ERROR_FAILURE; } EnigmailGpgAgent.gpgconfPath = EnigmailGpgAgent.resolveToolPath("gpgconf"); EnigmailGpgAgent.connGpgAgentPath = EnigmailGpgAgent.resolveToolPath("gpg-connect-agent"); EnigmailLog.DEBUG("enigmail.js: Enigmail.setAgentPath: gpgconf found: " + (EnigmailGpgAgent.gpgconfPath ? "yes" : "no") + "\n"); }, // resolve the path for GnuPG helper tools resolveToolPath: function(fileName) { if (EnigmailOS.isDosLike()) { fileName += ".exe"; } let filePath = cloneOrNull(EnigmailGpgAgent.agentPath); if (filePath) filePath = filePath.parent; if (filePath) { filePath.append(fileName); if (filePath.exists()) { filePath.normalize(); return filePath; } } const foundPath = EnigmailFiles.resolvePath(fileName, EnigmailCore.getEnigmailService().environment.get("PATH"), EnigmailOS.isDosLike()); if (foundPath) { foundPath.normalize(); } return foundPath; }, detectGpgAgent: function(domWindow, esvc) { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent\n"); var gpgAgentInfo = esvc.environment.get("GPG_AGENT_INFO"); if (gpgAgentInfo && gpgAgentInfo.length > 0) { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: GPG_AGENT_INFO variable available\n"); // env. variable suggests running gpg-agent EnigmailGpgAgent.gpgAgentInfo.preStarted = true; EnigmailGpgAgent.gpgAgentInfo.envStr = gpgAgentInfo; EnigmailGpgAgent.gpgAgentIsOptional = false; } else { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: no GPG_AGENT_INFO variable set\n"); EnigmailGpgAgent.gpgAgentInfo.preStarted = false; var command = null; var outStr = ""; var errorStr = ""; var exitCode = -1; EnigmailGpgAgent.gpgAgentIsOptional = false; if (EnigmailGpg.getGpgFeature("autostart-gpg-agent")) { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: gpg 2.0.16 or newer - not starting agent\n"); } else { if (EnigmailGpgAgent.connGpgAgentPath && EnigmailGpgAgent.connGpgAgentPath.isExecutable()) { // try to connect to a running gpg-agent EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: gpg-connect-agent is executable\n"); EnigmailGpgAgent.gpgAgentInfo.envStr = DUMMY_AGENT_INFO; command = EnigmailGpgAgent.connGpgAgentPath.QueryInterface(Ci.nsIFile); EnigmailLog.CONSOLE("enigmail> " + command.path + "\n"); try { subprocess.call({ command: command, environment: EnigmailCore.getEnvList(), stdin: "/echo OK\n", charset: null, done: function(result) { EnigmailLog.DEBUG("detectGpgAgent detection terminated with " + result.exitCode + "\n"); exitCode = result.exitCode; outStr = result.stdout; errorStr = result.stderr; if (result.stdout.substr(0, 2) == "OK") exitCode = 0; }, mergeStderr: false }).wait(); } catch (ex) { EnigmailLog.ERROR("enigmail.js: detectGpgAgent: " + command.path + " failed\n"); EnigmailLog.DEBUG(" enigmail> DONE with FAILURE\n"); exitCode = -1; } EnigmailLog.DEBUG(" enigmail> DONE\n"); if (exitCode === 0) { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: found running gpg-agent\n"); return; } else { EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: no running gpg-agent. Output='" + outStr + "' error text='" + errorStr + "'\n"); } } // and finally try to start gpg-agent var commandFile = EnigmailGpgAgent.resolveToolPath("gpg-agent"); var agentProcess = null; if ((!commandFile) || (!commandFile.exists())) { commandFile = EnigmailGpgAgent.resolveToolPath("gpg-agent2"); } if (commandFile && commandFile.exists()) { command = commandFile.QueryInterface(Ci.nsIFile); } if (command === null) { EnigmailLog.ERROR("enigmail.js: detectGpgAgent: gpg-agent not found\n"); EnigmailDialog.alert(domWindow, EnigmailLocale.getString("gpgAgentNotStarted", [EnigmailGpg.agentVersion])); throw Components.results.NS_ERROR_FAILURE; } } if ((!EnigmailOS.isDosLike()) && (!EnigmailGpg.getGpgFeature("autostart-gpg-agent"))) { // create unique tmp file var ds = Cc[DIR_SERV_CONTRACTID].getService(); var dsprops = ds.QueryInterface(Ci.nsIProperties); var tmpFile = dsprops.get("TmpD", Ci.nsIFile); tmpFile.append("gpg-wrapper.tmp"); tmpFile.createUnique(tmpFile.NORMAL_FILE_TYPE, DEFAULT_FILE_PERMS); let args = [command.path, tmpFile.path, "--sh", "--no-use-standard-socket", "--daemon", "--default-cache-ttl", (EnigmailPassword.getMaxIdleMinutes() * 60).toString(), "--max-cache-ttl", "999999" ]; // ca. 11 days try { var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); var exec = EnigmailApp.getInstallLocation().clone(); exec.append("wrappers"); exec.append("gpg-agent-wrapper.sh"); process.init(exec); process.run(true, args, args.length); if (!tmpFile.exists()) { EnigmailLog.ERROR("enigmail.js: detectGpgAgent no temp file created\n"); } else { outStr = EnigmailFiles.readFile(tmpFile); tmpFile.remove(false); exitCode = 0; } } catch (ex) { EnigmailLog.ERROR("enigmail.js: detectGpgAgent: failed with '" + ex + "'\n"); exitCode = -1; } if (exitCode === 0) { EnigmailGpgAgent.gpgAgentInfo.envStr = extractAgentInfo(outStr); EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: started -> " + EnigmailGpgAgent.gpgAgentInfo.envStr + "\n"); EnigmailGpgAgent.gpgAgentProcess = EnigmailGpgAgent.gpgAgentInfo.envStr.split(":")[1]; } else { EnigmailLog.ERROR("enigmail.js: detectGpgAgent: gpg-agent output: " + outStr + "\n"); EnigmailDialog.alert(domWindow, EnigmailLocale.getString("gpgAgentNotStarted", [EnigmailGpg.agentVersion])); throw Components.results.NS_ERROR_FAILURE; } } else { EnigmailGpgAgent.gpgAgentInfo.envStr = DUMMY_AGENT_INFO; var envFile = Components.classes[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); EnigmailFiles.initPath(envFile, EnigmailGpgAgent.determineGpgHomeDir(esvc)); envFile.append("gpg-agent.conf"); var data = "default-cache-ttl " + (EnigmailPassword.getMaxIdleMinutes() * 60) + "\n"; data += "max-cache-ttl 999999"; if (!envFile.exists()) { try { var flags = 0x02 | 0x08 | 0x20; var fileOutStream = Cc[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Ci.nsIFileOutputStream); fileOutStream.init(envFile, flags, 384, 0); // 0600 fileOutStream.write(data, data.length); fileOutStream.flush(); fileOutStream.close(); } catch (ex) {} // ignore file write errors } } } EnigmailLog.DEBUG("enigmail.js: detectGpgAgent: GPG_AGENT_INFO='" + EnigmailGpgAgent.gpgAgentInfo.envStr + "'\n"); }, determineGpgHomeDir: function(esvc) { let homeDir = esvc.environment.get("GNUPGHOME"); if (!homeDir && EnigmailOS.isWin32) { homeDir = EnigmailOS.getWinRegistryString("Software\\GNU\\GNUPG", "HomeDir", nsIWindowsRegKey.ROOT_KEY_CURRENT_USER); if (!homeDir) { homeDir = esvc.environment.get("USERPROFILE") || esvc.environment.get("SystemRoot"); if (homeDir) homeDir += "\\Application Data\\GnuPG"; } if (!homeDir) homeDir = "C:\\gnupg"; } if (!homeDir) homeDir = esvc.environment.get("HOME") + "/.gnupg"; return homeDir; }, finalize: function() { if (EnigmailGpgAgent.gpgAgentProcess) { EnigmailLog.DEBUG("gpgAgent.jsm: EnigmailGpgAgent.finalize: stopping gpg-agent PID=" + EnigmailGpgAgent.gpgAgentProcess + "\n"); try { const libc = ctypes.open(subprocess.getPlatformValue(0)); //int kill(pid_t pid, int sig); const kill = libc.declare("kill", ctypes.default_abi, ctypes.int, ctypes.int32_t, ctypes.int); kill(parseInt(EnigmailGpgAgent.gpgAgentProcess, 10), 15); } catch (ex) { EnigmailLog.ERROR("gpgAgent.jsm: EnigmailGpgAgent.finalize ERROR: " + ex + "\n"); } } } }; enigmail/package/hash.jsm000066400000000000000000000077041266701624400157140ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailHash"]; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/windows.jsm"); /*global EnigmailWindows: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/encryption.jsm"); /*global EnigmailEncryption: false */ Cu.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ const Ci = Components.interfaces; const nsIEnigmail = Ci.nsIEnigmail; const keyAlgorithms = []; const mimeHashAlgorithms = [null, "sha1", "ripemd160", "sha256", "sha384", "sha512", "sha224", "md5"]; const EnigmailHash = { determineAlgorithm: function(win, uiFlags, fromMailAddr, hashAlgoObj) { EnigmailLog.DEBUG("hash.jsm: determineAlgorithm\n"); if (!win) { win = EnigmailWindows.getMostRecentWindow(); } const sendFlags = nsIEnigmail.SEND_TEST | nsIEnigmail.SEND_SIGNED; const hashAlgo = mimeHashAlgorithms[EnigmailPrefs.getPref("mimeHashAlgorithm")]; if (typeof(keyAlgorithms[fromMailAddr]) != "string") { // hash algorithm not yet known const testUiFlags = nsIEnigmail.UI_TEST; const listener = { stdoutData: "", stderrData: "", exitCode: -1, stdin: function(pipe) { pipe.write("Dummy Test"); pipe.close(); }, stdout: function(data) { this.stdoutData += data; }, stderr: function(data) { this.stderrData += data; }, done: function(exitCode) { this.exitCode = exitCode; } }; const proc = EnigmailEncryption.encryptMessageStart(win, testUiFlags, fromMailAddr, "", "", hashAlgo, sendFlags, listener, {}, {}); if (!proc) { return 1; } proc.wait(); const msgText = listener.stdoutData; const exitCode = listener.exitCode; const retStatusObj = {}; let exitCode2 = EnigmailEncryption.encryptMessageEnd(fromMailAddr, listener.stderrData, exitCode, testUiFlags, sendFlags, 10, retStatusObj); if ((exitCode2 === 0) && !msgText) exitCode2 = 1; // if (exitCode2 > 0) exitCode2 = -exitCode2; if (exitCode2 !== 0) { // Abormal return if (retStatusObj.statusFlags & nsIEnigmail.BAD_PASSPHRASE) { // "Unremember" passphrase on error return retStatusObj.errorMsg = EnigmailLocale.getString("badPhrase"); } EnigmailDialog.alert(win, retStatusObj.errorMsg); return exitCode2; } let hashAlgorithm = "sha1"; // default as defined in RFC 4880, section 7 is MD5 -- but that's outdated const m = msgText.match(/^(Hash: )(.*)$/m); if (m && (m.length > 2) && (m[1] == "Hash: ")) { hashAlgorithm = m[2].toLowerCase(); } else { EnigmailLog.DEBUG("hash.jsm: determineAlgorithm: no hashAlgorithm specified - using MD5\n"); } for (let i = 1; i < mimeHashAlgorithms.length; i++) { if (mimeHashAlgorithms[i] === hashAlgorithm) { EnigmailLog.DEBUG("hash.jsm: determineAlgorithm: found hashAlgorithm " + hashAlgorithm + "\n"); keyAlgorithms[fromMailAddr] = hashAlgorithm; hashAlgoObj.value = hashAlgorithm; return 0; } } EnigmailLog.ERROR("hash.jsm: determineAlgorithm: no hashAlgorithm found\n"); return 2; } else { EnigmailLog.DEBUG("hash.jsm: determineAlgorithm: hashAlgorithm " + keyAlgorithms[fromMailAddr] + " is cached\n"); hashAlgoObj.value = keyAlgorithms[fromMailAddr]; } return 0; } }; enigmail/package/httpProxy.jsm000066400000000000000000000055241266701624400170100ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailHttpProxy"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ const NS_PREFS_SERVICE_CID = "@mozilla.org/preferences-service;1"; function getPasswdForHost(hostname, userObj, passwdObj) { var loginmgr = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager); // search HTTP password 1st var logins = loginmgr.findLogins({}, "http://" + hostname, "", ""); if (logins.length > 0) { userObj.value = logins[0].username; passwdObj.value = logins[0].password; return true; } // look for any other password for same host logins = loginmgr.getAllLogins({}); for (var i = 0; i < logins.lenth; i++) { if (hostname == logins[i].hostname.replace(/^.*:\/\//, "")) { userObj.value = logins[i].username; passwdObj.value = logins[i].password; return true; } } return false; } const EnigmailHttpProxy = { /** * get Proxy for a given hostname as configured in Mozilla * * @hostname: String - the host to check if there is a proxy. * * @return: String - proxy host URL to provide to GnuPG * null if no proxy required */ getHttpProxy: function(hostName) { var proxyHost = null; if (EnigmailPrefs.getPref("respectHttpProxy")) { // determine proxy host var prefsSvc = Cc[NS_PREFS_SERVICE_CID].getService(Ci.nsIPrefService); var prefRoot = prefsSvc.getBranch(null); var useProxy = prefRoot.getIntPref("network.proxy.type"); if (useProxy == 1) { var proxyHostName = prefRoot.getCharPref("network.proxy.http"); var proxyHostPort = prefRoot.getIntPref("network.proxy.http_port"); var noProxy = prefRoot.getCharPref("network.proxy.no_proxies_on").split(/[ ,]/); for (var i = 0; i < noProxy.length; i++) { var proxySearch = new RegExp(noProxy[i].replace(/\./g, "\\.").replace(/\*/g, ".*") + "$", "i"); if (noProxy[i] && hostName.search(proxySearch) >= 0) { i = noProxy.length + 1; proxyHostName = null; } } if (proxyHostName) { var userObj = {}; var passwdObj = {}; if (getPasswdForHost(proxyHostName, userObj, passwdObj)) { proxyHostName = userObj.value + ":" + passwdObj.value + "@" + proxyHostName; } } if (proxyHostName && proxyHostPort) { proxyHost = "http://" + proxyHostName + ":" + proxyHostPort; } } } return proxyHost; } }; enigmail/package/install.rdf000066400000000000000000000036121266701624400164130ustar00rootroot00000000000000 {847b3a00-7ab1-11d4-8f02-006008948af5} 1.9.1 2 true {3550f703-e582-4d05-9a08-453d09bdfdc6} 38.0 46.0 {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} 2.35 2.43 Enigmail OpenPGP message encryption and authentication Enigmail Team http://www.enigmail.net/ chrome://enigmail/content/pref-enigmail.xul chrome://enigmail/content/enigmailAbout.xul chrome://enigmail/skin/enigmail-about.png enigmail/package/installGnuPG.jsm000066400000000000000000000450241266701624400173350ustar00rootroot00000000000000/*global Components: false, escape: false, unescape: false, Uint8Array: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["InstallGnuPG"]; /* Usage: InstallGnuPG.start(progressListener). progressListener needs to implement the following methods: void onError (errorMessage) boolean onWarning (message) void onProgress (event) void onLoaded (event) void onDownloaded () void onStart (requestObj) requestObj: abort(): cancel download onWarning can return true if the warning should be ignored, false otherwise */ var Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Cu.import("resource://enigmail/app.jsm"); /*global EnigmailApp: false */ Cu.import("resource://enigmail/promise.jsm"); /*global Promise: false */ const Cc = Components.classes; const Ci = Components.interfaces; const EXEC_FILE_PERMS = 0x1C0; // 0700 const NS_LOCALFILEOUTPUTSTREAM_CONTRACTID = "@mozilla.org/network/file-output-stream;1"; const DIR_SERV_CONTRACTID = "@mozilla.org/file/directory_service;1"; const NS_LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const XPCOM_APPINFO = "@mozilla.org/xre/app-info;1"; const queryUrl = "https://www.enigmail.net/service/getGnupdDownload.svc"; function getTempDir() { let ds = Cc[DIR_SERV_CONTRACTID].getService(); let dsprops = ds.QueryInterface(Ci.nsIProperties); let tmpFile = dsprops.get("TmpD", Ci.nsIFile); return tmpFile; } function toHexString(charCode) { return ("0" + charCode.toString(16)).slice(-2); } function sanitizeFileName(str) { // remove shell escape, #, ! and / from string return str.replace(/[`\/\#\!]/g, ""); } function sanitizeHash(str) { return str.replace(/[^a-hA-H0-9]/g, ""); } // Adapted from the patch for mozTCPSocket error reporting (bug 861196). function createTCPErrorFromFailedXHR(xhr) { let status = xhr.channel.QueryInterface(Ci.nsIRequest).status; let errType; let errName; if ((status & 0xff0000) === 0x5a0000) { // Security module const nsINSSErrorsService = Ci.nsINSSErrorsService; let nssErrorsService = Cc['@mozilla.org/nss_errors_service;1'].getService(nsINSSErrorsService); let errorClass; // getErrorClass will throw a generic NS_ERROR_FAILURE if the error code is // somehow not in the set of covered errors. try { errorClass = nssErrorsService.getErrorClass(status); } catch (ex) { errorClass = 'SecurityProtocol'; } if (errorClass == nsINSSErrorsService.ERROR_CLASS_BAD_CERT) { errType = 'SecurityCertificate'; } else { errType = 'SecurityProtocol'; } // NSS_SEC errors (happen below the base value because of negative vals) if ((status & 0xffff) < Math.abs(nsINSSErrorsService.NSS_SEC_ERROR_BASE)) { // The bases are actually negative, so in our positive numeric space, we // need to subtract the base off our value. let nssErr = Math.abs(nsINSSErrorsService.NSS_SEC_ERROR_BASE) - (status & 0xffff); switch (nssErr) { case 11: // SEC_ERROR_EXPIRED_CERTIFICATE, sec(11) errName = 'SecurityExpiredCertificateError'; break; case 12: // SEC_ERROR_REVOKED_CERTIFICATE, sec(12) errName = 'SecurityRevokedCertificateError'; break; // per bsmith, we will be unable to tell these errors apart very soon, // so it makes sense to just folder them all together already. case 13: // SEC_ERROR_UNKNOWN_ISSUER, sec(13) case 20: // SEC_ERROR_UNTRUSTED_ISSUER, sec(20) case 21: // SEC_ERROR_UNTRUSTED_CERT, sec(21) case 36: // SEC_ERROR_CA_CERT_INVALID, sec(36) errName = 'SecurityUntrustedCertificateIssuerError'; break; case 90: // SEC_ERROR_INADEQUATE_KEY_USAGE, sec(90) errName = 'SecurityInadequateKeyUsageError'; break; case 176: // SEC_ERROR_CERT_SIGNATURE_ALGORITHM_DISABLED, sec(176) errName = 'SecurityCertificateSignatureAlgorithmDisabledError'; break; default: errName = 'SecurityError'; break; } } else { let sslErr = Math.abs(nsINSSErrorsService.NSS_SSL_ERROR_BASE) - (status & 0xffff); switch (sslErr) { case 3: // SSL_ERROR_NO_CERTIFICATE, ssl(3) errName = 'SecurityNoCertificateError'; break; case 4: // SSL_ERROR_BAD_CERTIFICATE, ssl(4) errName = 'SecurityBadCertificateError'; break; case 8: // SSL_ERROR_UNSUPPORTED_CERTIFICATE_TYPE, ssl(8) errName = 'SecurityUnsupportedCertificateTypeError'; break; case 9: // SSL_ERROR_UNSUPPORTED_VERSION, ssl(9) errName = 'SecurityUnsupportedTLSVersionError'; break; case 12: // SSL_ERROR_BAD_CERT_DOMAIN, ssl(12) errName = 'SecurityCertificateDomainMismatchError'; break; default: errName = 'SecurityError'; break; } } } else { errType = 'Network'; switch (status) { // connect to host:port failed case 0x804B000C: // NS_ERROR_CONNECTION_REFUSED, network(13) errName = 'ConnectionRefusedError'; break; // network timeout error case 0x804B000E: // NS_ERROR_NET_TIMEOUT, network(14) errName = 'NetworkTimeoutError'; break; // hostname lookup failed case 0x804B001E: // NS_ERROR_UNKNOWN_HOST, network(30) errName = 'DomainNotFoundError'; break; case 0x804B0047: // NS_ERROR_NET_INTERRUPT, network(71) errName = 'NetworkInterruptError'; break; default: errName = 'NetworkError'; break; } } return { name: errName, type: errType }; } function Installer(progressListener) { this.progressListener = progressListener; } Installer.prototype = { installMacOs: function(deferred) { EnigmailLog.DEBUG("installGnuPG.jsm: installMacOs\n"); var exitCode = -1; var mountPath = Cc[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); mountPath.initWithPath("/Volumes/" + this.mount); if (mountPath.exists()) { let p = mountPath.path + " "; let i = 1; mountPath.initWithPath(p + i); while (mountPath.exists() && i < 10) { ++i; mountPath.initWithPath(p + i); } if (mountPath.exists()) { throw "Error - cannot mount package"; } } this.mountPath = mountPath; EnigmailLog.DEBUG("installGnuPG.jsm: installMacOs - mount Package\n"); var cmd = Cc[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); cmd.initWithPath("/usr/bin/open"); var args = ["-W", this.installerFile.path]; var proc = { command: cmd, arguments: args, charset: null, done: function(result) { exitCode = result.exitCode; } }; try { subprocess.call(proc).wait(); if (exitCode) throw "Installer failed with exit code " + exitCode; } catch (ex) { EnigmailLog.ERROR("installGnuPG.jsm: installMacOs: subprocess.call failed with '" + ex.toString() + "'\n"); throw ex; } EnigmailLog.DEBUG("installGnuPG.jsm: installMacOs - run installer\n"); args = ["-W", this.mountPath.path + "/" + this.command]; proc = { command: cmd, arguments: args, charset: null, done: function(result) { if (result.exitCode !== 0) { deferred.reject("Installer failed with exit code " + result.exitCode); } else deferred.resolve(); } }; try { subprocess.call(proc); } catch (ex) { EnigmailLog.ERROR("installGnuPG.jsm: installMacOs: subprocess.call failed with '" + ex.toString() + "'\n"); throw ex; } }, cleanupMacOs: function() { EnigmailLog.DEBUG("installGnuPG.jsm.cleanupMacOs: unmount package\n"); var cmd = Cc[NS_LOCAL_FILE_CONTRACTID].createInstance(Ci.nsIFile); cmd.initWithPath("/usr/sbin/diskutil"); var args = ["eject", this.mountPath.path]; var proc = { command: cmd, arguments: args, charset: null, done: function(result) { if (result.exitCode) EnigmailLog.ERROR("Installer failed with exit code " + result.exitCode); } }; try { subprocess.call(proc).wait(); } catch (ex) { EnigmailLog.ERROR("installGnuPG.jsm.cleanupMacOs: subprocess.call failed with '" + ex.toString() + "'\n"); } EnigmailLog.DEBUG("installGnuPG.jsm: cleanupMacOs - remove package\n"); this.installerFile.remove(false); }, installWindows: function(deferred) { EnigmailLog.DEBUG("installGnuPG.jsm: installWindows\n"); try { // use runwAsync in order to get UAC approval on Windows 7 / 8 if required var obs = { QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupports]), observe: function(proc, aTopic, aData) { EnigmailLog.DEBUG("installGnuPG.jsm: installWindows.observe: topic='" + aTopic + "' \n"); if (aTopic == "process-finished") { EnigmailLog.DEBUG("installGnuPG.jsm: installWindows finished\n"); deferred.resolve(); } else if (aTopic == "process-failed") { deferred.reject("Installer could not be started"); } } }; var proc = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess); proc.init(this.installerFile); proc.runwAsync([], 0, obs, false); } catch (ex) { deferred.reject("Installer could not be started"); } }, cleanupWindows: function() { EnigmailLog.DEBUG("installGnuPG.jsm: cleanupWindows - remove package\n"); this.installerFile.remove(false); }, installUnix: function() {}, checkHashSum: function() { EnigmailLog.DEBUG("installGnuPG.jsm: checkHashSum\n"); var istream = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance(Components.interfaces.nsIFileInputStream); // open for reading istream.init(this.installerFile, 0x01, 292, 0); // octal 0444 - octal literals are deprecated var ch = Components.classes["@mozilla.org/security/hash;1"] .createInstance(Components.interfaces.nsICryptoHash); ch.init(ch.SHA1); const PR_UINT32_MAX = 0xffffffff; // read entire file ch.updateFromStream(istream, PR_UINT32_MAX); var gotHash = ch.finish(false); // convert the binary hash data to a hex string. var hashStr = ""; for (let i in gotHash) { hashStr += toHexString(gotHash.charCodeAt(i)); } if (this.hash != hashStr) { EnigmailLog.DEBUG("installGnuPG.jsm: checkHashSum - hash sums don't match: " + hashStr + "\n"); } else EnigmailLog.DEBUG("installGnuPG.jsm: checkHashSum - hash sum OK\n"); return this.hash == hashStr; }, getDownloadUrl: function(on) { let deferred = Promise.defer(); function reqListener() { if (typeof(on.responseXML) == "object") { EnigmailLog.DEBUG("installGnuPG.jsm: getDownloadUrl.reqListener: got: " + on.responseText + "\n"); if (!on.responseXML) { onError({ type: "Network" }); return; } let doc = on.responseXML.firstChild; self.url = unescape(doc.getAttribute("url")); self.hash = sanitizeHash(doc.getAttribute("hash")); self.command = sanitizeFileName(doc.getAttribute("command")); self.mount = sanitizeFileName(doc.getAttribute("mount")); deferred.resolve(); } } function onError(error) { deferred.reject("error"); if (self.progressListener) { return self.progressListener.onError(error); } return false; } EnigmailLog.DEBUG("installGnuPG.jsm: getDownloadUrl: start request\n"); var self = this; try { var xulRuntime = Cc[XPCOM_APPINFO].getService(Ci.nsIXULRuntime); var platform = xulRuntime.XPCOMABI.toLowerCase(); var os = EnigmailOS.getOS().toLowerCase(); // create a XMLHttpRequest object var oReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); oReq.onload = reqListener; oReq.addEventListener("error", function(e) { var error = createTCPErrorFromFailedXHR(oReq); onError(error); }, false); oReq.open("get", queryUrl + "?vEnigmail=" + escape(EnigmailApp.getVersion()) + "&os=" + escape(os) + "&platform=" + escape(platform), true); oReq.send(); } catch (ex) { deferred.reject(ex); EnigmailLog.writeException("installGnuPG.jsm", ex); if (self.progressListener) self.progressListener.onError("installGnuPG.downloadFailed"); } return deferred.promise; }, performDownload: function() { EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: " + this.url + "\n"); var self = this; var deferred = Promise.defer(); function onProgress(event) { if (event.lengthComputable) { var percentComplete = event.loaded / event.total; EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: " + percentComplete * 100 + "% loaded\n"); } else { EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: got " + event.loaded + "bytes\n"); } if (self.progressListener) self.progressListener.onProgress(event); } function onError(error) { deferred.reject("error"); if (self.progressListener) self.progressListener.onError(error); } function onLoaded(event) { EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: downloaded " + event.loaded + "bytes\n"); if (self.progressListener) self.progressListener.onDownloaded(); try { // this line used to read: // performInstall(this.response).then(function _f() { performCleanup(); }); // but since this.response is never actually set anywhere, it should always be null performInstall(null).then(function _f() { performCleanup(); }); } catch (ex) { EnigmailLog.writeException("installGnuPG.jsm", ex); if (self.progressListener) self.progressListener.onError("installGnuPG.installFailed"); } } function performInstall(response) { var arraybuffer = response; // not responseText EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: bytes " + arraybuffer.byteLength + "\n"); try { var flags = 0x02 | 0x08 | 0x20; var fileOutStream = Cc[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Ci.nsIFileOutputStream); self.installerFile = getTempDir(); switch (EnigmailOS.getOS()) { case "Darwin": self.installerFile.append("gpgtools.dmg"); self.performCleanup = self.cleanupMacOs; break; case "WINNT": self.installerFile.append("gpg4win.exe"); self.performCleanup = self.cleanupWindows; break; default: self.installerFile.append("gpg-installer.bin"); self.performCleanup = null; } self.installerFile.createUnique(self.installerFile.NORMAL_FILE_TYPE, EXEC_FILE_PERMS); EnigmailLog.DEBUG("installGnuPG.jsm: performDownload: writing file to " + self.installerFile.path + "\n"); fileOutStream.init(self.installerFile, flags, EXEC_FILE_PERMS, 0); var binStr = Cc["@mozilla.org/binaryoutputstream;1"].createInstance(Ci.nsIBinaryOutputStream); binStr.setOutputStream(fileOutStream.QueryInterface(Ci.nsIOutputStream)); var buf = new Uint8Array(arraybuffer); binStr.writeByteArray(buf, buf.length); binStr.flush(); binStr.close(); fileOutStream.close(); if (!self.checkHashSum()) { var cont = true; if (self.progressListener) { cont = self.progressListener.onWarning("hashSumMismatch"); } if (!cont) { deferred.reject("Aborted due to hash sum error"); return null; } } switch (EnigmailOS.getOS()) { case "Darwin": self.installMacOs(deferred); break; case "WINNT": self.installWindows(deferred); break; default: self.installUnix(deferred); } } catch (ex) { deferred.reject(ex); EnigmailLog.writeException("installGnuPG.jsm", ex); if (self.progressListener) self.progressListener.onError("installGnuPG.installFailed"); } return deferred.promise; } function performCleanup() { EnigmailLog.DEBUG("installGnuPG.jsm: performCleanup:\n"); try { if (self.performCleanup) self.performCleanup(); } catch (ex) {} if (self.progressListener) { EnigmailLog.DEBUG("installGnuPG.jsm: performCleanup - onLoaded()\n"); self.progressListener.onLoaded(); } } try { // create a XMLHttpRequest object var oReq = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); oReq.addEventListener("load", onLoaded, false); oReq.addEventListener("error", function(e) { var error = createTCPErrorFromFailedXHR(oReq); onError(error); }, false); oReq.addEventListener("progress", onProgress, false); oReq.open("get", this.url, true); oReq.responseType = "arraybuffer"; if (self.progressListener) self.progressListener.onStart({ abort: function() { oReq.abort(); } }); oReq.send(); } catch (ex) { deferred.reject(ex); EnigmailLog.writeException("installGnuPG.jsm", ex); if (self.progressListener) self.progressListener.onError("installGnuPG.downloadFailed"); } } }; var InstallGnuPG = { // check if there is a downloadable item for the given platform // returns true if item available checkAvailability: function() { switch (EnigmailOS.getOS()) { case "Darwin": case "WINNT": return true; } return false; }, startInstaller: function(progressListener) { var i = new Installer(progressListener); i.getDownloadUrl(i). then(function _dl() { i.performDownload(); }); return i; } }; enigmail/package/key.jsm000066400000000000000000000207331266701624400155560ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailKey"]; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/armor.jsm"); /*global EnigmailArmor: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ function KeyEntry(key) { if (!(this instanceof KeyEntry)) { return new KeyEntry(key); } // same data as in packetlist but in structured form this.primaryKey = null; this.revocationSignature = null; this.directSignatures = null; this.users = null; this.subKeys = null; this.packetlist2structure(this.parsePackets(key)); if (!this.primaryKey || !this.users) { throw new Error('Invalid key: need at least key and user ID packet'); } return this; } KeyEntry.prototype = { parsePackets: function(key) { const packetHeaders = [":public key packet:", ":user ID packet:", ":public sub key packet:", ":secret sub key packet:", ":signature packet:", ":secret key packet:" ]; var _packets = []; function extractPackets(line) { var is_packet_hr = false; packetHeaders.forEach( function(packet) { if (line.search(packet) > -1) { is_packet_hr = true; var obj = { tag: packet, value: "" }; _packets.push(obj); } }); if (!is_packet_hr) { var obj = _packets.pop(); obj.value += line + "\n"; _packets.push(obj); } } var lines = key.split("\n"); for (var i in lines) { if (!lines[i].startsWith("gpg:")) extractPackets(lines[i]); } return _packets; }, packetlist2structure: function(packetlist) { for (var i = 0; i < packetlist.length; i++) { var user, subKey; switch (packetlist[i].tag) { case ":secret key packet:": this.primaryKey = packetlist[i]; break; case ":user ID packet:": if (!this.users) this.users = []; user = packetlist[i]; this.users.push(user); break; case ":public sub key packet:": case ":secret sub key packet:": user = null; if (!this.subKeys) this.subKeys = []; subKey = packetlist[i]; this.subKeys.push(subKey); break; case ":signature packet:": break; } } } }; var EnigmailKey = { Entry: KeyEntry, /** * Format a key fingerprint * @fingerprint |string| - unformated OpenPGP fingerprint * * @return |string| - formatted string */ formatFpr: function(fingerprint) { //EnigmailLog.DEBUG("key.jsm: EnigmailKey.formatFpr(" + fingerprint + ")\n"); // format key fingerprint let r = ""; const fpr = fingerprint.match(/(....)(....)(....)(....)(....)(....)(....)(....)(....)?(....)?/); if (fpr && fpr.length > 2) { fpr.shift(); r = fpr.join(" "); } return r; }, // Extract public key from Status Message extractPubkey: function(statusMsg) { const matchb = statusMsg.match(/(^|\n)NO_PUBKEY (\w{8})(\w{8})/); if (matchb && (matchb.length > 3)) { EnigmailLog.DEBUG("enigmailCommon.jsm:: Enigmail.extractPubkey: NO_PUBKEY 0x" + matchb[3] + "\n"); return matchb[2] + matchb[3]; } else { return null; } }, /** * Get details (key ID, UID) of the data contained in a OpenPGP key block * * @param keyBlockStr String: the contents of one or more public keys * @param errorMsgObj Object: obj.value will contain an error message in case of failures * * @return Array of objects with the following structure: * - id (key ID) * - name (the UID of the key) * - state (one of "old" [existing key], "new" [new key], "invalid" [key could not be imported]) */ getKeyListFromKeyBlock: function(keyBlockStr, errorMsgObj) { var ret = []; const beginIndexObj = {}; const endIndexObj = {}; const blockType = EnigmailArmor.locateArmoredBlock(keyBlockStr, 0, "", beginIndexObj, endIndexObj, {}); if (!blockType) { errorMsgObj.value = EnigmailLocale.getString("noPGPblock"); return ret; } if (blockType != "PUBLIC KEY BLOCK") { errorMsgObj.value = EnigmailLocale.getString("notFirstBlock"); return ret; } const pgpBlock = keyBlockStr.substr(beginIndexObj.value, endIndexObj.value - beginIndexObj.value + 1); const tempDir = EnigmailFiles.createTempSubDir("enigmail_import"); const tempPath = EnigmailFiles.getFilePath(tempDir); const args = EnigmailGpg.getStandardArgs(true).concat([ "--import", "--trustdb", tempPath + "/trustdb", "--no-default-keyring", "--keyring", tempPath + "/keyring" ]); const exitCodeObj = {}; const statusMsgObj = {}; EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, pgpBlock, exitCodeObj, {}, statusMsgObj, errorMsgObj); const statusMsg = statusMsgObj.value; tempDir.remove(true); var state = "newOrResult"; var lines = statusMsg.split("\n"); var idx = 0; var cur = {}; while (state != "end") { if (idx >= lines.length) { errorMsgObj.value = EnigmailLocale.getString("cantImport"); return []; } EnigmailLog.DEBUG("state: '" + state + "', line: '" + lines[idx] + "'\n"); switch (state) { case "newOrResult": { const imported = lines[idx].match(/^IMPORTED (\w+) (.+)/); if (imported && (imported.length > 2)) { EnigmailLog.DEBUG("new imported: " + imported[1] + " (" + imported[2] + ")\n"); state = "summary"; cur.id = imported[1]; cur.name = imported[2]; cur.state = "new"; idx += 1; break; } const import_res = lines[idx].match(/^IMPORT_RES ([0-9 ]+)/); if (import_res && (import_res.length > 1)) { EnigmailLog.DEBUG("import result: " + import_res[1] + "\n"); state = "end"; } else { state = "summary"; } break; } case "summary": { const import_ok = lines[idx].match(/^IMPORT_OK (\d+) (\w+)/); if (import_ok && (import_ok.length > 2)) { EnigmailLog.DEBUG("import ok: " + import_ok[1] + " (" + import_ok[2] + ")\n"); state = "newOrResult"; cur.fingerprint = import_ok[2]; if (cur.state === undefined) { cur.state = "old"; } ret.push(cur); cur = {}; idx += 1; break; } const import_err = lines[idx].match(/^IMPORT_PROBLEM (\d+) (\w+)/); if (import_err && (import_err.length > 2)) { EnigmailLog.DEBUG("import err: " + import_err[1] + " (" + import_err[2] + ")\n"); state = "newOrResult"; cur.fingerprint = import_err[2]; if (cur.state === undefined) { cur.state = "invalid"; } ret.push(cur); cur = {}; idx += 1; break; } errorMsgObj.value = EnigmailLocale.getString("cantImport"); return []; } default: { EnigmailLog.DEBUG("skip line '" + lines[idx] + "'\n"); idx += 1; break; } } } errorMsgObj.value = ""; return ret; }, /** * Get details of a key block to import. Works identically as getKeyListFromKeyBlock(); * except that the input is a file instead of a string * * @param file nsIFile object - file to read * @param errorMsgObj Object - obj.value will contain error message * * @return Array (same as for getKeyListFromKeyBlock()) */ getKeyListFromKeyFile: function(path, errorMsgObj) { var contents = EnigmailFiles.readFile(path); return this.getKeyListFromKeyBlock(contents, errorMsgObj); } }; enigmail/package/keyEditor.jsm000066400000000000000000001202461266701624400167250ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailKeyEditor"]; Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Components.utils.import("resource://enigmail/key.jsm"); /*global EnigmailKey: false */ Components.utils.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Components.utils.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Components.utils.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Components.utils.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Components.utils.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Components.utils.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Components.utils.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Components.utils.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ Components.utils.import("resource://enigmail/errorHandling.jsm"); /*global EnigmailErrorHandling: false */ const Cc = Components.classes; const Ci = Components.interfaces; const GET_BOOL = "GET_BOOL"; const GET_LINE = "GET_LINE"; const GET_HIDDEN = "GET_HIDDEN"; const NS_PROMPTSERVICE_CONTRACTID = "@mozilla.org/embedcomp/prompt-service;1"; function GpgEditorInterface(reqObserver, callbackFunc, inputData) { this._reqObserver = reqObserver; this._callbackFunc = callbackFunc; this._inputData = inputData; if (this._inputData && this._inputData.cardAdmin) { this._saveCmd = "quit"; } else this._saveCmd = "save"; } GpgEditorInterface.prototype = { _stdin: null, _data: "", _txt: "", _exitCode: 0, errorMsg: "", setStdin: function(pipe) { this._stdin = pipe; if (this._data.length > 0) this.processData(); }, gotData: function(data) { //EnigmailLog.DEBUG("keyEditor.jsm: GpgEditorInterface.gotData: '"+data+"'\n"); this._data += data.replace(/\r\n/g, "\n"); this.processData(); }, processData: function() { //EnigmailLog.DEBUG("keyEditor.jsm: GpgEditorInterface.processData\n"); var txt = ""; while (this._data.length > 0 && this._stdin) { var index = this._data.indexOf("\n"); if (index < 0) { txt = this._data; this._data = ""; } else { txt = this._data.substr(0, index); this._data = this._data.substr(index + 1); } this.nextLine(txt); } }, closeStdin: function() { EnigmailLog.DEBUG("keyEditor.jsm: GpgEditorInterface.closeStdin:\n"); if (this._stdin) { this._stdin.close(); this._stdin = null; } }, done: function(parentCallback, exitCode) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.done: exitCode=" + exitCode + "\n"); if (exitCode === 0) exitCode = this._exitCode; EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.done: returning exitCode " + exitCode + "\n"); parentCallback(exitCode, this.errorMsg); }, writeLine: function(inputData) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.writeLine: '" + inputData + "'\n"); this._stdin.write(inputData + "\n"); }, nextLine: function(txt) { if (txt.indexOf("[GNUPG:]") >= 0) { if (this._reqObserver) { var newTxt = this._reqObserver.onDataAvailable(txt); if (newTxt.length > 0) { txt = newTxt; } } this._txt = txt; this.processLine(txt); } }, doCheck: function(inputType, promptVal) { var a = this._txt.split(/ /); return ((a[1] == inputType) && (a[2] == promptVal)); }, getText: function() { return this._txt; }, handleGpgError: function(lineTxt) { let retStatusObj = {}; EnigmailErrorHandling.parseErrorOutput(lineTxt, retStatusObj); return retStatusObj; }, processLine: function(txt) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: '" + txt + "'\n"); var r = { quitNow: false, exitCode: -1 }; try { if (txt.indexOf("[GNUPG:] BAD_PASSPHRASE") >= 0 || txt.indexOf("[GNUPG:] SC_OP_FAILURE 2") >= 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected bad passphrase\n"); r.exitCode = -2; r.quitNow = true; this.errorMsg = EnigmailLocale.getString("badPhrase"); } else if (txt.indexOf("[GNUPG:] ERROR ") >= 0 || txt.indexOf("[GNUPG:] FAILURE ") >= 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected GnuPG ERROR message\n"); let statusObj = this.handleGpgError(txt); if (statusObj.statusFlags & Ci.nsIEnigmail.DISPLAY_MESSAGE) { this.errorMsg = statusObj.statusMsg; r.exitCode = -3; r.quitNow = true; } } else if (txt.indexOf("[GNUPG:] NO_CARD_AVAILABLE") >= 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected missing card\n"); this.errorMsg = EnigmailLocale.getString("sc.noCardAvailable"); r.exitCode = -3; r.quitNow = true; } else if (txt.indexOf("[GNUPG:] ENIGMAIL_FAILURE") === 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected general failure\n"); r.exitCode = -3; r.quitNow = true; this.errorMsg = txt.substr(26); } else if (txt.indexOf("[GNUPG:] ALREADY_SIGNED") >= 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected key already signed\n"); this.errorMsg = EnigmailLocale.getString("keyAlreadySigned"); r.exitCode = -1; r.quitNow = true; } else if (txt.indexOf("[GNUPG:] MISSING_PASSPHRASE") >= 0) { EnigmailLog.DEBUG("keyManagmenent.jsm: GpgEditorInterface.processLine: detected missing passphrase\n"); this.errorMsg = EnigmailLocale.getString("noPassphrase"); r.exitCode = -2; this._exitCode = -2; r.quitNow = true; } else if (txt.indexOf("[GNUPG:] GET_") < 0) { // return if no "GET" statement return; } } catch (ex) { txt = ""; r.quitNow = true; } if (!r.quitNow) { if (txt.indexOf("[GNUPG:] GOT_IT") < 0) { if (this._callbackFunc) { this._callbackFunc(this._inputData, this, r); if (r.exitCode === 0) { this.writeLine(r.writeTxt); } else { if (r.errorMsg && r.errorMsg.length > 0) this.errorMsg = r.errorMsg; } } else { r.quitNow = true; r.exitCode = 0; } } else { r.exitCode = 0; } } if (r.quitNow) { try { this.writeLine(this._saveCmd); this.closeStdin(); } catch (ex) { EnigmailLog.DEBUG("no more data\n"); } } if (r.exitCode !== null) this._exitCode = r.exitCode; }, QueryInterface: function(iid) { if (!iid.equals(Ci.nsISupports)) throw Components.results.NS_ERROR_NO_INTERFACE; return this; } }; function editKey(parent, needPassphrase, userId, keyId, editCmd, inputData, callbackFunc, requestObserver, parentCallback) { EnigmailLog.DEBUG("keyManagmenent.jsm: editKey: parent=" + parent + ", editCmd=" + editCmd + "\n"); if (!EnigmailCore.getService(parent)) { EnigmailLog.ERROR("keyManagmenent.jsm: Enigmail.editKey: not yet initialized\n"); parentCallback(-1, EnigmailLocale.getString("notInit")); return -1; } var keyIdList = keyId.split(" "); var args = EnigmailGpg.getStandardArgs(false); var statusFlags = {}; args = args.concat(["--no-tty", "--status-fd", "1", "--logger-fd", "1", "--command-fd", "0"]); if (userId) args = args.concat(["-u", userId]); var editCmdArr; if (typeof(editCmd) == "string") { editCmdArr = [editCmd]; } else { editCmdArr = editCmd; } if (editCmdArr[0] == "revoke") { // escape backslashes and ' characters args = args.concat(["-a", "-o"]); args.push(EnigmailFiles.getEscapedFilename(inputData.outFile.path)); args.push("--gen-revoke"); args = args.concat(keyIdList); } else if (editCmdArr[0].indexOf("--") === 0) { args = args.concat(editCmd); args = args.concat(keyIdList); } else { args = args.concat(["--ask-cert-level", "--edit-key", keyId]); args = args.concat(editCmd); } var command = EnigmailGpgAgent.agentPath; EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(command, args) + "\n"); var keyEdit = new GpgEditorInterface(requestObserver, callbackFunc, inputData); try { EnigmailExecution.execCmd2(command, args, keyEdit.setStdin.bind(keyEdit), keyEdit.gotData.bind(keyEdit), function(result) { keyEdit.done(parentCallback, result.exitCode); } ); } catch (ex) { EnigmailLog.ERROR("keyEditor.jsm: editKey: " + command.path + " failed\n"); parentCallback(-1, ""); } } /* * NOTE: the callbackFunc used in every call to the key editor needs to be implemented like this: * callbackFunc(returnCode, errorMsg) * returnCode = 0 in case of success * returnCode != 0 and errorMsg set in case of failure */ const EnigmailKeyEditor = { setKeyTrust: function(parent, keyId, trustLevel, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.setKeyTrust: trustLevel=" + trustLevel + ", keyId=" + keyId + "\n"); return editKey(parent, false, null, keyId, "trust", { trustLevel: trustLevel }, keyTrustCallback, null, callbackFunc); }, /** * Call editKey() to set the expiration date of the chosen key and subkeys * * @param Object parent * @param String keyId e.g. 8D18EB22FDF633A2 * @param Array subKeys List of Integer values, e.g. [0,1,3] * "0" should allways be set because it's the main key. * @param Integer expiryLength A number between 1 and 100 * @param Integer timeScale 1 or 30 or 365 meaning days, months, years * @param Boolean noExpiry True: Expire never. False: Use expiryLength. * @param Function callbackFunc will be executed by editKey() * @return Integer * returnCode = 0 in case of success * returnCode != 0 and errorMsg set in case of failure */ setKeyExpiration: function(parent, keyId, subKeys, expiryLength, timeScale, noExpiry, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.setKeyExpiry: keyId=" + keyId + "\n"); expiryLength = String(expiryLength); if (noExpiry === true) { expiryLength = "0"; } else { switch (parseInt(timeScale, 10)) { case 365: expiryLength += "y"; break; case 30: expiryLength += "m"; break; case 7: expiryLength += "w"; break; } } return editKey(parent, true, null, keyId, "", /* "expire", */ { expiryLength: expiryLength, subKeys: subKeys, currentSubKey: false }, keyExpiryCallback, /* contains the gpg communication logic */ null, callbackFunc); }, signKey: function(parent, userId, keyId, signLocally, trustLevel, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.signKey: trustLevel=" + trustLevel + ", userId=" + userId + ", keyId=" + keyId + "\n"); return editKey(parent, true, userId, keyId, (signLocally ? "lsign" : "sign"), { trustLevel: trustLevel, usePassphrase: true }, signKeyCallback, null, callbackFunc); }, genRevokeCert: function(parent, keyId, outFile, reasonCode, reasonText, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.genRevokeCert: keyId=" + keyId + "\n"); /** * GnuPG < 2.1 does not properly report failures; * therefore we check if the revokation certificate was really generated */ function checkGeneratedCert(exitCode, errorMsg) { if (!outFile.exists()) { exitCode = 1; errorMsg = ""; } callbackFunc(exitCode, errorMsg); } return editKey(parent, true, null, keyId, "revoke", { outFile: outFile, reasonCode: reasonCode, reasonText: EnigmailData.convertFromUnicode(reasonText), usePassphrase: true }, revokeCertCallback, null, checkGeneratedCert); }, addUid: function(parent, keyId, name, email, comment, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.addUid: keyId=" + keyId + ", name=" + name + ", email=" + email + "\n"); return editKey(parent, true, null, keyId, "adduid", { email: email, name: name, comment: comment, nameAsked: 0, emailAsked: 0, usePassphrase: true }, addUidCallback, null, callbackFunc); }, deleteKey: function(parent, keyId, deleteSecretKey, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.addUid: keyId=" + keyId + ", deleteSecretKey=" + deleteSecretKey + "\n"); var cmd = (deleteSecretKey ? "--delete-secret-and-public-key" : "--delete-key"); return editKey(parent, false, null, keyId, cmd, { usePassphrase: true }, deleteKeyCallback, null, callbackFunc); }, changePassphrase: function(parent, keyId, oldPw, newPw, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.changePassphrase: keyId=" + keyId + "\n"); var pwdObserver = new ChangePasswdObserver(); return editKey(parent, false, null, keyId, "passwd", { oldPw: oldPw, newPw: newPw, useAgent: EnigmailGpgAgent.useGpgAgent(), step: 0, observer: pwdObserver, usePassphrase: true }, changePassphraseCallback, pwdObserver, callbackFunc); }, enableDisableKey: function(parent, keyId, disableKey, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.enableDisableKey: keyId=" + keyId + ", disableKey=" + disableKey + "\n"); var cmd = (disableKey ? "disable" : "enable"); return editKey(parent, false, null, keyId, cmd, { usePassphrase: true }, null, null, callbackFunc); }, setPrimaryUid: function(parent, keyId, idNumber, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.setPrimaryUid: keyId=" + keyId + ", idNumber=" + idNumber + "\n"); return editKey(parent, true, null, keyId, "", { idNumber: idNumber, step: 0, usePassphrase: true }, setPrimaryUidCallback, null, callbackFunc); }, deleteUid: function(parent, keyId, idNumber, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.deleteUid: keyId=" + keyId + ", idNumber=" + idNumber + "\n"); return editKey(parent, true, null, keyId, "", { idNumber: idNumber, step: 0, usePassphrase: true }, deleteUidCallback, null, callbackFunc); }, revokeUid: function(parent, keyId, idNumber, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.revokeUid: keyId=" + keyId + ", idNumber=" + idNumber + "\n"); return editKey(parent, true, null, keyId, "", { idNumber: idNumber, step: 0, usePassphrase: true }, revokeUidCallback, null, callbackFunc); }, addPhoto: function(parent, keyId, photoFile, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.addPhoto: keyId=" + keyId + "\n"); var photoFileName = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePath(photoFile.QueryInterface(Ci.nsIFile))); return editKey(parent, true, null, keyId, "addphoto", { file: photoFileName, step: 0, usePassphrase: true }, addPhotoCallback, null, callbackFunc); }, genCardKey: function(parent, name, email, comment, expiry, backupPasswd, requestObserver, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.genCardKey: \n"); var generateObserver = new EnigCardAdminObserver(requestObserver, EnigmailOS.isDosLike()); return editKey(parent, false, null, "", ["--with-colons", "--card-edit"], { step: 0, name: EnigmailData.convertFromUnicode(name), email: email, comment: EnigmailData.convertFromUnicode(comment), expiry: expiry, backupPasswd: backupPasswd, cardAdmin: true, backupKey: (backupPasswd.length > 0 ? "Y" : "N"), parent: parent }, genCardKeyCallback, generateObserver, callbackFunc); }, cardAdminData: function(parent, name, firstname, lang, sex, url, login, forcepin, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.cardAdminData: parent=" + parent + ", name=" + name + ", firstname=" + firstname + ", lang=" + lang + ", sex=" + sex + ", url=" + url + ", login=" + login + ", forcepin=" + forcepin + "\n"); var adminObserver = new EnigCardAdminObserver(null, EnigmailOS.isDosLike()); return editKey(parent, false, null, "", ["--with-colons", "--card-edit"], { step: 0, name: name, firstname: firstname, lang: lang, sex: sex, url: url, login: login, cardAdmin: true, forcepin: forcepin }, cardAdminDataCallback, adminObserver, callbackFunc); }, cardChangePin: function(parent, action, oldPin, newPin, adminPin, pinObserver, callbackFunc) { EnigmailLog.DEBUG("keyManagmenent.jsm: Enigmail.cardChangePin: parent=" + parent + ", action=" + action + "\n"); var adminObserver = new EnigCardAdminObserver(pinObserver, EnigmailOS.isDosLike()); return editKey(parent, EnigmailGpgAgent.useGpgAgent(), null, "", ["--with-colons", "--card-edit"], { step: 0, pinStep: 0, cardAdmin: true, action: action, oldPin: oldPin, newPin: newPin, adminPin: adminPin }, cardChangePinCallback, adminObserver, callbackFunc); } }; // EnigmailKeyEditor function keyReadCallback(outputData, ret) { outputData.keyObj = new EnigmailKey.Entry(outputData.key); ret.exitCode = 0; } function signKeyCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_BOOL, "sign_uid.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_BOOL, "keyedit.sign_all.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_LINE, "sign_uid.expire")) { ret.exitCode = 0; ret.writeTxt = "0"; } else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_value")) { ret.exitCode = 0; ret.writeTxt = "0"; } else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_depth")) { ret.exitCode = 0; ret.writeTxt = ""; } else if (keyEdit.doCheck(GET_LINE, "trustsig_prompt.trust_regexp")) { ret.exitCode = 0; ret.writeTxt = "0"; } else if (keyEdit.doCheck(GET_LINE, "siggen.valid")) { ret.exitCode = 0; ret.writeTxt = "0"; } else if (keyEdit.doCheck(GET_BOOL, "sign_uid.local_promote_okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_LINE, "sign_uid.class")) { ret.exitCode = 0; ret.writeTxt = String(inputData.trustLevel); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ret.exitCode = 0; ret.quitNow = true; } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function keyTrustCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "edit_ownertrust.value")) { ret.exitCode = 0; ret.writeTxt = String(inputData.trustLevel); } else if (keyEdit.doCheck(GET_BOOL, "edit_ownertrust.set_ultimate.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ret.exitCode = 0; ret.quitNow = true; EnigmailKeyRing.clearCache(); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } /** * * @param Array inputData Has the keys ... * expiryLength (String): e.g. 8m = 8 month, 5 = 5 days, 3y = 3 years, 0 = never * subKeys (array): list of still unprocessed subkeys * currentSubKey (Integer or false): current subkey in progress * @param Object keyEdit Readonly messages from GPG. * @param Object ret */ function keyExpiryCallback(inputData, keyEdit, ret) { EnigmailLog.DEBUG("keyManagmenent.jsm: keyExpiryCallback()\n"); ret.writeTxt = ""; ret.errorMsg = ""; if (inputData.subKeys.length === 0) { // zero keys are submitted to edit: this must be a mistake. ret.exitCode = -1; ret.quitNow = true; } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { if (inputData.currentSubKey === false) { // currently no subkey is selected. Chose the first subkey. inputData.currentSubKey = inputData.subKeys[0]; ret.exitCode = 0; ret.writeTxt = "key " + inputData.currentSubKey; } else if (inputData.currentSubKey === inputData.subKeys[0]) { // a subkey is selected. execute command "expire" ret.exitCode = 0; ret.writeTxt = "expire"; } else { // if (inputData.currentSubKey === inputData.subKeys[0]) // unselect the previous used subkey ret.exitCode = 0; ret.writeTxt = "key " + inputData.currentSubKey; inputData.currentSubKey = false; } } else if (keyEdit.doCheck(GET_LINE, "keygen.valid")) { // submit the expiry length. ret.exitCode = 0; ret.writeTxt = inputData.expiryLength; // processing of the current subkey is through. // remove current subkey from list of "to be processed keys". inputData.subKeys.splice(0, 1); // if the list of "to be processed keys" is empty, then quit. if (inputData.subKeys.length === 0) { ret.quitNow = true; } } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function addUidCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "keygen.name")) { ++inputData.nameAsked; if (inputData.nameAsked == 1) { ret.exitCode = 0; ret.writeTxt = inputData.name; } else { ret.exitCode = -1; ret.quitNow = true; ret.errorMsg = "Invalid name (too short)"; } } else if (keyEdit.doCheck(GET_LINE, "keygen.email")) { ++inputData.emailAsked; if (inputData.emailAsked == 1) { ret.exitCode = 0; ret.writeTxt = inputData.email; } else { ret.exitCode = -1; ret.quitNow = true; ret.errorMsg = "Invalid email"; } } else if (keyEdit.doCheck(GET_LINE, "keygen.comment")) { ret.exitCode = 0; if (inputData.comment) { ret.writeTxt = inputData.comment; } else { ret.writeTxt = ""; } } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ret.exitCode = 0; ret.quitNow = true; EnigmailKeyRing.clearCache(); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function revokeCertCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.code")) { ret.exitCode = 0; ret.writeTxt = String(inputData.reasonCode); } else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.text")) { ret.exitCode = 0; ret.writeTxt = ""; } else if (keyEdit.doCheck(GET_BOOL, "gen_revoke.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_BOOL, "ask_revocation_reason.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_BOOL, "openfile.overwrite.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ret.exitCode = 0; ret.quitNow = true; } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function setPrimaryUidCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ++inputData.step; switch (inputData.step) { case 1: ret.exitCode = 0; ret.writeTxt = "uid " + inputData.idNumber; break; case 2: ret.exitCode = 0; ret.writeTxt = "primary"; break; case 3: ret.exitCode = 0; ret.quitNow = true; EnigmailKeyRing.clearCache(); break; default: ret.exitCode = -1; ret.quitNow = true; } } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function changePassphraseCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_HIDDEN, "passphrase.enter")) { switch (inputData.observer.passphraseStatus) { case 0: ret.writeTxt = inputData.oldPw; ret.exitCode = 0; break; case 1: ret.writeTxt = inputData.newPw; ret.exitCode = 0; break; case -1: ret.exitCode = -2; ret.quitNow = true; break; } } else if (keyEdit.doCheck(GET_BOOL, "change_passwd.empty.okay")) { ret.writeTxt = "Y"; ret.exitCode = 0; } else if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { if (inputData.useAgent) { ret.exitCode = 0; } else ret.exitCode = null; ret.quitNow = true; } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function deleteUidCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ++inputData.step; switch (inputData.step) { case 1: ret.exitCode = 0; ret.writeTxt = "uid " + inputData.idNumber; break; case 2: ret.exitCode = 0; ret.writeTxt = "deluid"; break; case 4: ret.exitCode = 0; ret.quitNow = true; EnigmailKeyRing.clearCache(); break; default: ret.exitCode = -1; ret.quitNow = true; } } else if (keyEdit.doCheck(GET_BOOL, "keyedit.remove.uid.okay")) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function revokeUidCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ++inputData.step; switch (inputData.step) { case 1: ret.exitCode = 0; ret.writeTxt = "uid " + inputData.idNumber; break; case 2: ret.exitCode = 0; ret.writeTxt = "revuid"; break; case 7: ret.exitCode = 0; ret.quitNow = true; EnigmailKeyRing.clearCache(); break; default: ret.exitCode = -1; ret.quitNow = true; } } else if (keyEdit.doCheck(GET_BOOL, "keyedit.revoke.uid.okay")) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.code")) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = "0"; // no reason specified } else if (keyEdit.doCheck(GET_LINE, "ask_revocation_reason.text")) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = ""; } else if (keyEdit.doCheck(GET_BOOL, "ask_revocation_reason.okay")) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function deleteKeyCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_BOOL, "delete_key.secret.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_BOOL, "keyedit.remove.subkey.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_BOOL, "delete_key.okay")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function getPin(domWindow, promptMsg, ret) { EnigmailLog.DEBUG("keyManagmenent.jsm: getPin: \n"); var passwdObj = { value: "" }; var dummyObj = {}; var success = false; var promptService = Cc[NS_PROMPTSERVICE_CONTRACTID].getService(Ci.nsIPromptService); success = promptService.promptPassword(domWindow, EnigmailLocale.getString("Enigmail"), promptMsg, passwdObj, null, dummyObj); if (!success) { ret.errorMsg = EnigmailLocale.getString("noPassphrase"); ret.quitNow = true; return false; } EnigmailLog.DEBUG("keyManagmenent.jsm: getPin: got pin\n"); ret.writeTxt = passwdObj.value; return true; } function genCardKeyCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; var pinObj = {}; if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) { if (inputData.step === 0) { ret.exitCode = 0; ret.writeTxt = "admin"; } else if (inputData.step == 1) { ret.exitCode = 0; ret.writeTxt = "generate"; } else { ret.exitCode = 0; ret.quitNow = true; ret.writeTxt = "quit"; } ++inputData.step; } else if (keyEdit.doCheck(GET_LINE, "cardedit.genkeys.backup_enc") || keyEdit.doCheck(GET_BOOL, "cardedit.genkeys.backup_enc")) { ret.exitCode = 0; ret.writeTxt = String(inputData.backupKey); } else if (keyEdit.doCheck(GET_BOOL, "cardedit.genkeys.replace_keys")) { ret.exitCode = 0; ret.writeTxt = "Y"; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.enter")) { ret.exitCode = 0; ret.writeTxt = inputData.backupPasswd; } else if (keyEdit.doCheck(GET_LINE, "keygen.valid")) { ret.exitCode = 0; ret.writeTxt = String(inputData.expiry); } else if (keyEdit.doCheck(GET_LINE, "cardedit.genkeys.size")) { ret.exitCode = 0; ret.writeTxt = "2048"; } else if (keyEdit.doCheck(GET_LINE, "keygen.name")) { ret.exitCode = 0; ret.writeTxt = inputData.name; } else if (keyEdit.doCheck(GET_LINE, "keygen.email")) { ret.exitCode = 0; ret.writeTxt = inputData.email; } else if (keyEdit.doCheck(GET_LINE, "keygen.comment")) { ret.exitCode = 0; if (inputData.comment) { ret.writeTxt = inputData.comment; } else { ret.writeTxt = ""; } } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function cardAdminDataCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; var pinObj = {}; if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) { ++inputData.step; ret.exitCode = 0; switch (inputData.step) { case 1: ret.writeTxt = "admin"; break; case 2: ret.writeTxt = "name"; break; case 3: ret.writeTxt = "lang"; break; case 4: ret.writeTxt = "sex"; break; case 5: ret.writeTxt = "url"; break; case 6: ret.writeTxt = "login"; break; case 7: if (inputData.forcepin !== 0) { ret.writeTxt = "forcesig"; } else { ret.writeTxt = "quit"; ret.exitCode = 0; ret.quitNow = true; } break; default: ret.writeTxt = "quit"; ret.exitCode = 0; ret.quitNow = true; break; } } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else if (keyEdit.doCheck(GET_LINE, "keygen.smartcard.surname")) { ret.exitCode = 0; ret.writeTxt = inputData.name.replace(/^$/, "-"); } else if (keyEdit.doCheck(GET_LINE, "keygen.smartcard.givenname")) { ret.exitCode = 0; ret.writeTxt = inputData.firstname.replace(/^$/, "-"); } else if (keyEdit.doCheck(GET_LINE, "cardedit.change_sex")) { ret.exitCode = 0; ret.writeTxt = inputData.sex; } else if (keyEdit.doCheck(GET_LINE, "cardedit.change_lang")) { ret.exitCode = 0; ret.writeTxt = inputData.lang.replace(/^$/, "-"); } else if (keyEdit.doCheck(GET_LINE, "cardedit.change_url")) { ret.exitCode = 0; ret.writeTxt = inputData.url.replace(/^$/, "-"); } else if (keyEdit.doCheck(GET_LINE, "cardedit.change_login")) { ret.exitCode = 0; ret.writeTxt = inputData.login.replace(/^$/, "-"); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function cardChangePinCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "cardedit.prompt")) { ++inputData.step; ret.exitCode = 0; switch (inputData.step) { case 1: ret.writeTxt = "admin"; break; case 2: ret.writeTxt = "passwd"; break; default: ret.writeTxt = "quit"; ret.exitCode = 0; ret.quitNow = true; break; } } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { ret.exitCode = 0; ret.writeTxt = inputData.adminPin; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { ret.exitCode = 0; ret.writeTxt = inputData.oldPin; } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.new.ask") || keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.repeat") || keyEdit.doCheck(GET_HIDDEN, "passphrase.ask") || keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.new.ask")) { ret.exitCode = 0; ret.writeTxt = inputData.newPin; } else if (keyEdit.doCheck(GET_LINE, "cardutil.change_pin.menu")) { ret.exitCode = 0; ++inputData.pinStep; if (inputData.pinStep == 1) { ret.writeTxt = inputData.action.toString(); } else { ret.writeTxt = "Q"; } } else { ret.exitCode = -1; ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); } } function addPhotoCallback(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; if (keyEdit.doCheck(GET_LINE, "keyedit.prompt")) { ret.exitCode = 0; ret.writeTxt = "save"; ret.quitNow = true; } else if (keyEdit.doCheck(GET_LINE, "photoid.jpeg.add")) { if (inputData.step === 0) { ++inputData.step; ret.exitCode = 0; ret.writeTxt = inputData.file; } else { ret.exitCode = -1; ret.quitNow = true; } } else if (keyEdit.doCheck(GET_BOOL, "photoid.jpeg.size")) { ret.exitCode = 0; ret.writeTxt = "Y"; // add large file } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.adminpin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterAdminPin"), ret); } else if (keyEdit.doCheck(GET_HIDDEN, "passphrase.pin.ask")) { getPin(inputData.parent, EnigmailLocale.getString("enterCardPin"), ret); } else { ret.quitNow = true; EnigmailLog.ERROR("Unknown command prompt: " + keyEdit.getText() + "\n"); ret.exitCode = -1; } } function EnigCardAdminObserver(guiObserver, isDosLike) { this._guiObserver = guiObserver; this._isDosLike = isDosLike; } EnigCardAdminObserver.prototype = { _guiObserver: null, _failureCode: 0, QueryInterface: function(iid) { if (iid.equals(Ci.nsIEnigMimeReadCallback) || iid.equals(Ci.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }, onDataAvailable: function(data) { var ret = ""; EnigmailLog.DEBUG("keyManagmenent.jsm: enigCardAdminObserver.onDataAvailable: data=" + data + "\n"); if (this._isDosLike && data.indexOf("[GNUPG:] BACKUP_KEY_CREATED") === 0) { data = data.replace(/\//g, "\\"); } if (data.indexOf("[GNUPG:] SC_OP_FAILURE") >= 0) { data = data.substr(23); if (data == "2") { data = "[GNUPG:] BAD_PASSPHRASE 0"; this._failureCode = 2; } else this._failureCode = 1; } if (this._failureCode == 1) { ret = "[GNUPG:] ENIGMAIL_FAILURE " + data; } if (this._guiObserver) { this._guiObserver.onDataAvailable(data); } return ret; } }; function ChangePasswdObserver() {} ChangePasswdObserver.prototype = { _failureCode: 0, passphraseStatus: 0, QueryInterface: function(iid) { if (iid.equals(Ci.nsIEnigMimeReadCallback) || iid.equals(Ci.nsISupports)) return this; throw Components.results.NS_NOINTERFACE; }, onDataAvailable: function(data) { var ret = ""; EnigmailLog.DEBUG("keyManagmenent.jsm: ChangePasswdObserver.onDataAvailable: data=" + data + "\n"); if (this._failureCode) { ret = "[GNUPG:] ENIGMAIL_FAILURE " + data; } if (data.indexOf("[GNUPG:] GOOD_PASSPHRASE") >= 0) { this.passphraseStatus = 1; } else if (data.indexOf("[GNUPG:] BAD_PASSPHRASE") >= 0) { this.passphraseStatus = -1; } return ret; } }; enigmail/package/keyRing.jsm000066400000000000000000001705441266701624400164040ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailKeyRing"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/trust.jsm"); /*global EnigmailTrust: false */ Cu.import("resource://enigmail/armor.jsm"); /*global EnigmailArmor: false */ Cu.import("resource://enigmail/os.jsm"); /*global EnigmailOS: false */ Cu.import("resource://enigmail/time.jsm"); /*global EnigmailTime: false */ Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Cu.import("resource://enigmail/windows.jsm"); /*global EnigmailWindows: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/funcs.jsm"); /* global EnigmailFuncs: false */ Cu.import("resource://enigmail/lazy.jsm"); /*global EnigmailLazy: false */ Cu.import("resource://enigmail/key.jsm"); /*global EnigmailKey: false */ const getDialog = EnigmailLazy.loader("enigmail/dialog.jsm", "EnigmailDialog"); const nsIEnigmail = Ci.nsIEnigmail; const NS_RDONLY = 0x01; const NS_WRONLY = 0x02; const NS_CREATE_FILE = 0x08; const NS_TRUNCATE = 0x20; const DEFAULT_FILE_PERMS = 0x180; // equals 0600 const NS_LOCALFILEOUTPUTSTREAM_CONTRACTID = "@mozilla.org/network/file-output-stream;1"; // field ID's of key list (as described in the doc/DETAILS file in the GnuPG distribution) const ENTRY_ID = 0; const KEY_TRUST_ID = 1; const KEY_SIZE_ID = 2; const KEY_ALGO_ID = 3; const KEY_ID = 4; const CREATED_ID = 5; const EXPIRY_ID = 6; const UID_ID = 7; const OWNERTRUST_ID = 8; const USERID_ID = 9; const SIG_TYPE_ID = 10; const KEY_USE_FOR_ID = 11; const UNKNOWN_SIGNATURE = "[User ID not found]"; const KEYTYPE_DSA = 1; const KEYTYPE_RSA = 2; let keygenProcess = null; let gKeyListObj = null; let gKeyIndex = []; let gSubkeyIndex = []; /* This module operates with a Key Store (array) containing objects with the following properties: * keyList [Array] of |KeyObject|: - keyId - 16 digits (8-byte) public key ID (/not/ preceeded with 0x) - userId - main user ID - fpr - fingerprint - fprFormatted - a formatted version of the fingerprint followin the scheme .... .... .... - expiry - Expiry date as printable string - expiryTime - Expiry time as seconds after 01/01/1970 - created - Key creation date as printable string - keyTrust - key trust code as provided by GnuPG (calculated key validity) - keyUseFor - key usage type as provided by GnuPG (key capabilities) - ownerTrust - owner trust as provided by GnuPG - photoAvailable - [Boolean] true if photo is available - secretAvailable - [Boolean] true if secret key is available - algorithm - public key algorithm type - keySize - size of public key - type - "pub" or "grp" - userIds - [Array]: - Contains ALL UIDs (including the primary UID) * userId - User ID * keyTrust - trust level of user ID * uidFpr - fingerprint of the user ID * type - one of "uid" (regular user ID), "uat" (photo) * uatNum - photo number (starting with 0 for each key) - subKeys - [Array]: * keyId - subkey ID (16 digits (8-byte)) * expiry - Expiry date as printable string * expiryTime - Expiry time as seconds after 01/01/1970 * created - Key creation date as printable string * keyTrust - key trust code as provided by GnuPG * keyUseFor - key usage type as provided by GnuPG * algorithm - subkey algorithm type * keySize - subkey size * type - "sub" - signatures - [Array]: list of signature objects * userId * uidLabel * created * fpr * sigList: Array of object: { userId, created, signerKeyId, sigType, sigKnown } - methods: * hasSubUserIds * getKeyExpiry * getEncryptionValidity * getSigningValidity * getPubKeyValidity * clone * keySortList [Array]: used for quickly sorting the keys - user ID (in lower case) - key ID - fpr * trustModel: [String]. One of: - p: pgp/classical - t: always trust - a: auto (:0) (default, currently pgp/classical) - T: TOFU - TP: TOFU+PGP */ const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); var EnigmailKeyRing = { /** * Get the complete list of all public keys, optionally sorted by a column * * @param win - optional |object| holding the parent window for displaying error messages * @param sortColumn - optional |string| containing the column name for sorting. One of: * userid, keyid, keyidshort, fpr, keytype, validity, trust, expiry * @param sortDirection - |number| 1 = ascending / -1 = descending * * @return keyListObj - |object| { keyList, keySortList } (see above) */ getAllKeys: function(win, sortColumn, sortDirection) { if (gKeyListObj.keySortList.length === 0) { loadKeyList(win, sortColumn, sortDirection); } else { if (sortColumn) { gKeyListObj.keySortList.sort(getSortFunction(sortColumn.toLowerCase(), gKeyListObj, sortDirection)); } } return gKeyListObj; }, /** * get a list of all (valid, usable) keys that have a secret key * * @param Boolean onlyValidKeys: if true, only filter valid usable keys * * @return Array of KeyObjects containing the found keys (sorted by userId) **/ getAllSecretKeys: function(onlyValidKeys = false) { this.getAllKeys(); // ensure keylist is loaded; let res = []; this.getAllKeys(); // ensure keylist is loaded; if (!onlyValidKeys) { for (let key of gKeyListObj.keyList) { if (key.secretAvailable) res.push(key); } } else { for (let key of gKeyListObj.keyList) { if (key.secretAvailable && key.keyUseFor.search(/D/) < 0) { // key is not disabled and _usable_ for encryption signing and certification if (key.keyUseFor.search(/E/) >= 0 && key.keyUseFor.search(/S/) >= 0 && key.keyUseFor.search(/C/) >= 0) { res.push(key); } } } } res.sort(function(a, b) { return a.userId == b.userId ? (a.keyId < b.keyId ? -1 : 1) : (a.userId.toLowerCase() < b.userId.toLowerCase() ? -1 : 1); }); return res; }, /** * get 1st key object that matches a given key ID or subkey ID * * @param keyId - String: key Id with 16 characters (preferred) or 8 characters), * or fingerprint (40 or 32 characters). * Optionally preceeded with "0x" * * @return Object - found KeyObject or null if key not found */ getKeyById: function(keyId) { EnigmailLog.DEBUG("keyRing.jsm: getKeyById: " + keyId + "\n"); let s; if (keyId.search(/^0x/) === 0) { keyId = keyId.substr(2); } this.getAllKeys(); // ensure keylist is loaded; let keyObj = gKeyIndex[keyId]; if (keyObj === undefined) { keyObj = gSubkeyIndex[keyId]; } return keyObj !== undefined ? keyObj : null; }, /** * get all key objects that match a given user ID * * @param searchTerm - String: a regular expression to match against all UIDs of the keys. * The search is always performed case-insensitively * @param onlyValidUid - Boolean: if true (default), invalid (e.g. revoked) UIDs are not matched * * @return Array of KeyObjects with the found keys (array length is 0 if no key found) */ getKeysByUserId: function(searchTerm, onlyValidUid = true) { let s = new RegExp(searchTerm, "i"); let res = []; this.getAllKeys(); // ensure keylist is loaded; for (let i in gKeyListObj.keyList) { let k = gKeyListObj.keyList[i]; for (let j in k.userIds) { if (k.userIds[j].type === "uid" && k.userIds[j].userId.search(s) >= 0) { if (!onlyValidUid || (!EnigmailTrust.isInvalid(k.userIds[j].keyTrust))) { res.push(k); continue; } } } } return res; }, /** * get a list of keys for a given set of (sub-) key IDs * * @param keyIdList: Array of key IDs OR String, with space-separated list of key IDs */ getKeyListById: function(keyIdList) { let keyArr; if (typeof keyIdList === "string") { keyArr = keyIdList.split(/ +/); } else { keyArr = keyIdList; } let ret = []; for (let i in keyArr) { let r = this.getKeyById(keyArr[i]); if (r) ret.push(r); } return ret; }, importKeyFromFile: function(inputFile, errorMsgObj, importedKeysObj) { var command = EnigmailGpg.agentPath; var args = EnigmailGpg.getStandardArgs(true); EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.importKeyFromFile: fileName=" + inputFile.path + "\n"); importedKeysObj.value = ""; var fileName = EnigmailFiles.getEscapedFilename((inputFile.QueryInterface(Ci.nsIFile)).path); args.push("--import"); args.push(fileName); var statusFlagsObj = {}; var statusMsgObj = {}; var exitCodeObj = {}; var output = EnigmailExecution.execCmd(command, args, "", exitCodeObj, statusFlagsObj, statusMsgObj, errorMsgObj); EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.importKeyFromFile: error=" + errorMsgObj.value + "\n"); var statusMsg = statusMsgObj.value; var keyList = []; if (exitCodeObj.value === 0) { // Normal EnigmailKeyRing.clearCache(); var statusLines = statusMsg.split(/\r?\n/); // Discard last null string, if any for (let j = 0; j < statusLines.length; j++) { var matches = statusLines[j].match(/IMPORT_OK ([0-9]+) (\w+)/); if (matches && (matches.length > 2)) { if (typeof(keyList[matches[2]]) != "undefined") { keyList[matches[2]] |= Number(matches[1]); } else keyList[matches[2]] = Number(matches[1]); EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.importKeyFromFile: imported " + matches[2] + ":" + matches[1] + "\n"); } } for (let j in keyList) { importedKeysObj.value += j + ":" + keyList[j] + ";"; } } return exitCodeObj.value; }, /** * Get groups defined in gpg.conf in the same structure as KeyObject * * @return Array of KeyObject, with type = "grp" */ getGroups: function() { let groups = EnigmailGpg.getGpgGroups(); let r = []; for (var i = 0; i < groups.length; i++) { let keyObj = new KeyObject(["grp"]); keyObj.keyTrust = "g"; keyObj.userId = EnigmailData.convertGpgToUnicode(groups[i].alias).replace(/\\e3A/g, ":"); keyObj.keyId = keyObj.userId; var grpMembers = EnigmailData.convertGpgToUnicode(groups[i].keylist).replace(/\\e3A/g, ":").split(/[,;]/); for (var grpIdx = 0; grpIdx < grpMembers.length; grpIdx++) { keyObj.userIds.push({ userId: grpMembers[grpIdx], keyTrust: "q" }); } r.push(keyObj); } return r; }, /** * empty the key cache, such that it will get loaded next time it is accessed * * no input or return values */ clearCache: function() { EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.clearCache\n"); gKeyListObj = { keyList: [], keySortList: [] }; gKeyIndex = []; gSubkeyIndex = []; }, /** * Get a list of UserIds for a give key. * Only the Only UIDs with highest trust level are returned. * * @param String keyId key, optionally preceeded with 0x * * @return Array of String: list of UserIds */ getValidUids: function(keyId) { let r = []; let keyObj = this.getKeyById(keyId); if (keyObj) { const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); let hideInvalidUid = true; let maxTrustLevel = TRUSTLEVELS_SORTED.indexOf(keyObj.keyTrust); if (EnigmailTrust.isInvalid(keyObj.keyTrust)) { // pub key not valid (anymore)-> display all UID's hideInvalidUid = false; } for (let i in keyObj.userIds) { if (keyObj.userIds[i].type !== "uat") { if (hideInvalidUid) { let thisTrust = TRUSTLEVELS_SORTED.indexOf(keyObj.userIds[i].keyTrust); if (thisTrust > maxTrustLevel) { r = [keyObj.userIds[i].userId]; maxTrustLevel = thisTrust; } else if (thisTrust === maxTrustLevel) { r.push(keyObj.userIds[i].userId); } // else do not add uid } else if (!EnigmailTrust.isInvalid(keyObj.userIds[i].keyTrust) || !hideInvalidUid) { // UID valid OR key not valid, but invalid keys allowed r.push(keyObj.userIds[i].userId); } } } } return r; }, /** * Export public and possibly secret key(s) to a file * * @param includeSecretKey Boolean - if true, secret keys are exported * @param userId String - space or comma separated list of keys to export. Specification by * key ID, fingerprint, or userId * @param outputFile String or nsIFile - output file name or Object - or NULL * @param exitCodeObj Object - o.value will contain exit code * @param errorMsgObj Object - o.value will contain error message from GnuPG * * @return String - if outputFile is NULL, the key block data; "" if a file is written */ extractKey: function(includeSecretKey, userId, outputFile, exitCodeObj, errorMsgObj) { EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.extractKey: " + userId + "\n"); let args = EnigmailGpg.getStandardArgs(true). concat(["-a", "--export"]); if (userId) { args = args.concat(userId.split(/[ ,\t]+/)); } const cmdErrorMsgObj = {}; let keyBlock = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, {}, {}, cmdErrorMsgObj); if ((exitCodeObj.value === 0) && !keyBlock) { exitCodeObj.value = -1; } if (exitCodeObj.value !== 0) { errorMsgObj.value = EnigmailLocale.getString("failKeyExtract"); if (cmdErrorMsgObj.value) { errorMsgObj.value += "\n" + EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, args); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } return ""; } if (includeSecretKey) { let secretArgs = EnigmailGpg.getStandardArgs(true). concat(["-a", "--export-secret-keys"]); if (userId) { secretArgs = secretArgs.concat(userId.split(/[ ,\t]+/)); } const secKeyBlock = EnigmailExecution.execCmd(EnigmailGpg.agentPath, secretArgs, "", exitCodeObj, {}, {}, cmdErrorMsgObj); if ((exitCodeObj.value === 0) && !secKeyBlock) { exitCodeObj.value = -1; } if (exitCodeObj.value !== 0) { errorMsgObj.value = EnigmailLocale.getString("failKeyExtract"); if (cmdErrorMsgObj.value) { errorMsgObj.value += "\n" + EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, secretArgs); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } return ""; } if (keyBlock.substr(-1, 1).search(/[\r\n]/) < 0) { keyBlock += "\n"; } keyBlock += secKeyBlock; } if (outputFile) { if (!EnigmailFiles.writeFileContents(outputFile, keyBlock, DEFAULT_FILE_PERMS)) { exitCodeObj.value = -1; errorMsgObj.value = EnigmailLocale.getString("fileWriteFailed", [outputFile]); } return ""; } return keyBlock; }, /** * Export the ownertrust database from GnuPG * @param outputFile String or nsIFile - output file name or Object - or NULL * @param exitCodeObj Object - o.value will contain exit code * @param errorMsgObj Object - o.value will contain error message from GnuPG * * @return String - if outputFile is NULL, the key block data; "" if a file is written */ extractOwnerTrust: function(outputFile, exitCodeObj, errorMsgObj) { let args = EnigmailGpg.getStandardArgs(true).concat(["--export-ownertrust"]); let trustData = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, {}, {}, errorMsgObj); if (outputFile) { if (!EnigmailFiles.writeFileContents(outputFile, trustData, DEFAULT_FILE_PERMS)) { exitCodeObj.value = -1; errorMsgObj.value = EnigmailLocale.getString("fileWriteFailed", [outputFile]); } return ""; } return trustData; }, /** * Import the ownertrust database into GnuPG * @param inputFile String or nsIFile - input file name or Object - or NULL * @param errorMsgObj Object - o.value will contain error message from GnuPG * * @return exit code */ importOwnerTrust: function(inputFile, errorMsgObj) { let args = EnigmailGpg.getStandardArgs(true).concat(["--import-ownertrust"]); let exitCodeObj = {}; try { let trustData = EnigmailFiles.readFile(inputFile); EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, trustData, exitCodeObj, {}, {}, errorMsgObj); } catch (ex) {} return exitCodeObj.value; }, /** * import key from provided key data * * @param parent nsIWindow * @param isInteractive Boolean - if true, display confirmation dialog * @param keyBLock String - data containing key * @param keyId String - key ID expected to import (no meaning) * @param errorMsgObj Object - o.value will contain error message from GnuPG * * @return Integer - exit code: * ExitCode == 0 => success * ExitCode > 0 => error * ExitCode == -1 => Cancelled by user */ importKey: function(parent, isInteractive, keyBlock, keyId, errorMsgObj) { EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.importKey: id=" + keyId + ", " + isInteractive + "\n"); const beginIndexObj = {}; const endIndexObj = {}; const blockType = EnigmailArmor.locateArmoredBlock(keyBlock, 0, "", beginIndexObj, endIndexObj, {}); if (!blockType) { errorMsgObj.value = EnigmailLocale.getString("noPGPblock"); return 1; } if (blockType != "PUBLIC KEY BLOCK") { errorMsgObj.value = EnigmailLocale.getString("notFirstBlock"); return 1; } const pgpBlock = keyBlock.substr(beginIndexObj.value, endIndexObj.value - beginIndexObj.value + 1); if (isInteractive) { if (!(getDialog().confirmDlg(parent, EnigmailLocale.getString("importKeyConfirm"), EnigmailLocale.getString("keyMan.button.import")))) { errorMsgObj.value = EnigmailLocale.getString("failCancel"); return -1; } } const args = EnigmailGpg.getStandardArgs(true). concat(["--import"]); const exitCodeObj = {}; const statusMsgObj = {}; EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, pgpBlock, exitCodeObj, {}, statusMsgObj, errorMsgObj); const statusMsg = statusMsgObj.value; if (exitCodeObj.value === 0) { // Normal return EnigmailKeyRing.clearCache(); if (statusMsg && (statusMsg.search("IMPORTED ") > -1)) { const matches = statusMsg.match(/(^|\n)IMPORTED (\w{8})(\w{8})/); if (matches && (matches.length > 3)) { EnigmailLog.DEBUG("enigmail.js: Enigmail.importKey: IMPORTED 0x" + matches[3] + "\n"); } } } return exitCodeObj.value; }, /** * Extract a photo ID from a key, store it as file and return the file object. * @keyId: String - Key ID * @photoNumber: Number - number of the photo on the key, starting with 0 * @exitCodeObj: Object - value holds exitCode (0 = success) * @errorMsgObj: Object - value holds errorMsg * * @return: nsIFile object or null in case no data / error. */ getPhotoFile: function(keyId, photoNumber, exitCodeObj, errorMsgObj) { EnigmailLog.DEBUG("keyRing.js: EnigmailKeyRing.getPhotoFile, keyId=" + keyId + " photoNumber=" + photoNumber + "\n"); const args = EnigmailGpg.getStandardArgs(). concat(["--no-secmem-warning", "--no-verbose", "--no-auto-check-trustdb", "--batch", "--no-tty", "--status-fd", "1", "--attribute-fd", "2", "--fixed-list-mode", "--list-keys", keyId ]); const photoDataObj = {}; const outputTxt = EnigmailExecution.simpleExecCmd(EnigmailGpg.agentPath, args, exitCodeObj, photoDataObj); if (!outputTxt) { exitCodeObj.value = -1; return null; } if (EnigmailOS.isDosLike() && EnigmailGpg.getGpgFeature("windows-photoid-bug")) { // workaround for error in gpg photoDataObj.value = photoDataObj.value.replace(/\r\n/g, "\n"); } // [GNUPG:] ATTRIBUTE A053069284158FC1E6770BDB57C9EB602B0717E2 2985 let foundPicture = -1; let skipData = 0; let imgSize = -1; const statusLines = outputTxt.split(/[\n\r+]/); for (let i = 0; i < statusLines.length; i++) { const matches = statusLines[i].match(/\[GNUPG:\] ATTRIBUTE ([A-F\d]+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+) (\d+)/); if (matches && matches[3] == "1") { // attribute is an image foundPicture++; if (foundPicture === photoNumber) { imgSize = Number(matches[2]); break; } else { skipData += Number(matches[2]); } } } if (foundPicture >= 0 && foundPicture === photoNumber) { const pictureData = photoDataObj.value.substr(16 + skipData, imgSize); if (!pictureData.length) { return null; } try { const flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE; const picFile = EnigmailFiles.getTempDirObj(); picFile.append(keyId + ".jpg"); picFile.createUnique(picFile.NORMAL_FILE_TYPE, DEFAULT_FILE_PERMS); const fileStream = Cc[NS_LOCALFILEOUTPUTSTREAM_CONTRACTID].createInstance(Ci.nsIFileOutputStream); fileStream.init(picFile, flags, DEFAULT_FILE_PERMS, 0); if (fileStream.write(pictureData, pictureData.length) !== pictureData.length) { throw Components.results.NS_ERROR_FAILURE; } fileStream.flush(); fileStream.close(); return picFile; } catch (ex) { exitCodeObj.value = -1; return null; } } return null; }, isGeneratingKey: function() { return keygenProcess !== null; }, /** * Generate a new key pair with GnuPG * * @name: String - name part of UID * @comment: String - comment part of UID (brackets are added) * @comment: String - email part of UID (<> will be added) * @expiryDate: Number - Unix timestamp of key expiry date; 0 if no expiry * @keyLength: Number - size of key in bytes (e.g 4096) * @keyType: Number - 1 = DSA / 2 = RSA * @passphrase: String - password; null if no password * @listener: Object - { * function onDataAvailable(data) {...}, * function onStopRequest(exitCode) {...} * } * * @return: handle to process */ generateKey: function(name, comment, email, expiryDate, keyLength, keyType, passphrase, listener) { EnigmailLog.WRITE("keyRing.jsm: generateKey:\n"); if (EnigmailKeyRing.isGeneratingKey()) { // key generation already ongoing throw Components.results.NS_ERROR_FAILURE; } const args = EnigmailGpg.getStandardArgs(true). concat(["--gen-key"]); EnigmailLog.CONSOLE(EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, args)); let inputData = "%echo Generating key\nKey-Type: "; switch (keyType) { case KEYTYPE_DSA: inputData += "DSA\nKey-Length: " + keyLength + "\nSubkey-Type: 16\nSubkey-Length: "; break; case KEYTYPE_RSA: inputData += "RSA\nKey-Usage: sign,auth\nKey-Length: " + keyLength; inputData += "\nSubkey-Type: RSA\nSubkey-Usage: encrypt\nSubkey-Length: "; break; default: return null; } inputData += keyLength + "\n"; if (name.replace(/ /g, "").length) { inputData += "Name-Real: " + name + "\n"; } if (comment && comment.replace(/ /g, "").length) { inputData += "Name-Comment: " + comment + "\n"; } inputData += "Name-Email: " + email + "\n"; inputData += "Expire-Date: " + String(expiryDate) + "\n"; EnigmailLog.CONSOLE(inputData + " \n"); if (passphrase.length) { inputData += "Passphrase: " + passphrase + "\n"; } inputData += "%commit\n%echo done\n"; let proc = null; try { proc = subprocess.call({ command: EnigmailGpg.agentPath, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, stdin: function(pipe) { pipe.write(inputData); pipe.close(); }, stderr: function(data) { listener.onDataAvailable(data); }, done: function(result) { keygenProcess = null; try { if (result.exitCode === 0) { EnigmailKeyRing.clearCache(); } listener.onStopRequest(result.exitCode); } catch (ex) {} }, mergeStderr: false }); } catch (ex) { EnigmailLog.ERROR("keyRing.jsm: generateKey: subprocess.call failed with '" + ex.toString() + "'\n"); throw ex; } keygenProcess = proc; EnigmailLog.DEBUG("keyRing.jsm: generateKey: subprocess = " + proc + "\n"); return proc; }, /** * try to find valid key for encryption to passed email address * * @param details if not null returns error in details.msg * * @return: found key ID (without leading "0x") or null */ getValidKeyForRecipient: function(emailAddr, minTrustLevelIndex, details) { EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): emailAddr=\"" + emailAddr + "\"\n"); const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); const fullTrustIndex = TRUSTLEVELS_SORTED.indexOf("f"); emailAddr = emailAddr.toLowerCase(); var embeddedEmailAddr = "<" + emailAddr + ">"; // note: we can't take just the first matched because we might have faked keys as duplicates var foundKeyId = null; var foundTrustLevel = null; var foundKeyTrustIndex = null; let k = this.getAllKeys(null, "validity", -1); let keyList = k.keyList; let keySortList = k.keySortList; // **** LOOP to check against each key // - note: we have sorted the keys according to validity // to abort the loop as soon as we reach keys that are not valid enough for (var idx = 0; idx < keySortList.length; idx++) { var keyObj = keyList[keySortList[idx].keyNum]; var keyTrust = keyObj.keyTrust; var keyTrustIndex = TRUSTLEVELS_SORTED.indexOf(keyTrust); //EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): check key " + keyObj.keyId + "\n"); // key trust (our sort criterion) too low? // => *** regular END of the loop if (keyTrustIndex < minTrustLevelIndex) { if (!foundKeyId) { if (details) { details.msg = "ProblemNoKey"; } let msg = "no key with enough trust level for '" + emailAddr + "' found"; EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): " + msg + "\n"); } return foundKeyId; // **** regular END OF LOOP (return NULL or found single key) } // key valid for encryption? if (keyObj.keyUseFor.indexOf("E") < 0) { //EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): skip key " + keyObj.keyId + " (not provided for encryption)\n"); continue; // not valid for encryption => **** CONTINUE the LOOP } // key disabled? if (keyObj.keyUseFor.indexOf("D") >= 0) { //EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): skip key " + keyObj.keyId + " (disabled)\n"); continue; // disabled => **** CONTINUE the LOOP } // check against the user ID var userId = keyObj.userId.toLowerCase(); if (userId && (userId == emailAddr || userId.indexOf(embeddedEmailAddr) >= 0)) { if (keyTrustIndex < minTrustLevelIndex) { EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): matching key=" + keyObj.keyId + " found but not enough trust\n"); } else { // key with enough trust level found EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): key=" + keyObj.keyId + " keyTrust=\"" + keyTrust + "\" found\n"); // immediately return if a fully or ultimately trusted key is found // (faked keys should not be an issue here, so we don't have to check other keys) if (keyTrustIndex >= fullTrustIndex) { return keyObj.keyId; } if (foundKeyId != keyObj.keyId) { // new matching key found (note: might find same key via subkeys) if (foundKeyId) { // different matching keys found if (foundKeyTrustIndex > keyTrustIndex) { return foundKeyId; // OK, previously found key has higher trust level } // error because we have two keys with same trust level // => let the user decide (to prevent from using faked keys with default trust level) if (details) { details.msg = "ProblemMultipleKeys"; } let msg = "multiple matching keys with same trust level found for '" + emailAddr + "' "; EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): " + msg + " trustLevel=\"" + keyTrust + "\" (0x" + foundKeyId + " and 0x" + keyObj.keyId + ")\n"); return null; } // save found key to compare with other matching keys (handling of faked keys) foundKeyId = keyObj.keyId; foundKeyTrustIndex = keyTrustIndex; } continue; // matching key found (again) => **** CONTINUE the LOOP (don't check Sub-UserIDs) } } // check against the sub user ID // (if we are here, the primary user ID didn't match) // - Note: sub user IDs have NO owner trust for (var subUidIdx = 1; subUidIdx < keyObj.userIds.length; subUidIdx++) { var subUidObj = keyObj.userIds[subUidIdx]; var subUserId = subUidObj.userId.toLowerCase(); var subUidTrust = subUidObj.keyTrust; var subUidTrustIndex = TRUSTLEVELS_SORTED.indexOf(subUidTrust); //EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): check subUid " + subUidObj.keyId + "\n"); if (subUserId && (subUserId == emailAddr || subUserId.indexOf(embeddedEmailAddr) >= 0)) { if (subUidTrustIndex < minTrustLevelIndex) { EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): matching subUid=" + keyObj.keyId + " found but not enough trust\n"); } else { // subkey with enough trust level found EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): matching subUid in key=" + keyObj.keyId + " keyTrust=\"" + keyTrust + "\" found\n"); if (keyTrustIndex >= fullTrustIndex) { // immediately return if a fully or ultimately trusted key is found // (faked keys should not be an issue here, so we don't have to check other keys) return keyObj.keyId; } if (foundKeyId != keyObj.keyId) { // new matching key found (note: might find same key via different subkeys) if (foundKeyId) { // different matching keys found if (foundKeyTrustIndex > subUidTrustIndex) { return foundKeyId; // OK, previously found key has higher trust level } // error because we have two keys with same trust level // => let the user decide (to prevent from using faked keys with default trust level) if (details) { details.msg = "ProblemMultipleKeys"; } let msg = "multiple matching keys with same trust level found for '" + emailAddr + "' "; EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): " + msg + " trustLevel=\"" + keyTrust + "\" (0x" + foundKeyId + " and 0x" + keyObj.keyId + ")\n"); return null; } // save found key to compare with other matching keys (handling of faked keys) foundKeyId = keyObj.keyId; foundKeyTrustIndex = subUidTrustIndex; } } } } } // **** LOOP to check against each key if (!foundKeyId) { EnigmailLog.DEBUG("keyRing.jsm: getValidKeyForRecipient(): no key for '" + emailAddr + "' found\n"); } return foundKeyId; }, getValidKeysForAllRecipients: function(addresses, minTrustLevel, details, resultingArray) { let minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf(minTrustLevel); // check whether each address is or has a key: let keyMissing = false; if (details) { details.errArray = []; } for (let i = 0; i < addresses.length; i++) { let addr = addresses[i]; // try to find current address in key list: var found = false; var errMsg = null; if (addr.indexOf('@') >= 0) { // try email match: var addrErrDetails = {}; let keyId = this.getValidKeyForRecipient(addr, minTrustLevelIndex, addrErrDetails); if (details && addrErrDetails.msg) { errMsg = addrErrDetails.msg; } if (keyId) { found = true; resultingArray.push("0x" + keyId.toUpperCase()); } } else { // try key match: var keyObj = this.getKeyById(addr); if (keyObj) { // if found, check whether the trust level is enough if (TRUSTLEVELS_SORTED.indexOf(keyObj.keyTrust) >= minTrustLevelIndex) { found = true; resultingArray.push("0x" + keyObj.keyId.toUpperCase()); } } } if (!found) { // no key for this address found keyMissing = true; if (details) { if (!errMsg) { errMsg = "ProblemNoKey"; } var detailsElem = {}; detailsElem.addr = addr; detailsElem.msg = errMsg; details.errArray.push(detailsElem); } EnigmailLog.DEBUG("keyRing.jsm: doValidKeysForAllRecipients(): return null (no single valid key found for=\"" + addr + "\" with minTrustLevel=\"" + minTrustLevel + "\")\n"); } } return keyMissing; }, /** * Rebuild the quick access search indexes after the key list was loaded */ rebuildKeyIndex: function() { gKeyIndex = []; gSubkeyIndex = []; for (let i in gKeyListObj.keyList) { let k = gKeyListObj.keyList[i]; gKeyIndex[k.keyId] = k; gKeyIndex[k.fpr] = k; gKeyIndex[k.keyId.substr(-8, 8)] = k; // add subkeys for (let j in k.subKeys) { gSubkeyIndex[k.subKeys[j].keyId] = k; } } } }; // EnigmailKeyRing /************************ INTERNAL FUNCTIONS ************************/ /** * returns the output of --with-colons --list[-secret]-keys */ function getUserIdList(secretOnly, exitCodeObj, statusFlagsObj, errorMsgObj) { let args = EnigmailGpg.getStandardArgs(true); if (secretOnly) { args = args.concat(["--with-fingerprint", "--fixed-list-mode", "--with-colons", "--list-secret-keys"]); } else { args = args.concat(["--with-fingerprint", "--fixed-list-mode", "--with-colons", "--list-keys"]); } statusFlagsObj.value = 0; const cmdErrorMsgObj = {}; let listText = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, statusFlagsObj, {}, cmdErrorMsgObj); if (!(statusFlagsObj.value & nsIEnigmail.BAD_SIGNATURE)) { // ignore exit code as recommended by GnuPG authors exitCodeObj.value = 0; } if (exitCodeObj.value !== 0) { errorMsgObj.value = EnigmailLocale.getString("badCommand"); if (cmdErrorMsgObj.value) { errorMsgObj.value += "\n" + EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, args); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } return ""; } listText = listText.replace(/(\r\n|\r)/g, "\n"); return listText; } /** * Get key list from GnuPG. If the keys may be pre-cached already * * @win - |object| parent window for displaying error messages * @secretOnly - |boolean| true: get secret keys / false: get public keys * * @return - |array| of : separated key list entries as specified in GnuPG doc/DETAILS */ function obtainKeyList(win, secretOnly) { EnigmailLog.DEBUG("keyRing.jsm: obtainKeyList\n"); let userList = null; try { const exitCodeObj = {}; const errorMsgObj = {}; userList = getUserIdList(secretOnly, exitCodeObj, {}, errorMsgObj); if (exitCodeObj.value !== 0) { getDialog().alert(win, errorMsgObj.value); return null; } } catch (ex) { EnigmailLog.ERROR("ERROR in keyRing.jsm: obtainKeyList: " + ex.toString() + "\n"); } if (typeof(userList) == "string") { return userList.split(/\n/); } else { return []; } } function sortByUserId(keyListObj, sortDirection) { return function(a, b) { return (a.userId < b.userId) ? -sortDirection : sortDirection; }; } const sortFunctions = { keyid: function(keyListObj, sortDirection) { return function(a, b) { return (a.keyId < b.keyId) ? -sortDirection : sortDirection; }; }, keyidshort: function(keyListObj, sortDirection) { return function(a, b) { return (a.keyId.substr(-8, 8) < b.keyId.substr(-8, 8)) ? -sortDirection : sortDirection; }; }, fpr: function(keyListObj, sortDirection) { return function(a, b) { return (keyListObj.keyList[a.keyNum].fpr < keyListObj.keyList[b.keyNum].fpr) ? -sortDirection : sortDirection; }; }, keytype: function(keyListObj, sortDirection) { return function(a, b) { return (keyListObj.keyList[a.keyNum].secretAvailable < keyListObj.keyList[b.keyNum].secretAvailable) ? -sortDirection : sortDirection; }; }, validity: function(keyListObj, sortDirection) { return function(a, b) { return (EnigmailTrust.trustLevelsSorted().indexOf(EnigmailTrust.getTrustCode(keyListObj.keyList[a.keyNum])) < EnigmailTrust.trustLevelsSorted().indexOf(EnigmailTrust.getTrustCode( keyListObj.keyList[b.keyNum]))) ? -sortDirection : sortDirection; }; }, trust: function(keyListObj, sortDirection) { return function(a, b) { return (EnigmailTrust.trustLevelsSorted().indexOf(keyListObj.keyList[a.keyNum].ownerTrust) < EnigmailTrust.trustLevelsSorted().indexOf(keyListObj.keyList[b.keyNum].ownerTrust)) ? - sortDirection : sortDirection; }; }, expiry: function(keyListObj, sortDirection) { return function(a, b) { return (keyListObj.keyList[a.keyNum].expiryTime < keyListObj.keyList[b.keyNum].expiryTime) ? -sortDirection : sortDirection; }; } }; function getSortFunction(type, keyListObj, sortDirection) { return (sortFunctions[type] || sortByUserId)(keyListObj, sortDirection); } /** * Return string with all colon-separated data of key list entry of given key. * - key may be pub or sub key. * * @param String keyId of 8 or 16 chars key with optionally leading 0x * @return String entry of first found user IDs with keyId or null if none */ function getKeyListEntryOfKey(keyId) { keyId = keyId.replace(/^0x/, ""); let statusFlags = {}; let errorMsg = {}; let exitCodeObj = {}; let listText = getUserIdList(false, exitCodeObj, statusFlags, errorMsg); // listText contains lines such as: // tru::0:1407688184:1424970931:3:1:5 // pub:f:1024:17:D581C6F8EBB80E50:1107251639:::-:::scESC: // fpr:::::::::492A198AEA5EBE5574A1CE00D581C6F8EBB80E50: // uid:f::::1107251639::2D505D1F6E744365B3B35FF11F32A19779E3A417::Giosue Vitaglione : // sub:f:2048:16:2223D7E0301A66C6:1107251647::::::e: // search for key or subkey let regexKey = new RegExp("^(pub|sub):[^:]*:[^:]*:[^:]*:[A-Fa-f0-9]*" + keyId + ":", "m"); let foundPos = listText.search(regexKey); if (foundPos < 0) { return null; } // find area of key entries in key list // note: if subkey matches, key entry starts before let regexPub = new RegExp("^pub:", "gm"); let startPos; if (listText[foundPos] == "p") { // ^pub: // KEY matches startPos = foundPos; } else { // SUBKEY matches // search for pub entry right before sub entry startPos = 0; let match = regexPub.exec(listText.substr(0, foundPos)); while (match && match.index < foundPos) { startPos = match.index; match = regexPub.exec(listText); } } // find end of entry (next pub entry or end): let match = regexPub.exec(listText.substr(startPos + 1)); let res; if (match && match.index) { res = listText.substring(startPos, startPos + 1 + match.index); } else { res = listText.substring(startPos); } return res; } /** * Load the key list into memory and return it sorted by a specified column * * @param win - |object| holding the parent window for displaying error messages * @param sortColumn - |string| containing the column name for sorting. One of: * userid, keyid, keyidshort, fpr, keytype, validity, trust, expiry. * Null will sort by userid. * @param sortDirection - |number| 1 = ascending / -1 = descending * * no return value */ function loadKeyList(win, sortColumn, sortDirection) { EnigmailLog.DEBUG("keyRing.jsm: loadKeyList()\n"); const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); var aGpgUserList = obtainKeyList(win, false); if (!aGpgUserList) return; var aGpgSecretsList = obtainKeyList(win, true); if (!aGpgSecretsList) { if (getDialog().confirmDlg(EnigmailLocale.getString("noSecretKeys"), EnigmailLocale.getString("keyMan.button.generateKey"), EnigmailLocale.getString("keyMan.button.skip"))) { EnigmailWindows.openKeyGen(); EnigmailKeyRing.clearCache(); loadKeyList(win, sortColumn, sortDirection); } } createAndSortKeyList(aGpgUserList, aGpgSecretsList, sortColumn, sortDirection); } // returns the output of --with-colons --list-sig function getKeySig(keyId, exitCodeObj, errorMsgObj) { const args = EnigmailGpg.getStandardArgs(true). concat(["--with-fingerprint", "--fixed-list-mode", "--with-colons", "--list-sig"]). concat(keyId.split(" ")); const statusFlagsObj = {}; const cmdErrorMsgObj = {}; const listText = EnigmailExecution.execCmd(EnigmailGpg.agentPath, args, "", exitCodeObj, statusFlagsObj, {}, cmdErrorMsgObj); if (!(statusFlagsObj.value & nsIEnigmail.BAD_SIGNATURE)) { // ignore exit code as recommended by GnuPG authors exitCodeObj.value = 0; } if (exitCodeObj.value !== 0) { errorMsgObj.value = EnigmailLocale.getString("badCommand"); if (cmdErrorMsgObj.value) { errorMsgObj.value += "\n" + EnigmailFiles.formatCmdLine(EnigmailGpg.agentPath, args); errorMsgObj.value += "\n" + cmdErrorMsgObj.value; } return ""; } return listText; } /** * Return signatures for a given key list * * @param String gpgKeyList Output from gpg such as produced by getKeySig() * Only the first public key is processed! * @param Boolean ignoreUnknownUid true if unknown signer's UIDs should be filtered out * * @return Array of Object: * - uid * - uidLabel * - creationDate * - sigList: [uid, creationDate, signerKeyId, sigType ] */ function extractSignatures(gpgKeyList, ignoreUnknownUid) { EnigmailLog.DEBUG("keyRing.jsm: extractSignatures: " + gpgKeyList + "\n"); var listObj = {}; let havePub = false; let currUid = "", keyId = "", fpr = ""; const lineArr = gpgKeyList.split(/\n/); for (let i = 0; i < lineArr.length; i++) { // process lines such as: // tru::1:1395895453:1442881280:3:1:5 // pub:f:4096:1:C1B875ED336XX959:2299509307:1546189300::f:::scaESCA: // fpr:::::::::102A1C8CC524A966849C33D7C8B157EA336XX959: // uid:f::::1388511201::67D5B96DC564598D4D4D9E0E89F5B83C9931A154::Joe Fox : // sig:::1:C8B157EA336XX959:2299509307::::Joe Fox :13x:::::2: // sub:e:2048:1:B214734F0F5C7041:1316219469:1199912694:::::e: // sub:f:2048:1:70E7A471DABE08B0:1316221524:1546189300:::::s: const lineTokens = lineArr[i].split(/:/); switch (lineTokens[ENTRY_ID]) { case "pub": if (havePub) { return listObj; } havePub = true; keyId = lineTokens[KEY_ID]; break; case "fpr": if (fpr === "") fpr = lineTokens[USERID_ID]; break; case "uid": case "uat": currUid = lineTokens[UID_ID]; listObj[currUid] = { userId: lineTokens[ENTRY_ID] == "uat" ? EnigmailLocale.getString("keyring.photo") : EnigmailData.convertGpgToUnicode(lineTokens[USERID_ID]), rawUserId: lineTokens[USERID_ID], keyId: keyId, fpr: fpr, created: EnigmailTime.getDateTime(lineTokens[CREATED_ID], true, false), sigList: [] }; break; case "sig": if (lineTokens[SIG_TYPE_ID].substr(0, 2).toLowerCase() !== "1f") { // ignrore revoked signature let sig = { userId: EnigmailData.convertGpgToUnicode(lineTokens[USERID_ID]), created: EnigmailTime.getDateTime(lineTokens[CREATED_ID], true, false), signerKeyId: lineTokens[KEY_ID], sigType: lineTokens[SIG_TYPE_ID], sigKnown: lineTokens[USERID_ID] != UNKNOWN_SIGNATURE }; if (!ignoreUnknownUid || sig.userId != UNKNOWN_SIGNATURE) { listObj[currUid].sigList.push(sig); } } break; } } return listObj; } /** * Create a list of objects representing the keys in a key list * * @keyListString: array of |string| formatted output from GnuPG for key listing * @keyListObj: |object| holding the resulting key list: * obj.keyList: Array holding key objects * obj.keySortList: Array holding values to make sorting easier * * no return value */ function createKeyObjects(keyListString, keyListObj) { keyListObj.keyList = []; keyListObj.keySortList = []; keyListObj.trustModel = "?"; let keyObj = {}; let uatNum = 0; // counter for photos (counts per key) let numKeys = 0; const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); for (let i = 0; i < keyListString.length; i++) { const listRow = keyListString[i].split(/:/); if (listRow.length >= 0) { switch (listRow[ENTRY_ID]) { case "pub": keyObj = new KeyObject(listRow); uatNum = 0; ++numKeys; keyListObj.keyList.push(keyObj); break; case "fpr": // only take first fpr line, this is the fingerprint of the primary key and what we want if (keyObj.fpr === "") { keyObj.fpr = listRow[USERID_ID]; } break; case "uid": if (listRow[USERID_ID].length === 0) { listRow[USERID_ID] = "-"; } if (typeof(keyObj.userId) !== "string") { keyObj.userId = EnigmailData.convertGpgToUnicode(listRow[USERID_ID]); keyListObj.keySortList.push({ userId: keyObj.userId.toLowerCase(), keyId: keyObj.keyId, keyNum: numKeys - 1 }); if (TRUSTLEVELS_SORTED.indexOf(listRow[KEY_TRUST_ID]) < TRUSTLEVELS_SORTED.indexOf(keyObj.keyTrust)) { // reduce key trust if primary UID is less trusted than public key keyObj.keyTrust = listRow[KEY_TRUST_ID]; } } keyObj.userIds.push({ userId: EnigmailData.convertGpgToUnicode(listRow[USERID_ID]), keyTrust: listRow[KEY_TRUST_ID], uidFpr: listRow[UID_ID], type: "uid" }); break; case "sub": keyObj.subKeys.push({ keyId: listRow[KEY_ID], expiry: EnigmailTime.getDateTime(listRow[EXPIRY_ID], true, false), expiryTime: Number(listRow[EXPIRY_ID]), keyTrust: listRow[KEY_TRUST_ID], keyUseFor: listRow[KEY_USE_FOR_ID], keySize: listRow[KEY_SIZE_ID], algorithm: listRow[KEY_ALGO_ID], created: EnigmailTime.getDateTime(listRow[CREATED_ID], true, false), type: "sub" }); break; case "uat": if (listRow[USERID_ID].indexOf("1 ") === 0) { const userId = EnigmailLocale.getString("userAtt.photo"); keyObj.userIds.push({ userId: userId, keyTrust: listRow[KEY_TRUST_ID], uidFpr: listRow[UID_ID], type: "uat", uatNum: uatNum }); keyObj.photoAvailable = true; ++uatNum; } break; case "tru": keyListObj.trustModel = "?"; if (listRow[KEY_TRUST_ID].indexOf("t") >= 0) { switch (listRow[KEY_SIZE_ID]) { case "0": keyListObj.trustModel = "p"; break; case "1": keyListObj.trustModel = "t"; break; case "6": keyListObj.trustModel = "TP"; break; case "7": keyListObj.trustModel = "T"; break; } } else { if (listRow[KEY_SIZE_ID] === "0") { keyListObj.trustModel = "a"; } } } } } } function createAndSortKeyList(aGpgUserList, aGpgSecretsList, sortColumn, sortDirection) { EnigmailLog.DEBUG("keyRing.jsm: createAndSortKeyList()\n"); if (typeof sortColumn !== "string") sortColumn = "userid"; if (!sortDirection) sortDirection = 1; createKeyObjects(aGpgUserList, gKeyListObj); // create a hash-index on key ID (8 and 16 characters and fingerprint) // in a single array EnigmailKeyRing.rebuildKeyIndex(); // search and mark keys that have secret keys for (let i = 0; i < aGpgSecretsList.length; i++) { let listRow = aGpgSecretsList[i].split(/:/); if (listRow.length >= 0) { if (listRow[ENTRY_ID] == "sec") { let k = EnigmailKeyRing.getKeyById(listRow[KEY_ID]); if (k && typeof(k) === "object") { k.secretAvailable = true; } } } } gKeyListObj.keySortList.sort(getSortFunction(sortColumn.toLowerCase(), gKeyListObj, sortDirection)); } /************************ IMPLEMENTATION of KeyObject ************************/ function KeyObject(lineArr) { if (lineArr[ENTRY_ID] === "pub") { this.keyId = lineArr[KEY_ID]; this.expiry = EnigmailTime.getDateTime(lineArr[EXPIRY_ID], true, false); this.expiryTime = Number(lineArr[EXPIRY_ID]); this.created = EnigmailTime.getDateTime(lineArr[CREATED_ID], true, false); this.keyTrust = lineArr[KEY_TRUST_ID]; this.keyUseFor = lineArr[KEY_USE_FOR_ID]; this.ownerTrust = lineArr[OWNERTRUST_ID]; this.algorithm = lineArr[KEY_ALGO_ID]; this.keySize = lineArr[KEY_SIZE_ID]; } else { this.keyId = ""; this.expiry = ""; this.expiryTime = 0; this.created = ""; this.keyTrust = ""; this.keyUseFor = ""; this.ownerTrust = ""; this.algorithm = ""; this.keySize = ""; } this.type = lineArr[ENTRY_ID]; this.userIds = []; this.subKeys = []; this.fpr = ""; this.photoAvailable = false; this.secretAvailable = false; this._sigList = null; } KeyObject.prototype = { /** * gettter that returns a list of all signatures found on the key * * @return Array of Object, or null in case of error: * - uid * - uidLabel * - creationDate * - sigList: Array of object: { uid, creationDate, signerKeyId, sigType } */ get signatures() { if (this._sigList === null) { let exitCodeObj = {}, errorMsgObj = {}; let r = getKeySig(this.keyId, exitCodeObj, errorMsgObj); if (r.length > 0) { this._sigList = extractSignatures(r, false); } } return this._sigList; }, /** * create a copy of the object */ clone: function() { let cp = new KeyObject(["copy"]); for (let i in this) { if (i !== "signatures" && i !== "fprFormatted") { // caution: don't try to evaluate this[i] if i==="signatures"; // it would immediately get all signatures for the key (slow!) if (typeof this[i] !== "function") { if (typeof this[i] === "object") { cp[i] = EnigmailFuncs.cloneObj(this[i]); } else cp[i] = this[i]; } } } return cp; }, /** * Does the key have secondary user IDs? * * @return: Boolean - true if yes; false if no */ hasSubUserIds: function() { let nUid = 0; for (let i in this.userIds) { if (this.userIds[i].type === "uid") ++nUid; } return nUid >= 2; }, /** * Get a formatted version of the fingerprint: * 1234 5678 90AB CDEF .... .... * * @return String - the formatted fingerprint */ get fprFormatted() { let f = EnigmailKey.formatFpr(this.fpr); if (f.length === 0) f = this.fpr; return f; }, /** * Determine if the public key is valid. If not, return a description why it's not * * @return Object: * - keyValid: Boolean (true if key is valid) * - reason: String (explanation of invalidity) */ getPubKeyValidity: function() { let retVal = { keyValid: false, reason: "" }; if (this.keyTrust.search(/r/i) >= 0) { // public key revoked retVal.reason = EnigmailLocale.getString("keyRing.pubKeyRevoked", [this.userId, "0x" + this.keyId]); } else if (this.keyTrust.search(/e/i) >= 0) { // public key expired retVal.reason = EnigmailLocale.getString("keyRing.pubKeyExpired", [this.userId, "0x" + this.keyId]); } else if (this.keyTrust.search(/d/i) >= 0 || this.keyUseFor.search(/D/i) >= 0) { // public key disabled retVal.reason = EnigmailLocale.getString("keyRing.keyDisabled", [this.userId, "0x" + this.keyId]); } else if (this.keyTrust.search(/i/i) >= 0) { // public key invalid retVal.reason = EnigmailLocale.getString("keyRing.keyInvalid", [this.userId, "0x" + this.keyId]); } else retVal.keyValid = true; return retVal; }, /** * Check whether a key can be used for signing and return a description of why not * * @return Object: * - keyValid: Boolean (true if key is valid) * - reason: String (explanation of invalidity) */ getSigningValidity: function() { let retVal = this.getPubKeyValidity(); if (!retVal.keyValid) return retVal; if (!this.secretAvailable) { retVal.reason = EnigmailLocale.getString("keyRing.noSecretKey", [this.userId, "0x" + this.keyId]); retVal.keyValid = false; } else if (this.keyUseFor.search(/S/) < 0) { retVal.keyValid = false; if (this.keyTrust.search(/u/i) < 0) { // public key invalid retVal.reason = EnigmailLocale.getString("keyRing.keyNotTrusted", [this.userId, "0x" + this.keyId]); } else { let expired = 0, revoked = 0, unusable = 0, found = 0; // public key is valid; check for signing subkeys for (let sk in this.subKeys) { if (this.subKeys[sk].keyUseFor.search(/[sS]/) >= 0) { // found subkey usable for signing ++found; if (this.subKeys[sk].keyTrust.search(/e/i) >= 0) ++expired; if (this.subKeys[sk].keyTrust.search(/r/i) >= 0) ++revoked; if (this.subKeys[sk].keyTrust.search(/[di\-]/i) >= 0 || this.subKeys[sk].keyUseFor.search(/D/) >= 0) ++unusable; } } if (found > 0 && (expired > 0 || revoked > 0)) { if (found === expired) { retVal.reason = EnigmailLocale.getString("keyRing.signSubKeysExpired", [this.userId, "0x" + this.keyId]); } else if (found === revoked) { retVal.reason = EnigmailLocale.getString("keyRing.signSubKeysRevoked", [this.userId, "0x" + this.keyId]); } else { retVal.reason = EnigmailLocale.getString("keyRing.signSubKeysUnusable", [this.userId, "0x" + this.keyId]); } } else retVal.reason = EnigmailLocale.getString("keyRing.pubKeyNotForSigning", [this.userId, "0x" + this.keyId]); } } return retVal; }, /** * Check whether a key can be used for encryption and return a description of why not * * @return Object: * - keyValid: Boolean (true if key is valid) * - reason: String (explanation of invalidity) */ getEncryptionValidity: function() { let retVal = this.getPubKeyValidity(); if (!retVal.keyValid) return retVal; if (this.keyUseFor.search(/E/) < 0) { retVal.keyValid = false; if (this.keyTrust.search(/u/i) < 0) { // public key invalid retVal.reason = EnigmailLocale.getString("keyRing.keyNotTrusted", [this.userId, "0x" + this.keyId]); } else { let expired = 0, revoked = 0, unusable = 0, found = 0; // public key is valid; check for signing subkeys for (let sk in this.subKeys) { if (this.subKeys[sk].keyUseFor.search(/[eE]/) >= 0) { // found subkey usable for signing ++found; if (this.subKeys[sk].keyTrust.search(/e/i) >= 0) ++expired; if (this.subKeys[sk].keyTrust.search(/r/i) >= 0) ++revoked; if (this.subKeys[sk].keyTrust.search(/[di\-]/i) >= 0 || this.subKeys[sk].keyUseFor.search(/D/) >= 0) ++unusable; } } if (found > 0 && (expired > 0 || revoked > 0)) { if (found === expired) { retVal.reason = EnigmailLocale.getString("keyRing.encSubKeysExpired", [this.userId, "0x" + this.keyId]); } else if (found === revoked) { retVal.reason = EnigmailLocale.getString("keyRing.encSubKeysRevoked", [this.userId, "0x" + this.keyId]); } else { retVal.reason = EnigmailLocale.getString("keyRing.encSubKeysUnusable", [this.userId, "0x" + this.keyId]); } } else retVal.reason = EnigmailLocale.getString("keyRing.pubKeyNotForEncryption", [this.userId, "0x" + this.keyId]); } } return retVal; }, /** * Determine the next expiry date of the key. This is either the public key expiry date, * or the maximum expiry date of a signing or encryption subkey. I.e. this returns the next * date at which the key cannot be used for signing and/or encryption anymore * * @return Number - The expiry date as seconds after 01/01/1970 */ getKeyExpiry: function() { let expiryDate = Number.MAX_VALUE; let encryption = -1; let signing = -1; // check public key expiry date if (this.expiryTime > 0) { expiryDate = this.expiryTime; } for (let sk in this.subKeys) { if (this.subKeys[sk].keyUseFor.search(/[eE]/) >= 0) { let expiry = this.subKeys[sk].expiryTime; if (expiry === 0) expiry = Number.MAX_VALUE; encryption = Math.max(encryption, expiry); } else if (this.subKeys[sk].keyUseFor.search(/[sS]/) >= 0) { let expiry = this.subKeys[sk].expiryTime; if (expiry === 0) expiry = Number.MAX_VALUE; signing = Math.max(signing, expiry); } } if (expiryDate > encryption) { if (this.keyUseFor.search(/[eE]/) < 0) { expiryDate = encryption; } } if (expiryDate > signing) { if (this.keyUseFor.search(/[Ss]/) < 0) { expiryDate = signing; } } return expiryDate; } }; EnigmailKeyRing.clearCache(); enigmail/package/keyserver.jsm000066400000000000000000000114501266701624400170010ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailKeyServer"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/httpProxy.jsm"); /*global EnigmailHttpProxy: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ const nsIEnigmail = Ci.nsIEnigmail; const EnigmailKeyServer = { /** * search, download or upload key on, from or to a keyserver * * @actionFlags: Integer - flags (bitmap) to determine the required action * (see nsIEnigmail - Keyserver action flags for details) * @keyserver: String - keyserver URL (optionally incl. protocol) * @searchTerms: String - space-separated list of search terms or key IDs * @listener: Object - execStart Listener Object. See execStart for details. * @errorMsgObj: Object - object to hold error message in .value * * @return: Subprocess object, or null in case process could not be started */ access: function(actionFlags, keyserver, searchTerms, listener, errorMsgObj) { EnigmailLog.DEBUG("keyserver.jsm: access: " + searchTerms + "\n"); if (!keyserver) { errorMsgObj.value = EnigmailLocale.getString("failNoServer"); return null; } if (!searchTerms && !(actionFlags & nsIEnigmail.REFRESH_KEY)) { errorMsgObj.value = EnigmailLocale.getString("failNoID"); return null; } const proxyHost = EnigmailHttpProxy.getHttpProxy(keyserver); let args = EnigmailGpg.getStandardArgs(true); if (actionFlags & nsIEnigmail.SEARCH_KEY) { args = EnigmailGpg.getStandardArgs(false). concat(["--command-fd", "0", "--fixed-list", "--with-colons"]); } if (proxyHost) { args = args.concat(["--keyserver-options", "http-proxy=" + proxyHost]); } args = args.concat(["--keyserver", keyserver.trim()]); // if (actionFlags & nsIEnigmail.SEARCH_KEY | nsIEnigmail.DOWNLOAD_KEY | nsIEnigmail.REFRESH_KEY) { // args = args.concat(["--command-fd", "0", "--fixed-list", "--with-colons"]); // } let inputData = null; const searchTermsList = searchTerms.split(" "); if (actionFlags & nsIEnigmail.DOWNLOAD_KEY) { args.push("--recv-keys"); args = args.concat(searchTermsList); } else if (actionFlags & nsIEnigmail.REFRESH_KEY) { args.push("--refresh-keys"); } else if (actionFlags & nsIEnigmail.SEARCH_KEY) { args.push("--search-keys"); args = args.concat(searchTermsList); inputData = "quit\n"; } else if (actionFlags & nsIEnigmail.UPLOAD_KEY) { args.push("--send-keys"); args = args.concat(searchTermsList); } const isDownload = actionFlags & (nsIEnigmail.REFRESH_KEY | nsIEnigmail.DOWNLOAD_KEY); EnigmailLog.CONSOLE("enigmail> " + EnigmailFiles.formatCmdLine(EnigmailGpgAgent.agentPath, args) + "\n"); let proc = null; let exitCode = null; try { proc = subprocess.call({ command: EnigmailGpgAgent.agentPath, arguments: args, environment: EnigmailCore.getEnvList(), charset: null, stdin: inputData, stdout: function(data) { listener.stdout(data); }, stderr: function(data) { if (data.search(/^\[GNUPG:\] ERROR/m) >= 0) { exitCode = 4; } listener.stderr(data); }, done: function(result) { try { if (result.exitCode === 0 && isDownload) { EnigmailKeyRing.clearCache(); } if (exitCode === null) { exitCode = result.exitCode; } listener.done(exitCode); } catch (ex) {} }, mergeStderr: false }); } catch (ex) { EnigmailLog.ERROR("keyserver.jsm: access: subprocess.call failed with '" + ex.toString() + "'\n"); throw ex; } if (!proc) { EnigmailLog.ERROR("keyserver.jsm: access: subprocess failed due to unknown reasons\n"); return null; } return proc; } }; enigmail/package/lazy.jsm000066400000000000000000000011371266701624400157420ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailLazy"]; const EnigmailLazy = { loader: function(component, name) { let holder = null; return function() { if (!holder) { const into = {}; Components.utils.import("resource://" + component, into); holder = into[name]; } return holder; }; } }; enigmail/package/locale.jsm000066400000000000000000000035361266701624400162270ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, EnigmailOS: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailLocale"]; Components.utils.import("resource://enigmail/log.jsm"); const Cc = Components.classes; const Ci = Components.interfaces; var enigStringBundle = null; const LOCALE_SVC_CONTRACTID = "@mozilla.org/intl/nslocaleservice;1"; const EnigmailLocale = { get: function() { return Cc[LOCALE_SVC_CONTRACTID].getService(Ci.nsILocaleService).getApplicationLocale(); }, // retrieves a localized string from the enigmail.properties stringbundle getString: function(aStr, subPhrases) { if (!enigStringBundle) { try { var strBundleService = Cc["@mozilla.org/intl/stringbundle;1"].getService(); strBundleService = strBundleService.QueryInterface(Ci.nsIStringBundleService); enigStringBundle = strBundleService.createBundle("chrome://enigmail/locale/enigmail.properties"); } catch (ex) { EnigmailLog.ERROR("locale.jsm: Error in instantiating stringBundleService\n"); } } if (enigStringBundle) { try { if (subPhrases) { if (typeof(subPhrases) == "string") { return enigStringBundle.formatStringFromName(aStr, [subPhrases], 1); } else { return enigStringBundle.formatStringFromName(aStr, subPhrases, subPhrases.length); } } else { return enigStringBundle.GetStringFromName(aStr); } } catch (ex) { EnigmailLog.ERROR("locale.jsm: Error in querying stringBundleService for string '" + aStr + "'\n"); } } return aStr; } }; enigmail/package/log.jsm000066400000000000000000000111271266701624400155440ustar00rootroot00000000000000/*global Components: false, EnigmailConsole: false, dump: false, EnigmailFiles: false, EnigmailOS: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailLog"]; Components.utils.import("resource://enigmail/pipeConsole.jsm"); Components.utils.import("resource://enigmail/files.jsm"); Components.utils.import("resource://enigmail/os.jsm"); const Cc = Components.classes; const Ci = Components.interfaces; const XPCOM_APPINFO = "@mozilla.org/xre/app-info;1"; const NS_IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; const EnigmailLog = { level: 3, data: null, directory: null, fileStream: null, setLogLevel: function(newLogLevel) { EnigmailLog.level = newLogLevel; }, getLogLevel: function() { return EnigmailLog.level; }, setLogDirectory: function(newLogDirectory) { EnigmailLog.directory = newLogDirectory + (EnigmailOS.isDosLike() ? "\\" : "/"); EnigmailLog.createLogFiles(); }, createLogFiles: function() { if (EnigmailLog.directory && (!EnigmailLog.fileStream) && EnigmailLog.level >= 5) { EnigmailLog.fileStream = EnigmailFiles.createFileStream(EnigmailLog.directory + "enigdbug.txt"); } }, onShutdown: function() { if (EnigmailLog.fileStream) { EnigmailLog.fileStream.close(); } EnigmailLog.fileStream = null; }, getLogData: function(version, prefs) { let ioServ = Cc[NS_IOSERVICE_CONTRACTID].getService(Ci.nsIIOService); let oscpu = ""; let platform = ""; try { let httpHandler = ioServ.getProtocolHandler("http"); httpHandler = httpHandler.QueryInterface(Ci.nsIHttpProtocolHandler); oscpu = httpHandler.oscpu; platform = httpHandler.platform; } catch (ex) {} let data = "Enigmail version " + version + "\n" + "OS/CPU=" + oscpu + "\n" + "Platform=" + platform + "\n" + "Non-default preference values:\n"; let p = prefs.getPrefBranch().getChildList(""); for (let i in p) { if (prefs.getPrefBranch().prefHasUserValue(p[i])) { data += p[i] + ": " + prefs.getPref(p[i]) + "\n"; } } return data + "\n" + EnigmailLog.data; }, WRITE: function(str) { function withZeroes(val, digits) { return ("0000" + val.toString()).substr(-digits); } var d = new Date(); var datStr = d.getFullYear() + "-" + withZeroes(d.getMonth() + 1, 2) + "-" + withZeroes(d.getDate(), 2) + " " + withZeroes(d.getHours(), 2) + ":" + withZeroes(d.getMinutes(), 2) + ":" + withZeroes(d.getSeconds(), 2) + "." + withZeroes(d.getMilliseconds(), 3) + " "; if (EnigmailLog.level >= 4) dump(datStr + str); if (EnigmailLog.data === null) { EnigmailLog.data = ""; let appInfo = Cc[XPCOM_APPINFO].getService(Ci.nsIXULAppInfo); EnigmailLog.WRITE("Mozilla Platform: " + appInfo.name + " " + appInfo.version + "\n"); } // truncate first part of log data if it grow too much if (EnigmailLog.data.length > 5120000) { EnigmailLog.data = EnigmailLog.data.substr(-400000); } EnigmailLog.data += datStr + str; if (EnigmailLog.fileStream) { EnigmailLog.fileStream.write(datStr, datStr.length); EnigmailLog.fileStream.write(str, str.length); } }, DEBUG: function(str) { EnigmailLog.WRITE("[DEBUG] " + str); }, WARNING: function(str) { EnigmailLog.WRITE("[WARN] " + str); EnigmailConsole.write(str); }, ERROR: function(str) { try { var consoleSvc = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService); var scriptError = Cc["@mozilla.org/scripterror;1"].createInstance(Ci.nsIScriptError); scriptError.init(str, null, null, 0, 0, scriptError.errorFlag, "Enigmail"); consoleSvc.logMessage(scriptError); } catch (ex) {} EnigmailLog.WRITE("[ERROR] " + str); }, CONSOLE: function(str) { if (EnigmailLog.level >= 3) { EnigmailLog.WRITE("[CONSOLE] " + str); } EnigmailConsole.write(str); }, /** * Log an exception including the stack trace * * referenceInfo: String - arbitraty text to write before the exception is logged * ex: exception object */ writeException: function(referenceInfo, ex) { EnigmailLog.ERROR(referenceInfo + ": caught exception: " + ex.name + "\n" + "Message: '" + ex.message + "'\n" + "File: " + ex.fileName + "\n" + "Line: " + ex.lineNumber + "\n" + "Stack: " + ex.stack + "\n"); } }; enigmail/package/mime.jsm000066400000000000000000000171721266701624400157200ustar00rootroot00000000000000/*global Components: false, escape: false, btoa: false*/ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailMime"]; const Cc = Components.classes; const Ci = Components.interfaces; Components.utils.import("resource://gre/modules/jsmime.jsm"); /*global jsmime: false*/ Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ const EnigmailMime = { /*** * create a string of random characters suitable to use for a boundary in a * MIME message following RFC 2045 * * @return: string of 33 random characters and digits */ createBoundary: function() { let b = ""; let r = 0; for (let i = 0; i < 33; i++) { r = Math.floor(Math.random() * 58); b += String.fromCharCode((r < 10 ? 48 : (r < 34 ? 55 : 63)) + r); } return b; }, /*** * determine the "boundary" part of a mail content type. * * @contentTypeStr: the string containing all parts of a content-type. * (e.g. multipart/mixed; boundary="xyz") --> returns "xyz" * * @return: String containing the boundary parameter; or null */ getBoundary: function(contentTypeStr) { contentTypeStr = contentTypeStr.replace(/[\r\n]/g, ""); let boundary = ""; let ct = contentTypeStr.split(/;/); for (let i = 0; i < ct.length; i++) { if (ct[i].search(/[ \t]*boundary[ \t]*=/i) >= 0) { boundary = ct[i]; break; } } boundary = boundary.replace(/\s*boundary\s*=/i, "").replace(/[\'\"]/g, ""); return boundary; }, /*** * determine the "charset" part of a mail content type. * * @contentTypeStr: the string containing all parts of a content-type. * (e.g. multipart/mixed; charset="utf-8") --> returns "utf-8" * * @return: String containing the charset parameter; or null */ getCharset: function(contentTypeStr) { contentTypeStr = contentTypeStr.replace(/[\r\n]/g, ""); let boundary = ""; let ct = contentTypeStr.split(/;/); for (let i = 0; i < ct.length; i++) { if (ct[i].search(/[ \t]*charset[ \t]*=/i) >= 0) { boundary = ct[i]; break; } } boundary = boundary.replace(/\s*charset\s*=/i, "").replace(/[\'\"]/g, ""); return boundary; }, /** * Convert a MIME header value into a UTF-8 encoded representation following RFC 2047 */ encodeHeaderValue: function(aStr) { let ret = ""; if (aStr.search(/[^\x01-\x7F]/) >= 0) { let s = EnigmailData.convertFromUnicode(aStr, "utf-8"); ret = "=?UTF-8?B?" + btoa(s) + "?="; } else { ret = aStr; } return ret; }, /** * format MIME header with maximum length of 72 characters. */ formatHeaderData: function(hdrValue) { let header; if (Array.isArray(hdrValue)) { header = hdrValue.join("").split(" "); } else { header = hdrValue.split(" "); } let line = ""; let lines = []; for (let i = 0; i < header.length; i++) { if (line.length + header[i].length >= 72) { lines.push(line + "\r\n"); line = " " + header[i]; } else { line += " " + header[i]; } } lines.push(line); return lines.join("").trim(); }, /** * Correctly encode and format a set of email addresses for RFC 2047 */ formatEmailAddress: function(addressData) { const adrArr = addressData.split(/, */); for (let i in adrArr) { try { const m = adrArr[i].match(/(.*[\w\s]+?)<([\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4})>/); if (m && m.length == 3) { adrArr[i] = this.encodeHeaderValue(m[1]) + " <" + m[2] + ">"; } } catch (ex) {} } return adrArr.join(", "); }, /*** * determine if the message data contains a first mime part with content-type = "text/rfc822-headers" * if so, extract the corresponding field(s) */ extractProtectedHeaders: function(contentData) { // quick return if (contentData.search(/text\/rfc822-headers/i) < 0) { return null; } // find first MIME delimiter. Anything before that delimiter is the top MIME structure let m = contentData.search(/^--/m); if (m < 5) { return null; } let protectedHdr = ["subject", "date", "from", "to", "cc", "reply-to", "references", "newsgroups", "followup-to", "message-id" ]; let newHeaders = {}; // read headers of first MIME part and extract the boundary parameter let outerHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); outerHdr.initialize(contentData.substr(0, m)); let ct = outerHdr.extractHeader("content-type", false) || ""; if (ct === "") return null; let bound = EnigmailMime.getBoundary(ct); if (bound === "") return null; // search for "outer" MIME delimiter(s) let r = new RegExp("^--" + bound, "mg"); let startPos = -1; let endPos = -1; // 1st match: start of 1st MIME-subpart let match = r.exec(contentData); if (match && match.index) { startPos = match.index; } // 2nd match: end of 1st MIME-subpart match = r.exec(contentData); if (match && match.index) { endPos = match.index; } if (startPos < 0 || endPos < 0) return null; let headers = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); headers.initialize(contentData.substring(0, startPos)); for (let i in protectedHdr) { if (headers.hasHeader(protectedHdr[i])) { newHeaders[protectedHdr[i]] = jsmime.headerparser.decodeRFC2047Words(headers.extractHeader(protectedHdr[i], true)) || undefined; } } // contentBody holds the complete 1st MIME part let contentBody = contentData.substring(startPos + bound.length + 3, endPos); let i = contentBody.search(/^[A-Za-z]/m); // skip empty lines if (i > 0) { contentBody = contentBody.substr(i); } headers.initialize(contentBody); let innerCt = headers.extractHeader("content-type", false) || ""; if (innerCt.search(/^text\/rfc822-headers/i) === 0) { let charset = EnigmailMime.getCharset(innerCt); let ctt = headers.extractHeader("content-transfer-encoding", false) || ""; // determine where the headers end and the MIME-subpart body starts let bodyStartPos = contentBody.search(/\r?\n\s*\r?\n/) + 1; if (bodyStartPos < 10) return null; bodyStartPos += contentBody.substr(bodyStartPos).search(/^[A-Za-z]/m); let ctBodyData = contentBody.substr(bodyStartPos); if (ctt.search(/^base64/i) === 0) { ctBodyData = EnigmailData.decodeBase64(ctBodyData) + "\n"; } else if (ctt.search(/^quoted-printable/i) === 0) { ctBodyData = EnigmailData.decodeQuotedPrintable(ctBodyData) + "\n"; } if (charset) { ctBodyData = EnigmailData.convertToUnicode(ctBodyData, charset); } // get the headers of the MIME-subpart body --> that's the ones we need let bodyHdr = Cc["@mozilla.org/messenger/mimeheaders;1"].createInstance(Ci.nsIMimeHeaders); bodyHdr.initialize(ctBodyData); for (let i in protectedHdr) { if (bodyHdr.hasHeader(protectedHdr[i])) { newHeaders[protectedHdr[i]] = jsmime.headerparser.decodeRFC2047Words(bodyHdr.extractHeader(protectedHdr[i], true)) || undefined; } } } else { startPos = -1; endPos = -1; } return { newHeaders: newHeaders, startPos: startPos, endPos: endPos, securityLevel: 0 }; } }; enigmail/package/mimeDecrypt.jsm000066400000000000000000000347351266701624400172570ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailMimeDecrypt"]; /** * Module for handling PGP/MIME encrypted messages * implemented as an XPCOM object */ Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Components.utils.import("resource://enigmail/mimeVerify.jsm"); /*global EnigmailVerify: false */ Components.utils.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Components.utils.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Components.utils.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Components.utils.import("resource://enigmail/decryption.jsm"); /*global EnigmailDecryption: false */ Components.utils.import("resource://enigmail/mime.jsm"); /*global EnigmailMime: false */ Components.utils.import("resource://enigmail/constants.jsm"); /*global EnigmailConstants: false */ const Cc = Components.classes; const Ci = Components.interfaces; const APPSHELL_MEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1"; const PGPMIME_JS_DECRYPTOR_CONTRACTID = "@mozilla.org/mime/pgp-mime-js-decrypt;1"; const PGPMIME_JS_DECRYPTOR_CID = Components.ID("{7514cbeb-2bfd-4b2c-829b-1a4691fa0ac8}"); const ENCODING_DEFAULT = 0; const ENCODING_BASE64 = 1; const ENCODING_QP = 2; const maxBufferLen = 102400; var gDebugLogLevel = 0; var gConv = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream); var gNumProc = 0; //////////////////////////////////////////////////////////////////// // handler for PGP/MIME encrypted messages // data is processed from libmime -> nsPgpMimeProxy function EnigmailMimeDecrypt() { EnigmailLog.DEBUG("mimeDecrypt.jsm: EnigmailMimeDecrypt()\n"); // always log this one this.mimeSvc = null; this.initOk = false; this.boundary = ""; this.pipe = null; this.closePipe = false; this.statusStr = ""; this.outQueue = ""; this.dataLength = 0; this.mimePartCount = 0; this.headerMode = 0; this.xferEncoding = ENCODING_DEFAULT; this.matchedPgpDelimiter = 0; this.exitCode = null; this.msgWindow = null; this.msgUriSpec = null; this.returnStatus = null; this.proc = null; this.statusDisplayed = false; this.uri = null; this.backgroundJob = false; this.decryptedHeaders = {}; this.mimePartNumber = ""; } EnigmailMimeDecrypt.prototype = { inStream: Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream), onStartRequest: function(request, uri) { if (!EnigmailCore.getService()) // Ensure Enigmail is initialized return; EnigmailLog.DEBUG("mimeDecrypt.jsm: onStartRequest\n"); // always log this one ++gNumProc; if (gNumProc > 2) { EnigmailLog.DEBUG("mimeDecrypt.jsm: number of parallel requests above threshold - ignoring requst\n"); return; } this.initOk = true; this.mimeSvc = request.QueryInterface(Ci.nsIPgpMimeProxy); if ("mimePart" in this.mimeSvc) { this.mimePartNumber = this.mimeSvc.mimePart; } else { this.mimePartNumber = ""; } this.pipe = null; this.closePipe = false; this.exitCode = null; this.msgWindow = EnigmailVerify.lastMsgWindow; this.msgUriSpec = EnigmailVerify.lastMsgUri; this.statusDisplayed = false; this.returnStatus = null; this.dataLength = 0; this.decryptedData = ""; this.mimePartCount = 0; this.matchedPgpDelimiter = 0; this.outQueue = ""; this.statusStr = ""; this.headerMode = 0; this.decryptedHeaders = {}; this.xferEncoding = ENCODING_DEFAULT; this.boundary = EnigmailMime.getBoundary(this.mimeSvc.contentType); if (uri) { this.uri = uri.QueryInterface(Ci.nsIURI).clone(); EnigmailLog.DEBUG("mimeDecrypt.jsm: onStartRequest: uri='" + this.uri.spec + "'\n"); } }, onDataAvailable: function(req, sup, stream, offset, count) { // get data from libmime if (!this.initOk) return; this.inStream.init(stream); if (count > 0) { var data = this.inStream.read(count); // detect MIME part boundary if (data.indexOf(this.boundary) >= 0) { LOCAL_DEBUG("mimeDecrypt.jsm: onDataAvailable: found boundary\n"); ++this.mimePartCount; this.headerMode = 1; return; } // found PGP/MIME "body" if (this.mimePartCount == 2) { if (this.headerMode == 1) { // we are in PGP/MIME main part headers if (data.search(/\r|\n/) === 0) { // end of Mime-part headers reached this.headerMode = 2; return; } else { if (data.search(/^content-transfer-encoding:\s*/i) >= 0) { // extract content-transfer-encoding data = data.replace(/^content-transfer-encoding:\s*/i, ""); data = data.replace(/;.*/, "").toLowerCase().trim(); if (data.search(/base64/i) >= 0) { this.xferEncoding = ENCODING_BASE64; } else if (data.search(/quoted-printable/i) >= 0) { this.xferEncoding = ENCODING_QP; } } } } else { // PGP/MIME main part body if (this.xferEncoding == ENCODING_QP) { this.cacheData(EnigmailData.decodeQuotedPrintable(data)); } else { this.cacheData(data); } } } } }, // cache encrypted data for writing to subprocess cacheData: function(str) { if (gDebugLogLevel > 4) LOCAL_DEBUG("mimeDecrypt.jsm: cacheData: " + str.length + "\n"); this.outQueue += str; }, flushInput: function() { LOCAL_DEBUG("mimeDecrypt.jsm: flushInput: " + this.outQueue.length + " bytes\n"); if (!this.pipe) { LOCAL_DEBUG("mimeDecrypt.jsm: flushInput: no pipe\n"); return; } this.pipe.write(this.outQueue); this.outQueue = ""; }, onStopRequest: function(request, win, status) { LOCAL_DEBUG("mimeDecrypt.jsm: onStopRequest\n"); --gNumProc; if (!this.initOk) return; this.msgWindow = EnigmailVerify.lastMsgWindow; this.msgUriSpec = EnigmailVerify.lastMsgUri; let url = {}; this.backgroundJob = false; if (this.uri) { // return if not decrypting currently displayed message (except if // printing, replying, etc) this.backgroundJob = (this.uri.spec.search(/[\&\?]header=(print|quotebody|enigmailConvert)/) >= 0); try { var messenger = Cc["@mozilla.org/messenger;1"].getService(Ci.nsIMessenger); if (!EnigmailPrefs.getPref("autoDecrypt")) { // "decrypt manually" mode let manUrl = {}; if (EnigmailVerify.getManualUri()) { let msgSvc = messenger.messageServiceFromURI(EnigmailVerify.getManualUri()); msgSvc.GetUrlForUri(EnigmailVerify.getManualUri(), manUrl, null); } else { manUrl.value = { spec: "enigmail://invalid/message" }; } // print a message if not message explicitly decrypted let currUrlSpec = this.uri.spec.replace(/(\?.*)(number=[0-9]*)(&.*)?$/, "?$2"); let manUrlSpec = manUrl.value.spec.replace(/(\?.*)(number=[0-9]*)(&.*)?$/, "?$2"); if ((!this.backgroundJob) && currUrlSpec.indexOf(manUrlSpec) !== 0) { this.handleManualDecrypt(); return; } } if (this.msgUriSpec) { let msgSvc = messenger.messageServiceFromURI(this.msgUriSpec); msgSvc.GetUrlForUri(this.msgUriSpec, url, null); } if (this.uri.spec.search(/[&\?]header=[^&]+/) > 0 && this.uri.spec.search(/[&\?]examineEncryptedParts=true/) < 0) { if (this.uri.spec.search(/[&\?]header=filter(&.*)?$/) > 0) { EnigmailLog.DEBUG("mimeDecrypt.jsm: onStopRequest: detected incoming message processing\n"); return; } } if (this.uri.spec.search(/[&\?]header=[^&]+/) < 0 && this.uri.spec.search(/[&\?]part=[\.0-9]+/) < 0 && this.uri.spec.search(/[&\?]examineEncryptedParts=true/) < 0) { if (this.uri && url && url.value) { if (url.value.spec != this.uri.spec) return; } } } catch (ex) { EnigmailLog.writeException("mimeDecrypt.js", ex); EnigmailLog.DEBUG("mimeDecrypt.jsm: error while processing " + this.msgUriSpec + "\n"); } } if (this.xferEncoding == ENCODING_BASE64) { this.outQueue = EnigmailData.decodeBase64(this.outQueue) + "\n"; } var statusFlagsObj = {}; var errorMsgObj = {}; var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); win = windowManager.getMostRecentWindow(null); var maxOutput = this.outQueue.length * 100; // limit output to 100 times message size // to avoid DoS attack this.proc = EnigmailDecryption.decryptMessageStart(win, false, false, this, statusFlagsObj, errorMsgObj, null, maxOutput); if (!this.proc) return; this.flushInput(); if (!this.pipe) { this.closePipe = true; } else this.pipe.close(); this.proc.wait(); this.returnStatus = {}; EnigmailDecryption.decryptMessageEnd(this.statusStr, this.exitCode, this.dataLength, false, false, Ci.nsIEnigmail.UI_PGP_MIME, this.returnStatus); this.displayStatus(); EnigmailLog.DEBUG("mimeDecrypt.jsm: onStopRequest: process terminated\n"); // always log this one this.proc = null; }, displayStatus: function() { EnigmailLog.DEBUG("mimeDecrypt.jsm: displayStatus\n"); if (this.exitCode === null || this.msgWindow === null || this.statusDisplayed) return; let uriSpec = (this.uri ? this.uri.spec : null); try { EnigmailLog.DEBUG("mimeDecrypt.jsm: displayStatus for uri " + uriSpec + "\n"); let headerSink = this.msgWindow.msgHeaderSink.securityInfo.QueryInterface(Ci.nsIEnigMimeHeaderSink); if (headerSink && this.uri && !this.backgroundJob) { headerSink.modifyMessageHeaders(this.uri, JSON.stringify(this.decryptedHeaders), this.mimePartNumber); headerSink.updateSecurityStatus( this.msgUriSpec, this.exitCode, this.returnStatus.statusFlags, this.returnStatus.keyId, this.returnStatus.userId, this.returnStatus.sigDetails, this.returnStatus.errorMsg, this.returnStatus.blockSeparation, this.uri, this.returnStatus.encToDetails, this.mimePartNumber); } this.statusDisplayed = true; } catch (ex) { EnigmailLog.writeException("mimeDecrypt.jsm", ex); } LOCAL_DEBUG("mimeDecrypt.jsm: displayStatus done\n"); }, // API for decryptMessage Listener stdin: function(pipe) { LOCAL_DEBUG("mimeDecrypt.jsm: stdin\n"); if (this.outQueue.length > 0) { pipe.write(this.outQueue); this.outQueue = ""; if (this.closePipe) pipe.close(); } this.pipe = pipe; }, stdout: function(s) { // write data back to libmime //LOCAL_DEBUG("mimeDecrypt.jsm: stdout:"+s.length+"\n"); this.dataLength += s.length; this.decryptedData += s; }, stderr: function(s) { LOCAL_DEBUG("mimeDecrypt.jsm: stderr\n"); this.statusStr += s; }, done: function(exitCode) { LOCAL_DEBUG("mimeDecrypt.jsm: done: " + exitCode + "\n"); if (gDebugLogLevel > 4) LOCAL_DEBUG("mimeDecrypt.jsm: done: decrypted data='" + this.decryptedData + "'\n"); // ensure newline at the end of the stream if (!this.decryptedData.endsWith("\n")) { this.decryptedData += "\r\n"; } var verifyData = this.decryptedData; try { this.extractEncryptedHeaders(); } catch (ex) {} var i = this.decryptedData.search(/\n\r?\n/); if (i > 0) { var hdr = this.decryptedData.substr(0, i).split(/\r?\n/); var j; for (j in hdr) { if (hdr[j].search(/^\s*content-type:\s+text\/(plain|html)/i) >= 0) { LOCAL_DEBUG("mimeDecrypt.jsm: done: adding multipart/mixed around " + hdr[j] + "\n"); let wrapper = EnigmailMime.createBoundary(); this.decryptedData = 'Content-Type: multipart/mixed; boundary="' + wrapper + '"\r\n\r\n' + '--' + wrapper + '\r\n' + this.decryptedData + '--' + wrapper + '--\r\n'; break; } } } this.returnData(this.decryptedData); this.decryptedData = ""; this.exitCode = exitCode; }, // return data to libMime returnData: function(data) { gConv.setData(data, data.length); try { this.mimeSvc.onStartRequest(null, null); this.mimeSvc.onDataAvailable(null, null, gConv, 0, data.length); this.mimeSvc.onStopRequest(null, null, 0); } catch (ex) { // EnigmailLog.ERROR("mimeDecrypt.jsm: returnData(): mimeSvc.onDataAvailable failed:\n" + ex.toString()); } }, handleManualDecrypt: function() { try { let headerSink = this.msgWindow.msgHeaderSink.securityInfo.QueryInterface(Ci.nsIEnigMimeHeaderSink); if (headerSink && this.uri && !this.backgroundJob) { headerSink.updateSecurityStatus( this.msgUriSpec, EnigmailConstants.POSSIBLE_PGPMIME, 0, "", "", "", EnigmailLocale.getString("possiblyPgpMime"), "", this.uri, null, ""); } } catch (ex) {} return 0; }, extractEncryptedHeaders: function() { let r = EnigmailMime.extractProtectedHeaders(this.decryptedData); if (!r) return; this.decryptedHeaders = r.newHeaders; if (r.startPos >= 0 && r.endPos > r.startPos) { this.decryptedData = this.decryptedData.substr(0, r.startPos) + this.decryptedData.substr(r.endPos); } } }; //////////////////////////////////////////////////////////////////// // General-purpose functions, not exported function LOCAL_DEBUG(str) { if (gDebugLogLevel) EnigmailLog.DEBUG(str); } function initModule() { var env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); var nspr_log_modules = env.get("NSPR_LOG_MODULES"); var matches = nspr_log_modules.match(/mimeDecrypt:(\d+)/); if (matches && (matches.length > 1)) { gDebugLogLevel = matches[1]; } } enigmail/package/mimeEncrypt.js000066400000000000000000000463271266701624400171140ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, EnigmailDialog: false, EnigmailFuncs: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /** * Module for creating PGP/MIME signed and/or encrypted messages * implemented as XPCOM component */ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Components.utils.import("resource://gre/modules/jsmime.jsm"); /*global jsmime: false*/ Components.utils.import("resource://enigmail/funcs.jsm"); Components.utils.import("resource://enigmail/dialog.jsm"); Components.utils.import("resource://enigmail/log.jsm"); Components.utils.import("resource://enigmail/encryption.jsm"); /*global EnigmailEncryption: false */ Components.utils.import("resource://enigmail/mime.jsm"); /*global EnigmailMime: false */ Components.utils.import("resource://enigmail/hash.jsm"); /*global EnigmailHash: false */ Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ const Cc = Components.classes; const Ci = Components.interfaces; const Cr = Components.results; const PGPMIME_JS_ENCRYPT_CONTRACTID = "@enigmail.net/enigmail/composesecure;1"; const PGPMIME_JS_ENCRYPT_CID = Components.ID("{1b040e64-e704-42b9-b05a-942e569afffc}"); const APPSHELL_MEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1"; const kMsgComposeSecureCID = "{dd753201-9a23-4e08-957f-b3616bf7e012}"; const maxBufferLen = 102400; const MIME_SIGNED = 1; const MIME_ENCRYPTED = 2; var gDebugLogLevel = 0; function PgpMimeEncrypt() {} PgpMimeEncrypt.prototype = { classDescription: "Enigmail JS Encryption Handler", classID: PGPMIME_JS_ENCRYPT_CID, contractID: PGPMIME_JS_ENCRYPT_CONTRACTID, QueryInterface: XPCOMUtils.generateQI([Ci.nsIMsgComposeSecure, Ci.nsIStreamListener, Ci.nsIEnigScriptableMsgCompose]), // private variables inStream: Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream), msgCompFields: null, smimeCompose: null, useSmime: false, outStringStream: null, inputMode: 0, dataLength: 0, headerData: "", encapsulate: null, encHeader: null, cryptoBoundary: null, win: null, pipe: null, proc: null, statusStr: "", encryptedData: "", hashAlgorithm: null, pipeQueue: "", outQueue: "", closePipe: false, cryptoMode: 0, exitCode: -1, inspector: null, checkSMime: true, // nsIStreamListener interface onStartRequest: function(request) { LOCAL_DEBUG("mimeEncrypt.js: onStartRequest\n"); this.encHeader = null; }, onDataAvailable: function(req, sup, stream, offset, count) { LOCAL_DEBUG("mimeEncrypt.js: onDataAvailable\n"); this.inStream.init(stream); var data = this.inStream.read(count); //LOCAL_DEBUG("mimeEncrypt.js: >"+data+"<\n"); }, onStopRequest: function(request, win, status) { LOCAL_DEBUG("mimeEncrypt.js: onStopRequest\n"); }, disableSMimeCheck: function() { this.useSmime = false; this.checkSMime = false; }, // nsIMsgComposeSecure interface requiresCryptoEncapsulation: function(msgIdentity, msgCompFields) { LOCAL_DEBUG("mimeEncrypt.js: requiresCryptoEncapsulation\n"); try { if (this.checkSMime) { // Remember to use original CID, not CONTRACTID, to avoid infinite looping! this.smimeCompose = Components.classesByID[kMsgComposeSecureCID].createInstance(Ci.nsIMsgComposeSecure); this.useSmime = this.smimeCompose.requiresCryptoEncapsulation(msgIdentity, msgCompFields); } if (this.useSmime) return true; var securityInfo = msgCompFields.securityInfo; if (!securityInfo) return false; try { var enigSecurityInfo = securityInfo.QueryInterface(Ci.nsIEnigMsgCompFields); return (enigSecurityInfo.sendFlags & (Ci.nsIEnigmail.SEND_SIGNED | Ci.nsIEnigmail.SEND_ENCRYPTED)) !== 0; } catch (ex) { return false; } } catch (ex) { EnigmailLog.writeException("mimeEncrypt.js", ex); throw (ex); } }, beginCryptoEncapsulation: function(outStream, recipientList, msgCompFields, msgIdentity, sendReport, isDraft) { LOCAL_DEBUG("mimeEncrypt.js: beginCryptoEncapsulation\n"); if (this.checkSMime && (!this.smimeCompose)) { LOCAL_DEBUG("mimeEncrypt.js: beginCryptoEncapsulation: ERROR MsgComposeSecure not instantiated\n"); throw Cr.NS_ERROR_FAILURE; } if (this.useSmime) return this.smimeCompose.beginCryptoEncapsulation(outStream, recipientList, msgCompFields, msgIdentity, sendReport, isDraft); if (!outStream) throw Cr.NS_ERROR_NULL_POINTER; try { this.inspector = Cc["@mozilla.org/jsinspector;1"].createInstance(Ci.nsIJSInspector); this.outStream = outStream; this.isDraft = isDraft; this.msgCompFields = msgCompFields; var securityInfo = msgCompFields.securityInfo; if (!securityInfo) throw Cr.NS_ERROR_FAILURE; this.enigSecurityInfo = securityInfo.QueryInterface(Ci.nsIEnigMsgCompFields); //might throw an error this.outStringStream = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream); var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); this.win = windowManager.getMostRecentWindow(null); if (securityInfo.sendFlags & Ci.nsIEnigmail.SEND_PGP_MIME) { if (securityInfo.sendFlags & Ci.nsIEnigmail.SEND_ENCRYPTED) { // applies to encrypted and signed & encrypted this.cryptoMode = MIME_ENCRYPTED; } else if (securityInfo.sendFlags & Ci.nsIEnigmail.SEND_SIGNED) { this.cryptoMode = MIME_SIGNED; let hashAlgoObj = {}; if (EnigmailHash.determineAlgorithm(this.win, this.enigSecurityInfo.UIFlags, this.enigSecurityInfo.senderEmailAddr, hashAlgoObj) === 0) { this.hashAlgorithm = hashAlgoObj.value; } else throw Cr.NS_ERROR_FAILURE; } } else throw Cr.NS_ERROR_NOT_IMPLEMENTED; var statusFlagsObj = {}; var errorMsgObj = {}; this.proc = EnigmailEncryption.encryptMessageStart(this.win, this.enigSecurityInfo.UIFlags, this.enigSecurityInfo.senderEmailAddr, this.enigSecurityInfo.recipients, this.enigSecurityInfo.bccRecipients, this.hashAlgorithm, this.enigSecurityInfo.sendFlags, this, statusFlagsObj, errorMsgObj); if (!this.proc) throw Cr.NS_ERROR_FAILURE; this.cryptoBoundary = EnigmailMime.createBoundary(); this.startCryptoHeaders(); } catch (ex) { EnigmailLog.writeException("mimeEncrypt.js", ex); throw (ex); } }, startCryptoHeaders: function() { LOCAL_DEBUG("mimeEncrypt.js: startCryptoHeaders\n"); if (this.cryptoMode == MIME_SIGNED) this.signedHeaders1(false); if (this.cryptoMode == MIME_ENCRYPTED) this.encryptedHeaders(); this.writeSecureHeaders(); }, writeSecureHeaders: function() { this.encHeader = EnigmailMime.createBoundary(); let allHdr = ""; let visibleHdr = ""; let addrParser = jsmime.headerparser.parseAddressingHeader; let noParser = function(s) { return s; }; let h = { from: { field: "From", parser: addrParser }, replyTo: { field: "Reply-To", parser: addrParser }, to: { field: "To", parser: addrParser }, cc: { field: "Cc", parser: addrParser }, newsgroups: { field: "Newsgroups", parser: noParser }, followupTo: { field: "Followup-To", parser: addrParser }, messageId: { field: "Message-Id", parser: noParser } }; // visible headers list let vH = { 'from': 1, 'to': 1, 'subject': 1, 'cc': 1 }; for (let i in h) { if (this.msgCompFields[i] && this.msgCompFields[i].length > 0) { allHdr += jsmime.headeremitter.emitStructuredHeader(h[i].field, h[i].parser(this.msgCompFields[i]), {}); } if (i in vH && this.msgCompFields[i].length > 0) { visibleHdr += jsmime.headeremitter.emitStructuredHeader(h[i].field, h[i].parser(this.msgCompFields[i]), {}); } } if (this.enigSecurityInfo.originalSubject && this.enigSecurityInfo.originalSubject.length > 0) { allHdr += jsmime.headeremitter.emitStructuredHeader("subject", this.enigSecurityInfo.originalSubject, {}); visibleHdr += jsmime.headeremitter.emitStructuredHeader("subject", this.enigSecurityInfo.originalSubject, {}); } // special handling for references and in-reply-to if (this.enigSecurityInfo.originalReferences && this.enigSecurityInfo.originalReferences.length > 0) { allHdr += jsmime.headeremitter.emitStructuredHeader("references", this.enigSecurityInfo.originalReferences, {}); let bracket = this.enigSecurityInfo.originalReferences.lastIndexOf("<"); if (bracket >= 0) { allHdr += jsmime.headeremitter.emitStructuredHeader("in-reply-to", this.enigSecurityInfo.originalReferences.substr(bracket), {}); } } let w = 'Content-Type: multipart/mixed; boundary="' + this.encHeader + '"\r\n' + allHdr + '\r\n' + "--" + this.encHeader + "\r\n"; if (this.cryptoMode == MIME_ENCRYPTED && this.enigSecurityInfo.sendFlags & Ci.nsIEnigmail.ENCRYPT_HEADERS) { w += 'Content-Type: text/rfc822-headers; charset="utf-8";\r\n' + ' protected-headers="v1"\r\n' + 'Content-Disposition: inline\r\n' + 'Content-Transfer-Encoding: base64\r\n\r\n' + EnigmailData.encodeBase64(visibleHdr) + "\r\n--" + this.encHeader + "\r\n"; } this.writeToPipe(w); if (this.cryptoMode == MIME_SIGNED) this.writeOut(w); }, encryptedHeaders: function(isEightBit) { LOCAL_DEBUG("mimeEncrypt.js: encryptedHeaders\n"); this.writeOut("Content-Type: multipart/encrypted;\r\n" + " protocol=\"application/pgp-encrypted\";\r\n" + " boundary=\"" + this.cryptoBoundary + "\"\r\n" + "\r\n" + "This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)\r\n" + "--" + this.cryptoBoundary + "\r\n" + "Content-Type: application/pgp-encrypted\r\n" + "Content-Description: PGP/MIME version identification\r\n" + "\r\n" + "Version: 1\r\n" + "\r\n" + "--" + this.cryptoBoundary + "\r\n" + "Content-Type: application/octet-stream; name=\"encrypted.asc\"\r\n" + "Content-Description: OpenPGP encrypted message\r\n" + "Content-Disposition: inline; filename=\"encrypted.asc\"\r\n" + "\r\n"); }, signedHeaders1: function(isEightBit) { LOCAL_DEBUG("mimeEncrypt.js: signedHeaders1\n"); this.writeOut("Content-Type: multipart/signed; micalg=pgp-" + this.hashAlgorithm.toLowerCase() + ";\r\n" + " protocol=\"application/pgp-signature\";\r\n" + " boundary=\"" + this.cryptoBoundary + "\"\r\n" + (isEightBit ? "Content-Transfer-Encoding: 8bit\r\n\r\n" : "\r\n") + "This is an OpenPGP/MIME signed message (RFC 4880 and 3156)\r\n" + "--" + this.cryptoBoundary + "\r\n"); }, signedHeaders2: function() { LOCAL_DEBUG("mimeEncrypt.js: signedHeaders2\n"); this.writeOut("\r\n--" + this.cryptoBoundary + "\r\n" + "Content-Type: application/pgp-signature; name=\"signature.asc\"\r\n" + "Content-Description: OpenPGP digital signature\r\n" + "Content-Disposition: attachment; filename=\"signature.asc\"\r\n\r\n"); }, finishCryptoHeaders: function() { LOCAL_DEBUG("mimeEncrypt.js: finishCryptoHeaders\n"); this.writeOut("\r\n--" + this.cryptoBoundary + "--\r\n"); }, finishCryptoEncapsulation: function(abort, sendReport) { LOCAL_DEBUG("mimeEncrypt.js: finishCryptoEncapsulation\n"); if (this.checkSMime && (!this.smimeCompose)) throw Cr.NS_ERROR_NOT_INITIALIZED; if (this.useSmime) { this.smimeCompose.finishCryptoEncapsulation(abort, sendReport); return; } try { if (this.encapsulate) this.writeToPipe("--" + this.encapsulate + "--\r\n"); if (this.encHeader) { this.writeToPipe("\r\n--" + this.encHeader + "--\r\n"); if (this.cryptoMode == MIME_SIGNED) this.writeOut("\r\n--" + this.encHeader + "--\r\n"); } if (!this.proc) return; this.flushInput(); if (!this.pipe) { this.closePipe = true; } else this.pipe.close(); // wait here for this.proc to terminate this.inspector.enterNestedEventLoop(0); LOCAL_DEBUG("mimeEncrypt.js: finishCryptoEncapsulation: exitCode = " + this.exitCode + "\n"); if (this.exitCode !== 0) throw Cr.NS_ERROR_FAILURE; if (this.cryptoMode == MIME_SIGNED) this.signedHeaders2(); this.encryptedData = this.encryptedData.replace(/\r/g, "").replace(/\n/g, "\r\n"); // force CRLF this.writeOut(this.encryptedData); this.finishCryptoHeaders(); this.flushOutput(); } catch (ex) { EnigmailLog.writeException("mimeEncrypt.js", ex); throw (ex); } }, mimeCryptoWriteBlock: function(buffer, length) { if (gDebugLogLevel > 4) LOCAL_DEBUG("mimeEncrypt.js: mimeCryptoWriteBlock: " + length + "\n"); if (this.checkSMime && (!this.smimeCompose)) throw Cr.NS_ERROR_NOT_INITIALIZED; if (this.useSmime) return this.smimeCompose.mimeCryptoWriteBlock(buffer, length); try { let line = buffer.substr(0, length); if (this.inputMode === 0) { this.headerData += line; if (line.replace(/[\r\n]/g, "").length === 0) { this.inputMode = 1; if (this.cryptoMode == MIME_ENCRYPTED) { let ct = this.getHeader("content-type", false); if ((ct.search(/text\/plain/i) === 0) || (ct.search(/text\/html/i) === 0)) { this.encapsulate = EnigmailMime.createBoundary(); this.writeToPipe('Content-Type: multipart/mixed; boundary="' + this.encapsulate + '"\r\n\r\n'); this.writeToPipe("--" + this.encapsulate + "\r\n"); } } else if (this.cryptoMode == MIME_SIGNED) { let ct = this.getHeader("content-type", true); let hdr = EnigmailFuncs.getHeaderData(ct); hdr.boundary = hdr.boundary || ""; hdr.boundary = hdr.boundary.replace(/[\'\"]/g, ""); } this.writeToPipe(this.headerData); if (this.cryptoMode == MIME_SIGNED) this.writeOut(this.headerData); } } else if (this.inputMode == 1) { if (this.cryptoMode == MIME_SIGNED) { // special treatments for various special cases with PGP/MIME signed messages if (line.substr(0, 5) == "From ") { LOCAL_DEBUG("mimeEncrypt.js: added >From\n"); this.writeToPipe(">"); } } this.writeToPipe(line); if (this.cryptoMode == MIME_SIGNED) this.writeOut(line); } } catch (ex) { EnigmailLog.writeException("mimeEncrypt.js", ex); throw (ex); } }, writeOut: function(str) { if (gDebugLogLevel > 4) LOCAL_DEBUG("mimeEncrypt.js: writeOut: " + str.length + "\n"); this.outQueue += str; if (this.outQueue.length > maxBufferLen) this.flushOutput(); }, flushOutput: function() { LOCAL_DEBUG("mimeEncrypt.js: flushOutput: " + this.outQueue.length + "\n"); // check for output errors // TODO: remove check let i = this.outQueue.search(/[^\r]\n/); if (i != -1) { LOCAL_DEBUG("mimeEncrypt.js: flushOutput -- ERROR: found \\n without \\r at pos. " + i + "\n"); LOCAL_DEBUG("mimeEncrypt.js: flushOutput: data= '" + this.outQueue.substr(i - 10 < 0 ? 0 : i - 10, 20) + "'\n"); } this.outStringStream.setData(this.outQueue, this.outQueue.length); var writeCount = this.outStream.writeFrom(this.outStringStream, this.outQueue.length); if (writeCount < this.outQueue.length) { LOCAL_DEBUG("mimeEncrypt.js: flushOutput: wrote " + writeCount + " instead of " + this.outQueue.length + " bytes\n"); } this.outQueue = ""; }, writeToPipe: function(str) { if (gDebugLogLevel > 4) LOCAL_DEBUG("mimeEncrypt.js: writeToPipe: " + str.length + "\n"); if (this.pipe) { this.pipeQueue += str; if (this.pipeQueue.length > maxBufferLen) this.flushInput(); } else this.pipeQueue += str; }, flushInput: function() { LOCAL_DEBUG("mimeEncrypt.js: flushInput\n"); if (!this.pipe) return; this.pipe.write(this.pipeQueue); this.pipeQueue = ""; }, getHeader: function(hdrStr, fullHeader) { var foundIndex = 0; var res = ""; var hdrLines = this.headerData.split(/[\r\n]+/); var i; for (i = 0; i < hdrLines.length; i++) { if (hdrLines[i].length > 0) { if (fullHeader && res !== "") { if (hdrLines[i].search(/^\s+/) === 0) { res += hdrLines[i].replace(/\s*[\r\n]*$/, ""); } else return res; } else { let j = hdrLines[i].indexOf(":"); if (j > 0) { let h = hdrLines[i].substr(0, j).replace(/\s*$/, ""); let re = new RegExp("^" + hdrStr + "$", "i"); if (h.search(re) === 0) { foundIndex = 1; res = hdrLines[i].substr(j + 1).replace(/^\s*/, ""); if (!fullHeader) return res; } } } } } return res; }, // API for decryptMessage Listener stdin: function(pipe) { LOCAL_DEBUG("mimeEncrypt.js: stdin\n"); if (this.pipeQueue.length > 0) { pipe.write(this.pipeQueue); this.pipeQueue = ""; if (this.closePipe) pipe.close(); } this.pipe = pipe; }, stdout: function(s) { LOCAL_DEBUG("mimeEncrypt.js: stdout:" + s.length + "\n"); this.encryptedData += s; this.dataLength += s.length; }, stderr: function(s) { LOCAL_DEBUG("mimeEncrypt.js: stderr\n"); this.statusStr += s; }, done: function(exitCode) { LOCAL_DEBUG("mimeEncrypt.js: done: " + exitCode + "\n"); let retStatusObj = {}; this.exitCode = EnigmailEncryption.encryptMessageEnd(this.enigSecurityInfo.senderEmailAddr, this.statusStr, exitCode, this.enigSecurityInfo.UIFlags, this.enigSecurityInfo.sendFlags, this.dataLength, retStatusObj); if (this.exitCode !== 0) EnigmailDialog.alert(this.win, retStatusObj.errorMsg); if (this.inspector && this.inspector.eventLoopNestLevel > 0) { // unblock the waiting lock in finishCryptoEncapsulation this.inspector.exitNestedEventLoop(); } } }; //////////////////////////////////////////////////////////////////// // General-purpose functions, not exported function LOCAL_DEBUG(str) { if (gDebugLogLevel) EnigmailLog.DEBUG(str); } function initModule() { var env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); var nspr_log_modules = env.get("NSPR_LOG_MODULES"); var matches = nspr_log_modules.match(/mimeEncrypt:(\d+)/); if (matches && (matches.length > 1)) { gDebugLogLevel = matches[1]; LOCAL_DEBUG("mimeEncrypt.js: enabled debug logging\n"); } } var NSGetFactory = XPCOMUtils.generateNSGetFactory([PgpMimeEncrypt]); initModule(); enigmail/package/mimeVerify.jsm000066400000000000000000000435601266701624400171050ustar00rootroot00000000000000/*global Components: false */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailVerify"]; /** * Module for handling PGP/MIME signed messages * implemented as JS module */ // TODO: Missing features // - don't attempt to validate forwarded messages unless message is being viewed Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Components.utils.import("resource://enigmail/funcs.jsm"); /*global EnigmailFuncs: false */ Components.utils.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Components.utils.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Components.utils.import("resource://enigmail/mime.jsm"); /*global EnigmailMime: false */ Components.utils.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ Components.utils.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Components.utils.import("resource://enigmail/constants.jsm"); /*global EnigmailConstants: false */ Components.utils.import("resource://enigmail/decryption.jsm"); /*global EnigmailDecryption: false */ const Cc = Components.classes; const Ci = Components.interfaces; const APPSHELL_MEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1"; const maxBufferLen = 102400; var gDebugLog = false; var gConv = Cc["@mozilla.org/io/string-input-stream;1"].createInstance(Ci.nsIStringInputStream); // MimeVerify Constructor function MimeVerify() { this.verifyEmbedded = false; this.partiallySigned = false; this.inStream = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); } const EnigmailVerify = { lastMsgWindow: null, lastMsgUri: null, manualMsgUri: null, currentCtHandler: EnigmailConstants.MIME_HANDLER_UNDEF, setMsgWindow: function(msgWindow, msgUriSpec) { LOCAL_DEBUG("mimeVerify.jsm: setMsgWindow: " + msgUriSpec + "\n"); this.lastMsgWindow = msgWindow; this.lastMsgUri = msgUriSpec; }, newVerifier: function() { let v = new MimeVerify(); return v; }, setManualUri: function(msgUriSpec) { LOCAL_DEBUG("mimeVerify.jsm: setManualUri: " + msgUriSpec + "\n"); this.manualMsgUri = msgUriSpec; }, getManualUri: function() { EnigmailLog.DEBUG("mimeVerify.jsm: getManualUri\n"); return this.manualMsgUri; }, /*** * register a PGP/MIME verify object the same way PGP/MIME encrypted mail is handled */ registerContentTypeHandler: function() { EnigmailLog.DEBUG("mimeVerify.jsm: registerContentTypeHandler\n"); let reg = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); let pgpMimeClass = Components.classes["@mozilla.org/mimecth;1?type=multipart/encrypted"]; reg.registerFactory( pgpMimeClass, "Enigmail PGP/MIME verification", "@mozilla.org/mimecth;1?type=multipart/signed", null); this.currentCtHandler = EnigmailConstants.MIME_HANDLER_PGPMIME; }, unregisterContentTypeHandler: function() { EnigmailLog.DEBUG("mimeVerify.jsm: unregisterContentTypeHandler\n"); let reg = Components.manager.QueryInterface(Ci.nsIComponentRegistrar); let sMimeClass = Components.classes["@mozilla.org/nsCMSDecoder;1"]; reg.registerFactory(sMimeClass, "S/MIME verification", "@mozilla.org/mimecth;1?type=multipart/signed", null); this.currentCtHandler = EnigmailConstants.MIME_HANDLER_SMIME; } }; // MimeVerify implementation // verify the signature of PGP/MIME signed messages MimeVerify.prototype = { dataCount: 0, foundMsg: false, startMsgStr: "", msgWindow: null, msgUriSpec: null, statusDisplayed: false, exitCode: null, window: null, inStream: null, sigFile: null, sigData: "", mimePartNumber: "", QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]), startStreaming: function(window, msgWindow, msgUriSpec) { LOCAL_DEBUG("mimeVerify.jsm: startStreaming\n"); this.msgWindow = msgWindow; this.msgUriSpec = msgUriSpec; this.window = window; var messenger = Cc["@mozilla.org/messenger;1"].getService(Ci.nsIMessenger); var msgSvc = messenger.messageServiceFromURI(this.msgUriSpec); msgSvc.streamMessage(this.msgUriSpec, this, this.msgWindow, null, false, null, false); }, verifyData: function(window, msgWindow, msgUriSpec, data) { LOCAL_DEBUG("mimeVerify.jsm: streamFromChannel\n"); this.msgWindow = msgWindow; this.msgUriSpec = msgUriSpec; this.window = window; this.onStartRequest(); this.onTextData(data); this.onStopRequest(); }, parseContentType: function() { let contentTypeLine = this.mimeSvc.contentType; // Eat up CRLF's. contentTypeLine = contentTypeLine.replace(/[\r\n]/g, ""); LOCAL_DEBUG("mimeVerify.jsm: parseContentType: " + contentTypeLine + "\n"); if (contentTypeLine.search(/multipart\/signed/i) >= 0 && contentTypeLine.search(/micalg\s*=\s*[\"\']?pgp-[\"\']?/i) > 0 && contentTypeLine.search(/protocol\s*=\s*[\'\"]application\/pgp-signature[\"\']/i) > 0) { LOCAL_DEBUG("mimeVerify.jsm: parseContentType: found PGP/MIME signed message\n"); this.foundMsg = true; let hdr = EnigmailFuncs.getHeaderData(contentTypeLine); hdr.boundary = hdr.boundary || ""; hdr.micalg = hdr.micalg || ""; this.boundary = hdr.boundary.replace(/[\'\"]/g, ""); } }, onStartRequest: function(request, uri) { EnigmailLog.DEBUG("mimeVerify.jsm: onStartRequest\n"); // always log this one this.uri = uri ? uri.QueryInterface(Ci.nsIURI).clone() : null; this.mimeSvc = request.QueryInterface(Ci.nsIPgpMimeProxy); this.msgUriSpec = EnigmailVerify.lastMsgUri; if ("mimePart" in this.mimeSvc) { this.mimePartNumber = this.mimeSvc.mimePart; } else { this.mimePartNumber = ""; } this.dataCount = 0; this.foundMsg = false; this.backgroundJob = false; this.startMsgStr = ""; this.boundary = ""; this.proc = null; this.closePipe = false; this.pipe = null; this.readMode = 0; this.keepData = ""; this.signedData = ""; this.statusStr = ""; this.returnStatus = null; this.statusDisplayed = false; this.protectedHeaders = null; this.parseContentType(); }, onDataAvailable: function(req, sup, stream, offset, count) { LOCAL_DEBUG("mimeVerify.jsm: onDataAvailable: " + count + "\n"); if (count > 0) { this.inStream.init(stream); var data = this.inStream.read(count); this.onTextData(data); } }, onTextData: function(data) { LOCAL_DEBUG("mimeVerify.jsm: onTextData\n"); this.dataCount += data.length; this.keepData += data; if (this.readMode === 0) { // header data let i = this.findNextMimePart(); if (i >= 0) { i += 2 + this.boundary.length; if (this.keepData[i] == "\n") { ++i; } else if (this.keepData[i] == "\r") { ++i; if (this.keepData[i] == "\n") ++i; } this.keepData = this.keepData.substr(i); data = this.keepData; this.readMode = 1; } else { this.keepData = data.substr(-this.boundary.length - 3); } } if (this.readMode === 1) { // "real data" if (data.indexOf("-") >= 0) { // only check current line for speed reasons let i = this.findNextMimePart(); if (i >= 0) { // end of "read data found" if (this.keepData[i - 2] == '\r' && this.keepData[i - 1] == '\n') { --i; } this.signedData = this.keepData.substr(0, i - 1); this.keepData = this.keepData.substr(i); this.readMode = 2; } } else return; } if (this.readMode === 2) { let i = this.keepData.indexOf("--" + this.boundary + "--"); if (i >= 0) { // ensure that we keep everything until we got the "end" boundary if (this.keepData[i - 2] == '\r' && this.keepData[i - 1] == '\n') { --i; } this.keepData = this.keepData.substr(0, i - 1); this.readMode = 3; } } if (this.readMode === 3) { // signature data let xferEnc = this.getContentTransferEncoding(); if (xferEnc.search(/base64/i) >= 0) { let bound = this.getBodyPart(); this.keepData = EnigmailData.decodeBase64(this.keepData.substring(bound.start, bound.end)) + "\n"; } else if (xferEnc.search(/quoted-printable/i) >= 0) { let bound = this.getBodyPart(); let qp = this.keepData.substring(bound.start, bound.end); this.keepData = EnigmailData.decodeQuotedPrintable(qp) + "\n"; } // extract signature data let s = Math.max(this.keepData.search(/^-----BEGIN PGP /m), 0); let e = Math.max(this.keepData.search(/^-----END PGP /m), this.keepData.length - 30); this.sigData = this.keepData.substring(s, e + 30); this.keepData = ""; this.readMode = 4; // ignore any further data } }, getBodyPart: function() { let start = this.keepData.search(/(\n\n|\r\n\r\n)/); if (start < 0) { start = 0; } let end = this.keepData.indexOf("--" + this.boundary + "--") - 1; return { start: start, end: end }; }, // determine content-transfer encoding of mime part, assuming that whole // message is in this.keepData getContentTransferEncoding: function() { let enc = "7bit"; let m = this.keepData.match(/^(content-transfer-encoding:)(.*)$/mi); if (m && m.length > 2) { enc = m[2].trim().toLowerCase(); } return enc; }, findNextMimePart: function() { let startOk = false; let endOk = false; let i = this.keepData.indexOf("--" + this.boundary); if (i === 0) startOk = true; if (i > 0) { if (this.keepData[i - 1] == '\r' || this.keepData[i - 1] == '\n') startOk = true; } if (!startOk) return -1; if (i + this.boundary.length + 2 < this.keepData.length) { if (this.keepData[i + this.boundary.length + 2] == '\r' || this.keepData[i + this.boundary.length + 2] == '\n' || this.keepData.substr(i + this.boundary.length + 2, 2) == '--') endOk = true; } // else // endOk = true; if (i >= 0 && startOk && endOk) { return i; } return -1; }, onStopRequest: function() { LOCAL_DEBUG("mimeVerify.jsm: onStopRequest\n"); this.msgWindow = EnigmailVerify.lastMsgWindow; this.msgUriSpec = EnigmailVerify.lastMsgUri; let url = {}; this.backgroundJob = false; // don't try to verify if no message found // if (this.verifyEmbedded && (!this.foundMsg)) return; // TODO - check this.protectedHeaders = EnigmailMime.extractProtectedHeaders(this.signedData); if (this.protectedHeaders && this.protectedHeaders.startPos >= 0 && this.protectedHeaders > this.protectedHeaders.startPos) { let r = this.signedData.substr(0, this.protectedHeaders.startPos) + this.signedData.substr(this.protectedHeaders.endPos); this.returnData(r); } else { this.returnData(this.signedData); } if (this.uri) { // return if not decrypting currently displayed message (except if // printing, replying, etc) this.backgroundJob = (this.uri.spec.search(/[\&\?]header=(print|quotebody|enigmailConvert)/) >= 0); try { var messenger = Cc["@mozilla.org/messenger;1"].getService(Ci.nsIMessenger); if (!EnigmailPrefs.getPref("autoDecrypt")) { // "decrypt manually" mode let manUrl = {}; if (EnigmailVerify.getManualUri()) { let msgSvc = messenger.messageServiceFromURI(EnigmailVerify.getManualUri()); msgSvc.GetUrlForUri(EnigmailVerify.getManualUri(), manUrl, null); } else { manUrl.value = { spec: "enigmail://invalid/message" }; } // print a message if not message explicitly decrypted let currUrlSpec = this.uri.spec.replace(/(\?.*)(number=[0-9]*)(&.*)?$/, "?$2"); let manUrlSpec = manUrl.value.spec.replace(/(\?.*)(number=[0-9]*)(&.*)?$/, "?$2"); if ((!this.backgroundJob) && currUrlSpec != manUrlSpec) { return; // this.handleManualDecrypt(); } } if (this.msgUriSpec) { let msgSvc = messenger.messageServiceFromURI(this.msgUriSpec); msgSvc.GetUrlForUri(this.msgUriSpec, url, null); } if (this.uri.spec.search(/[\&\?]header=[a-zA-Z0-9]*$/) < 0 && this.uri.spec.search(/[\&\?]part=[\.0-9]+/) < 0 && this.uri.spec.search(/[\&\?]examineEncryptedParts=true/) < 0) { if (this.uri.spec.search(/[\&\?]header=filter\&.*$/) > 0) return; if (this.uri && url && url.value) { if (url.value.spec != this.uri.spec) return; } } } catch (ex) { EnigmailLog.writeException("mimeVerify.jsm", ex); EnigmailLog.DEBUG("mimeVerify.jsm: error while processing " + this.msgUriSpec + "\n"); } } var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); var win = windowManager.getMostRecentWindow(null); // create temp file holding signature data this.sigFile = EnigmailFiles.getTempDirObj(); this.sigFile.append("data.sig"); this.sigFile.createUnique(this.sigFile.NORMAL_FILE_TYPE, 0x180); EnigmailFiles.writeFileContents(this.sigFile, this.sigData, 0x180); var statusFlagsObj = {}; var errorMsgObj = {}; this.proc = EnigmailDecryption.decryptMessageStart(win, true, true, this, statusFlagsObj, errorMsgObj, EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePath(this.sigFile))); if (this.pipe) { EnigmailLog.DEBUG("Closing pipe\n"); // always log this one this.pipe.close(); } else this.closePipe = true; }, // return data to libMime returnData: function(data) { let m = data.match(/^(content-type: +)([\w\/]+)/im); if (m && m.length >= 3) { let contentType = m[2]; if (contentType.search(/^text/i) === 0) { // add multipart/mixed boundary to work around TB bug (empty forwarded message) let bound = EnigmailMime.createBoundary(); data = 'Content-Type: multipart/mixed; boundary="' + bound + '"\n\n--' + bound + '\n' + data + '\n--' + bound + '--\n'; } } gConv.setData(data, data.length); try { this.mimeSvc.onStartRequest(null, null); this.mimeSvc.onDataAvailable(null, null, gConv, 0, data.length); this.mimeSvc.onStopRequest(null, null, 0); } catch (ex) { EnigmailLog.ERROR("mimeVerify.jsm: returnData(): mimeSvc.onDataAvailable failed:\n" + ex.toString()); } }, // API for decryptMessage Listener stdin: function(pipe) { LOCAL_DEBUG("mimeVerify.jsm: stdin\n"); if (this.signedData.length > 0) { LOCAL_DEBUG("mimeVerify.jsm: writing " + this.signedData.length + " bytes\n"); // ensure all lines end with CRLF as specified in RFC 3156, section 5 this.signedData = this.signedData.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n"); pipe.write(this.signedData); if (this.closePipe) pipe.close(); } this.pipe = pipe; }, stdout: function(s) { LOCAL_DEBUG("mimeVerify.jsm: stdout:" + s.length + "\n"); this.dataLength += s.length; }, stderr: function(s) { LOCAL_DEBUG("mimeVerify.jsm: stderr\n"); this.statusStr += s; }, done: function(exitCode) { LOCAL_DEBUG("mimeVerify.jsm: done: " + exitCode + "\n"); this.exitCode = exitCode; //LOCAL_DEBUG("mimeVerify.jsm: "+this.statusStr+"\n"); this.returnStatus = {}; EnigmailDecryption.decryptMessageEnd(this.statusStr, this.exitCode, this.dataLength, true, // verifyOnly true, Ci.nsIEnigmail.UI_PGP_MIME, this.returnStatus); if (this.partiallySigned) this.returnStatus.statusFlags |= Ci.nsIEnigmail.PARTIALLY_PGP; this.displayStatus(); if (this.sigFile) this.sigFile.remove(false); }, setMsgWindow: function(msgWindow, msgUriSpec) { EnigmailLog.DEBUG("mimeVerify.jsm: setMsgWindow: " + msgUriSpec + "\n"); if (!this.msgWindow) { this.msgWindow = msgWindow; this.msgUriSpec = msgUriSpec; } }, displayStatus: function() { EnigmailLog.DEBUG("mimeVerify.jsm: displayStatus\n"); if (this.exitCode === null || this.msgWindow === null || this.statusDisplayed || this.backgroundJob) return; try { LOCAL_DEBUG("mimeVerify.jsm: displayStatus displaying result\n"); let headerSink = this.msgWindow.msgHeaderSink.securityInfo.QueryInterface(Ci.nsIEnigMimeHeaderSink); if (this.protectedHeaders) { headerSink.modifyMessageHeaders(this.uri, JSON.stringify(this.protectedHeaders.newHeaders)); } if (headerSink) { headerSink.updateSecurityStatus(this.lastMsgUri, this.exitCode, this.returnStatus.statusFlags, this.returnStatus.keyId, this.returnStatus.userId, this.returnStatus.sigDetails, this.returnStatus.errorMsg, this.returnStatus.blockSeparation, this.uri, this.returnStatus.encToDetails, this.mimePartNumber); } this.statusDisplayed = true; } catch (ex) { EnigmailLog.writeException("mimeVerify.jsm", ex); } } }; //////////////////////////////////////////////////////////////////// // General-purpose functions, not exported function LOCAL_DEBUG(str) { if (gDebugLog) EnigmailLog.DEBUG(str); } function initModule() { var env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); var nspr_log_modules = env.get("NSPR_LOG_MODULES"); var matches = nspr_log_modules.match(/mimeVerify:(\d+)/); if (matches && (matches.length > 1)) { if (matches[1] > 2) gDebugLog = true; } } initModule(); enigmail/package/msgCompFields.js000066400000000000000000000044031266701624400173410ustar00rootroot00000000000000/*global Components XPCOMUtils */ /* jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 'use strict'; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); const Ci = Components.interfaces; // components defined in this file const ENIG_ENIGMSGCOMPFIELDS_CONTRACTID = "@mozdev.org/enigmail/composefields;1"; const ENIG_ENIGMSGCOMPFIELDS_CID = Components.ID("{847b3a30-7ab1-11d4-8f02-006008948af5}"); function EnigMsgCompFields() {} EnigMsgCompFields.prototype = { classDescription: "Enigmail Msg Compose Fields", classID: ENIG_ENIGMSGCOMPFIELDS_CID, contractID: ENIG_ENIGMSGCOMPFIELDS_CONTRACTID, QueryInterface: XPCOMUtils.generateQI([ Ci.nsIEnigMsgCompFields, Ci.nsEnigMsgCompFields, Ci.nsIMsgSMIMECompFields, Ci.nsIMsgCompFields, Ci.nsISupports ]), _parent: null, UIFlags: 0, endFlags: 0, senderEmailAddr: "", recipients: "", msgSMIMECompFields: null, init: function(smimeCompFields) { var members = ["from", "replyTo", "to", "cc", "bcc", "fcc", "fcc2", "newsgroups", "newshost", "newspostUrl", "followupTo", "subject", "attachments", "organization", "references", "priority", "messageId", "characterSet", "defaultCharacterSet", "templateName", "draftId", "returnReceipt", "receiptHeaderType", "attachVCard", "forcePlainText", "useMultipartAlternative", "uuEncodeAttachments", "bodyIsAsciiOnly", "forceMsgEncoding", "otherRandomHeaders", "body", "temporaryFiles", "attachmentsArray", "addAttachment", "removeAttachment", "removeAttachments", "ConvertBodyToPlainText", "checkCharsetConversion", "needToCheckCharset", "securityInfo", "senderReply", "allReply", "splitRecipients", "listReply" ]; this._parent = smimeCompFields; var m; for (m in members) { this[m] = smimeCompFields[m]; } } }; var NSGetFactory = XPCOMUtils.generateNSGetFactory([EnigMsgCompFields]); enigmail/package/os.jsm000066400000000000000000000026331266701624400154060ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailOS"]; const Cc = Components.classes; const Ci = Components.interfaces; const XPCOM_APPINFO = "@mozilla.org/xre/app-info;1"; function getOS() { return Cc[XPCOM_APPINFO].getService(Ci.nsIXULRuntime).OS; } const EnigmailOS = { isWin32: (getOS() == "WINNT"), getOS: getOS, isDosLike: function() { if (EnigmailOS.isDosLikeVal === undefined) { EnigmailOS.isDosLikeVal = (EnigmailOS.getOS() == "WINNT" || EnigmailOS.getOS() == "OS2"); } return EnigmailOS.isDosLikeVal; }, // get a Windows registry value (string) // @ keyPath: the path of the registry (e.g. Software\\GNU\\GnuPG) // @ keyName: the name of the key to get (e.g. InstallDir) // @ rootKey: HKLM, HKCU, etc. (according to constants in nsIWindowsRegKey) getWinRegistryString: function(keyPath, keyName, rootKey) { var registry = Cc["@mozilla.org/windows-registry-key;1"].createInstance(Ci.nsIWindowsRegKey); var retval = ""; try { registry.open(rootKey, keyPath, registry.ACCESS_READ); retval = registry.readStringValue(keyName); registry.close(); } catch (ex) {} return retval; } }; enigmail/package/passwordCheck.jsm000066400000000000000000000230431266701624400175630ustar00rootroot00000000000000/*jshint -W097 */ /* Taken from jquery.complexify (WTFPL 2.0) */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailPasswordCheck"]; const EnigmailPasswordCheck = { /** * Check password quality * * password: String: the password to evaluate * * return: object: valid: Boolean - is password valid or not * complexity: Number - complexity of password (values between 0 and 100) */ checkQuality: function(password) { return evaluateSecurity(password); } }; /********* Helper functions and variables */ const COMPLEXIFY_BANLIST = '123456|password|12345678|1234|pussy|12345|dragon|qwerty|696969|mustang|letmein|baseball|master|michael|football|shadow|monkey|abc123|pass|fuckme|6969|jordan|harley|ranger|iwantu|jennifer|hunter|fuck|2000|test|batman|trustno1|thomas|tigger|robert|access|love|buster|1234567|soccer|hockey|killer|george|sexy|andrew|charlie|superman|asshole|fuckyou|dallas|jessica|panties|pepper|1111|austin|william|daniel|golfer|summer|heather|hammer|yankees|joshua|maggie|biteme|enter|ashley|thunder|cowboy|silver|richard|fucker|orange|merlin|michelle|corvette|bigdog|cheese|matthew|121212|patrick|martin|freedom|ginger|blowjob|nicole|sparky|yellow|camaro|secret|dick|falcon|taylor|111111|131313|123123|bitch|hello|scooter|please|porsche|guitar|chelsea|black|diamond|nascar|jackson|cameron|654321|computer|amanda|wizard|xxxxxxxx|money|phoenix|mickey|bailey|knight|iceman|tigers|purple|andrea|horny|dakota|aaaaaa|player|sunshine|morgan|starwars|boomer|cowboys|edward|charles|girls|booboo|coffee|xxxxxx|bulldog|ncc1701|rabbit|peanut|john|johnny|gandalf|spanky|winter|brandy|compaq|carlos|tennis|james|mike|brandon|fender|anthony|blowme|ferrari|cookie|chicken|maverick|chicago|joseph|diablo|sexsex|hardcore|666666|willie|welcome|chris|panther|yamaha|justin|banana|driver|marine|angels|fishing|david|maddog|hooters|wilson|butthead|dennis|fucking|captain|bigdick|chester|smokey|xavier|steven|viking|snoopy|blue|eagles|winner|samantha|house|miller|flower|jack|firebird|butter|united|turtle|steelers|tiffany|zxcvbn|tomcat|golf|bond007|bear|tiger|doctor|gateway|gators|angel|junior|thx1138|porno|badboy|debbie|spider|melissa|booger|1212|flyers|fish|porn|matrix|teens|scooby|jason|walter|cumshot|boston|braves|yankee|lover|barney|victor|tucker|princess|mercedes|5150|doggie|' + 'zzzzzz|gunner|horney|bubba|2112|fred|johnson|xxxxx|tits|member|boobs|donald|bigdaddy|bronco|penis|voyager|rangers|birdie|trouble|white|topgun|bigtits|bitches|green|super|qazwsx|magic|lakers|rachel|slayer|scott|2222|asdf|video|london|7777|marlboro|srinivas|internet|action|carter|jasper|monster|teresa|jeremy|11111111|bill|crystal|peter|pussies|cock|beer|rocket|theman|oliver|prince|beach|amateur|7777777|muffin|redsox|star|testing|shannon|murphy|frank|hannah|dave|eagle1|11111|mother|nathan|raiders|steve|forever|angela|viper|ou812|jake|lovers|suckit|gregory|buddy|whatever|young|nicholas|lucky|helpme|jackie|monica|midnight|college|baby|cunt|brian|mark|startrek|sierra|leather|232323|4444|beavis|bigcock|happy|sophie|ladies|naughty|giants|booty|blonde|fucked|golden|0|fire|sandra|pookie|packers|einstein|dolphins|chevy|winston|warrior|sammy|slut|8675309|zxcvbnm|nipples|power|victoria|asdfgh|vagina|toyota|travis|hotdog|paris|rock|xxxx|extreme|redskins|erotic|dirty|ford|freddy|arsenal|access14|wolf|nipple|iloveyou|alex|florida|eric|legend|movie|success|rosebud|jaguar|great|cool|cooper|1313|scorpio|mountain|madison|987654|brazil|lauren|japan|naked|squirt|stars|apple|alexis|aaaa|bonnie|peaches|jasmine|kevin|matt|qwertyui|danielle|beaver|4321|4128|runner|swimming|dolphin|gordon|casper|stupid|shit|saturn|gemini|apples|august|3333|canada|blazer|cumming|hunting|kitty|rainbow|112233|arthur|cream|calvin|shaved|surfer|samson|kelly|paul|mine|king|racing|5555|eagle|hentai|newyork|little|redwings|smith|sticky|cocacola|animal|broncos|private|skippy|marvin|blondes|enjoy|girl|apollo|parker|qwert|time|sydney|women|voodoo|magnum|juice|abgrtyu|777777|dreams|maxwell|music|rush2112|russia|scorpion|rebecca|tester|mistress|phantom|billy|6666|albert|111111|11111111|112233|' + '121212|123123|123456|1234567|12345678|131313|232323|654321|666666|696969|777777|7777777|8675309|987654|abcdef|password1|password12|password123|twitter'.split('|'); const options = { minimumChars: 8, strengthScaleFactor: 1, bannedPasswords: COMPLEXIFY_BANLIST, banMode: 'strict' // (strict|loose) }; const MIN_COMPLEXITY = 30; // 8 chars with Upper, Lower and Number //var MAX_COMPLEXITY = 120; // 25 chars, all charsets const MAX_COMPLEXITY = 60; const CHARSETS = [ // Commonly Used //////////////////// [0x0020, 0x0020], // Space [0x0030, 0x0039], // Numbers [0x0041, 0x005A], // Uppercase [0x0061, 0x007A], // Lowercase [0x0021, 0x002F], // Punctuation [0x003A, 0x0040], // Punctuation [0x005B, 0x0060], // Punctuation [0x007B, 0x007E], // Punctuation // Everything Else //////////////////// [0x0080, 0x00FF], // Latin-1 Supplement [0x0100, 0x017F], // Latin Extended-A [0x0180, 0x024F], // Latin Extended-B [0x0250, 0x02AF], // IPA Extensions [0x02B0, 0x02FF], // Spacing Modifier Letters [0x0300, 0x036F], // Combining Diacritical Marks [0x0370, 0x03FF], // Greek [0x0400, 0x04FF], // Cyrillic [0x0530, 0x058F], // Armenian [0x0590, 0x05FF], // Hebrew [0x0600, 0x06FF], // Arabic [0x0700, 0x074F], // Syriac [0x0780, 0x07BF], // Thaana [0x0900, 0x097F], // Devanagari [0x0980, 0x09FF], // Bengali [0x0A00, 0x0A7F], // Gurmukhi [0x0A80, 0x0AFF], // Gujarati [0x0B00, 0x0B7F], // Oriya [0x0B80, 0x0BFF], // Tamil [0x0C00, 0x0C7F], // Telugu [0x0C80, 0x0CFF], // Kannada [0x0D00, 0x0D7F], // Malayalam [0x0D80, 0x0DFF], // Sinhala [0x0E00, 0x0E7F], // Thai [0x0E80, 0x0EFF], // Lao [0x0F00, 0x0FFF], // Tibetan [0x1000, 0x109F], // Myanmar [0x10A0, 0x10FF], // Georgian [0x1100, 0x11FF], // Hangul Jamo [0x1200, 0x137F], // Ethiopic [0x13A0, 0x13FF], // Cherokee [0x1400, 0x167F], // Unified Canadian Aboriginal Syllabics [0x1680, 0x169F], // Ogham [0x16A0, 0x16FF], // Runic [0x1780, 0x17FF], // Khmer [0x1800, 0x18AF], // Mongolian [0x1E00, 0x1EFF], // Latin Extended Additional [0x1F00, 0x1FFF], // Greek Extended [0x2000, 0x206F], // General Punctuation [0x2070, 0x209F], // Superscripts and Subscripts [0x20A0, 0x20CF], // Currency Symbols [0x20D0, 0x20FF], // Combining Marks for Symbols [0x2100, 0x214F], // Letterlike Symbols [0x2150, 0x218F], // Number Forms [0x2190, 0x21FF], // Arrows [0x2200, 0x22FF], // Mathematical Operators [0x2300, 0x23FF], // Miscellaneous Technical [0x2400, 0x243F], // Control Pictures [0x2440, 0x245F], // Optical Character Recognition [0x2460, 0x24FF], // Enclosed Alphanumerics [0x2500, 0x257F], // Box Drawing [0x2580, 0x259F], // Block Elements [0x25A0, 0x25FF], // Geometric Shapes [0x2600, 0x26FF], // Miscellaneous Symbols [0x2700, 0x27BF], // Dingbats [0x2800, 0x28FF], // Braille Patterns [0x2E80, 0x2EFF], // CJK Radicals Supplement [0x2F00, 0x2FDF], // Kangxi Radicals [0x2FF0, 0x2FFF], // Ideographic Description Characters [0x3000, 0x303F], // CJK Symbols and Punctuation [0x3040, 0x309F], // Hiragana [0x30A0, 0x30FF], // Katakana [0x3100, 0x312F], // Bopomofo [0x3130, 0x318F], // Hangul Compatibility Jamo [0x3190, 0x319F], // Kanbun [0x31A0, 0x31BF], // Bopomofo Extended [0x3200, 0x32FF], // Enclosed CJK Letters and Months [0x3300, 0x33FF], // CJK Compatibility [0x3400, 0x4DB5], // CJK Unified Ideographs Extension A [0x4E00, 0x9FFF], // CJK Unified Ideographs [0xA000, 0xA48F], // Yi Syllables [0xA490, 0xA4CF], // Yi Radicals [0xAC00, 0xD7A3], // Hangul Syllables [0xD800, 0xDB7F], // High Surrogates [0xDB80, 0xDBFF], // High Private Use Surrogates [0xDC00, 0xDFFF], // Low Surrogates [0xE000, 0xF8FF], // Private Use [0xF900, 0xFAFF], // CJK Compatibility Ideographs [0xFB00, 0xFB4F], // Alphabetic Presentation Forms [0xFB50, 0xFDFF], // Arabic Presentation Forms-A [0xFE20, 0xFE2F], // Combining Half Marks [0xFE30, 0xFE4F], // CJK Compatibility Forms [0xFE50, 0xFE6F], // Small Form Variants [0xFE70, 0xFEFE], // Arabic Presentation Forms-B [0xFEFF, 0xFEFF], // Specials [0xFF00, 0xFFEF], // Halfwidth and Fullwidth Forms [0xFFF0, 0xFFFD] // Specials ]; function additionalComplexityForCharset(str, charset) { for (var i = str.length - 1; i >= 0; i--) { if (charset[0] <= str.charCodeAt(i) && str.charCodeAt(i) <= charset[1]) { return charset[1] - charset[0] + 1; } } return 0; } function inBanlist(str) { if (options.banMode === 'strict') { for (var i = 0; i < options.bannedPasswords.length; i++) { if (options.bannedPasswords[i].indexOf(str) !== -1) { return true; } } return false; } else { return (options.bannedPasswords.indexOf(str) > -1 ? true : false); } } function evaluateSecurity(password) { var complexity = 0, valid = false; // Reset complexity to 0 when banned password is found if (!inBanlist(password)) { // Add character complexity for (var i = CHARSETS.length - 1; i >= 0; i--) { complexity += additionalComplexityForCharset(password, CHARSETS[i]); } } else { complexity = 1; } // Use natural log to produce linear scale complexity = Math.log(Math.pow(complexity, password.length)) * (1 / options.strengthScaleFactor); valid = (complexity > MIN_COMPLEXITY && password.length >= options.minimumChars); // Scale to percentage, so it can be used for a progress bar complexity = (complexity / MAX_COMPLEXITY) * 100; complexity = (complexity > 100) ? 100 : complexity; return { valid: valid, complexity: complexity }; } enigmail/package/passwords.jsm000066400000000000000000000047521266701624400170160ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailPassword"]; const Cu = Components.utils; Cu.import("resource://enigmail/lazy.jsm"); /*global EnigmailLazy: false */ Cu.import("resource://enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/subprocess.jsm"); /*global subprocess: false */ const gpgAgent = EnigmailLazy.loader("enigmail/gpgAgent.jsm", "EnigmailGpgAgent"); const getDialog = EnigmailLazy.loader("enigmail/dialog.jsm", "EnigmailDialog"); const getLocale = EnigmailLazy.loader("enigmail/locale.jsm", "EnigmailLocale"); const EnigmailPassword = { /* * Get GnuPG command line options for receiving the password depending * on the various user and system settings (gpg-agent/no passphrase) * * @return: Array the GnuPG command line options */ command: function() { if (gpgAgent().useGpgAgent()) { return ["--use-agent"]; } else { if (!EnigmailPrefs.getPref("noPassphrase")) { return ["--passphrase-fd", "0", "--no-use-agent"]; } } return []; }, getMaxIdleMinutes: function() { try { return EnigmailPrefs.getPref("maxIdleMinutes"); } catch (ex) {} return 5; }, clearPassphrase: function(win) { // clear all passphrases from gpg-agent by reloading the config if (!EnigmailCore.getService()) return; if (!gpgAgent().useGpgAgent()) { return; } let exitCode = -1; let isError = 0; const proc = { command: gpgAgent().connGpgAgentPath, arguments: [], charset: null, environment: EnigmailCore.getEnvList(), stdin: function(pipe) { pipe.write("RELOADAGENT\n"); pipe.write("/bye\n"); pipe.close(); }, stdout: function(data) { if (data.search(/^ERR/m) >= 0) { ++isError; } }, done: function(result) { exitCode = result.exitCode; } }; try { subprocess.call(proc).wait(); } catch (ex) {} if (isError === 0) { getDialog().alert(win, getLocale().getString("passphraseCleared")); } else { getDialog().alert(win, getLocale().getString("cannotClearPassphrase")); } } }; enigmail/package/pgpmimeHandler.js000066400000000000000000000064261266701624400175500ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /** * Module for handling PGP/MIME encrypted and/or signed messages * implemented as an XPCOM object */ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Components.utils.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Components.utils.import("resource://enigmail/mimeDecrypt.jsm"); /*global EnigmailMimeDecrypt: false */ Components.utils.import("resource://enigmail/mimeVerify.jsm"); /*global EnigmailVerify: false */ const Cc = Components.classes; const Ci = Components.interfaces; const PGPMIME_JS_DECRYPTOR_CONTRACTID = "@mozilla.org/mime/pgp-mime-js-decrypt;1"; const PGPMIME_JS_DECRYPTOR_CID = Components.ID("{7514cbeb-2bfd-4b2c-829b-1a4691fa0ac8}"); //////////////////////////////////////////////////////////////////// // handler for PGP/MIME encrypted and PGP/MIME signed messages // data is processed from libmime -> nsPgpMimeProxy const throwErrors = { onDataAvailable: function() { throw "error"; }, onStartRequest: function() { throw "error"; }, onStopRequest: function() { throw "error"; } }; function PgpMimeHandler() { EnigmailLog.DEBUG("mimeDecrypt.js: PgpMimeHandler()\n"); // always log this one } PgpMimeHandler.prototype = { classDescription: "Enigmail JS Decryption Handler", classID: PGPMIME_JS_DECRYPTOR_CID, contractID: PGPMIME_JS_DECRYPTOR_CONTRACTID, QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener]), inStream: Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream), onStartRequest: function(request, uri) { if (!EnigmailCore.getService()) // Ensure Enigmail is initialized return null; EnigmailLog.DEBUG("pgpmimeHandler.js: onStartRequest\n"); let mimeSvc = request.QueryInterface(Ci.nsIPgpMimeProxy); let ct = mimeSvc.contentType; let cth = null; if (ct.search(/^multipart\/encrypted/i) === 0) { // PGP/MIME encrypted message cth = new EnigmailMimeDecrypt(); } else if (ct.search(/^multipart\/signed/i) === 0) { if (ct.search(/application\/pgp-signature/i) > 0) { // PGP/MIME signed message cth = EnigmailVerify.newVerifier(); } else { // S/MIME signed message return this.handleSmime(uri); } } if (cth) { this.onDataAvailable = cth.onDataAvailable.bind(cth); this.onStopRequest = cth.onStopRequest.bind(cth); return cth.onStartRequest(request, uri); } }, onDataAvailable: function(req, sup, stream, offset, count) {}, onStopRequest: function(request, win, status) {}, handleSmime: function(uri) { this.contentHandler = throwErrors; if (uri) { uri = uri.QueryInterface(Ci.nsIURI).clone(); } let headerSink = EnigmailVerify.lastMsgWindow.msgHeaderSink.securityInfo.QueryInterface(Ci.nsIEnigMimeHeaderSink); headerSink.handleSMimeMessage(uri); } }; var NSGetFactory = XPCOMUtils.generateNSGetFactory([PgpMimeHandler]); enigmail/package/pipeConsole.jsm000066400000000000000000000012701266701624400172410ustar00rootroot00000000000000/*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailConsole"]; const MAX_SIZE = 32768; var dataCache = ""; var gotNewData = false; const EnigmailConsole = { write: function(data) { dataCache += data; if (dataCache.length > MAX_SIZE) { dataCache = dataCache.substr(-MAX_SIZE, MAX_SIZE); } gotNewData = true; }, hasNewData: function() { return gotNewData; }, getData: function() { gotNewData = false; return dataCache; } }; enigmail/package/prefs-service.js000066400000000000000000000024531266701624400173650ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ function EnigmailPrefService() {} EnigmailPrefService.prototype = { name: "enigprefs", chromePackageName: "enigmail", classID: Components.ID("{847b3ab0-7ab1-11d4-8f02-006008948af5}"), classDescription: "Enigmail Account Manager Extension Service", contractID: "@mozilla.org/accountmanager/extension;1?name=enigprefs", _xpcom_categories: [{ category: "mailnews-accountmanager-extensions", entry: "Enigmail account manager extension", service: false }], QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIMsgAccountManagerExtension]), showPanel: function(server) { // show Enigmail panel for POP3, IMAP, NNTP and "movemail" (unix) account types switch (server.type) { case "nntp": case "imap": case "pop3": case "movemail": return true; } return false; } }; var components = [EnigmailPrefService]; const NSGetFactory = XPCOMUtils.generateNSGetFactory(components); enigmail/package/prefs.jsm000066400000000000000000000120521266701624400161000ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailPrefs"]; Components.utils.import("resource://enigmail/log.jsm"); /* global EnigmailLog: false */ Components.utils.import("resource://enigmail/files.jsm"); /* global EnigmailFiles: false */ const Cc = Components.classes; const Ci = Components.interfaces; const ENIGMAIL_PREFS_ROOT = "extensions.enigmail."; const p = { service: null, branch: null, root: null }; function initPrefService() { try { p.service = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService); p.root = p.service.getBranch(null); p.branch = p.service.getBranch(ENIGMAIL_PREFS_ROOT); if (p.branch.getCharPref("logDirectory")) { EnigmailLog.setLogLevel(5); } } catch (ex) { EnigmailLog.ERROR("prefs.jsm: Error in instantiating PrefService\n"); EnigmailLog.ERROR(ex.toString()); } } var EnigmailPrefs = { getPrefRoot: function() { if (!p.branch) { initPrefService(); } return p.root; }, getPrefBranch: function() { if (!p.branch) { initPrefService(); } return p.branch; }, getPref: function(prefName) { if (!p.branch) { initPrefService(); } var prefValue = null; try { var prefType = p.branch.getPrefType(prefName); // Get pref value switch (prefType) { case p.branch.PREF_BOOL: prefValue = p.branch.getBoolPref(prefName); break; case p.branch.PREF_INT: prefValue = p.branch.getIntPref(prefName); break; case p.branch.PREF_STRING: prefValue = p.branch.getCharPref(prefName); break; default: prefValue = undefined; break; } } catch (ex) { // Failed to get pref value EnigmailLog.ERROR("enigmailCommon.jsm: getPref: unknown prefName:" + prefName + " \n"); } return prefValue; }, /** * Store a user preference. * * @param String prefName An identifier. * @param any value The value to be stored. Allowed types: Boolean OR Integer OR String. * * @return Boolean Was the value stored successfully? */ setPref: function(prefName, value) { EnigmailLog.DEBUG("enigmailCommon.jsm: setPref: " + prefName + ", " + value + "\n"); if (!p.branch) { initPrefService(); } // Discover the type of the preference, as stored in the user preferences. // If the preference identifier doesn't exist yet, it returns 0. In that // case the type depends on the argument "value". var prefType; prefType = p.branch.getPrefType(prefName); if (prefType === 0) { switch (typeof value) { case "boolean": prefType = p.branch.PREF_BOOL; break; case "number": prefType = p.branch.PREF_INT; break; case "string": prefType = p.branch.PREF_STRING; break; default: prefType = 0; break; } } var retVal = false; // Save the preference only and if only the type is bool, int or string. switch (prefType) { case p.branch.PREF_BOOL: p.branch.setBoolPref(prefName, value); retVal = true; break; case p.branch.PREF_INT: p.branch.setIntPref(prefName, value); retVal = true; break; case p.branch.PREF_STRING: p.branch.setCharPref(prefName, value); retVal = true; break; default: break; } return retVal; }, /** * Save the Mozilla preferences file (prefs.js) * * no return value */ savePrefs: function() { EnigmailLog.DEBUG("enigmailCommon.js: savePrefs\n"); try { p.service.savePrefFile(null); } catch (ex) {} }, /** * Compiles all Enigmail preferences into an object */ getAllPrefs: function() { EnigmailLog.DEBUG("prefs.js: getAllPrefs\n"); var retObj = { value: 0 }; var branch = this.getPrefBranch(); var allPrefs = branch.getChildList("", retObj); var prefObj = {}; var nsIPB = Components.interfaces.nsIPrefBranch; for (var q in allPrefs) { var name = allPrefs[q]; /* * agentPath is system-depend, configuredVersion build-depend and * advancedUser must be set in order to save the profile. */ if (name == "agentPath" || name == "configuredVersion") { continue; } switch (branch.getPrefType(name)) { case nsIPB.PREF_STRING: prefObj[name] = branch.getCharPref(name); break; case nsIPB.PREF_INT: prefObj[name] = branch.getIntPref(name); break; case nsIPB.PREF_BOOL: prefObj[name] = branch.getBoolPref(name); break; default: EnigmailLog.ERROR("Pref '" + name + "' has unknown type\n"); } } return prefObj; } }; enigmail/package/prefs/000077500000000000000000000000001266701624400153655ustar00rootroot00000000000000enigmail/package/prefs/.eslintrc.js000066400000000000000000000000671266701624400176270ustar00rootroot00000000000000module.exports = { "rules": { "strict": 0, } } enigmail/package/prefs/enigmail.js000077500000000000000000000171701266701624400175210ustar00rootroot00000000000000/* global pref: false */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** * Default pref values for Enigmail */ // the last configured Enigmail version pref("extensions.enigmail.configuredVersion", ""); // Hide prefs and menu entries from non-advanced users pref("extensions.enigmail.advancedUser", false); // additional parameter(s) to pass to GnuPG pref("extensions.enigmail.agentAdditionalParam", ""); // path to gpg executable pref("extensions.enigmail.agentPath", ""); // allow empty subject line without asking for confirmation pref("extensions.enigmail.allowEmptySubject", false); // ** enigmail keySel preferences: // use rules to assign keys pref("extensions.enigmail.assignKeysByRules", true); // use email addresses to assign keys pref("extensions.enigmail.assignKeysByEmailAddr", true); // use manual dialog to assign missing keys pref("extensions.enigmail.assignKeysManuallyIfMissing", true); // always srats manual dialog for keys pref("extensions.enigmail.assignKeysManuallyAlways", false); // automatically download missing keys from keyserver pref("extensions.enigmail.autoKeyRetrieve", ""); // enable automatically decrypt/verify pref("extensions.enigmail.autoDecrypt", true); // enable X-Enigmail-xxx headers pref("extensions.enigmail.addHeaders", false); // countdown for alerts when composing inline PGP HTML msgs pref("extensions.enigmail.composeHtmlAlertCount", 3); // prefer S/MIME or PGP/MIME (0: PGP/MIME, 1: ask, 2: S/MIME) pref("extensions.enigmail.mimePreferPgp", 1); // show warning message when clicking on sign icon pref("extensions.enigmail.displaySignWarn", true); // display warning as info for partially signed message pref("extensions.enigmail.displayPartiallySigned", true); // try to match secondary uid to from address pref("extensions.enigmail.displaySecondaryUid", true); // treat '-- ' as signature separator pref("extensions.enigmail.doubleDashSeparator", true); // last state of dialog to choose encryption method if there are attachments pref("extensions.enigmail.encryptAttachments", 1); // skip the attachments dialog pref("extensions.enigmail.encryptAttachmentsSkipDlg", 0); // Encrypt to self pref("extensions.enigmail.encryptToSelf", true); // enable 'Decrypt & open' for double click on attachment (if possible) pref("extensions.enigmail.handleDoubleClick", true); // disable '<' and '>' around email addresses pref("extensions.enigmail.hushMailSupport", false); // display alert for 'failed to initialize enigmime' pref("extensions.enigmail.initAlert", true); // use -a for encrypting attachments for inline PGP pref("extensions.enigmail.inlineAttachAsciiArmor", false); // extension to append for inline-encrypted attachments pref("extensions.enigmail.inlineAttachExt", ".pgp"); // extension to append for inline-signed attachments pref("extensions.enigmail.inlineSigAttachExt", ".sig"); // debug log directory (if set, also enabled debugging) pref("extensions.enigmail.logDirectory", ""); // display all or no keys by default in the key manager pref("extensions.enigmail.keyManShowAllKeys", true); // list of keyservers to use pref("extensions.enigmail.keyserver", "pool.sks-keyservers.net, keys.gnupg.net, pgp.mit.edu"); // auto select the first keyserver in the key server list pref("extensions.enigmail.autoKeyServerSelection", true); // keep passphrase for ... minutes pref("extensions.enigmail.maxIdleMinutes", 5); // GnuPG hash algorithm // 0: automatic seletion (i.e. let GnuPG choose) // 1: SHA1, 2: RIPEMD160, 3: SHA256, 4: SHA384, 5: SHA512, 6: SHA224 pref("extensions.enigmail.mimeHashAlgorithm", 0); // no passphrase for GnuPG key needed pref("extensions.enigmail.noPassphrase", false); // show quoted printable warning message (and remember selected state) pref("extensions.enigmail.quotedPrintableWarn", 0); // use http proxy settings as set in Mozilla/Thunderbird pref("extensions.enigmail.respectHttpProxy", true); // selection for which encryption model to prefer // 0: convenient encryption settings DEFAULT // 1: manual encryption settings pref("extensions.enigmail.encryptionModel", 0); // enable encryption for replies to encrypted mails pref("extensions.enigmail.keepSettingsForReply", true); // Warn if a key expires in less than N days. // 0 will disable the check pref("extensions.enigmail.warnKeyExpiryNumDays", 30); // holds the last result of the dayily key expiry check pref("extensions.enigmail.keyCheckResult", ""); // selection for which keys to accept // 0: accept valid/authenticated keys // 1: accept all keys (except disabled, ...) DEFAULT pref("extensions.enigmail.acceptedKeys", 1); // selection for automatic send encrypted if all keys valid // 0: never // 1: if all keys found and accepted DEFAULT pref("extensions.enigmail.autoSendEncrypted", 1); // ask to confirm before sending // 0: never DEFAULT // 1: always // 2: if send encrypted // 3: if send unencrypted // 4: if send (un)encrypted due to rules pref("extensions.enigmail.confirmBeforeSending", 0); // use GnuPG's default instead of Enigmail/Mozilla comment of for signed messages pref("extensions.enigmail.useDefaultComment", true); // allow encryption to newsgroups pref("extensions.enigmail.encryptToNews", false); pref("extensions.enigmail.warnOnSendingNewsgroups", true); // use gpg passphrase agent for passphrase handling pref("extensions.enigmail.useGpgAgent", false); // use PGP/MIME (0=never, 1=allow, 2=always) // pref("extensions.enigmail.usePGPMimeOption",1); -- OBSOLETE, see mail.identity.default.pgpMimeMode // enable using gpgkeys_* pref("extensions.enigmail.useGpgKeysTool", true); // show "conflicting rules" message (and remember selected state) pref("extensions.enigmail.warnOnRulesConflict", 0); // display a warning when the passphrase is cleared pref("extensions.enigmail.warnClearPassphrase", true); // display a warning if the GnuPG version is deprecated pref("extensions.enigmail.warnDeprecatedGnuPG", true); // warn if gpg-agent is found and "remember passphrase for X minutes is active" pref("extensions.enigmail.warnGpgAgentAndIdleTime", true); // display a warning when all keys are to be refreshed pref("extensions.enigmail.warnRefreshAll", true); // display a warning when the keys for all contacts are downloaded pref("extensions.enigmail.warnDownloadContactKeys", true); // wrap HTML messages before sending inline PGP messages pref("extensions.enigmail.wrapHtmlBeforeSend", true); // enable encryption/signing of headers like subject, from, to pref("extensions.enigmail.protectHeaders", false); pref("extensions.enigmail.protectedSubjectText", ""); // enable experimental features. // WARNING: such features may unfinished functions or tests that can break // existing functionality in Enigmail and Thunderbird! pref("extensions.enigmail.enableExperiments", false); /* Default pref values for the enigmail per-identity settings */ pref("mail.identity.default.enablePgp", false); pref("mail.identity.default.pgpkeyId", ""); pref("mail.identity.default.pgpKeyMode", 0); pref("mail.identity.default.pgpSignPlain", false); pref("mail.identity.default.pgpSignEncrypted", false); pref("mail.identity.default.defaultSigningPolicy", 0); pref("mail.identity.default.defaultEncryptionPolicy", 0); pref("mail.identity.default.openPgpHeaderMode", 0); pref("mail.identity.default.openPgpUrlName", ""); pref("mail.identity.default.pgpMimeMode", true); pref("mail.identity.default.attachPgpKey", false); pref("mail.identity.default.autoEncryptDrafts", true); /* Other settings (change Mozilla behaviour) */ // disable flowed text by default pref("mailnews.send_plaintext_flowed", false); enigmail/package/promise.jsm000066400000000000000000000014271266701624400164430ustar00rootroot00000000000000/*global Components: false */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /* This module is a shim module to make it easier to load Promise from the various potential sources */ var EXPORTED_SYMBOLS = ["Promise"]; const Cu = Components.utils; var scope = {}; try { Cu.import("resource://gre/modules/Promise.jsm", scope); // Gecko >= 25 } catch (ex) { try { Cu.import("resource://gre/modules/commonjs/sdk/core/promise.js", scope); // Gecko 21 to 24} } catch (ex2) { Cu.import("resource://gre/modules/commonjs/promise/core.js", scope); // Gecko 17 to 20 } } var Promise = scope.Promise; enigmail/package/protocolHandler.jsm000066400000000000000000000156121266701624400201250ustar00rootroot00000000000000/*global Components: false, EnigmailCore: false, XPCOMUtils: false, EnigmailData: false, EnigmailLog: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailProtocolHandler"]; Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); Components.utils.import("resource://enigmail/core.jsm"); Components.utils.import("resource://enigmail/data.jsm"); Components.utils.import("resource://enigmail/log.jsm"); Components.utils.import("resource://enigmail/streams.jsm"); /*global EnigmailStreams: false */ Components.utils.import("resource://enigmail/uris.jsm"); /*global EnigmailURIs: false */ Components.utils.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ const NS_SIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1"; const NS_ENIGMAILPROTOCOLHANDLER_CONTRACTID = "@mozilla.org/network/protocol;1?name=enigmail"; const NS_ENIGMAILPROTOCOLHANDLER_CID = Components.ID("{847b3a11-7ab1-11d4-8f02-006008948af5}"); const ASS_CONTRACTID = "@mozilla.org/appshell/appShellService;1"; const WMEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1"; const Cc = Components.classes; const Ci = Components.interfaces; const nsIProtocolHandler = Ci.nsIProtocolHandler; var EC = EnigmailCore; const gDummyPKCS7 = 'Content-Type: multipart/mixed;\r\n boundary="------------060503030402050102040303\r\n\r\nThis is a multi-part message in MIME format.\r\n--------------060503030402050102040303\r\nContent-Type: application/x-pkcs7-mime\r\nContent-Transfer-Encoding: 8bit\r\n\r\n\r\n--------------060503030402050102040303\r\nContent-Type: application/x-enigmail-dummy\r\nContent-Transfer-Encoding: 8bit\r\n\r\n\r\n--------------060503030402050102040303--\r\n'; function EnigmailProtocolHandler() {} EnigmailProtocolHandler.prototype = { classDescription: "Enigmail Protocol Handler", classID: NS_ENIGMAILPROTOCOLHANDLER_CID, contractID: NS_ENIGMAILPROTOCOLHANDLER_CONTRACTID, scheme: "enigmail", defaultPort: -1, protocolFlags: nsIProtocolHandler.URI_INHERITS_SECURITY_CONTEXT | nsIProtocolHandler.URI_LOADABLE_BY_ANYONE | nsIProtocolHandler.URI_NORELATIVE | nsIProtocolHandler.URI_NOAUTH | nsIProtocolHandler.URI_OPENING_EXECUTES_SCRIPT, QueryInterface: XPCOMUtils.generateQI([nsIProtocolHandler]), newURI: function(aSpec, originCharset, aBaseURI) { EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newURI: aSpec='" + aSpec + "'\n"); // cut of any parameters potentially added to the URI; these cannot be handled if (aSpec.substr(0, 14) == "enigmail:dummy") aSpec = "enigmail:dummy"; var uri = Cc[NS_SIMPLEURI_CONTRACTID].createInstance(Ci.nsIURI); uri.spec = aSpec; return uri; }, newChannel: function(aURI) { EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newChannel: URI='" + aURI.spec + "'\n"); var messageId = EnigmailData.extractMessageId(aURI.spec); var mimeMessageId = EnigmailData.extractMimeMessageId(aURI.spec); var contentType, contentCharset, contentData; if (messageId) { // Handle enigmail:message/... if (!EC.getEnigmailService()) { throw Components.results.NS_ERROR_FAILURE; } if (EnigmailURIs.getMessageURI(messageId)) { var messageUriObj = EnigmailURIs.getMessageURI(messageId); contentType = messageUriObj.contentType; contentCharset = messageUriObj.contentCharset; contentData = messageUriObj.contentData; EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.newChannel: messageURL=" + messageUriObj.originalUrl + ", content length=" + contentData.length + ", " + contentType + ", " + contentCharset + "\n"); // do NOT delete the messageUriObj now from the list, this will be done once the message is unloaded (fix for bug 9730). } else if (mimeMessageId) { this.handleMimeMessage(mimeMessageId); } else { contentType = "text/plain"; contentCharset = ""; contentData = "Enigmail error: invalid URI " + aURI.spec; } let channel = EnigmailStreams.newStringChannel(aURI, contentType, "UTF-8", contentData); return channel; } if (aURI.spec.indexOf(aURI.scheme + "://photo/") === 0) { // handle photo ID contentType = "image/jpeg"; contentCharset = ""; let keyId = aURI.spec.substr(17); let exitCodeObj = {}; let errorMsgObj = {}; let f = EnigmailKeyRing.getPhotoFile(keyId, 0, exitCodeObj, errorMsgObj); if (exitCodeObj.value === 0) { let channel = EnigmailStreams.newFileChannel(aURI, f, "image/jpeg", true); return channel; } return null; } if (aURI.spec == aURI.scheme + ":dummy") { // Dummy PKCS7 content (to access mimeEncryptedClass) return EnigmailStreams.newStringChannel(aURI, "message/rfc822", "", gDummyPKCS7); } var winName, spec; if (aURI.spec == "about:" + aURI.scheme) { // About Enigmail // winName = "about:"+enigmail; winName = "about:enigmail"; spec = "chrome://enigmail/content/enigmailAbout.xul"; } else if (aURI.spec == aURI.scheme + ":console") { // Display enigmail console messages winName = "enigmail:console"; spec = "chrome://enigmail/content/enigmailConsole.xul"; } else if (aURI.spec == aURI.scheme + ":keygen") { // Display enigmail key generation console winName = "enigmail:keygen"; spec = "chrome://enigmail/content/enigmailKeygen.xul"; } else { // Display Enigmail about page winName = "about:enigmail"; spec = "chrome://enigmail/content/enigmailAbout.xul"; } var windowManager = Cc[WMEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); var winEnum = windowManager.getEnumerator(null); var recentWin = null; while (winEnum.hasMoreElements() && !recentWin) { var thisWin = winEnum.getNext(); if (thisWin.location.href == spec) { recentWin = thisWin; } } if (recentWin) { recentWin.focus(); } else { var appShellSvc = Cc[ASS_CONTRACTID].getService(Ci.nsIAppShellService); var domWin = appShellSvc.hiddenDOMWindow; domWin.open(spec, "_blank", "chrome,menubar,toolbar,resizable"); } throw Components.results.NS_ERROR_FAILURE; }, handleMimeMessage: function(messageId) { // EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.handleMimeMessage: messageURL="+messageUriObj.originalUrl+", content length="+contentData.length+", "+contentType+", "+contentCharset+"\n"); EnigmailLog.DEBUG("enigmail.js: EnigmailProtocolHandler.handleMimeMessage: messageURL=, content length=, , \n"); }, allowPort: function(port, scheme) { // non-standard ports are not allowed return false; } }; enigmail/package/rules.jsm000077500000000000000000000441271266701624400161260ustar00rootroot00000000000000/*global Components: false, EnigmailFuncs: false, EnigmailLog: false, EnigmailOS: false, EnigmailFiles: false, EnigmailApp: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailRules"]; Components.utils.import("resource://enigmail/funcs.jsm"); Components.utils.import("resource://enigmail/log.jsm"); Components.utils.import("resource://enigmail/os.jsm"); Components.utils.import("resource://enigmail/files.jsm"); Components.utils.import("resource://enigmail/app.jsm"); Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Components.utils.import("resource://enigmail/constants.jsm"); /*global EnigmailConstants: false */ Components.utils.import("resource://enigmail/dialog.jsm"); /*global EnigmailDialog: false */ const Cc = Components.classes; const Ci = Components.interfaces; const NS_RDONLY = 0x01; const NS_WRONLY = 0x02; const NS_CREATE_FILE = 0x08; const NS_TRUNCATE = 0x20; const DEFAULT_FILE_PERMS = 0x180; // equals 0600 const NS_DOMPARSER_CONTRACTID = "@mozilla.org/xmlextras/domparser;1"; const NS_DOMSERIALIZER_CONTRACTID = "@mozilla.org/xmlextras/xmlserializer;1"; const rulesListHolder = { rulesList: null }; var EnigmailRules = { getRulesFile: function() { EnigmailLog.DEBUG("rules.jsm: getRulesFile()\n"); var rulesFile = EnigmailApp.getProfileDirectory(); rulesFile.append("pgprules.xml"); return rulesFile; }, loadRulesFile: function() { var flags = NS_RDONLY; var rulesFile = this.getRulesFile(); if (rulesFile.exists()) { var fileContents = EnigmailFiles.readFile(rulesFile); return this.loadRulesFromString(fileContents); } return false; }, loadRulesFromString: function(contents) { EnigmailLog.DEBUG("rules.jsm: loadRulesFromString()\n"); if (contents.length === 0 || contents.search(/^\s*$/) === 0) { return false; } var domParser = Cc[NS_DOMPARSER_CONTRACTID].createInstance(Ci.nsIDOMParser); rulesListHolder.rulesList = domParser.parseFromString(contents, "text/xml"); return true; }, saveRulesFile: function() { EnigmailLog.DEBUG("rules.jsm: saveRulesFile()\n"); var flags = NS_WRONLY | NS_CREATE_FILE | NS_TRUNCATE; var domSerializer = Cc[NS_DOMSERIALIZER_CONTRACTID].createInstance(Ci.nsIDOMSerializer); var rulesFile = this.getRulesFile(); if (rulesFile) { if (rulesListHolder.rulesList) { // the rule list is not empty -> write into file return EnigmailFiles.writeFileContents(rulesFile.path, domSerializer.serializeToString(rulesListHolder.rulesList.firstChild), DEFAULT_FILE_PERMS); } else { // empty rule list -> delete rules file try { rulesFile.remove(false); } catch (ex) {} return true; } } else { return false; } }, getRulesData: function(rulesListObj) { EnigmailLog.DEBUG("rules.jsm: getRulesData()\n"); var ret = true; if (!rulesListHolder.rulesList) { ret = this.loadRulesFile(); } if (rulesListHolder.rulesList) { rulesListObj.value = rulesListHolder.rulesList; return ret; } rulesListObj.value = null; return false; }, addRule: function(appendToEnd, toAddress, keyList, sign, encrypt, pgpMime, flags) { EnigmailLog.DEBUG("rules.jsm: addRule()\n"); if (!rulesListHolder.rulesList) { var domParser = Cc[NS_DOMPARSER_CONTRACTID].createInstance(Ci.nsIDOMParser); rulesListHolder.rulesList = domParser.parseFromString("", "text/xml"); } var negate = (flags & 1); var rule = rulesListHolder.rulesList.createElement("pgpRule"); rule.setAttribute("email", toAddress); rule.setAttribute("keyId", keyList); rule.setAttribute("sign", sign); rule.setAttribute("encrypt", encrypt); rule.setAttribute("pgpMime", pgpMime); rule.setAttribute("negateRule", flags); var origFirstChild = rulesListHolder.rulesList.firstChild.firstChild; if (origFirstChild && (!appendToEnd)) { rulesListHolder.rulesList.firstChild.insertBefore(rule, origFirstChild); rulesListHolder.rulesList.firstChild.insertBefore(rulesListHolder.rulesList.createTextNode(EnigmailOS.isDosLike() ? "\r\n" : "\n"), origFirstChild); } else { rulesListHolder.rulesList.firstChild.appendChild(rule); rulesListHolder.rulesList.firstChild.appendChild(rulesListHolder.rulesList.createTextNode(EnigmailOS.isDosLike() ? "\r\n" : "\n")); } }, clearRules: function() { rulesListHolder.rulesList = null; }, registerOn: function(target) { target.getRulesFile = EnigmailRules.getRulesFile; target.loadRulesFile = EnigmailRules.loadRulesFile; target.loadRulesFromString = EnigmailRules.loadRulesFromString; target.saveRulesFile = EnigmailRules.saveRulesFile; target.getRulesData = EnigmailRules.getRulesData; target.addRule = EnigmailRules.addRule; target.clearRules = EnigmailRules.clearRules; }, DEBUG_EmailList: function(name, list) { EnigmailLog.DEBUG(" " + name + ":\n"); for (let i = 0; i < list.length; i++) { let elem = list[i]; let str = " [" + i + "]: "; if (elem.orig) { str += "orig: '" + elem.orig + "' "; } if (elem.addr) { str += "addr: '" + elem.addr + "' "; } if (elem.keys) { str += "keys: '" + elem.keys + "' "; } EnigmailLog.DEBUG(str + "\n"); } }, /** * process resulting sign/encryp/pgpMime mode for passed string of email addresses and * use rules and interactive rule dialog to replace emailAddrsStr by known keys * Input parameters: * @emailAddrsStr: comma and space separated string of addresses to process * @startDialogForMissingKeys: true: start dialog for emails without key(s) * Output parameters: * @matchedKeysObj.value: comma separated string of matched keys AND email addresses for which no key was found (or "") * @matchedKeysObj.addrKeysList: all email/keys mappings (array of objects with addr as string and keys as comma separated string) * (does NOT contain emails for which no key was found) * @matchedKeysObj.addrNoKeyList: list of emails that don't have a key according to rules * @flagsObj: return value for combined sign/encrype/pgpMime mode * values might be: 0='never', 1='maybe', 2='always', 3='conflict' * * @return: false if error occurred or processing was canceled */ mapAddrsToKeys: function(emailAddrsStr, startDialogForMissingKeys, window, matchedKeysObj, flagsObj) { EnigmailLog.DEBUG("rules.jsm: mapAddrsToKeys(): emailAddrsStr=\"" + emailAddrsStr + "\" startDialogForMissingKeys=" + startDialogForMissingKeys + "\n"); const nsIEnigmail = Components.interfaces.nsIEnigmail; let enigmailSvc = EnigmailCore.getService(); if (!enigmailSvc) { return false; } // initialize return value and the helper variables for them: matchedKeysObj.value = ""; flagsObj.value = false; let flags = {}; // object to be able to modify flags in subfunction flags.sign = EnigmailConstants.ENIG_UNDEF; // default sign flag is: maybe flags.encrypt = EnigmailConstants.ENIG_UNDEF; // default encrypt flag is: maybe flags.pgpMime = EnigmailConstants.ENIG_UNDEF; // default pgpMime flag is: maybe // create openList: list of addresses not processed by rules yet // - each entry has // - orig: the original full email address // - addr: the lowercased pure email address to check against rules and keys // - elements will be moved // - to addrKeysList if a matching rule with keys was found // - to addrNoKeyList if a rule with "do not process further rules" ("." as key) applies let emailAddrList = ("," + emailAddrsStr + ",").split(/\s*,\s*/); // TODO: we split with , and spaces around // BUT what if , is in "..." part of an email? // => use lists!!! let openList = []; for (let i = 0; i < emailAddrList.length; ++i) { let orig = emailAddrList[i]; if (orig) { let addr = EnigmailFuncs.stripEmail(orig.toLowerCase()); if (addr) { let elem = { orig: orig, addr: addr }; openList.push(elem); } } } //this.DEBUG_EmailList("openList", openList); let addrKeysList = []; // NEW: list of found email addresses and their associated keys let addrNoKeyList = []; // NEW: list of email addresses that have no key according to rules // process recipient rules let rulesListObj = {}; if (this.getRulesData(rulesListObj)) { let rulesList = rulesListObj.value; if (rulesList.firstChild.nodeName == "parsererror") { EnigmailDialog.alert(window, "Invalid pgprules.xml file:\n" + rulesList.firstChild.textContent); return false; } EnigmailLog.DEBUG("rules.jsm: mapAddrsToKeys(): rules successfully loaded; now process them\n"); // go through all rules to find match with email addresses // - note: only if the key field has a value, an address is done with processing for (let node = rulesList.firstChild.firstChild; node; node = node.nextSibling) { if (node.tagName == "pgpRule") { try { let rule = {}; rule.email = node.getAttribute("email"); if (!rule.email) { continue; } rule.negate = false; if (node.getAttribute("negateRule")) { rule.negate = Number(node.getAttribute("negateRule")); } if (!rule.negate) { rule.keyId = node.getAttribute("keyId"); rule.sign = node.getAttribute("sign"); rule.encrypt = node.getAttribute("encrypt"); rule.pgpMime = node.getAttribute("pgpMime"); this.mapRuleToKeys(rule, openList, flags, addrKeysList, addrNoKeyList); } // no negate rule handling (turned off in dialog) } catch (ex) { EnigmailLog.DEBUG("rules.jsm: mapAddrsToKeys(): ignore exception: " + ex.description + "\n"); } } } } // NOTE: here we have // - openList: the addresses not having any key assigned yet // (and not marked as don't process any other rule) // - addresses with "don't process other rules" are in addrNoKeyList //this.DEBUG_EmailList("openList", openList); //this.DEBUG_EmailList("addrKeysList", addrKeysList); //this.DEBUG_EmailList("addrnoKeyList", addrnoKeyList); // if requested: start dialog to add new rule for each missing key if (startDialogForMissingKeys) { let inputObj = {}; let resultObj = {}; for (let i = 0; i < openList.length; i++) { let theAddr = openList[i].addr; // start dialog only if the email address contains a @ or no 0x at the beginning: // - reason: newsgroups have neither @ nor 0x if (theAddr.indexOf("@") != -1 || theAddr.indexOf("0x") !== 0) { inputObj.toAddress = "{" + theAddr + "}"; inputObj.options = ""; inputObj.command = "add"; window.openDialog("chrome://enigmail/content/enigmailSingleRcptSettings.xul", "", "dialog,modal,centerscreen,resizable", inputObj, resultObj); if (resultObj.cancelled === true) { return false; } if (!resultObj.negate) { this.mapRuleToKeys(resultObj, openList, flags, addrKeysList, addrNoKeyList); } // no negate rule handling (turned off in dialog) } } } // return value of OLD interface: // IFF we found keys, return keys AND unprocessed addresses in matchedKeysObj.value as comma-separated string if (addrKeysList.length > 0) { let tmpList = addrKeysList.concat(addrNoKeyList).concat(openList); matchedKeysObj.value = tmpList[0].keys; for (let idx = 1; idx < tmpList.length; ++idx) { if (tmpList[idx].keys) { matchedKeysObj.value += ", " + tmpList[idx].keys; } else { matchedKeysObj.value += ", " + tmpList[idx].addr; } } // sort key list and make it unique? } // return value of NEW interface: // return // - in matchedKeysObj.addrKeysList: found email/keys mappings (array of objects with addr and keys) // - in matchedKeysObj.addrNoKeyList: list of unprocessed emails matchedKeysObj.addrKeysList = addrKeysList; if (openList.length > 0) { matchedKeysObj.addrNoKeyList = addrNoKeyList.concat(openList); } else { matchedKeysObj.addrNoKeyList = addrNoKeyList; } // return result from combining flags flagsObj.sign = flags.sign; flagsObj.encrypt = flags.encrypt; flagsObj.pgpMime = flags.pgpMime; flagsObj.value = true; EnigmailLog.DEBUG(" found keys:\n"); for (let i = 0; i < matchedKeysObj.addrKeysList.length; i++) { EnigmailLog.DEBUG(" " + matchedKeysObj.addrKeysList[i].addr + ": " + matchedKeysObj.addrKeysList[i].keys + "\n"); } EnigmailLog.DEBUG(" addresses without keys:\n"); for (let i = 0; i < matchedKeysObj.addrNoKeyList.length; i++) { EnigmailLog.DEBUG(" " + matchedKeysObj.addrNoKeyList[i].addr + "\n"); } EnigmailLog.DEBUG(" old returned value:\n"); EnigmailLog.DEBUG(" " + matchedKeysObj.value + "\n"); return true; }, mapRuleToKeys: function(rule, openList, flags, addrKeysList, addrNoKeyList) { //EnigmailLog.DEBUG("rules.jsm: mapRuleToKeys() rule.email='" + rule.email + "'\n"); let ruleList = rule.email.toLowerCase().split(/[ ,;]+/); for (let ruleIndex = 0; ruleIndex < ruleList.length; ++ruleIndex) { let ruleEmailElem = ruleList[ruleIndex]; // ruleEmailElem has format such as '{name@qqq.de}' or '@qqq' or '{name' or '@qqq.de}' //EnigmailLog.DEBUG(" process ruleElem: '" + ruleEmailElem + "'\n"); for (let openIndex = 0; openIndex < openList.length; ++openIndex) { let addr = openList[openIndex].addr; // search with { and } around because these are used a begin and end markers in the rules: let idx = ('{' + addr + '}').indexOf(ruleEmailElem); if (idx >= 0) { if (ruleEmailElem == rule.email) { EnigmailLog.DEBUG("rules.jsm: mapRuleToKeys(): for '" + addr + "' ('" + openList[openIndex].orig + "') found matching rule element '" + ruleEmailElem + "'\n"); } else { EnigmailLog.DEBUG("rules.jsm: mapRuleToKeys(): for '" + addr + "' ('" + openList[openIndex].orig + "') found matching rule element '" + ruleEmailElem + "' from '" + rule.email + "'\n"); } // process rule: // NOTE: rule.keyId might be: // - keys: => assign keys to all matching emails // and mark matching address as no longer open // - ".": signals "Do not check further rules for the matching address" // => mark all matching address as no longer open, but assign no keys // (thus, add it to the addrNoKeyList) // - empty: Either if "Continue with next rule for the matching address" // OR: if "Use the following OpenPGP keys:" with no keys and // warning (will turn off encryption) acknowledged // => then we only process the flags // process sign/encrypt/ppgMime settings flags.sign = this.combineFlagValues(flags.sign, Number(rule.sign)); flags.encrypt = this.combineFlagValues(flags.encrypt, Number(rule.encrypt)); flags.pgpMime = this.combineFlagValues(flags.pgpMime, Number(rule.pgpMime)); if (rule.keyId) { // move found address from openAdresses to corresponding list (with keys added) let elem = openList.splice(openIndex, 1)[0]; --openIndex; // IMPORTANT because we remove element in the array we iterate on if (rule.keyId != ".") { // keys exist: assign keys as comma-separated string let ids = rule.keyId.replace(/[ ,;]+/g, ", "); elem.keys = ids; addrKeysList.push(elem); } else { // '.': no further rule processing and no key: addr was (finally) processed but without any key addrNoKeyList.push(elem); } } } } } }, /** * check for the attribute of type "sign"/"encrypt"/"pgpMime" of the passed node * and combine its value with oldVal and check for conflicts * values might be: 0='never', 1='maybe', 2='always', 3='conflict' * @oldVal: original input value * @newVal: new value to combine with * @return: result value after applying the rule (0/1/2) * and combining it with oldVal */ combineFlagValues: function(oldVal, newVal) { //EnigmailLog.DEBUG("rules.jsm: combineFlagValues(): oldVal=" + oldVal + " newVal=" + newVal + "\n"); // conflict remains conflict if (oldVal === EnigmailConstants.ENIG_CONFLICT) { return EnigmailConstants.ENIG_CONFLICT; } // 'never' and 'always' triggers conflict: if ((oldVal === EnigmailConstants.ENIG_NEVER && newVal === EnigmailConstants.ENIG_ALWAYS) || (oldVal === EnigmailConstants.ENIG_ALWAYS && newVal === EnigmailConstants.ENIG_NEVER)) { return EnigmailConstants.ENIG_CONFLICT; } // if there is any 'never' return 'never' // - thus: 'never' and 'maybe' => 'never' if (oldVal === EnigmailConstants.ENIG_NEVER || newVal === EnigmailConstants.ENIG_NEVER) { return EnigmailConstants.ENIG_NEVER; } // if there is any 'always' return 'always' // - thus: 'always' and 'maybe' => 'always' if (oldVal === EnigmailConstants.ENIG_ALWAYS || newVal === EnigmailConstants.ENIG_ALWAYS) { return EnigmailConstants.ENIG_ALWAYS; } // here, both values are 'maybe', which we return then return EnigmailConstants.ENIG_UNDEF; // maybe }, }; enigmail/package/streams.jsm000066400000000000000000000116451266701624400164460ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailStreams"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://gre/modules/XPCOMUtils.jsm"); /*global XPCOMUtils: false */ Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/timer.jsm"); /*global EnigmailTimer: false */ const NS_STRING_INPUT_STREAM_CONTRACTID = "@mozilla.org/io/string-input-stream;1"; const NS_INPUT_STREAM_CHNL_CONTRACTID = "@mozilla.org/network/input-stream-channel;1"; const EnigmailStreams = { /** * create an nsIStreamListener object to read String data from an nsIInputStream * * @onStopCallback: Function - function(data) that is called when the stream has stopped * string data is passed as |data| * * @return: the nsIStreamListener to pass to the stream */ newStringStreamListener: function(onStopCallback) { EnigmailLog.DEBUG("enigmailCommon.jsm: newStreamListener\n"); return { data: "", inStream: Cc["@mozilla.org/binaryinputstream;1"].createInstance(Ci.nsIBinaryInputStream), _onStopCallback: onStopCallback, QueryInterface: XPCOMUtils.generateQI([Ci.nsIStreamListener, Ci.nsIRequestObserver]), onStartRequest: function(channel, ctxt) { // EnigmailLog.DEBUG("enigmailCommon.jsm: stringListener.onStartRequest\n"); }, onStopRequest: function(channel, ctxt, status) { // EnigmailLog.DEBUG("enigmailCommon.jsm: stringListener.onStopRequest: "+ctxt+"\n"); this.inStream = null; var cbFunc = this._onStopCallback; var cbData = this.data; EnigmailTimer.setTimeout(function _cb() { cbFunc(cbData); }); }, onDataAvailable: function(req, sup, stream, offset, count) { // get data from stream // EnigmailLog.DEBUG("enigmailCommon.jsm: stringListener.onDataAvailable: "+count+"\n"); this.inStream.setInputStream(stream); this.data += this.inStream.readBytes(count); } }; }, /** * create a nsIInputStream object that is fed with string data * * @uri: nsIURI - object representing the URI that will deliver the data * @contentType: String - the content type as specified in nsIChannel * @contentCharset: String - the character set; automatically determined if null * @data: String - the data to feed to the stream * * @return nsIChannel object */ newStringChannel: function(uri, contentType, contentCharset, data) { EnigmailLog.DEBUG("enigmailCommon.jsm: newStringChannel\n"); const inputStream = Cc[NS_STRING_INPUT_STREAM_CONTRACTID].createInstance(Ci.nsIStringInputStream); inputStream.setData(data, -1); if (!contentCharset || contentCharset.length === 0) { const ioServ = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); const netUtil = ioServ.QueryInterface(Ci.nsINetUtil); const newCharset = {}; const hadCharset = {}; let mimeType; try { // Gecko >= 43 mimeType = netUtil.parseResponseContentType(contentType, newCharset, hadCharset); } catch (ex) { // Gecko < 43 mimeType = netUtil.parseContentType(contentType, newCharset, hadCharset); } contentCharset = newCharset.value; } const isc = Cc[NS_INPUT_STREAM_CHNL_CONTRACTID].createInstance(Ci.nsIInputStreamChannel); isc.setURI(uri); isc.contentStream = inputStream; const chan = isc.QueryInterface(Ci.nsIChannel); if (contentType && contentType.length) chan.contentType = contentType; if (contentCharset && contentCharset.length) chan.contentCharset = contentCharset; EnigmailLog.DEBUG("enigmailCommon.jsm: newStringChannel - done\n"); return chan; }, newFileChannel: function(uri, file, contentType, deleteOnClose) { EnigmailLog.DEBUG("enigmailCommon.jsm: newFileChannel for '" + file.path + "'\n"); let inputStream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); let behaviorFlags = Ci.nsIFileInputStream.CLOSE_ON_EOF; if (deleteOnClose) { behaviorFlags |= Ci.nsIFileInputStream.DELETE_ON_CLOSE; } const ioFlags = 0x01; // readonly const perm = 0; inputStream.init(file, ioFlags, perm, behaviorFlags); const isc = Cc[NS_INPUT_STREAM_CHNL_CONTRACTID].createInstance(Ci.nsIInputStreamChannel); isc.setURI(uri); isc.contentStream = inputStream; const chan = isc.QueryInterface(Ci.nsIChannel); if (contentType && contentType.length) chan.contentType = contentType; EnigmailLog.DEBUG("enigmailCommon.jsm: newStringChannel - done\n"); return chan; } }; enigmail/package/system.jsm000066400000000000000000000160501266701624400163070ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailSystem"]; Components.utils.import("resource://gre/modules/ctypes.jsm"); /* global ctypes: false */ Components.utils.import("resource://enigmail/os.jsm"); /* global EnigmailOS: false */ Components.utils.import("resource://enigmail/data.jsm"); /* global EnigmailData: false */ Components.utils.import("resource://enigmail/subprocess.jsm"); /* global subprocess: false */ Components.utils.import("resource://enigmail/log.jsm"); /* global EnigmailLog: false */ const Cc = Components.classes; const Ci = Components.interfaces; var gKernel32Dll = null; var gSystemCharset = null; const CODEPAGE_MAPPING = { "855": "IBM855", "866": "IBM866", "874": "ISO-8859-11", "932": "Shift_JIS", "936": "GB2312", "950": "BIG5", "1200": "UTF-16LE", "1201": "UTF-16BE", "1250": "windows-1250", "1251": "windows-1251", "1252": "windows-1252", "1253": "windows-1253", "1254": "windows-1254", "1255": "windows-1255", "1256": "windows-1256", "1257": "windows-1257", "1258": "windows-1258", "20866": "KOI8-R", "20932": "EUC-JP", "28591": "ISO-8859-1", "28592": "ISO-8859-2", "28593": "ISO-8859-3", "28594": "ISO-8859-4", "28595": "ISO-8859-5", "28596": "ISO-8859-6", "28597": "ISO-8859-7", "28598": "ISO-8859-8", "28599": "ISO-8859-9", "28603": "ISO-8859-13", "28605": "ISO-8859-15", "38598": "ISO-8859-8", "50220": "ISO-2022-JP", "50221": "ISO-2022-JP", "50222": "ISO-2022-JP", "50225": "ISO-2022-KR", "50227": "ISO-2022-CN", "50229": "ISO-2022-CN", "51932": "EUC-JP", "51949": "EUC-KR", "52936": "HZ-GB2312", "65000": "UTF-7", "65001": "UTF-8" }; /** * Get the default codepage that is set on Windows (which equals to the chatset of the console output of gpg) */ function getWindowsCopdepage() { EnigmailLog.DEBUG("system.jsm: getWindowsCopdepage\n"); let output = ""; let env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); let sysRoot = env.get("SystemRoot"); if (!sysRoot || sysRoot.length === 0) { sysRoot = "C:\\windows"; } let p = subprocess.call({ command: sysRoot + "\\system32\\chcp.com", arguments: [], environment: [], charset: null, mergeStderr: false, done: function(result) { output = result.stdout; } }); p.wait(); output = output.replace(/[\r\n]/g, ""); output = output.replace(/^(.*[: ])([0-9]+)([^0-9].*)?$/, "$2"); return output; } /** * Get the charset defined with LC_ALL or locale. That's the charset used by gpg console output */ function getUnixCharset() { EnigmailLog.DEBUG("system.jsm: getUnixCharset\n"); let env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); let lc = env.get("LC_ALL"); if (lc.length === 0) { let places = [ "/usr/bin/locale", "/usr/local/bin/locale", "/opt/bin/locale" ]; var localeFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); for (let i = 0; i < places.length; i++) { localeFile.initWithPath(places[i]); if (localeFile.exists()) break; } if (!localeFile.exists()) return "iso-8859-1"; let output = ""; let p = subprocess.call({ command: localeFile, arguments: [], environment: [], charset: null, mergeStderr: false, done: function(result) { output = result.stdout; } }); p.wait(); let m = output.match(/^(LC_ALL=)(.*)$/m); if (m && m.length > 2) { lc = m[2].replace(/\"/g, ""); } else return "iso-8859-1"; } let i = lc.search(/[\.@]/); if (i < 0) return "iso-8859-1"; lc = lc.substr(i + 1); return lc; } var EnigmailSystem = { determineSystemCharset: function() { EnigmailLog.DEBUG("system.jsm: determineSystemCharset\n"); if (!gSystemCharset) { if (EnigmailOS.isWin32) { gSystemCharset = getWindowsCopdepage(); } else { gSystemCharset = getUnixCharset(); } } EnigmailLog.DEBUG("system.jsm: determineSystemCharset: charset='" + gSystemCharset + "'\n"); return gSystemCharset; }, /** * Convert system output coming in a native charset into Unicode (Gecko-platfrom) * applying an appropriate charset conversion * * @param str String - input string in native charset * @param cs String - [Optional] character set (Unix), or codepage (Windows). * If not specified, determine the system default. * * @param String - output in Unicode format. If something failed, the unmodified * input isreturned. */ convertNativeToUnicode: function(str, cs) { try { if (!cs) cs = this.determineSystemCharset(); if (EnigmailOS.isWin32) { if (cs in CODEPAGE_MAPPING) { return EnigmailData.convertToUnicode(str, CODEPAGE_MAPPING[cs]); } else { let charSetNum = Number(cs); if (Number.isNaN(charSetNum)) { return EnigmailData.convertToUnicode(str, cs); } else return EnigmailData.convertToUnicode(this.winConvertNativeToUnichar(str, Number(cs)), "UTF-8"); } } else { return EnigmailData.convertToUnicode(str, cs); } } catch (ex) { EnigmailLog.DEBUG("system.jsm: convertNativeToUnicode: exception +" + ex.toString() + "\n"); return str; } }, /** * Convert from native Windows output (often Codepage 437) to a Mozilla Unichar string * * @param byteStr: String - the data to convert in the current Windows codepage * * @return String: the Unicode string directly display-able */ winConvertNativeToUnichar: function(byteStr, codePage) { /* int MultiByteToWideChar( _In_ UINT CodePage, _In_ DWORD dwFlags, _In_ LPCSTR lpMultiByteStr, _In_ int cbMultiByte, _Out_opt_ LPWSTR lpWideCharStr, _In_ int cchWideChar ); */ if (!gKernel32Dll) { if (EnigmailOS.isWin32) { gKernel32Dll = ctypes.open("kernel32.dll"); } else { return byteStr; } } var multiByteToWideChar = gKernel32Dll.declare("MultiByteToWideChar", ctypes.winapi_abi, ctypes.int, // return value ctypes.unsigned_int, // Codepage ctypes.uint32_t, // dwFlags ctypes.char.ptr, // input string ctypes.int, // cbMultiByte ctypes.jschar.ptr, // widechar string ctypes.int // ccWideChar ); let n = multiByteToWideChar(codePage, 0, byteStr, byteStr.length, null, 0); if (n > 0) { let OutStrType = ctypes.jschar.array(n + 1); let outStr = new OutStrType(); multiByteToWideChar(codePage, 0, byteStr, byteStr.length, outStr.addressOfElement(0), n); let r = new RegExp(String.fromCharCode(9516), "g"); return outStr.readString().replace(r, ""); } else return byteStr; } }; enigmail/package/tests/000077500000000000000000000000001266701624400154105ustar00rootroot00000000000000enigmail/package/tests/.eslintrc.js000066400000000000000000000000671266701624400176520ustar00rootroot00000000000000module.exports = { "rules": { "strict": 0, } } enigmail/package/tests/Makefile000066400000000000000000000005301266701624400170460ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = ../.. include $(DEPTH)/config/autoconf.mk UNITTEST = ifneq ($(TB_PATH),"") UNITTEST = $(JSUNIT) main.js endif all: $(UNITTEST) enigmail/package/tests/armor-test.js000066400000000000000000000076421266701624400200540ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("armor.jsm"); /*global EnigmailArmor: false */ test(function shouldLocateEnigmailArmoredBlock() { const text = " -----BEGIN PGP SIGNATURE-----\n" + " Version: GnuPG/MacGPG2 v2.0.22 (Darwin)\n" + " Comment: GPGTools - https://gpgtools.org\n" + "\n" + " iQIcBAEBCgAGBQJVSkxrAAoJEFco/AmgID3sm68QALBa6I6r7LLopA8R+S/CpO66\n" + " 6qQm0zidQ7bhMDNiKPD+/TG/Blvu0n10Cnt5Wk6lD7dwPKAsHVq1fGUva4rkEbi4\n" + " R9nx7BQGBiFCpYl3K1bHJ/QrnYms5wpKseqGtW+8wq8wKx68sWi83xsKN2Ml2SGA\n" + " 95nvbvaQ6yQlynGXhPhGhdT3L2tdPsulnSwnd3NZJ83U73aYIN5jc5+UyWduLqho\n" + " xnD127JQYb8X2UjdXyOnA/E/VHvCWt9+Ck9s6VdwUSEBs41vJ/kyrmPE6u9sIQX7\n" + " 9ZujMzN05+9A1Mtwp4dsDIbLMeX6FS44CqcGiUKzyx5ewiYq9lcAReM52i+4kmBM\n" + " 4B/yLXDrWWOBiUCUQaOWC8PyBAc2cHLf62m6+oEfEMMCXli/XZuBC442qYuWNgf+\n" + " yLLhyaA27rqMxmhdFtKSOzrRaxkTTb1oQFQwHYfeHT7kFpPjq4p1Jv+p8w0pcq0P\n" + " j5hiLABLveEcLn4fEpqLROdi/Vz6Mp2nnbhcz+xe/w2KWmGgfl/kg2T/9YVeLox9\n" + " kaqVqNezYPfFZ1iQgGKNBXl1SMqHtTRAvHfH1k0E8qg3t222KU2pALp0A/LSvu/T\n" + " P3g8OIpqWRI0uBZQ/Gp/S1Fjb3DHfE+Y3IhVf5SkhjIYIvViSrbGqGUmK+jwGMia\n" + " o29CFuiGhiz3ISDRKrtH\n" + " =MeaY\n" + " -----END PGP SIGNATURE-----"; const beginIndexObj = {}; const endIndexObj = {}; const indentStrObj = {}; const indentStr = ""; const blockType = EnigmailArmor.locateArmoredBlock(text, 0, indentStr, beginIndexObj, endIndexObj, indentStrObj); Assert.equal(0, beginIndexObj.value); Assert.equal(" ", indentStrObj.value); Assert.equal("SIGNATURE", blockType); }); test(function shouldExtractSignaturePart() { const signature = { text: "Hello I'm here.\n please contact me via this email! \n", header: "Version: GnuPG/MacGPG2 v2.0.22 (Darwin)\n" + "Comment: GPGTools - https://gpgtools.org\n", armor: "iQIcBAEBCgAGBQJVSkxrAAoJEFco/AmgID3sm68QALBa6I6r7LLopA8R+S/CpO66\n" + "6qQm0zidQ7bhMDNiKPD+/TG/Blvu0n10Cnt5Wk6lD7dwPKAsHVq1fGUva4rkEbi4\n" + "R9nx7BQGBiFCpYl3K1bHJ/QrnYms5wpKseqGtW+8wq8wKx68sWi83xsKN2Ml2SGA\n" + "95nvbvaQ6yQlynGXhPhGhdT3L2tdPsulnSwnd3NZJ83U73aYIN5jc5+UyWduLqho\n" + "xnD127JQYb8X2UjdXyOnA/E/VHvCWt9+Ck9s6VdwUSEBs41vJ/kyrmPE6u9sIQX7\n" + "9ZujMzN05+9A1Mtwp4dsDIbLMeX6FS44CqcGiUKzyx5ewiYq9lcAReM52i+4kmBM\n" + "4B/yLXDrWWOBiUCUQaOWC8PyBAc2cHLf62m6+oEfEMMCXli/XZuBC442qYuWNgf+\n" + "yLLhyaA27rqMxmhdFtKSOzrRaxkTTb1oQFQwHYfeHT7kFpPjq4p1Jv+p8w0pcq0P\n" + "j5hiLABLveEcLn4fEpqLROdi/Vz6Mp2nnbhcz+xe/w2KWmGgfl/kg2T/9YVeLox9\n" + "kaqVqNezYPfFZ1iQgGKNBXl1SMqHtTRAvHfH1k0E8qg3t222KU2pALp0A/LSvu/T\n" + "P3g8OIpqWRI0uBZQ/Gp/S1Fjb3DHfE+Y3IhVf5SkhjIYIvViSrbGqGUmK+jwGMia\n" + "o29CFuiGhiz3ISDRKrtH\n" + "=MeaY" }; const signature_block = "\n\n" + signature.text + "-----BEGIN PGP SIGNATURE-----\n" + signature.header + "\n" + signature.armor + "\n" + "-----END PGP SIGNATURE-----"; const signature_text = EnigmailArmor.extractSignaturePart(signature_block, Ci.nsIEnigmail.SIGNATURE_TEXT); const signature_headers = EnigmailArmor.extractSignaturePart(signature_block, Ci.nsIEnigmail.SIGNATURE_HEADERS); const signature_armor = EnigmailArmor.extractSignaturePart(signature_block, Ci.nsIEnigmail.SIGNATURE_ARMOR); Assert.equal(signature.text, signature_text); Assert.equal(signature.header, signature_headers); Assert.equal(signature.armor.replace(/\s*/g, ""), signature_armor); }); enigmail/package/tests/customAssert.jsm000066400000000000000000000021551266701624400206220ustar00rootroot00000000000000/*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; const CustomAssert = { registerExtraAssertionsOn: function(assertModule) { assertModule.assertContains = CustomAssert.assertContains; assertModule.assertArrayContains = CustomAssert.assertArrayContains; assertModule.assertArrayNotContains = CustomAssert.assertArrayNotContains; }, assertContains: function(actual, expected, message) { var msg = message || "Searching for <".concat(expected) .concat("> to be contained within ") .concat("<").concat(actual).concat(">"); this.report(actual.search(expected) == -1, actual, expected, message, "contains"); }, assertArrayContains: function(array, value, message) { this.report(array.indexOf(value) == -1, array, value, message, "contains"); }, assertArrayNotContains: function(array, value, message) { this.report(array.indexOf(value) > -1, array, value, message, "not contains"); } }; enigmail/package/tests/data-test.js000066400000000000000000000024761266701624400176450ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false */ /*global EnigmailData: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("data.jsm"); // testing: extractMessageId test(function extractMessageIdExtractsARegularMessageId() { var result = EnigmailData.extractMessageId("enigmail:message/foobar"); Assert.equal("foobar", result); }); test(function extractMessageIdReturnsAnEmptyStringWhenItCantMatch() { var result = EnigmailData.extractMessageId("enigmail:mime-message/foobar"); Assert.equal("", result); }); // testing: extractMimeMessageId test(function extractMimeMessageIdExtractsARegularMessageId() { var result = EnigmailData.extractMimeMessageId("enigmail:mime-message/fluff"); Assert.equal("fluff", result); }); test(function extractMimeMessageIdReturnsAnEmptyStringWhenItCantMatch() { var result = EnigmailData.extractMimeMessageId("enigmail:message/mess"); Assert.equal("", result); }); enigmail/package/tests/decryptPermanently-test.js000066400000000000000000000134331266701624400226200ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false */ /*global Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global TestHelper: false, component: false, withTestGpgHome: false, withEnigmail: false */ TestHelper.loadDirectly("tests/mailHelper.js"); /*global MailHelper: false */ testing("decryptPermanently.jsm"); /*global EnigmailDecryptPermanently: false, Promise: false */ component("enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ /*global msgHdrToMimeMessage: false, MimeMessage: false, MimeContainer: false */ component("enigmail/glodaMime.jsm"); component("enigmail/streams.jsm"); /*global EnigmailStreams: false */ test(withTestGpgHome(withEnigmail(function messageIsCopiedToNewDir() { loadSecretKey(); MailHelper.cleanMailFolder(MailHelper.getRootFolder()); const sourceFolder = MailHelper.createMailFolder("source-box"); MailHelper.loadEmailToMailFolder("resources/encrypted-email.eml", sourceFolder); const header = MailHelper.fetchFirstMessageHeaderIn(sourceFolder); const targetFolder = MailHelper.createMailFolder("target-box"); const move = false; const reqSync = true; EnigmailDecryptPermanently.dispatchMessages([header], targetFolder.URI, move, reqSync); Assert.equal(targetFolder.getTotalMessages(false), 1); Assert.equal(sourceFolder.getTotalMessages(false), 1); }))); test(withTestGpgHome(withEnigmail(function messageIsMovedToNewDir() { loadSecretKey(); MailHelper.cleanMailFolder(MailHelper.rootFolder); const sourceFolder = MailHelper.createMailFolder("source-box"); MailHelper.loadEmailToMailFolder("resources/encrypted-email.eml", sourceFolder); const header = MailHelper.fetchFirstMessageHeaderIn(sourceFolder); const targetFolder = MailHelper.createMailFolder("target-box"); const move = true; const reqSync = true; EnigmailDecryptPermanently.dispatchMessages([header], targetFolder.URI, move, reqSync); Assert.equal(targetFolder.getTotalMessages(false), 1); Assert.equal(sourceFolder.getTotalMessages(false), 0); }))); test(withTestGpgHome(withEnigmail(function messageIsMovedAndDecrypted() { loadSecretKey(); MailHelper.cleanMailFolder(MailHelper.rootFolder); const sourceFolder = MailHelper.createMailFolder("source-box"); MailHelper.loadEmailToMailFolder("resources/encrypted-email.eml", sourceFolder); const header = MailHelper.fetchFirstMessageHeaderIn(sourceFolder); const targetFolder = MailHelper.createMailFolder("target-box"); const move = true; const reqSync = true; EnigmailDecryptPermanently.dispatchMessages([header], targetFolder.URI, move, reqSync); const dispatchedHeader = MailHelper.fetchFirstMessageHeaderIn(targetFolder); do_test_pending(); msgHdrToMimeMessage( dispatchedHeader, null, function(header, mime) { Assert.ok(!mime.isEncrypted); Assert.assertContains(mime.parts[0].body, "This is encrypted"); do_test_finished(); }, false ); }))); test(withTestGpgHome(withEnigmail(function messageWithAttachemntIsMovedAndDecrypted() { loadSecretKey(); loadPublicKey(); MailHelper.cleanMailFolder(MailHelper.getRootFolder()); const sourceFolder = MailHelper.createMailFolder("source-box"); MailHelper.loadEmailToMailFolder("resources/encrypted-email-with-attachment.eml", sourceFolder); const header = MailHelper.fetchFirstMessageHeaderIn(sourceFolder); const targetFolder = MailHelper.createMailFolder("target-box"); const move = true; const reqSync = true; EnigmailDecryptPermanently.dispatchMessages([header], targetFolder.URI, move, reqSync); const dispatchedHeader = MailHelper.fetchFirstMessageHeaderIn(targetFolder); do_test_pending(); msgHdrToMimeMessage( dispatchedHeader, null, function(header, mime) { Assert.ok(!mime.isEncrypted); Assert.assertContains(mime.parts[0].parts[0].body, "This is encrypted"); const atts = extractAttachments(mime); Assert.ok(!atts[0].isEncrypted); Assert.assertContains(atts[0].body, "This is an attachment."); do_test_finished(); }, false ); }))); var loadSecretKey = function() { const secretKey = do_get_file("resources/dev-strike.sec", false); EnigmailKeyRing.importKeyFromFile(secretKey, [], {}); }; var loadPublicKey = function() { const publicKey = do_get_file("resources/dev-strike.asc", false); EnigmailKeyRing.importKeyFromFile(publicKey, [], {}); }; function stringFromUrl(url) { const inspector = Cc["@mozilla.org/jsinspector;1"].getService(Ci.nsIJSInspector); let result = null; const p = new Promise(function(resolve, reject) { const iOService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); const uri = iOService.newURI(url, null, null); const attChannel = iOService.newChannelFromURI(uri); const listener = EnigmailStreams.newStringStreamListener(function(data) { result = data; inspector.exitNestedEventLoop(); resolve(); }); attChannel.asyncOpen(listener, uri); }); if (!result) { inspector.enterNestedEventLoop({ value: 0 }); } return result; } function extractAttachment(att) { const name = att.name; const body = stringFromUrl(att.url); const isEncrypted = att.isEncrypted; return { name: name, body: body, isEncrypted: isEncrypted }; } function extractAttachments(msg) { const result = []; for (let i = 0; i < msg.allAttachments.length; i++) { result.push(extractAttachment(msg.allAttachments[i])); } return result; } enigmail/package/tests/decryption-test.js000066400000000000000000000056141266701624400211110ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false */ testing("decryption.jsm"); /*global EnigmailDecryption: false, nsIEnigmail: false */ component("enigmail/keyRing.jsm"); /*global EnigmailKeyRing: fales */ component("enigmail/armor.jsm"); /*global EnigmailArmor: fales */ test(withTestGpgHome(withEnigmail(function shouldDecryptMessage() { let secretKeyFile = do_get_file("resources", false); secretKeyFile.append("dev-strike.sec"); const importedKeysObj = {}; let r = EnigmailKeyRing.importKeyFromFile(secretKeyFile, {}, importedKeysObj); Assert.equal(0, r); var encryptResult = "-----BEGIN PGP MESSAGE-----\n" + "Version: GnuPG v2.0.22 (GNU/Linux)\n" + "\n" + "hQIMA9U1Yju2Dp5xAQ//eeoS38nAWPdJslfVaEuUhthZk4WxAua97+JNGX9vDiae\n" + "jKJbjmQ5T2Sl2wvSqwjEIKzzjRAzr6SYuL9xaRkt3/BbMpSm/aSjc/cWNgcKtbHt\n" + "u8u9Ha016XZke3/EpjLqMcXmK1eT9oa+UqR8u+B3ggOjz5BrjW+FMR+zfyiWv1cb\n" + "6U4KO0YHuOq7G0lO4i3ro0ckhzZqCBLfCiQSfnF8R7p/KfQdUFBIdB41OALP0q4x\n" + "UD+CNWhbIjyhfE0VX5KUn/5S5Se31VjKjfeo+5fN8HRUVQYu8uj2F+gPvALF5KKW\n" + "an63O3IcUvZo6yOSoMjkMVJBHZRY6An2if+GXm330yQD3CDaonuihR+e+k6sd0kj\n" + "hpwQs+4/uE96slRMqQMx573krc/p/WUWwG5qexOvwxzcqEdE5LYPEMKdH1fUX3tC\n" + "kktNpSU8gJqluTk6cvtjCfMSwcEyKFmM13/RoitAw22DVOdLlcTHxbaNsIoxeRk/\n" + "rxpsraIEs2H4uyF19K1nLioGkyubeUKPnBTB6qAwp0ZhZ1RleMwHRTFQU+jpbi51\n" + "t87E+JI0UuLd14pDb7YJUKenHvAqa1jHAZKEfa2XFMfT/1MZzohlwjNpcPhYFWeB\n" + "zq3cg/m/J5sb+FpdD42nfYnLsSYu7CwcTX8MU2vrSwHyHnmux6SjDXGrAaddWsrS\n" + "RwGvjZsiFW/E82l2eMj5Zpm6HXY8kZx9TBSbWLSgU44nBhDvX1MrIGdd+rmYT2xt\n" + "j4KAKpyV51VzmJUOqHrb7bPv70ncMx0w\n" + "=uadZ\n" + "-----END PGP MESSAGE-----\n\n"; const parentWindow = JSUnit.createStubWindow(); const exitCodeObj = {}; const statusFlagObj = {}; const errorMsgObj = {}; const decryptResult = EnigmailDecryption.decryptMessage(parentWindow, nsIEnigmail.UI_TEST, encryptResult, {}, exitCodeObj, statusFlagObj, {}, {}, {}, errorMsgObj, {}, {}, "STRIKEfreedom@Qu1to" ); Assert.equal(0, exitCodeObj.value); Assert.equal(0, errorMsgObj.value); Assert.equal("Hello there!", decryptResult); Assert.equal(true, (statusFlagObj.value & (nsIEnigmail.DISPLAY_MESSAGE | nsIEnigmail.DECRYPTION_OKAY)) !== 0); const blockType = EnigmailArmor.locateArmoredBlock(encryptResult, 0, "", {}, {}, {}); Assert.equal("MESSAGE", blockType); }))); enigmail/package/tests/encryption-test.js000066400000000000000000000104211266701624400211130ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false */ testing("encryption.jsm"); /*global EnigmailEncryption: false, nsIEnigmail: false */ component("enigmail/keyRing.jsm"); /*global EnigmailKeyRing: fales */ component("enigmail/armor.jsm"); /*global EnigmailArmor: fales */ component("enigmail/Locale.jsm"); /*global EnigmailLocale: fales */ test(withTestGpgHome(withEnigmail(function shouldSignMessage() { const secretKey = do_get_file("resources/dev-strike.sec", false); const revocationCert = do_get_file("resources/dev-strike.rev", false); const errorMsgObj = {}; const importedKeysObj = {}; EnigmailKeyRing.importKeyFromFile(secretKey, errorMsgObj, importedKeysObj); const parentWindow = JSUnit.createStubWindow(); const plainText = "Hello there!"; const strikeAccount = "strike.devtest@gmail.com"; const exitCodeObj = {}; const statusFlagObj = {}; const encryptResult = EnigmailEncryption.encryptMessage(parentWindow, nsIEnigmail.UI_TEST, plainText, strikeAccount, strikeAccount, "", nsIEnigmail.SEND_TEST | nsIEnigmail.SEND_SIGNED, exitCodeObj, statusFlagObj, errorMsgObj ); Assert.equal(0, exitCodeObj.value); Assert.equal(0, errorMsgObj.value); Assert.equal(true, (statusFlagObj.value == nsIEnigmail.SIG_CREATED)); const blockType = EnigmailArmor.locateArmoredBlock(encryptResult, 0, "", {}, {}, {}); Assert.equal("SIGNED MESSAGE", blockType); let r = EnigmailEncryption.determineOwnKeyUsability(nsIEnigmail.SEND_SIGNED, "strike.devtest@gmail.com"); Assert.equal(r.keyId, "65537E212DC19025AD38EDB2781617319CE311C4"); EnigmailKeyRing.importKeyFromFile(revocationCert, errorMsgObj, importedKeysObj); r = EnigmailEncryption.determineOwnKeyUsability(nsIEnigmail.SEND_SIGNED, "0x65537E212DC19025AD38EDB2781617319CE311C4"); Assert.equal(r.errorMsg, EnigmailLocale.getString("keyRing.pubKeyRevoked", ["anonymous strike ", "0x781617319CE311C4"])); }))); test(withTestGpgHome(withEnigmail(function shouldEncryptMessage() { const publicKey = do_get_file("resources/dev-strike.asc", false); const errorMsgObj = {}; const importedKeysObj = {}; EnigmailKeyRing.importKeyFromFile(publicKey, errorMsgObj, importedKeysObj); const parentWindow = JSUnit.createStubWindow(); const plainText = "Hello there!"; const strikeAccount = "strike.devtest@gmail.com"; const exitCodeObj = {}; const statusFlagObj = {}; const encryptResult = EnigmailEncryption.encryptMessage(parentWindow, nsIEnigmail.UI_TEST, plainText, strikeAccount, strikeAccount, "", nsIEnigmail.SEND_TEST | nsIEnigmail.SEND_ENCRYPTED | nsIEnigmail.SEND_ALWAYS_TRUST, exitCodeObj, statusFlagObj, errorMsgObj ); Assert.equal(0, exitCodeObj.value); Assert.equal(0, errorMsgObj.value); Assert.equal(true, (statusFlagObj.value & nsIEnigmail.END_ENCRYPTION) !== 0); const blockType = EnigmailArmor.locateArmoredBlock(encryptResult, 0, "", {}, {}, {}); Assert.equal("MESSAGE", blockType); let r = EnigmailEncryption.determineOwnKeyUsability(nsIEnigmail.SEND_ENCRYPTED, "strike.devtest@gmail.com"); Assert.equal(r.keyId, "65537E212DC19025AD38EDB2781617319CE311C4"); }))); test(withTestGpgHome(withEnigmail(function shouldGetErrorReason() { let r = EnigmailEncryption.determineOwnKeyUsability(nsIEnigmail.SEND_SIGNED, "strike.devtest@gmail.com"); let expected = EnigmailLocale.getString("keyRing.noSecretKey", ["anonymous strike ", "0x781617319CE311C4"]) + "\n"; Assert.equal(r.errorMsg, expected); r = EnigmailEncryption.determineOwnKeyUsability(nsIEnigmail.SEND_SIGNED | nsIEnigmail.SEND_ENCRYPTED, "nobody@notfound.net"); expected = EnigmailLocale.getString("errorOwnKeyUnusable", "nobody@notfound.net"); Assert.equal(r.errorMsg, expected); }))); enigmail/package/tests/enigmail-test.js000066400000000000000000000043551266701624400205170ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, withTestGpgHome:false */ /*global EnigmailCore: false, Enigmail: false, component: false, Cc: false, Ci: false, withEnvironment: false, nsIEnigmail: false, nsIEnvironment: false, Ec: false, EnigmailPrefs: false, EnigmailOS: false, EnigmailArmor: false */ /*jshint -W120 */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("enigmail.js"); function newEnigmail(f) { var oldEnigmail = EnigmailCore.getEnigmailService(); try { var enigmail = new Enigmail(); EnigmailCore.setEnigmailService(enigmail); f(enigmail); } finally { EnigmailCore.setEnigmailService(oldEnigmail); } } // testing: initialize test(function initializeWillPassEnvironmentIfAskedTo() { var window = JSUnit.createStubWindow(); withEnvironment({ "ENIGMAIL_PASS_ENV": "STUFF:BLARG", "STUFF": "testing" }, function() { newEnigmail(function(enigmail) { enigmail.initialize(window, ""); Assert.assertArrayContains(EnigmailCore.getEnvList(), "STUFF=testing"); }); }); }); test(function initializeWillNotPassEnvironmentsNotAskedTo() { var window = JSUnit.createStubWindow(); var environment = Cc["@mozilla.org/process/environment;1"].getService(nsIEnvironment); environment.set("ENIGMAIL_PASS_ENV", "HOME"); environment.set("STUFF", "testing"); newEnigmail(function(enigmail) { enigmail.initialize(window, ""); Assert.assertArrayNotContains(EnigmailCore.getEnvList(), "STUFF=testing"); }); }); test(function initializeWillNotSetEmptyEnvironmentValue() { var window = JSUnit.createStubWindow(); var environment = Cc["@mozilla.org/process/environment;1"].getService(nsIEnvironment); environment.set("APPDATA", ""); newEnigmail(function(enigmail) { enigmail.initialize(window, ""); Assert.assertArrayNotContains(EnigmailCore.getEnvList(), "APPDATA="); }); }); enigmail/package/tests/errorHandling-test.js000066400000000000000000000210251266701624400215210ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false */ /*global decryptionFailed: false, newContext: false, detectForgedInsets: false */ /*global component: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withTestGpgHome: false */ testing("errorHandling.jsm"); /*global EnigmailErrorHandling: false, Cc: false, Ci: false */ component("enigmail/os.jsm"); /*global EnigmailOS: false */ component("enigmail/system.jsm"); /*global EnigmailSystem: false */ component("enigmail/locale.jsm"); /*global EnigmailLocale: false */ // simulate Unix, and UTF-8 (works on all systems) EnigmailOS.isWin32 = false; let env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); let lc = env.set("LC_ALL", "en_US.UTF-8"); EnigmailSystem.determineSystemCharset(); test(function decryptionFailedWillSetDecryptionFailedFlag() { var context = {}; decryptionFailed(context); Assert.equal(context.inDecryptionFailed, true, "expected decryption failing to set the correct flag in the context"); }); test(function shouldExtractSingleBlockSeparation() { var testStatusArray = [ "BEGIN_DECRYPTION", "DECRYPTION_INFO 2 9", "PLAINTEXT 62 1431644287 text.txt", "PLAINTEXT_LENGTH 15", "DECRYPTION_FAILED", "END_DECRYPTION" ]; var context = newContext({}, {}, {}, {}); context.statusArray = testStatusArray; detectForgedInsets(context); Assert.equal(context.retStatusObj.blockSeparation, "1:15 "); }); test(function shouldExtractMultipleBlockSeparation() { var testStatusArray = [ "FILE_START 3 file1.gpg", "ENC_TO D535623BB60E9E71 1 0", "USERID_HINT D535623BB60E9E71 anonymous strike ", "NEED_PASSPHRASE D535623BB60E9E71 781617319CE311C4 1 0", "GOOD_PASSPHRASE", "BEGIN_DECRYPTION", "DECRYPTION_INFO 2 9", "PLAINTEXT 62 1432677982 test", "PLAINTEXT_LENGTH 14", "DECRYPTION_OKAY", "GOODMDC", "END_DECRYPTION", "FILE_DONE", "FILE_START 3 file0.gpg", "ENC_TO D535623BB60E9E71 1 0", "GOOD_PASSPHRASE", "BEGIN_DECRYPTION", "DECRYPTION_INFO 2 9", "PLAINTEXT 62 1432677982 test", "PLAINTEXT_LENGTH 14", "DECRYPTION_OKAY", "GOODMDC", "END_DECRYPTION", "FILE_DONE", "PLAINTEXT 62 1432677982 test", "PLAINTEXT_LENGTH 15" ]; var context = newContext({}, {}, {}, {}); context.statusArray = testStatusArray; detectForgedInsets(context); Assert.equal(context.retStatusObj.blockSeparation, "1:14 1:14 0:15 "); }); test(function shouldHandleNoDataErrors() { const errorOutput = "gpg: no valid OpenPGP data found.\n" + "[GNUPG:] NODATA 1\n" + "[GNUPG:] NODATA 2\n" + "gpg: decrypt_message failed: Unknown system error\n"; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, {}); Assert.assertContains(result, "no valid OpenPGP data found"); }); test(function shouldHandleErrorOutput() { const errorOutput = "[GNUPG:] USERID_HINT 781617319CE311C4 anonymous strike \n" + "[GNUPG:] NEED_PASSPHRASE 781617319CE311C4 781617319CE311C4 1 0\n" + "gpg-agent[14654]: command get_passphrase failed: Operation cancelled\n" + "gpg: cancelled by user\n" + "[GNUPG:] MISSING_PASSPHRASE\n" + "gpg: skipped \"\": Operation cancelled\n" + "[GNUPG:] INV_SGNR 0 \n" + "gpg: [stdin]: clearsign failed: Operation cancelled\n"; const retStatusObj = {}; EnigmailErrorHandling.parseErrorOutput(errorOutput, retStatusObj); Assert.assertContains(retStatusObj.statusMsg, EnigmailLocale.getString("missingPassphrase")); Assert.equal(retStatusObj.extendedStatus, ""); }); test(function shouldHandleFailedEncryption() { const errorOutput = "gpg: encrypted with 4096-bit RSA key, ID B60E9E71, created 2015-05-04\n" + "\"anonymous strike \"\n" + "[GNUPG:] BEGIN_DECRYPTION\n" + "[GNUPG:] DECRYPTION_INFO 2 9\n" + "[GNUPG:] PLAINTEXT 62 1431644287 text.txt\n" + "[GNUPG:] PLAINTEXT_LENGTH 15\n" + "File `textd.txt' exists. Overwrite? (y/N) y\n" + "gpg: mdc_packet with invalid encoding\n" + "[GNUPG:] DECRYPTION_FAILED\n" + "gpg: decryption failed: Invalid packet\n" + "[GNUPG:] END_DECRYPTION"; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, {}); Assert.assertContains(result, "decryption failed: Invalid packet"); }); test(withTestGpgHome(function shouldHandleSuccessfulImport() { const errorOutput = "gpg: key 9CE311C4: public key \"anonymous strike \" imported\n" + "[GNUPG:] IMPORTED 781617319CE311C4 anonymous strike \n" + "[GNUPG:] IMPORT_OK 1 65537E212DC19025AD38EDB2781617319CE311C4\n" + "gpg: key 9CE311C4: secret key imported\n" + "[GNUPG:] IMPORT_OK 17 65537E212DC19025AD38EDB2781617319CE311C4\n" + "[GNUPG:] IMPORT_OK 0 65537E212DC19025AD38EDB2781617319CE311C4\n" + "gpg: key 9CE311C4: \"anonymous strike \" not changed\n" + "gpg: Total number processed: 2\n" + "gpg: imported: 1 (RSA: 1)\n" + "gpg: unchanged: 1\n" + "gpg: secret keys read: 1\n" + "gpg: secret keys imported: 1\n" + "[GNUPG:] IMPORT_RES 2 0 1 1 1 0 0 0 0 1 1 0 0 0"; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, {}); Assert.assertContains(result, "secret key imported"); })); test(function shouldHandleUnverifiedSignature() { const errorOutput = "gpg: B60E9E71: There is no assurance this key belongs to the named user\n" + "\n" + "pub 4096R/B60E9E71 2015-05-04 anonymous strike \n" + " Primary key fingerprint: 6553 7E21 2DC1 9025 AD38 EDB2 7816 1731 9CE3 11C4\n" + " Subkey fingerprint: D093 CD82 3BE1 3BD3 81EE FF7A D535 623B B60E 9E71\n" + "\n" + "It is NOT certain that the key belongs to the person named\n" + "in the user ID. If you *really* know what you are doing,\n" + "you may answer the next question with yes.\n" + "\n" + "[GNUPG:] USERID_HINT D535623BB60E9E71 anonymous strike \n" + "Use this key anyway? (y/N) y"; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, {}); Assert.assertContains(result, "Use this key anyway"); }); test(function shouldHandleEncryptionFailedNoPublicKey() { const errorOutput = "gpg: iapazmino@thoughtworks.com: skipped: No public key\n" + "[GNUPG:] INV_RECP 0 iapazmino@thoughtworks.com\n" + "gpg: salida3.xtxt: encryption failed: No public key"; const o = {}; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, o); Assert.assertContains(result, "No public key"); Assert.equal(o.errorMsg, EnigmailLocale.getString("keyError.keySpecNotFound", "iapazmino@thoughtworks.com")); }); test(function shouldHandleErrors() { const errorOutput = "gpg: problem with the agent: Invalid IPC response \n" + "gpg: /dev/fd/5:0: key generation canceled\n" + "\n" + "Status text: [GNUPG:] NEED_PASSPHRASE_SYM 3 3 2 \n" + "[GNUPG:] ERROR get_passphrase 260 \n" + "[GNUPG:] MISSING_PASSPHRASE \n" + "[GNUPG:] KEY_NOT_CREATED"; const result = EnigmailErrorHandling.parseErrorOutput(errorOutput, {}); Assert.assertContains(result, "Invalid IPC response"); }); test(function shouldHandleInvalidSender() { const errorOutput = "gpg: skipped \"0x12345678\": No secret key\n" + "[GNUPG:] INV_SGNR 9 0x12345678\n" + "[GNUPG:] FAILURE sign 17\n" + "gpg: signing failed: No secret key\n"; const retStatusObj = {}; EnigmailErrorHandling.parseErrorOutput(errorOutput, retStatusObj); Assert.assertContains(retStatusObj.errorMsg, EnigmailLocale.getString("keyError.keyIdNotFound", "0x12345678")); }); test(function shouldHandleFailures() { const errorOutput = "[GNUPG:] BEGIN_SIGNING H2\n" + "[gpg: signing failed: No pinentry\n" + "[GNUPG:] FAILURE sign 67108949\n" + "gpg: [stdin]: clearsign failed: No pinentry\n"; const retStatusObj = {}; EnigmailErrorHandling.parseErrorOutput(errorOutput, retStatusObj); Assert.ok((retStatusObj.statusFlags & Ci.nsIEnigmail.DISPLAY_MESSAGE) !== 0); Assert.assertContains(retStatusObj.statusMsg, EnigmailLocale.getString("errorHandling.pinentryError")); }); enigmail/package/tests/execution-test.js000066400000000000000000000031671266701624400207350ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false */ testing("execution.jsm"); /*global EnigmailExecution: false */ component("enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ component("enigmail/gpg.jsm"); /*global EnigmailGpg: false */ test(withTestGpgHome(withEnigmail(function shouldExecCmd() { const command = EnigmailGpgAgent.agentPath; const args = EnigmailGpg.getStandardArgs(false). concat(["--no-tty", "--status-fd", "1", "--logger-fd", "1", "--command-fd", "0"]). concat(["--list-packets", "resources/dev-strike.asc"]); let output = ""; EnigmailExecution.execCmd2(command, args, function(pipe) { //Assert.equal(stdin, 0); }, function(stdout) { output += stdout; }, function(result) { Assert.deepEqual(result, { "exitCode": 0, "stdout": "", "stderr": "" }); } ); Assert.assertContains(output, ":public key packet:"); Assert.assertContains(output, ":user ID packet:"); Assert.assertContains(output, ":signature packet:"); Assert.assertContains(output, ":public sub key packet:"); }))); enigmail/package/tests/expiry-test.js000066400000000000000000000122371266701624400202500ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false */ /*global do_test_finished: false, component: false, Cc: false, Ci: false, setupTestAccounts: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false */ testing("expiry.jsm"); /*global EnigmailExpiry: false */ component("enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ component("enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ component("enigmail/locale.jsm"); /*global EnigmailLocale: false */ /*global Math: false, Date: false, uniqueKeyList: false, DAY: false */ setupTestAccounts(); test(function shouldCheckKeyExpiry() { EnigmailKeyRing.clearCache(); let keyListObj = EnigmailKeyRing.getAllKeys(); let now = Math.floor(Date.now() / 1000); let a = [{ keyId: "123" }, { keyId: "456" }, { keyId: "123" }, { keyId: "763" }, { keyId: "456" }]; let b = uniqueKeyList(a); Assert.equal(b.length, 3); keyListObj.keySortList.push(1); // ensure that key list is not reloaded keyListObj.keyList.push(createKeyObj("ABCDEF0123456789", "user1@enigmail-test.net", now + DAY * 5, true)); keyListObj.keyList.push(createKeyObj("DBCDEF0123456789", "user2@enigmail-test.net", now - DAY * 5, true)); keyListObj.keyList.push(createKeyObj("EBCDEF0123456789", "user2@enigmail-test.net", now + DAY * 100, true)); keyListObj.keyList.push(createKeyObj("CBCDEF0123456789", "user3@enigmail-test.net", 0, true)); keyListObj.keyList.push(createKeyObj("BBCDEF0123456789", "user4@enigmail-test.net", now - DAY * 5, true)); keyListObj.keyList.push(createKeyObj("FBCDEF0123456789", "user5@enigmail-test.net", now - DAY * 5, true)); keyListObj.keyList.push(createKeyObj("ACCDEF0123456789", "user5@enigmail-test.net", now + DAY * 5, true)); EnigmailKeyRing.rebuildKeyIndex(); let k = EnigmailExpiry.getExpiryForKeySpec([], 10); Assert.equal(k.length, 0); k = EnigmailExpiry.getExpiryForKeySpec(["0xABCDEF0123456789", "BBCDEF0123456789", "CBCDEF0123456789"], 10); Assert.equal(k.map(getKeyId).join(" "), "ABCDEF0123456789"); k = EnigmailExpiry.getExpiryForKeySpec(["user1@enigmail-test.net", "user2@enigmail-test.net", "user5@enigmail-test.net"], 10); Assert.equal(k.map(getKeyId).join(" "), "ABCDEF0123456789 ACCDEF0123456789"); }); test(function shouldCheckKeySpecs() { let a = EnigmailExpiry.getKeysSpecForIdentities(); Assert.equal(a.join(" "), "ABCDEF0123456789 user2@enigmail-test.net user4@enigmail-test.net"); }); test(function shouldGetNewlyExpiredKeys() { EnigmailPrefs.setPref("keyCheckResult", ""); EnigmailPrefs.setPref("warnKeyExpiryNumDays", 10); let a = EnigmailExpiry.getNewlyExpiredKeys(); Assert.equal(a.map(getKeyId).join(" "), "ABCDEF0123456789"); EnigmailPrefs.setPref("warnKeyExpiryNumDays", 101); a = EnigmailExpiry.getNewlyExpiredKeys(); Assert.equal(a, null); let keyCheckResult = JSON.parse(EnigmailPrefs.getPref("keyCheckResult", "")); keyCheckResult.lastCheck = Date.now() - 86401000; EnigmailPrefs.setPref("keyCheckResult", JSON.stringify(keyCheckResult)); a = EnigmailExpiry.getNewlyExpiredKeys(); Assert.equal(a.map(getKeyId).join(" "), "EBCDEF0123456789"); keyCheckResult = JSON.parse(EnigmailPrefs.getPref("keyCheckResult", "")); keyCheckResult.lastCheck = Date.now() - 86401000; EnigmailPrefs.setPref("keyCheckResult", JSON.stringify(keyCheckResult)); a = EnigmailExpiry.getNewlyExpiredKeys(); Assert.equal(a.length, 0); }); test(function shouldDoKeyExpiryCheck() { EnigmailPrefs.setPref("keyCheckResult", ""); EnigmailPrefs.setPref("warnKeyExpiryNumDays", 101); let str = EnigmailExpiry.keyExpiryCheck(); Assert.equal(str, EnigmailLocale.getString("expiry.keysExpireSoon", [101, '- "user1@enigmail-test.net" (key ID 123456781234567812345678ABCDEF0123456789)\n' + '- "user2@enigmail-test.net" (key ID 123456781234567812345678EBCDEF0123456789)\n' ])); let keyCheckResult = JSON.parse(EnigmailPrefs.getPref("keyCheckResult", "")); keyCheckResult.lastCheck = Date.now() - 86401000; EnigmailPrefs.setPref("keyCheckResult", JSON.stringify(keyCheckResult)); EnigmailPrefs.setPref("warnKeyExpiryNumDays", 10); str = EnigmailExpiry.keyExpiryCheck(); Assert.equal(str, ""); }); function getKeyId(key) { return key.keyId; } function createKeyObj(keyId, userId, expiryDate, hasSecretKey) { return { keyId: keyId, userId: userId, fpr: "123456781234567812345678" + keyId, expiryTime: expiryDate, keyUseFor: "escESC", secretAvailable: hasSecretKey, keyTrust: "u", type: "pub", userIds: [{ userId: userId, type: "uid", keyTrust: "u" }], subKeys: [], signatures: [], getKeyExpiry: function() { if (this.expiryTime === 0) return Number.MAX_VALUE; return this.expiryTime; }, get fprFormatted() { return this.fpr; } }; } enigmail/package/tests/files-test.js000066400000000000000000000025111266701624400200240ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false */ /*global EnigmailCore: false, Cc: false, Ci: false, EnigmailFiles: false, EnigmailLog: false, EnigmailPrefs: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("files.jsm"); // testing: readFile test(function readFileReturnsContentOfExistingFile() { var md = do_get_cwd().clone(); md = md.parent.parent; md.append("uuid_enig.txt"); var result = EnigmailFiles.readFile(md); Assert.assertContains(result, "847b3a00-7ab1-11d4-8f02-006008948af5"); }); test(function readFileReturnsEmptyStringForNonExistingFile() { var md = do_get_cwd().clone(); md = md.parent.parent; md.append("THIS_FILE_DOESNT_EXIST"); var result = EnigmailFiles.readFile(md); Assert.equal("", result); }); test(function shouldFormatCmdLine() { var md = do_get_cwd(); Assert.equal(EnigmailFiles.formatCmdLine(md, ["1", "2", "3"]), do_get_cwd().path + " 1 2 3"); }); enigmail/package/tests/funcs-test.js000066400000000000000000000045741266701624400200530ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, EnigmailApp: false */ /*global EnigmailFuncs: false, rulesListHolder: false, EC: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("funcs.jsm"); var EnigmailFuncsTests = { testStripEmail(str, res) { let addr; addr = EnigmailFuncs.stripEmail(str); Assert.equal(addr, res); } }; test(function stripEmail() { EnigmailFuncsTests.testStripEmail("some stuff some stuff", "a@b.de"); EnigmailFuncsTests.testStripEmail("\"some stuff\" a@b.de", "a@b.de"); EnigmailFuncsTests.testStripEmail("\"some, stuff\" a@b.de", "a@b.de"); EnigmailFuncsTests.testStripEmail("some stuff some stuff, xyzxyc", "a@b.de,xy@a.xx"); EnigmailFuncsTests.testStripEmail(" a@b.de , ", "a@b.de,aa@bb.de"); EnigmailFuncsTests.testStripEmail(" ,,,,;;;; , ; , ;", ""); EnigmailFuncsTests.testStripEmail(";", ""); EnigmailFuncsTests.testStripEmail(" ,,oneRule,;;; , ;", "oneRule"); EnigmailFuncsTests.testStripEmail(" ,,,nokey,;;;; , nokey2 ; , ;", "nokey,nokey2"); EnigmailFuncsTests.testStripEmail(",,,newsgroupa ", "newsgroupa"); // test invalid email addresses: Assert.throws( function() { EnigmailFuncs.stripEmail(" a@b.de , "); } ); Assert.throws( function() { EnigmailFuncs.stripEmail("\"some stuff a@b.de"); } ); }); test(function compareMimePartLevel() { Assert.throws( function() { EnigmailFuncs.compareMimePartLevel("1.2.e", "1.2"); } ); let e = EnigmailFuncs.compareMimePartLevel("1.1", "1.1.2"); Assert.equal(e, -2); e = EnigmailFuncs.compareMimePartLevel("1.1", "1.2.2"); Assert.equal(e, -1); e = EnigmailFuncs.compareMimePartLevel("1", "2"); Assert.equal(e, -1); e = EnigmailFuncs.compareMimePartLevel("1.2", "1.1.2"); Assert.equal(e, 1); e = EnigmailFuncs.compareMimePartLevel("1.2.2", "1.2"); Assert.equal(e, 2); e = EnigmailFuncs.compareMimePartLevel("1.2.2", "1.2.2"); Assert.equal(e, 0); }); enigmail/package/tests/gpgAgent-test.js000066400000000000000000000263531266701624400204700ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false */ /*global TestHelper: false, withEnvironment: false, nsIWindowsRegKey: true */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global TestHelper: false, withEnvironment: false, withEnigmail: false, component: false, withTestGpgHome: false, osUtils: false, EnigmailFiles */ testing("gpgAgent.jsm"); /*global EnigmailGpgAgent: false, EnigmailOS: false, getHomedirFromParam: false */ component("enigmail/prefs.jsm"); /*global EnigmailPrefs: false */ component("enigmail/gpg.jsm"); /*global EnigmailGpg: false */ // testing: determineGpgHomeDir // environment: GNUPGHOME // isWin32: // registry Software\GNU\GNUPG\HomeDir // environment: USERPROFILE + \Application Data\GnuPG // environment: SystemRoot + \Application Data\GnuPG // c:\gnupg // environment: HOME + .gnupg test(function determineGpgHomeDirReturnsGNUPGHOMEIfExists() { withEnvironment({ "GNUPGHOME": "stuffResult1" }, function(e) { var enigmail = { environment: e }; Assert.equal("stuffResult1", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); // this test cannot be reliably performed on Windows if (JSUnit.getOS() != "WINNT") { test(function determineGpgHomeDirReturnsHomePlusGnupgForNonWindowsIfNoGNUPGHOMESpecificed() { withEnvironment({ "HOME": "/my/little/home" }, function(e) { e.set("GNUPGHOME", null); var enigmail = { environment: e }; Assert.equal("/my/little/home/.gnupg", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); } test(function determineGpgHomeDirReturnsRegistryValueForWindowsIfExists() { withEnvironment({}, function(e) { e.set("GNUPGHOME", null); resetting(EnigmailOS, 'getWinRegistryString', function(a, b, c) { if (a === "Software\\GNU\\GNUPG" && b === "HomeDir" && c === "foo bar") { return "\\foo\\bar\\gnupg"; } else { return "\\somewhere\\else"; } }, function() { resetting(EnigmailOS, 'isWin32', true, function() { var enigmail = { environment: e }; nsIWindowsRegKey = { ROOT_KEY_CURRENT_USER: "foo bar" }; Assert.equal("\\foo\\bar\\gnupg", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); }); }); test(function determineGpgHomeDirReturnsUserprofileIfItExists() { withEnvironment({ "USERPROFILE": "\\bahamas" }, function(e) { e.set("GNUPGHOME", null); resetting(EnigmailOS, 'getWinRegistryString', function(a, b, c) {}, function() { resetting(EnigmailOS, 'isWin32', true, function() { var enigmail = { environment: e }; nsIWindowsRegKey = { ROOT_KEY_CURRENT_USER: "foo bar" }; Assert.equal("\\bahamas\\Application Data\\GnuPG", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); }); }); test(function determineGpgHomeDirReturnsSystemrootIfItExists() { withEnvironment({ "SystemRoot": "\\tahiti", "USERPROFILE": null }, function(e) { e.set("GNUPGHOME", null); resetting(EnigmailOS, 'getWinRegistryString', function(a, b, c) {}, function() { resetting(EnigmailOS, 'isWin32', true, function() { var enigmail = { environment: e }; nsIWindowsRegKey = { ROOT_KEY_CURRENT_USER: "foo bar" }; Assert.equal("\\tahiti\\Application Data\\GnuPG", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); }); }); test(function determineGpgHomeDirReturnsDefaultForWin32() { withEnvironment({ "SystemRoot": null, "USERPROFILE": null }, function(e) { e.set("GNUPGHOME", null); resetting(EnigmailOS, 'getWinRegistryString', function(a, b, c) {}, function() { resetting(EnigmailOS, 'isWin32', true, function() { var enigmail = { environment: e }; nsIWindowsRegKey = { ROOT_KEY_CURRENT_USER: "foo bar" }; Assert.equal("C:\\gnupg", EnigmailGpgAgent.determineGpgHomeDir(enigmail)); }); }); }); }); // // testing: useGpgAgent // // useGpgAgent depends on several values: // // EnigmailOS.isDosLike() // // Gpg.getGpgFeature("supports-gpg-agent") // // Gpg.getGpgFeature("autostart-gpg-agent") // // EnigmailGpgAgent.gpgAgentInfo.envStr.length>0 // // EnigmailPrefs.getPrefBranch().getBoolPref("useGpgAgent") function asDosLike(f) { resetting(EnigmailOS, 'isDosLikeVal', true, f); } function notDosLike(f) { resetting(EnigmailOS, 'isDosLikeVal', false, f); } function withGpgFeatures(features, f) { resetting(EnigmailGpg, 'getGpgFeature', function(feature) { return features.indexOf(feature) != -1; }, f); } function mockPrefs(prefs) { return { getBoolPref: function(name) { return prefs[name]; } }; } test(function useGpgAgentIsFalseIfIsDosLikeAndDoesntSupportAgent() { asDosLike(function() { withGpgFeatures([], function() { Assert.ok(!EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsTrueIfIsDosLikeAndSupportsAgentAndAutostartsAgent() { asDosLike(function() { withGpgFeatures(["supports-gpg-agent", "autostart-gpg-agent"], function() { Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsTrueIfIsDosLikeAndSupportsAgentAndThereExistsAnAgentString() { asDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { EnigmailGpgAgent.gpgAgentInfo.envStr = "blarg"; Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsFalseIfIsDosLikeAndSupportsAgentButNoAgentInfoAvailable() { asDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { EnigmailGpgAgent.gpgAgentInfo.envStr = ""; Assert.ok(!EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsTrueIfIsDosLikeAndSupportsAgentAndPrefIsSet() { asDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { resetting(EnigmailPrefs, 'getPrefBranch', function() { return mockPrefs({ useGpgAgent: true }); }, function() { Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); }); test(function useGpgAgentIsTrueIfNotDosLikeAndSupportsAgentAndAutostartsAgent() { notDosLike(function() { withGpgFeatures(["supports-gpg-agent", "autostart-gpg-agent"], function() { Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsTrueIfNotDosLikeAndSupportsAgentAndThereExistsAnAgentString() { notDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { EnigmailGpgAgent.gpgAgentInfo.envStr = "blarg"; Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsFalseIfNotDosLikeAndSupportsAgentButNoAgentInfoAvailable() { notDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { EnigmailGpgAgent.gpgAgentInfo.envStr = ""; Assert.ok(!EnigmailGpgAgent.useGpgAgent()); }); }); }); test(function useGpgAgentIsTrueIfNotDosLikeAndSupportsAgentAndPrefIsSet() { notDosLike(function() { withGpgFeatures(["supports-gpg-agent"], function() { resetting(EnigmailPrefs, 'getPrefBranch', function() { return mockPrefs({ useGpgAgent: true }); }, function() { Assert.ok(EnigmailGpgAgent.useGpgAgent()); }); }); }); }); // // setAgentPath test(withEnigmail(function setAgentPathDefaultValues(enigmail) { withEnvironment({}, function(e) { enigmail.environment = e; EnigmailGpgAgent.setAgentPath(JSUnit.createStubWindow(), enigmail); Assert.equal("gpg", EnigmailGpgAgent.agentType); Assert.equal("gpg", EnigmailGpgAgent.agentPath.leafName.substr(0, 3)); Assert.equal("gpgconf", EnigmailGpgAgent.gpgconfPath.leafName.substr(0, 7)); Assert.equal("gpg-connect-agent", EnigmailGpgAgent.connGpgAgentPath.leafName.substr(0, 17)); // Basic check to test if GnuPG version was properly extracted Assert.ok(EnigmailGpg.agentVersion.search(/^[2-9]\.[0-9]+(\.[0-9]+)?/) === 0); }); })); // // resolveToolPath test(withEnigmail(function resolveToolPathDefaultValues(enigmail) { withEnvironment({}, function(e) { resetting(EnigmailGpgAgent, 'agentPath', "/usr/bin/gpg-agent", function() { enigmail.environment = e; var result = EnigmailGpgAgent.resolveToolPath("zip"); Assert.equal("zip", result.leafName.substr(0, 3)); }); }); })); // route cannot be tested reliably on non-Unix systems // test(withEnigmail(function resolveToolPathFromPATH(enigmail) { // withEnvironment({PATH: "/sbin"}, function(e) { // resetting(EnigmailGpgAgent, 'agentPath', "/usr/bin/gpg-agent", function() { // enigmail.environment = e; // var result = EnigmailGpgAgent.resolveToolPath("route"); // Assert.equal("/sbin/route", result.path); // }); // }); // })); // detectGpgAgent test(withEnigmail(function detectGpgAgentSetsAgentInfoFromEnvironmentVariable(enigmail) { withEnvironment({ GPG_AGENT_INFO: "a happy agent" }, function(e) { enigmail.environment = e; EnigmailGpgAgent.detectGpgAgent(JSUnit.createStubWindow(), enigmail); Assert.ok(EnigmailGpgAgent.gpgAgentInfo.preStarted); Assert.equal("a happy agent", EnigmailGpgAgent.gpgAgentInfo.envStr); Assert.ok(!EnigmailGpgAgent.gpgAgentIsOptional); }); })); test(withEnigmail(function detectGpgAgentWithNoAgentInfoInEnvironment(enigmail) { withEnvironment({}, function(e) { enigmail.environment = e; EnigmailGpgAgent.detectGpgAgent(JSUnit.createStubWindow(), enigmail); Assert.ok(!EnigmailGpgAgent.gpgAgentInfo.preStarted); Assert.ok(!EnigmailGpgAgent.gpgAgentIsOptional); }); })); test(withEnigmail(function detectGpgAgentWithAutostartFeatureWillDoNothing(enigmail) { withEnvironment({}, function(e) { withGpgFeatures(["autostart-gpg-agent"], function() { enigmail.environment = e; EnigmailGpgAgent.detectGpgAgent(JSUnit.createStubWindow(), enigmail); Assert.equal("none", EnigmailGpgAgent.gpgAgentInfo.envStr); }); }); })); //getGpgHomeDir test(withTestGpgHome(withEnigmail(function shouldGetGpgHomeDir() { let homedirExpected = osUtils.OS.Path.join(EnigmailFiles.getTempDir(), ".gnupgTest"); let homeDir = EnigmailGpgAgent.getGpgHomeDir(); Assert.equal(homedirExpected, homeDir); }))); // getHomedirFromParam test(function shouldGetHomedirFromParam() { let hd = getHomedirFromParam('--homedir /some1/path'); Assert.equal(hd, "/some1/path"); hd = getHomedirFromParam('--opt1 --homedir /some2/path --opt2'); Assert.equal(hd, "/some2/path"); hd = getHomedirFromParam('--opt1 --homedir "C:\\My Path\\is\\Very \\"long 1\\"" --opt2'); Assert.equal(hd, 'C:\\My Path\\is\\Very \\"long 1\\"'); hd = getHomedirFromParam('--opt1 --homedir "C:\\My Path\\is\\Very \\"long 2\\"" --opt2 "Some \\"more\\" fun"'); Assert.equal(hd, 'C:\\My Path\\is\\Very \\"long 2\\"'); }); enigmail/package/tests/installGnuPG-test.js000066400000000000000000000017471266701624400213030ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false */ /*global do_test_finished: false, component: false, Cc: false, Ci: false, setupTestAccounts: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false */ testing("installGnuPG.jsm"); /*global EnigmailInstallGnuPG: false, Installer: false */ test(function shouldCheckHashSum() { let inst = new Installer(null); inst.installerFile = do_get_file("resources/dev-strike.asc", false); inst.hash = "2ad19a1943152833a47c1a04c01d9ff4b3d7a6da"; // SHA1 sum of installerFile Assert.ok(inst.checkHashSum()); }); enigmail/package/tests/keyEditor-test.js000066400000000000000000000105741266701624400206710ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, withTestGpgHome:false */ /*global Ec: false, Cc: false, Ci: false, do_print: false, EnigmailCore: false, EnigmailKeyEditor: false, Components: false, component: false, EnigmailPrefs: false, EnigmailExecution: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false */ testing("keyEditor.jsm"); /*global editKey: false */ component("enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ component("enigmail/time.jsm"); /*global EnigmailTime: false */ test(withTestGpgHome(withEnigmail(function shouldEditKey() { importKeys(); do_test_pending(); var window = JSUnit.createStubWindow(); editKey( window, false, null, "781617319CE311C4", "trust", { trustLevel: 5 }, function(inputData, keyEdit, ret) { ret.writeTxt = ""; ret.errorMsg = ""; ret.quitNow = true; ret.exitCode = 0; }, null, function(exitCode, errorMsg) { Assert.equal(exitCode, 0); Assert.equal("", errorMsg); do_test_finished(); } ); }))); test(withTestGpgHome(withEnigmail(function shouldSetTrust() { importKeys(); do_test_pending(); var window = JSUnit.createStubWindow(); EnigmailKeyEditor.setKeyTrust(window, "781617319CE311C4", 5, function(exitCode, errorMsg) { Assert.equal(exitCode, 0); Assert.equal("", errorMsg); do_test_finished(); } ); }))); test(withTestGpgHome(withEnigmail(function shouldSignKey() { importKeys(); do_test_pending(); var window = JSUnit.createStubWindow(); EnigmailKeyEditor.signKey(window, "anonymous strike ", "781617319CE311C4", false, 5, function(exitCode, errorMsg) { Assert.equal(exitCode, -1); Assert.equal("The key is already signed, you cannot sign it twice.", errorMsg); do_test_finished(); } ); }))); test(withTestGpgHome(function importKeyForEdit() { const result = importKeys(); Assert.equal(result[0], 0); Assert.equal(result[1], 0); })); test(withTestGpgHome(withEnigmail(function shouldGetSecretKeys() { const secretKey = do_get_file("resources/dev-strike.sec", false); const errorMsgObj = {}; const importedKeysObj = {}; const window = JSUnit.createStubWindow(); const importResult = EnigmailKeyRing.importKeyFromFile(secretKey, errorMsgObj, importedKeysObj); const createDate = EnigmailTime.getDateTime(1430756251, true, false); const expectedKey = [{ userId: "anonymous strike ", keyId: "781617319CE311C4", created: createDate, keyTrust: "u" }]; do_test_pending(); EnigmailKeyEditor.setKeyTrust(window, "781617319CE311C4", 5, function() { let result = EnigmailKeyRing.getAllSecretKeys(); Assert.equal(result.length, 1); Assert.equal(result[0].userId, expectedKey[0].userId); Assert.equal(result[0].keyId, expectedKey[0].keyId); // FIXME: The expected date needs to be converted to the locale of the enviroment Assert.equal(result[0].created, expectedKey[0].created); Assert.equal(result[0].keyTrust, expectedKey[0].keyTrust); do_test_finished(); } ); }))); test(function shouldDoErrorHandling() { let nextCmd = ""; /* global GpgEditorInterface: false */ let editor = new GpgEditorInterface(null, null, ""); editor._stdin = { write: function processStdin(data) { nextCmd = data; } }; editor.gotData("[GNUPG:] FAILURE sign 85\n"); Assert.ok(editor.errorMsg.length > 0); Assert.equal("save\n", nextCmd); }); function importKeys() { var publicKey = do_get_file("resources/dev-strike.asc", false); var secretKey = do_get_file("resources/dev-strike.sec", false); var errorMsgObj = {}; var importedKeysObj = {}; var publicImportResult = EnigmailKeyRing.importKeyFromFile(publicKey, errorMsgObj, importedKeysObj); var secretImportResult = EnigmailKeyRing.importKeyFromFile(secretKey, errorMsgObj, importedKeysObj); return [publicImportResult, secretImportResult]; } enigmail/package/tests/keyRing-test.js000066400000000000000000000765031266701624400203460ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, */ /*global Components: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* eslint no-useless-concat: 0*/ "use strict"; /* global EnigmailFiles: false */ do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global withEnigmail: false, withTestGpgHome: false, getKeyListEntryOfKey: false, gKeyListObj: true */ Components.utils.import("resource://enigmail/trust.jsm"); /*global EnigmailTrust: false */ component("enigmail/locale.jsm"); /*global EnigmailLocale: false */ /* global getUserIdList: false, createAndSortKeyList: false, Number: false */ testing("keyRing.jsm"); /*global EnigmailKeyRing: false */ test(withTestGpgHome(withEnigmail(function shouldImportFromFileAndGetKeyDetails() { const publicKey = do_get_file("resources/dev-strike.asc", false); const errorMsgObj = {}; const importedKeysObj = {}; const importResult = EnigmailKeyRing.importKeyFromFile(publicKey, errorMsgObj, importedKeysObj); Assert.assertContains(importedKeysObj.value, "65537E212DC19025AD38EDB2781617319CE311C4"); Assert.equal(importResult, 0, errorMsgObj); const keyDetails = EnigmailKeyRing.getValidUids("0xD535623BB60E9E71").join("\n"); Assert.assertContains(keyDetails, "strike.devtest@gmail.com"); }))); test(withTestGpgHome(withEnigmail(function shouldGetKeyListEntryOfKey() { const publicKey = do_get_file("resources/dev-strike.asc", false); const importResult = EnigmailKeyRing.importKeyFromFile(publicKey, {}, {}); const keyDetails = getKeyListEntryOfKey("0xD535623BB60E9E71"); // Output from GnuPG varies sligtly between different versions (new output data is added // at the end of the list). Therefore each line is only compared to the length provided below let expectedListing = [ "pub:-:4096:1:781617319CE311C4:1430756251:1556986651::-:::scESC:", "fpr:::::::::65537E212DC19025AD38EDB2781617319CE311C4:", "uid:-::::1430756251::DB54FB278F6AE719DE0DE881B17D4C762F5752A9::anonymous strike :", "sub:-:4096:1:D535623BB60E9E71:1430756251:1556986651:::::e:" ]; let keyDetList = keyDetails.split(/\n\r?/); for (let i = 0; i < expectedListing.length; i++) { Assert.equal(keyDetList[i].substr(0, expectedListing[i].length), expectedListing[i]); } }))); test(withTestGpgHome(withEnigmail(function shouldGetKeyFunctions() { const publicKey = do_get_file("resources/dev-strike.asc", false); const secretKey = do_get_file("resources/dev-strike.sec", false); EnigmailKeyRing.importKeyFromFile(publicKey, {}, {}); EnigmailKeyRing.importKeyFromFile(secretKey, {}, {}); // search for key ID let k = EnigmailKeyRing.getKeyById("0x9CE311C4"); Assert.equal(k.subKeys[0].keyId, "D535623BB60E9E71"); // search for subkey ID k = EnigmailKeyRing.getKeyById("0xD535623BB60E9E71"); Assert.equal(k.fpr, "65537E212DC19025AD38EDB2781617319CE311C4"); Assert.equal(gKeyListObj.keySortList.length, 1); EnigmailKeyRing.clearCache(); Assert.equal(gKeyListObj.keySortList.length, 0); // search for fingerprint k = EnigmailKeyRing.getKeyById("65537E212DC19025AD38EDB2781617319CE311C4"); Assert.equal(k.fpr, "65537E212DC19025AD38EDB2781617319CE311C4"); let s = k.signatures; let fpr = "DB54FB278F6AE719DE0DE881B17D4C762F5752A9"; Assert.equal(fpr in s, true); if (fpr in s) { Assert.equal(s[fpr].sigList[0].signerKeyId, "781617319CE311C4"); } let ka = EnigmailKeyRing.getKeysByUserId("devtest@gmail.com>$"); Assert.equal(ka.length, 1); ka = EnigmailKeyRing.getAllSecretKeys(); Assert.equal(ka.length, 1); ka = EnigmailKeyRing.getKeyListById("0x9CE311C4 D535623BB60E9E71"); // the space is on purpose(!) Assert.equal(ka.length, 2); }))); test(withTestGpgHome(withEnigmail(function shouldGetUserIdList() { const publicKey = do_get_file("resources/dev-strike.asc", false); const secretKey = do_get_file("resources/dev-strike.sec", false); EnigmailKeyRing.importKeyFromFile(publicKey, {}, {}); EnigmailKeyRing.importKeyFromFile(secretKey, {}, {}); let l = null; l = getUserIdList(false, {}, {}, {}); Assert.notEqual(l, null); l = getUserIdList(true, {}, {}, {}); Assert.notEqual(l, null); }))); test(withTestGpgHome(withEnigmail(function shouldCleanupClearCache() { const publicKey = do_get_file("resources/dev-strike.asc", false); const secretKey = do_get_file("resources/dev-strike.sec", false); EnigmailKeyRing.importKeyFromFile(publicKey, {}, {}); EnigmailKeyRing.importKeyFromFile(secretKey, {}, {}); EnigmailKeyRing.getAllKeys(); Assert.notEqual(gKeyListObj.keyList.length, 0); EnigmailKeyRing.clearCache(); Assert.equal(gKeyListObj.keyList.length, 0); }))); test(withTestGpgHome(withEnigmail(function shouldImportFromTextAndGetKeyDetails() { EnigmailKeyRing.importKey( JSUnit.createStubWindow(), false, "-----BEGIN PGP PUBLIC KEY BLOCK-----" + "\n" + "Comment: GPGTools - https://gpgtools.org" + "\n" + "\n" + "mQINBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe" + "\n" + "tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K" + "\n" + "TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L" + "\n" + "cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA" + "\n" + "7QipP2f0aPzsavNjFnAfC9rm2FDs6lX4syTMVUWy8IblRYo6MjhNaJFlBJkTCl0b" + "\n" + "ugT9Ge0ZUifuAI0ihVGBpMSh4GF2B3ZPidwGSjgx1sojNHzU/3vBa9DuOmW95qrD" + "\n" + "Notvz61xYueTpOYK6ZeT880QMDvxXG9S5/H1KJxuOF1jx1DibAn9sfP4gtiQFI3F" + "\n" + "WMV9w3YrrqidoWSZBqyBO0Toqt5fNdRyH4ET6HlJAQmFQUbqqnZrc07s/aITZN36" + "\n" + "d9eupCZQfW6e80UkXRPCU53vhh0GQey9reDyVCsV7xi6oXk1fqlpDYigQwEr4+yJ" + "\n" + "+1qAjtSVHJhFE0inQWkUwc2nxef6n7v/M9HszhP/aABadVE49oDaRm54PtA1l0mC" + "\n" + "T8IHcVR4ZDkaNwrHJtidEQcQ/+YVV3g7UJI9+g2nPvgMhk86AzBIlGpG+wARAQAB" + "\n" + "tCthbm9ueW1vdXMgc3RyaWtlIDxzdHJpa2UuZGV2dGVzdEBnbWFpbC5jb20+iQI9" + "\n" + "BBMBCgAnBQJVR5ubAhsDBQkHhh+ABQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJ" + "\n" + "EHgWFzGc4xHEt/4P/1zf/2VsEwpJVlqwoLiJGQbViCRW34W8rTyL45GjRYAgDXrW" + "\n" + "LDPqxSbotXTXi72Dwug6a/Pn1VI1R2ZaBsWXH8qUYtSV/0b/2HfqUyDhaiuASywM" + "\n" + "dSfTAXa+popNccD5yPCJVBD0xmPCAmrOciYePMMNBk4SCDV5DJcCyGhEAkSeGsXy" + "\n" + "+m2bXb1pTbg6OpqDIPCqlmNQ8ZyAZNzWIyRWcqUY+B6xcZk+n50wG9A0TCOvVjsZ" + "\n" + "+E8Khyha2tfz1WFPmoy0rMD4g2ggvII3v4elosBQW0pxYdkwBAwk6g3DMyUzR6Gc" + "\n" + "NcZnuvnZVBbjCpqXtDJ7UcjjcP8zvzDYlXAY74gM8Nu7/89Pw676rVUXtS7c/LUB" + "\n" + "8Z75FACi7d65Kp8Q6sNYVfi/mTggNwEAuAkjp9acEGvk67q2we+lEoeAwCyfBiBu" + "\n" + "5TmYriLyAvfyoyeMhRjV0FdBaRh+4CkVgSG4/eTLFcnHVB2ZzhX7Uw0qoxM8R+ca" + "\n" + "P75XoVUyXmIpC/UZTrF4IGDUc4jbIqSGU2/Kln4Z8vQpuCw0vavbT93jSCyqaIbK" + "\n" + "qemK8D0rbaoxJq5RLkwU6gJ3dOpQdDRuqUAkfbEZd8yVRSmfugRhCTbdAA5/1kdg" + "\n" + "oWv9xZU7asdsm5cpHpy7lM7ponHsA+B+ykApDqDzPIHDZBoeqKl6qNe2BYOYuQIN" + "\n" + "BFVHm5sBEADBX28bR5QxbrGNVPT3jM60IT+m/GTLH6lm4OcZomAej/XrBOcX/0BY" + "\n" + "tOqqP7Dur8k0A8fcLkZCSBse1m6fvfACo8Vbeunv4IrST5FgXh7bYPZseIy5U7Xn" + "\n" + "0dLqpVXJRqMt3ULS/Rwy18Xx8j9sXJJDAKIqZ4MHwgBknPeeBnD4aG6bJAuBEI6R" + "\n" + "W5lhbG8WFJfCniFuRnim+VD6ucf93x3NkL0TWY0l0PbUdW92sLfiKp1nmz+1dRoB" + "\n" + "ckT701sMs2pk48O5Y/vP6OEDzFzjGdA1r9YkblXjN9VxhSN00Wlmcq1DqEU36+Mq" + "\n" + "i4YIQsuF3NfS13+U2lhjlR5HpRxdDMfHjFYlk5hlOtuvopseYTlMykFl8D7y0qSF" + "\n" + "IAiqVl6pdlSBU84bOLHoCUGens+Ul7m0UShwZdVmMifFw/fJwISZI8D5vGkM3rE7" + "\n" + "TxrHAQ/O1fJnGZNBRgn8LjnZjRGA/u1fweptFY0NyzO5lOzTWI6HBJl1hMave2l0" + "\n" + "vtwBPLrRbbRhy6Z77BNfE9a2w7Y4aFeshjEpWxE8bQIyMrBGaRaiQ2lpXmA6XYZx" + "\n" + "Q8xOUfstsAR1TM+JboXJDuTw+YhaVa2W7Z/RzdtNnahWCCjptFq60DuggLwAGnjr" + "\n" + "5HctpLgwvLVKCeDfU8nchzCkL7Hikh2LC7ySUR/VzORag/TkjxYRRwARAQABiQIl" + "\n" + "BBgBCgAPBQJVR5ubAhsMBQkHhh+AAAoJEHgWFzGc4xHEo+UP/02AIUR0349zGk9a" + "\n" + "4D5Jv007y+d0tWKPL0V2btaq9xQzoM51CtuT0ZoqTO8A0uFmEhCkw++reQcWOz1N" + "\n" + "n+MarPjjJwMjhTPS/H1qiwTXmuwx92xLL0pajloq7oWYwlxsgVGCMDYE0TOMN8p/" + "\n" + "Vc+eoJaWZh8yO1xJGDP98RHbZQWwYN6qLzE4y/ECTHxqi9UKc68qHNVH9ZgtTXnm" + "\n" + "gLAkEvXzRV1UOEEttJ6rrgPrTubjsIG+ckZK5mlivy+UW6XN0WBE0oetKjT8/Cb1" + "\n" + "dQYiX/8MJkGcIUFRurU7gtGW3ncSTdr6WRXaQtfnRn9JG1aSXNYB/xZWzCBdykZp" + "\n" + "+tLuu4A3LVeOzn064hqf3rz2N7b8dWMk5WL5LIUhXYoYc7232RkNSiiKndeJNryv" + "\n" + "TowFt9anuMj4pFgGveClQc9+QGyMVdTe6G5kOJkKG8ydHKFEFObtsTLaut4lHTtx" + "\n" + "n+06QO/LKtQTXqNEyOyfYhbyX7xDbCbu4/MA23MzTs1hhwgIy4+UejU/Yeny6VkB" + "\n" + "odA3bFyEYKWPoMDDgfdlZbzjv3qAN4Qq+ollo8K3gJgH0QONrUaRY84/hil05T4E" + "\n" + "nUZiXdzPWvhMv5lEK+pTMlO8FbOG31+aB8rxCg+wp1ovyC/fp5XjZaLHcyPAWAXK" + "\n" + "LBn4tb400iHp7byO85tF/H0OOI1K" + "\n" + "=CVNK" + "\n" + "-----END PGP PUBLIC KEY BLOCK-----" + "\n" + "-----BEGIN PGP PRIVATE KEY BLOCK-----" + "\n" + "Comment: GPGTools - https://gpgtools.org" + "\n" + "\n" + "lQc+BFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe" + "\n" + "tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K" + "\n" + "TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L" + "\n" + "cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA" + "\n" + "7QipP2f0aPzsavNjFnAfC9rm2FDs6lX4syTMVUWy8IblRYo6MjhNaJFlBJkTCl0b" + "\n" + "ugT9Ge0ZUifuAI0ihVGBpMSh4GF2B3ZPidwGSjgx1sojNHzU/3vBa9DuOmW95qrD" + "\n" + "Notvz61xYueTpOYK6ZeT880QMDvxXG9S5/H1KJxuOF1jx1DibAn9sfP4gtiQFI3F" + "\n" + "WMV9w3YrrqidoWSZBqyBO0Toqt5fNdRyH4ET6HlJAQmFQUbqqnZrc07s/aITZN36" + "\n" + "d9eupCZQfW6e80UkXRPCU53vhh0GQey9reDyVCsV7xi6oXk1fqlpDYigQwEr4+yJ" + "\n" + "+1qAjtSVHJhFE0inQWkUwc2nxef6n7v/M9HszhP/aABadVE49oDaRm54PtA1l0mC" + "\n" + "T8IHcVR4ZDkaNwrHJtidEQcQ/+YVV3g7UJI9+g2nPvgMhk86AzBIlGpG+wARAQAB" + "\n" + "/gMDAtfSz5hVoDvp4Vugj4T3VQk8mJ3uYDZmPbNL8SK18VTIVpd3xgrjTP+JEtB+" + "\n" + "aw1WQK4Qik0BdKAu9Lv6wz4u/QNC8q4x3lBcoYleD6iXRL2Tpnh7RcEakIoxIeFH" + "\n" + "joBTZOI+v0HUlyVvSkIaEhE60UvdX+If9p9sx5+uHdYRRfOkM3SZMxLxCUVHMp1e" + "\n" + "ZBcmW+x9UiyA07wXyvAhlS2/iTijDtQFRqK8xs9w7zn0A12afksGtPEL7J5MRqQs" + "\n" + "BuxUrWSKVQ3DkgWXd56qEtbKuklKXe9t93eMPvcFQ2ZVhgic436dygtpNgkGliVq" + "\n" + "Di83wUjorTZFMeC0uhvQ2akfQxvj5TgYoI0rFABvn/6He1LBSWyiu6ZK1nC1PKUc" + "\n" + "KLGQGfq+kbHwJg3q0wIJ5+e1v6hZ9HClhaRsR4ADnTDnp3mGqPxDWvQox1S2+ESx" + "\n" + "8N6AcZ+q47D78IE4EzF4LyQ0g9FdDiNsPwqN4oS2/ZkXb/IbFoVoottU7915KqZO" + "\n" + "6kiJvpMcZrs4TJ4zR++CGBEvJDfUE4RoQHQe/XLA1RJXIwXr3kWPvB2Tc16vdhkh" + "\n" + "LZ9z/HOrPW6SI/UwVYFHpmJIYj3nHdjGcyWwz0KmQ3H5+AYe36afwJws6TFx/QLi" + "\n" + "fqlOkcaBaiQwpcpuSX2y4rTgcjDEaVdPGmvs2m5vKv66a8yybIl2P0veVTutGtC8" + "\n" + "DfQaggqZWQYHmXXvGUnBM+H9YSBJ2g3W3w51fKcN2FtX42OsVxXqZkqlGR2zBE00" + "\n" + "ilVZmiv6ajV9mmO7W8EV9TPqjrYuEDf2M57LllQ7OB1p1v6CtqIyVSL/Jak6ckMT" + "\n" + "5VdqMoup6ib5j4CR+C4i7Btu+gkXhW775l/jbFlUXKE5Vn+LAAIOpxiVZ2Z7azL6" + "\n" + "sNwxtfmpaTAgIvHGSysgPeXeEN3fgTsfZ0PYaqlEHggsYDDU4XvXIOKcUmrr6zEI" + "\n" + "KXeeS0+V3nxSIb9kQHYZyUFvNv98gCCj0wgNl+LoVJ9NvMkaOrCS0jkRaxJicQfa" + "\n" + "bu4XL9XbUBESuHvG6jiK6DNlhT1j3qFFcRBO7COI3OQ0JD7Y1XPYYR48EP69Fwe0" + "\n" + "82LZH5dq9kslpn8VsuygTum9jYFnE5UVLfmjbroFu9YlLE54T0CdZ4UQEWTrZiuz" + "\n" + "TXYf13FaVEgfAim+hjdUUVSCptsX2crC7Vrsk/xMjT2ETU1w/yZb5BVoCvbK/eaf" + "\n" + "sqQAPGElSp0YlI/mgpbc5rRQzcSXghenjOol/gJM0MbFJuyQ93sLW0Gi7zEeBxQi" + "\n" + "aO/Ua4F4VhPilPf+T66fNMM0bG29X5j41eRrN0m1ly4M+jOOIyocLcUamgFsRDTe" + "\n" + "XG9kHZUylAJqNMwQvDzbVSTbHKjhOTa3PyinrTwauYiQP6fIbd4JWkIW88cBynbR" + "\n" + "IHHCYYGxZoDUDd366QyNHKTd5wxw1MicK54tUDcUVDq8NKC+yGuGi6WLYt4WdNEg" + "\n" + "pYb/MzxGRzbhVEHNbfFEr5e706VcQlglpPcMTUctzRVF18wWHzPVbHdZiTBXdr0t" + "\n" + "hJkRNaAvnmQMvP0bXk+QDGW24Z66Yz0X2YzFo4Rdp/MAm/1KwagIu0hIGbwk8egq" + "\n" + "tq6Q5zyyiSp7dVvcNAPaEzEKZXRSrSjyNwQw0CHI940SRgK5JDkAMHZWK8vg8Ih4" + "\n" + "DR7m69XmYXwvTScrQqkFa+8XIb5QqeH7W3Qe4aKiC6QOJav/ptYLZ+s1TTzeIOA8" + "\n" + "5zxhWPj81YgifDtWPc4MG+Y0QuSzMdMue+/oJUt6lyQmtCthbm9ueW1vdXMgc3Ry" + "\n" + "aWtlIDxzdHJpa2UuZGV2dGVzdEBnbWFpbC5jb20+iQI9BBMBCgAnBQJVR5ubAhsD" + "\n" + "BQkHhh+ABQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEHgWFzGc4xHEt/4P/1zf" + "\n" + "/2VsEwpJVlqwoLiJGQbViCRW34W8rTyL45GjRYAgDXrWLDPqxSbotXTXi72Dwug6" + "\n" + "a/Pn1VI1R2ZaBsWXH8qUYtSV/0b/2HfqUyDhaiuASywMdSfTAXa+popNccD5yPCJ" + "\n" + "VBD0xmPCAmrOciYePMMNBk4SCDV5DJcCyGhEAkSeGsXy+m2bXb1pTbg6OpqDIPCq" + "\n" + "lmNQ8ZyAZNzWIyRWcqUY+B6xcZk+n50wG9A0TCOvVjsZ+E8Khyha2tfz1WFPmoy0" + "\n" + "rMD4g2ggvII3v4elosBQW0pxYdkwBAwk6g3DMyUzR6GcNcZnuvnZVBbjCpqXtDJ7" + "\n" + "UcjjcP8zvzDYlXAY74gM8Nu7/89Pw676rVUXtS7c/LUB8Z75FACi7d65Kp8Q6sNY" + "\n" + "Vfi/mTggNwEAuAkjp9acEGvk67q2we+lEoeAwCyfBiBu5TmYriLyAvfyoyeMhRjV" + "\n" + "0FdBaRh+4CkVgSG4/eTLFcnHVB2ZzhX7Uw0qoxM8R+caP75XoVUyXmIpC/UZTrF4" + "\n" + "IGDUc4jbIqSGU2/Kln4Z8vQpuCw0vavbT93jSCyqaIbKqemK8D0rbaoxJq5RLkwU" + "\n" + "6gJ3dOpQdDRuqUAkfbEZd8yVRSmfugRhCTbdAA5/1kdgoWv9xZU7asdsm5cpHpy7" + "\n" + "lM7ponHsA+B+ykApDqDzPIHDZBoeqKl6qNe2BYOYnQc+BFVHm5sBEADBX28bR5Qx" + "\n" + "brGNVPT3jM60IT+m/GTLH6lm4OcZomAej/XrBOcX/0BYtOqqP7Dur8k0A8fcLkZC" + "\n" + "SBse1m6fvfACo8Vbeunv4IrST5FgXh7bYPZseIy5U7Xn0dLqpVXJRqMt3ULS/Rwy" + "\n" + "18Xx8j9sXJJDAKIqZ4MHwgBknPeeBnD4aG6bJAuBEI6RW5lhbG8WFJfCniFuRnim" + "\n" + "+VD6ucf93x3NkL0TWY0l0PbUdW92sLfiKp1nmz+1dRoBckT701sMs2pk48O5Y/vP" + "\n" + "6OEDzFzjGdA1r9YkblXjN9VxhSN00Wlmcq1DqEU36+Mqi4YIQsuF3NfS13+U2lhj" + "\n" + "lR5HpRxdDMfHjFYlk5hlOtuvopseYTlMykFl8D7y0qSFIAiqVl6pdlSBU84bOLHo" + "\n" + "CUGens+Ul7m0UShwZdVmMifFw/fJwISZI8D5vGkM3rE7TxrHAQ/O1fJnGZNBRgn8" + "\n" + "LjnZjRGA/u1fweptFY0NyzO5lOzTWI6HBJl1hMave2l0vtwBPLrRbbRhy6Z77BNf" + "\n" + "E9a2w7Y4aFeshjEpWxE8bQIyMrBGaRaiQ2lpXmA6XYZxQ8xOUfstsAR1TM+JboXJ" + "\n" + "DuTw+YhaVa2W7Z/RzdtNnahWCCjptFq60DuggLwAGnjr5HctpLgwvLVKCeDfU8nc" + "\n" + "hzCkL7Hikh2LC7ySUR/VzORag/TkjxYRRwARAQAB/gMDAtfSz5hVoDvp4ZpoCdrR" + "\n" + "S4An9JABiMWCTG4IUYuShVQKJJR3KtZ0C5D4gH4BUlEGDsUtY3/6deakvzedbVxv" + "\n" + "mb59QoU8GuHZ/iWAlsY+37YIBu9kbywIFDDGJeD9th9cXPpuQ31kEvwE37gsNn5p" + "\n" + "IB38oB3mgWoLi2nH4AAVNZXPNBTJ7rS1pi69v4BepUTbglb805ypmWJllzhyRUvm" + "\n" + "DAU/8cu0cPWaaBU4s8Mi7SLv2s+i9EPYNzDkBEy7RYvZApP7G8x447iYPRvmaFnB" + "\n" + "Fd3Ctpd3xkZhZatDV6MJCEfssIdy5yARV4zwCcZ5JDGXGlxoiPH6A3b11SwPOEMv" + "\n" + "QJ0PRZ334XLK93hwzxjYKBJ8hBrR2oPvRUOAVs2/J8JSASYrufyqkXnYJ1EBnP3H" + "\n" + "5TwbjRQ9Qmg1ScFCzTfYgu5emiIF5LFAfTasZGSJvjrXFVeocCswHUvHztzJmpbt" + "\n" + "BAov3Lw6lBkxdvhZomyx74CGOnyz/eFD/khvIV/oms5lR8NNrkpkRGZ/xCN8Kmau" + "\n" + "KhRBebGVEITzOWJQHz0QMhuTloVvtDbDDgqW8gH8eVQJkQCDw8Wd79uj0kw1Xaln" + "\n" + "nseFPLCRNRN0js7cCGW95fVtawRNBCNYambNCLthkBfzT0+1/ULRC2JrP1rutr6D" + "\n" + "sye0S44kNyXKhM72Hamu4XygYlzRsYQflv2PgypjVmkdcZ2rwomMVdqQll3Q7jde" + "\n" + "kWKDpKdx7lR2pnDoXmn43VR1X4uD1PHab56tYE0JUrKDgqZJqzCwJXc3FcPV7LgD" + "\n" + "8pISoMZJ5+84UiRBvNN7N24kpLd9k97Iz29qY6u86Uy/f7/X77qur58r6K04vTfH" + "\n" + "8nA/ybc/9Ube6oyQ44A2NEwBrP3NUA6lHNPeaYBO2RGxTJJU2Edxuy3bJMpEkBhU" + "\n" + "CeWWIZnuxojF+pGjiPLArVZg6Mahc0GlYoiA66cxTuoGHM/wO5Xl0f33L0jny3Kv" + "\n" + "I9OWvUJbKs+J8G6q0zorl5nNmPpTwGYLJkUKhLtMhjS+jf5XA7b5jN1079/oToXu" + "\n" + "Xsfl6J7vnwJt7gglLRpK8iw3xlF4X4AWodBLj36HEyOgTimJXLt2fdpIrkiutUFF" + "\n" + "qdWdZeK+sII8ZAyrfgvwxvmairFK3ylbPwA340jsRQeA8boOOSiDV0cPOszQi1Rt" + "\n" + "Ygnae9or6faA3lqe+fRQi5JsmnJ1jLMe0mxw1mMOR4YLCMjgBc0CTMkY5kmCykA7" + "\n" + "NCQBec2Fueu9cxsu7LJO4+OAUF+i+G/BWPzvWqyJrLk52tME2TxyVL5PRZvqAcrK" + "\n" + "CV+d9IKxH4Ng40qPXL1gM27wWrrFa6RGq12oGvTqkVcomImzqK1ASSPWU3bSYiOy" + "\n" + "2JOQvjLxjQw6emNYG09SlKrzNmXlbrZ4BfolL4eI8H2+3+UG4l/cXxPnLEeQzkvu" + "\n" + "XuW5yajWoNBocEICcopmv8QgpwgiTUstmOTMFXD1EbVasonaH5R+wxBMB4Y1K+ot" + "\n" + "eRawIyFA75FO8HCPoTBe5+Qb6G8+5i7nsgDtHG337G8JFz3hE3U++90zbYxxtjYx" + "\n" + "Y2PYHfOwsDE8IDu1ZqzuB7lgrNADzOzelhSrcaW/jNHPGlxcsPTXl7S2QazgIPqk" + "\n" + "kZ9g4ceXSsZOV9Yl4Bu2ODeUiVeYGGEXwJ7WAKNvaR3bMbhl+iwIQFy3A12/fz0w" + "\n" + "B16C9qp7P9+5FEFWjlqi/28dSfECiDD4X4iyEe+sWTS86Cv0VsL300dIUQPIs65d" + "\n" + "ddkrIkcpM4jyabKTZcltiQIlBBgBCgAPBQJVR5ubAhsMBQkHhh+AAAoJEHgWFzGc" + "\n" + "4xHEo+UP/02AIUR0349zGk9a4D5Jv007y+d0tWKPL0V2btaq9xQzoM51CtuT0Zoq" + "\n" + "TO8A0uFmEhCkw++reQcWOz1Nn+MarPjjJwMjhTPS/H1qiwTXmuwx92xLL0pajloq" + "\n" + "7oWYwlxsgVGCMDYE0TOMN8p/Vc+eoJaWZh8yO1xJGDP98RHbZQWwYN6qLzE4y/EC" + "\n" + "THxqi9UKc68qHNVH9ZgtTXnmgLAkEvXzRV1UOEEttJ6rrgPrTubjsIG+ckZK5mli" + "\n" + "vy+UW6XN0WBE0oetKjT8/Cb1dQYiX/8MJkGcIUFRurU7gtGW3ncSTdr6WRXaQtfn" + "\n" + "Rn9JG1aSXNYB/xZWzCBdykZp+tLuu4A3LVeOzn064hqf3rz2N7b8dWMk5WL5LIUh" + "\n" + "XYoYc7232RkNSiiKndeJNryvTowFt9anuMj4pFgGveClQc9+QGyMVdTe6G5kOJkK" + "\n" + "G8ydHKFEFObtsTLaut4lHTtxn+06QO/LKtQTXqNEyOyfYhbyX7xDbCbu4/MA23Mz" + "\n" + "Ts1hhwgIy4+UejU/Yeny6VkBodA3bFyEYKWPoMDDgfdlZbzjv3qAN4Qq+ollo8K3" + "\n" + "gJgH0QONrUaRY84/hil05T4EnUZiXdzPWvhMv5lEK+pTMlO8FbOG31+aB8rxCg+w" + "\n" + "p1ovyC/fp5XjZaLHcyPAWAXKLBn4tb400iHp7byO85tF/H0OOI1K" + "\n" + "=h0dN" + "\n" + "-----END PGP PRIVATE KEY BLOCK-----", null, {}); const keyDetails = EnigmailKeyRing.getValidUids("0xD535623BB60E9E71").join("\n"); Assert.assertContains(keyDetails, "strike.devtest@gmail.com"); EnigmailKeyRing.getAllKeys(); Assert.notEqual(gKeyListObj.keyList.length, 0); }))); test(function shouldCreateKeyListObject() { // from: "P:\Program Files (x86)\GNU\GnuPG\pub\gpg2.exe" --charset utf-8 --display-charset utf-8 --batch --no-tty --status-fd 2 --with-fingerprint --fixed-list-mode --with-colons --list-keys let keyInfo = [ // user with trust level "o" (unknown) "tru::1:1443339321:1451577200:3:1:5", "pub:o:4096:1:DEF9FC808A3FF001:1388513885:1546188604::u:::scaESCA:", "fpr:::::::::EA25EF48BF2001E41FAB0C1CDEF9FC808A3FF001:", "uid:o::::1389038412::44F73158EF0F47E4595B1FD8EC740519DE24B994::A User ID with CAPITAL letters :", "uid:o::::1389038405::3FC8999BDFF08EF4210026D3F1C064C072517376::A second User ID with CAPITAL letters :", "sub:o:4096:1:E2DEDFFB80C14584:1388513885:1546188604:::::e:", ]; // from: "P:\Program Files (x86)\GNU\GnuPG\pub\gpg2.exe" --charset utf-8 --display-charset utf-8 --batch --no-tty --status-fd 2 --with-fingerprint --fixed-list-mode --with-colons --list-secret-keys let secKeyInfo = [ "sec::4096:1:DEF9FC808A3FF001:1388513885:1546188604:::::::::", "fpr:::::::::EA25EF48BF2001E41FAB0C1CDEF9FC808A3FF001:", "uid:::::::44F73158EF0F47E4595B1FD8EC740519DE24B994::A User ID with CAPITAL letters :", "uid:::::::3FC8999BDFF08EF4210026D3F1C064C072517376::A second User ID with CAPITAL letters :", "ssb::4096:1:E2DEDFFB80C14584:1388513885::::::::::", ]; createAndSortKeyList(keyInfo, secKeyInfo, "validity", // sorted acc. to key validity -1); // descending let keyListObj = gKeyListObj; Assert.notEqual(keyListObj, null); Assert.notEqual(keyListObj.keySortList, null); Assert.notEqual(keyListObj.keySortList.length, null); Assert.equal(keyListObj.keySortList.length, 1); Assert.equal(keyListObj.keySortList[0].userId, "a user id with capital letters "); Assert.equal(keyListObj.keySortList[0].keyId, "DEF9FC808A3FF001"); Assert.notEqual(keyListObj.keyList, null); Assert.equal(keyListObj.keyList[keyListObj.keySortList[0].keyNum].userId, "A User ID with CAPITAL letters "); const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); let minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); let details = {}; let key = EnigmailKeyRing.getValidKeyForRecipient("user1@enigmail-test.de", minTrustLevelIndex, details); Assert.notEqual(key, null); Assert.equal(key, "DEF9FC808A3FF001"); minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("f"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("user1@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.notEqual(details.msg, null); }); const KeyRingHelper = { loadTestKeyList: function() { const pkFile = do_get_file("resources/pub-keys.asc", false); let publicKeys = EnigmailFiles.readFile(pkFile); let rows = publicKeys.split("\n"); let testKeyList = []; for (let i = 0; i < rows.length; ++i) { let row = rows[i]; if (row !== "" && row[0] != "#") { testKeyList.push(row); } } createAndSortKeyList(testKeyList, [], "validity", // sorted acc. to key validity -1); // descending let keyListObj = gKeyListObj; Assert.notEqual(keyListObj, null); Assert.notEqual(keyListObj.keySortList, null); Assert.notEqual(keyListObj.keySortList.length, null); } }; test(function testGetValidKeyForOneRecipient() { KeyRingHelper.loadTestKeyList(); const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); let minTrustLevelIndex = null; let details = null; let key = null; // unknown key: minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("unknown@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.equal(details.msg, null); //Assert.equal(details.msg, "undefined"); // ordinary full trusted key: minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("f"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("full@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0003AAAA00010001"); Assert.equal(details.msg, null); minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("full@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0003AAAA00010001"); Assert.equal(details.msg, null); // key not valid for encryption: // - no details because it would take time to check details of such a key minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("no-encrypt@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.equal(details.msg, null); // disabled key: // - no details because it would take time to check details of such a key minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = { all: "" }; key = EnigmailKeyRing.getValidKeyForRecipient("disabled@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.equal(details.msg, null); // multiple non-trusted and one full trusted keys minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("f"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("multiple-onefull@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0030AAAA00020001"); Assert.equal(details.msg, null); // multiple non-trusted and two full trusted keys (first taken) minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("f"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("multiple-twofull@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0034AAAA00020001"); Assert.equal(details.msg, null); // multiple non-trusted and one marginal trusted keys minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("f"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("multiple-onemarginal@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.equal(details.msg, "ProblemNoKey"); minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("multiple-onemarginal@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0031AAAA00020001"); Assert.equal(details.msg, null); // multiple non-trusted keys with same trust level // (faked keys case if no special trust given) minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("multiple-nofull@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, null); Assert.equal(details.msg, "ProblemMultipleKeys"); // some key with subkey that encrypts: // we return first main key minTrustLevelIndex = TRUSTLEVELS_SORTED.indexOf("?"); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("withsubkey-uid1@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0040EEEE00010001"); Assert.equal(details.msg, null); details = {}; key = EnigmailKeyRing.getValidKeyForRecipient("withsubkey-uid2@enigmail-test.de", minTrustLevelIndex, details); Assert.equal(key, "0040EEEE00010001"); Assert.equal(details.msg, null); }); test(function testGetValidKeysForMultipleRecipients() { KeyRingHelper.loadTestKeyList(); const TRUSTLEVELS_SORTED = EnigmailTrust.trustLevelsSorted(); let minTrustLevel = null; let details = null; let addrs = null; let keys = null; let keyMissing = null; // some matching keys: minTrustLevel = "?"; addrs = ["full@enigmail-test.de", "multiple-onefull@enigmail-test.de", "multiple-twofull@enigmail-test.de", "multiple-onemarginal@enigmail-test.de", "withsubkey-uid1@enigmail-test.de", "withsubkey-uid2@enigmail-test.de", ]; details = {}; keys = []; keyMissing = EnigmailKeyRing.getValidKeysForAllRecipients(addrs, minTrustLevel, details, keys); Assert.equal(keyMissing, false); Assert.notEqual(keys, null); Assert.equal(keys.length, 6); Assert.equal(keys[0], "0x0003AAAA00010001"); Assert.equal(keys[1], "0x0030AAAA00020001"); Assert.equal(keys[2], "0x0034AAAA00020001"); Assert.equal(keys[3], "0x0031AAAA00020001"); Assert.equal(keys[4], "0x0040EEEE00010001"); Assert.equal(keys[5], "0x0040EEEE00010001"); Assert.equal(details.errArray.length, 0); // some non-matching keys: minTrustLevel = "?"; addrs = ["no-encrypt@enigmail-test.de", "disabled@enigmail-test.de", "multiple-nofull@enigmail-test.de", ]; details = {}; keys = []; keyMissing = EnigmailKeyRing.getValidKeysForAllRecipients(addrs, minTrustLevel, details, keys); Assert.equal(keyMissing, true); Assert.equal(keys.length, 0); Assert.notEqual(details, null); Assert.equal(details.errArray.length, 3); Assert.equal(details.errArray[0].msg, "ProblemNoKey"); Assert.equal(details.errArray[1].msg, "ProblemNoKey"); Assert.equal(details.errArray[2].msg, "ProblemMultipleKeys"); // just two keys: minTrustLevel = "?"; addrs = ["0x0040EEEE00010001", "0x0003AAAA00010001", "0003AAAA00010001", ]; details = {}; keys = []; keyMissing = EnigmailKeyRing.getValidKeysForAllRecipients(addrs, minTrustLevel, details, keys); Assert.equal(keyMissing, false); Assert.notEqual(keys, null); Assert.equal(keys.length, 3); Assert.equal(keys[0], "0x0040EEEE00010001"); Assert.equal(keys[1], "0x0003AAAA00010001"); Assert.equal(keys[2], "0x0003AAAA00010001"); Assert.equal(details.errArray.length, 0); // disabled key: // - this BEHAVIOR is PROBABLY WRONG: minTrustLevel = "?"; addrs = ["0005AAAA00010001", ]; details = {}; keys = []; keyMissing = EnigmailKeyRing.getValidKeysForAllRecipients(addrs, minTrustLevel, details, keys); Assert.equal(keyMissing, false); Assert.notEqual(keys, null); Assert.equal(keys.length, 1); Assert.equal(keys[0], "0x0005AAAA00010001"); Assert.equal(details.errArray.length, 0); }); test(function shouldGetKeyValidityErrors() { // from: gpg2 --with-fingerprint --fixed-list-mode --with-colons --list-keys let keyInfo = [ // Key 1: Revoked key "tru::1:1443339321:1451577200:3:1:5", "pub:r:4096:1:DEF9FC808A3FF001:1388513885:1546188604::u:::sca:", "fpr:::::::::EA25EF48BF2001E41FAB0C1CDEF9FC808A3FF001:", "uid:r::::1389038412::44F73158EF0F47E4595B1FD8EC740519DE24B994::User ID 1 :", "sub:r:4096:1:E2DEDFFB80C14584:1388513885:1546188603:::::e:", // Key 2: valid public key, usable for signing, with expired subkeys for encryption "pub:u:1024:17:F05B29A5CEFE4B70:1136219252:::u:::scaSCA:::::::", "fpr:::::::::6D67E7817D588BEA263F41B9F05B29A5CEFE4B70:", "uid:u::::1446568426::560DE55D9C611718F777EDD11A84F126CCD71965::User ID 2 :::::::::", "sub:e:2048:1:B2417304FFC57041:1136219469:1199291469:::::e::::::", "sub:e:2048:1:770EA47A1DB0E8B0:1136221524:1293901524:::::s::::::", "sub:e:2048:1:805B29A5CEFB2B70:1199298291:1262370291:::::e::::::", "sub:e:2048:1:0F6B6901667E633C:1262537932:1325437132:::::e::::::", // Key 3: valid public key, usable subkey for encryption, no secret key "pub:u:1024:17:86345DFA372ADB32:1136219252:::u:::scESC:::::::", "fpr:::::::::9876E7817D588BEA263F41B986345DFA372ADB32:", "uid:u::::1446568426::560DE55D9C611718F777EDD11A84F126CCD71965::User ID 3 :::::::::", "sub:u:2048:1:B2417304FFC57041:1136219469::::::s::::::", "sub:u:2048:1:770EA47A1DB0E8B0:1136221524::::::e::::::", ]; // from: gpg2 --with-fingerprint --fixed-list-mode --with-colons --list-secret-keys let secKeyInfo = [ // Key 1 "sec::4096:1:DEF9FC808A3FF001:1388513885:1546188604:::::::::", "fpr:::::::::EA25EF48BF2001E41FAB0C1CDEF9FC808A3FF001:", "uid:::::::44F73158EF0F47E4595B1FD8EC740519DE24B994::User ID 1 :", "ssb::4096:1:E2DEDFFB80C14584:1388513885::::::::::", // Key 2 "sec:u:1024:17:F05B29A5CEFE4B70:1136219252:1507997328::u:::scaSCA:::::::", "fpr:::::::::6D67E7817D588BEA263F41B9F05B29A5CEFE4B70:", "uid:u::::1446568426::560DE55D9C611718F777EDD11A84F126CCD71965::User ID 2 :::::::::", "ssb:e:2048:1:B2417304FFC57041:1136219469:1199291469:::::e::::::", "ssb:e:2048:1:770EA47A1DB0E8B0:1136221524:1293901524:::::s::::::", "ssb:e:2048:1:805B29A5CEFB2B70:1199298291:1262370291:::::e::::::", "ssb:e:2048:1:0F6B6901667E633C:1262537932:1325437132:::::e::::::", // NO Key 3 ]; createAndSortKeyList(keyInfo, secKeyInfo, "validity", // sorted acc. to key validity -1); // descending let key = EnigmailKeyRing.getKeyById("DEF9FC808A3FF001"); let result = key.getSigningValidity(); Assert.equal(result.reason, EnigmailLocale.getString("keyRing.pubKeyRevoked", [key.userId, "0x" + key.keyId])); key = EnigmailKeyRing.getKeyById("F05B29A5CEFE4B70"); result = key.getEncryptionValidity(); Assert.equal(result.keyValid, false); Assert.equal(result.reason, EnigmailLocale.getString("keyRing.encSubKeysExpired", [key.userId, "0x" + key.keyId])); result = key.getSigningValidity(); Assert.equal(result.keyValid, true); key = EnigmailKeyRing.getKeyById("86345DFA372ADB32"); result = key.getSigningValidity(); Assert.equal(result.keyValid, false); Assert.equal(result.reason, EnigmailLocale.getString("keyRing.noSecretKey", [key.userId, "0x" + key.keyId])); result = key.getEncryptionValidity(); Assert.equal(result.keyValid, true); }); test(function shouldGetKeyExpiry() { // uses the key listing from shouldGetKeyValidityErrors let key = EnigmailKeyRing.getKeyById("DEF9FC808A3FF001"); Assert.equal(key.getKeyExpiry(), 1546188603); key = EnigmailKeyRing.getKeyById("F05B29A5CEFE4B70"); Assert.equal(key.getKeyExpiry(), 1325437132); key = EnigmailKeyRing.getKeyById("86345DFA372ADB32"); Assert.equal(key.getKeyExpiry(), Number.MAX_VALUE); }); test(function shouldClone() { // uses the key listing from shouldGetKeyValidityErrors let key = EnigmailKeyRing.getKeyById("DEF9FC808A3FF001"); let cp = key.clone(); Assert.equal(cp.fprFormatted, "EA25 EF48 BF20 01E4 1FAB 0C1C DEF9 FC80 8A3F F001"); Assert.equal(cp.getEncryptionValidity().keyValid, false); }); enigmail/package/tests/locale-test.js000066400000000000000000000013401266701624400201600ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("locale.jsm"); /*global EnigmailLocale: false */ test(function shouldReadProperty() { const importBtnValue = EnigmailLocale.getString("enigHeader"); Assert.equal("Enigmail:", importBtnValue); }); enigmail/package/tests/log-test.js000066400000000000000000000022401266701624400175020ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("log.jsm"); /*global EnigmailLog: false */ component("enigmail/files.jsm"); /*global EnigmailFiles: false */ test(function shouldCreateLogFile() { EnigmailLog.setLogDirectory(do_get_cwd().path); EnigmailLog.setLogLevel(5); EnigmailLog.createLogFiles(); const filePath = EnigmailLog.directory + "enigdbug.txt"; const localFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); EnigmailFiles.initPath(localFile, filePath); try { Assert.equal(localFile.exists(), true); } finally { if (localFile.exists()) { EnigmailLog.fileStream.close(); localFile.remove(false); } } }); enigmail/package/tests/mailHelper.js000066400000000000000000000053161266701624400200350ustar00rootroot00000000000000/*global do_load_module: false, do_get_cwd: false, component: false, do_get_file: false, Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; component("/modules/mailServices.js"); /*global MailServices: false */ component("enigmail/files.jsm"); /*global EnigmailFiles: false */ component("/modules/iteratorUtils.jsm"); const MailHelper = { init: function() { if (!MailHelper.initialized) { try { MailServices.accounts.createLocalMailAccount(); } catch (ex) { // This will fail if someone already called this. } let localAccount = MailServices.accounts.FindAccountForServer(MailServices.accounts.localFoldersServer); let identity = MailServices.accounts.createIdentity(); identity.email = "tester@enigmail.org"; localAccount.addIdentity(identity); localAccount.defaultIdentity = identity; MailHelper.incomingServer = MailServices.accounts.localFoldersServer; MailHelper.rootFolder = MailHelper.incomingServer.rootMsgFolder; if (!MailHelper.rootFolder.containsChildNamed("EngimailTestInbox")) { MailHelper.rootFolder.createSubfolder("EngimailTestInbox", null); MailHelper.inboxFolder = MailHelper.rootFolder.getChildNamed("EngimailTestInbox"); MailHelper.inboxFolder.setFlag(Components.interfaces.nsMsgFolderFlags.Mail); MailHelper.inboxFolder.setFlag(Components.interfaces.nsMsgFolderFlags.Inbox); } MailHelper.initialized = true; } }, getRootFolder: function() { MailHelper.init(); return MailHelper.rootFolder; }, createMailFolder: function(name) { MailHelper.init(); let localRoot = MailHelper.rootFolder.QueryInterface(Components.interfaces.nsIMsgLocalMailFolder); let mailFolder = localRoot.createLocalSubfolder(name); mailFolder.setFlag(Components.interfaces.nsMsgFolderFlags.Mail); return mailFolder; }, cleanMailFolder: function(mailFolder) { MailHelper.init(); let it = mailFolder.subFolders; while (it.hasMoreElements()) { mailFolder.propagateDelete(it.getNext(), true, null); } }, loadEmailToMailFolder: function(emailFilePath, mailFolder) { let emailFile = do_get_file(emailFilePath, false); MailServices.copy.CopyFileMessage(emailFile, mailFolder, null, false, 0, null, null, null); }, fetchFirstMessageHeaderIn: function(mailFolder) { let msgDb = mailFolder.msgDatabase; let enumerator = msgDb.EnumerateMessages(); return enumerator.getNext().QueryInterface(Components.interfaces.nsIMsgDBHdr); } }; enigmail/package/tests/main.js000066400000000000000000000016661266701624400167030ustar00rootroot00000000000000/*global do_subtest: false */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_subtest("armor-test.js"); do_subtest("data-test.js"); do_subtest("system-test.js"); do_subtest("decryption-test.js"); do_subtest("decryptPermanently-test.js"); do_subtest("errorHandling-test.js"); do_subtest("encryption-test.js"); do_subtest("gpgAgent-test.js"); do_subtest("enigmail-test.js"); do_subtest("files-test.js"); do_subtest("streams-test.js"); do_subtest("keyRing-test.js"); do_subtest("keyEditor-test.js"); do_subtest("locale-test.js"); do_subtest("log-test.js"); do_subtest("mime-test.js"); do_subtest("prefs-test.js"); do_subtest("rules-test.js"); do_subtest("funcs-test.js"); do_subtest("mimeDecrypt-test.js"); do_subtest("expiry-test.js"); do_subtest("installGnuPG-test.js"); enigmail/package/tests/mime-test.js000066400000000000000000000074141266701624400176600ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("mime.jsm"); /*global EnigmailMime: false */ test(function getBoundaryTest() { var got = EnigmailMime.getBoundary("content-type: application/pgp-encrypted;\n boundary='abc'; procol='any'\n"); Assert.equal(got, "abc", "get boundary 1"); got = EnigmailMime.getBoundary("content-type: application/pgp-encrypted; boundary='abc'; protocol='any'"); Assert.equal(got, "abc", "get boundary 2"); got = EnigmailMime.getBoundary('content-type: application/pgp-encrypted; boundary="abc"; protocol="any"'); Assert.equal(got, "abc", "get boundary 2"); }); test(function extractProtectedHeadersTest() { var inputData = 'Content-Type: multipart/mixed; boundary="OuterBoundary"\n' + 'References: \n' + 'Subject: Outer hidden subject\n' + '\n' + '--OuterBoundary\n' + 'Content-Transfer-Encoding: base64\n' + 'Content-Type: text/rfc822-headers; charset="us-ascii";\n' + ' protected-headers="v1,<12345678@enigmail-test.net>"\n' + 'Content-Disposition: inline\n' + '\n' + 'U3ViamVjdDogVGhlIGhpZGRlbiBzdWJqZWN0CkRhdGU6IFN1biwgMjEgSnVuIDIwMTUgMT\n' + 'U6MTk6MzIgKzAyMDAKRnJvbTogU3RhcndvcmtzIDxzdHJpa2VmcmVlZG9tQGVuaWdtYWls\n' + 'LXRlc3QubmV0PgpUbzogUGF0cmljayA8cGF0cmlja0BlbmlnbWFpbC10ZXN0Lm5ldD4sIE\n' + 'JpbmdvIDxiaW5nb0BlbmlnbWFpbC10ZXN0Lm5ldD4KQ2M6IFBhdHJpY2sgPHBhdHJpY2sy\n' + 'QGVuaWdtYWlsLXRlc3QubmV0PiwgQmluZ28gPDJiaW5nb0BlbmlnbWFpbC10ZXN0Lm5ldD\n' + '4KUmVwbHktVG86IFN0YXJ3b3JrcyBhbHRlcm5hdGl2ZSA8YWx0ZXJuYXRpdmVAZW5pZ21h\n' + 'aWwtdGVzdC5uZXQ+Cg==\n' + '\n' + '--OuterBoundary\n' + 'Content-Type: multipart/mixed; boundary="innerContent"\n' + '\n' + '--innerContent\n' + 'Content-Type: text/plain; charset="us-ascii"\n' + '\n' + 'Hello World!\n' + '\n' + '--innerContent--\n' + '--OuterBoundary--\n\n'; var r = EnigmailMime.extractProtectedHeaders(inputData); var expected = 'Content-Type: multipart/mixed; boundary="OuterBoundary"\n' + 'References: \n' + 'Subject: Outer hidden subject\n' + '\n' + '--OuterBoundary\n' + 'Content-Type: multipart/mixed; boundary="innerContent"\n' + '\n' + '--innerContent\n' + 'Content-Type: text/plain; charset="us-ascii"\n' + '\n' + 'Hello World!\n' + '\n' + '--innerContent--\n' + '--OuterBoundary--\n\n'; var got = r.startPos; Assert.equal(got, 113, "startPos of removed data"); got = r.endPos; Assert.equal(got, 749, "endPos of removed data"); got = r.newHeaders.subject; expected = "The hidden subject"; Assert.equal(got, expected, "subject"); got = r.newHeaders.from; expected = "Starworks "; Assert.equal(got, expected, "from"); got = r.newHeaders.to; expected = "Patrick , Bingo "; Assert.equal(got, expected, "to"); got = r.newHeaders.cc; expected = "Patrick , Bingo <2bingo@enigmail-test.net>"; Assert.equal(got, expected, "cc"); got = r.newHeaders["reply-to"]; expected = "Starworks alternative "; Assert.equal(got, expected, "reply-to"); got = r.newHeaders.date; expected = "Sun, 21 Jun 2015 15:19:32 +0200"; Assert.equal(got, expected, "date"); got = r.newHeaders.references; expected = ""; Assert.equal(got, expected, "references"); }); enigmail/package/tests/mimeDecrypt-test.js000066400000000000000000000021541266701624400212070ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EnigmailMime = { extractProtectedHeaders: function(str) { return { startPos: 10, endPos: 22, newHeaders: { subject: "The hidden subject" } }; } }; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("mimeDecrypt.jsm"); /* global EnigmailMimeDecrypt: false */ test(function extractEncryptedHeadersTest() { var dec = new EnigmailMimeDecrypt(); dec.decryptedData = 'This is a Hello World example'; dec.extractEncryptedHeaders(); var expected = 'This is a example'; var got = dec.decryptedData; Assert.equal(got, expected, "removed rfc822 header"); got = dec.decryptedHeaders.subject; expected = "The hidden subject"; Assert.equal(got, expected, "subject"); }); enigmail/package/tests/pinentry-auto000077500000000000000000000024761266701624400201650ustar00rootroot00000000000000#!/bin/bash # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # Emulates pinentry programs, with a static PIN # This can be used to bypass PIN requirement while using GnuPG/scdaemon # and automation. Another solution is to use PSCS/OpenSC. # Obviously, this is a hack, even if it's pretty damn clean. # This means, do not use this if you do not know what you are doing. # If you don't know what to put here, # you probably shouldn't be using this. # 123456 is the default for OpenPGP smartcards USER_PIN=STRIKEfreedom@Qu1to function tolower() { echo $1 | tr '[A-Z]' '[a-z]' } function reply_ok() { echo "OK $*" } function reply_d() { echo "D $*" echo "OK" } function error() { echo "ERR 83886355 unknown command" } function main() { echo "OK Your orders please" while read reply; do reply=$(tolower "$reply") case $reply in "getpin") reply_d $USER_PIN ;; "bye") reply_ok "closing connection" break ;; "getinfo pid") reply_d $BASHPID ;; *) # This generally includes OPTION, SETDESC, SETPROMPT # i.e. things we don't care for if we're not displaying # a prompt reply_ok ;; esac done } main exit 0 enigmail/package/tests/pinentry-auto.c000077500000000000000000000062261266701624400204030ustar00rootroot00000000000000/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ // Emulates pinentry programs, with a static PIN // This can be used to bypass PIN requirement while using GnuPG/scdaemon // and automation. Another solution is to use PSCS/OpenSC. // Obviously, this is a hack, even if it's pretty damn clean. // This means, do not use this if you do not know what you are doing. // This version of pinentry-auto is adapted for use on Windows, where // shell scripts can't be used as replacement for pinentry #include #include #include #define USER_PIN "STRIKEfreedom@Qu1to" size_t getline(char **lineptr, size_t *n, FILE *stream) { char *bufptr = NULL; char *p = bufptr; size_t size; int c; if (lineptr == NULL) { return -1; } if (stream == NULL) { return -1; } if (n == NULL) { return -1; } bufptr = *lineptr; size = *n; c = fgetc(stream); if (c == EOF) { return -1; } if (bufptr == NULL) { bufptr = malloc(128); if (bufptr == NULL) { return -1; } size = 128; } p = bufptr; while(c != EOF) { if ((p - bufptr) > (size - 1)) { size = size + 128; bufptr = realloc(bufptr, size); if (bufptr == NULL) { return -1; } } *p++ = c; if (c == '\n') { break; } c = fgetc(stream); } *p++ = '\0'; *lineptr = bufptr; *n = size; return p - bufptr - 1; } void toLowerCase(char* str) { int i; for (i = 0; i < strlen(str); i++) { if (str[i] >= 'A' && str[i] <= 'Z') { str[i] = str[i] + 32; } } } // remove trailing \r and \n from a string void chomp(char* str) { int i; for (i = strlen(str) - 1; i >= 0; i-- ) { if (str[i] == '\n' || str[i] == '\r') { str[i] = 0; } else { return; } } } void reply_d(char* str) { printf("D %s\n", str); printf("OK\n"); fflush(stdout); } void reply_pid() { printf("D %d\n", getpid()); printf("OK\n"); fflush(stdout); } void reply_ok(char* str) { printf("OK %s\n", str); fflush(stdout); } void error() { printf("ERR 83886355 unknown command\n"); fflush(stdout); } int main( ) { printf("OK Your orders please\n"); fflush(stdout); char *line = NULL; size_t size; int l = getline(&line, &size, stdin); while ( l != -1) { chomp(line); toLowerCase(line); if (strcmp(line, "getpin") == 0) { reply_d(USER_PIN); } else if (strcmp(line, "bye") == 0) { reply_ok("closing connection"); break; } else if (strcmp(line, "getinfo pid") == 0) { reply_pid(); } else { // This generally includes OPTION, SETDESC, SETPROMPT // i.e. things we don't care for if we're not displaying // a prompt reply_ok(""); } l = getline(&line, &size, stdin); } return 0; }enigmail/package/tests/pinentry-auto.exe000077500000000000000000002773251266701624400207540ustar00rootroot00000000000000MZÿÿ¸@€º´ Í!¸LÍ!This program cannot be run in DOS mode. $PELãÙŸU"Pà ,D@@àñÓ €´ ,Ü.text”+,`P`.data@0@0À.rdata¸P2@0@/4ü` 4@0@.bss|p€0À.idata´€>@0À.CRTD@0À.tls  F@0À/14ð°H@@B/29DkÀlJ@B/41©0¶@B/55ÍPÌ@B/678pä@0B/80Œ€æ@B/91í12è@B/102ÐÐ@BU‰åWVSƒìl¡ìP@…ÀtÇD$ÇD$Ç$ÿЃì Ç$@è¦*ƒìè¾ è™ ¡@@¨„è*ƒÉÿ‰e´‰Æ1À‰÷ò®÷ÑD ƒàðè‹)ÄD$‰E¸¡@@‹]¸ÇEäÇEăà@ƒøÀ%Àÿÿ@‰EÀ1ÀÇE¼¶ƒÆ¾Ê…É„€ú?„{–€ú'„5€ú*f„a€ú"„Ù…À<t Æ\ƒÃ9ûuö‹EÄ…À…¯‰ $ˆU°èÊ(¶U°…À„˜ƒ}¼u1À9]¸sƒEØÆ‰D$ ÇD$‹EÀ‰D$‹E¸‰$è‹]¸1ÀƒMÀÇE¼éJÿÿÿ€ú\„O€ú„Í€ú[…lÿÿÿ‹=@@Áïƒ÷ƒç…Àt ØÆ\ƒÃ9Ãuö‰ø„Àu ‹}Ä…ÿuƒùuƃȶƒÃ1ÀƒÆ¾Ê…É…ñþÿÿ…Àt ØÆ\ƒÃ9Ãuöƒ}¼u9]¸s$EØÆ‰D$ ÇD$‹EÀ‰D$‹E¸‰$èß‹EÜ£p@‹Eà£p@‹e´¡0p@…ÀtB‹œ@£@@‰D$‹C‰$è¡'¡0p@‰D$‹C0‰$è'¡0p@‰D$‹CP‰$èy'è|'‹@@‰èÏ ƒäðè7 èj'‹‰D$¡p@‰D$¡p@‰$è?‰ÃèO'‰$è7(´&ƒÀéêýÿÿ‰ÂÑút ÚÆ\ƒÃ9Óuö¨uƒ}Ä't1MÄ1ÀÇE¼é½ýÿÿÆ"1ÀƒÃÇE¼é©ýÿÿ´&ö@@„Òýÿÿ‰ÂÑút ÚÆ\ƒÃ9Óuö¨tÆ'1ÀƒÃÇE¼ékýÿÿ1ÿéDþÿÿƒ}Ä"uë݃àÇEÔUÔ‰D$ EЉT$‰D$ÇD$p@Ç$p@è‚&é™þÿÿt&Sƒì(‹D$0‹‹=‘Àw==ÀrM»ÇD$Ç$èM&ƒø„ô…À… 1ÀƒÄ([Âv=”ÀtK=–Àt=“Àußë³=ÀtB=ÀuÏÇD$Ç$è÷%ƒøti…Àt²Ç$ÿиÿÿÿÿë¤1Ûévÿÿÿ´&ÇD$Ç$ è¼%ƒøtJ…À„sÿÿÿÇ$ ÿиÿÿÿÿébÿÿÿÇ$ÿиÿÿÿÿéOÿÿÿÇD$Ç$èu%ƒÈÿé3ÿÿÿÇD$Ç$ èY%ƒÈÿéÿÿÿÇD$Ç$è<%…Û¸ÿÿÿÿ„õþÿÿ‰D$èö‹D$éãþÿÿ¶¼'ƒìÇ$ÿ€@èëúÿÿt&¼'ƒìÇ$ÿ€@èËúÿÿt&¼'¡¬@ÿà‰ö¼'¡ @ÿàU‰åƒìÇ$P@è†%ºƒì…ÀtÇD$P@‰$èr%ƒì‰Â…ÒtÇD$p@Ç$¬`@ÿÒ¡ @@…Àt:Ç$)P@è;%ºƒì…ÀtÇD$7P@‰$è'%ƒì‰Â…Òt Ç$ @@ÿÒÉÃvU‰åƒìÇ$P@èö$ºƒì…ÀtÇD$KP@‰$èâ$ƒì‰Â…Òt Ç$¬`@ÿÒÉÃU‰åƒì(ÇEô‹Eô‰Eðƒ}u ¸ÿÿÿÿéƒ}u ¸ÿÿÿÿéƒ} u ¸ÿÿÿÿéò‹E‹‰Eô‹E ‹‰Eì‹E‰$èz#‰Eèƒ}èÿu ¸ÿÿÿÿéă}ôu&Ç$€è]#‰Eôƒ}ôu ¸ÿÿÿÿéŸÇE쀋Eô‰Eðë^‹Uð‹Eô‰Ñ)Á‰È‹Uìƒê9Ðv&ƒm쀋Eì‰D$‹Eô‰$è#‰Eôƒ}ôu¸ÿÿÿÿëT‹Eè‰Â‹EðˆƒEðƒ}è t‹E‰$èØ"‰Eèƒ}èÿuœë‹EðƃEð‹E‹Uô‰‹E ‹U쉋Uð‹Eô‰Ñ)Á‰ÈƒèÉÃU‰åSƒì$ÇEôë:‹Uô‹Eж<@~'‹Uô‹Eжÿÿÿ‹MȶA<\„€üÿÿvˆM«ë…ÇEÀéùýÿÿ1ö1Éé}ýÿÿ¸éþÿÿ€}«\„fÿÿÿ‰EÈÆE«\éžûÿÿ‰ÐéIÿÿÿ¶ ‰ÐˆM«é<ÿÿÿfU‰åƒì8‰uø‹u‰]ô‹]‰}ü>žQ@t ‰ðè<öÿÿÇžQ@‰4$‹M‰Ø‹U èöùÿÿƒø‰Çt‰ø‹]ô‹uø‹}ü‰ì]ÃöE të‰eä‰$èß ƒÀƒàðè¤óÿÿ)ÄL$‰Êë ˆƒÃƒÂ„Àt¶<uí¶CƒÃƒÃˆƒÂ„Àuæ‰ $è´ ‹eä‰òè¢øÿÿ‰ø‹]ô‹uø‹}ü‰ì]Ãv‹D$8žQ@tóÃfé+øÿÿU‰åWVSƒì<‹]ÇD$Ç$è° …À‰Æt ‰$èJ ‰ÆÇD$°Q@Ç$èŒ …Ût€;usÇD$ÇD$²Q@Ç$èo X‰\$¡hp@‰$èÛ £hp@‰\$ÇD$²Q@‰$èB ‰t$Ç$è* ‰4$è ‹hp@eô‰Ø[^_]Ãf‰eÐÇD$‰\$Ç$è ‰ÂDƒàðèGòÿÿ)ÄL$ Ñé‰MäɉMà‰T$‰\$‰ $è× ‹Uàƒø‰EÔfÇB†¨‹Uä·fƒú\f‰UÞt fƒú/…‰‹Mà‹Uä‰MØ·MÞf;L„?fƒ}Þ„ú‹}Ø·EÞ‰ùfƒø\t fƒø/…;·‰Èfƒú\u ƒÀ·fƒú\tôfƒú/tîf…Òt‰ÇH·@f…ÀuÀ9}؃=‹MØGþ9Ás'·Wþfƒú\u‰Çëë‹Mä‰UØ· f‰MÞéxÿÿÿfƒú/tã9EØ„¼‹MäfÇ@‹Eà· fƒú\…\ƒÀ·fƒù\tôfƒù/tî‰Á+MàƒùŽF‹Eà‰Áf…Òt f‰ƒÁfƒú/tkfƒ8\xtv·P‰øf…Òuà‹EÔfljD$‹Uà‰$‰T$èq ƒøÿtƉt$Ç$èP ‰4$è( ‹eÐeô‰Ø[^_]Ãfƒú/uŒt&ƒÀ·fƒú\tôëçf‰Èéâþÿÿ‰ø´&ëá‹Mä‹Uàfƒ| :‰UØ…zþÿÿ·L ƒÂ‰UØf‰MÞéfþÿÿfƒ}Þ\t fƒ}Þ/…‹E؃ÀfÇÇD$‹UàÇ$‰T$èµx‰|$¡hp@‰$è!£hp@‰Ã‰|$‹Mà‰$‰L$è‡éÿÿÿ‹eÐéïüÿÿfƒú/„šþÿÿ‹Mäf9T …¬þÿÿ·é§þÿÿ‹M؉ÈfÇ.ƒÀésÿÿÿ‹Mäfƒ| …²ýÿÿéÌþÿÿfƒ}Þ\tfƒ}Þ/‹EØ…/þÿÿ‹EØ·UÞf9P…þÿÿ·Pfƒú/„þÿÿfƒú\EÇéþÿÿUWVSì<‹„$P…À„€8„Þ|$ÇD$‰û‰D$‰<$è¼€|$…‹ƒÃ‚ÿþþþ÷Ò!Ð%€€€€tê‰ÂÁê©€€DÂSDÚÀƒÛ)ûƒAfÇ*‰$èÕ…À‰Æ„‹¨8ƒÃ‰\$‰|$‰,$è„$‰D$‰,$è?ƒøÿ‰Ã„ü‹„$‰F‹„$‰F‰Â‹„$ Áú‰V‰F‰Â‹„$$Áú‰V‰F ‰Â‹„$(Áú‰V$‰F(„$,‰D$F,ÇD$‰$èÔ‰ž0dž4ÇfÇFÄ<‰ð[^_]Ãv‹ƒÃ‚ÿþþþ÷Ò!Ð%€€€€tê‰ÂÁê©€€DÂSDÚÀƒÛ)û¶D<\„ÚþÿÿÿÿÿèÁÇëËè³Ç é ÿÿÿè£1öÇéÿÿÿ´&¼'ìL‰œ$<‹œ$P‰´$@‰¼$D‰¬$H…Û„Z‹ƒ4s,P…À‰“4ކè8‹(D$‰D$‹ƒ0‰$èXƒøÿ‰Ç„­‹D$s,‰C‹D$‰C‰Â‹D$ Áú‰S‰C‰Â‹D$$Áú‰S‰C ‰Â‹D$(Áú‰S$‰C(D$,ÇD$‰D$‰4$èï…ÿ……‰4$èGf‰C‹CƒàØt1ƒøt,ÇC‰Ø‹´$@‹œ$<‹¼$D‹¬$HÄLÉCëÖt&{º(÷ÇuP÷Çu8‰Ñ1ÀÁéöÂó«tfǃǃâtÆè½1Ûƒøuè!‰(ë†t&fǃêƒÇë»vÆC{ ²'ë¥èøÇ éVÿÿÿt&Sƒì‹\$ …Ût$‹ƒ0‰$è…Àu‰$èª1ÀƒÄ[Ãvè³Ç ¸ÿÿÿÿëæ´&¼'ì<‰œ$0‹œ$@‰´$4‰¼$8…Ût‹ƒ0‰$褅Àt(è[Ç ‹œ$0‹´$4‹¼$8Ä<ÃD$‰D$ƒ8‰$èJƒøÿ‰Ætk‹D$‰C‹D$‰C‰Â‹D$ Áú‰S‰C‰Â‹D$$Áú‰S‰C ‰Â‹D$(Áú‰S$‰C(D$,‰D$C,ÇD$‰$èõ‰³0ǃ4é[ÿÿÿ{º÷ÇuF÷Çu1‰Ñ1ÀÁéöÂó«uƒâuǃ0ÿÿÿÿé!ÿÿÿÆëìfǃÇëÝfǃêƒÇëÂÆC{ ²믴&ƒì ‹D$…Àt ‹€4ƒÄ Ãè.Ç ¸ÿÿÿÿëê‰ö¼'UWVSì<‹´$T‹œ$P…öˆ‰$èXþÿÿ…ö„ ƒ»0ÿ„“|$‹ƒ4ƒÀ9Ɖƒ4~|‰|$‹ƒ0‰$èêƒøÿ‰Åts‹D$‰C‹D$‰C‰Â‹D$ Áú‰S‰C‰Â‹D$$Áú‰S‰C ‰Â‹D$(Áú‰S$‰C(D$,‰D$C,ÇD$‰$è……í„vÿÿÿt&Ä<[^_]Ãt&{º(÷ÇuV÷ÇuY‰Ñ1ÀÁéöÂó«uƒâtÅÆÄ<[^_]ô&fǃǃât£ëÜèãÇÄ<[^_]ÃÆC{ ²'ëŸfǃêƒÇëšÿ%Ä@ÿ%¤@ÿ%|@ÿ%x@ÿ%„@ÿ%t@ÿ%ä@ÿ%¸@ÿ%È@ÿ%Ü@ÿ%ð@ÿ%Ø@ÿ%Ô@ÿ%´@ÿ%è@ÿ%À@ÿ%ü@ÿ%¨@ÿ%Ð@ÿ%°@ÿ%¼@ÿ%ø@ÿ%ì@ÿ%ˆ@ÿ%à@ÿ%‚@ÿ%Ì@ÿ%˜@ÿ%@ÿ%ô@ÿ%”@ÿ%Œ@ÿ%P@ÿ%8@ÿ%4@ÿ%@@ÿ%D@ÿ%\@ÿ%X@ÿ%0@ÿ%T@ÿ%<@ÿ%L@ÿ%,@ÿ%H@ÿ%h@ÿ%l@ffffU‰åƒìèõÙÿÿÇ$ð@èÉÙÿÿÉÃÿÿÿÿ`;@ÿÿÿÿ@;@libgcc_s_dw2-1.dll__register_frame_infolibgcj-13.dll_Jv_RegisterClasses__deregister_frame_infoD %s OKD %d OK %s ERR 83886355 unknown commandOK Your orders pleasegetpinSTRIKEfreedom@Qu1tobyeclosing connectiongetinfo pid`@Mingw runtime failure: VirtualQuery failed for %d bytes at address %p Unknown pseudo relocation protocol version %d. Unknown pseudo relocation bit size %d. .glob-1.0-mingw32.zR| ˆà¯ÿÿ‹A…B F‡†ƒ <P³ÿÿcAƒC0E AÃF `œ´ÿÿC t¨´ÿÿC ˆ´´ÿÿœ°´ÿÿzR| ˆ”´ÿÿA…B ‰Å <µÿÿBA…B ~Å zR| ˆµÿÿ7A…B 3Å  <3¶ÿÿbA…B DƒYÃAÅ `q¶ÿÿQA…B MÅ €¢¶ÿÿ7A…B sÅ  ¹¶ÿÿ9A…B uÅ ÀÒ¶ÿÿ+A…B gÅ àݶÿÿ$A…B `Å á¶ÿÿA…B Å zR| ˆзÿÿCC U H `8<¸ÿÿ†A†A ƒC d  FÃAÆC k  FÃAÆC xT¸ÿÿzR| ˆ8¸ÿÿÜ]ƒ¤ÃBƒzR| ˆà¸ÿÿzR| ˆĸÿÿKA†A ƒC <<ô¸ÿÿC`DƒY†F‡F…ETC`t ÅÇÆÃH iPC`RPC`$|Ĺÿÿçl@Sƒ†‡…ç ÅÇÆÃA zR| ˆt»ÿÿ,N\ 4Œ»ÿÿIAƒC m AÃA X¸»ÿÿzR| ˆ8¬»ÿÿ`A†A ƒC LI PC jC C AÃAÆ4XлÿÿŒC I†FƒQ ÆÃA sQ LE K ÃÆA <(¼ÿÿAƒC P CÃA LI nC C CÃA ZC (Ðx¼ÿÿ˜C X E iC _ E \C zR| ˆT½ÿÿA…A ‡A†AƒC^ AÃAÆ AÇAÅG  DÃAÆ AÇAÅF $t̾ÿÿzC0F†Nƒ‡…bÅÇÆÃTœ$¿ÿÿ A…A ‡A†AƒC@¬ AÃAÆ AÇAÅA D AÃAÆ AÇAÅA 0ôìÀÿÿEA‡C †AƒC wCà AÆAÇ((Áÿÿ‰C FƒJ†‡V ÇÆÃG XÃÆÇTlÁÿÿFC DƒH†vÆÃ<tœÁÿÿÎA…B F‡†ƒZ ÃAÆAÇAÅ A a ÃAÆAÇAÅ E 8´,Çÿÿ½A…B F†FƒF‡y ÇÆÃ AÅA kÃÆÇ AÅð°ÇÿÿzR| ˆ<¤ÇÿÿäA…B F‡†ƒ± ÃAÆAÇAÅ C Ñ ÃAÆAÇAÅ A zR| ˆ@<ËÿÿBA…A ‡A†AƒFÐL CÃAÆ AÇAÅD (`HÍÿÿ›FÐGƒ\†‡…ì ÅÇÆÃA Œ¼ÎÿÿBAƒC g AÃD $°èÎÿÿIFÀGƒU†‡| ÇÆÃB ØÐÿÿ'CQ A hô$Ðÿÿ^A…A ‡A†AƒFÐÌ AÃAÆ AÇAÅF t AÃAÆ AÇAÅH a AÃAÆ AÇAÅA zR| ˆ|ÒÿÿA…B UÅ P€ð„,ˆ€ …d˜€¨…t‚ ‚8‚F‚X‚h‚|‚Ž‚ª‚‚à‚ƒƒ$ƒ0ƒ@ƒPƒ^ƒpƒzƒ„ƒ’ƒ ƒ¬ƒ¸ƒÀƒÊƒÖƒÞƒèƒòƒüƒ„ „„ „*„6„@„J„R„\„h„r„|„†„„š„¤„°„‚ ‚8‚F‚X‚h‚|‚Ž‚ª‚‚à‚ƒƒ$ƒ0ƒ@ƒPƒ^ƒpƒzƒ„ƒ’ƒ ƒ¬ƒ¸ƒÀƒÊƒÖƒÞƒèƒòƒüƒ„ „„ „*„6„@„J„R„\„h„r„|„†„„š„¤„°„ÏDeleteCriticalSectionìEnterCriticalSectionExitProcess„GetCommandLineAþGetLastErrorGetModuleHandleAAGetProcAddressÞInitializeCriticalSection.LeaveCriticalSectiontSetUnhandledExceptionFilter•TlsGetValue½VirtualProtect¿VirtualQuery&_getpidP_strdupR_stricoll;__getmainargsR__p__environT__p__fmodei__set_app_typeš_cexitÀ_errno×_findcloseØ_findfirstÞ_findnextþ_fullpath(_iob¡_onexitÒ_setmodeabort†atexit‹callocšfflush›fgetc©free±fwriteÄisspaceÜmallocÞmbstowcsâmemcpyéprintfìputsòreallocøsetlocaleúsignalstrcmpstrcoll strlen strncpytolower$vfprintf<wcstombs€€€€€€€€€€€€€kernel32.dll€€€msvcrt.dll(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€msvcrt.dll`@@ @ @,p@@@W@ãÂ;¶¥ @Ü!à@ "ð@GL,@@œN.Ã.à@8æ8"@*ƒ9‰D@"@… ÀYÐ.@äõ^À2@ýGNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/crt1.c/usr/src/debug/mingw-runtime-4.0-1@W@size_tÕunsigned intshort unsigned intintlong int_onexit_tÚàµlong long intchar_iobuf ‡–_ptr‰–#_cntе#_base‹–#_flagŒµ# _fileµ#_charbuf޵#_bufsizµ#_tmpfname–#÷FILE‘ÿshort intlong unsigned intsizetypesigned charunsigned charlong long unsigned intDWORDÙµµBYTEáåfloatUINTíCHAR]÷LONG_¼PVOIDfi DLPSTR|k _FLOATING_SAVE_AREApQi ControlWordR# StatusWordS# TagWordT# ErrorOffsetU# ErrorSelectorV# DataOffsetW# DataSelectorX# RegisterAreaYi# Cr0NpxStateZ#l #y ÊOFLOATING_SAVE_AREA[~_CONTEXTÌ\\ ContextFlags]# Dr0^# Dr1_# Dr2`# Dr3a# Dr6b# Dr7c# FloatSavedy# SegGse#Œ SegFsf# SegEsg#” SegDsh#˜ Edii#œ Esij#  Ebxk#¤ Edxl#¨ Ecxm#¬ Eaxn#° Ebpo#´ Eipp#¸ SegCsq#¼ EFlagsr#À Esps#Ä SegSst#È ExtendedRegistersu\#Ì #mÊÿCONTEXTv”PCONTEXTa Žm _EXCEPTION_RECORDPb J ExceptionCodec # ExceptionFlagsd #e J# ExceptionAddressf \# NumberParametersg # ExceptionInformationh P#” ` ÊPEXCEPTION_RECORDi J _EXCEPTION_POINTERSj Àk `# ContextRecordl }#EXCEPTION_POINTERSm zzLPEXCEPTION_POINTERSm ÛPIMAGE_TLS_CALLBACK—  6\\PTOP_LEVEL_EXCEPTION_FILTER Z`PpáLPTOP_LEVEL_EXCEPTION_FILTER6__p_sig_fn_t H©¯»µglob_t /gl_magic 3i#gl_pathc 4#gl_pathv 5#gl_offs 6# –glob_t 7» =» __GLOB_APPEND_OFFSET__GLOB_DOOFFS_OFFSET__GLOB_ERR_OFFSET__GLOB_MARK_OFFSET__GLOB_NOCHECK_OFFSET__GLOB_NOESCAPE_OFFSET__GLOB_NOSORT_OFFSET__GLOB_TILDE_OFFSET__GLOB_TILDE_CHECK_OFFSET__GLOB_PERIOD_OFFSET __GLOB_BRACE_OFFSET __GLOB_ONLYDIR_OFFSET __GLOB_ALTDIRFUNC_OFFSET __GLOB_NOMAGIC_OFFSET __GLOB_CASEMATCH_OFFSET__GLOB_FLAG_OFFSET_HIGH_WATER_MARKAÖ newmodeAµ#_startupinfoA» backslashI– countIµbufI–unquoteU–s quoteUµaltquoteUµescapeUµstateUbufU–__mingw_setargvk; cmdlinek; cmdbufoF cpµgotargpµquotedpµbracketpµbslashpµargptrq–cmdptrq; gl_argvrgl_optswµisspace µA ÷ ÷U Ê _mingw32_init_mainargsý !dummy_envp!start_infoÖ "_mingw32_init_fmodeQ#__mingw_CRTStartupÆ@‹@I$nRetȵ,%Ùµ &U G@ߌ's Y@8(Œ J)8*› Ih+© ˜+² Ì+À +Î A+Ý m+ë Î+ù J, ‘P+ ˜-Xä &ê ï@ˆÈ ( Ñ( ä& ñ@ ¿% (Z ù(g !(L ?(< ](/ .ê @/@[( ( ¶/ê ’@¢@¦K ( ù( & È@ȱ® (g !(Z ?(L g(< …(/ §.ê È@Ú@[( Å( ¶0@¿1S@Û2t‘°2t‘¸2t‘¼2t ‘P/ê Ò@â@ë ( Þ( ñ1@Û2t‘°2t‘¸2t‘¼2t ‘P3V@‹@‚,u ‘H,ˆ ‘L1†@,2tp@2tp@2t‘H2t‘L0Y@j/ $@|@çÄ0G@—0[@—0o@—0t@º4+@à2t02t22t05:@Ïø2t@0B@0G@10@@0‰@`0Ž@r0ª@‰0±@¬1¹@¹2ts ÷XÊ6_gnu_exception_handlert¼@ó@µ7exception_datatµ‘$old_handlerv©V$actionw¼«$reset_fpuxµS5Ã@äù2t82t05@ä2t42t04+@#2t45T@ä=2t;2t04j@M2t;4}@]2t85›@äw2t42t15·@ä‘2t;2t15Ô@ä«2t82t10ê@1À8mainCRTStartup @@ û4@ñ2t10@¶ 8WinMainCRTStartup @5@À>40@42t205@¶ 9atexitóµ@@G@t}:pfn$‘;G@2‘‘<}=_onexitÈP@W@tÆ:pfn,È‘;W@2‘‘>_argcTµp@>_argvUp@ œù?@_iob˜î@_CRT_glob<µ@__dyn_tls_init_callback8;þ@_fmodeGµ@_CRT_fmodeNµµtA_imp__atexit#‹dÈ¡ÈA_imp___onexit*¹‘Bisspace µÛµB__mingw_glob ˆµ ; µ &µ&; µC__getmainargsB^^^µdÖ DGetCommandLineAìGetCommandLineA@0qE_setmode zµºµµF__p__fmodeHGSetUnhandledExceptionFilterÍSetUnhandledExceptionFilter@4pp%Ùµ1H_fpreset œH_pei386_runtime_relocator3I__main2rF__p__environx^Bmain5µ¬µH_cexitIJExitProcess·ExitProcess@4ä8Ksignal `•µ•½ ,GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/tlssup.c@ó@ÕcharDWORDÙulong unsigned intWINBOOLÚ™intBOOLÝŠunsigned charshort unsigned intfloatlong intunsigned intshort int`ULONGcuPVOIDf%LPVOIDf%HANDLE¨%long long intlong long unsigned intsigned charULONG_PTR{usizetypePIMAGE_TLS_CALLBACK— ¶¼Òh _IMAGE_TLS_DIRECTORY32˜   StartAddressOfRawData™ h# EndAddressOfRawDataš h# AddressOfIndex› h# AddressOfCallBacksœ h# SizeOfZeroFill h# Characteristicsž h#IMAGE_TLS_DIRECTORY32Ÿ ÒIMAGE_TLS_DIRECTORY­  double VARENUMŒ` VT_EMPTY VT_NULL VT_I2 VT_I4 VT_R4 VT_R8 VT_CY VT_DATE VT_BSTR VT_DISPATCH VT_ERROR VT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMAL VT_I1 VT_UI1 VT_UI2 VT_UI4 VT_I8 VT_UI8 VT_INT VT_UINT VT_VOID VT_HRESULT VT_PTR VT_SAFEARRAY VT_CARRAY VT_USERDEFINED VT_LPSTR VT_LPWSTR VT_RECORD$ VT_INT_PTR% VT_UINT_PTR& VT_FILETIMEÀ VT_BLOBÁ VT_STREAM VT_STORAGEà VT_STREAMED_OBJECTÄ VT_STORED_OBJECTÅ VT_BLOB_OBJECTÆ VT_CFÇ VT_CLSIDÈ VT_BSTR_BLOBÿ VT_VECTOR€ VT_ARRAY€À VT_BYREF€€ VT_RESERVED€€ VT_ILLEGALÿÿ VT_ILLEGALMASKEDÿ VT_TYPEMASKÿ _iobuf ‡÷_ptr‰#_cntŠ™#_base‹#_flagŒ™# _file™#_charbufŽ™#_bufsiz™#_tmpfname#FILE‘`_PVFV&__dyn_tls_initb $b5:bh/b'pfuncdnfuncse™ifunce™__dyn_tls_dtorŸ @S@àú$Ÿ5‘:Ÿh‘/Ÿ'‘H@’ t‘t‘t‘__dyn_tls_init@12`@æ@$¶5‘@‘K‘Vcq“@»@b•K@¼5“@»@VÐcq-ä@’ t‘t1t‘__tlregdtor„™ð@ó@të func„‘!__xd_aU@!__xd_zV@"÷#$_iob˜%_tls_index5 ,p@%_tls_start8` @%_tls_end9` @%__xl_a;š@%__xl_z<š @%_tls_usedD· @&¾$_CRT_MT]™%__dyn_tls_init_callback~óìP@&š%__xl_cš@%__xl_dÁš@%mingw_initltsdrot_forceÄ™(p@%mingw_initltsdyn_forceÅ™$p@%mingw_initltssuo_forceÆ™ p@'__mingw_TLScallback+Š5h'u)GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/CRTglob.cÏ_CRT_glob+q@@intwSGNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/CRTfmode.c+_CRT_fmode&s0p@intë}GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/txtmode.cˆintunsigned intshort unsigned intlong intlong long intshort intlong unsigned intsizetypechar_fmodeY@@ç§GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/cpu_features.c@Ü@ä__cpu_features_init5@Ü@L½eax7½ebx7½ecx7½edx7½unsigned int__cpu_features3½4p@yüGNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/CRT_fp10.cà@ã@x_fpreset#à@ã@t; &GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/pseudo-reloc.cð@7@å__gnuc_va_list(|__builtin_va_list”charva_listffDWORDÙ¸long unsigned intWINBOOLÚÜintBOOLÝÍunsigned charshort unsigned intfloatlong intPDWORDê9«ELPCVOIDë?unsigned intsize_tÕUshort int”PVOIDf“long long intlong long unsigned intsigned charsizetype_MEMORY_BASIC_INFORMATIONƒ — BaseAddress„ †# AllocationBase… †# AllocationProtect† «# RegionSize‡ «# Stateˆ «# Protect‰ «# TypeŠ «# MEMORY_BASIC_INFORMATION‹ Û PMEMORY_BASIC_INFORMATION‹ ÚÛdouble _iobuf ‡ _ptr‰€# _cntŠÜ# _base‹€# _flagŒÜ# _fileÜ# _charbufŽÜ# _bufsizÜ# _tmpfname€#FILE‘êptrdiff_t–Ü AÉ addendB«# targetC«#runtime_pseudo_reloc_item_v1Dž L% symM«# targetN«# flagsO«#runtime_pseudo_reloc_item_v2Pí R† magic1S«# magic2T«# versionU«#runtime_pseudo_reloc_v2VI__write_memory³øaddr³“src³?len³ebµ—oldprot¶«do_pseudo_relocÐstartГendГbaseГaddr_impÒreldataÒreloc_targetÓv2_hdrÔrÕ£o©newval «†%É__report_errorYð@;@„ImsgYI‘argp˜œV"@( tðP@t1tGt s6@c ?tst‘tv;@‘ O”¥@@N@¼Q½D É{ Ô² ß‘Dèé q@ ¸tst‘DtL•@Ù ÛtstvtwÙ@ý ÷t@t u@Ù tstvtw.@ý /t uN@¯tQ@tLts _pei386_runtime_relocatormP@7@ ¦!was_initoÜ8p@"ø`@àsB#5C Ea T hâ võ $)$$%-@c@€ #@‹> (@¯,tpQ@7@¯tX86_TUNE_OPT_AGU?X86_TUNE_VECTORIZE_DOUBLEÀX86_TUNE_SOFTWARE_PREFETCHING_BENEFICIALÁX86_TUNE_AVX128_OPTIMALÂX86_TUNE_REASSOC_INT_TO_PARALLELÃX86_TUNE_REASSOC_FP_TO_PARALLELÄX86_TUNE_LASTÅ ix86_arch_indices« X86_ARCH_CMOVX86_ARCH_CMPXCHGX86_ARCH_CMPXCHG8BX86_ARCH_XADDX86_ARCH_BSWAPX86_ARCH_LASTfloatcomplex floatdoublecomplex double long doublecomplex long double__float128 __unknown__func_ptr+š    Y­ _iob˜¢  Š Ë ¤__CTOR_LIST__È» €;@__DTOR_LIST__É» Œ;@3Á GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/misc/glob.c@"@Å.@ size_tÕmunsigned intglob_t/Øgl_magic3Ø#gl_pathc4_#gl_pathv5Ú#gl_offs6_# àæcharglob_t7}= __GLOB_APPEND_OFFSET __GLOB_DOOFFS_OFFSET __GLOB_ERR_OFFSET __GLOB_MARK_OFFSET __GLOB_NOCHECK_OFFSET __GLOB_NOESCAPE_OFFSET __GLOB_NOSORT_OFFSET __GLOB_TILDE_OFFSET __GLOB_TILDE_CHECK_OFFSET __GLOB_PERIOD_OFFSET __GLOB_BRACE_OFFSET __GLOB_ONLYDIR_OFFSET __GLOB_ALTDIRFUNC_OFFSET __GLOB_NOMAGIC_OFFSET __GLOB_CASEMATCH_OFFSET __GLOB_FLAG_OFFSET_HIGH_WATER_MARKshort unsigned intintlong intlong long int__time64_t1¶time_t<Çshort int_fsize_t;long unsigned int æ* *sizetype dirent0%÷d_ino'ª#d_reclen(#d_namlen)#d_type-m#d_time_create.Ù#d_time_access/Ù#d_time_write0Ù# d_size1ô#(d_name8#,DIR? __dirstream_t*y __GLOB_DIRONLY_OFFSET __GLOB_PERIOD_PRIVATE_OFFSET __GLOB_PRIVATE_FLAGS_HIGH_WATER_MARKglob_collator iÂprevoÂ#nextpÂ#entryqà#yglob_set_adjustedºSº[º£pà æglob_case_matchT£Y[T£checkT£matchT£glob_expandB£€CB€îglob_signed¦£½check¦magic¦glob_registry¼€%request¼£a¼€glob_magicÂbaseã£argcä£glob_store_entryJ£lpathJàCJ€pathvPÚglob_strdupOà¶SObufU¶copyVàoriginV æÅ*glob_collate_entryuÂ5JuÂentryuà[u£seqz£ref{Âlastref|Âglob_in_setà@"@C$@Ffsetà&testà£ì[à£ccõ£àlastcõ£aÈ "@XEÔòç €!ýÈç"@¨òç È!ý^"Èx#@èÿ7#òŸ#çÊ !ýý$ÈÝ#@C$@(òç%Ý#@C$@!ý3&glob_initialise"£P$@Ê$@Ò'a"€­%i$@¶$@(entries-£Ù)~$@¡*tw2$&glob_strcmp]£Ð$@ð&@ 'S]ò+text]7'[]£q(pi(tiÁ(cj£rÈé$@(À òç X!ýî÷$@ˆéË #J<#<Z#0ƒ,^%@¼)h%@¼*ts-»%@Òë *Ps*Rv*Qw-ì%@5 *Q‘T)p&@5*Ps*Q‘T.½ð&@5'@£p #éÙ/õ%ø&@,'@! C!c,'@Ø,,'@Ø.%@'@É'@™ #DÝ#Q]/]0%v'@¨J#Q­#DÙ Ð!]@1Yv'@ƒ'@Rö %v'@ƒ'@ss,’'@í2glob_store_collated_entries®Ð'@(@n¢ 'J®Âš'C®€Æ-ê'@ h *Rv-ô'@%| *Rv-(@ *Rv) (@Ø*tsis_glob_patternk£ù Sk[k£ppcq£bracket{£&glob_matchÑ£ (@î-@òà'SÑN'[Ñ£m+errfnÑëŒ3CÑ€‘4local_gl_bufØî‘P(statusÙ£¬5[(dirbufÝñ€(dirÞ(dirpßÚG(preferred_dirsepßæÛ¢ ‡(@øí2 6Ê ‘D6¿ ‘° !Õ } !Þ ³ 8!è ò 1lÜ(@/)@÷¡ #…1!%Ü(@/)@7 F!!›Z!!§x!-é(@Ž *t‘°)/)@)*tv5Ó!8p 9J+Âó!(dp/!_"8¨Ó(entry4'©"(dirlen5_ÿ"8ðl4foundFàW(prefixG_;#(matchlenH_‹#(matchpathI-Ì#lm*@(ZÁ#…X$ H7Ev$!›–$!§´$-w*@®*tw)¾*@)*tt Åä*@hs-òæ ˆ! %!E%!$´%,+@D-'+@e"*tw,F+@¡-,*@B*tv,j*@‡,=,@‡)k,@%*Pw*R‘,Ø)@-ø)@²Š*ts-*@Ò¬*P‘@*Rv*Q‘D-ƒ+@²Á*ts)˜+@Î*ts,¶)@ë-ª+@ ù*P‘¼*R‘,£,@:¶,@‘œ5@ì%5Xh&8¨O(tailˆ&)Û,@*t‘°-:(@e*t‘@-a(@‡{*t‘@,i(@-{(@f˜*P‘P-9)@%¬*R‘P,½+@Ø,á+@Ø)Œ-@ù *P‘°*Q‘œ*t‘P;£ë<à æ=*Š * æ=*¡ *÷6 æ@=* * æX=**>__mingw_globˆ£ð-@­.@Ý&Ë3Sð‘3[ð£‘?errfnðë‘'að€E'(statusô£Y'1½.@.@ù#é˜'@Ù%.@.@/õ).@f*Pv1lI.@—.@‡#…Î'%I.@—.@7Ëí'!› (!§+(-Q.@t*ts)”.@)*tt5Þ†(-*.@ù º*Ps*R‘*Q‘*tv)ž.@%*Rv æÞ=*‡*A__mingw_globfree‰°.@Å.@tV3a €‘1½´.@Å.@K6é‘@Ù%´.@Å.@/õBÅ.@ Cglob_escape_charMo£D__mb_cur_maxi£D_pctyper›EmallocìØ¼F_EtolowerV£ØF£GfreeîíFØEreallocíØFØF_Estrlen =_)FEstrdup fàDFEstrcoll 8£eFFEstricoll s£‡FFHmemcpyØ«FØF«F*±IEreaddirB'ÎF!EclosedirC£ëF!EopendirA!FJ_errno k£Kdirname &àFà1ºGNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/posix/libgen/dirname.cÐ.@´2@]size_tÕxunsigned intwchar_tE˜short unsigned intchar_iobuf ‡M_ptr‰M#_cntŠS#_base‹M#_flagŒS# _fileS#_charbufŽS#_bufsizS#_tmpfnameM#®intFILE‘¶long long intlong intshort int–ˆ dirname&MÐ.@´2@¦(& path)M) len+jZ) retfail,Mhp@ locale2M* ÀJ refcopy<&b* refpath@Jƒ* Ø refnamejJn+ basenamejJ¸+71@i‡tst‘Xt‘LP1@¢t2tvX1@¾·tvó1@iÙt0t‘Xt02@Õîtw!2@itst‘Xtw«/@ö0t0tst0Ù/@öt‘XtsE,ð.@nt2t0þ.@ƒtv/@¡t2t°Q@9/@iÅt0t²Q@t0M/@ÕÚtsf/@iùt²Q@tsv/@t2tv~/@¾tvˆ99Jsizetype9ˆZ[_iob˜PwcstombsájMjsetlocaleWM³S³¹®freeîÓÓreallocíÓöÓjmbstowcsåjJ³jstrdupfM³K GNU C 4.7.3/usr/src/debug/mingw-runtime-4.0-1/src/libcrt/tchar/dirent.cÀ2@Þ9@size_tÕpunsigned intshort unsigned intintlong intlong long int__time32_t,__time64_t1©time_t<Ìshort intintptr_t6–_fsize_t;long unsigned int_finddata32_tMŸattribNp#€Oº#tPº#iQº# sizeR #nameSŸ#¼°°sizetypechar_finddata64i32_t(h8attribip#€jÌ#tkÌ#ilÌ#sizem # namenŸ#$dirent0%ùd_ino'#d_reclen(€#d_namlen)€#d_type-p#d_time_create.Þ#d_time_access/Þ#d_time_write0Þ# d_size1 #(d_name8Ÿ#,DIR? __dirstream_t@&< dd_dir-8 dd_privateJËDWORDÙ –unsigned charfloat o CHAR]¼ ¼ _TCHAR“plong long unsigned intsigned char¼Ë°__dirstream_private_t@/pdd_ino3#dd_reclen4€#dd_namlen5€#dd_dta:Ä#dd_handle=ù#°dd_statE–#´dd_nameH»#¸_findfirst32Òù¢_v1Ò¢_v2Ò­ ¨¼ ._findnext32Ö–ä_v1Öù_v2Ö­_findfirst64i32üù7_filenameü¢_fdataü7fdý.retþù Ä_findnext64i32ùŽ_fpù_fdata7fd.ret–opendirA@À2@5@/,@path_name”F‘nd–@É,abs_path—Q‘Ä{offsetºb--än3@(ÛžB--@!‘È}+Spn3@Xþ{–¸-‹-3@ö tu t‘È}ô3@ tv, t‘Ü} t !ü2@@ à ts t‘ t !K3@i Ù tsÁ!n3@„ ü tu tw ts"¥4@¨ !´4@¹  tuÈ}"Å4@¨ "×4@¨ "å4@¨ "õ4@¨ ù L„„b°readdirB†5@«6@.†#dirp @‘pg$prev_errno&–=.%=b5@ˆ'Kg[.[š.¨v‘È}W%³b5@È(د.Íš.x5@Î t‘È}Ù5@ tv t‘Ü} t "`5@¨ "k6@ñ "w6@¨ !é5@ | tv" 6@¨ 8closedirC–°6@ò6@ù.ç#dirp]@‘"Ê6@3 !Ö6@¹ Ý ts"å6@¨ &rewinddirD7@I8@I/È #dirp~@‘%ä`7@àŽµ 'sŸƒ/!‘Ø}+Vp`7@0þ’ –²/‹ƒ/v7@ö ts¸ t‘Ø}Ó7@ ts, t‘ì} t "47@3 "=7@¨ telldirEP8@w8@î/ #dirp @‘"j8@¨ &seekdirF€8@Þ9@&0ö #dirp¾@‘#loc¾‘%=½8@PÓ× gR1[ž1€v‘È}U%³½8@°´ س1Íž1æ8@Î twC9@ ts, t‘Ü} t !¨8@çì ts"µ9@¨ (_findfirstÑù )¢)­(strncpy@|@ )|)¢)b*_fullpath *|i )|)¢)b(malloc ì‚„ )b+memcpy‚¨ )‚)i)°,_errno kI-free îÎ )‚(_findnextÕ–ñ )ù)­.GetLastError +GetLastError@0<(strlen=b3 )¢/_findcloseΖ)ù% : ; I$ > : ;I I' I : ;  : ; I8   : ; : ;I8 I !I/  : ;!I/ : ;I8 ' I' I : ; (  : ; .: ; ' I : ; I.: ; ' 4: ; I .? : ; I< &I!I .: ; !4: ;I".: ; ' #.: ; ' @—B $4: ; I%.? : ; I< &1RUX Y '1RUX Y(1) U*41I+41,41 - U.1X Y /1X Y 0‰‚11‰‚12Š‚ ‘B 3 4‰‚5‰‚16.: ; ' I@—B 7: ; I 8.? : ;' @—B 9.? : ; ' I@ —B :: ;I ;‰‚•B <' =.? : ;' I@ —B >4: ; I?  ?!@4: ; I? < A4: ;I? < B.? : ; ' I< C.? : ; ' < D.? : ;‡@' I< E.? : ;' I< F.? : ; ' I< G.? : ;‡@' I< H.? : ; ' < I.? : ; < J.? : ;‡@' < K.? : ; ' I< % $ > : ; I I : ;I' I  : ; : ;I8  : ;  (  : ;  : ; I8 ' .? : ; ' I : ; I4: ; I.: ; ' I@—B : ; I ‰‚1Š‚ ‘B .1‡@@–B 1 411X Y 11 41.? : ; ' I@ —B  : ; I !4: ; I "I#!$4: ; I? < %4: ; I?  &&I'.? : ; ' I< % 4: ; I?  $ > % 4: ; I?  $ > % $ > 4: ; I?  % .? : ; ' @—B 4: ; I$ > 4: ; I?  % .? : ; ' @ —B % : ; I I$ >  I&  : ; : ;I8 : ;I  : ;  : ; I8  : ; .: ; ' : ; I4: ; I 4: ;I.: ; ' @—B : ; I 4: ; I ‰‚1Š‚ ‘B ‰‚1&I.1@—B 141 41‰‚1 .? : ;' @—B !4: ;I "1RUX Y# U$1% &Š‚ 'I(!)4: ; I? < *.? : ; ‡@' I< +I,.? : ;' I< -.? : ; ' < ..? : ;‡@' I< /.? ' I4 < 0.? : ;‡@' I< % $ > : ; I I' .? : ; ' @–B 4: ; I 4: ; I ‰‚1 Š‚ ‘B .? : ; ' @ —B  ‰‚•B 1 I!4: ; I? < .? : ; ' I< I% 4: ; I?  $ > % $ > : ; I  : ; : ;I8  I: ;I I !I/  : ;  : ; I8 ' I5I.: ; ' 4: ; I .1@—B 41 ‰‚1‰‚Š‚ ‘B ‰‚1‰‚1.? : ; ' I@—B : ; I 4: ; I1X Y   41!4: ; I ".? : ;‡@' I< #.? : ;‡@' I< $.? : ;‡@' < %.? : ; ' I< &.? : ; ' < '.? : ;‡@' < % 4: ; I?  $ > %% $ >  : ;  : ; I8  I: ; I : ; (  : ; ' I ! 4: ; I? < !I/ 4: ;I?  % : ; I$ >  : ;  : ; I8   I : ;  ( I !I/  : ;  <  : ; : ;I8 .: ; ' I : ; I4: ; I&I.: ;' I : ;I: ;I4: ;I !I.: ; ' I@—B : ; I: ; I4: ; I1RUX Y1 U!41"1RUX Y #1$1X Y% &.: ;' I@—B ': ;I(4: ;I)‰‚1*Š‚ ‘B +: ;I,‰‚1-‰‚1..1@—B /4101RUX Y11X Y2.: ;' @—B 3: ;I 44: ;I 544 I61 741I8 U94: ;I:‰‚“B ;I<=!I/>.? : ; ' I@—B ?: ;I @1A.? : ; ' @ —B B‰‚•B 1C4: ; I D4: ; I? < E.? : ; ' I< FIG.? : ; ' < H.? ' I4 < I&J.? : ; ' I< K.? : ; ' I< % : ; I$ > : ;I : ;  : ; I8  I&I .? : ; ' I@—B  : ; I 4: ; I 4: ; I U‰‚1Š‚ ‘B ‰‚144 II!I/!4: ; I? < .? : ; ' I< I.? : ; ' <  .? : ; ' I< % : ; I$ >  : ;  : ; I8  : ; I8 I!I/  : ;  : ; I  I &  !I/ .? : ; ' I : ; I&I4: ; I.? : ;' I : ;I4: ;I.? : ; ' I@—B : ; I 4: ; I4: ; I  U1RUX Y 1 U41 ‰‚1 Š‚ ‘B !‰‚1"‰‚1#: ;I $4: ;I%1RUX Y&.? : ; ' @—B '1 (.? : ; ' I< )I*.? : ;' I< +.? ' I4 < ,.? : ; ' I< -.? : ; ' < ..? : ;‡@' I< /.? : ; ' I< Ñ:û /usr/src/debug/mingw-runtime-4.0-1/src/libcrt/crt/usr/lib/gcc/i686-pc-mingw32/4.7.3/include/usr/src/debug/mingw-runtime-4.0-1/includecrt1.cinit.cstddef.hstdlib.hstdio.hwindef.hwinnt.hwinbase.hsignal.hglob.hio.hfloat.hprocess.h@Æ”‘´éY*XÈÕ~X«fÕ~. ºwX<qt|;y H,÷.‰winbase.hstdlib.hð@ÙÃXÒN >ž˜x.úù”öxžY+æ×t(±–Ý~t¦—<é~ž“.ƒ<ý<ƒògu fvX"È º>ºrJA .rhå’K„x< Jå´f?UN*MJrÖ=-/1Mq/vZYe:A¼,>tº¬NTNJit½cAL fs<Jæuth‰u*º""ÙÓû /usr/i686-pc-mingw32/sys-root/mingw/include/usr/src/debug/mingw-gcc-4.7.3-1/libgcc/../gcc/config/i386/usr/src/debug/mingw-gcc-4.7.3-1/libgccstdio.hi386.hgbl-ctors.hlibgcc2.cCDû /usr/src/debug/mingw-runtime-4.0-1/src/libcrt/misc/usr/src/debug/mingw-runtime-4.0-1/include/usr/lib/gcc/i686-pc-mingw32/4.7.3/include/usr/src/debug/mingw-runtime-4.0-1/include/sysglob.cglob.hstddef.htypes.hio.hdirent.hctype.hstdlib.hstring.hlibgen.herrno.h@"@àtk<<¬£&X%P.0.6HÈQ¬ú.ºÖ5y.Cko‡H<8<´JŒ°Q( ‚G‚~¾_yä‡}‡„9XG¬y‚3<M<8†_y ‡‚‹<õ<žÀX .P¼J>~f È[tt f;/s1Ytfž X)=Ì2†o<©äÌJ‚|Ьý)ÿyºE<;.T Ë Ÿ/)eäqò6‚¬#ƒó$u;®X/;u‚ý{tÒì×<ñ}º¤qžž¸áXZJˆu+fó;/ .uä×xƒL/;=HØ;YKª¬y$OJ øû /usr/src/debug/mingw-runtime-4.0-1/src/libcrt/posix/libgen/usr/lib/gcc/i686-pc-mingw32/4.7.3/include/usr/src/debug/mingw-runtime-4.0-1/includedirname.cstddef.hstdio.hstdlib.hlocale.hstring.hlibgen.hÐ.@)D=-/.Ÿ>J´X5@óƒgÊ~ä6ó <u<= fftž<r<<ä <ø­;kst"ºÂ=ÖªtÖòg ytà>AtÐA^tàP]P]©S©¹óPŸ¹^SP€R€­V­¹óRŸ¹^VP€Q€±W±¹óQŸ¹^W¥¹‘@F‘@`ŒtŒ†tÀ†‡t‡GtÀ8WŸWá8‘Xs‡‘XŸ7‘X‡ÕP7P8=P‡•PŸÓPÙP1PŒŸSä8SŸ7S=^S^ksxŸksSE‡‘\t*t*,t01t14t4at abtbctcyt gyS?JSJMsŸMbSttt t t*t *-t-Wt WZtZ]t ]^t ^_t_`t^S/3P3KV`ctcƒt ƒ„t„·t ·ÈtÈÔt ÔÙtÙät äåtåìt œ¢P¢ÝSåìPðñtñôtôt ttt tKt KNtNQt QTtTUtUot ortr€t )0Ÿ)?RU[Rt€0Ÿ)R)8P8;R;?PUbPt€R€ƒtƒ›t › t Ét ÉÌtÌët ëðtð t tt ttt tteteftfgtght hitiptpstswtwxtxyt yztz€t€t)P)BWU]P]_WjWˆpŸˆ­WÈÌPÌÓpŸÓØP%,W8APAmóP#Ÿ{…óP#Ÿ…£WÝW_R_jóRŸjÞRÞ óRŸ R%óRŸ%ARA…óRŸ…R+Q+etej‘hjÈtÈØQØ8t8;Q;sts{‘h{t&BSB]V]_SjtStVÈSØ V S,V,8S…S!S!BUU]V]_Uj“U“­PÈÐSÐØU%,U8mS{…S…‡U‡‹P‹’pŸðüPÞP pŸ  P%PmvpŸv{P­ÈW WwŸW,8W>AQAmt{…t>APAmóP#Ÿ{…óP#Ÿ>dPdkpŸkmP{…P£ÄWÄËwŸËÍWÍÓwŸÓØPØÝWt‰t0‰Št6P6~V~ŠóPŸ/bWbeRerrŸrtR‘t‘’t’“t “”t”—t—CtÀCDtDEtEFt FGtGHtHŒtÀŒtŽtŽt t‘t‘°tÀ­P­ÄUÄùóPŸùP°óPŸÄRÄùóRŸù"R"°óRŸ¡Q¡°‘T­P­ÏUÏúPú:UHMPMS‘«P«°uŸ°¶P¶ÂUÂêPêùUùP"óPŸ")P);S;>P>EuŸEOS‚‡P‡ŒuŸŒ‘P‘–uŸ–U¦S©°SÄRÌ#V#:wŸHŽV‘•V•¶WÂÐWÐòVòùwŸù"R";W;EVE–W–V°WÌR,:RHKRKmqH$H&Ÿ{‘P‘«RÂùR"/R;ER‚RO^SjqsŸqsS}‚S¦©sŸ©°S6SêùSR,6RêùR6‘Têù‘T°±t±´t´µt µ¸t¸ït ïòtòót óôtôõt°»P»ôWôõóPŸ°»p »Èw »ÁPÁÎVÎÜvŸÜóVt)t )0t0ˆt ˆ‰tP*óPŸ*9P9qVqxw2$s"x~ ss "2$s"~‰óR#óR# "2$óR#"RS*óRŸ*QRQ~S~‰óRŸ6QRQ~S~‰óRŸ69P9qVqxw2$s"x~ ss "2$s"~‰óR#óR# "2$óR#"RhPh~s~‰óR#“t“Õt ÕÖt›P›ÎSÎÖóPŸ©R©ÒVÒÖóRŸàátáãtãFuFGtG« u« ° t° ® uàùPù® ‘@àùRù® ‘DàùQù® ‘œà;0Ÿ;YPùP8d2Ÿ«ž‘¸žÂP“ ‘¸â ! ‘¸! & P& H ‘¸% , ‘¸L Q Pq z Pz „ 2ŸýrŸ t1Ÿ p Bt G¹t ¹ùs ùdt ¬ â t ‰ % t , Q t ] e t z ® t 36P6'‘°8‰ ‘°% ] ‘°e „ ‘°@NQNd‘Xdu ‘Lu | R| “ ‘L“   Q  ¬ ‘Lâ ‰ ‘L% , ‘LQ ] ‘Le z ‘Lz „ Q38\Ÿ8¬ ‘£¬ â \Ÿâ ‰ ‘£‰ ú \Ÿú % V% , ‘£, Q \ŸQ ] ‘£] e \Ÿe „ ‘£„ ® \ŸG\‘°\œS¬ â S, Q SY’P•œP¬ Á PË â P, D PVŠQ’œQ¬ Æ QË â Q, ; Qœù‘°½ùv½ÁVÁîQ½ÆRÆÉrŸÉÔRÔÛrŸÛÞRÞãrŸãîR©¬P¬¯ppŸn«0Ÿ«j ‘¼â H ‘¼H ‰ 0Ÿ% , ‘¼Q ] 0Ÿe q 0Ÿq z ‘¼zP«SH K PK ‰ SQ ] Pe q S¸ÖPÖvTŸ)v,ŸC W Pâ ! vTŸ< H vTŸ›j ‘´â H ‘´% , ‘´q z ‘´ ‘´Pâ å Qå  ‘´ ! P< H ‘´ñõPõW2wŸâ ! W< H W rDt D¸v ¸; t â ü rü ! t ! < v < H t % , t q s v s z t 26R6LWH}q}€t HLQL}RHUWUXwŸXcWcjwŸjmWmrwŸr„W¤Â0ŸÇÔPç÷Pq z 0Ÿ¤Â‘¼ÂÎVÎÔRÔíVí÷R 5 P% , Pq u Qu z ‘¼¤Â‘¼Â÷Vq u Qu z ‘¼ñõ ‘´p"#Ÿõ ‘´w"#Ÿ2w‘´"Ÿâ å qw"#Ÿå ! ‘´w"#Ÿ< H ‘´w"#Ÿ7:P:=ppŸ  Ä RÄ Ü PÜ ß Rß % P] e P„ š Pš ® R° ± t± ³ t³ þ uþ ÿ tÿ t k uk l tl m t° Ú ‘ ï ó Pó ü Wü  P i Wi m P¼ ù Vù ‘ f Vf m ‘  & S& m ‘" S qS W t" & Q& S R" + S+ . sŸ. 9 S9 @ sŸ@ C SC H sŸH c S  P  ppŸtt½u½ÀtÀ”u”•t•äup‘p‘S‘•P•<‘<PPPVSVä‘l´SÝáPáRcPcÆ‘LÆÙPÙg‘LgpP•‘LÂëPë&‘L&VWV^P^‘L¤P¤ä‘L$-P-0V0CPC»V¾’V•äVùqä‘XùQQ‘XQe‘Pe€Q€œPœ¥QÆÙ‘Xñ‘X?P?LWLOP•®P®·Q·¹W¹ÂPÂâ‘XâëRV^‘P^~P¤‘X%'P'fQ•®Q·ÂQ"P‹P™¥W±´W´ÆPÙèPèôpŸ¤³P³äw~ŸÝáPáRttt t t VtÐVYtYZtZ[t [\t\`t`BtЭP­PVÈïVïótóùuÈ}ŸV$P$0V­sŸ®PvŸÈïvŸïót#ŸóùuÐ}ŸvŸ®PUÈùUU®µ‘È}ŸµÀPÀP‘È}ŸÈù‘È}Ÿ‘È}ŸPVtVetÐeftfëtТ!UkÛU¢!sŸk­sŸ­»‘#Ÿ»ÛsŸ¢·s°¢¦‘È}Ÿ¦°P°·‘´}·!‘È}ŸkÛ‘È}Ÿðñtñôtôt t t 2t @FtFžtÀž t ‰tÀ ®s¸Ÿ®µPµ‰s¸Ÿ ¤‘Ø}Ÿ¤®P®µ‘Ä}µ‰‘Ø}Ÿ“t“¤t¤¥t¥·tÀÁtÁÂtÂÃt ÃÄtÄÊtÊ–tЖ—t—˜t˜™t ™štš t ÔtÐÔÕtÕÖtÖ×t רtØàtàtÐttt tttЋsŸ›ÕsŸÕÙ‘#ŸÙïsŸsŸ%s°‹W›£W£ï‘È}Ÿ‘È}ŸG$À‹Y_a$ÀVY_a$ÀVïhƒ¼¿ÄÀGNVïñôñôäõGNVÈäõp}‡‰ŒŸs‡Gp}‡‰ŒŸs‡GE[^k`bØ %sv`bØ %sv§È 08§È 088;>p€…8;>p€…©­°·Ps}‚¦©©­°·Ps}‚¦©·Ä.ð6mqtxz~…6mqtxz~…Gœ° â , 5 Gœ° â , 5 LRV’œ° ¼ ¾ â , 5 HNUdnj â % , Q z KNX^ad€X â H % , Q e q z ›ž¥°ä; â H % , q z -02€‚„-02€‚„¤; % , q z ¤; % , q z % „ ® Ë•äeÉÙ‹•Âë¤ä.0]w`È®4ÈÖ®4ÈÖ®ÁÄÆ›!pÛ¢p¦ÀÛ¢p¦ÀÛ¢¸»½ ¨±(Sb‰ ¨±(Sb‰ ¨±¶¹»ýƒ Îàðýƒ Îàðý&)+.fileþÿgcrt1.ct ˆ ¢ ²  _atexit@ __onexitP .textW0.data.bssÅ zÑ ,ßàê  ùà Õ$¬.file2þÿgcygming-crtbegin.c(¬_obj< J` `ð .text`Ò.data.bss¬X.rdatac.jcr .fileGþÿgpinentry-auto.c_getline@ xw _chompÙ _reply_d* …a š _errorÅ _mainé .text@Ã+.data.bss .rdatadˆ.filewþÿgtlssup.cš  ­`  ___xd_z___xd_aÀð  .text ã.data.bss .CRT$XLD.CRT$XLC.rdataì.tls.CRT$XLZ .CRT$XLA.tls$ZZZ.tls$AAA.CRT$XDZ.CRT$XDAÅ Á *Ñ, ýßàlê  Õ ú$ ˆ.file‡þÿgCRTglob.c.text .data.bss0Å yÑ) *ê@ Ï \.file—þÿgCRTfmode.c.text .data.bss0Å; {ÑS *êX + ].file§þÿgtxtmode.c.text .data.bss4Ŷ ïÑ} *êp ˆ \.file½þÿgcpu_features.cÍ  .text Ü .data.bss4Å¥ ëѧ UßL8êˆ  ä ”¨8.fileÒþÿgCRT_fp10.câà  _fpresetà  .textà .data.bss8Å! }Ñü *ê¨  x mà,.fileïþÿgpseudo-reloc.cìð  ü@  P  .8.textð G#.data.bss8.rdataðªÅ " ? 2Ñ& |ß„ÎêÈ  ùàxå Ï  .file þÿggccmain.c>@ _p.1819Qp ___mainÀ d<.text@œ .data.bss<ÅL, Ñ¢ êßR ºêè  ´ ׬h.fileþÿgcrtst.c.textà.data .bss@ÅN. uÑŒ *ê ‹ Z.file5þÿgtlsthrd.cqà ’H¡`°@ ÎDâÐ ` .textà#.data .bssD ÅÃ. [ ;Ѷ ß :ê   å sø.fileEþÿg.text.data .bssdÅ8 ÈÑÍ *ê@ X f.fileWþÿgfakeÅæ8 Ñ÷ ¾ {.text*.data .bsshêX  , 8.filenþÿglibgcc2.c.text,.data .bsshŃ9  Ñ ¶êx 9 Ý.text,.data .bssh.idata$7.idata$5d.idata$4ˆ.idata$6.file|þÿgfakehnameˆfthunkd.text4.data .bssh.idata$2.idata$4ˆ.idata$5d.fileŠþÿgfake.text4.data .bssh.idata$4”.idata$5p.idata$7  .file®þÿgglob.c9@ FP WÐ dð z@ ŒÐ ©  µð ð .text@… (.data .bssh.rdataœʼnD 7íÑÁ ùßF`ê  ùXh GC&  .fileÉþÿgdirname.c_dirnameÐ Õh.textÐä.data .bssh.rdata°ÅÀY 5%Ѻ Wߦ(‰ê°  ùÀH] $ X.fileÝþÿgdirent.c_opendirÀ" _readdir% ã°& í' _telldirP( _seekdir€( .textÀ".data .bsslÅõ^ O bÑ ˜ß/,¾êÐ  ùÈ Li#d\.textà).data .bssl.idata$7@.idata$5œ.idata$4À.idata$6¸.textà).data .bssl.idata$7P.idata$5¬.idata$4Ð.idata$6Þ.textà).data .bssl.idata$7D.idata$5 .idata$4Ä.idata$6À.textà).data .bssl.idata$7h.idata$5Ä.idata$4è.idata$6.textè).data .bssl.idata$7H.idata$5¤.idata$4È.idata$6Ê.textð).data .bssl.idata$7 .idata$5|.idata$4 .idata$6P.textø).data .bssl.idata$7.idata$5x.idata$4œ.idata$6@.text*.data .bssl.idata$7(.idata$5„.idata$4¨.idata$6p.text*.data .bssl.idata$7.idata$5t.idata$4˜.idata$60.text*.data .bssl.idata$7ˆ.idata$5ä.idata$4.idata$6h.text*.data .bssl.idata$7\.idata$5¸.idata$4Ü.idata$6ü.text *.data .bssl.idata$7l.idata$5È.idata$4ì.idata$6 .text(*.data .bssl.idata$7€.idata$5Ü.idata$4.idata$6R.text0*.data .bssl.idata$7”.idata$5ð.idata$4.idata$6†.text8*.data .bssl.idata$7|.idata$5Ø.idata$4ü.idata$6J.text@*.data .bssl.idata$7x.idata$5Ô.idata$4ø.idata$6@.textH*.data .bssl.idata$7X.idata$5´.idata$4Ø.idata$6ò.textP*.data .bssl.idata$7Œ.idata$5è.idata$4 .idata$6r.textX*.data .bssl.idata$7d.idata$5À.idata$4ä.idata$6 .text`*.data .bssl.idata$7 .idata$5ü.idata$4 .idata$6¤.texth*.data .bssl.idata$7L.idata$5¨.idata$4Ì.idata$6Ö.textp*.data .bssl.idata$7t.idata$5Ð.idata$4ô.idata$66.textx*.data .bssl.idata$7T.idata$5°.idata$4Ô.idata$6è.text€*.data .bssl.idata$7`.idata$5¼.idata$4à.idata$6.textˆ*.data .bssl.idata$7œ.idata$5ø.idata$4.idata$6š.text*.data .bssl.idata$7.idata$5ì.idata$4.idata$6|.text˜*.data .bssl.idata$7,.idata$5ˆ.idata$4¬.idata$6z.text *.data .bssl.idata$7„.idata$5à.idata$4.idata$6\.text¨*.data .bssl.idata$7¤.idata$5.idata$4$.idata$6°.text°*.data .bssl.idata$7p.idata$5Ì.idata$4ð.idata$6*.text¸*.data .bssl.idata$7<.idata$5˜.idata$4¼.idata$6¬.textÀ*.data .bssl.idata$74.idata$5.idata$4´.idata$6’.textÈ*.data .bssl.idata$7˜.idata$5ô.idata$4.idata$6.textÐ*.data .bssl.idata$78.idata$5”.idata$4¸.idata$6 .textØ*.data .bssl.idata$70.idata$5Œ.idata$4°.idata$6„.fileëþÿgfakehname˜fthunkt.textà*.data .bssl.idata$2(.idata$4˜.idata$5t.fileTþÿgfake.textà*.data .bssl.idata$4(.idata$5.idata$7¨ .textà*.data .bssl.idata$7à.idata$5P.idata$4t.idata$6Â.textè*.data .bssl.idata$7È.idata$58.idata$4\.idata$6F.textð*.data .bssl.idata$7Ä.idata$54.idata$4X.idata$68.textø*.data .bssl.idata$7Ð.idata$5@.idata$4d.idata$6h.text+.data .bssl.idata$7Ô.idata$5D.idata$4h.idata$6|.text+.data .bssl.idata$7ì.idata$5\.idata$4€.idata$6.text+.data .bssl.idata$7è.idata$5X.idata$4|.idata$6î.text+.data .bssl.idata$7À.idata$50.idata$4T.idata$6 .text +.data .bssl.idata$7ä.idata$5T.idata$4x.idata$6à.text(+.data .bssl.idata$7Ì.idata$5<.idata$4`.idata$6X.text0+.data .bssl.idata$7Ü.idata$5L.idata$4p.idata$6ª.text8+.data .bssl.idata$7¼.idata$5,.idata$4P.idata$6.text@+.data .bssl.idata$7Ø.idata$5H.idata$4l.idata$6Ž.filebþÿgfakehnamePfthunk,.textH+.data .bssl.idata$2.idata$4P.idata$5,.file~þÿgfake.textH+.data .bssl.idata$4„.idata$5`.idata$7ð .textH+.data .bssl.idata$7.idata$5h.idata$4Œ.idata$6.textP+.data .bssl.idata$7.idata$5l.idata$4.idata$6$.file™þÿgcygming-crtend.cøÀ `+ .textX+.data .bsslÀ<.jcr )`+7„+.text.data .bssl.idata$7$.idata$5€.idata$4¤.idata$6^__cexit* D+ _getpid, W¸Q@ÿÿv˜_isspaceà) ‡¤—¦Œ+_free€* µX_strcmpP* Îÿÿÿ ð) <0à* O\fdtƒT˜¨¬H__errno˜* Ï8+ è¸üÿÿ/¨<”___xl_cMÿÿeÿÿ~ ÿÿ˜ÿÿ´ÆØèl___xl_z ø(+ _puts8* x+ -(FœRø* f } “h¡¯¸ÒÿÿêÄùˆø) D-+ ?Q_strcoll* aè* t„ä__dll__ÿÿ’Øžÿÿ_fwriteX* ³¬_strncpyÈ* ÁÌÑ(ä@ÿÿóÿÿ ¨* _memcpyp*   4 ¸Q@ÿÿR  * ] |__argco { ð* Š œ ì« ¸ * _tolowerˆ* ___xl_a___xl_dÇ €+Õ °* ß ÿÿ__CRT_MT@_fflushH* ï |û 0  ,# _strdupH+ __argv5 €+_callocx* __fmodeD ÿÿW Ðe ¸r è€ ÿÿ“ L_realloc(* ± È¿ ôÎ ÿÿã À* ï Üþ , Œ P+ ( __end__2 @_fgetc* _signal* _malloc * L Œ+Z + r ÿÿ§ ¸* ² Ø* ¾ ÿÿ× é @ÿÿö ÿÿ ð ´ °_aborth* . C tX e 4z ’ @+ ¯ 4¿ ¼Ë Pð  ÿÿ! ÿÿ2 øA L è) V Ôd q † ¸˜ „¦ ÿÿ ÿÿÚ ü_strlen0* ê €$ + ',F0+ ^8_printf@* wàˆÐ* “¸µðËìäïÿ`*  0'À5.eh_frame.debug_aranges.debug_info.debug_abbrev.debug_line.debug_frame.debug_str.debug_loc.debug_ranges___mingw_CRTStartup__gnu_exception_handler@4_mainCRTStartup_WinMainCRTStartup.debug_info.debug_abbrev.debug_loc.debug_aranges.debug_ranges.debug_line.debug_str.eh_frame___EH_FRAME_BEGIN_____JCR_LIST_____gcc_register_frame___gcc_deregister_frame_toLowerCase_reply_pid_reply_ok___dyn_tls_dtor@12___dyn_tls_init@12___tlregdtor___cpu_features_init__fpreset___report_error___write_memory.part.0__pei386_runtime_relocator_was_init.30653___do_global_dtors___do_global_ctors_initialized___mingwthr_run_key_dtors.part.0___mingwthr_cs_key_dtor_list____w64_mingwthr_add_key_dtor___mingwthr_cs_init____w64_mingwthr_remove_key_dtor___mingw_TLScallbackpseudo-reloc-list.c.debug_frame_glob_in_set_glob_initialise_glob_strcmp_glob_registry.part.1_glob_store_entry_glob_store_collated_entries_glob_match___mingw_glob___mingw_globfree_retfail.2632_closedir_rewinddir___FRAME_END_____JCR_END___register_frame_ctor.text.startup.ctors.65535_VirtualProtect@16___RUNTIME_PSEUDO_RELOC_LIST____imp___fullpath__imp___setmode__data_start_____DTOR_LIST____imp__VirtualProtect@16.weak.__Jv_RegisterClasses.___gcc_register_frame__imp___onexit___p__fmode__imp__GetLastError@0_SetUnhandledExceptionFilter@4__imp__VirtualQuery@12__imp__getpid___tls_start____imp__TlsGetValue@4__libmsvcrt_a_iname__imp__InitializeCriticalSection@4_DeleteCriticalSection@4__rt_psrelocs_start.weak.___register_frame_info.___gcc_register_frame__imp__abort__imp___findnext__dll_characteristics____size_of_stack_commit____size_of_stack_reserve____major_subsystem_version_____crt_xl_start_____crt_xi_start_____crt_xi_end____imp__stricoll_GetLastError@0__imp____p__environ_VirtualQuery@12_mingw_initltsdrot_force__imp___iob_GetModuleHandleA@4___register_frame_info__libmoldname_a_iname__imp__strdup__bss_start_____RUNTIME_PSEUDO_RELOC_LIST_END____size_of_heap_commit____imp__isspace__imp___errno___p__environ__imp__GetProcAddress@8_GetProcAddress@8___crt_xp_start____imp__wcstombs_GetCommandLineA@0___crt_xp_end____imp__signal__imp__puts__minor_os_version____imp__atexit__imp__mbstowcs__head_libmsvcrt_a__image_base____section_alignment___wcstombs__IAT_end____head_libmoldname_a__RUNTIME_PSEUDO_RELOC_LIST___setlocale__imp____p__fmode__tls_start_ExitProcess@4__imp___findfirst__imp__strcoll__data_end_____getmainargs__CTOR_LIST___mbstowcs___set_app_type__bss_end____CRT_fmode___crt_xc_end____tls_index___crt_xc_start_____CTOR_LIST____rt_psrelocs_size__imp__memcpy__imp__fgetc__imp__strcmp__file_alignment____imp__LeaveCriticalSection@4__imp__malloc__imp__strncpy__major_os_version____findfirst__imp__realloc__IAT_start____imp___findclose_stricoll__tls_end__imp__GetModuleHandleA@4__DTOR_LIST___EnterCriticalSection@4.weak.___deregister_frame_info.___gcc_register_frame__fullpath__findclose__size_of_heap_reserve_____crt_xt_start_____ImageBase__subsystem____imp__strlen__imp__fflush__imp__calloc__Jv_RegisterClasses__imp____getmainargs___tls_end____imp__ExitProcess@4_mingw_initltssuo_force_InitializeCriticalSection@4___cpu_features__imp__free__imp__SetUnhandledExceptionFilter@4___deregister_frame_info__major_image_version____loader_flags____imp__tolower__CRT_glob__setmode__imp__printf___chkstk_ms__head_libkernel32_a__rt_psrelocs_end__imp___cexit__minor_subsystem_version____minor_image_version____imp__vfprintf__imp____set_app_type_mingw_initltsdyn_force_TlsGetValue@4__imp__DeleteCriticalSection@4_LeaveCriticalSection@4__imp__GetCommandLineA@0__imp__setlocale__findnext__RUNTIME_PSEUDO_RELOC_LIST_END____libkernel32_a_iname___dyn_tls_init_callback__tls_used___crt_xt_end___vfprintf__imp__EnterCriticalSection@4__imp__fwriteenigmail/package/tests/prefs-test.js000066400000000000000000000014231266701624400200420ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false, Cc: false, Ci: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("prefs.jsm"); /*global EnigmailPrefs: false */ test(function shouldSetGetPreference() { const prefName = "mypref"; EnigmailPrefs.setPref(prefName, "yourpref"); Assert.equal("yourpref", EnigmailPrefs.getPref(prefName)); }); enigmail/package/tests/resources/000077500000000000000000000000001266701624400174225ustar00rootroot00000000000000enigmail/package/tests/resources/dev-strike.asc000066400000000000000000000061031266701624400221670ustar00rootroot00000000000000-----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - https://gpgtools.org mQINBFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA 7QipP2f0aPzsavNjFnAfC9rm2FDs6lX4syTMVUWy8IblRYo6MjhNaJFlBJkTCl0b ugT9Ge0ZUifuAI0ihVGBpMSh4GF2B3ZPidwGSjgx1sojNHzU/3vBa9DuOmW95qrD Notvz61xYueTpOYK6ZeT880QMDvxXG9S5/H1KJxuOF1jx1DibAn9sfP4gtiQFI3F WMV9w3YrrqidoWSZBqyBO0Toqt5fNdRyH4ET6HlJAQmFQUbqqnZrc07s/aITZN36 d9eupCZQfW6e80UkXRPCU53vhh0GQey9reDyVCsV7xi6oXk1fqlpDYigQwEr4+yJ +1qAjtSVHJhFE0inQWkUwc2nxef6n7v/M9HszhP/aABadVE49oDaRm54PtA1l0mC T8IHcVR4ZDkaNwrHJtidEQcQ/+YVV3g7UJI9+g2nPvgMhk86AzBIlGpG+wARAQAB tCthbm9ueW1vdXMgc3RyaWtlIDxzdHJpa2UuZGV2dGVzdEBnbWFpbC5jb20+iQI9 BBMBCgAnBQJVR5ubAhsDBQkHhh+ABQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJ EHgWFzGc4xHEt/4P/1zf/2VsEwpJVlqwoLiJGQbViCRW34W8rTyL45GjRYAgDXrW LDPqxSbotXTXi72Dwug6a/Pn1VI1R2ZaBsWXH8qUYtSV/0b/2HfqUyDhaiuASywM dSfTAXa+popNccD5yPCJVBD0xmPCAmrOciYePMMNBk4SCDV5DJcCyGhEAkSeGsXy +m2bXb1pTbg6OpqDIPCqlmNQ8ZyAZNzWIyRWcqUY+B6xcZk+n50wG9A0TCOvVjsZ +E8Khyha2tfz1WFPmoy0rMD4g2ggvII3v4elosBQW0pxYdkwBAwk6g3DMyUzR6Gc NcZnuvnZVBbjCpqXtDJ7UcjjcP8zvzDYlXAY74gM8Nu7/89Pw676rVUXtS7c/LUB 8Z75FACi7d65Kp8Q6sNYVfi/mTggNwEAuAkjp9acEGvk67q2we+lEoeAwCyfBiBu 5TmYriLyAvfyoyeMhRjV0FdBaRh+4CkVgSG4/eTLFcnHVB2ZzhX7Uw0qoxM8R+ca P75XoVUyXmIpC/UZTrF4IGDUc4jbIqSGU2/Kln4Z8vQpuCw0vavbT93jSCyqaIbK qemK8D0rbaoxJq5RLkwU6gJ3dOpQdDRuqUAkfbEZd8yVRSmfugRhCTbdAA5/1kdg oWv9xZU7asdsm5cpHpy7lM7ponHsA+B+ykApDqDzPIHDZBoeqKl6qNe2BYOYuQIN BFVHm5sBEADBX28bR5QxbrGNVPT3jM60IT+m/GTLH6lm4OcZomAej/XrBOcX/0BY tOqqP7Dur8k0A8fcLkZCSBse1m6fvfACo8Vbeunv4IrST5FgXh7bYPZseIy5U7Xn 0dLqpVXJRqMt3ULS/Rwy18Xx8j9sXJJDAKIqZ4MHwgBknPeeBnD4aG6bJAuBEI6R W5lhbG8WFJfCniFuRnim+VD6ucf93x3NkL0TWY0l0PbUdW92sLfiKp1nmz+1dRoB ckT701sMs2pk48O5Y/vP6OEDzFzjGdA1r9YkblXjN9VxhSN00Wlmcq1DqEU36+Mq i4YIQsuF3NfS13+U2lhjlR5HpRxdDMfHjFYlk5hlOtuvopseYTlMykFl8D7y0qSF IAiqVl6pdlSBU84bOLHoCUGens+Ul7m0UShwZdVmMifFw/fJwISZI8D5vGkM3rE7 TxrHAQ/O1fJnGZNBRgn8LjnZjRGA/u1fweptFY0NyzO5lOzTWI6HBJl1hMave2l0 vtwBPLrRbbRhy6Z77BNfE9a2w7Y4aFeshjEpWxE8bQIyMrBGaRaiQ2lpXmA6XYZx Q8xOUfstsAR1TM+JboXJDuTw+YhaVa2W7Z/RzdtNnahWCCjptFq60DuggLwAGnjr 5HctpLgwvLVKCeDfU8nchzCkL7Hikh2LC7ySUR/VzORag/TkjxYRRwARAQABiQIl BBgBCgAPBQJVR5ubAhsMBQkHhh+AAAoJEHgWFzGc4xHEo+UP/02AIUR0349zGk9a 4D5Jv007y+d0tWKPL0V2btaq9xQzoM51CtuT0ZoqTO8A0uFmEhCkw++reQcWOz1N n+MarPjjJwMjhTPS/H1qiwTXmuwx92xLL0pajloq7oWYwlxsgVGCMDYE0TOMN8p/ Vc+eoJaWZh8yO1xJGDP98RHbZQWwYN6qLzE4y/ECTHxqi9UKc68qHNVH9ZgtTXnm gLAkEvXzRV1UOEEttJ6rrgPrTubjsIG+ckZK5mlivy+UW6XN0WBE0oetKjT8/Cb1 dQYiX/8MJkGcIUFRurU7gtGW3ncSTdr6WRXaQtfnRn9JG1aSXNYB/xZWzCBdykZp +tLuu4A3LVeOzn064hqf3rz2N7b8dWMk5WL5LIUhXYoYc7232RkNSiiKndeJNryv TowFt9anuMj4pFgGveClQc9+QGyMVdTe6G5kOJkKG8ydHKFEFObtsTLaut4lHTtx n+06QO/LKtQTXqNEyOyfYhbyX7xDbCbu4/MA23MzTs1hhwgIy4+UejU/Yeny6VkB odA3bFyEYKWPoMDDgfdlZbzjv3qAN4Qq+ollo8K3gJgH0QONrUaRY84/hil05T4E nUZiXdzPWvhMv5lEK+pTMlO8FbOG31+aB8rxCg+wp1ovyC/fp5XjZaLHcyPAWAXK LBn4tb400iHp7byO85tF/H0OOI1K =CVNK -----END PGP PUBLIC KEY BLOCK----- enigmail/package/tests/resources/dev-strike.rev000066400000000000000000000015571266701624400222250ustar00rootroot00000000000000-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 Comment: This is a revocation certificate iQIfBCABCAAJBQJWgkGuAh0AAAoJEHgWFzGc4xHEXlMP/1G7Ldp8fuKZc8rQ3UEf PKnL5jYmdjQdwhh/aX2Bf/a0J1IUryqQe8YdhtIQtKA9ikyVstaXCX/2BhmrIpr3 f5th6mOPUW38RWfCGWEa/fg+RmYyoU7NnCLG3zvHMQpOKOSYqx4l04JWMSdcV4fu DEkBRInijG1QaBUk+5mR0kI2igBGvuoGGZyA5bILeLM1Ua/Tso+r/t3x0rnY0Us+ AN+GNo0Y8zWQjx/9ShEEiMS4MxbL6s3vNcw3u19qBixtd63vBi4zmIj6WTw8Rrxr BozwZ/RX6+SFDkn2oXVpou/F+TVL4wv8bo1k7ZmdbeozwHLd44hXMWB1HaFAZEHZ Y9+geedO1XH/JaRhFNeuVUxrI6qKQFllxuMm1EiSriT9eLcYFxeY3WxtnvusL5fp cgl9sAOzbZQUUNNSYTTad5y8n5/Rzft3YiQQBhO1E5Wtz4wnPseWq/I7DGJ62jGO amhHRKqvdqlk4+Rst+aQ5ok7BXmZuh60VmkUAh4dmRkPNLBA5J8Ts6stDF0PS4oh ZDTEtA0cXDS2S9c/xQihWaadilrbJ/lVDNZ+CQiZNJ3Me0ChXcjUvJL7yZyyXVfH bdYhpv05fhaBZcqvWb50UWD+Hp95isYRYehw/RQpRrnS+mKvkvS+RO1QV0UkR+yY 68onQta97hWM9iZ1WzS+pcmH =3cc8 -----END PGP PUBLIC KEY BLOCK----- enigmail/package/tests/resources/dev-strike.sec000066400000000000000000000151241266701624400221760ustar00rootroot00000000000000-----BEGIN PGP PRIVATE KEY BLOCK----- Comment: GPGTools - https://gpgtools.org lQc+BFVHm5sBEACs94Ln+RMdeyBpWQtTZ/NZnwntsB10Wd3HTgo5sdA/OOFOJrWe tJfAZ/HRxiSu1bwRaFVC8p061ftTbxf8bsdfsykYJQQqPODfcO0/oY2n/Z93ya8K TzjXR3qBQ1P7f5x71yeuo7Zrj7B0G44Xjfy+1L0eka9paBqmm3U5cUew5wSr772L cflipWfncWXD2rBqgRfR339lRHd3Vwo7V8jje8rlP9msOuTMWCvQuQvpEkfIioXA 7QipP2f0aPzsavNjFnAfC9rm2FDs6lX4syTMVUWy8IblRYo6MjhNaJFlBJkTCl0b ugT9Ge0ZUifuAI0ihVGBpMSh4GF2B3ZPidwGSjgx1sojNHzU/3vBa9DuOmW95qrD Notvz61xYueTpOYK6ZeT880QMDvxXG9S5/H1KJxuOF1jx1DibAn9sfP4gtiQFI3F WMV9w3YrrqidoWSZBqyBO0Toqt5fNdRyH4ET6HlJAQmFQUbqqnZrc07s/aITZN36 d9eupCZQfW6e80UkXRPCU53vhh0GQey9reDyVCsV7xi6oXk1fqlpDYigQwEr4+yJ +1qAjtSVHJhFE0inQWkUwc2nxef6n7v/M9HszhP/aABadVE49oDaRm54PtA1l0mC T8IHcVR4ZDkaNwrHJtidEQcQ/+YVV3g7UJI9+g2nPvgMhk86AzBIlGpG+wARAQAB /gMDAtfSz5hVoDvp4Vugj4T3VQk8mJ3uYDZmPbNL8SK18VTIVpd3xgrjTP+JEtB+ aw1WQK4Qik0BdKAu9Lv6wz4u/QNC8q4x3lBcoYleD6iXRL2Tpnh7RcEakIoxIeFH joBTZOI+v0HUlyVvSkIaEhE60UvdX+If9p9sx5+uHdYRRfOkM3SZMxLxCUVHMp1e ZBcmW+x9UiyA07wXyvAhlS2/iTijDtQFRqK8xs9w7zn0A12afksGtPEL7J5MRqQs BuxUrWSKVQ3DkgWXd56qEtbKuklKXe9t93eMPvcFQ2ZVhgic436dygtpNgkGliVq Di83wUjorTZFMeC0uhvQ2akfQxvj5TgYoI0rFABvn/6He1LBSWyiu6ZK1nC1PKUc KLGQGfq+kbHwJg3q0wIJ5+e1v6hZ9HClhaRsR4ADnTDnp3mGqPxDWvQox1S2+ESx 8N6AcZ+q47D78IE4EzF4LyQ0g9FdDiNsPwqN4oS2/ZkXb/IbFoVoottU7915KqZO 6kiJvpMcZrs4TJ4zR++CGBEvJDfUE4RoQHQe/XLA1RJXIwXr3kWPvB2Tc16vdhkh LZ9z/HOrPW6SI/UwVYFHpmJIYj3nHdjGcyWwz0KmQ3H5+AYe36afwJws6TFx/QLi fqlOkcaBaiQwpcpuSX2y4rTgcjDEaVdPGmvs2m5vKv66a8yybIl2P0veVTutGtC8 DfQaggqZWQYHmXXvGUnBM+H9YSBJ2g3W3w51fKcN2FtX42OsVxXqZkqlGR2zBE00 ilVZmiv6ajV9mmO7W8EV9TPqjrYuEDf2M57LllQ7OB1p1v6CtqIyVSL/Jak6ckMT 5VdqMoup6ib5j4CR+C4i7Btu+gkXhW775l/jbFlUXKE5Vn+LAAIOpxiVZ2Z7azL6 sNwxtfmpaTAgIvHGSysgPeXeEN3fgTsfZ0PYaqlEHggsYDDU4XvXIOKcUmrr6zEI KXeeS0+V3nxSIb9kQHYZyUFvNv98gCCj0wgNl+LoVJ9NvMkaOrCS0jkRaxJicQfa bu4XL9XbUBESuHvG6jiK6DNlhT1j3qFFcRBO7COI3OQ0JD7Y1XPYYR48EP69Fwe0 82LZH5dq9kslpn8VsuygTum9jYFnE5UVLfmjbroFu9YlLE54T0CdZ4UQEWTrZiuz TXYf13FaVEgfAim+hjdUUVSCptsX2crC7Vrsk/xMjT2ETU1w/yZb5BVoCvbK/eaf sqQAPGElSp0YlI/mgpbc5rRQzcSXghenjOol/gJM0MbFJuyQ93sLW0Gi7zEeBxQi aO/Ua4F4VhPilPf+T66fNMM0bG29X5j41eRrN0m1ly4M+jOOIyocLcUamgFsRDTe XG9kHZUylAJqNMwQvDzbVSTbHKjhOTa3PyinrTwauYiQP6fIbd4JWkIW88cBynbR IHHCYYGxZoDUDd366QyNHKTd5wxw1MicK54tUDcUVDq8NKC+yGuGi6WLYt4WdNEg pYb/MzxGRzbhVEHNbfFEr5e706VcQlglpPcMTUctzRVF18wWHzPVbHdZiTBXdr0t hJkRNaAvnmQMvP0bXk+QDGW24Z66Yz0X2YzFo4Rdp/MAm/1KwagIu0hIGbwk8egq tq6Q5zyyiSp7dVvcNAPaEzEKZXRSrSjyNwQw0CHI940SRgK5JDkAMHZWK8vg8Ih4 DR7m69XmYXwvTScrQqkFa+8XIb5QqeH7W3Qe4aKiC6QOJav/ptYLZ+s1TTzeIOA8 5zxhWPj81YgifDtWPc4MG+Y0QuSzMdMue+/oJUt6lyQmtCthbm9ueW1vdXMgc3Ry aWtlIDxzdHJpa2UuZGV2dGVzdEBnbWFpbC5jb20+iQI9BBMBCgAnBQJVR5ubAhsD BQkHhh+ABQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEHgWFzGc4xHEt/4P/1zf /2VsEwpJVlqwoLiJGQbViCRW34W8rTyL45GjRYAgDXrWLDPqxSbotXTXi72Dwug6 a/Pn1VI1R2ZaBsWXH8qUYtSV/0b/2HfqUyDhaiuASywMdSfTAXa+popNccD5yPCJ VBD0xmPCAmrOciYePMMNBk4SCDV5DJcCyGhEAkSeGsXy+m2bXb1pTbg6OpqDIPCq lmNQ8ZyAZNzWIyRWcqUY+B6xcZk+n50wG9A0TCOvVjsZ+E8Khyha2tfz1WFPmoy0 rMD4g2ggvII3v4elosBQW0pxYdkwBAwk6g3DMyUzR6GcNcZnuvnZVBbjCpqXtDJ7 UcjjcP8zvzDYlXAY74gM8Nu7/89Pw676rVUXtS7c/LUB8Z75FACi7d65Kp8Q6sNY Vfi/mTggNwEAuAkjp9acEGvk67q2we+lEoeAwCyfBiBu5TmYriLyAvfyoyeMhRjV 0FdBaRh+4CkVgSG4/eTLFcnHVB2ZzhX7Uw0qoxM8R+caP75XoVUyXmIpC/UZTrF4 IGDUc4jbIqSGU2/Kln4Z8vQpuCw0vavbT93jSCyqaIbKqemK8D0rbaoxJq5RLkwU 6gJ3dOpQdDRuqUAkfbEZd8yVRSmfugRhCTbdAA5/1kdgoWv9xZU7asdsm5cpHpy7 lM7ponHsA+B+ykApDqDzPIHDZBoeqKl6qNe2BYOYnQc+BFVHm5sBEADBX28bR5Qx brGNVPT3jM60IT+m/GTLH6lm4OcZomAej/XrBOcX/0BYtOqqP7Dur8k0A8fcLkZC SBse1m6fvfACo8Vbeunv4IrST5FgXh7bYPZseIy5U7Xn0dLqpVXJRqMt3ULS/Rwy 18Xx8j9sXJJDAKIqZ4MHwgBknPeeBnD4aG6bJAuBEI6RW5lhbG8WFJfCniFuRnim +VD6ucf93x3NkL0TWY0l0PbUdW92sLfiKp1nmz+1dRoBckT701sMs2pk48O5Y/vP 6OEDzFzjGdA1r9YkblXjN9VxhSN00Wlmcq1DqEU36+Mqi4YIQsuF3NfS13+U2lhj lR5HpRxdDMfHjFYlk5hlOtuvopseYTlMykFl8D7y0qSFIAiqVl6pdlSBU84bOLHo CUGens+Ul7m0UShwZdVmMifFw/fJwISZI8D5vGkM3rE7TxrHAQ/O1fJnGZNBRgn8 LjnZjRGA/u1fweptFY0NyzO5lOzTWI6HBJl1hMave2l0vtwBPLrRbbRhy6Z77BNf E9a2w7Y4aFeshjEpWxE8bQIyMrBGaRaiQ2lpXmA6XYZxQ8xOUfstsAR1TM+JboXJ DuTw+YhaVa2W7Z/RzdtNnahWCCjptFq60DuggLwAGnjr5HctpLgwvLVKCeDfU8nc hzCkL7Hikh2LC7ySUR/VzORag/TkjxYRRwARAQAB/gMDAtfSz5hVoDvp4ZpoCdrR S4An9JABiMWCTG4IUYuShVQKJJR3KtZ0C5D4gH4BUlEGDsUtY3/6deakvzedbVxv mb59QoU8GuHZ/iWAlsY+37YIBu9kbywIFDDGJeD9th9cXPpuQ31kEvwE37gsNn5p IB38oB3mgWoLi2nH4AAVNZXPNBTJ7rS1pi69v4BepUTbglb805ypmWJllzhyRUvm DAU/8cu0cPWaaBU4s8Mi7SLv2s+i9EPYNzDkBEy7RYvZApP7G8x447iYPRvmaFnB Fd3Ctpd3xkZhZatDV6MJCEfssIdy5yARV4zwCcZ5JDGXGlxoiPH6A3b11SwPOEMv QJ0PRZ334XLK93hwzxjYKBJ8hBrR2oPvRUOAVs2/J8JSASYrufyqkXnYJ1EBnP3H 5TwbjRQ9Qmg1ScFCzTfYgu5emiIF5LFAfTasZGSJvjrXFVeocCswHUvHztzJmpbt BAov3Lw6lBkxdvhZomyx74CGOnyz/eFD/khvIV/oms5lR8NNrkpkRGZ/xCN8Kmau KhRBebGVEITzOWJQHz0QMhuTloVvtDbDDgqW8gH8eVQJkQCDw8Wd79uj0kw1Xaln nseFPLCRNRN0js7cCGW95fVtawRNBCNYambNCLthkBfzT0+1/ULRC2JrP1rutr6D sye0S44kNyXKhM72Hamu4XygYlzRsYQflv2PgypjVmkdcZ2rwomMVdqQll3Q7jde kWKDpKdx7lR2pnDoXmn43VR1X4uD1PHab56tYE0JUrKDgqZJqzCwJXc3FcPV7LgD 8pISoMZJ5+84UiRBvNN7N24kpLd9k97Iz29qY6u86Uy/f7/X77qur58r6K04vTfH 8nA/ybc/9Ube6oyQ44A2NEwBrP3NUA6lHNPeaYBO2RGxTJJU2Edxuy3bJMpEkBhU CeWWIZnuxojF+pGjiPLArVZg6Mahc0GlYoiA66cxTuoGHM/wO5Xl0f33L0jny3Kv I9OWvUJbKs+J8G6q0zorl5nNmPpTwGYLJkUKhLtMhjS+jf5XA7b5jN1079/oToXu Xsfl6J7vnwJt7gglLRpK8iw3xlF4X4AWodBLj36HEyOgTimJXLt2fdpIrkiutUFF qdWdZeK+sII8ZAyrfgvwxvmairFK3ylbPwA340jsRQeA8boOOSiDV0cPOszQi1Rt Ygnae9or6faA3lqe+fRQi5JsmnJ1jLMe0mxw1mMOR4YLCMjgBc0CTMkY5kmCykA7 NCQBec2Fueu9cxsu7LJO4+OAUF+i+G/BWPzvWqyJrLk52tME2TxyVL5PRZvqAcrK CV+d9IKxH4Ng40qPXL1gM27wWrrFa6RGq12oGvTqkVcomImzqK1ASSPWU3bSYiOy 2JOQvjLxjQw6emNYG09SlKrzNmXlbrZ4BfolL4eI8H2+3+UG4l/cXxPnLEeQzkvu XuW5yajWoNBocEICcopmv8QgpwgiTUstmOTMFXD1EbVasonaH5R+wxBMB4Y1K+ot eRawIyFA75FO8HCPoTBe5+Qb6G8+5i7nsgDtHG337G8JFz3hE3U++90zbYxxtjYx Y2PYHfOwsDE8IDu1ZqzuB7lgrNADzOzelhSrcaW/jNHPGlxcsPTXl7S2QazgIPqk kZ9g4ceXSsZOV9Yl4Bu2ODeUiVeYGGEXwJ7WAKNvaR3bMbhl+iwIQFy3A12/fz0w B16C9qp7P9+5FEFWjlqi/28dSfECiDD4X4iyEe+sWTS86Cv0VsL300dIUQPIs65d ddkrIkcpM4jyabKTZcltiQIlBBgBCgAPBQJVR5ubAhsMBQkHhh+AAAoJEHgWFzGc 4xHEo+UP/02AIUR0349zGk9a4D5Jv007y+d0tWKPL0V2btaq9xQzoM51CtuT0Zoq TO8A0uFmEhCkw++reQcWOz1Nn+MarPjjJwMjhTPS/H1qiwTXmuwx92xLL0pajloq 7oWYwlxsgVGCMDYE0TOMN8p/Vc+eoJaWZh8yO1xJGDP98RHbZQWwYN6qLzE4y/EC THxqi9UKc68qHNVH9ZgtTXnmgLAkEvXzRV1UOEEttJ6rrgPrTubjsIG+ckZK5mli vy+UW6XN0WBE0oetKjT8/Cb1dQYiX/8MJkGcIUFRurU7gtGW3ncSTdr6WRXaQtfn Rn9JG1aSXNYB/xZWzCBdykZp+tLuu4A3LVeOzn064hqf3rz2N7b8dWMk5WL5LIUh XYoYc7232RkNSiiKndeJNryvTowFt9anuMj4pFgGveClQc9+QGyMVdTe6G5kOJkK G8ydHKFEFObtsTLaut4lHTtxn+06QO/LKtQTXqNEyOyfYhbyX7xDbCbu4/MA23Mz Ts1hhwgIy4+UejU/Yeny6VkBodA3bFyEYKWPoMDDgfdlZbzjv3qAN4Qq+ollo8K3 gJgH0QONrUaRY84/hil05T4EnUZiXdzPWvhMv5lEK+pTMlO8FbOG31+aB8rxCg+w p1ovyC/fp5XjZaLHcyPAWAXKLBn4tb400iHp7byO85tF/H0OOI1K =h0dN -----END PGP PRIVATE KEY BLOCK----- enigmail/package/tests/resources/emptyRules.xml000066400000000000000000000000001266701624400223030ustar00rootroot00000000000000enigmail/package/tests/resources/encrypted-email-with-attachment.eml000066400000000000000000000200071266701624400263010ustar00rootroot00000000000000Delivered-To: strike.devtest@gmail.com Received: by 10.31.65.206 with SMTP id o197csp6107vka; Thu, 11 Jun 2015 10:04:06 -0700 (PDT) X-Received: by 10.13.254.69 with SMTP id o66mr13216940ywf.152.1434042246087; Thu, 11 Jun 2015 10:04:06 -0700 (PDT) Return-Path: Received: from mail-yh0-f45.google.com (mail-yh0-f45.google.com. [209.85.213.45]) by mx.google.com with ESMTPS id r184si124165yke.167.2015.06.11.10.04.05 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Jun 2015 10:04:06 -0700 (PDT) Received-SPF: pass (google.com: domain of ipazmino@thoughtworks.com designates 209.85.213.45 as permitted sender) client-ip=209.85.213.45; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ipazmino@thoughtworks.com designates 209.85.213.45 as permitted sender) smtp.mail=ipazmino@thoughtworks.com Received: by mail-yh0-f45.google.com with SMTP id d80so1649421yhi.1 for ; Thu, 11 Jun 2015 10:04:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :subject:content-type; bh=GzgNMIbACo0qviXHTaTVeIJQ4iy/1HFPSyLGwM6Gutk=; b=RyNzxW4V5tq5wR+kX53P0C0ovcfCSIxpCqS/UFmupa5n1n1nnXgv1TEtAezexFBD08 VN4s7POnOIYENchLovB9iMhAynB0lIJJ2klU7SoCqJb8MQyC/Q9IT0pubLFRXifGHiY1 Oe1d348SShgxIKkDhZ/mtDDPFMS+/Rbw+Hw5CgIIfkbuSK7U+HmnhaW9WHzbNie01DAV mCQyiMh6lcnHP1AGg5VOzzABzIQo6J1CTgOCtrXyGKGb8vfda5rBH/hMcL2VEKTOP/N0 fBqj1UxvslPe4ideOYJfOsMGrAShln1yPis7WpbXf0SMCxrkdC8x752dYY1buDfM9jGk HtjQ== X-Gm-Message-State: ALoCoQl4o5R+0YzTR2jnS7qaqQ/rMEZNBLVGE2lLmVdqLWLpgWWodO5KHbJts7CsZC6Thm2kj6TN X-Received: by 10.129.76.79 with SMTP id z76mr13237331ywa.17.1434042245687; Thu, 11 Jun 2015 10:04:05 -0700 (PDT) Return-Path: Received: from iapazmino.local ([181.198.81.194]) by mx.google.com with ESMTPSA id u10sm819002ywu.3.2015.06.11.10.04.04 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Jun 2015 10:04:04 -0700 (PDT) Message-ID: <5579BF87.1040804@thoughtworks.com> Date: Thu, 11 Jun 2015 12:04:07 -0500 From: =?UTF-8?B?SXbDoW4gUGF6bWnDsW8=?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Fan Jiang Subject: Email with attachment Content-Type: multipart/mixed; boundary="------------030301020907070004050005" This is a multi-part message in MIME format. --------------030301020907070004050005 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -----BEGIN PGP MESSAGE----- Charset: utf-8 Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org hQIMA9U1Yju2Dp5xARAAipOGZCn+zFA4L1muc1y+ixqJqqNHXkBXoba6K0WS8bLO 9U6Nw5HBblT8+Lcj9uhY3MFEsFi/6ziu5Cebm+eWoUDyUrSY32XI8dc7QtrgGbb1 +Y/uGezuwr8BfQP53heWk5p/EICPi/3gHTa4HG2ajW8C+ttSltUehVfknraPjIZM pKws9AXs1lGZxoQc62Lnj2npqZafsjYZGKfAP9IE7ESPrPfBHKqS+E9wKQzU/Wy3 Zfqf6Y1CiwMOl7dLDzbCgcMvKKpdCgk03f8BfLv4qPBNy8HrvwZt9kPo9an/gaMY ToyaZYYUY9a7MYNI9MaTX7IzEWFdkuyjfJzk5u+WKaAVL6x8xdbZpnEWjP/jm4Zd c4YpTWclkriAhc69vucag22JtsvBkvd9IJklvr/wO/Oych8fGZd/ClkfAfKdPw5t 1IrQmYaBiPGpSTFuPrci1oXN5SXGu54IJ4r88hxMdOZKKDPHLfLVOkjDp6RHoJQd /KkaFheyQnM0tcX3ya/moKeJDDpyMtdZPznudqtMGjEnWb1RawmUsrpcP4rj1Dfm Pav7iYeLZMM1yYD/vb+DxpD7jQ9ALE9n1aIakzp9BS6NVvtTv0ojENesQVFT5zW/ x1P6Mwcp58CV6HdQqwhPZQ8sjPqimNM0AMIGo9C9I/pxyry935BX8l4rQ1AzYomF AgwD4vk09TV2dzQBD/91P00WN30F0m7i9dWCKZ7/Jr1q8LaQA35lbqF8uh+vSqmI OPbr9cCjn2SNIeKTD+NsmgZADPrGtBcJy5+sU2LK58laicS+nfzYIovjnyhddetG ahyoQrFmf8w3z67GElYv3EAIIPwqdr5HI7Sk2Xfx1n4t/8PhwREikXAM/iWnsI6m NQBlx+hH3Q1LkhATGgb1lnwswgDXSVmbI5zsFglR9UVmt1ENZrvGiQMN2hJPGgbP MVxV/UggcruDqIin8BlGEZR8USOY2y8FkiX1WNNP9VumJ9N9b02gHDPozPDH0DgK ulpGJKvCjYvgcFqbXRbTZ8kGGudxLYbWASl5s8wobo28J2VhlDJAhrL63wCmEP6g Nt1/pM8ePieCl9Jtb83Wis7K1wYoFA8hK/nqRV+v1RmLk9sDYLc1v3eFeLBaZCC6 6mOh9mZldqmL02+UCKHpS+BTdX5LaxMoQpFdh5kx8Blssf3dCS4pezS48rCEBEfU sfKCjL7Ii4WhhEw28e+Lc+QQo1xy/r/WzKFYulvqmUvyH6djKmDsMrSXXuwr4BJq 9/96aeNaJ6109sa66luMz8ru2h68fv0ozslJTA3CRCi/dq1blSegnFb/PA9M/xAp 75VjROvurfhTc+0fwV3r3cLiNOEj86Ih8VuoalQWKcRV0OHzXN6HJDwu481dxNLp AboMPK6dBDyYJEFuOB/kL377OPGU56jk6isMw7U5yODPR24+rwqSadFJNgMquyz5 1ivj7MsE+jBl7PgPTgXJQKLfS2QJi2j1oOsdA9KpAQ5I0CLmc4S1c8pTWihMUwaS VtoUm9wUS6WbwbLTg+v/HTPlN+7v0ngpYWI151m45cEF0mAfH9dH4dZ53DuNhv+0 HQFkcEIKW6Gr/V6qk/7N/wTtMk1WWAgyOlT/mhbocpV2/coxE0dAnGIgEGN7mik4 FUijTzdkSbhka/e1ckb5+ZxkWZeVXpEtBUW68PDOICotubA43p/+hicjxfK//aaZ 90bomYAXgCIUFp321ZVM6OS7wzbdRiRL+NTcPu6mMT2F8SnvaRFyORNJoE/QM284 pKMJL2DDzTuwaBUGzbKOzeVbEBOG9Y8e2hsKP5Pz/r+lw4Uq0P5zsrfLgxuVhrEb I5hGLyoGcdtIERJyJ46zttkRMNd1D0yu7ICg++BJ6Og6qCHgKfLWsiqOAw9TezjE CzKimQXAJzFpUsn4cnOuxF2qtdXHakYu70yCnWXHkgMgKqDeBcDA+v5yfF2Z1dCi YnW4p5TKyOliexjf3XxBZNsDO+xNuSh3HpnkHhuxzIQEEin/K+Hq8Swfd20vDLsi xXJQXo0Mph3v5TD6RA/tx59dioci0V2XfZMtdTlFgyTAE2K1PDGlLYmyDdvYYCAT 7LsYac6hcSTGHqaEeOVcaD5IYqwL6ngc6fTchcDKerLYSjfNcOUhIQUo7oNTKC5i LFMttrYdxZOP8IvkrP8dUCrK2cbPk+qnH1Ft6VYNJJ4t4ayKVLrRucY1oblvnTxl bGUleZ9nK46o1pkmBmdq6ka/PTN/XXdSsw41CL8+PeMHuohujmpWtQU90cBtC/SG 57E8LQ9ngDtSM0A6IJweIoGmk6Owu6wSwoHIJ/+WHZcDKQXhGh5r0c3q76BqIv4U 9sayYTw= =J17h -----END PGP MESSAGE----- --------------030301020907070004050005 Content-Type: application/octet-stream; name="attachment.txt.pgp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.txt.pgp" hQIMA9U1Yju2Dp5xAQ/+PGGcKOhJ4CzNeAiZVkYOwJcNFW9gLGG0R0rKPqiRED/BxL9B1Oyi rKhAQ2cYTPLo/ba94K6PXzrjh+8pbNpLFzXgEm4Ps/YQLLf/G+37+yxGtUa1URQtGMwQFKD6 sOVBNSBjnSTzddHIsTha37J5XBbePVzKzRdJIr9DepxZSoB/39AJmudxSWMn9vdZS36T7Hri dNim6Rq7fFFAEftPcI9clh+nLtNJiLzMbyRN6IN9jlQGaL2qxU2LcuOBw4MtC9Zjrl37Sqir 54qfGZIZhuXAeO+HinbQKLppdwu/tnF6JATU2QwmlOffFOoOjze+0fs5unlML5xMZJF12cgP /l7MJuma1h102OHoqjILCTLOzw+sddFKIvKi8X8IjGFG3oh1iUM5UnkbMrcvtz2ULhJWxXOQ +51oKB1rhZPYk1heK2mKcFY2IkyBMGuvdPYj94CB95hS/VwxZWALqpIkc5C1xMkInak20I54 SjxiMnMGqUWYCHRJxmwA826AGo9yUA1acOnTDfANhHm96jzP+KW/bTvCTlUsXJCPqq/3Aqx6 0ok878zF+6y4S8S+M+RpVvgJhGQvROlqG3b0Ig+NKN0QrZIHyNCVpW3O6JZEefpKJeQxd921 cb/yPb6jjzcS671nvbXuTqJkh+NqCz1qleFRgU0KmqbLwkg9e3lqyj6FAgwD4vk09TV2dzQB D/0UItnL67tfoiQ16ZzmBvmA1Zb9ZPfmXvJu0VfUuhoUmeBPEiB2T3rOHg3p87axzl+sUYSw 8vxCzxJFopmfm+ffvBeBMjlz4zVHR1gJTqjClacN3KYanjjDivn4cWWbEzd4rozwJEYNFAl+ rBrFWVdVriIBDdocjiWI8XWK38VzqakcJ0s4l4Rk9+tVvtF/Gvb4pqe2dLa3qAMjRlWVQLEE uYMwSuIHvjCf84D2n230j7RmXDWHR0E3Ynz+nnOZ2MpqBWLeeTYRjzDl08eqnvWS9a4W7Il8 ktpVUMFEC0N0dvEK/Jy6Vq5pu8GBgMNyEU+CK5nFS/h85a42YTI883oRcTOKUuS354bFv44h sSro3C8qpiyb+K605slYqr5DCmt2MTtlE9ICDAIWahPsObB0dFgGHA20TjaIgpJ4SFYjGfu7 VkbppxzFKON+LV8dlxHq1tJz2bPR3KkioiY9xee5BuUkSV5DlpDXLiXChOAdsbbOQUDQTYWo KM2dHl2mUyr8rQlWWRP2UB8rCyiGc+wSwCmFoVJ2+aFwob/WlNfUXOqQg5v2wppypdq3d0Ei n9X6cVfny9Z0GtpjnfApf8Z3FJuBYbFlKoa4PKm5slHIcFy4fAGBCr/yn46I4CTSY344K41T Aef5/qfEu7mEUh80ce7fviTctBHCuNVl/02WK9LpAaRfFxf3gyD5/KsR4mGlYHrx7SWJC8QC leD/ueJMZZnT/fxRoufJczZmxy5q377TGMqzb0YLk03U2q2YUzOQvrjcgOUplgwdwzTic3sL zKz/AzLfDRGqm4sotQ8mqEn7h8V0yKjHYQ8/m9qyDA4oXmxOpJmvXdwgqPtOvflbO8+cI3tH svzeQmFLrGPW0Xc9bRm2i8IwZUYeCpBEF2EvivLh3AmrEklv8tkkzVPOWD4Ylm+cAmFgxOoQ p7OmQkearaUs9q3CwGUhJusYCvyzQxJtm3sN2FeFhp93uFDtyZUcZqlFdAuvpZdDtDtYgwIg qrzooq5tXa6KxuJd+UdGeKG9I8HmzlmqxzZl2DAl1gdw2ZIVCYSy1aW/qUD/1I3ggISA0egZ ehObQpbZd4Dor9o+fJAAuEgvCKAab5b7FxWEE3YdGPcMPC57BZUzJGzwcQ1giA7CJaBAmLGG B6v3LQnoRXP9jDatgxw9qvaW6r6IIzTBMJD932S0prHNzvHFD/KQmtw1cKmClU6yLVktFMSP 5rJSjw6txNSDOtzg8cKqhOxZr/LhdKTn0So/mJdLfUOB7zy1Tyyh8rqS7bB+toTitXGJ4YRL mCPO+bbNAC3B7c2+j+FscKCrQV0LTC0L2xrMJBmSi2uA25rf2DiT9y4lSVYxT834jsZRl0eH 2uKoiVuW/sY0/50hsLL/b7yngHxRVKv4W3CJ98FUlVJpBfDLPCWGAP3UWqrbdmVlHCIQRTyc zWtCnX080iBX7wu9yEOY+6hBEz7Xh2eyQ0oWhyGQRqGOAaYH+wVmiTybsqBtWjoxDQcTN3sR UnCsgwInlYiSNdeIUsqHwD2NImBhVscyutyzQOnmTP0DJkJKW3BPBb/AxXdKBR7chJpKlxvH vCYPnCJwaZB1 --------------030301020907070004050005-- enigmail/package/tests/resources/encrypted-email.eml000066400000000000000000000124561266701624400232130ustar00rootroot00000000000000Delivered-To: strike.devtest@gmail.com Received: by 10.31.65.206 with SMTP id o197csp1210819vka; Tue, 9 Jun 2015 14:43:46 -0700 (PDT) X-Received: by 10.170.150.7 with SMTP id r7mr28138075ykc.48.1433886226901; Tue, 09 Jun 2015 14:43:46 -0700 (PDT) Return-Path: Received: from mail-yh0-f51.google.com (mail-yh0-f51.google.com. [209.85.213.51]) by mx.google.com with ESMTPS id w5si3065379yhn.169.2015.06.09.14.43.46 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Jun 2015 14:43:46 -0700 (PDT) Received-SPF: pass (google.com: domain of ipazmino@thoughtworks.com designates 209.85.213.51 as permitted sender) client-ip=209.85.213.51; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ipazmino@thoughtworks.com designates 209.85.213.51 as permitted sender) smtp.mail=ipazmino@thoughtworks.com Received: by mail-yh0-f51.google.com with SMTP id n67so11377426yha.3 for ; Tue, 09 Jun 2015 14:43:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :subject:content-type:content-transfer-encoding; bh=AermomlQzalDA9CuGKCBD4p7rP2ZQS2Zg0e1SUiY8qQ=; b=fOYbw+EF4vbNqfBSvvtC5s7bEd0kYimeTSKt+i8BkbbX4yxAvuZ1wTDXaSCgRd5qOm Kselu97ROnTLQbfOzrIgeUrKejArqfLQAAtITjkRtnSV8GMG5/WEVymno5pwEggxpwXb Ay306n+XOYYxYhAmdHi2tsk1FinFrwLOkDzskn0+iMdU5gwhVUQ7ev2OK0zQkr5E6yt5 RiVOIm2Jv7dOnkjB8weTIHwU9gDtcwHzCfzESZzdIHG6KeMIymaVFAjXRDH3WQjJjIye kjALl6ZB9Hg9xRIi8elzOMdKVQxzisGZAt0fyj0EOhTUSWc0CBVGwVSGMdXlX3KulUM3 bQKw== X-Gm-Message-State: ALoCoQlV/pZ0hMv+z935EHT9GOjCBMSyqOygMtRxMQ6lfoWHj45+E00QbbOWqX1xjoDKy8vlz2Ah X-Received: by 10.129.138.2 with SMTP id a2mr25624689ywg.149.1433886226643; Tue, 09 Jun 2015 14:43:46 -0700 (PDT) Return-Path: Received: from iapazmino.local ([181.198.81.194]) by mx.google.com with ESMTPSA id x185sm5097578ywf.44.2015.06.09.14.43.45 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Jun 2015 14:43:46 -0700 (PDT) Message-ID: <55775E11.6090701@thoughtworks.com> Date: Tue, 09 Jun 2015 16:43:45 -0500 From: =?UTF-8?B?SXbDoW4gUGF6bWnDsW8=?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Fan Jiang Subject: Encrypted email Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit -----BEGIN PGP MESSAGE----- Charset: utf-8 Version: GnuPG/MacGPG2 v2.0.22 (Darwin) Comment: GPGTools - https://gpgtools.org hQIMA9U1Yju2Dp5xAQ//ZKsVVDPBo/3swHQ5+97Rx9ASldxUTG8acN8gPYEGJ15s Jxmigu9Xy4aVad9T4GoGm7r8hfOGjeLu98RfSMt03X0nQCTqjo8epp/Lpx8TTCDS 5VexXsucQkJu55DtzI/ZM0GDb5JW19ONBt8+mYjgPputgOaqG8yETsYblDLlbZjo SE650TvcUmjCm+DRnymzvTJlM8WWRLNs2WwzHdaam/IDPoKggwBUK8mbvI5/+w1Y qFOlet+Feou/4VuN11e+IXT5cJnT8Gwb1hyYij+/CAAfyNeYAf2i8BaMh0LXG7ds 9pFz34whDOjAl4PK6AskTpmrhMcVviesVxa8ayvydxc5IkGvtypGY1M4SITvJLop 3Bdv0Chp8fy1RRGQCBwbIa+t67rL9Nl2LZvwo5Fpvj86iI6EqEG9BsJ8wsNgWbNN v85Iju3DEcz/pqhsr0gzw+xaUv3KDVMW8gGPDkRpHfWik1alL+Lcevu66C9ZodsO OOIJVCqXIsftagVjvPq3LFZCIEdF2Mm5wagD11ByZIrL/xlaeV+3Myengfbyg4O9 Oq8kmr7itGA3TmtVyeGsr81G1q9f2ZtlRiYIHzZOl0rgOLKq0gWm9nP1o65C3qyG Q3kixhkEYcfsLrUA8jbC0f92d7IrwfbQgv7i0+KexvlAHhMuOzkwE6WvFb7vtD2F AgwD4vk09TV2dzQBEADBVjJlctRTRryzoTMiZUFjKXXz1QuTdhgtxITdctQzh/MZ FLoUEBxyhVgRyLygRNIipy1g4jYWzB4ZkUa6Bn+HXxHBakmkMbWa4XnsXOdCDzU3 TYzKo8bnxBnod06A39F0S4CQ1EfEWKe+gcac2GoEVf0+eOSPxs2LEs6/pqLCOL3y XWkVeQPYaqlFMEst9D+7MDZwmpLarNpsHeV5xgrxWootaC99i3uUDcuuxzMEJfuq 0jvLPvTnSe1DJsL+de+bWRd+CC46blY9GOsMEPDU95+yMT66IW5CriBaszq9/0vT 88GV42KyZ/pzJ6n7sn4FYq5XHdkZDnbVpXJT36REt7QRiEDZExVdu5ofFrh7wf3b M9gxSqB6Y/XuLfUx4TadCmXpbEH1iypakOf8ltGcSWf/CC059jB7NX0v5Nhh2wK9 MnSMP6qOWvrnLxU8RR7S8ZjrisZYUKkKBrB9W0lq3cBjgjcwIhTnHITQEkNojVjB dYGmzlTUYM/y17Qi+m75ADVD2ZdHZ5/XjmM/c5kWTbO9WzMIFBexAEoPlroTweQU iM31j5iPWZWeBl+d26h+/6sYYnCZS50o32fLhmYIBv4lSs/AUex4V/VVeGdTyruW iwJkzC1Ztm0GD0RptqIraiEgQ8VzDecoS0VSLs2i2cOEhMhrXBHGXPf/HHiQc9Lp ASgrin2gjG15X0YgCBbfdVau9AJbab8Vx2q9H39qfC8kfj0hq2yzykVLphkbmDH8 K2qwPC/EKScKAp41O7duUnkEPKZDQl0Zg3Z4trupQX3ddTserb8osQm5iH+H7Y28 HO2bLb6tzApT8UyLSb45cTjceLRItsQpPHckWsJ0U7PzZrKob5mOEkj3M7bUCxg5 2JeHUNIahLQPMoXxdYQyB0o7I30/N315509A0cU6+M07VuoWmtGpFFY4qf1GAfLu je+IpUDOWm7Jr703JxXRqkaGvi7oHlDYOLKMQao7Pd4ExHlpRUErzBsduWLllO3j DHi0EYUxwkiCA5pqsSaspNJMTbUwAfNx7Badm6sW7KAfdvfwyFpBZUQy/g2GwCKm 32w9q3Gyrn3fSY5rpLRE63gQDcQxowE4jlNB0nu8VCsEdV1PRVo4pRQZWhOgezEf lNx2Cx6X9fvvQGlS88pQEig14sC2foO7BGyNdR931EZbeBbEO88OYu0MKaQt0kPj qAiZCAdrMedYFpeBjOYr8VwTuxXjtxdeCBUy5X4oHiz6AGAVxve1UP0pJfRy57Q/ CEnd8avVxfS5oQuUhjddx/duBTWzJ6HwynMqzIPXDVeMzAtc193WxFxm5oPXhbVV LzGa866hHbtBBsDUEnNxe/fPU8ZDQAcKqKmqdlK3pyjAGgumP4kuje+kjZCHeqzY V6cPJ9MblBHRzc0ruIy2tKOXkCx2XyGt2c7slatLSdsoE9aATN60d0/HoVL5RxUn YXC0rz/+VTBq+tYe6y7VbXnD9eJZznvBqaLbF3i7RD5thgJeevQTL2L3OqkozfQB 35YgnjdPRqCihuBLOMyplB/efy8KYDxmkUEyROgOIncmr/gxMiEz8SLU0OCXCwMg eO+ITTSXWeBMiSxrxeKHeR/OShe6OpRGbntWU1VXo/Gt9CBL3RFv9Ey6Ys1s9w9h TR5bLU7vrpRAmRve =YK4P -----END PGP MESSAGE----- enigmail/package/tests/resources/pub-keys.asc000066400000000000000000000116371266701624400216610ustar00rootroot00000000000000# test keylist as it could be returned from GPG # - Rows starting with # and empty rows are ignored # - Rows: Validity: q, Key ...0001, creation date, no expiratuon date, owner trust, user id, # # standard trust db entry: tru::1:1443339321:1451577200:3:1:5 # Key with full validity: pub:f:4096:1:0003AAAA00010001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0003AAAA00010001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0003AAAA00010002::Validity full Key : # Key without encryption ability (no 'E'): pub:f:4096:1:0004AAAA00010001:1347189683:1473420083:::::scaSCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0004AAAA00010001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0004AAAA00010002::No encryption Key : # Disabled Key (key with 'D'): pub:f:4096:1:0005AAAA00010001:1347189683:1473420083:::::scaESCAD: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0005AAAA00010001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0005AAAA00010002::No encryption Key : # User with multiple keys (one fully trusted: 0030AAAA00020001): # Validity: o pub:o:4096:1:0030AAAA00010001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00010001: uid:o::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00010002::Multiple validity onefull Key1 : # Validity: f pub:f:4096:1:0030AAAA00020001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00020001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00020002::Multiple validity onefull Key2 : # Validity: q pub:q:4096:1:0030AAAA00030001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00030001: uid:q::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0030AAAA00030002::Multiple validity onefull Key3 : # User with multiple keys (multiple fully trusted: 0030AAAA00020001): # Validity: o pub:o:4096:1:0034AAAA00010001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00010001: uid:o::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00010002::Multiple validity twofull Key1 : # Validity: f pub:f:4096:1:0034AAAA00020001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00020001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00020002::Multiple validity twofull Key2 : # Validity: f pub:f:4096:1:0034AAAA00030001:1347189683:1473420083:::::escaESCA: fpr:::::::::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00030001: uid:f::::1347189683::CCCCCCCCCCCCCCCCCCCCCCCC0034AAAA00030002::Multiple validity twofull Key3 : # User with multiple keys (one marginal trusted): # Validity: o pub:o:4096:1:0031AAAA00010001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00010001: uid:o::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00010002::Multiple validity nofull Key1 : # Validity: m pub:m:4096:1:0031AAAA00020001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00020001: uid:m::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00020002::Multiple validity nofull Key2 : # Validity: q pub:q:4096:1:0031AAAA00030001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00030001: uid:q::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0031AAAA00030002::Multiple validity nofull Key3 : # User with multiple keys (all have same trust kevel): # Validity: - pub:-:4096:1:0032AAAA00010001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00010001: uid:-::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00010002::Multiple validity sametrust Key1 : # Validity: - pub:-:4096:1:0032AAAA00020001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00020001: uid:-::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00020002::Multiple validity sametrust Key2 : # Validity: - pub:-:4096:1:0032AAAA00030001:1388513885:1546188604:::::escaESCA: fpr:::::::::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00030001: uid:-::::1389038412::AAAAAAAAAAAAAAAAAAAAAAAA0032AAAA00030002::Multiple validity sametrust Key3 : # some key with subkey that encrypts: pub:q:4096:1:0040EEEE00010001:1421506625:1736866738::-:::scESC: fpr:::::::::EEEEEEEEEEEEEEEEEEEEEEEE0040EEEE00010001: uid:q::::1421507378::EEEEEEEEEEEEEEEEEEEEEEEE0040EEEE00010002::Some key with subkey UID1 : uid:q::::1421507365::EEEEEEEEEEEEEEEEEEEEEEEE0040EEEE00010003::Some key with subkey UID2 : uat:q::::1421507304::EEEEEEEEEEEEEEEEEEEEEEEE0040EEEE00010004::1 13273: sub:q:4096:1:0040EEEE00010005:1421506625:1516114625:::::e: enigmail/package/tests/resources/rules.xml000066400000000000000000000006661266701624400213060ustar00rootroot00000000000000 enigmail/package/tests/resources/rules2.xml000066400000000000000000000032571266701624400213670ustar00rootroot00000000000000 enigmail/package/tests/rules-test.js000066400000000000000000000400731266701624400200610ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, EnigmailApp: false */ /*global component: false, withTestGpgHome: false, withEnigmail: false */ /*global EnigmailRules: false, rulesListHolder: false, EC: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("rules.jsm"); component("enigmail/keyRing.jsm"); /* global EnigmailKeyRing: false */ // getRulesFile test(function getRulesFileReturnsTheFile() { EnigmailRules.clearRules(); let profD = EnigmailApp.getProfileDirectory().clone(); profD.append("pgprules.xml"); Assert.equal(profD.path, EnigmailRules.getRulesFile().path); }); // loadRulesFile test(function loadRulesFileReturnsFalseIfNoRulesFileExists() { EnigmailRules.clearRules(); var result = EnigmailRules.loadRulesFile(); Assert.ok(!result); }); test(function loadRulesFileReturnsFalseIfTheFileExistsButIsEmpty() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/emptyRules.xml", false); }, function() { var result = EnigmailRules.loadRulesFile(); Assert.ok(!result); }); }); test(function loadRulesFileReturnsTrueIfTheFileExists() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules.xml", false); }, function() { var result = EnigmailRules.loadRulesFile(); Assert.ok(result); }); }); function xmlToData(x) { var result = []; var node = x.firstChild.firstChild; while (node) { let name = node.tagName; let res = { tagName: name }; if (name) { let attrs = node.attributes; for (let i = 0; i < attrs.length; i++) { res[attrs[i].name] = attrs[i].value; } result.push(res); } node = node.nextSibling; } return result; } test(function loadRulesFileSetsRulesBasedOnTheFile() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules.xml", false); }, function() { EnigmailRules.loadRulesFile(); var d = xmlToData(rulesListHolder.rulesList); var expected = [{ tagName: "pgpRule", email: "{user1@some.domain}", keyId: "0x1234ABCD", sign: "1", encrypt: "1", pgpMime: "1" }, { tagName: "pgpRule", email: "user2@some.domain", keyId: "0x1234ABCE", sign: "2", encrypt: "1", pgpMime: "0" }]; Assert.deepEqual(expected, d); }); }); // getRulesData test(function getRulesDataReturnsFalseAndNullIfNoRulesExist() { EnigmailRules.clearRules(); var res = {}; var ret = EnigmailRules.getRulesData(res); Assert.ok(!ret); Assert.equal(null, res.value); }); test(function getRulesDataReturnsTrueAndTheRulesListIfExist() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules.xml", false); }, function() { var res = {}; var ret = EnigmailRules.getRulesData(res); Assert.ok(ret); Assert.equal(rulesListHolder.rulesList, res.value); }); }); // ***************************************************** // test mapAddrsToKeys(): // ***************************************************** var EnigmailRulesTests = { testSingleEmailToKeys(addr, arg2, arg3) { // second argument is optional (extracted addr from initial addr) let expVal; let expAddr; if (typeof(arg3) === 'undefined') { expAddr = addr; expVal = arg2; } else { expAddr = arg2; expVal = arg3; } // perform test: let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(addr, false, null, matchedKeysRet, flagsRet); Assert.ok(ret); let expKL = [{ orig: addr, addr: expAddr, keys: expVal }]; Assert.deepEqual(matchedKeysRet.addrKeysList, expKL); Assert.equal(matchedKeysRet.value, expVal); } }; test(withTestGpgHome(withEnigmail(function mapAddrsToKeys_simpleFlags() { importKeys(); EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let matchedKeysRet = {}; let flagsRet = {}; EnigmailRules.mapAddrsToKeys("sign@some.domain", false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "2", encrypt: "1", pgpMime: "1", }; Assert.deepEqual(expectedFlags, flagsRet); EnigmailRules.mapAddrsToKeys("nosign@some.domain", false, null, matchedKeysRet, flagsRet); expectedFlags = { value: true, sign: "0", encrypt: "1", pgpMime: "1", }; Assert.deepEqual(expectedFlags, flagsRet); EnigmailRules.mapAddrsToKeys("encrypt@some.domain", false, null, matchedKeysRet, flagsRet); expectedFlags = { value: true, sign: "1", encrypt: "2", pgpMime: "1", }; Assert.deepEqual(expectedFlags, flagsRet); EnigmailRules.mapAddrsToKeys("noencrypt@some.domain", false, null, matchedKeysRet, flagsRet); expectedFlags = { value: true, sign: "1", encrypt: "0", pgpMime: "1", }; Assert.deepEqual(expectedFlags, flagsRet); }); }))); test(function mapAddrsToKeys_signAndEncrypt() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "sign@some.domain, encrypt@some.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "2", encrypt: "2", pgpMime: "1", }; let expectedKeys = { value: "", // no matching key means no value addrKeysList: [], addrNoKeyList: [{ orig: "sign@some.domain", addr: "sign@some.domain", }, { orig: "encrypt@some.domain", addr: "encrypt@some.domain", }, ], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); }); }); test(function mapAddrsToKeys_conflict() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "sign@some.domain, noencrypt@some.domain, nosign@some.domain, encrypt@some.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "99", encrypt: "99", pgpMime: "1", }; let expectedKeys = { value: "", // no matching key means no value addrKeysList: [], addrNoKeyList: [{ orig: "sign@some.domain", addr: "sign@some.domain", }, { orig: "noencrypt@some.domain", addr: "noencrypt@some.domain", }, { orig: "nosign@some.domain", addr: "nosign@some.domain", }, { orig: "encrypt@some.domain", addr: "encrypt@some.domain", }, ], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); }); }); test(function mapAddrsToKeys_twoKeysAndNoKey() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "two@some.domain, nokey@qqq.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "1", encrypt: "1", pgpMime: "1", }; let expectedKeys = { value: "0x2222aaaa, 0x2222bbbb, nokey@qqq.domain", addrKeysList: [{ orig: "two@some.domain", addr: "two@some.domain", keys: "0x2222aaaa, 0x2222bbbb" }, ], addrNoKeyList: [{ orig: "nokey@qqq.domain", addr: "nokey@qqq.domain", }], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); }); }); test(function mapAddrsToKeys_noKeyAndSomeKeysReverse() { // important to test reverse order than in rules EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "nokey@qqq.domain, two@some.domain, one@some.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "1", encrypt: "1", pgpMime: "1", }; let expectedKeys = { value: "0x11111111, 0x2222aaaa, 0x2222bbbb, nokey@qqq.domain", addrKeysList: [{ orig: "one@some.domain", addr: "one@some.domain", keys: "0x11111111" }, { orig: "two@some.domain", addr: "two@some.domain", keys: "0x2222aaaa, 0x2222bbbb" }, ], addrNoKeyList: [{ orig: "nokey@qqq.domain", addr: "nokey@qqq.domain" }], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); }); }); test(function mapAddrsToKeys_spaces() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = " ,,oneRule,;;; , ;"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "1", encrypt: "1", pgpMime: "1", }; let expectedKeys = { value: "", addrKeysList: [], addrNoKeyList: [{ orig: "oneRule", addr: "onerule" }], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); }); }); test(function mapAddrsToKeys_manyKeys() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "one@some.domain, two@some.domain, nokey@qqq.domain, nosign@some.domain, nofurtherrules@some.domain, nofurtherrules2@some.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "0", encrypt: "1", pgpMime: "99", }; let expectedKeys = { value: "0x11111111, 0x2222aaaa, 0x2222bbbb, nofurtherrules@some.domain, nofurtherrules2@some.domain, nokey@qqq.domain, nosign@some.domain", addrKeysList: [{ orig: "one@some.domain", addr: "one@some.domain", keys: "0x11111111" }, { orig: "two@some.domain", addr: "two@some.domain", keys: "0x2222aaaa, 0x2222bbbb" }, ], addrNoKeyList: [{ orig: "nofurtherrules@some.domain", addr: "nofurtherrules@some.domain" }, { orig: "nofurtherrules2@some.domain", addr: "nofurtherrules2@some.domain" }, { orig: "nokey@qqq.domain", addr: "nokey@qqq.domain" }, { orig: "nosign@some.domain", addr: "nosign@some.domain" }, ], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); Assert.deepEqual(expectedKeys.value, matchedKeysRet.value); Assert.deepEqual(expectedKeys.addrKeysList, matchedKeysRet.addrKeysList); Assert.deepEqual(expectedKeys.addrNoKeyList, matchedKeysRet.addrNoKeyList); }); }); test(function mapAddrsToKeys_multipleMatches() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); let emailAddrs = "one@some.domain, nico@xx.com, patrick@xx.com, one@some.domain"; let matchedKeysRet = {}; let flagsRet = {}; let ret = EnigmailRules.mapAddrsToKeys(emailAddrs, false, null, matchedKeysRet, flagsRet); let expectedFlags = { value: true, sign: "1", encrypt: "1", pgpMime: "1", }; let expectedKeys = { value: "0x11111111, 0x11111111, 0xDOTCOMORDOTDE, 0xDOTCOMORDOTDE", addrKeysList: [{ orig: "one@some.domain", addr: "one@some.domain", keys: "0x11111111" }, { orig: "one@some.domain", addr: "one@some.domain", keys: "0x11111111" }, { orig: "nico@xx.com", addr: "nico@xx.com", keys: "0xDOTCOMORDOTDE" }, { orig: "patrick@xx.com", addr: "patrick@xx.com", keys: "0xDOTCOMORDOTDE" }, ], addrNoKeyList: [], }; Assert.ok(ret); Assert.deepEqual(expectedFlags, flagsRet); Assert.deepEqual(expectedKeys, matchedKeysRet); //Assert.deepEqual(expectedKeys.value, matchedKeysRet.value); //Assert.deepEqual(expectedKeys.addrNoKeyList, matchedKeysRet.addrNoKeyList); //Assert.deepEqual(expectedKeys.addrKeysList, matchedKeysRet.addrKeysList); //Assert.deepEqual(expectedKeys.addrKeysList[0], matchedKeysRet.addrKeysList[0]); //Assert.deepEqual(expectedKeys.addrKeysList[1], matchedKeysRet.addrKeysList[1]); //Assert.deepEqual(expectedKeys.addrKeysList[2], matchedKeysRet.addrKeysList[2]); //Assert.deepEqual(expectedKeys.addrKeysList[3], matchedKeysRet.addrKeysList[3]); }); }); test(function mapAddrsToKeys_infix() { EnigmailRules.clearRules(); resetting(EnigmailRules, 'getRulesFile', function() { return do_get_file("resources/rules2.xml", false); }, function() { EnigmailRules.loadRulesFile(); EnigmailRulesTests.testSingleEmailToKeys("company@suffix.qqq", "0xCOMPREFIX"); EnigmailRulesTests.testSingleEmailToKeys("hello@computer.qqq", "0xCOMINFIX"); EnigmailRulesTests.testSingleEmailToKeys("hello@komputer.dcom", "0xCOMSUFFIX"); EnigmailRulesTests.testSingleEmailToKeys("company@postfix.dcom", "0xCOMSUFFIX"); EnigmailRulesTests.testSingleEmailToKeys("company@postfix.com", "0xDOTCOMORDOTDE"); EnigmailRulesTests.testSingleEmailToKeys("hello@komputer.de", "0xDOTCOMORDOTDE"); EnigmailRulesTests.testSingleEmailToKeys("aa@qqq.domain", "0xAAAAAAAA, 0xBBBBBBBB"); EnigmailRulesTests.testSingleEmailToKeys("xx@qqq.bb", "0xAAAAAAAA, 0xBBBBBBBB"); EnigmailRulesTests.testSingleEmailToKeys("aa@qqq.bb", "0xAAAAAAAA, 0xBBBBBBBB"); EnigmailRulesTests.testSingleEmailToKeys("hello@komputer.DE", "hello@komputer.de", "0xDOTCOMORDOTDE"); EnigmailRulesTests.testSingleEmailToKeys("xx@qqq.BB", "xx@qqq.bb", "0xAAAAAAAA, 0xBBBBBBBB"); EnigmailRulesTests.testSingleEmailToKeys("company@computer.com company@computer.com", "info@qqq.bb", "0xAAAAAAAA, 0xBBBBBBBB"); }); }); function importKeys() { var publicKey = do_get_file("resources/dev-strike.asc", false); //var secretKey = do_get_file("resources/dev-strike.sec", false); var errorMsgObj = {}; var importedKeysObj = {}; var publicImportResult = EnigmailKeyRing.importKeyFromFile(publicKey, errorMsgObj, importedKeysObj); // var secretImportResult = EnigmailKeyRing.importKeyFromFile(secretKey, errorMsgObj, importedKeysObj); return [publicImportResult /*, secretImportResult */ ]; } enigmail/package/tests/streams-test.js000066400000000000000000000041161266701624400204030ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false, component: false */ /*global Components: false, EnigmailCore: false, Cc: false, Ci: false, EnigmailFiles: false, EnigmailLog: false, EnigmailPrefs: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); testing("streams.jsm"); /*global EnigmailStreams: false */ component("enigmail/files.jsm"); function makeURI(aURL, aOriginCharset, aBaseURI) { var ioService = Components.classes["@mozilla.org/network/io-service;1"] .getService(Components.interfaces.nsIIOService); return ioService.newURI(aURL, aOriginCharset, aBaseURI); } // testing: newStringChannel test(function stringChannelTest() { var testString = "Hello world"; let uri = makeURI("dummy:none"); var ch = EnigmailStreams.newStringChannel(uri, "text/plain", "UTF-8", testString); do_test_pending(); var stringListener = EnigmailStreams.newStringStreamListener( function compareResults(gotData) { Assert.equal(testString, gotData); do_test_finished(); } ); ch.asyncOpen(stringListener, null); }); // testing: newFileChannel test(function readFileChannel() { var md = do_get_cwd().clone(); md.append("file-test.txt"); var testString = "Hello world\n \x00what's next"; EnigmailFiles.writeFileContents(md, testString, null); let uri = makeURI("dummy:none"); var ch = EnigmailStreams.newFileChannel(uri, md, "applicatio/octet-stream", true); do_test_pending(); var stringListener = EnigmailStreams.newStringStreamListener( function compareResults(gotData) { Assert.equal(testString, gotData); Assert.equal(md.exists(), false, "file was deleted:"); do_test_finished(); } ); ch.asyncOpen(stringListener, null); }); enigmail/package/tests/system-test.js000066400000000000000000000034371266701624400202560ustar00rootroot00000000000000/*global do_load_module: false, do_get_file: false, do_get_cwd: false, testing: false, test: false, Assert: false, resetting: false, JSUnit: false, do_test_pending: false, do_test_finished: false */ /*global TestHelper: false, withEnvironment: false, nsIWindowsRegKey: true */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; do_load_module("file://" + do_get_cwd().path + "/testHelper.js"); /*global TestHelper: false, withEnvironment: false, withEnigmail: false, component: false, withTestGpgHome: false, osUtils: false, unescape: false */ testing("system.jsm"); /*global EnigmailSystem: false, Cc: false, Ci: false */ component("enigmail/os.jsm"); /*global EnigmailOS: false */ function testEncoding(charset, from, to) { from = unescape(from); to = unescape(to); let result = EnigmailSystem.convertNativeToUnicode(from, charset); Assert.equal(result, to, "Charset=" + charset); } // Test functions simulating a Windows environment test(function shouldTestWindowsCharsetConversion() { EnigmailOS.isWin32 = true; testEncoding("65001", "%E3%82%B5%E3%83%9D%E3%83%BC%E3", "%u30B5%u30DD%u30FC"); testEncoding("20932", "%A7%B1%A7%E0%A7%D5%A7%D5%A7%D6", "%u041F%u043E%u0434%u0434%u0435"); }); // Test functions simulating a Unix environment test(function shouldTestUnixCharsetConversion() { EnigmailOS.isWin32 = false; let env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment); let lc = env.set("LC_ALL", "ru_RU.UTF-8"); let cs = EnigmailSystem.determineSystemCharset(); Assert.equal(cs, "UTF-8"); testEncoding(cs, "%E3%82%B5%E3%83%9D%E3%83%BC%E3", "%u30B5%u30DD%u30FC"); }); enigmail/package/tests/testHelper.js000066400000000000000000000171231266701624400200710ustar00rootroot00000000000000/*global do_load_module: false, do_get_cwd: false, Components: false, Assert: false, CustomAssert: false, FileUtils: false, JSUnit: false, EnigmailFiles: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; const osUtils = {}; Components.utils.import("resource://gre/modules/osfile.jsm", osUtils); Components.utils.import("resource://gre/modules/FileUtils.jsm", osUtils); var TestHelper = { loadDirectly: function(name) { do_load_module("file://" + do_get_cwd().parent.path + "/" + name); }, loadModule: function(name) { Components.utils.import("resource://" + name); }, testing: function(name) { TestHelper.currentlyTesting = name; }, registerTest: function(fn) { TestHelper.allTests = TestHelper.allTests || []; TestHelper.allTests.push(fn); }, resetting: function(on, prop, val, f) { let orgVal = on[prop]; on[prop] = val; try { return f(); } finally { on[prop] = orgVal; } }, runTests: function() { if (TestHelper.currentlyTesting) { TestHelper.loadDirectly(TestHelper.currentlyTesting); } if (TestHelper.allTests) { for (var i = 0; i < TestHelper.allTests.length; i++) { TestHelper.allTests[i](); } } }, initalizeGpgHome: function() { component("enigmail/files.jsm"); var homedir = osUtils.OS.Path.join(EnigmailFiles.getTempDir(), ".gnupgTest"); var workingDirectory = new osUtils.FileUtils.File(homedir); if (!workingDirectory.exists()) { workingDirectory.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 448); } var file = workingDirectory.clone(); file.append("gpg-agent.conf"); if (!file.exists()) { file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 384); } var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]. createInstance(Components.interfaces.nsIFileOutputStream); foStream.init(file, 0x02 | 0x08 | 0x20, 384, 0); var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"]. createInstance(Components.interfaces.nsIConverterOutputStream); converter.init(foStream, "UTF-8", 0, 0); converter.writeString("pinentry-program " + do_get_cwd().path.replace(/\\/g, "/") + "/pinentry-auto"); if (JSUnit.getOS() == "WINNT") { converter.writeString(".exe"); } converter.writeString("\n"); converter.close(); var environment = Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment); environment.set("GNUPGHOME", workingDirectory.path); return homedir; }, removeGpgHome: function(homedir) { var workingDirectory = new osUtils.FileUtils.File(homedir); try { if (workingDirectory.exists()) workingDirectory.remove(true); } catch (ex) { // do nothing about it } } }; TestHelper.loadDirectly("tests/customAssert.jsm"); var testing = TestHelper.testing; var component = TestHelper.loadModule; var run_test = TestHelper.runTests; var test = TestHelper.registerTest; var resetting = TestHelper.resetting; var initalizeGpgHome = TestHelper.initalizeGpgHome; var removeGpgHome = TestHelper.removeGpgHome; function withEnvironment(vals, f) { var environment = Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsIEnvironment); var oldVals = {}; for (let key in vals) { oldVals[key] = environment.get(key); environment.set(key, vals[key]); } try { return f(environment); } finally { for (let key in oldVals) { environment.set(key, oldVals[key]); } } } function withTestGpgHome(f) { return function() { const homedir = initalizeGpgHome(); try { f(); } finally { removeGpgHome(homedir); } }; } /** * Create a test account called Enigmail Unit Test with 3 identities: * - user1@enigmail-test.net - uses a specific key ID * - user2@enigmail-test.net - determine key be Email addresses * - user3@enigmail-test.net - Enigmail disabled * - user4@enigmail-test.net - determine key be Email addresses */ function setupTestAccounts() { const UNITTEST_ACCT_NAME = "Enigmail Unit Test"; const Cc = Components.classes; const Ci = Components.interfaces; // sanity check let accountManager = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); function reportError() { return "Your profile is not set up correctly for Enigmail Unit Tests\n" + "Please ensure that your profile contains exactly one Account of type POP3.\n" + "The account name must be set to '" + UNITTEST_ACCT_NAME + "'.\n" + "Alternatively, you can simply delete all accounts except for the Local Folders\n"; } function setIdentityData(ac, idNumber, idName, fullName, email, useEnigmail, keyId) { let id; if (ac.identities.length < idNumber - 1) throw "error - cannot add Identity with gaps"; else if (ac.identities.length === idNumber - 1) { id = accountManager.createIdentity(); ac.addIdentity(id); } else { id = ac.identities.queryElementAt(idNumber - 1, Ci.nsIMsgIdentity); } id.identityName = idName; id.fullName = fullName; id.email = email; id.composeHtml = true; id.setBoolAttribute("enablePgp", useEnigmail); if (keyId) { id.setIntAttribute("pgpKeyMode", 1); id.setCharAttribute("pgpkeyId", keyId); } } function setupAccount(ac) { let is = ac.incomingServer; is.downloadOnBiff = false; is.doBiff = false; is.performingBiff = false; is.loginAtStartUp = false; setIdentityData(ac, 1, "Enigmail Unit Test 1", "John Doe I.", "user1@enigmail-test.net", true, "ABCDEF0123456789"); setIdentityData(ac, 2, "Enigmail Unit Test 2", "John Doe II.", "user2@enigmail-test.net", true); setIdentityData(ac, 3, "Enigmail Unit Test 3", "John Doe III.", "user3@enigmail-test.net", false); setIdentityData(ac, 4, "Enigmail Unit Test 4", "John Doe IV.", "user4@enigmail-test.net", true); } for (let acct = 0; acct < accountManager.accounts.length; acct++) { let ac = accountManager.accounts.queryElementAt(acct, Ci.nsIMsgAccount); if (ac.incomingServer.type !== "none") { if (ac.incomingServer.type !== "pop3" || ac.incomingServer.prettyName !== UNITTEST_ACCT_NAME) { throw reportError(); } } } let configured = 0; // try to configure existing account for (let acct = 0; acct < accountManager.accounts.length; acct++) { let ac = accountManager.accounts.queryElementAt(acct, Ci.nsIMsgAccount); if (ac.incomingServer.type !== "none") { setupAccount(ac); ++configured; } } // if no account existed, create new account if (configured === 0) { let ac = accountManager.createAccount(); let is = accountManager.createIncomingServer("dummy", "localhost", "pop3"); is.prettyName = UNITTEST_ACCT_NAME; ac.incomingServer = is; setupAccount(ac); } } Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ function withEnigmail(f) { return function() { try { const enigmail = Components.classes["@mozdev.org/enigmail/enigmail;1"]. createInstance(Components.interfaces.nsIEnigmail); const window = JSUnit.createStubWindow(); enigmail.initialize(window, ""); return f(EnigmailCore.getEnigmailService(), window); } finally { EnigmailCore.setEnigmailService(null); } }; } CustomAssert.registerExtraAssertionsOn(Assert); enigmail/package/time.jsm000066400000000000000000000031571266701624400157250ustar00rootroot00000000000000/*global Components: false, EnigmailLocale: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailTime"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/locale.jsm"); const DATE_FORMAT_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1"; const EnigmailTime = { /** * Transform a Unix-Timestamp to a human-readable date/time string * * @dateNum: Number - Unix timestamp * @withDate: Boolean - if true, include the date in the output * @withTime: Boolean - if true, include the time in the output * * @return: String - formatted date/time string */ getDateTime: function(dateNum, withDate, withTime) { if (dateNum && dateNum !== 0) { let dat = new Date(dateNum * 1000); let appLocale = EnigmailLocale.get(); let dateTimeFormat = Cc[DATE_FORMAT_CONTRACTID].getService(Ci.nsIScriptableDateFormat); let dateFormat = (withDate ? dateTimeFormat.dateFormatShort : dateTimeFormat.dateFormatNone); let timeFormat = (withTime ? dateTimeFormat.timeFormatNoSeconds : dateTimeFormat.timeFormatNone); return dateTimeFormat.FormatDateTime(appLocale.getCategory("NSILOCALE_TIME"), dateFormat, timeFormat, dat.getFullYear(), dat.getMonth() + 1, dat.getDate(), dat.getHours(), dat.getMinutes(), 0); } else { return ""; } } }; enigmail/package/timer.jsm000066400000000000000000000017531266701624400161070ustar00rootroot00000000000000/*global Components: false, EnigmailLog: false, EnigmailPrefs: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailTimer"]; const Cc = Components.classes; const Ci = Components.interfaces; const EnigmailTimer = { /** * wait a defined number of miliseconds, then call a callback function * asynchronously * * @callbackFunction: Function - any function specification * @sleepTimeMs: Number - optional number of miliseconds to delay * (0 if not specified) */ setTimeout: function(callbackFunction, sleepTimeMs) { var timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); timer.initWithCallback(callbackFunction, sleepTimeMs || 0, Ci.nsITimer.TYPE_ONE_SHOT); return timer; } }; enigmail/package/trust.jsm000066400000000000000000000071361266701624400161510ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailTrust"]; Components.utils.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ // trust flags according to GPG documentation: // - http://www.gnupg.org/documentation/manuals/gnupg.pdf // - sources: doc/DETAILS // In the order of trustworthy: // --------------------------------------------------------- // i = The key is invalid (e.g. due to a missing self-signature) // n = The key is not valid / Never trust this key // d/D = The key has been disabled // r = The key has been revoked // e = The key has expired // g = group (???) // --------------------------------------------------------- // ? = INTERNAL VALUE to separate invalid from unknown keys // see validKeysForAllRecipients() in enigmailMsgComposeHelper.js // --------------------------------------------------------- // o = Unknown (this key is new to the system) // - = Unknown validity (i.e. no value assigned) // q = Undefined validity (Not enough information for calculation) // '-' and 'q' may safely be treated as the same value for most purposes // --------------------------------------------------------- // m = Marginally trusted // --------------------------------------------------------- // f = Fully trusted / valid key // u = Ultimately trusted // --------------------------------------------------------- const TRUSTLEVELS_SORTED = "indDreg?o-qmfu"; const TRUSTLEVELS_SORTED_IDX_UNKNOWN = 7; // index of '?' const EnigmailTrust = { /** * @return - |string| containing the order of trust/validity values */ trustLevelsSorted: function() { return TRUSTLEVELS_SORTED; }, /** * @return - |boolean| whether the flag is invalid (neither unknown nor valid) */ isInvalid: function(flag) { return TRUSTLEVELS_SORTED.indexOf(flag) < TRUSTLEVELS_SORTED_IDX_UNKNOWN; }, /** * return a merged value of trust level "key disabled" * * @keyObj - |object| containing the key data * * @return - |string| containing the trust value or "D" for disabled keys */ getTrustCode: function(keyObj) { if (keyObj.keyUseFor.indexOf("D") >= 0) { return "D"; } else { return keyObj.keyTrust; } }, getTrustLabel: function(trustCode) { let keyTrust; switch (trustCode) { case 'q': keyTrust = EnigmailLocale.getString("keyValid.unknown"); break; case 'i': keyTrust = EnigmailLocale.getString("keyValid.invalid"); break; case 'd': case 'D': keyTrust = EnigmailLocale.getString("keyValid.disabled"); break; case 'r': keyTrust = EnigmailLocale.getString("keyValid.revoked"); break; case 'e': keyTrust = EnigmailLocale.getString("keyValid.expired"); break; case 'n': keyTrust = EnigmailLocale.getString("keyTrust.untrusted"); break; case 'm': keyTrust = EnigmailLocale.getString("keyTrust.marginal"); break; case 'f': keyTrust = EnigmailLocale.getString("keyTrust.full"); break; case 'u': keyTrust = EnigmailLocale.getString("keyTrust.ultimate"); break; case 'g': keyTrust = EnigmailLocale.getString("keyTrust.group"); break; case '-': keyTrust = "-"; break; default: keyTrust = ""; } return keyTrust; } }; enigmail/package/uris.jsm000066400000000000000000000050521266701624400157450ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailURIs"]; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/data.jsm"); /*global EnigmailData: false */ const messageIdList = {}; const encryptedUris = []; const EnigmailURIs = { createMessageURI: function(originalUrl, contentType, contentCharset, contentData, persist) { EnigmailLog.DEBUG("enigmail.js: Enigmail.createMessageURI: " + originalUrl + ", " + contentType + ", " + contentCharset + "\n"); const messageId = "msg" + Math.floor(Math.random() * 1.0e9); messageIdList[messageId] = { originalUrl: originalUrl, contentType: contentType, contentCharset: contentCharset, contentData: contentData, persist: persist }; return "enigmail:message/" + messageId; }, deleteMessageURI: function(uri) { EnigmailLog.DEBUG("enigmail.js: Enigmail.deleteMessageURI: " + uri + "\n"); const messageId = EnigmailData.extractMessageId(uri); if (!messageId) { return false; } else { return (delete messageIdList[messageId]); } }, getMessageURI: function(messageId) { return messageIdList[messageId]; }, /* * remember the fact a URI is encrypted * * @param String msgUri * * @return null */ rememberEncryptedUri: function(uri) { EnigmailLog.DEBUG("uris.jsm: rememberEncryptedUri: uri=" + uri + "\n"); if (encryptedUris.indexOf(uri) < 0) { encryptedUris.push(uri); } }, /* * unremember the fact a URI is encrypted * * @param String msgUri * * @return null */ forgetEncryptedUri: function(uri) { EnigmailLog.DEBUG("uris.jsm: forgetEncryptedUri: uri=" + uri + "\n"); const pos = encryptedUris.indexOf(uri); if (pos >= 0) { encryptedUris.splice(pos, 1); } }, /* * determine if a URI was remebered as encrypted * * @param String msgUri * * @return: Boolean true if yes, false otherwise */ isEncryptedUri: function(uri) { EnigmailLog.DEBUG("uris.jsm: isEncryptedUri: uri=" + uri + "\n"); return encryptedUris.indexOf(uri) >= 0; }, registerOn: function(target) { target.createMessageURI = EnigmailURIs.createMessageURI; target.deleteMessageURI = EnigmailURIs.deleteMessageURI; } }; enigmail/package/verify.jsm000066400000000000000000000050621266701624400162700ustar00rootroot00000000000000/*global Components: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailVerifyAttachment"]; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/files.jsm"); /*global EnigmailFiles: false */ Cu.import("resource://enigmail/gpgAgent.jsm"); /*global EnigmailGpgAgent: false */ Cu.import("resource://enigmail/gpg.jsm"); /*global EnigmailGpg: false */ Cu.import("resource://enigmail/execution.jsm"); /*global EnigmailExecution: false */ Cu.import("resource://enigmail/time.jsm"); /*global EnigmailTime: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/decryption.jsm"); /*global EnigmailDecryption: false */ const Ci = Components.interfaces; const nsIEnigmail = Ci.nsIEnigmail; const EnigmailVerifyAttachment = { attachment: function(parent, verifyFile, sigFile, statusFlagsObj, errorMsgObj) { EnigmailLog.DEBUG("verify.jsm: EnigmailVerifyAttachment.attachment:\n"); const verifyFilePath = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePathReadonly(verifyFile.QueryInterface(Ci.nsIFile))); const sigFilePath = EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePathReadonly(sigFile.QueryInterface(Ci.nsIFile))); const args = EnigmailGpg.getStandardArgs(true). concat(["--verify", sigFilePath, verifyFilePath]); const listener = EnigmailExecution.newSimpleListener(); const proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, false, parent, listener, statusFlagsObj); if (!proc) { return -1; } proc.wait(); const retObj = {}; EnigmailDecryption.decryptMessageEnd(listener.stderrData, listener.exitCode, 1, true, true, nsIEnigmail.UI_INTERACTIVE, retObj); if (listener.exitCode === 0) { const detailArr = retObj.sigDetails.split(/ /); const dateTime = EnigmailTime.getDateTime(detailArr[2], true, true); const msg1 = retObj.errorMsg.split(/\n/)[0]; const msg2 = EnigmailLocale.getString("keyAndSigDate", ["0x" + retObj.keyId.substr(-8, 8), dateTime]); errorMsgObj.value = msg1 + "\n" + msg2; } else { errorMsgObj.value = retObj.errorMsg; } return listener.exitCode; }, registerOn: function(target) { target.verifyAttachment = EnigmailVerifyAttachment.attachment; } }; enigmail/package/windows.jsm000066400000000000000000000365241266701624400164650ustar00rootroot00000000000000/*global Components: false, escape: false */ /*jshint -W097 */ /* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; var EXPORTED_SYMBOLS = ["EnigmailWindows"]; const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; Cu.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ Cu.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ Cu.import("resource://enigmail/locale.jsm"); /*global EnigmailLocale: false */ Cu.import("resource://enigmail/keyRing.jsm"); /*global EnigmailKeyRing: false */ Cu.import("resource://enigmail/rules.jsm"); /*global EnigmailRules: false */ const APPSHELL_MEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1"; const APPSHSVC_CONTRACTID = "@mozilla.org/appshell/appShellService;1"; const LOCAL_FILE_CONTRACTID = "@mozilla.org/file/local;1"; const IOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1"; const EnigmailWindows = { /** * Display the OpenPGP setup wizard window * * win : nsIWindow - the parent window * skipIntro: Boolean - optional, if true, skip the introduction page * * no return value */ openSetupWizard: function(win, skipIntro) { let param = ""; if (skipIntro) { param = "?skipIntro=true"; } win.open("chrome://enigmail/content/enigmailSetupWizard.xul" + param, "", "chrome,centerscreen,resizable"); }, /** * Open a window, or focus it if it is already open * * @winName : String - name of the window; used to identify if it is already open * @spec : String - window URL (e.g. chrome://enigmail/content/test.xul) * @winOptions: String - window options as defined in nsIWindow.open * @optObj : any - an Object, Array, String, etc. that is passed as parameter * to the window */ openWin: function(winName, spec, winOptions, optObj) { var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); var winEnum = windowManager.getEnumerator(null); var recentWin = null; while (winEnum.hasMoreElements() && !recentWin) { var thisWin = winEnum.getNext(); if (thisWin.location.href == spec) { recentWin = thisWin; break; } if (winName && thisWin.name && thisWin.name == winName) { thisWin.focus(); break; } } if (recentWin) { recentWin.focus(); } else { var appShellSvc = Cc[APPSHSVC_CONTRACTID].getService(Ci.nsIAppShellService); var domWin = appShellSvc.hiddenDOMWindow; try { domWin.open(spec, winName, "chrome," + winOptions, optObj); } catch (ex) { domWin = windowManager.getMostRecentWindow(null); domWin.open(spec, winName, "chrome," + winOptions, optObj); } } }, /** * Determine the best possible window to serve as parent window for dialogs. * * @return: nsIWindow object */ getBestParentWin: function() { var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); var bestFit = null; var winEnum = windowManager.getEnumerator(null); while (winEnum.hasMoreElements()) { var thisWin = winEnum.getNext(); if (thisWin.location.href.search(/\/messenger.xul$/) > 0) { bestFit = thisWin; } if (!bestFit && thisWin.location.href.search(/\/messengercompose.xul$/) > 0) { bestFit = thisWin; } } if (!bestFit) { winEnum = windowManager.getEnumerator(null); bestFit = winEnum.getNext(); } return bestFit; }, /** * Iterate through the frames of a window and return the first frame with a * matching name. * * @win: nsIWindow - XUL window to search * @frameName: String - name of the frame to seach * * @return: the frame object or null if not found */ getFrame: function(win, frameName) { EnigmailLog.DEBUG("enigmailCommon.jsm: getFrame: name=" + frameName + "\n"); for (var j = 0; j < win.frames.length; j++) { if (win.frames[j].name == frameName) { return win.frames[j]; } } return null; }, getMostRecentWindow: function() { var windowManager = Cc[APPSHELL_MEDIATOR_CONTRACTID].getService(Ci.nsIWindowMediator); return windowManager.getMostRecentWindow(null); }, /** * Display the key help window * * @source - |string| containing the name of the file to display * * no return value */ openHelpWindow: function(source) { EnigmailWindows.openWin("enigmail:help", "chrome://enigmail/content/enigmailHelp.xul?src=" + source, "centerscreen,resizable"); }, /** * Display the "About Enigmail" window * * no return value */ openAboutWindow: function() { EnigmailWindows.openWin("about:enigmail", "chrome://enigmail/content/enigmailAbout.xul", "resizable,centerscreen"); }, /** * Display the Per-Recipient Rules editor window * * no return value */ openRulesEditor: function() { EnigmailWindows.openWin("enigmail:rulesEditor", "chrome://enigmail/content/enigmailRulesEditor.xul", "dialog,centerscreen,resizable"); }, /** * Display the OpenPGP key manager window * * no return value */ openKeyManager: function(win) { EnigmailCore.getService(win); EnigmailWindows.openWin("enigmail:KeyManager", "chrome://enigmail/content/enigmailKeyManager.xul", "resizable"); }, /** * Display the key creation window * * no return value */ openKeyGen: function() { EnigmailWindows.openWin("enigmail:generateKey", "chrome://enigmail/content/enigmailKeygen.xul", "chrome,modal,resizable=yes"); }, /** * Display the card details window * * no return value */ openCardDetails: function() { EnigmailWindows.openWin("enigmail:cardDetails", "chrome://enigmail/content/enigmailCardDetails.xul", "centerscreen"); }, /** * Display the console log window * * @win - |object| holding the parent window for the dialog * * no return value */ openConsoleWindow: function() { EnigmailWindows.openWin("enigmail:console", "chrome://enigmail/content/enigmailConsole.xul", "resizable,centerscreen"); }, /** * Display the window for the debug log file * * @win - |object| holding the parent window for the dialog * * no return value */ openDebugLog: function(win) { EnigmailWindows.openWin("enigmail:logFile", "chrome://enigmail/content/enigmailViewFile.xul?viewLog=1&title=" + escape(EnigmailLocale.getString("debugLog.title")), "resizable,centerscreen"); }, /** * Display the preferences dialog * * @win - |object| holding the parent window for the dialog * @showBasic - |boolean| true if only the 1st page of the preferences window * should be displayed / false otherwise * @selectTab - |string| ID of the tab element (in XUL) to display when opening * * no return value */ openPrefWindow: function(win, showBasic, selectTab) { EnigmailLog.DEBUG("windows.js: openPrefWindow\n"); EnigmailCore.getService(win, true); // true: starting preferences dialog win.openDialog("chrome://enigmail/content/pref-enigmail.xul", "_blank", "chrome,resizable=yes", { 'showBasic': showBasic, 'clientType': 'thunderbird', 'selectTab': selectTab }); }, /** * Display the dialog for creating a new per-recipient rule * * @win - |object| holding the parent window for the dialog * @emailAddress - |string| containing the email address for the rule * * @return - always true */ createNewRule: function(win, emailAddress) { // make sure the rules database is loaded const enigmailSvc = EnigmailCore.getService(win); if (!enigmailSvc) { return false; } // open rule dialog EnigmailRules.getRulesData({}); const inputObj = { toAddress: "{" + emailAddress + "}", options: "", command: "add" }; win.openDialog("chrome://enigmail/content/enigmailSingleRcptSettings.xul", "", "dialog,modal,centerscreen,resizable", inputObj, {}); return true; }, /** * Display the dialog for changing the expiry date of one or several keys * * @win - |object| holding the parent window for the dialog * @userIdArr - |array| of |strings| containing the User IDs * @keyIdArr - |array| of |strings| containing the key IDs (eg. "0x12345678") to change * no return value */ editKeyExpiry: function(win, userIdArr, keyIdArr) { const inputObj = { keyId: keyIdArr, userId: userIdArr }; const resultObj = { refresh: false }; win.openDialog("chrome://enigmail/content/enigmailEditKeyExpiryDlg.xul", "", "dialog,modal,centerscreen,resizable", inputObj, resultObj); return resultObj.refresh; }, /** * Display the dialog for changing key trust of one or several keys * * @win - |object| holding the parent window for the dialog * @userIdArr - |array| of |strings| containing the User IDs * @keyIdArr - |array| of |strings| containing the key IDs (eg. "0x12345678") to change * no return value */ editKeyTrust: function(win, userIdArr, keyIdArr) { const inputObj = { keyId: keyIdArr, userId: userIdArr }; const resultObj = { refresh: false }; win.openDialog("chrome://enigmail/content/enigmailEditKeyTrustDlg.xul", "", "dialog,modal,centerscreen,resizable", inputObj, resultObj); return resultObj.refresh; }, /** * Display the dialog for signing a key * * @win - |object| holding the parent window for the dialog * @userId - |string| containing the User ID (for displaing in the dialog only) * @keyId - |string| containing the key ID (eg. "0x12345678") * no return value */ signKey: function(win, userId, keyId) { const inputObj = { keyId: keyId, userId: userId }; const resultObj = { refresh: false }; win.openDialog("chrome://enigmail/content/enigmailSignKeyDlg.xul", "", "dialog,modal,centerscreen,resizable", inputObj, resultObj); return resultObj.refresh; }, /** * Display the photo ID associated with a key * * @win - |object| holding the parent window for the dialog * @keyId - |string| containing the key ID (eg. "0x12345678") * @userId - |string| containing the User ID (for displaing in the dialog only) * @photoNumber - |number| UAT entry in the squence of appearance in the key listing, starting with 0 * no return value */ showPhoto: function(win, keyId, userId, photoNumber) { const enigmailSvc = EnigmailCore.getService(win); if (enigmailSvc) { if (!photoNumber) photoNumber = 0; if (keyId.search(/^0x/) < 0) { keyId = "0x" + keyId; } let exitCodeObj = {}; let photoFile = EnigmailKeyRing.getPhotoFile(keyId, photoNumber, exitCodeObj, {}); if (photoFile && exitCodeObj.value === 0) { if (!(photoFile.isFile() && photoFile.isReadable())) { EnigmailWindows.alert(win, EnigmailLocale.getString("error.photoPathNotReadable", photoFile.path)); } else { const photoUri = Cc[IOSERVICE_CONTRACTID].getService(Ci.nsIIOService). newFileURI(photoFile).spec; const argsObj = { photoUri: photoUri, userId: userId, keyId: keyId }; win.openDialog("chrome://enigmail/content/enigmailDispPhoto.xul", photoUri, "chrome,modal,resizable,dialog,centerscreen", argsObj); try { // delete the photo file photoFile.remove(false); } catch (ex) {} } } else { EnigmailWindows.alert(win, EnigmailLocale.getString("noPhotoAvailable")); } } }, /** * Display the OpenPGP Key Details window * * @win - |object| holding the parent window for the dialog * @keyId - |string| containing the key ID (eg. "0x12345678") * @refresh - |boolean| if true, cache is cleared and the key data is loaded from GnuPG * * no return value */ openKeyDetails: function(win, keyId, refresh) { const keyListObj = {}; keyId = keyId.replace(/^0x/, ""); if (refresh) { EnigmailKeyRing.clearCache(); } const inputObj = { keyId: keyId }; const resultObj = { refresh: false }; win.openDialog("chrome://enigmail/content/keyDetailsDlg.xul", "", "dialog,modal,centerscreen,resizable", inputObj, resultObj); if (resultObj.refresh) { EnigmailKeyRing.clearCache(); } }, /** * Display the dialog to search and/or download key(s) from a keyserver * * @win - |object| holding the parent window for the dialog * @inputObj - |object| with member searchList (|string| containing the keys to search) * @resultObj - |object| with member importedKeys (|number| containing the number of imporeted keys) * * no return value */ downloadKeys: function(win, inputObj, resultObj) { EnigmailLog.DEBUG("windows.jsm: downloadKeys: searchList=" + inputObj.searchList + "\n"); resultObj.importedKeys = 0; const ioService = Cc[IOSERVICE_CONTRACTID].getService(Ci.nsIIOService); if (ioService && ioService.offline) { EnigmailWindows.alert(win, EnigmailLocale.getString("needOnline")); return; } let valueObj = {}; if (inputObj.searchList) { valueObj = { keyId: "<" + inputObj.searchList.join("> <") + ">" }; } const keysrvObj = {}; if (inputObj.searchList && inputObj.autoKeyServer) { keysrvObj.value = inputObj.autoKeyServer; } else { win.openDialog("chrome://enigmail/content/enigmailKeyserverDlg.xul", "", "dialog,modal,centerscreen", valueObj, keysrvObj); } if (!keysrvObj.value) { return; } inputObj.keyserver = keysrvObj.value; if (!inputObj.searchList) { const searchval = keysrvObj.email. replace(/^(\s*)(.*)/, "$2"). replace(/\s+$/, ""); // trim spaces // special handling to convert fingerprints with spaces into fingerprint without spaces if (searchval.length == 49 && searchval.match(/^[0-9a-fA-F ]*$/) && searchval[4] == ' ' && searchval[9] == ' ' && searchval[14] == ' ' && searchval[19] == ' ' && searchval[24] == ' ' && searchval[29] == ' ' && searchval[34] == ' ' && searchval[39] == ' ' && searchval[44] == ' ') { inputObj.searchList = ["0x" + searchval.replace(/ /g, "")]; } else if (searchval.length == 40 && searchval.match(/^[0-9a-fA-F ]*$/)) { inputObj.searchList = ["0x" + searchval]; } else if (searchval.length == 8 && searchval.match(/^[0-9a-fA-F]*$/)) { // special handling to add the required leading 0x when searching for keys inputObj.searchList = ["0x" + searchval]; } else if (searchval.length == 16 && searchval.match(/^[0-9a-fA-F]*$/)) { inputObj.searchList = ["0x" + searchval]; } else { inputObj.searchList = searchval.split(/[,; ]+/); } } win.openDialog("chrome://enigmail/content/enigmailSearchKey.xul", "", "dialog,modal,centerscreen", inputObj, resultObj); } }; enigmail/provisioning/000077500000000000000000000000001266701624400154015ustar00rootroot00000000000000enigmail/provisioning/Dockerfile000066400000000000000000000022401266701624400173710ustar00rootroot00000000000000# # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # FROM ubuntu RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y zip RUN apt-get install -y wget RUN apt-get install -y xvfb RUN apt-get install -y thunderbird RUN apt-get install -y gnupg2 RUN apt-get install -y make RUN apt-get install -y python RUN apt-get install -y gcc RUN apt-get install -y psmisc RUN apt-get install -y language-pack-en-base RUN apt-get install -y mime-support RUN apt-get install -y rng-tools RUN apt-get install -y haveged RUN wget -O /tmp/jsunit-0.1.xpi https://www.enigmail.net/jsunit/jsunit-0.1.xpi RUN rm -rf /usr/lib/thunderbird-addons/extensions/jsunit@enigmail.net RUN unzip /tmp/jsunit-0.1.xpi -d /usr/lib/thunderbird-addons/extensions/jsunit@enigmail.net RUN rm -rf '/usr/lib/thunderbird-addons/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}' RUN echo "/enigmail-src/build/dist" > '/usr/lib/thunderbird-addons/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}' WORKDIR /enigmail-src ENV LC_CTYPE en_US.UTF-8 ENV LANG en_US.UTF-8 enigmail/provisioning/README.md000066400000000000000000000052051266701624400166620ustar00rootroot00000000000000# enigmail-provisioning Contains provisioning scripts for developing Enigmail, for Vagrant and Docker If you have problems with permissions on the shared directory, this incantation is useful: chcon -Rt svirt_sandbox_file_t $DIR ## Should I setup with Docker or Vagrant? [Docker](https://www.docker.com) is a linux only virtual environment tool, which means it is easier to setup on a linux host. Mac OS X and Windows hosts will require the setup of a linux virtual machine for Docker to work because it is based on [LinuX Containers (LxC)](https://linuxcontainers.org). Docker’s virtual environments are light weight versions of virtual machines. They aren’t distinct virtual computers with their own processors and hardware emulation. As a result, virtual environments place only a little extra load on the system. On the other hand, Docker’s isolation is not as good as a full virtual machine’s. Docker allows you to quickly create a specific, semi-isolated environment for short lived testing and debugging. [Vagrant](https://www.vagrantup.com) is a wrapper on top of a full virtual machine. Vagrant is better when you require full isolation, and it is more convenient to use when you already have vagrant tools and you don’t have Docker on your non-linux host machine. ## Quick Setup With Docker Please follow your [OS specific instructions](https://docs.docker.com/installation/#installation) to install docker on your system. Once docker is installed... 1. [Create a docker group.](https://docs.docker.com/installation/ubuntulinux/#create-a-docker-group) Creating this group will keep you from having to use sudo each time you call the docker client. 2. Start the docker daemon. Those platform specific instructions should be in the docker docs after the installation steps. If you created the docker user group in step one, this will be the only step that requires `sudo`. 3. `./provisioning/docker-init.sh` 4. `./provisioning/docker-build.sh` 5. `./provisioning/docker-test.sh` ## Quick Setup With Vagrant Please follow your OS specific instructions to install the following tool dependencies on your system: * [Vagrant](https://www.vagrantup.com) * Vagrant compatible virtualization software (i.e. virtualbox, vmware...) Note: Virtualbox has default support on vagrant so if you use VMWare, AWS, etc. you must first install their respective vagrant plugins. Once the vagrant tools are installed... 1. `cd provisioning` 2. `vagrant up` - Call vagrant to grab an instance of Ubuntu and provision it 3. `vagrant ssh` - ssh into the Ubuntu machine 4. `cd /enigmail-src` - This will be the same directory as the main project folder. 5. `./build.sh ` 6. `./test.sh ` enigmail/provisioning/Vagrantfile000066400000000000000000000065611266701624400175760ustar00rootroot00000000000000# -*- mode: ruby -*- # vi: set ft=ruby : # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://atlas.hashicorp.com/search. config.vm.box = "ubuntu/trusty64" # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. # config.vm.box_check_update = false # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # config.vm.network "forwarded_port", guest: 80, host: 8080 # Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network "private_network", ip: "192.168.33.10" # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. # config.vm.network "public_network" # Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. config.vm.synced_folder "../", "/enigmail-src" config.ssh.forward_x11 = true # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: # # config.vm.provider "virtualbox" do |vb| # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on the VM: # vb.memory = "1024" # end # # View the documentation for the provider you are using for more # information on available options. # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies # such as FTP and Heroku are also available. See the documentation at # https://docs.vagrantup.com/v2/push/atlas.html for more information. # config.push.define "atlas" do |push| # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" # end config.vm.provider :virtualbox do |vb| vb.gui = false if ARGV[0] == "up" if ENV["VB_GUI"] == "true" then vb.gui = true else puts("[info] VB_GUI environment variable not set so running headless") end end end # Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. config.vm.provision "shell", path: "provision-vagrant.sh" end enigmail/provisioning/docker-build.sh000077500000000000000000000010531266701624400203030ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # if command -v realpath>/dev/null 2>&1; then CURRENT_FILE=`realpath "$0"` else CURRENT_FILE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/$(basename $0)" fi PROVISIONING_DIR=`dirname "$CURRENT_FILE"` ENIGMAIL_ROOT=`dirname "$PROVISIONING_DIR"` docker run -v $ENIGMAIL_ROOT:/enigmail-src -i -t enigmail-unit ./build.sh enigmail/provisioning/docker-init.sh000077500000000000000000000006311266701624400201500ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # CURRENT_FILE=`realpath "$0"` PROVISIONING_DIR=`dirname "$CURRENT_FILE"` ENIGMAIL_ROOT=`dirname "$PROVISIONING_DIR"` pushd . cd $PROVISIONING_DIR docker build -t enigmail-unit . popd enigmail/provisioning/docker-test.sh000077500000000000000000000010571266701624400201670ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # if command -v realpath>/dev/null 2>&1; then CURRENT_FILE=`realpath "$0"` else CURRENT_FILE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/$(basename $0)" fi PROVISIONING_DIR=`dirname "$CURRENT_FILE"` ENIGMAIL_ROOT=`dirname "$PROVISIONING_DIR"` docker run -v $ENIGMAIL_ROOT:/enigmail-src -i -t enigmail-unit ./test.sh "$@" enigmail/provisioning/provision-travis.sh000077500000000000000000000016771266701624400213110ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # export DEBIAN_FRONTEND=noninteractive echo "Provisioning ..." curl -s "http://git.fedorahosted.org/cgit/mailcap.git/plain/mime.types" > mime.types sudo cp mime.types /etc/mime.types sudo apt-get update sudo apt-get install -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" zip thunderbird xvfb gnupg2 #sudo apt-get upgrade -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" wget -O /tmp/jsunit-0.1.xpi https://www.enigmail.net/jsunit/jsunit-0.1.xpi sudo unzip /tmp/jsunit-0.1.xpi -d /usr/lib/thunderbird-addons/extensions/jsunit@enigmail.net sudo /bin/bash -c "echo $TRAVIS_BUILD_DIR/build/dist > /usr/lib/thunderbird-addons/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}" enigmail/provisioning/provision-vagrant.sh000066400000000000000000000016441266701624400214320ustar00rootroot00000000000000#!/usr/bin/env bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # echo "Provisioning ..." apt-get update apt-get install -y zip thunderbird xvfb gnupg2 apt-get install -y xfce4 virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 apt-get install -y ntp apt-get install -y rng-tools haveged apt-get upgrade -y wget -O /tmp/jsunit-0.1.xpi https://www.enigmail.net/jsunit/jsunit-0.1.xpi rm -rf /usr/lib/thunderbird-addons/extensions/jsunit@enigmail.net unzip /tmp/jsunit-0.1.xpi -d /usr/lib/thunderbird-addons/extensions/jsunit@enigmail.net rm -rf '/usr/lib/thunderbird-addons/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}' echo "/enigmail-src/build/dist" > '/usr/lib/thunderbird-addons/extensions/{847b3a00-7ab1-11d4-8f02-006008948af5}' touch '/enigmail-src' enigmail/public/000077500000000000000000000000001266701624400141315ustar00rootroot00000000000000enigmail/public/Makefile000066400000000000000000000011711266701624400155710ustar00rootroot00000000000000# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. DEPTH = .. include $(DEPTH)/config/autoconf.mk XPIDLSRCS = \ nsIEnigmail.idl \ nsIEnigMsgCompFields.idl \ nsIEnigMimeService.idl \ nsIEnigMimeHeaderSink.idl \ nsIEnigMimeReadCallback.idl all: ../util/xptgen $(PYTHON) ./external $(DEPTH)/util $(DIST) $(XPIDLSRCS) clean: rm -rf _xpidlgen rm -f $(DEPTH)/build/components/enigmail.xpt enigmail/public/external/000077500000000000000000000000001266701624400157535ustar00rootroot00000000000000enigmail/public/external/nsIChannel.idl000066400000000000000000000315031266701624400204710ustar00rootroot00000000000000/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsIRequest.idl" interface nsIURI; interface nsIInterfaceRequestor; interface nsIInputStream; interface nsIStreamListener; /** * The nsIChannel interface allows clients to construct "GET" requests for * specific protocols, and manage them in a uniform way. Once a channel is * created (via nsIIOService::newChannel), parameters for that request may * be set by using the channel attributes, or by QI'ing to a subclass of * nsIChannel for protocol-specific parameters. Then, the URI can be fetched * by calling nsIChannel::open or nsIChannel::asyncOpen. * * After a request has been completed, the channel is still valid for accessing * protocol-specific results. For example, QI'ing to nsIHttpChannel allows * response headers to be retrieved for the corresponding http transaction. * * This interface must be used only from the XPCOM main thread. */ [scriptable, uuid(2a8a7237-c1e2-4de7-b669-2002af29e42d)] interface nsIChannel : nsIRequest { /** * The original URI used to construct the channel. This is used in * the case of a redirect or URI "resolution" (e.g. resolving a * resource: URI to a file: URI) so that the original pre-redirect * URI can still be obtained. This is never null. Attempts to * set it to null must throw. * * NOTE: this is distinctly different from the http Referer (referring URI), * which is typically the page that contained the original URI (accessible * from nsIHttpChannel). */ attribute nsIURI originalURI; /** * The URI corresponding to the channel. Its value is immutable. */ readonly attribute nsIURI URI; /** * The owner, corresponding to the entity that is responsible for this * channel. Used by the security manager to grant or deny privileges to * mobile code loaded from this channel. * * NOTE: this is a strong reference to the owner, so if the owner is also * holding a strong reference to the channel, care must be taken to * explicitly drop its reference to the channel. */ attribute nsISupports owner; /** * The notification callbacks for the channel. This is set by clients, who * wish to provide a means to receive progress, status and protocol-specific * notifications. If this value is NULL, the channel implementation may use * the notification callbacks from its load group. The channel may also * query the notification callbacks from its load group if its notification * callbacks do not supply the requested interface. * * Interfaces commonly requested include: nsIProgressEventSink, nsIPrompt, * and nsIAuthPrompt/nsIAuthPrompt2. * * When the channel is done, it must not continue holding references to * this object. * * NOTE: A channel implementation should take care when "caching" an * interface pointer queried from its notification callbacks. If the * notification callbacks are changed, then a cached interface pointer may * become invalid and may therefore need to be re-queried. */ attribute nsIInterfaceRequestor notificationCallbacks; /** * Transport-level security information (if any) corresponding to the channel. */ readonly attribute nsISupports securityInfo; /** * The MIME type of the channel's content if available. * * NOTE: the content type can often be wrongly specified (e.g., wrong file * extension, wrong MIME type, wrong document type stored on a server, etc.), * and the caller most likely wants to verify with the actual data. * * Setting contentType before the channel has been opened provides a hint * to the channel as to what the MIME type is. The channel may ignore this * hint in deciding on the actual MIME type that it will report. * * Setting contentType after onStartRequest has been fired or after open() * is called will override the type determined by the channel. * * Setting contentType between the time that asyncOpen() is called and the * time when onStartRequest is fired has undefined behavior at this time. * * The value of the contentType attribute is a lowercase string. A value * assigned to this attribute will be parsed and normalized as follows: * 1- any parameters (delimited with a ';') will be stripped. * 2- if a charset parameter is given, then its value will replace the * the contentCharset attribute of the channel. * 3- the stripped contentType will be lowercased. * Any implementation of nsIChannel must follow these rules. */ attribute ACString contentType; /** * The character set of the channel's content if available and if applicable. * This attribute only applies to textual data. * * The value of the contentCharset attribute is a mixedcase string. */ attribute ACString contentCharset; /** * The length of the data associated with the channel if available. A value * of -1 indicates that the content length is unknown. Note that this is a * 64-bit value and obsoletes the "content-length" property used on some * channels. */ attribute int64_t contentLength; /** * Synchronously open the channel. * * @return blocking input stream to the channel's data. * * NOTE: nsIChannel implementations are not required to implement this * method. Moreover, since this method may block the calling thread, it * should not be called on a thread that processes UI events. Like any * other nsIChannel method it must not be called on any thread other * than the XPCOM main thread. * * NOTE: Implementations should throw NS_ERROR_IN_PROGRESS if the channel * is reopened. */ nsIInputStream open(); /** * Asynchronously open this channel. Data is fed to the specified stream * listener as it becomes available. The stream listener's methods are * called on the thread that calls asyncOpen and are not called until * after asyncOpen returns. If asyncOpen returns successfully, the * channel promises to call at least onStartRequest and onStopRequest. * * If the nsIRequest object passed to the stream listener's methods is not * this channel, an appropriate onChannelRedirect notification needs to be * sent to the notification callbacks before onStartRequest is called. * Once onStartRequest is called, all following method calls on aListener * will get the request that was passed to onStartRequest. * * If the channel's and loadgroup's notification callbacks do not provide * an nsIChannelEventSink when onChannelRedirect would be called, that's * equivalent to having called onChannelRedirect. * * If asyncOpen returns successfully, the channel is responsible for * keeping itself alive until it has called onStopRequest on aListener or * called onChannelRedirect. * * Implementations are allowed to synchronously add themselves to the * associated load group (if any). * * NOTE: Implementations should throw NS_ERROR_ALREADY_OPENED if the * channel is reopened. * * @param aListener the nsIStreamListener implementation * @param aContext an opaque parameter forwarded to aListener's methods * @see nsIChannelEventSink for onChannelRedirect */ void asyncOpen(in nsIStreamListener aListener, in nsISupports aContext); /************************************************************************** * Channel specific load flags: * * Bits 23-31 are reserved for future use by this interface or one of its * derivatives (e.g., see nsICachingChannel). */ /** * Set (e.g., by the docshell) to indicate whether or not the channel * corresponds to a document URI. */ const unsigned long LOAD_DOCUMENT_URI = 1 << 16; /** * If the end consumer for this load has been retargeted after discovering * its content, this flag will be set: */ const unsigned long LOAD_RETARGETED_DOCUMENT_URI = 1 << 17; /** * This flag is set to indicate that this channel is replacing another * channel. This means that: * * 1) the stream listener this channel will be notifying was initially * passed to the asyncOpen method of some other channel * * and * * 2) this channel's URI is a better identifier of the resource being * accessed than this channel's originalURI. * * This flag can be set, for example, for redirects or for cases when a * single channel has multiple parts to it (and thus can follow * onStopRequest with another onStartRequest/onStopRequest pair, each pair * for a different request). */ const unsigned long LOAD_REPLACE = 1 << 18; /** * Set (e.g., by the docshell) to indicate whether or not the channel * corresponds to an initial document URI load (e.g., link click). */ const unsigned long LOAD_INITIAL_DOCUMENT_URI = 1 << 19; /** * Set (e.g., by the URILoader) to indicate whether or not the end consumer * for this load has been determined. */ const unsigned long LOAD_TARGETED = 1 << 20; /** * If this flag is set, the channel should call the content sniffers as * described in nsNetCID.h about NS_CONTENT_SNIFFER_CATEGORY. * * Note: Channels may ignore this flag; however, new channel implementations * should only do so with good reason. */ const unsigned long LOAD_CALL_CONTENT_SNIFFERS = 1 << 21; /** * This flag tells the channel to use URI classifier service to check * the URI when opening the channel. */ const unsigned long LOAD_CLASSIFY_URI = 1 << 22; /** * If this flag is set and a server's response is Content-Type * application/octet-steam, the server's Content-Type will be ignored and * the channel content will be sniffed as though no Content-Type had been * passed. */ const unsigned long LOAD_TREAT_APPLICATION_OCTET_STREAM_AS_UNKNOWN = 1 << 23; /** * Set to let explicitely provided credentials be used over credentials * we have cached previously. In some situations like form login using HTTP * auth via XMLHttpRequest we need to let consumers override the cached * credentials explicitely. For form login 403 response instead of 401 is * usually used to prevent an auth dialog. But any code other then 401/7 * will leave original credentials in the cache and there is then no way * to override them for the same user name. */ const unsigned long LOAD_EXPLICIT_CREDENTIALS = 1 << 24; /** * Access to the type implied or stated by the Content-Disposition header * if available and if applicable. This allows determining inline versus * attachment. * * Setting contentDisposition provides a hint to the channel about the * disposition. If a normal Content-Disposition header is present its * value will always be used. If it is missing the hinted value will * be used if set. * * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either * doesn't exist for this type of channel or is empty, and return * DISPOSITION_ATTACHMENT if an invalid/noncompliant value is present. */ attribute unsigned long contentDisposition; const unsigned long DISPOSITION_INLINE = 0; const unsigned long DISPOSITION_ATTACHMENT = 1; /** * Access to the filename portion of the Content-Disposition header if * available and if applicable. This allows getting the preferred filename * without having to parse it out yourself. * * Setting contentDispositionFilename provides a hint to the channel about * the disposition. If a normal Content-Disposition header is present its * value will always be used. If it is missing the hinted value will be * used if set. * * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header doesn't * exist for this type of channel, if the header is empty, if the header * doesn't contain a filename portion, or the value of the filename * attribute is empty/missing. */ attribute AString contentDispositionFilename; /** * Access to the raw Content-Disposition header if available and applicable. * * Implementations should throw NS_ERROR_NOT_AVAILABLE if the header either * doesn't exist for this type of channel or is empty. * * @deprecated Use contentDisposition/contentDispositionFilename instead. */ readonly attribute ACString contentDispositionHeader; }; enigmail/public/external/nsIDOMDocument.idl000066400000000000000000000374711266701624400212510ustar00rootroot00000000000000/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsIDOMNode.idl" %{ C++ #include "jspubtd.h" %} interface nsIDOMNodeIterator; interface nsIDOMNodeFilter; interface nsIDOMTreeWalker; interface nsIDOMLocation; /** * The nsIDOMDocument interface represents the entire HTML or XML document. * Conceptually, it is the root of the document tree, and provides the * primary access to the document's data. * Since elements, text nodes, comments, processing instructions, etc. * cannot exist outside the context of a Document, the nsIDOMDocument * interface also contains the factory methods needed to create these * objects. * * For more information on this interface please see * http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html */ [scriptable, uuid(aa4b59de-462a-4f61-abd9-4232fef3dacc)] interface nsIDOMDocument : nsIDOMNode { readonly attribute nsIDOMDocumentType doctype; readonly attribute nsIDOMDOMImplementation implementation; readonly attribute nsIDOMElement documentElement; nsIDOMElement createElement([Null(Stringify)] in DOMString tagName) raises(DOMException); nsIDOMDocumentFragment createDocumentFragment(); nsIDOMText createTextNode(in DOMString data); nsIDOMComment createComment(in DOMString data); nsIDOMCDATASection createCDATASection(in DOMString data) raises(DOMException); nsIDOMProcessingInstruction createProcessingInstruction(in DOMString target, in DOMString data) raises(DOMException); nsIDOMAttr createAttribute(in DOMString name) raises(DOMException); nsIDOMNodeList getElementsByTagName(in DOMString tagname); // Introduced in DOM Level 2: [optional_argc] nsIDOMNode importNode(in nsIDOMNode importedNode, [optional] in boolean deep) raises(DOMException); // Introduced in DOM Level 2: nsIDOMElement createElementNS(in DOMString namespaceURI, [Null(Stringify)] in DOMString qualifiedName) raises(DOMException); // Introduced in DOM Level 2: nsIDOMAttr createAttributeNS(in DOMString namespaceURI, in DOMString qualifiedName) raises(DOMException); // Introduced in DOM Level 2: nsIDOMNodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName); // Introduced in DOM Level 2: nsIDOMElement getElementById(in DOMString elementId); // Introduced in DOM Level 3: readonly attribute DOMString inputEncoding; // Introduced in DOM Level 3: readonly attribute DOMString documentURI; // Alias introduced for all documents in recent DOM standards readonly attribute DOMString URL; // Introduced in DOM Level 3: nsIDOMNode adoptNode(in nsIDOMNode source) raises(DOMException); /** * Create a range * * @see http://html5.org/specs/dom-range.html#dom-document-createrange */ nsIDOMRange createRange(); [optional_argc] nsIDOMNodeIterator createNodeIterator(in nsIDOMNode root, [optional] in unsigned long whatToShow, [optional] in nsIDOMNodeFilter filter) raises(DOMException); [optional_argc] nsIDOMTreeWalker createTreeWalker(in nsIDOMNode root, [optional] in unsigned long whatToShow, [optional] in nsIDOMNodeFilter filter) raises(DOMException); nsIDOMEvent createEvent(in DOMString eventType) raises(DOMException); // HTML /** * The window associated with this document. * * @see */ readonly attribute nsIDOMWindow defaultView; /** * @see */ readonly attribute DOMString characterSet; /** * @see */ attribute DOMString dir; /** * @see */ readonly attribute nsIDOMLocation location; /** * @see */ attribute DOMString title; /** * @see */ readonly attribute DOMString readyState; /** * @see */ readonly attribute DOMString lastModified; /** * @see */ readonly attribute DOMString referrer; /** * @see */ boolean hasFocus(); /** * @see */ readonly attribute nsIDOMElement activeElement; /** * Retrieve elements matching all classes listed in a * space-separated string. * * @see */ nsIDOMNodeList getElementsByClassName(in DOMString classes); // CSSOM /** * @see */ readonly attribute nsIDOMStyleSheetList styleSheets; /** * This attribute must return the preferred style sheet set as set by the * author. It is determined from the order of style sheet declarations and * the Default-Style HTTP headers, as eventually defined elsewhere in the Web * Apps 1.0 specification. If there is no preferred style sheet set, this * attribute must return the empty string. The case of this attribute must * exactly match the case given by the author where the preferred style sheet * is specified or implied. This attribute must never return null. * * @see */ readonly attribute DOMString preferredStyleSheetSet; /** * This attribute indicates which style sheet set is in use. This attribute * is live; changing the disabled attribute on style sheets directly will * change the value of this attribute. * * If all the sheets that are enabled and have a title have the same title * (by case-sensitive comparisons) then the value of this attribute must be * exactly equal to the title of the first enabled style sheet with a title * in the styleSheets list. Otherwise, if style sheets from different sets * are enabled, then the return value must be null (there is no way to * determine what the currently selected style sheet set is in those * conditions). Otherwise, either all style sheets that have a title are * disabled, or there are no alternate style sheets, and * selectedStyleSheetSet must return the empty string. * * Setting this attribute to the null value must have no effect. * * Setting this attribute to a non-null value must call * enableStyleSheetsForSet() with that value as the function's argument, and * set lastStyleSheetSet to that value. * * From the DOM's perspective, all views have the same * selectedStyleSheetSet. If a UA supports multiple views with different * selected alternate style sheets, then this attribute (and the StyleSheet * interface's disabled attribute) must return and set the value for the * default view. * * @see */ [binaryname(MozSelectedStyleSheetSet)] attribute DOMString selectedStyleSheetSet; /* * This property must initially have the value null. Its value changes when * the selectedStyleSheetSet attribute is set. * * @see */ readonly attribute DOMString lastStyleSheetSet; /** * This must return the live list of the currently available style sheet * sets. This list is constructed by enumerating all the style sheets for * this document available to the implementation, in the order they are * listed in the styleSheets attribute, adding the title of each style sheet * with a title to the list, avoiding duplicates by dropping titles that * match (case-sensitively) titles that have already been added to the * list. * * @see */ readonly attribute nsIDOMDOMStringList styleSheetSets; /** * Calling this method must change the disabled attribute on each StyleSheet * object with a title attribute with a length greater than 0 in the * styleSheets attribute, so that all those whose title matches the name * argument are enabled, and all others are disabled. Title matches must be * case-sensitive. Calling this method with the empty string disables all * alternate and preferred style sheets (but does not change the state of * persistent style sheets, that is those with no title attribute). * * Calling this method with a null value must have no effect. * * Style sheets that do not have a title are never affected by this * method. This method does not change the values of the lastStyleSheetSet or * preferredStyleSheetSet attributes. * * @see */ [binaryname(MozEnableStyleSheetsForSet)] void enableStyleSheetsForSet(in DOMString name); // CSSOM-View /** * Returns the element from the caller's document at the given point, * relative to the upper-left-most point in the (possibly scrolled) * window or frame. * * If the element at the given point belongs to another document (such as * an iframe's subdocument), the element in the calling document's DOM * (e.g. the iframe) is returned. If the element at the given point is * anonymous or XBL generated content, such as a textbox's scrollbars, then * the first non-anonymous parent element (that is, the textbox) is returned. * * This method returns null if either coordinate is negative, or if the * specified point lies outside the visible bounds of the document. * * Callers from XUL documents should wait until the onload event has fired * before calling this method. * * @see */ nsIDOMElement elementFromPoint(in float x, in float y); // Mozilla extensions /** * @see */ readonly attribute DOMString contentType; /** * True if this document is synthetic : stand alone image, video, audio file, * etc. */ readonly attribute boolean mozSyntheticDocument; /** * Returns the script element whose script is currently being processed. * * @see */ readonly attribute nsIDOMElement currentScript; /** * Release the current mouse capture if it is on an element within this * document. * * @see */ void releaseCapture(); /** * Use the given DOM element as the source image of target |-moz-element()|. * * This function introduces a new special ID (called "image element ID"), * which is only used by |-moz-element()|, and associates it with the given * DOM element. Image elements ID's have the higher precedence than general * HTML id's, so if |document.mozSetImageElement(, )| is called, * |-moz-element(#)| uses || as the source image even if there * is another element with id attribute = ||. To unregister an image * element ID ||, call |document.mozSetImageElement(, null)|. * * Example: * *
* * @param aImageElementId an image element ID to associate with * |aImageElement| * @param aImageElement a DOM element to be used as the source image of * |-moz-element(#aImageElementId)|. If this is null, the function will * unregister the image element ID |aImageElementId|. * * @see */ void mozSetImageElement(in DOMString aImageElementId, in nsIDOMElement aImageElement); /** * Element which is currently the full-screen element as per the DOM * full-screen api. * * @see */ readonly attribute nsIDOMElement mozFullScreenElement; /** * Causes the document to leave DOM full-screen mode, if it's in * full-screen mode, as per the DOM full-screen api. * * @see */ void mozCancelFullScreen(); /** * Denotes whether this document is in DOM full-screen mode, as per the DOM * full-screen api. * * @see */ readonly attribute boolean mozFullScreen; /** * Denotes whether the full-screen-api.enabled is true, no windowed * plugins are present, and all ancestor documents have the * allowfullscreen attribute set. * * @see */ readonly attribute boolean mozFullScreenEnabled; /** * The element to which the mouse pointer is locked, if any, as per the * DOM pointer lock api. * * @see */ readonly attribute nsIDOMElement mozPointerLockElement; /** * Retrieve the location of the caret position (DOM node and character * offset within that node), given a point. * * @param x Horizontal point at which to determine the caret position, in * page coordinates. * @param y Vertical point at which to determine the caret position, in * page coordinates. */ nsISupports /* CaretPosition */ caretPositionFromPoint(in float x, in float y); /** * Exit pointer is lock if locked, as per the DOM pointer lock api. * * @see */ void mozExitPointerLock(); /** * Visibility API implementation. */ readonly attribute boolean hidden; readonly attribute boolean mozHidden; readonly attribute DOMString visibilityState; readonly attribute DOMString mozVisibilityState; /** * Returns "BackCompat" if we're in quirks mode or "CSS1Compat" if we're in * strict mode. (XML documents are always in strict mode.) */ readonly attribute DOMString compatMode; /** * Return nodes that match a given CSS selector. * * @see */ nsIDOMElement querySelector([Null(Stringify)] in DOMString selectors); nsIDOMNodeList querySelectorAll([Null(Stringify)] in DOMString selectors); }; enigmail/public/external/nsIDOMNode.idl000066400000000000000000000116711266701624400203520ustar00rootroot00000000000000/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "domstubs.idl" interface nsIVariant; interface nsIDOMUserDataHandler; /** * The nsIDOMNode interface is the primary datatype for the entire * Document Object Model. * It represents a single node in the document tree. * * For more information on this interface please see * http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html */ [scriptable, uuid(56545150-a001-484e-9ed4-cb319eebd7b3)] interface nsIDOMNode : nsISupports { const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2; const unsigned short TEXT_NODE = 3; const unsigned short CDATA_SECTION_NODE = 4; const unsigned short ENTITY_REFERENCE_NODE = 5; const unsigned short ENTITY_NODE = 6; const unsigned short PROCESSING_INSTRUCTION_NODE = 7; const unsigned short COMMENT_NODE = 8; const unsigned short DOCUMENT_NODE = 9; const unsigned short DOCUMENT_TYPE_NODE = 10; const unsigned short DOCUMENT_FRAGMENT_NODE = 11; const unsigned short NOTATION_NODE = 12; readonly attribute DOMString nodeName; attribute DOMString nodeValue; // raises(DOMException) on setting // raises(DOMException) on retrieval readonly attribute unsigned short nodeType; readonly attribute nsIDOMNode parentNode; readonly attribute nsIDOMElement parentElement; readonly attribute nsIDOMNodeList childNodes; readonly attribute nsIDOMNode firstChild; readonly attribute nsIDOMNode lastChild; readonly attribute nsIDOMNode previousSibling; readonly attribute nsIDOMNode nextSibling; // Modified in DOM Level 2: readonly attribute nsIDOMDocument ownerDocument; nsIDOMNode insertBefore(in nsIDOMNode newChild, in nsIDOMNode refChild) raises(DOMException); nsIDOMNode replaceChild(in nsIDOMNode newChild, in nsIDOMNode oldChild) raises(DOMException); nsIDOMNode removeChild(in nsIDOMNode oldChild) raises(DOMException); nsIDOMNode appendChild(in nsIDOMNode newChild) raises(DOMException); boolean hasChildNodes(); // Modified in DOM Level 4: [optional_argc] nsIDOMNode cloneNode([optional] in boolean deep); // Modified in DOM Level 2: void normalize(); // Introduced in DOM Level 2: readonly attribute DOMString namespaceURI; // Modified in DOM Core readonly attribute DOMString prefix; // Introduced in DOM Level 2: readonly attribute DOMString localName; // Introduced in DOM Level 2: boolean hasAttributes(); // Introduced in DOM Level 3: // This uses a binaryname to avoid warnings due to name collision with // nsINode::GetBaseURI [binaryname(DOMBaseURI)] readonly attribute DOMString baseURI; // DocumentPosition const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01; const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02; const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04; const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08; const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10; const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; // Introduced in DOM Level 3: unsigned short compareDocumentPosition(in nsIDOMNode other) raises(DOMException); // Introduced in DOM Level 3: attribute DOMString textContent; // raises(DOMException) on setting // raises(DOMException) on retrieval // Introduced in DOM Level 3: DOMString lookupPrefix(in DOMString namespaceURI); // Introduced in DOM Level 3: boolean isDefaultNamespace(in DOMString namespaceURI); // Introduced in DOM Level 3: DOMString lookupNamespaceURI(in DOMString prefix); // Introduced in DOM Level 3: boolean isEqualNode(in nsIDOMNode arg); // Introduced in DOM Level 3: nsIVariant setUserData(in DOMString key, in nsIVariant data, in nsIDOMUserDataHandler handler); // Introduced in DOM Level 3: nsIVariant getUserData(in DOMString key); boolean contains(in nsIDOMNode aOther); }; enigmail/public/external/nsIDOMWindow.idl000066400000000000000000000431571266701624400207400ustar00rootroot00000000000000/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "domstubs.idl" interface nsIFrameRequestCallback; interface nsIControllers; interface nsIDOMBlob; interface nsIDOMLocation; interface nsIDOMMediaQueryList; interface nsIDOMOfflineResourceList; interface nsIDOMStorage; interface nsIPrompt; interface nsISelection; interface nsIVariant; /** * The nsIDOMWindow interface is the primary interface for a DOM * window object. It represents a single window object that may * contain child windows if the document in the window contains a * HTML frameset document or if the document contains iframe elements. * * @see */ [scriptable, uuid(b0ebb526-ed69-43c6-8242-b381a1fe79da)] interface nsIDOMWindow : nsISupports { // the current browsing context readonly attribute nsIDOMWindow window; /* [replaceable] self */ readonly attribute nsIDOMWindow self; /** * Accessor for the document in this window. */ readonly attribute nsIDOMDocument document; /** * Set/Get the name of this window. * * This attribute is "replaceable" in JavaScript */ attribute DOMString name; /* The setter that takes a string argument needs to be special cased! */ readonly attribute nsIDOMLocation location; readonly attribute nsISupports history; /* [replaceable] locationbar */ /* BarProp */ readonly attribute nsISupports locationbar; /* [replaceable] menubar */ /* BarProp */ readonly attribute nsISupports menubar; /* [replaceable] personalbar */ /* BarProp */ readonly attribute nsISupports personalbar; /** * Accessor for the object that controls whether or not scrollbars * are shown in this window. * * This attribute is "replaceable" in JavaScript */ /* BarProp */ readonly attribute nsISupports scrollbars; /* [replaceable] statusbar */ /* BarProp */ readonly attribute nsISupports statusbar; /* [replaceable] toolbar */ /* BarProp */ readonly attribute nsISupports toolbar; /* [replaceable] */ attribute DOMString status; void close(); void stop(); void focus(); void blur(); // other browsing contexts /* [replaceable] length */ readonly attribute unsigned long length; /** * |top| gets the root of the window hierarchy. * * This function does not cross chrome-content boundaries, so if this * window's parent is of a different type, |top| will return this window. * * When script reads the top property, we run GetScriptableTop, which * will not cross an