Browse Source

Merge branch 'master' into dev

Source commit: 668ede3558b7aed1137d5649b99c90ed8f29b8ac
Martin Prikryl 2 years ago
parent
commit
8ad3a8f667

+ 4 - 1
libs/openssl/Makefile

@@ -121,7 +121,7 @@ CRYPTOOBJ= \
     $(OBJ_D)\bn_err.obj $(OBJ_D)\bn_sqr.obj $(OBJ_D)\bn_asm.obj $(OBJ_D)\bn_recp.obj \
     $(OBJ_D)\bn_mont.obj $(OBJ_D)\bn_mpi.obj $(OBJ_D)\bn_exp2.obj $(OBJ_D)\bn_gf2m.obj \
     $(OBJ_D)\bn_nist.obj $(OBJ_D)\bn_depr.obj $(OBJ_D)\bn_const.obj $(OBJ_D)\bn_intern.obj \
-    $(OBJ_D)\bn_dh.obj $(OBJ_D)\bn_srp.obj \
+    $(OBJ_D)\bn_dh.obj $(OBJ_D)\bn_srp.obj $(OBJ_D)\rsa_sup_mul.obj \
     $(OBJ_D)\rsa_ossl.obj $(OBJ_D)\rsa_gen.obj $(OBJ_D)\rsa_lib.obj $(OBJ_D)\rsa_sign.obj \
     $(OBJ_D)\rsa_saos.obj $(OBJ_D)\rsa_err.obj $(OBJ_D)\rsa_pk1.obj $(OBJ_D)\rsa_ssl.obj \
     $(OBJ_D)\rsa_none.obj $(OBJ_D)\rsa_oaep.obj $(OBJ_D)\rsa_chk.obj $(OBJ_D)\rsa_pss.obj \
@@ -738,6 +738,9 @@ $(OBJ_D)\bn_dh.obj: $(SRC_D)\crypto\bn\bn_dh.c
 $(OBJ_D)\bn_srp.obj: $(SRC_D)\crypto\bn\bn_srp.c
     $(CC) -o$(OBJ_D)\bn_srp.obj  $(LIB_CFLAGS) -c $(SRC_D)\crypto\bn\bn_srp.c
 
+$(OBJ_D)\rsa_sup_mul.obj: $(SRC_D)\crypto\bn\rsa_sup_mul.c
+    $(CC) -o$(OBJ_D)\rsa_sup_mul.obj  $(LIB_CFLAGS) -c $(SRC_D)\crypto\bn\rsa_sup_mul.c
+
 $(OBJ_D)\rsa_ossl.obj: $(SRC_D)\crypto\rsa\rsa_ossl.c
     $(CC) -o$(OBJ_D)\rsa_ossl.obj  $(LIB_CFLAGS) -c $(SRC_D)\crypto\rsa\rsa_ossl.c
 

+ 5 - 1
libs/openssl/crypto/asn1/asn_mime.c

@@ -489,6 +489,7 @@ int SMIME_crlf_copy(BIO *in, BIO *out, int flags)
     char eol;
     int len;
     char linebuf[MAX_SMLEN];
+    int ret;
     /*
      * Buffer output so we don't write one line at a time. This is useful
      * when streaming as we don't end up with one OCTET STRING per line.
@@ -523,9 +524,12 @@ int SMIME_crlf_copy(BIO *in, BIO *out, int flags)
                 BIO_write(out, "\r\n", 2);
         }
     }
-    (void)BIO_flush(out);
+    ret = BIO_flush(out);
     BIO_pop(out);
     BIO_free(bf);
+    if (ret <= 0)
+        return 0;
+
     return 1;
 }
 

+ 2 - 2
libs/openssl/crypto/asn1/bio_asn1.c

@@ -172,7 +172,7 @@ static int asn1_bio_write(BIO *b, const char *in, int inl)
         case ASN1_STATE_START:
             if (!asn1_bio_setup_ex(b, ctx, ctx->prefix,
                                    ASN1_STATE_PRE_COPY, ASN1_STATE_HEADER))
-                return 0;
+                return -1;
             break;
 
             /* Copy any pre data first */
@@ -189,7 +189,7 @@ static int asn1_bio_write(BIO *b, const char *in, int inl)
         case ASN1_STATE_HEADER:
             ctx->buflen = ASN1_object_size(0, inl, ctx->asn1_tag) - inl;
             if (!ossl_assert(ctx->buflen <= ctx->bufsize))
-                return 0;
+                return -1;
             p = ctx->buf;
             ASN1_put_object(&p, 0, inl, ctx->asn1_tag, ctx->asn1_class);
             ctx->copylen = inl;

+ 33 - 8
libs/openssl/crypto/asn1/bio_ndef.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -49,12 +49,19 @@ static int ndef_suffix(BIO *b, unsigned char **pbuf, int *plen, void *parg);
 static int ndef_suffix_free(BIO *b, unsigned char **pbuf, int *plen,
                             void *parg);
 
+/*
+ * On success, the returned BIO owns the input BIO as part of its BIO chain.
+ * On failure, NULL is returned and the input BIO is owned by the caller.
+ *
+ * Unfortunately cannot constify this due to CMS_stream() and PKCS7_stream()
+ */
 BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it)
 {
     NDEF_SUPPORT *ndef_aux = NULL;
     BIO *asn_bio = NULL;
     const ASN1_AUX *aux = it->funcs;
     ASN1_STREAM_ARG sarg;
+    BIO *pop_bio = NULL;
 
     if (!aux || !aux->asn1_cb) {
         ASN1err(ASN1_F_BIO_NEW_NDEF, ASN1_R_STREAMING_NOT_SUPPORTED);
@@ -69,21 +76,39 @@ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it)
     out = BIO_push(asn_bio, out);
     if (out == NULL)
         goto err;
+    pop_bio = asn_bio;
 
-    BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free);
-    BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free);
+    if (BIO_asn1_set_prefix(asn_bio, ndef_prefix, ndef_prefix_free) <= 0
+            || BIO_asn1_set_suffix(asn_bio, ndef_suffix, ndef_suffix_free) <= 0
+            || BIO_ctrl(asn_bio, BIO_C_SET_EX_ARG, 0, ndef_aux) <= 0)
+        goto err;
 
     /*
-     * Now let callback prepends any digest, cipher etc BIOs ASN1 structure
-     * needs.
+     * Now let the callback prepend any digest, cipher, etc., that the BIO's
+     * ASN1 structure needs.
      */
 
     sarg.out = out;
     sarg.ndef_bio = NULL;
     sarg.boundary = NULL;
 
-    if (aux->asn1_cb(ASN1_OP_STREAM_PRE, &val, it, &sarg) <= 0)
+    /*
+     * The asn1_cb(), must not have mutated asn_bio on error, leaving it in the
+     * middle of some partially built, but not returned BIO chain.
+     */
+    if (aux->asn1_cb(ASN1_OP_STREAM_PRE, &val, it, &sarg) <= 0) {
+        /*
+         * ndef_aux is now owned by asn_bio so we must not free it in the err
+         * clean up block
+         */
+        ndef_aux = NULL;
         goto err;
+    }
+
+    /*
+     * We must not fail now because the callback has prepended additional
+     * BIOs to the chain
+     */
 
     ndef_aux->val = val;
     ndef_aux->it = it;
@@ -91,11 +116,11 @@ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it)
     ndef_aux->boundary = sarg.boundary;
     ndef_aux->out = out;
 
-    BIO_ctrl(asn_bio, BIO_C_SET_EX_ARG, 0, ndef_aux);
-
     return sarg.ndef_bio;
 
  err:
+    /* BIO_pop() is NULL safe */
+    (void)BIO_pop(pop_bio);
     BIO_free(asn_bio);
     OPENSSL_free(ndef_aux);
     return NULL;

+ 21 - 1
libs/openssl/crypto/bio/b_print.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -13,6 +13,7 @@
 #include "crypto/ctype.h"
 #include "internal/numbers.h"
 #include <openssl/bio.h>
+#include <openssl/opensslconf.h>
 
 /*
  * Copyright Patrick Powell 1995
@@ -31,8 +32,10 @@ static int fmtstr(char **, char **, size_t *, size_t *,
                   const char *, int, int, int);
 static int fmtint(char **, char **, size_t *, size_t *,
                   int64_t, int, int, int, int);
+#ifndef OPENSSL_SYS_UEFI
 static int fmtfp(char **, char **, size_t *, size_t *,
                  LDOUBLE, int, int, int, int);
+#endif
 static int doapr_outch(char **, char **, size_t *, size_t *, int);
 static int _dopr(char **sbuffer, char **buffer,
                  size_t *maxlen, size_t *retlen, int *truncated,
@@ -88,7 +91,9 @@ _dopr(char **sbuffer,
 {
     char ch;
     int64_t value;
+#ifndef OPENSSL_SYS_UEFI
     LDOUBLE fvalue;
+#endif
     char *strvalue;
     int min;
     int max;
@@ -259,6 +264,7 @@ _dopr(char **sbuffer,
                             min, max, flags))
                     return 0;
                 break;
+#ifndef OPENSSL_SYS_UEFI
             case 'f':
                 if (cflags == DP_C_LDOUBLE)
                     fvalue = va_arg(args, LDOUBLE);
@@ -292,6 +298,16 @@ _dopr(char **sbuffer,
                            flags, G_FORMAT))
                     return 0;
                 break;
+#else
+            case 'f':
+            case 'E':
+            case 'e':
+            case 'G':
+            case 'g':
+                /* not implemented for UEFI */
+                ERR_raise(ERR_LIB_BIO, ERR_R_UNSUPPORTED);
+                return 0;
+#endif
             case 'c':
                 if (!doapr_outch(sbuffer, buffer, &currlen, maxlen,
                                  va_arg(args, int)))
@@ -512,6 +528,8 @@ fmtint(char **sbuffer,
     return 1;
 }
 
+#ifndef OPENSSL_SYS_UEFI
+
 static LDOUBLE abs_val(LDOUBLE value)
 {
     LDOUBLE result = value;
@@ -803,6 +821,8 @@ fmtfp(char **sbuffer,
     return 1;
 }
 
+#endif /* OPENSSL_SYS_UEFI */
+
 #define BUFFER_INC  1024
 
 static int

+ 1 - 15
libs/openssl/crypto/bn/bn_blind.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1998-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -13,20 +13,6 @@
 
 #define BN_BLINDING_COUNTER     32
 
-struct bn_blinding_st {
-    BIGNUM *A;
-    BIGNUM *Ai;
-    BIGNUM *e;
-    BIGNUM *mod;                /* just a reference */
-    CRYPTO_THREAD_ID tid;
-    int counter;
-    unsigned long flags;
-    BN_MONT_CTX *m_ctx;
-    int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
-                       const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
-    CRYPTO_RWLOCK *lock;
-};
-
 BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod)
 {
     BN_BLINDING *ret = NULL;

+ 3 - 1
libs/openssl/crypto/bn/bn_err.c

@@ -1,6 +1,6 @@
 /*
  * Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -73,6 +73,8 @@ static const ERR_STRING_DATA BN_str_functs[] = {
     {ERR_PACK(ERR_LIB_BN, BN_F_BN_SET_WORDS, 0), "bn_set_words"},
     {ERR_PACK(ERR_LIB_BN, BN_F_BN_STACK_PUSH, 0), "BN_STACK_push"},
     {ERR_PACK(ERR_LIB_BN, BN_F_BN_USUB, 0), "BN_usub"},
+    {ERR_PACK(ERR_LIB_BN, BN_F_OSSL_BN_RSA_DO_UNBLIND, 0),
+    "ossl_bn_rsa_do_unblind"},
     {0, NULL}
 };
 

+ 28 - 8
libs/openssl/crypto/bn/bn_exp.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -37,6 +37,15 @@ extern unsigned int OPENSSL_sparcv9cap_P[];
 /* maximum precomputation table size for *variable* sliding windows */
 #define TABLE_SIZE      32
 
+/*
+ * Beyond this limit the constant time code is disabled due to
+ * the possible overflow in the computation of powerbufLen in
+ * BN_mod_exp_mont_consttime.
+ * When this limit is exceeded, the computation will be done using
+ * non-constant time code, but it will take very long.
+ */
+#define BN_CONSTTIME_SIZE_LIMIT (INT_MAX / BN_BYTES / 256)
+
 /* this one works - simple but works */
 int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
 {
@@ -305,12 +314,6 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     BIGNUM *val[TABLE_SIZE];
     BN_MONT_CTX *mont = NULL;
 
-    if (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
-            || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
-            || BN_get_flags(m, BN_FLG_CONSTTIME) != 0) {
-        return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
-    }
-
     bn_check_top(a);
     bn_check_top(p);
     bn_check_top(m);
@@ -319,6 +322,14 @@ int BN_mod_exp_mont(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
         BNerr(BN_F_BN_MOD_EXP_MONT, BN_R_CALLED_WITH_EVEN_MODULUS);
         return 0;
     }
+
+    if (m->top <= BN_CONSTTIME_SIZE_LIMIT
+        && (BN_get_flags(p, BN_FLG_CONSTTIME) != 0
+            || BN_get_flags(a, BN_FLG_CONSTTIME) != 0
+            || BN_get_flags(m, BN_FLG_CONSTTIME) != 0)) {
+        return BN_mod_exp_mont_consttime(rr, a, p, m, ctx, in_mont);
+    }
+
     bits = BN_num_bits(p);
     if (bits == 0) {
         /* x**0 mod 1, or x**0 mod -1 is still zero. */
@@ -618,6 +629,11 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
 
     top = m->top;
 
+    if (top > BN_CONSTTIME_SIZE_LIMIT) {
+        /* Prevent overflowing the powerbufLen computation below */
+        return BN_mod_exp_mont(rr, a, p, m, ctx, in_mont);
+    }
+
     /*
      * Use all bits stored in |p|, rather than |BN_num_bits|, so we do not leak
      * whether the top bits are zero.
@@ -697,7 +713,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     else
 #endif
 #if defined(OPENSSL_BN_ASM_MONT5)
-    if (window >= 5) {
+    if (window >= 5 && top <= BN_SOFT_LIMIT) {
         window = 5;             /* ~5% improvement for RSA2048 sign, and even
                                  * for RSA4096 */
         /* reserve space for mont->N.d[] copy */
@@ -758,6 +774,9 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     if (!bn_to_mont_fixed_top(&am, a, mont, ctx))
         goto err;
 
+    if (top > BN_SOFT_LIMIT)
+        goto fallback;
+
 #if defined(SPARC_T4_MONT)
     if (t4) {
         typedef int (*bn_pwr5_mont_f) (BN_ULONG *tp, const BN_ULONG *np,
@@ -1029,6 +1048,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
     } else
 #endif
     {
+ fallback:
         if (!MOD_EXP_CTIME_COPY_TO_PREBUF(&tmp, top, powerbuf, 0, window))
             goto err;
         if (!MOD_EXP_CTIME_COPY_TO_PREBUF(&am, top, powerbuf, 1, window))

+ 35 - 1
libs/openssl/crypto/bn/bn_local.h

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -35,6 +35,26 @@
 /* #define BN_DEBUG */
 /* #define BN_DEBUG_RAND */
 
+/*
+ * This should limit the stack usage due to alloca to about 4K.
+ * BN_SOFT_LIMIT is a soft limit equivalent to 2*OPENSSL_RSA_MAX_MODULUS_BITS.
+ * Beyond that size bn_mul_mont is no longer used, and the constant time
+ * assembler code is disabled, due to the blatant alloca and bn_mul_mont usage.
+ * Note that bn_mul_mont does an alloca that is hidden away in assembly.
+ * It is not recommended to do computations with numbers exceeding this limit,
+ * since the result will be highly version dependent:
+ * While the current OpenSSL version will use non-optimized, but safe code,
+ * previous versions will use optimized code, that may crash due to unexpected
+ * stack overflow, and future versions may very well turn this into a hard
+ * limit.
+ * Note however, that it is possible to override the size limit using
+ * "./config -DBN_SOFT_LIMIT=<limit>" if necessary, and the O/S specific
+ * stack limit is known and taken into consideration.
+ */
+# ifndef BN_SOFT_LIMIT
+#  define BN_SOFT_LIMIT         (4096 / BN_BYTES)
+# endif
+
 # ifndef OPENSSL_SMALL_FOOTPRINT
 #  define BN_MUL_COMBA
 #  define BN_SQR_COMBA
@@ -263,6 +283,20 @@ struct bn_gencb_st {
     } cb;
 };
 
+struct bn_blinding_st {
+    BIGNUM *A;
+    BIGNUM *Ai;
+    BIGNUM *e;
+    BIGNUM *mod;                /* just a reference */
+    CRYPTO_THREAD_ID tid;
+    int counter;
+    unsigned long flags;
+    BN_MONT_CTX *m_ctx;
+    int (*bn_mod_exp) (BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
+                       const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
+    CRYPTO_RWLOCK *lock;
+};
+
 /*-
  * BN_window_bits_for_exponent_size -- macro for sliding window mod_exp functions
  *

+ 2 - 2
libs/openssl/crypto/bn/bn_mont.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -42,7 +42,7 @@ int bn_mul_mont_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
     int num = mont->N.top;
 
 #if defined(OPENSSL_BN_ASM_MONT) && defined(MONT_WORD)
-    if (num > 1 && a->top == num && b->top == num) {
+    if (num > 1 && num <= BN_SOFT_LIMIT && a->top == num && b->top == num) {
         if (bn_wexpand(r, num) == NULL)
             return 0;
         if (bn_mul_mont(r->d, a->d, b->d, mont->N.d, mont->n0, num)) {

+ 614 - 0
libs/openssl/crypto/bn/rsa_sup_mul.c

@@ -0,0 +1,614 @@
+#include <openssl/e_os2.h>
+#include <stddef.h>
+#include <sys/types.h>
+#include <string.h>
+#include <openssl/bn.h>
+#include <openssl/err.h>
+#include <openssl/rsaerr.h>
+#include "internal/numbers.h"
+#include "internal/constant_time.h"
+#include "bn_local.h"
+
+# if BN_BYTES == 8
+typedef uint64_t limb_t;
+#  if defined(__SIZEOF_INT128__) && __SIZEOF_INT128__ == 16
+/* nonstandard; implemented by gcc on 64-bit platforms */
+typedef __uint128_t limb2_t;
+#   define HAVE_LIMB2_T
+#  endif
+#  define LIMB_BIT_SIZE 64
+#  define LIMB_BYTE_SIZE 8
+# elif BN_BYTES == 4
+typedef uint32_t limb_t;
+typedef uint64_t limb2_t;
+#  define LIMB_BIT_SIZE 32
+#  define LIMB_BYTE_SIZE 4
+#  define HAVE_LIMB2_T
+# else
+#  error "Not supported"
+# endif
+
+/*
+ * For multiplication we're using schoolbook multiplication,
+ * so if we have two numbers, each with 6 "digits" (words)
+ * the multiplication is calculated as follows:
+ *                        A B C D E F
+ *                     x  I J K L M N
+ *                     --------------
+ *                                N*F
+ *                              N*E
+ *                            N*D
+ *                          N*C
+ *                        N*B
+ *                      N*A
+ *                              M*F
+ *                            M*E
+ *                          M*D
+ *                        M*C
+ *                      M*B
+ *                    M*A
+ *                            L*F
+ *                          L*E
+ *                        L*D
+ *                      L*C
+ *                    L*B
+ *                  L*A
+ *                          K*F
+ *                        K*E
+ *                      K*D
+ *                    K*C
+ *                  K*B
+ *                K*A
+ *                        J*F
+ *                      J*E
+ *                    J*D
+ *                  J*C
+ *                J*B
+ *              J*A
+ *                      I*F
+ *                    I*E
+ *                  I*D
+ *                I*C
+ *              I*B
+ *         +  I*A
+ *         ==========================
+ *                        N*B N*D N*F
+ *                    + N*A N*C N*E
+ *                    + M*B M*D M*F
+ *                  + M*A M*C M*E
+ *                  + L*B L*D L*F
+ *                + L*A L*C L*E
+ *                + K*B K*D K*F
+ *              + K*A K*C K*E
+ *              + J*B J*D J*F
+ *            + J*A J*C J*E
+ *            + I*B I*D I*F
+ *          + I*A I*C I*E
+ *
+ *                1+1 1+3 1+5
+ *              1+0 1+2 1+4
+ *              0+1 0+3 0+5
+ *            0+0 0+2 0+4
+ *
+ *            0 1 2 3 4 5 6
+ * which requires n^2 multiplications and 2n full length additions
+ * as we can keep every other result of limb multiplication in two separate
+ * limbs
+ */
+
+#if defined HAVE_LIMB2_T
+static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b)
+{
+    limb2_t t;
+    /*
+     * this is idiomatic code to tell compiler to use the native mul
+     * those three lines will actually compile to single instruction
+     */
+
+    t = (limb2_t)a * b;
+    *hi = t >> LIMB_BIT_SIZE;
+    *lo = (limb_t)t;
+}
+#elif (BN_BYTES == 8) && (defined _MSC_VER)
+/* https://learn.microsoft.com/en-us/cpp/intrinsics/umul128?view=msvc-170 */
+#pragma intrinsic(_umul128)
+static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b)
+{
+    *lo = _umul128(a, b, hi);
+}
+#else
+/*
+ * if the compiler doesn't have either a 128bit data type nor a "return
+ * high 64 bits of multiplication"
+ */
+static ossl_inline void _mul_limb(limb_t *hi, limb_t *lo, limb_t a, limb_t b)
+{
+    limb_t a_low = (limb_t)(uint32_t)a;
+    limb_t a_hi = a >> 32;
+    limb_t b_low = (limb_t)(uint32_t)b;
+    limb_t b_hi = b >> 32;
+
+    limb_t p0 = a_low * b_low;
+    limb_t p1 = a_low * b_hi;
+    limb_t p2 = a_hi * b_low;
+    limb_t p3 = a_hi * b_hi;
+
+    uint32_t cy = (uint32_t)(((p0 >> 32) + (uint32_t)p1 + (uint32_t)p2) >> 32);
+
+    *lo = p0 + (p1 << 32) + (p2 << 32);
+    *hi = p3 + (p1 >> 32) + (p2 >> 32) + cy;
+}
+#endif
+
+/* add two limbs with carry in, return carry out */
+static ossl_inline limb_t _add_limb(limb_t *ret, limb_t a, limb_t b, limb_t carry)
+{
+    limb_t carry1, carry2, t;
+    /*
+     * `c = a + b; if (c < a)` is idiomatic code that makes compilers
+     * use add with carry on assembly level
+     */
+
+    *ret = a + carry;
+    if (*ret < a)
+        carry1 = 1;
+    else
+        carry1 = 0;
+
+    t = *ret;
+    *ret = t + b;
+    if (*ret < t)
+        carry2 = 1;
+    else
+        carry2 = 0;
+
+    return carry1 + carry2;
+}
+
+/*
+ * add two numbers of the same size, return overflow
+ *
+ * add a to b, place result in ret; all arrays need to be n limbs long
+ * return overflow from addition (0 or 1)
+ */
+static ossl_inline limb_t add(limb_t *ret, limb_t *a, limb_t *b, size_t n)
+{
+    limb_t c = 0;
+    ossl_ssize_t i;
+
+    for(i = n - 1; i > -1; i--)
+        c = _add_limb(&ret[i], a[i], b[i], c);
+
+    return c;
+}
+
+/*
+ * return number of limbs necessary for temporary values
+ * when multiplying numbers n limbs large
+ */
+static ossl_inline size_t mul_limb_numb(size_t n)
+{
+    return  2 * n * 2;
+}
+
+/*
+ * multiply two numbers of the same size
+ *
+ * multiply a by b, place result in ret; a and b need to be n limbs long
+ * ret needs to be 2*n limbs long, tmp needs to be mul_limb_numb(n) limbs
+ * long
+ */
+static void limb_mul(limb_t *ret, limb_t *a, limb_t *b, size_t n, limb_t *tmp)
+{
+    limb_t *r_odd, *r_even;
+    size_t i, j, k;
+
+    r_odd = tmp;
+    r_even = &tmp[2 * n];
+
+    memset(ret, 0, 2 * n * sizeof(limb_t));
+
+    for (i = 0; i < n; i++) {
+        for (k = 0; k < i + n + 1; k++) {
+            r_even[k] = 0;
+            r_odd[k] = 0;
+        }
+        for (j = 0; j < n; j++) {
+            /*
+             * place results from even and odd limbs in separate arrays so that
+             * we don't have to calculate overflow every time we get individual
+             * limb multiplication result
+             */
+            if (j % 2 == 0)
+                _mul_limb(&r_even[i + j], &r_even[i + j + 1], a[i], b[j]);
+            else
+                _mul_limb(&r_odd[i + j], &r_odd[i + j + 1], a[i], b[j]);
+        }
+        /*
+         * skip the least significant limbs when adding multiples of
+         * more significant limbs (they're zero anyway)
+         */
+        add(ret, ret, r_even, n + i + 1);
+        add(ret, ret, r_odd, n + i + 1);
+    }
+}
+
+/* modifies the value in place by performing a right shift by one bit */
+static ossl_inline void rshift1(limb_t *val, size_t n)
+{
+    limb_t shift_in = 0, shift_out = 0;
+    size_t i;
+
+    for (i = 0; i < n; i++) {
+        shift_out = val[i] & 1;
+        val[i] = shift_in << (LIMB_BIT_SIZE - 1) | (val[i] >> 1);
+        shift_in = shift_out;
+    }
+}
+
+/* extend the LSB of flag to all bits of limb */
+static ossl_inline limb_t mk_mask(limb_t flag)
+{
+    flag |= flag << 1;
+    flag |= flag << 2;
+    flag |= flag << 4;
+    flag |= flag << 8;
+    flag |= flag << 16;
+#if (LIMB_BYTE_SIZE == 8)
+    flag |= flag << 32;
+#endif
+    return flag;
+}
+
+/*
+ * copy from either a or b to ret based on flag
+ * when flag == 0, then copies from b
+ * when flag == 1, then copies from a
+ */
+static ossl_inline void cselect(limb_t flag, limb_t *ret, limb_t *a, limb_t *b, size_t n)
+{
+    /*
+     * would be more efficient with non volatile mask, but then gcc
+     * generates code with jumps
+     */
+    volatile limb_t mask;
+    size_t i;
+
+    mask = mk_mask(flag);
+    for (i = 0; i < n; i++) {
+#if (LIMB_BYTE_SIZE == 8)
+        ret[i] = constant_time_select_64(mask, a[i], b[i]);
+#else
+        ret[i] = constant_time_select_32(mask, a[i], b[i]);
+#endif
+    }
+}
+
+static limb_t _sub_limb(limb_t *ret, limb_t a, limb_t b, limb_t borrow)
+{
+    limb_t borrow1, borrow2, t;
+    /*
+     * while it doesn't look constant-time, this is idiomatic code
+     * to tell compilers to use the carry bit from subtraction
+     */
+
+    *ret = a - borrow;
+    if (*ret > a)
+        borrow1 = 1;
+    else
+        borrow1 = 0;
+
+    t = *ret;
+    *ret = t - b;
+    if (*ret > t)
+        borrow2 = 1;
+    else
+        borrow2 = 0;
+
+    return borrow1 + borrow2;
+}
+
+/*
+ * place the result of a - b into ret, return the borrow bit.
+ * All arrays need to be n limbs long
+ */
+static limb_t sub(limb_t *ret, limb_t *a, limb_t *b, size_t n)
+{
+    limb_t borrow = 0;
+    ossl_ssize_t i;
+
+    for (i = n - 1; i > -1; i--)
+        borrow = _sub_limb(&ret[i], a[i], b[i], borrow);
+
+    return borrow;
+}
+
+/* return the number of limbs necessary to allocate for the mod() tmp operand */
+static ossl_inline size_t mod_limb_numb(size_t anum, size_t modnum)
+{
+    return (anum + modnum) * 3;
+}
+
+/*
+ * calculate a % mod, place the result in ret
+ * size of a is defined by anum, size of ret and mod is modnum,
+ * size of tmp is returned by mod_limb_numb()
+ */
+static void mod(limb_t *ret, limb_t *a, size_t anum, limb_t *mod,
+               size_t modnum, limb_t *tmp)
+{
+    limb_t *atmp, *modtmp, *rettmp;
+    limb_t res;
+    size_t i;
+
+    memset(tmp, 0, mod_limb_numb(anum, modnum) * LIMB_BYTE_SIZE);
+
+    atmp = tmp;
+    modtmp = &tmp[anum + modnum];
+    rettmp = &tmp[(anum + modnum) * 2];
+
+    for (i = modnum; i <modnum + anum; i++)
+        atmp[i] = a[i-modnum];
+
+    for (i = 0; i < modnum; i++)
+        modtmp[i] = mod[i];
+
+    for (i = 0; i < anum * LIMB_BIT_SIZE; i++) {
+        rshift1(modtmp, anum + modnum);
+        res = sub(rettmp, atmp, modtmp, anum+modnum);
+        cselect(res, atmp, atmp, rettmp, anum+modnum);
+    }
+
+    memcpy(ret, &atmp[anum], sizeof(limb_t) * modnum);
+}
+
+/* necessary size of tmp for a _mul_add_limb() call with provided anum */
+static ossl_inline size_t _mul_add_limb_numb(size_t anum)
+{
+    return 2 * (anum + 1);
+}
+
+/* multiply a by m, add to ret, return carry */
+static limb_t _mul_add_limb(limb_t *ret, limb_t *a, size_t anum,
+                           limb_t m, limb_t *tmp)
+{
+    limb_t carry = 0;
+    limb_t *r_odd, *r_even;
+    size_t i;
+
+    memset(tmp, 0, sizeof(limb_t) * (anum + 1) * 2);
+
+    r_odd = tmp;
+    r_even = &tmp[anum + 1];
+
+    for (i = 0; i < anum; i++) {
+        /*
+         * place the results from even and odd limbs in separate arrays
+         * so that we have to worry about carry just once
+         */
+        if (i % 2 == 0)
+            _mul_limb(&r_even[i], &r_even[i + 1], a[i], m);
+        else
+            _mul_limb(&r_odd[i], &r_odd[i + 1], a[i], m);
+    }
+    /* assert: add() carry here will be equal zero */
+    add(r_even, r_even, r_odd, anum + 1);
+    /*
+     * while here it will not overflow as the max value from multiplication
+     * is -2 while max overflow from addition is 1, so the max value of
+     * carry is -1 (i.e. max int)
+     */
+    carry = add(ret, ret, &r_even[1], anum) + r_even[0];
+
+    return carry;
+}
+
+static ossl_inline size_t mod_montgomery_limb_numb(size_t modnum)
+{
+    return modnum * 2 + _mul_add_limb_numb(modnum);
+}
+
+/*
+ * calculate a % mod, place result in ret
+ * assumes that a is in Montgomery form with the R (Montgomery modulus) being
+ * smallest power of two big enough to fit mod and that's also a power
+ * of the count of number of bits in limb_t (B).
+ * For calculation, we also need n', such that mod * n' == -1 mod B.
+ * anum must be <= 2 * modnum
+ * ret needs to be modnum words long
+ * tmp needs to be mod_montgomery_limb_numb(modnum) limbs long
+ */
+static void mod_montgomery(limb_t *ret, limb_t *a, size_t anum, limb_t *mod,
+                          size_t modnum, limb_t ni0, limb_t *tmp)
+{
+    limb_t carry, v;
+    limb_t *res, *rp, *tmp2;
+    ossl_ssize_t i;
+
+    res = tmp;
+    /*
+     * for intermediate result we need an integer twice as long as modulus
+     * but keep the input in the least significant limbs
+     */
+    memset(res, 0, sizeof(limb_t) * (modnum * 2));
+    memcpy(&res[modnum * 2 - anum], a, sizeof(limb_t) * anum);
+    rp = &res[modnum];
+    tmp2 = &res[modnum * 2];
+
+    carry = 0;
+
+    /* add multiples of the modulus to the value until R divides it cleanly */
+    for (i = modnum; i > 0; i--, rp--) {
+        v = _mul_add_limb(rp, mod, modnum, rp[modnum - 1] * ni0, tmp2);
+        v = v + carry + rp[-1];
+        carry |= (v != rp[-1]);
+        carry &= (v <= rp[-1]);
+        rp[-1] = v;
+    }
+
+    /* perform the final reduction by mod... */
+    carry -= sub(ret, rp, mod, modnum);
+
+    /* ...conditionally */
+    cselect(carry, ret, rp, ret, modnum);
+}
+
+/* allocated buffer should be freed afterwards */
+static void BN_to_limb(const BIGNUM *bn, limb_t *buf, size_t limbs)
+{
+    int i;
+    int real_limbs = (BN_num_bytes(bn) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE;
+    limb_t *ptr = buf + (limbs - real_limbs);
+
+    for (i = 0; i < real_limbs; i++)
+         ptr[i] = bn->d[real_limbs - i - 1];
+}
+
+#if LIMB_BYTE_SIZE == 8
+static ossl_inline uint64_t be64(uint64_t host)
+{
+    const union {
+        long one;
+        char little;
+    } is_endian = { 1 };
+
+    if (is_endian.little) {
+        uint64_t big = 0;
+
+        big |= (host & 0xff00000000000000) >> 56;
+        big |= (host & 0x00ff000000000000) >> 40;
+        big |= (host & 0x0000ff0000000000) >> 24;
+        big |= (host & 0x000000ff00000000) >>  8;
+        big |= (host & 0x00000000ff000000) <<  8;
+        big |= (host & 0x0000000000ff0000) << 24;
+        big |= (host & 0x000000000000ff00) << 40;
+        big |= (host & 0x00000000000000ff) << 56;
+        return big;
+    } else {
+        return host;
+    }
+}
+
+#else
+/* Not all platforms have htobe32(). */
+static ossl_inline uint32_t be32(uint32_t host)
+{
+    const union {
+        long one;
+        char little;
+    } is_endian = { 1 };
+
+    if (is_endian.little) {
+        uint32_t big = 0;
+
+        big |= (host & 0xff000000) >> 24;
+        big |= (host & 0x00ff0000) >> 8;
+        big |= (host & 0x0000ff00) << 8;
+        big |= (host & 0x000000ff) << 24;
+        return big;
+    } else {
+        return host;
+    }
+}
+#endif
+
+/*
+ * We assume that intermediate, possible_arg2, blinding, and ctx are used
+ * similar to BN_BLINDING_invert_ex() arguments.
+ * to_mod is RSA modulus.
+ * buf and num is the serialization buffer and its length.
+ *
+ * Here we use classic/Montgomery multiplication and modulo. After the calculation finished
+ * we serialize the new structure instead of BIGNUMs taking endianness into account.
+ */
+int ossl_bn_rsa_do_unblind(const BIGNUM *intermediate,
+                           const BN_BLINDING *blinding,
+                           const BIGNUM *possible_arg2,
+                           const BIGNUM *to_mod, BN_CTX *ctx,
+                           unsigned char *buf, int num)
+{
+    limb_t *l_im = NULL, *l_mul = NULL, *l_mod = NULL;
+    limb_t *l_ret = NULL, *l_tmp = NULL, l_buf;
+    size_t l_im_count = 0, l_mul_count = 0, l_size = 0, l_mod_count = 0;
+    size_t l_tmp_count = 0;
+    int ret = 0;
+    size_t i;
+    unsigned char *tmp;
+    const BIGNUM *arg1 = intermediate;
+    const BIGNUM *arg2 = (possible_arg2 == NULL) ? blinding->Ai : possible_arg2;
+
+    l_im_count  = (BN_num_bytes(arg1)   + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE;
+    l_mul_count = (BN_num_bytes(arg2)   + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE;
+    l_mod_count = (BN_num_bytes(to_mod) + LIMB_BYTE_SIZE - 1) / LIMB_BYTE_SIZE;
+
+    l_size = l_im_count > l_mul_count ? l_im_count : l_mul_count;
+    l_im  = OPENSSL_zalloc(l_size * LIMB_BYTE_SIZE);
+    l_mul = OPENSSL_zalloc(l_size * LIMB_BYTE_SIZE);
+    l_mod = OPENSSL_zalloc(l_mod_count * LIMB_BYTE_SIZE);
+
+    if ((l_im == NULL) || (l_mul == NULL) || (l_mod == NULL))
+        goto err;
+
+    BN_to_limb(arg1,   l_im,  l_size);
+    BN_to_limb(arg2,   l_mul, l_size);
+    BN_to_limb(to_mod, l_mod, l_mod_count);
+
+    l_ret = OPENSSL_malloc(2 * l_size * LIMB_BYTE_SIZE);
+
+    if (blinding->m_ctx != NULL) {
+        l_tmp_count = mul_limb_numb(l_size) > mod_montgomery_limb_numb(l_mod_count) ?
+                      mul_limb_numb(l_size) : mod_montgomery_limb_numb(l_mod_count);
+        l_tmp = OPENSSL_malloc(l_tmp_count * LIMB_BYTE_SIZE);
+    } else {
+        l_tmp_count = mul_limb_numb(l_size) > mod_limb_numb(2 * l_size, l_mod_count) ?
+                      mul_limb_numb(l_size) : mod_limb_numb(2 * l_size, l_mod_count);
+        l_tmp = OPENSSL_malloc(l_tmp_count * LIMB_BYTE_SIZE);
+    }
+
+    if ((l_ret == NULL) || (l_tmp == NULL))
+        goto err;
+
+    if (blinding->m_ctx != NULL) {
+        limb_mul(l_ret, l_im, l_mul, l_size, l_tmp);
+        mod_montgomery(l_ret, l_ret, 2 * l_size, l_mod, l_mod_count,
+                       blinding->m_ctx->n0[0], l_tmp);
+    } else {
+        limb_mul(l_ret, l_im, l_mul, l_size, l_tmp);
+        mod(l_ret, l_ret, 2 * l_size, l_mod, l_mod_count, l_tmp);
+    }
+
+    /* modulus size in bytes can be equal to num but after limbs conversion it becomes bigger */
+    if (num < BN_num_bytes(to_mod)) {
+        BNerr(BN_F_OSSL_BN_RSA_DO_UNBLIND, ERR_R_PASSED_INVALID_ARGUMENT);
+        goto err;
+    }
+
+    memset(buf, 0, num);
+    tmp = buf + num - BN_num_bytes(to_mod);
+    for (i = 0; i < l_mod_count; i++) {
+#if LIMB_BYTE_SIZE == 8
+        l_buf = be64(l_ret[i]);
+#else
+        l_buf = be32(l_ret[i]);
+#endif
+        if (i == 0) {
+            int delta = LIMB_BYTE_SIZE - ((l_mod_count * LIMB_BYTE_SIZE) - num);
+
+            memcpy(tmp, ((char *)&l_buf) + LIMB_BYTE_SIZE - delta, delta);
+            tmp += delta;
+        } else {
+            memcpy(tmp, &l_buf, LIMB_BYTE_SIZE);
+            tmp += LIMB_BYTE_SIZE;
+        }
+    }
+    ret = num;
+
+ err:
+    OPENSSL_free(l_im);
+    OPENSSL_free(l_mul);
+    OPENSSL_free(l_mod);
+    OPENSSL_free(l_tmp);
+    OPENSSL_free(l_ret);
+
+    return ret;
+}

+ 5 - 0
libs/openssl/crypto/cms/cms_enc.c

@@ -68,7 +68,12 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec)
 
     if (enc) {
         int ivlen;
+
         calg->algorithm = OBJ_nid2obj(EVP_CIPHER_CTX_type(ctx));
+        if (calg->algorithm == NULL) {
+            CMSerr(ERR_LIB_CMS, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM);
+            goto err;
+        }
         /* Generate a random IV if we need one */
         ivlen = EVP_CIPHER_CTX_iv_length(ctx);
         if (ivlen > 0) {

+ 2 - 0
libs/openssl/crypto/cms/cms_err.c

@@ -264,6 +264,8 @@ static const ERR_STRING_DATA CMS_str_reasons[] = {
     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNKNOWN_ID), "unknown id"},
     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM),
     "unsupported compression algorithm"},
+    {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM),
+    "unsupported content encryption algorithm"},
     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_CONTENT_TYPE),
     "unsupported content type"},
     {ERR_PACK(ERR_LIB_CMS, 0, CMS_R_UNSUPPORTED_KEK_ALGORITHM),

+ 4 - 1
libs/openssl/crypto/err/openssl.txt

@@ -1,4 +1,4 @@
-# Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the OpenSSL license (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -232,6 +232,7 @@ BN_F_BN_RSHIFT:146:BN_rshift
 BN_F_BN_SET_WORDS:144:bn_set_words
 BN_F_BN_STACK_PUSH:148:BN_STACK_push
 BN_F_BN_USUB:115:BN_usub
+BN_F_OSSL_BN_RSA_DO_UNBLIND:151:ossl_bn_rsa_do_unblind
 BUF_F_BUF_MEM_GROW:100:BUF_MEM_grow
 BUF_F_BUF_MEM_GROW_CLEAN:105:BUF_MEM_grow_clean
 BUF_F_BUF_MEM_NEW:101:BUF_MEM_new
@@ -2023,6 +2024,8 @@ CMS_R_UNKNOWN_CIPHER:148:unknown cipher
 CMS_R_UNKNOWN_DIGEST_ALGORITHM:149:unknown digest algorithm
 CMS_R_UNKNOWN_ID:150:unknown id
 CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM:151:unsupported compression algorithm
+CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM:194:\
+	unsupported content encryption algorithm
 CMS_R_UNSUPPORTED_CONTENT_TYPE:152:unsupported content type
 CMS_R_UNSUPPORTED_KEK_ALGORITHM:153:unsupported kek algorithm
 CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM:179:\

+ 8 - 1
libs/openssl/crypto/evp/bio_enc.c

@@ -299,6 +299,7 @@ static long enc_ctrl(BIO *b, int cmd, long num, void *ptr)
     int i;
     EVP_CIPHER_CTX **c_ctx;
     BIO *next;
+    int pend;
 
     ctx = BIO_get_data(b);
     next = BIO_next(b);
@@ -334,8 +335,14 @@ static long enc_ctrl(BIO *b, int cmd, long num, void *ptr)
         /* do a final write */
  again:
         while (ctx->buf_len != ctx->buf_off) {
+            pend = ctx->buf_len - ctx->buf_off;
             i = enc_write(b, NULL, 0);
-            if (i < 0)
+            /*
+             * i should never be > 0 here because we didn't ask to write any
+             * new data. We stop if we get an error or we failed to make any
+             * progress writing pending data.
+             */
+            if (i < 0 || (ctx->buf_len - ctx->buf_off) == pend)
                 return i;
         }
 

+ 5 - 3
libs/openssl/crypto/pem/pem_lib.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -791,7 +791,7 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name,
 {
     BIO *tmp = *header;
     char *linebuf, *p;
-    int len, line, ret = 0, end = 0, prev_partial_line_read = 0, partial_line_read = 0;
+    int len, ret = 0, end = 0, prev_partial_line_read = 0, partial_line_read = 0;
     /* 0 if not seen (yet), 1 if reading header, 2 if finished header */
     enum header_status got_header = MAYBE_HEADER;
     unsigned int flags_mask;
@@ -805,7 +805,7 @@ static int get_header_and_data(BIO *bp, BIO **header, BIO **data, char *name,
         return 0;
     }
 
-    for (line = 0; ; line++) {
+    for (;;) {
         flags_mask = ~0u;
         len = BIO_gets(bp, linebuf, LINESIZE);
         if (len <= 0) {
@@ -957,7 +957,9 @@ int PEM_read_bio_ex(BIO *bp, char **name_out, char **header,
     *data = pem_malloc(len, flags);
     if (*header == NULL || *data == NULL) {
         pem_free(*header, flags, 0);
+        *header = NULL;
         pem_free(*data, flags, 0);
+        *data = NULL;
         goto end;
     }
     BIO_read(headerB, *header, headerlen);

+ 1 - 0
libs/openssl/crypto/rsa/rsa_ameth.c

@@ -172,6 +172,7 @@ static int rsa_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey)
                          strtype, str, rk, rklen)) {
         RSAerr(RSA_F_RSA_PRIV_ENCODE, ERR_R_MALLOC_FAILURE);
         ASN1_STRING_free(str);
+        OPENSSL_clear_free(rk, rklen);
         return 0;
     }
 

+ 14 - 5
libs/openssl/crypto/rsa/rsa_ossl.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -465,11 +465,20 @@ static int rsa_ossl_private_decrypt(int flen, const unsigned char *from,
         BN_free(d);
     }
 
-    if (blinding)
-        if (!rsa_blinding_invert(blinding, ret, unblind, ctx))
+    if (blinding) {
+        /*
+         * ossl_bn_rsa_do_unblind() combines blinding inversion and
+         * 0-padded BN BE serialization
+         */
+        j = ossl_bn_rsa_do_unblind(ret, blinding, unblind, rsa->n, ctx,
+                                   buf, num);
+        if (j == 0)
             goto err;
-
-    j = BN_bn2binpad(ret, buf, num);
+    } else {
+        j = BN_bn2binpad(ret, buf, num);
+        if (j < 0)
+            goto err;
+    }
 
     switch (padding) {
     case RSA_PKCS1_PADDING:

+ 1 - 3
libs/openssl/crypto/txt_db/txt_db.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -21,7 +21,6 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
 {
     TXT_DB *ret = NULL;
     int esc = 0;
-    long ln = 0;
     int i, add, n;
     int size = BUFSIZE;
     int offset = 0;
@@ -61,7 +60,6 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
         }
         buf->data[offset] = '\0';
         BIO_gets(in, &(buf->data[offset]), size - offset);
-        ln++;
         if (buf->data[offset] == '\0')
             break;
         if ((offset == 0) && (buf->data[0] == '#'))

+ 14 - 4
libs/openssl/crypto/x509/by_dir.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -332,9 +332,13 @@ static int get_cert_by_subject(X509_LOOKUP *xl, X509_LOOKUP_TYPE type,
         tmp = sk_X509_OBJECT_value(xl->store_ctx->objs, j);
         X509_STORE_unlock(xl->store_ctx);
 
-        /* If a CRL, update the last file suffix added for this */
-
-        if (type == X509_LU_CRL) {
+        /*
+         * If a CRL, update the last file suffix added for this.
+         * We don't need to add an entry if k is 0 as this is the initial value.
+         * This avoids the need for a write lock and sort operation in the
+         * simple case where no CRL is present for a hash.
+         */
+        if (type == X509_LU_CRL && k > 0) {
             CRYPTO_THREAD_write_lock(ctx->lock);
             /*
              * Look for entry again in case another thread added an entry
@@ -362,6 +366,12 @@ static int get_cert_by_subject(X509_LOOKUP *xl, X509_LOOKUP_TYPE type,
                     ok = 0;
                     goto finish;
                 }
+
+                /*
+                 * Ensure stack is sorted so that subsequent sk_BY_DIR_HASH_find
+                 * will not mutate the stack and therefore require a write lock.
+                 */
+                sk_BY_DIR_HASH_sort(ent->hashes);
             } else if (hent->suffix < k) {
                 hent->suffix = k;
             }

+ 2 - 6
libs/openssl/crypto/x509/x_name.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -493,9 +493,7 @@ int X509_NAME_set(X509_NAME **xn, X509_NAME *name)
 int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase)
 {
     char *s, *c, *b;
-    int l, i;
-
-    l = 80 - 2 - obase;
+    int i;
 
     b = X509_NAME_oneline(name, NULL, 0);
     if (!b)
@@ -521,12 +519,10 @@ int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase)
                 if (BIO_write(bp, ", ", 2) != 2)
                     goto err;
             }
-            l--;
         }
         if (*s == '\0')
             break;
         s++;
-        l--;
     }
 
     OPENSSL_free(b);

+ 2 - 2
libs/openssl/crypto/x509v3/v3_genn.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -98,7 +98,7 @@ int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b)
         return -1;
     switch (a->type) {
     case GEN_X400:
-        result = ASN1_TYPE_cmp(a->d.x400Address, b->d.x400Address);
+        result = ASN1_STRING_cmp(a->d.x400Address, b->d.x400Address);
         break;
 
     case GEN_EDIPARTY:

+ 6 - 1
libs/openssl/include/crypto/bn.h

@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2014-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -86,5 +86,10 @@ int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n);
 int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n);
 int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
                      const BIGNUM *d, BN_CTX *ctx);
+int ossl_bn_rsa_do_unblind(const BIGNUM *intermediate,
+                           const BN_BLINDING *blinding,
+                           const BIGNUM *possible_arg2,
+                           const BIGNUM *to_mod, BN_CTX *ctx,
+                           unsigned char *buf, int num);
 
 #endif

+ 2 - 1
libs/openssl/include/openssl/bnerr.h

@@ -1,6 +1,6 @@
 /*
  * Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -72,6 +72,7 @@ int ERR_load_BN_strings(void);
 # define BN_F_BN_SET_WORDS                                144
 # define BN_F_BN_STACK_PUSH                               148
 # define BN_F_BN_USUB                                     115
+# define BN_F_OSSL_BN_RSA_DO_UNBLIND                      151
 
 /*
  * BN reason codes.

+ 1 - 0
libs/openssl/include/openssl/cmserr.h

@@ -187,6 +187,7 @@ int ERR_load_CMS_strings(void);
 #  define CMS_R_UNKNOWN_DIGEST_ALGORITHM                   149
 #  define CMS_R_UNKNOWN_ID                                 150
 #  define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM          151
+#  define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM   194
 #  define CMS_R_UNSUPPORTED_CONTENT_TYPE                   152
 #  define CMS_R_UNSUPPORTED_KEK_ALGORITHM                  153
 #  define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM       179

+ 2 - 2
libs/openssl/include/openssl/opensslv.h

@@ -39,8 +39,8 @@ extern "C" {
  * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
  *  major minor fix final patch/beta)
  */
-# define OPENSSL_VERSION_NUMBER  0x1010113fL
-# define OPENSSL_VERSION_TEXT    "OpenSSL 1.1.1s  1 Nov 2022"
+# define OPENSSL_VERSION_NUMBER  0x1010114fL
+# define OPENSSL_VERSION_TEXT    "OpenSSL 1.1.1t  7 Feb 2023"
 
 /*-
  * The macros below are to be used for shared library (.so, .dll, ...)

+ 2 - 2
libs/openssl/include/openssl/x509v3.h

@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -136,7 +136,7 @@ typedef struct GENERAL_NAME_st {
         OTHERNAME *otherName;   /* otherName */
         ASN1_IA5STRING *rfc822Name;
         ASN1_IA5STRING *dNSName;
-        ASN1_TYPE *x400Address;
+        ASN1_STRING *x400Address;
         X509_NAME *directoryName;
         EDIPARTYNAME *ediPartyName;
         ASN1_IA5STRING *uniformResourceIdentifier;

+ 12 - 5
libs/openssl/ssl/record/rec_layer_s3.c

@@ -16,6 +16,7 @@
 #include <openssl/rand.h>
 #include "record_local.h"
 #include "../packet_local.h"
+#include "internal/cryptlib.h"
 
 #if     defined(OPENSSL_SMALL_FOOTPRINT) || \
         !(      defined(AESNI_ASM) &&   ( \
@@ -983,11 +984,14 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
         }
 
         /*
-         * Reserve some bytes for any growth that may occur during encryption.
-         * This will be at most one cipher block or the tag length if using
-         * AEAD. SSL_RT_MAX_CIPHER_BLOCK_SIZE covers either case.
-         */
-        if (!WPACKET_reserve_bytes(thispkt, SSL_RT_MAX_CIPHER_BLOCK_SIZE,
+        * Reserve some bytes for any growth that may occur during encryption. If
+        * we are adding the MAC independently of the cipher algorithm, then the
+        * max encrypted overhead does not need to include an allocation for that
+        * MAC
+        */
+        if (!WPACKET_reserve_bytes(thispkt,
+                                   SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD
+                                   - mac_size,
                                    NULL)
                    /*
                     * We also need next the amount of bytes written to this
@@ -1037,6 +1041,9 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
 
         /* Allocate bytes for the encryption overhead */
         if (!WPACKET_get_length(thispkt, &origlen)
+                   /* Check we allowed enough room for the encryption growth */
+                || !ossl_assert(origlen + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD
+                                - mac_size >= thiswr->length)
                    /* Encryption should never shrink the data! */
                 || origlen > thiswr->length
                 || (thiswr->length > origlen

+ 7 - 2
libs/openssl/ssl/record/ssl3_buffer.c

@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the OpenSSL license (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -97,11 +97,16 @@ int ssl3_setup_write_buffer(SSL *s, size_t numwpipes, size_t len)
 #endif
 
         len = ssl_get_max_send_fragment(s)
-            + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align;
+            + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align
+            + SSL_RT_MAX_CIPHER_BLOCK_SIZE /* Explicit IV allowance */;
 #ifndef OPENSSL_NO_COMP
         if (ssl_allow_compression(s))
             len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
 #endif
+        /*
+         * We don't need to add an allowance for eivlen here since empty
+         * fragments only occur when we don't have an explicit IV
+         */
         if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
             len += headerlen + align + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD;
     }

+ 18 - 0
libs/openssl/test/smime-certs/badrsa.pem

@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIDbTCCAlWgAwIBAgIToTV4Z0iuK08vZP20oTh//hC8BDANBgkqhkiG9w0BAQ0FADAtMSswKQYD
+VfcDEyJTYW1wbGUgTEFNUFMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MCAXDTE5MTEyMDA2NTQxOFoY
+DzIwNTIwOTI3MDY1NDE4WjAZMRcwFQYDVQQDEw5BbGljZSBMb3ZlbGFjZTCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALT0iehYOBY+TZp/T5K2KNI05Hwr+E3wP6XTvyi6WWyTgBK9LCOw
+I2juwdRrjFBmXkk7pWpjXwsA3A5GOtz0FpfgyC7OxsVcF7q4WHWZWleYXFKlQHJD73nQwXP968+A
+/3rBX7PhO0DBbZnfitOLPgPEwjTtdg0VQQ6Wz+CRQ/YbHPKaw7aRphZO63dKvIKp4cQVtkWQHi6s
+yTjGsgkLcLNau5LZDQUdsGV+SAo3nBdWCRYV+I65x8Kf4hCxqqmjV3d/2NKRu0BXnDe/N+iDz3X0
+zEoj0fqXgq4SWcC0nsG1lyyXt1TL270I6ATKRGJWiQVCCpDtc0NT6vdJ45bCSxgCAwEAAaOBlzCB
+lDAMBgNVHRMBAf8EAjAAMB4GA1UdEQQXMBWBE2FsaWNlQHNtaW1lLmV4YW1wbGUwEwYDVR0lBAww
+CgYIKwYBBQUHAwQwDwYDVR0PAQH/BAUDAwfAADAdBgNVHQ4EFgQUu/bMsi0dBhIcl64papAQ0yBm
+ZnMwHwYDVR0jBBgwFoAUeF8OWnjYa+RUcD2z3ez38fL6wEcwDQYJKoZIhvcNAQENBQADggEBABbW
+eonR6TMTckehDKNOabwaCIcekahAIL6l9tTzUX5ew6ufiAPlC6I/zQlmUaU0iSyFDG1NW14kNbFt
+5CAokyLhMtE4ASHBIHbiOp/ZSbUBTVYJZB61ot7w1/ol5QECSs08b8zrxIncf+t2DHGuVEy/Qq1d
+rBz8d4ay8zpqAE1tUyL5Da6ZiKUfWwZQXSI/JlbjQFzYQqTRDnzHWrg1xPeMTO1P2/cplFaseTiv
+yk4cYwOp/W9UAWymOZXF8WcJYCIUXkdcG/nEZxr057KlScrJmFXOoh7Y+8ON4iWYYcAfiNgpUFo/
+j8BAwrKKaFvdlZS9k1Ypb2+UQY75mKJE9Bg=
+-----END CERTIFICATE-----

+ 183 - 183
translations/DE.ini

@@ -66,7 +66,7 @@ CancelButton.Caption="Abbrechen"
 RuleGroup.Caption="Auswahlbedingungen"
 RuleGroup.Label2.Caption="Maske für Rechnerna&men:"
 RuleGroup.Label3.Caption="Maske &für Benutzernamen:"
-RuleGroup.Label4.Caption="Maske für Verzeic&hnis auf dem Fernrechner:"
+RuleGroup.Label4.Caption="Maske für Verzeic&hnis auf der Gegenstelle:"
 RuleGroup.Label5.Caption="Maske für lokale&s Verzeichnis:"
 RuleGroup.CurrentRuleButton.Caption="Aktuell"
 RuleGroup.RuleMaskHintText.Caption="Maskeninfo"
@@ -128,11 +128,11 @@ Group.ShortCutLabel.Caption="&Tastaturkürzel:"
 Group.ApplyToDirectoriesCheck.Caption="&Auf Ordner anwenden"
 Group.RecursiveCheck.Caption="&Rekursiv ausführen"
 Group.LocalCommandButton.Caption="&Lokaler Befehl"
-Group.RemoteCommandButton.Caption="B&efehl auf dem Fernrechner"
+Group.RemoteCommandButton.Caption="B&efehl auf der Gegenstelle"
 Group.ShowResultsCheck.Caption="&Resultate im Terminal anzeigen"
 Group.CopyResultsCheck.Caption="Ergebnisse &kopieren"
 Group.HintText.Caption="M&uster"
-Group.RemoteFilesCheck.Caption="Dateien auf dem Fernrechner &verwenden"
+Group.RemoteFilesCheck.Caption="Dateien der Gegenstelle &verwenden"
 OkButton.Caption="OK"
 CancelButton.Caption="Abbrechen"
 HelpButton.Caption="&Hilfe"
@@ -205,7 +205,7 @@ EditorActions.ColorAction.Caption="&Farbe"
 EditorActions.ColorAction.Hint="Farbe im Editor ändern"
 
 [EditorPreferences.dfm]
-ExternalEditorGroup.Caption="Einstellungen für externen Editor (nur bei Bearbeitung von Dateien auf dem Fernrechner)"
+ExternalEditorGroup.Caption="Einstellungen für externen Editor (nur bei Bearbeitung von Dateien der Gegenstelle)"
 ExternalEditorGroup.ExternalEditorTextCheck.Caption="&Textmodus erzwingen für im externen Editor bearbeitete Dateien"
 ExternalEditorGroup.SDIExternalEditorCheck.Caption="E&xterner Editor öffnet jede Datei in separatem Fenster (Prozess)"
 EditorGroup2.Caption="Editor"
@@ -429,29 +429,29 @@ SessionAdvancedPopupMenu.MenuItem14.Caption="Globale Einstellungen"
 RemoteFilePopup.FileNames3.Caption="&Dateinamen"
 RemoteFilePopup.FileNames3.Hint="Vorgang mit den Namen der markierten Datei(en)"
 ExplorerActions.RemoteCopyQueueAction.Caption="Herunterladen im &Hintergrund …"
-ExplorerActions.RemoteCopyQueueAction.Hint="Markierte Datei(en) im Hintergrund vom Fernrechner in das lokale Verzeichnis herunterladen"
+ExplorerActions.RemoteCopyQueueAction.Hint="Markierte Datei(en) im Hintergrund von Gegenstelle in das lokale Verzeichnis herunterladen"
 ExplorerActions.RemoteCopyFocusedQueueAction.Caption="Herunterladen im &Hintergrund …"
-ExplorerActions.RemoteCopyFocusedQueueAction.Hint="Markierte Datei(en) im Hintergrund vom Fernrechner in das lokale Verzeichnis herunterladen"
+ExplorerActions.RemoteCopyFocusedQueueAction.Hint="Markierte Datei(en) im Hintergrund von Gegenstelle in das lokale Verzeichnis herunterladen"
 ExplorerActions.LocalCopyQueueAction.Caption="Hochladen im &Hintergrund …"
-ExplorerActions.LocalCopyQueueAction.Hint="Markierte lokale Datei(en) im Hintergrund in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyQueueAction.Hint="Markierte lokale Datei(en) im Hintergrund in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.LocalCopyFocusedQueueAction.Caption="Hochladen im &Hintergrund …"
-ExplorerActions.LocalCopyFocusedQueueAction.Hint="Markierte lokale Datei(en) im Hintergrund in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyFocusedQueueAction.Hint="Markierte lokale Datei(en) im Hintergrund in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.RemoteCopyNonQueueAction.Caption="&Herunterladen …"
-ExplorerActions.RemoteCopyNonQueueAction.Hint="Herunterladen|Markierte Datei(en) vom Fernrechner herunterladen"
+ExplorerActions.RemoteCopyNonQueueAction.Hint="Herunterladen|Markierte Datei(en) von Gegenstelle herunterladen"
 ExplorerActions.RemoteCopyFocusedNonQueueAction.Caption="&Herunterladen …"
-ExplorerActions.RemoteCopyFocusedNonQueueAction.Hint="Herunterladen|Markierte Datei(en) vom Fernrechner herunterladen"
+ExplorerActions.RemoteCopyFocusedNonQueueAction.Hint="Herunterladen|Markierte Datei(en) von Gegenstelle herunterladen"
 ExplorerActions.LocalCopyNonQueueAction.Caption="&Hochladen …"
-ExplorerActions.LocalCopyNonQueueAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyNonQueueAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.LocalCopyFocusedNonQueueAction.Caption="&Hochladen …"
-ExplorerActions.LocalCopyFocusedNonQueueAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyFocusedNonQueueAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.LocalCopyFocusedAction.Caption="&Hochladen …"
-ExplorerActions.LocalCopyFocusedAction.Hint="Hochladen|Markierte lokale Datei(en) in in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyFocusedAction.Hint="Hochladen|Markierte lokale Datei(en) in in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.RemoteCopyFocusedAction.Caption="&Herunterladen …"
-ExplorerActions.RemoteCopyFocusedAction.Hint="Herunterladen|Markierte Datei(en) vom Fernrechner in lokales Verzeichnis herunterladen"
+ExplorerActions.RemoteCopyFocusedAction.Hint="Herunterladen|Markierte Datei(en) von Gegenstelle in lokales Verzeichnis herunterladen"
 ExplorerActions.RemoteMoveFocusedAction.Caption="Herunterladen und &löschen…"
-ExplorerActions.RemoteMoveFocusedAction.Hint="Herunterladen und löschen|Markierte Datei(en) vom Fernrechner in das lokale Verzeichnis herunterladen und Original löschen"
+ExplorerActions.RemoteMoveFocusedAction.Hint="Herunterladen und löschen|Markierte Datei(en) von Gegenstelle in das lokale Verzeichnis herunterladen und Original löschen"
 ExplorerActions.RemoteCopyAction.Caption="&Herunterladen …"
-ExplorerActions.RemoteCopyAction.Hint="Herunterladen|Markierte Datei(en) vom Fernrechner in das lokale Verzeichnis herunterladen"
+ExplorerActions.RemoteCopyAction.Hint="Herunterladen|Markierte Datei(en) von Gegenstelle in das lokale Verzeichnis herunterladen"
 ExplorerActions.BestFitColumnAction.Caption="&Optimale Breite"
 ExplorerActions.BestFitColumnAction.Hint="Optimale Breite|Die Spaltenbreite wird so angepasst, dass der gesamte Inhalt angezeigt wird"
 ExplorerActions.GoToTreeAction.Caption="Zur Baumansicht"
@@ -494,7 +494,7 @@ ExplorerActions.CurrentListAction.Hint="Liste|Liste anzeigen"
 ExplorerActions.CurrentReportAction.Caption="&Details"
 ExplorerActions.CurrentReportAction.Hint="Details|Details anzeigen"
 ExplorerActions.RemoteMoveToAction.Caption="&Verschieben nach …"
-ExplorerActions.RemoteMoveToAction.Hint="Verschieben|Markierte Datei(en) vom Fernrechner in ein anderes Verzeichnis auf dem Fernrechner verschieben oder umbenennen"
+ExplorerActions.RemoteMoveToAction.Hint="Verschieben|Markierte Datei(en) von Gegenstelle in ein anderes Verzeichnis der Gegenstelle verschieben oder umbenennen"
 ExplorerActions.CurrentDeleteFocusedAction.Caption="&Löschen"
 ExplorerActions.CurrentDeleteFocusedAction.Hint="Löschen|Markierte Datei(en) löschen"
 ExplorerActions.CurrentPropertiesFocusedAction.Caption="&Eigenschaften"
@@ -572,7 +572,7 @@ ExplorerActions.WorkspacesAction.Hint="Arbeitsbereich öffnen"
 ExplorerActions.PreferencesAction.Caption="&Einstellungen …"
 ExplorerActions.PreferencesAction.Hint="Einstellungen|Einstellungen anzeigen bzw. ändern"
 ExplorerActions.RemoteChangePathAction.Caption="&Verzeichnis wechseln"
-ExplorerActions.RemoteChangePathAction.Hint="Ein anderes Verzeichnis für das Fernrechner-Listenfenster auswählen"
+ExplorerActions.RemoteChangePathAction.Hint="Ein anderes Verzeichnis für das Gegenstellen-Listenfenster auswählen"
 ExplorerActions.LocalForwardAction.Caption="&Vor"
 ExplorerActions.LocalParentDirAction.Caption="&Übergeordnetes Verzeichnis"
 ExplorerActions.LocalParentDirAction.Hint="Übergeordnetes Verzeichnis|In das übergeordnete Verzeichnis wechseln"
@@ -617,9 +617,9 @@ ExplorerActions.CommanderRemoteHistoryBandAction.Hint="Symbolleiste „Verlauf
 ExplorerActions.CommanderRemoteNavigationBandAction.Caption="&Navigation"
 ExplorerActions.CommanderRemoteNavigationBandAction.Hint="Symbolleiste „Navigation“ anzeigen bzw. ausblenden"
 ExplorerActions.CommanderRemoteFileBandAction.Caption="&Datei"
-ExplorerActions.CommanderRemoteFileBandAction.Hint="Symbolleiste „Datei“ für Dateien vom Fernrechner anzeigen bzw. ausblenden"
+ExplorerActions.CommanderRemoteFileBandAction.Hint="Symbolleiste „Datei“ für Dateien der Gegenstelle anzeigen bzw. ausblenden"
 ExplorerActions.CommanderRemoteSelectionBandAction.Caption="Auswah&l"
-ExplorerActions.CommanderRemoteSelectionBandAction.Hint="Symbolleiste „Auswahl“ für Dateien vom Fernrechner anzeigen bzw. ausblenden"
+ExplorerActions.CommanderRemoteSelectionBandAction.Hint="Symbolleiste „Auswahl“ für Dateien der Gegenstelle anzeigen bzw. ausblenden"
 ExplorerActions.LocalStatusBarAction.Caption="Statuszeile"
 ExplorerActions.LocalStatusBarAction.Hint="Statuszeile im lokalen Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.RemoteStatusBarAction.Caption="Statuszeile"
@@ -637,23 +637,23 @@ ExplorerActions.LocalSortByTypeAction.Hint="Nach Dateityp sortieren|Lokales List
 ExplorerActions.LocalSortByChangedAction.Caption="&Änderung"
 ExplorerActions.LocalSortByChangedAction.Hint="Nach Dateiänderungszeit sortieren|Lokales Listenfenster nach Dateiänderungszeit sortieren"
 ExplorerActions.RemoteSortAscendingAction.Caption="&Aufsteigend"
-ExplorerActions.RemoteSortAscendingAction.Hint="Aufsteigend/Absteigend|Umschalten zwischen aufsteigender bzw. absteigender Sortierung im Fernrechner-Listenfenster"
+ExplorerActions.RemoteSortAscendingAction.Hint="Aufsteigend/Absteigend|Umschalten zwischen aufsteigender bzw. absteigender Sortierung im Gegenstellen-Listenfenster"
 ExplorerActions.RemoteSortByNameAction.Caption="&Name"
-ExplorerActions.RemoteSortByNameAction.Hint="Nach Namen sortieren|Fernrechner-Listenfenster nach Namen sortieren"
+ExplorerActions.RemoteSortByNameAction.Hint="Nach Namen sortieren|Gegenstellen-Listenfenster nach Namen sortieren"
 ExplorerActions.RemoteSortByExtAction.Caption="&Erweiterung"
-ExplorerActions.RemoteSortByExtAction.Hint="Nach Dateierweiterung sortieren|Fernrechner-Listenfenster nach Dateierweiterung sortieren"
+ExplorerActions.RemoteSortByExtAction.Hint="Nach Dateierweiterung sortieren|Gegenstellen-Listenfenster nach Dateierweiterung sortieren"
 ExplorerActions.RemoteSortBySizeAction.Caption="&Größe"
-ExplorerActions.RemoteSortBySizeAction.Hint="Nach Dateigröße sortieren|Fernrechner-Listenfenster nach Dateigröße sortieren"
+ExplorerActions.RemoteSortBySizeAction.Hint="Nach Dateigröße sortieren|Gegenstellen-Listenfenster nach Dateigröße sortieren"
 ExplorerActions.RemoteSortByRightsAction.Caption="&Rechte"
-ExplorerActions.RemoteSortByRightsAction.Hint="Nach Dateirechten sortieren|Fernrechner-Listenfenster nach Dateirechten sortieren"
+ExplorerActions.RemoteSortByRightsAction.Hint="Nach Dateirechten sortieren|Gegenstellen-Listenfenster nach Dateirechten sortieren"
 ExplorerActions.RemoteSortByChangedAction.Caption="&Änderungszeit"
-ExplorerActions.RemoteSortByChangedAction.Hint="Nach Dateiänderungszeit sortieren|Fernrechner-Listenfenster nach Dateiänderungszeit sortieren"
+ExplorerActions.RemoteSortByChangedAction.Hint="Nach Dateiänderungszeit sortieren|Gegenstellen-Listenfenster nach Dateiänderungszeit sortieren"
 ExplorerActions.RemoteSortByOwnerAction.Caption="&Eigentümer"
-ExplorerActions.RemoteSortByOwnerAction.Hint="Nach Dateieigentümer sortieren|Fernrechner-Listenfenster nach Dateieigentümer sortieren"
+ExplorerActions.RemoteSortByOwnerAction.Hint="Nach Dateieigentümer sortieren|Gegenstellen-Listenfenster nach Dateieigentümer sortieren"
 ExplorerActions.RemoteSortByGroupAction.Caption="&Gruppe"
-ExplorerActions.RemoteSortByGroupAction.Hint="Nach Gruppe sortieren|Fernrechner-Listenfenster nach Gruppe sortieren"
+ExplorerActions.RemoteSortByGroupAction.Hint="Nach Gruppe sortieren|Gegenstellen-Listenfenster nach Gruppe sortieren"
 ExplorerActions.RemoteSortByTypeAction.Caption="&Typ"
-ExplorerActions.RemoteSortByTypeAction.Hint="Nach Typ sortieren|Fernrechner-Listenfenster nach Dateityp sortieren"
+ExplorerActions.RemoteSortByTypeAction.Hint="Nach Typ sortieren|Gegenstellen-Listenfenster nach Dateityp sortieren"
 ExplorerActions.CurrentSortAscendingAction.Caption="&Aufsteigend"
 ExplorerActions.CurrentSortAscendingAction.Hint="Aufsteigend/Absteigend|Umschalten zwischen aufsteigender bzw. absteigender Sortierung im aktuellen Listenfenster"
 ExplorerActions.CurrentSortByNameAction.Caption="&Name"
@@ -669,7 +669,7 @@ ExplorerActions.CurrentSortByRightsAction.Hint="Nach Dateiattributen sortieren|A
 ExplorerActions.CurrentSortByChangedAction.Caption="&Änderungszeit"
 ExplorerActions.CurrentSortByChangedAction.Hint="Nach Dateiänderungszeit sortieren|Aktuelles Listenfenster nach Dateiänderungszeit sortieren"
 ExplorerActions.CurrentSortByOwnerAction.Caption="&Eigentümer"
-ExplorerActions.CurrentSortByOwnerAction.Hint="Nach Dateieigentümer sortieren|Aktuelles Listenfenster nach Dateieigentümer (nur Fernrechner-Listenfenster) sortieren"
+ExplorerActions.CurrentSortByOwnerAction.Hint="Nach Dateieigentümer sortieren|Aktuelles Listenfenster nach Dateieigentümer (nur Gegenstellen-Listenfenster) sortieren"
 ExplorerActions.CurrentSortByGroupAction.Caption="&Gruppe"
 ExplorerActions.CurrentSortByGroupAction.Hint="Nach Gruppe sortieren|Aktuelles Listenfenster nach Gruppe sortieren"
 ExplorerActions.SortColumnAscendingAction.Caption="&Aufsteigend"
@@ -683,23 +683,23 @@ ExplorerActions.HistoryPageAction.Hint="Öffnet den Webbrowser mit Informationen
 ExplorerActions.SaveCurrentSessionAction2.Caption="&Sitzung als Verbindungsziel speichern …"
 ExplorerActions.SaveCurrentSessionAction2.Hint="Sitzung als Verbindungsziel speichern|Aktuelle Sitzung als Verbindungsziel speichern"
 ExplorerActions.ShowHideRemoteNameColumnAction.Caption="&Name"
-ExplorerActions.ShowHideRemoteNameColumnAction.Hint="Namen anzeigen bzw. ausblenden|Spalte „Name“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteNameColumnAction.Hint="Namen anzeigen bzw. ausblenden|Spalte „Name“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteExtColumnAction.Caption="&Erweiterung"
-ExplorerActions.ShowHideRemoteExtColumnAction.Hint="Erweiterung anzeigen bzw. ausblenden|Spalte „Erweiterung“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteExtColumnAction.Hint="Erweiterung anzeigen bzw. ausblenden|Spalte „Erweiterung“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteSizeColumnAction.Caption="&Größe"
-ExplorerActions.ShowHideRemoteSizeColumnAction.Hint="Größe anzeigen bzw. ausblenden|Spalte „Größe“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteSizeColumnAction.Hint="Größe anzeigen bzw. ausblenden|Spalte „Größe“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteChangedColumnAction.Caption="Ge&ändert"
-ExplorerActions.ShowHideRemoteChangedColumnAction.Hint="Geändert anzeigen bzw. ausblenden|Spalte „Geändert“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteChangedColumnAction.Hint="Geändert anzeigen bzw. ausblenden|Spalte „Geändert“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteRightsColumnAction.Caption="&Rechte"
-ExplorerActions.ShowHideRemoteRightsColumnAction.Hint="Rechte anzeigen bzw. ausblenden|Spalte „Rechte“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteRightsColumnAction.Hint="Rechte anzeigen bzw. ausblenden|Spalte „Rechte“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteOwnerColumnAction.Caption="&Eigentümer"
-ExplorerActions.ShowHideRemoteOwnerColumnAction.Hint="Eigentümer anzeigen bzw. ausblenden|Spalte „Eigentümer“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteOwnerColumnAction.Hint="Eigentümer anzeigen bzw. ausblenden|Spalte „Eigentümer“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteGroupColumnAction.Caption="&Gruppe"
-ExplorerActions.ShowHideRemoteGroupColumnAction.Hint="Gruppe anzeigen bzw. ausblenden|Spalte „Gruppe“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteGroupColumnAction.Hint="Gruppe anzeigen bzw. ausblenden|Spalte „Gruppe“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteLinkTargetColumnAction.Caption="&Verknüpfungsziel"
-ExplorerActions.ShowHideRemoteLinkTargetColumnAction.Hint="Verknüpfungsziel anzeigen bzw. ausblenden|Spalte „Verknüpfungsziel“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteLinkTargetColumnAction.Hint="Verknüpfungsziel anzeigen bzw. ausblenden|Spalte „Verknüpfungsziel“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideRemoteTypeColumnAction.Caption="&Typ"
-ExplorerActions.ShowHideRemoteTypeColumnAction.Hint="Typ anzeigen bzw. ausblenden|Spalte „Typ“ im Fernrechner-Listenfenster anzeigen bzw. ausblenden"
+ExplorerActions.ShowHideRemoteTypeColumnAction.Hint="Typ anzeigen bzw. ausblenden|Spalte „Typ“ im Gegenstellen-Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideLocalNameColumnAction.Caption="&Name"
 ExplorerActions.ShowHideLocalNameColumnAction.Hint="Namen anzeigen bzw. ausblenden|Spalte „Namen“ im lokalen Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.ShowHideLocalExtColumnAction.Caption="&Erweiterung"
@@ -713,15 +713,15 @@ ExplorerActions.ShowHideLocalChangedColumnAction.Hint="Geändert anzeigen bzw. a
 ExplorerActions.ShowHideLocalAttrColumnAction.Caption="&Attribute"
 ExplorerActions.ShowHideLocalAttrColumnAction.Hint="Attribute anzeigen bzw. ausblenden|Spalte „Attribute“ im lokalen Listenfenster anzeigen bzw. ausblenden"
 ExplorerActions.CompareDirectoriesAction.Caption="&Verzeichnisse vergleichen"
-ExplorerActions.CompareDirectoriesAction.Hint="Verzeichnisse vergleichen|Markiert unterschiedliche Dateien im lokalen und im Verzeichnis auf dem Fernrechner"
-ExplorerActions.SynchronizeAction.Caption="Verzeichnis auf dem Fernrechner a&ktuell halten …"
-ExplorerActions.SynchronizeAction.Hint="Verzeichnis auf dem Fernrechner aktuell halten|Verzeichnis auf dem Fernrechner aktuell halten"
+ExplorerActions.CompareDirectoriesAction.Hint="Verzeichnisse vergleichen|Markiert unterschiedliche Dateien im lokalen und im Verzeichnis der Gegenstelle"
+ExplorerActions.SynchronizeAction.Caption="Verzeichnis der Gegenstelle a&ktuell halten …"
+ExplorerActions.SynchronizeAction.Hint="Verzeichnis der Gegenstelle aktuell halten|Verzeichnis der Gegenstelle aktuell halten"
 ExplorerActions.ForumPageAction.Caption="&Supportforum"
 ExplorerActions.ForumPageAction.Hint="Öffnet den Webbrowser mit der Produkt-Supportseite"
 ExplorerActions.LocalAddBookmarkAction.Caption="&Pfad zu Lesezeichen hinzufügen"
 ExplorerActions.LocalAddBookmarkAction.Hint="Pfad zu Lesezeichen hinzufügen|Pfad des lokalen Verzeichnisses zur Lesezeichenliste hinzufügen"
 ExplorerActions.RemoteAddBookmarkAction.Caption="&Pfad zu Lesezeichen hinzufügen"
-ExplorerActions.RemoteAddBookmarkAction.Hint="Pfad zu Lesezeichen hinzufügen|Pfad des Verzeichnisses auf dem Fernrechner zur Lesezeichenliste hinzufügen"
+ExplorerActions.RemoteAddBookmarkAction.Hint="Pfad zu Lesezeichen hinzufügen|Pfad des Verzeichnisses der Gegenstelle zur Lesezeichenliste hinzufügen"
 ExplorerActions.ConsoleAction.Caption="&Terminal öffnen"
 ExplorerActions.ConsoleAction.Hint="Terminal öffnen|Öffnet ein Terminalfenster zum Ausführen einfacher Befehle (ausgenommen Programme, die eine interaktive Eingabe erfordern)"
 ExplorerActions.PuttyAction.Caption="In &PuTTY öffnen"
@@ -731,7 +731,7 @@ ExplorerActions.LocalExploreDirectoryAction.Hint="Öffnet den Windows Explorer m
 ExplorerActions.CurrentOpenAction.Caption="&Öffnen"
 ExplorerActions.CurrentOpenAction.Hint="Dokument öffnen|Öffnet das ausgewählte Dokument mit der zugeordneten Anwendung"
 ExplorerActions.SynchronizeBrowsingAction.Caption="Synchronisierte &Verzeichniswechsel"
-ExplorerActions.SynchronizeBrowsingAction.Hint="Synchronisierte Verzeichniswechsel|Koppelt die Anzeige des lokalen und des Verzeichnisses auf dem Fernrechner"
+ExplorerActions.SynchronizeBrowsingAction.Hint="Synchronisierte Verzeichniswechsel|Koppelt die Anzeige des lokalen und des Verzeichnisses der Gegenstelle"
 ExplorerActions.CurrentAddEditLinkAction.Caption="&Verknüpfung bearbeiten …"
 ExplorerActions.CurrentAddEditLinkAction.Hint="Hinzufügen/Bearbeiten einer Verknüpfung|Eine neue Verknüpfung hinzufügen oder eine ausgewählte Verknüpfung bearbeiten"
 ExplorerActions.CurrentAddEditLinkContextAction.Caption="&Verknüpfung bearbeiten …"
@@ -763,9 +763,9 @@ ExplorerActions.FileSystemInfoAction.Hint="Zeigt Informationen zu Server und Pro
 ExplorerActions.ClearCachesAction.Caption="&Zwischenspeicher bereinigen"
 ExplorerActions.ClearCachesAction.Hint="Löscht den Zwischenspeicher für Verzeichnisinhalte und -änderungen"
 ExplorerActions.FullSynchronizeAction.Caption="&Synchronisieren …"
-ExplorerActions.FullSynchronizeAction.Hint="Synchronisiert das lokale mit dem Verzeichnis auf dem Fernrechner"
+ExplorerActions.FullSynchronizeAction.Hint="Synchronisiert das lokale mit dem Verzeichnis der Gegenstelle"
 ExplorerActions.RemoteMoveToFocusedAction.Caption="&Verschiebe …"
-ExplorerActions.RemoteMoveToFocusedAction.Hint="Verschieben|Markierte Datei(en) auf dem Fernrechner in ein anderes Verzeichnis verschieben oder umbenennen"
+ExplorerActions.RemoteMoveToFocusedAction.Hint="Verschieben|Markierte Datei(en) der Gegenstelle in ein anderes Verzeichnis verschieben oder umbenennen"
 ExplorerActions.ShowHiddenFilesAction.Caption="Ver&steckte Dateien anzeigen bzw. ausblenden"
 ExplorerActions.ShowHiddenFilesAction.Hint="Anzeige versteckter Dateien ein- bzw. ausschalten"
 ExplorerActions.FormatSizeBytesNoneAction.Caption="&Bytes"
@@ -773,7 +773,7 @@ ExplorerActions.FormatSizeBytesNoneAction.Hint="Dateigröße in Byte anzeigen"
 ExplorerActions.LocalPathToClipboardAction.Caption="&Verzeichnispfad kopieren"
 ExplorerActions.LocalPathToClipboardAction.Hint="Lokalen Verzeichnispfad in die Zwischenablage kopieren"
 ExplorerActions.RemotePathToClipboardAction.Caption="&Verzeichnispfad kopieren"
-ExplorerActions.RemotePathToClipboardAction.Hint="Verzeichnispfad des Fernrechners in die Zwischenablage kopieren"
+ExplorerActions.RemotePathToClipboardAction.Hint="Verzeichnispfad der Gegenstelle in die Zwischenablage kopieren"
 ExplorerActions.FileListToCommandLineAction.Caption="&Einfügen in die Eingabeaufforderung"
 ExplorerActions.FileListToCommandLineAction.Hint="Fügt die Namen der markierten Dateien in die Eingabeaufforderungen ein"
 ExplorerActions.FileListToClipboardAction.Caption="&Kopieren"
@@ -807,15 +807,15 @@ ExplorerActions.NewFileAction.Hint="Neue Datei|Eine neue Datei erstellen und die
 ExplorerActions.EditorListCustomizeAction.Caption="&Anpassen …"
 ExplorerActions.EditorListCustomizeAction.Hint="Editoren anpassen"
 ExplorerActions.RemoteCopyToFocusedAction.Caption="&Duplizieren …"
-ExplorerActions.RemoteCopyToFocusedAction.Hint="Duplizieren|Markierte Datei(en) vom Fernrechner in ein anderes Verzeichnis auf dem Fernrechner duplizieren oder umbenennen"
+ExplorerActions.RemoteCopyToFocusedAction.Hint="Duplizieren|Markierte Datei(en) von Gegenstelle in ein anderes Verzeichnis der Gegenstelle duplizieren oder umbenennen"
 ExplorerActions.RemoteCopyToAction.Caption="&Duplizieren …"
-ExplorerActions.RemoteCopyToAction.Hint="Duplizieren|Markierte Datei(en) vom Fernrechner in ein anderes Verzeichnis auf dem Fernrechner duplizieren oder umbenennen"
+ExplorerActions.RemoteCopyToAction.Hint="Duplizieren|Markierte Datei(en) von Gegenstelle in ein anderes Verzeichnis der Gegenstelle duplizieren oder umbenennen"
 ExplorerActions.FileGenerateUrlAction2.Caption="Datei-&URL wird generiert …"
 ExplorerActions.FileGenerateUrlAction2.Hint="Erzeugt URLs der markierten Datei(en)"
 ExplorerActions.TableOfContentsAction.Caption="&Inhalt"
 ExplorerActions.TableOfContentsAction.Hint="Öffnet einen Webbrowser und zeigt den Inhalt der Dokumentation an"
 ExplorerActions.LocalCopyAction.Caption="&Hochladen …"
-ExplorerActions.LocalCopyAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis auf dem Fernrechner hochladen"
+ExplorerActions.LocalCopyAction.Hint="Hochladen|Markierte lokale Datei(en) in das Verzeichnis der Gegenstelle hochladen"
 ExplorerActions.CurrentDeleteAlternativeAction.Caption="&Löschen"
 ExplorerActions.CurrentDeleteAlternativeAction.Hint="Löschen|Markierte Datei(en) löschen"
 ExplorerActions.CurrentEditWithAction.Caption="Bearbeiten &mit …"
@@ -839,7 +839,7 @@ ExplorerActions.CustomCommandsBandAction.Hint="Symbolleiste „Befehle“ anzeig
 ExplorerActions.ColorMenuAction.Caption="F&arbe"
 ExplorerActions.ColorMenuAction.Hint="Ändert die Farbe der aktiven Sitzung"
 ExplorerActions.AutoReadDirectoryAfterOpAction.Caption="Verzeichnis auto&matisch aktualisieren"
-ExplorerActions.AutoReadDirectoryAfterOpAction.Hint="Schaltet die automatische Aktualisierung des Verzeichnisses auf dem Fernrechner nach einem Vorgang ein oder aus"
+ExplorerActions.AutoReadDirectoryAfterOpAction.Hint="Schaltet die automatische Aktualisierung des Verzeichnisses der Gegenstelle nach einem Vorgang ein oder aus"
 ExplorerActions.QueueItemPauseAction.Caption="&Anhalten"
 ExplorerActions.QueueItemPauseAction.Hint="Hält die Übertragung des markierten Listenelements an"
 ExplorerActions.QueueItemResumeAction.Caption="&Fortsetzen"
@@ -895,7 +895,7 @@ ExplorerActions.LocalRenameAction.Hint="Umbenennen|Ausgewählte lokale Dateien u
 ExplorerActions.LocalEditAction.Caption="&Bearbeiten"
 ExplorerActions.LocalEditAction.Hint="Bearbeiten|Ausgewählte lokale Dateien bearbeiten"
 ExplorerActions.LocalMoveAction.Caption="Hochladen und l&öschen …"
-ExplorerActions.LocalMoveAction.Hint="Hochladen und löschen|Markierte lokale Dateien in Verzeichnis auf dem Fernrechner hochladen und Originale löschen"
+ExplorerActions.LocalMoveAction.Hint="Hochladen und löschen|Markierte lokale Dateien in Verzeichnis der Gegenstelle hochladen und Originale löschen"
 ExplorerActions.LocalCreateDirAction2.Caption="&Verzeichnis …"
 ExplorerActions.LocalCreateDirAction2.Hint="Verzeichnis erstellen|Neues lokales Verzeichnis erstellen"
 ExplorerActions.LocalDeleteAction.Caption="&Löschen"
@@ -905,27 +905,27 @@ ExplorerActions.LocalPropertiesAction.Hint="Eigenschaften|Eigenschaften der mark
 ExplorerActions.LocalAddEditLinkAction2.Caption="&Verknüpfung …"
 ExplorerActions.LocalAddEditLinkAction2.Hint="Verknüpfung hinzufügen/bearbeiten|Neue lokale Verknüpfung hinzufügen oder bearbeiten"
 ExplorerActions.RemoteRenameAction.Caption="&Umbenennen"
-ExplorerActions.RemoteRenameAction.Hint="Umbenennen|Markierte Datei auf dem Fernrechner umbenennen"
+ExplorerActions.RemoteRenameAction.Hint="Umbenennen|Markierte Datei der Gegenstelle umbenennen"
 ExplorerActions.RemoteEditAction.Caption="&Bearbeiten"
-ExplorerActions.RemoteEditAction.Hint="Bearbeiten|Markierte Datei(en) auf dem Fernrechner bearbeiten"
+ExplorerActions.RemoteEditAction.Hint="Bearbeiten|Markierte Datei(en) der Gegenstelle bearbeiten"
 ExplorerActions.RemoteMoveAction.Caption="Herunterladen und &löschen …"
-ExplorerActions.RemoteMoveAction.Hint="Herunterladen und löschen|Ausgewählte Datei(en) vom Fernrechner in das lokale Verzeichnis herunterladen und Original(e) auf dem Fernrechner löschen"
+ExplorerActions.RemoteMoveAction.Hint="Herunterladen und löschen|Ausgewählte Datei(en) von Gegenstelle in das lokale Verzeichnis herunterladen und Original(e) der Gegenstelle löschen"
 ExplorerActions.RemoteCreateDirAction2.Caption="&Verzeichnis …"
-ExplorerActions.RemoteCreateDirAction2.Hint="Verzeichnis anlegen|Neues Verzeichnis auf dem Fernrechner anlegen"
+ExplorerActions.RemoteCreateDirAction2.Hint="Verzeichnis anlegen|Neues Verzeichnis der Gegenstelle anlegen"
 ExplorerActions.RemoteDeleteAction.Caption="&Löschen"
-ExplorerActions.RemoteDeleteAction.Hint="Löschen|Ausgewählte Datei(en) auf dem Fernrechner löschen"
+ExplorerActions.RemoteDeleteAction.Hint="Löschen|Ausgewählte Datei(en) der Gegenstelle löschen"
 ExplorerActions.RemotePropertiesAction.Caption="&Eigenschaften"
-ExplorerActions.RemotePropertiesAction.Hint="Eigenschaften|Berechtigungen, Besitz oder anderen Eigenschaften der markierten Datei(en) auf dem Fernrechner anzeigen bzw. bearbeiten"
+ExplorerActions.RemotePropertiesAction.Hint="Eigenschaften|Berechtigungen, Besitz oder anderen Eigenschaften der markierten Datei(en) der Gegenstelle anzeigen bzw. bearbeiten"
 ExplorerActions.RemoteAddEditLinkAction2.Caption="&Verknüpfung …"
-ExplorerActions.RemoteAddEditLinkAction2.Hint="Verknüpfung hinzufügen bzw. bearbeiten|Neue Verknüpfung auf dem Fernrechner hinzufügen / Markierte Verknüpfung auf dem Fernrechner bearbeiten"
+ExplorerActions.RemoteAddEditLinkAction2.Hint="Verknüpfung hinzufügen bzw. bearbeiten|Neue Verknüpfung auf der Gegenstelle hinzufügen / Markierte Verknüpfung auf der Gegenstelle bearbeiten"
 ExplorerActions.RemoteSelectAction.Caption="Dateien auswählen …"
-ExplorerActions.RemoteSelectAction.Hint="Auswählen|Dateien auf dem Fernrechner mit Maske auswählen"
+ExplorerActions.RemoteSelectAction.Hint="Auswählen|Dateien der Gegenstelle mit Maske auswählen"
 ExplorerActions.RemoteUnselectAction.Caption="&Markierung entfernen …"
-ExplorerActions.RemoteUnselectAction.Hint="Abwählen|Dateien auf dem Fernrechner mit Maske abwählen"
+ExplorerActions.RemoteUnselectAction.Hint="Abwählen|Dateien der Gegenstelle mit Maske abwählen"
 ExplorerActions.RemoteSelectAllAction.Caption="&Alles markieren"
-ExplorerActions.RemoteSelectAllAction.Hint="Alle Dateien auf dem Fernrechner auswählen"
+ExplorerActions.RemoteSelectAllAction.Hint="Alle Dateien der Gegenstelle auswählen"
 ExplorerActions.LocalMoveFocusedAction.Caption="Hochladen und &löschen …"
-ExplorerActions.LocalMoveFocusedAction.Hint="Hochladen und löschen|Ausgewählte lokale Dateien in Verzeichnis auf dem Fernrechner hochladen und Originale lokal löschen"
+ExplorerActions.LocalMoveFocusedAction.Hint="Hochladen und löschen|Ausgewählte lokale Dateien in Verzeichnis auf der Gegenstelle hochladen und Originale lokal löschen"
 ExplorerActions.CurrentEditInternalFocusedAction.Caption="Interner Editor"
 ExplorerActions.CurrentEditInternalFocusedAction.Hint="Bearbeiten (intern)|Markierte Datei(en) mit dem internen Editor bearbeiten"
 ExplorerActions.CurrentSystemMenuFocusedAction.Caption="&System-Kontextmenü"
@@ -964,8 +964,8 @@ ExplorerBarPopup.Queue7.Caption="Übertragungs&liste"
 ExplorerBarPopup.Queue7.Hint="Konfigurieren der Übertragungsliste"
 CommanderBarPopup.LocalPanel1.Caption="&Lokales Listenfenster"
 CommanderBarPopup.LocalPanel1.Hint="Layout des lokalen Listenfensters ändern"
-CommanderBarPopup.RemotePanel2.Caption="&Fernrechner-Listenfenster"
-CommanderBarPopup.RemotePanel2.Hint="Layout des Fernrechner-Listenfensters ändern"
+CommanderBarPopup.RemotePanel2.Caption="&Gegenstellen-Listenfenster"
+CommanderBarPopup.RemotePanel2.Hint="Layout des Gegenstellen-Listenfensters ändern"
 CommanderBarPopup.Options1.Caption="Übertragungs&liste"
 CommanderBarPopup.Options1.Hint="Übertragungsliste konfigurieren"
 RemotePanelPopup.TBXSubmenuItem8.Caption="&Wechseln zu"
@@ -1063,8 +1063,8 @@ MainPanel.PageControl.LogSheet.ActionsLoggingGroup.EnableActionsLoggingCheck.Cap
 MainPanel.PageControl.GeneralSheet.Caption="Oberfläche"
 MainPanel.PageControl.GeneralSheet.InterfaceChangeLabel.Caption="Änderungen werden beim nächsten Start wirksam."
 MainPanel.PageControl.GeneralSheet.InterfaceGroup.Caption="Benutzerschnittstelle"
-MainPanel.PageControl.GeneralSheet.InterfaceGroup.CommanderDescriptionLabel2.Caption="- Zwei Listenfenster (links lokales, rechts Verzeichnis auf dem Fernrechner)\r\n- Tastaturkürzel wie beim Norton Commander (u. a. wie Total Commander, Midnight Commander …)\r\n- Drag && Drop von und nach beiden Listenfenstern"
-MainPanel.PageControl.GeneralSheet.InterfaceGroup.ExplorerDescriptionLabel.Caption="- Nur Verzeichnis auf dem Fernrechner\r\n- Tastaturkürzel wie im Windows Explorer\r\n- Drag && Drop"
+MainPanel.PageControl.GeneralSheet.InterfaceGroup.CommanderDescriptionLabel2.Caption="- Zwei Listenfenster (links lokales, rechts Verzeichnis der Gegenstelle)\r\n- Tastaturkürzel wie beim Norton Commander (u. a. wie Total Commander, Midnight Commander …)\r\n- Drag && Drop von und nach beiden Listenfenstern"
+MainPanel.PageControl.GeneralSheet.InterfaceGroup.ExplorerDescriptionLabel.Caption="- Nur Verzeichnis der Gegenstelle\r\n- Tastaturkürzel wie im Windows Explorer\r\n- Drag && Drop"
 MainPanel.PageControl.GeneralSheet.InterfaceGroup.CommanderInterfaceButton2.Caption="&Commander"
 MainPanel.PageControl.GeneralSheet.InterfaceGroup.ExplorerInterfaceButton2.Caption="&Explorer"
 MainPanel.PageControl.GeneralSheet.ThemeGroup.Caption="Design"
@@ -1101,7 +1101,7 @@ MainPanel.PageControl.CommanderSheet.Caption="Commander"
 MainPanel.PageControl.CommanderSheet.Label3.Caption="Die Einstellungen auf dieser Seite gelten nur für die Commander-Benutzerschnittstelle."
 MainPanel.PageControl.CommanderSheet.PanelsGroup.Caption="Listenfenster"
 MainPanel.PageControl.CommanderSheet.PanelsGroup.Label8.Caption="Auswahl nach &Explorer-Art:"
-MainPanel.PageControl.CommanderSheet.PanelsGroup.SwappedPanelsCheck.Caption="Listenfenster &vertauschen (Lokal rechts, Fernrechner links)"
+MainPanel.PageControl.CommanderSheet.PanelsGroup.SwappedPanelsCheck.Caption="Listenfenster &vertauschen (Lokal rechts, Gegenstelle links)"
 MainPanel.PageControl.CommanderSheet.PanelsGroup.NortonLikeModeCombo.Items.Strings.0="Niemals"
 MainPanel.PageControl.CommanderSheet.PanelsGroup.NortonLikeModeCombo.Items.Strings.1="Nur Maus"
 MainPanel.PageControl.CommanderSheet.PanelsGroup.NortonLikeModeCombo.Items.Strings.2="Maus und Tastatur"
@@ -1357,7 +1357,7 @@ ListViewMenu.Copy.Caption="&Kopieren"
 
 [RemoteTransfer.dfm]
 Group.SessionLabel.Caption="&Sitzung des Ziels:"
-Group.Label3.Caption="Ziel&pfad (Fernrechner):"
+Group.Label3.Caption="Ziel&pfad (Gegenstelle):"
 Group.NotDirectCopyCheck.Caption="Über lokale &temporäre Kopie duplizieren"
 OkButton.Caption="OK"
 CancelButton.Caption="Abbrechen"
@@ -1420,17 +1420,17 @@ TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem10.Hint="Symbolleisten anzeige
 TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem11.Caption="&Lokales Listenfenster"
 TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem11.Hint="Ändern der Layoutoptionen des lokalen Listenfensters"
 TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem12.Caption="Entfe&rntes Listenfenster"
-TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem12.Hint="Ändern der Layoutoptionen des Fernrechner-Listenfensters"
+TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem12.Hint="Ändern der Layoutoptionen des Gegenstellen-Listenfensters"
 TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem14.Caption="&Warteschlange"
 TopDock.MenuToolbar.TBXSubmenuItem9.TBXSubmenuItem14.Hint="Konfiguration der Warteschlange"
-TopDock.MenuToolbar.RemoteMenuButton.Caption="&Fernrechner"
-TopDock.MenuToolbar.RemoteMenuButton.Hint="Ändern des Layouts des Fernrechner-Listenfensters oder des angezeigten Verzeichnisses"
+TopDock.MenuToolbar.RemoteMenuButton.Caption="&Gegenstelle"
+TopDock.MenuToolbar.RemoteMenuButton.Hint="Ändern des Layouts des Gegenstellen-Listenfensters oder des angezeigten Verzeichnisses"
 TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem15.Caption="&Wechseln zu"
 TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem15.Hint="Zu einem bestimmten Verzeichnis wechseln"
 TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem16.Caption="&Sortieren nach"
-TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem16.Hint="Ändern der Anzeigereihenfolge im Fernrechner-Listenfenster"
+TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem16.Hint="Ändern der Anzeigereihenfolge im Gegenstellen-Listenfenster"
 TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem17.Caption="&Spalten anzeigen"
-TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem17.Hint="Wählen der Spalten, die im Fernrechner-Listenfenster angezeigt werden"
+TopDock.MenuToolbar.RemoteMenuButton.TBXSubmenuItem17.Hint="Wählen der Spalten, die im Gegenstellen-Listenfenster angezeigt werden"
 TopDock.MenuToolbar.TBXSubmenuItem22.Caption="&Hilfe"
 TopDock.MenuToolbar.TBXSubmenuItem22.Hint="Hilfe"
 TopDock.PreferencesToolbar.Caption="Einstellungen"
@@ -1445,13 +1445,13 @@ TopDock.CustomCommandsToolbar.Caption="Befehle"
 RemotePanel.RemotePanelSplitter.Hint="Ziehen, um die Größe des Verzeichnisbaums zu ändern. Doppelklick setzt die Höhe der Verzeichnisbäume gleich"
 RemotePanel.RemoteStatusBar.item1.Hint="Klicken, um versteckte Dateien anzuzeigen"
 RemotePanel.RemoteStatusBar.item2.Hint="Klicken, um den Filter zu bearbeiten oder zu löschen"
-RemotePanel.RemoteTopDock.RemoteHistoryToolbar.Caption="Fernrechner Verlauf"
-RemotePanel.RemoteTopDock.RemoteNavigationToolbar.Caption="Fernrechner Navigation"
-RemotePanel.RemoteTopDock.RemotePathToolbar.Caption="Fernrechner Pfad"
-RemotePanel.RemoteTopDock.RemoteFileToolbar.Caption="Fernrechner Dateien"
+RemotePanel.RemoteTopDock.RemoteHistoryToolbar.Caption="Gegenstelle - Verlauf"
+RemotePanel.RemoteTopDock.RemoteNavigationToolbar.Caption="Gegenstelle - Navigation"
+RemotePanel.RemoteTopDock.RemotePathToolbar.Caption="Gegenstelle - Pfad"
+RemotePanel.RemoteTopDock.RemoteFileToolbar.Caption="Gegenstelle - Dateien"
 RemotePanel.RemoteTopDock.RemoteFileToolbar.RemoteNewSubmenuItem.Caption="&Neu"
 RemotePanel.RemoteTopDock.RemoteFileToolbar.RemoteNewSubmenuItem.Hint="Objekt erstellen|Erstellt ein neues Objekt"
-RemotePanel.RemoteTopDock.RemoteSelectionToolbar.Caption="Fernrechner Auswahl"
+RemotePanel.RemoteTopDock.RemoteSelectionToolbar.Caption="Gegenstelle - Auswahl"
 LocalPanel.LocalPanelSplitter.Hint="Ziehen, um die Größe des Verzeichnisbaums zu ändern. Doppelklick setzt die Höhe der Verzeichnisbäume gleich"
 LocalPanel.LocalStatusBar.item1.Hint="Klicken, um versteckte Dateien anzuzeigen"
 LocalPanel.LocalStatusBar.item2.Hint="Klicken, um den Filter zu bearbeiten oder zu löschen"
@@ -1540,30 +1540,30 @@ MainPanel.PageControl.EnvironmentSheet.EnvironmentGroup.TimeDifferenceMinutesLab
 MainPanel.PageControl.EnvironmentSheet.EnvironmentGroup.TimeDifferenceAutoCheck.Caption="&Automatisch erkennen"
 MainPanel.PageControl.EnvironmentSheet.EnvironmentGroup.TrimVMSVersionsCheck.Caption="VMS-Versionsnummern &kürzen"
 MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.Caption="Sommerzeit"
-MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeUnixCheck.Caption="Fernrechner Zeitstempel &nach lokalen Vorgaben (Unix) korrigieren"
-MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeWinCheck.Caption="Fernrechner Zeitstempel nach &Sommerzeit (Windows) korrigieren"
-MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeKeepCheck.Caption="Fernrechner Zeitstempel (Unix) übernehmen"
+MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeUnixCheck.Caption="Zeitstempel der Gegenstelle &nach lokalen Vorgaben korrigieren"
+MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeWinCheck.Caption="Zeitstempel der Gegenstelle nach &Sommerzeit korrigieren"
+MainPanel.PageControl.EnvironmentSheet.DSTModeGroup.DSTModeKeepCheck.Caption="Zeitstempel der Gegenstelle erhalten"
 MainPanel.PageControl.EnvironmentSheet.PuttyGroup.PuttySettingsLabel.Caption="&PuTTY-Terminaleinstellungen:"
 MainPanel.PageControl.EnvironmentSheet.PuttyGroup.PuttySettingsButton.Caption="In PuTTY &bearbeiten …"
 MainPanel.PageControl.DirectoriesSheet.Caption="Verzeichnisse"
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.Caption="Verzeichnisse"
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.LocalDirectoryLabel.Caption="&Lokales Verzeichnis:"
-MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.RemoteDirectoryLabel.Caption="Fe&rnrechner Verzeichnis:"
+MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.RemoteDirectoryLabel.Caption="Ve&rzeichnis der Gegenstelle:"
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.LocalDirectoryDescLabel.Caption="Die Explorer-Oberfläche verwendet das lokale Verzeichnis nicht."
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.LocalDirectoryEdit.DialogText="Anfängliches lokales Verzeichnis wählen."
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.UpdateDirectoriesCheck.Caption="Letztes Verzeichnis m&erken"
 MainPanel.PageControl.DirectoriesSheet.DirectoriesGroup.SynchronizeBrowsingCheck.Caption="Syn&chronisierter Verzeichniswechsel"
 MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.Caption="Verzeichnisoptionen"
-MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.CacheDirectoriesCheck.Caption="&Besuchte Fernrechner Verzeichnisse zwischenspeichern"
+MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.CacheDirectoriesCheck.Caption="&Besuchte Verzeichnisse der Gegenstelle zwischenspeichern"
 MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.CacheDirectoryChangesCheck.Caption="Verzeichniswechsel &zwischenspeichern"
 MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.ResolveSymlinksCheck.Caption="Symbolische Li&nks auflösen"
 MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.PreserveDirectoryChangesCheck.Caption="&Permanent"
 MainPanel.PageControl.DirectoriesSheet.DirectoryOptionsGroup.FollowDirectorySymlinksCheck.Caption="Symbolischen Links auf Verzeichnisse &folgen"
 MainPanel.PageControl.RecycleBinSheet.Caption="Papierkorb"
 MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.Caption="Papierkorb"
-MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.RecycleBinPathLabel.Caption="&Fernrechner Papierkorb:"
-MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.DeleteToRecycleBinCheck.Caption="&Fernrechner Dateien beim Löschen in den Papierkorb verschieben"
-MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.OverwrittenToRecycleBinCheck.Caption="Fernrechner Dateien beim &Überschreiben in den Papierkorb (nur SFTP)"
+MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.RecycleBinPathLabel.Caption="Papierkorb der &Gegenstelle:"
+MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.DeleteToRecycleBinCheck.Caption="Dateien der &Gegenstelle beim Löschen in den Papierkorb verschieben"
+MainPanel.PageControl.RecycleBinSheet.RecycleBinGroup.OverwrittenToRecycleBinCheck.Caption="Dateien der Gegenstelle beim &Überschreiben in den Papierkorb (nur SFTP)"
 MainPanel.PageControl.EncryptionSheet.Caption="Verschlüsselung"
 MainPanel.PageControl.EncryptionSheet.EncryptFilesCheck.Caption="Dateien &verschlüsseln"
 MainPanel.PageControl.EncryptionSheet.EncryptFilesGroup.Caption="Verschlüsselungseinstellungen"
@@ -1740,7 +1740,7 @@ HelpButton.Caption="&Hilfe"
 [Synchronize.dfm]
 DirectoriesGroup.Caption="Verzeichnisse"
 DirectoriesGroup.LocalDirectoryLabel.Caption="Änderungen im lokalen Verzeichnis überwachen …"
-DirectoriesGroup.RemoteDirectoryLabel.Caption="… &und diese automatisch im Fernrechner Verzeichnis übernehmen"
+DirectoriesGroup.RemoteDirectoryLabel.Caption="… &und diese automatisch ins Verzeichnis der Gegenstelle übernehmen"
 DirectoriesGroup.LocalDirectoryBrowseButton.Caption="&Auswählen …"
 StopButton.Caption="&Stopp"
 CancelButton.Caption="Schließen"
@@ -1771,16 +1771,16 @@ ListView.item0.Caption="Name"
 ListView.item1.Caption="Lokaler Ordner"
 ListView.item2.Caption="Größe"
 ListView.item3.Caption="Geändert"
-ListView.item5.Caption="Fernrechner Ordner"
+ListView.item5.Caption="Ordner der Gegenstelle"
 ListView.item6.Caption="Größe"
 ListView.item7.Caption="Geändert"
 StatusBar.Hint="Klicken, um alle Aktionen dieses Typs auszuwählen"
 StatusBar.item0.Text="Synchronisationsaktionen gesamt"
 StatusBar.item1.Text="Neue lokale Dateien"
-StatusBar.item2.Text="Neue Fernrechner Dateien"
+StatusBar.item2.Text="Neue Dateien auf der Gegenstelle"
 StatusBar.item3.Text="Aktualisierte lokale Dateien"
-StatusBar.item4.Text="Aktualisierte Fernrechner Dateien"
-StatusBar.item5.Text="Veraltete Fernrechner Dateien"
+StatusBar.item4.Text="Aktualisierte Dateien der Gegenstelle"
+StatusBar.item5.Text="Veraltete Dateien der Gegenstelle"
 StatusBar.item6.Text="Veraltete lokale Dateien"
 ActionList.UncheckAction.Caption="A&bwählen"
 ActionList.CheckAction.Caption="A&uswählen"
@@ -1794,12 +1794,12 @@ ActionList.MoveAction.Caption="&Verschieben"
 ActionList.CheckDirectoryAction.Caption="Alle Aktionen in &diesem Ordner auswählen"
 ActionList.UncheckDirectoryAction.Caption="Alle Aktionen in diesem &Ordner abwählen"
 ActionList.BrowseLocalAction.Caption="&Lokales Verzeichnis durchsuchen"
-ActionList.BrowseRemoteAction.Caption="&Fernrechner Verzeichnis durchsuchen"
+ActionList.BrowseRemoteAction.Caption="Verzeichnis der &Gegenstelle durchsuchen"
 
 [SynchronizeProgress.dfm]
 TimeLeftLabelLabel.Caption="Verbleibende Zeit:"
 Label1.Caption="Lokal"
-Label2.Caption="Fernrechner"
+Label2.Caption="Gegenstelle"
 StartTimeLabelLabel.Caption="Startzeit"
 Label3.Caption="Verstrichene Zeit"
 ToolbarPanel.Dock.Toolbar.CancelItem.Caption="Abbrechen"
@@ -1816,8 +1816,8 @@ IDS_ERRORMSG_TIMEOUT="Zeit abgelaufen"
 IDS_ERRORMSG_UPLOADABORTED="Hochladen unterbrochen"
 IDS_ERRORMSG_CANTOPENTRANSFERCHANNEL="Übertragungstunnel konnte nicht geöffnet werden. Ursache: %s"
 IDS_ERRORMSG_CANTRESOLVEHOST2="Hostname „%s“ kann nicht aufgelöst werden."
-IDS_ERRORMSG_CANTRESUME="Der Fortsetzen-Befehl wird durch den Fernrechner nicht unterstützt, Datei wird überschrieben"
-IDS_ERRORMSG_CANTRESUME_FINISH="Der Fortsetzen-Befehl wird durch den Fernrechner nicht unterstützt, aber die Größen der lokalen und der Datei auf dem Fernrechner sind gleich."
+IDS_ERRORMSG_CANTRESUME="Der Fortsetzen-Befehl wird durch die Gegenstelle nicht unterstützt, Datei wird überschrieben"
+IDS_ERRORMSG_CANTRESUME_FINISH="Der Fortsetzen-Befehl wird durch die Gegenstelle nicht unterstützt, aber die Größen der lokalen und der Datei auf der Gegenstelle sind gleich."
 IDS_ERRORMSG_CANTSENDCOMMAND="Befehl kann nicht gesendet werden. Verbindung abgebrochen."
 IDS_ERRORMSG_CERTREJECTED="Partnerzertifikat abgelehnt"
 IDS_ERRORMSG_DOWNLOADABORTED="Herunterladen abgebrochen"
@@ -1830,7 +1830,7 @@ IDS_STATUSMSG_CONNECTEDWITH="Verbunden mit %s. Willkommensnachricht wird erwarte
 IDS_STATUSMSG_CONNECTEDWITHSSL="Verbunden mit %s, TLS-Verbindung wird ausgehandelt …"
 IDS_STATUSMSG_CONNECTING="Verbindung mit %s wird hergestellt …"
 IDS_STATUSMSG_DIRLISTSUCCESSFUL="Verzeichnisinhalt erfolgreich abgerufen"
-IDS_STATUSMSG_DISCONNECTED="Verbindung zum Fernrechner abgebrochen"
+IDS_STATUSMSG_DISCONNECTED="Verbindung zur Gegenstelle abgebrochen"
 IDS_STATUSMSG_DOWNLOADSTART="Start %s herunterzuladen"
 IDS_STATUSMSG_DOWNLOADSUCCESSFUL="Herunterladen erfolgreich"
 IDS_STATUSMSG_FWCONNECT="Es wird versucht, auf %s über den FTP-Proxy zuzugreifen"
@@ -1858,7 +1858,7 @@ CANT_DETECT_RETURN_CODE="Rückgabecode des Befehls kann nicht ermittelt werden."
 COMMAND_FAILED2="Kommando „%s“\nschlug fehl mit dem Rückgabecode %d und der folgenden Fehlermeldung."
 COMMAND_FAILED_CODEONLY="Befehl fehlgeschlagen mit Beendigungscode %d."
 INVALID_OUTPUT_ERROR="Befehl „%s“ fehlgeschlagen mit ungültiger Ausgabe „%s“."
-READ_CURRENT_DIR_ERROR="Fehler beim Empfang des Verzeichnisnamens vom Fernrechner."
+READ_CURRENT_DIR_ERROR="Fehler beim Empfang des Verzeichnisnamens von der Gegenstelle."
 SKIP_STARTUP_MESSAGE_ERROR="Fehler beim Überspringen der Startnachricht. Ihre Befehlszeile (Shell) ist möglicherweise nicht mit dieser Anwendung kompatibel (BASH wird empfohlen)."
 CHANGE_DIR_ERROR="Fehler beim Wechseln in Verzeichnis „%s“."
 LIST_DIR_ERROR="Fehler beim Anzeigen des Verzeichnisses „%s“."
@@ -1875,8 +1875,8 @@ CANT_GET_ATTRS="Die Attribute für die Datei „%s“ können nicht ermittelt we
 OPENFILE_ERROR="Datei „%s“ kann nicht geöffnet werden."
 READ_ERROR="Fehler beim Lesen der Datei „%s“."
 COPY_FATAL="Kopieren der Datei „%s“ ist schwerwiegend fehlgeschlagen."
-TOREMOTE_COPY_ERROR="Kopieren von Dateien auf den Fernrechner ist fehlgeschlagen."
-TOLOCAL_COPY_ERROR="Kopieren von Dateien vom Fernrechner ist fehlgeschlagen."
+TOREMOTE_COPY_ERROR="Kopieren von Dateien auf die Gegenstelle ist fehlgeschlagen."
+TOLOCAL_COPY_ERROR="Kopieren von Dateien von der Gegenstelle ist fehlgeschlagen."
 SCP_EMPTY_LINE="SCP-Protokollfehler: Unerwartete neue Zeile"
 SCP_ILLEGAL_TIME_FORMAT="SCP-Protokollfehler: Ungültiges Zeitformat"
 SCP_INVALID_CONTROL_RECORD="SCP-Protokollfehler: Ungültiger Kontrolleintrag (%s; %s)"
@@ -1887,7 +1887,7 @@ CREATE_DIR_ERROR="Verzeichnis „%s“ kann nicht erstellt werden"
 CREATE_FILE_ERROR="Datei „%s“ kann nicht erstellt werden"
 WRITE_ERROR="Fehler beim Schreiben in die Datei „%s“"
 CANT_SET_ATTRS="Attribute für die Datei „%s“ können nicht gesetzt werden."
-REMOTE_ERROR="Fehlermeldung von Fernrechner erhalten: „%s“"
+REMOTE_ERROR="Fehlermeldung von der Gegenstelle erhalten: „%s“"
 DELETE_FILE_ERROR="Fehler beim Löschen der Datei „%s“."
 LOG_GEN_ERROR="Während des Protokollierens ist ein Fehler aufgetreten. Das Protokollieren wurde abgeschaltet."
 LOG_OPENERROR="Protokolldatei „%s“ kann nicht geöffnet werden."
@@ -1923,11 +1923,11 @@ EMPTY_DIRECTORY="Der Server antwortete mit einer leeren Liste für das Verzeichn
 SFTP_NON_ONE_FXP_NAME_PACKET="SSH_FXP_NAME-Paket mit keinem oder mehreren Einträgen empfangen."
 SFTP_REALPATH_ERROR="Realer Pfad für „%s“ kann nicht ermittelt werden."
 CHANGE_PROPERTIES_ERROR="Eigenschaften der Datei „%s“ können nicht geändert werden."
-SFTP_INITIALIZE_ERROR="SFTP kann nicht initialisiert werden. Läuft auf dem Fernrechner ein SFTP-Serverprogramm?"
-TIMEZONE_ERROR="Informationen zur Zeitzone des Fernrechners kann nicht gelesen werden."
-SFTP_CREATE_FILE_ERROR="Die Datei „%s“ kann nicht auf dem Fernrechner erstellt werden."
-SFTP_OPEN_FILE_ERROR="Die Datei „%s“ kann auf dem Fernrechner nicht geöffnet werden."
-SFTP_CLOSE_FILE_ERROR="Die Datei „%s“ kann auf dem Fernrechner nicht geschlossen werden."
+SFTP_INITIALIZE_ERROR="SFTP kann nicht initialisiert werden. Läuft auf der Gegenstelle ein SFTP-Serverprogramm?"
+TIMEZONE_ERROR="Informationen zur Zeitzone der Gegenstelle kann nicht gelesen werden."
+SFTP_CREATE_FILE_ERROR="Die Datei „%s“ kann nicht auf der Gegenstelle erstellt werden."
+SFTP_OPEN_FILE_ERROR="Die Datei „%s“ kann auf der Gegenstelle nicht geöffnet werden."
+SFTP_CLOSE_FILE_ERROR="Die Datei „%s“ kann auf der Gegenstelle nicht geschlossen werden."
 NOT_FILE_ERROR="„%s“ ist keine Datei!"
 RENAME_AFTER_RESUME_ERROR="Die Übertragung wurde erfolgreich beendet, aber die temporäre Datei „%s“ konnte nicht zur Zieldatei „%s“ umbenannt werden. Wenn das Problem weiterhin besteht, sollten Sie versuchen, die Unterstützung für die Übertragungsfortsetzung auszuschalten."
 CREATE_LINK_ERROR="Der Link „%s“ konnte nicht erzeugt werden."
@@ -1987,12 +1987,12 @@ SFTP_STATUS_FILE_CORRUPT="Die Datei ist beschädigt! Es sollte eine Überprüfun
 KEY_TYPE_UNKNOWN2="Die Datei „%s“ enthält keinen privaten Schlüssel in einem bekannten Format."
 KEY_TYPE_UNSUPPORTED2="**Die private Schlüsseldatei „%s“ enthält einen Schlüssel im %s-Format. WinSCP unterstützt nur das PuTTY-Format.**"
 KEY_TYPE_SSH1="Die private Schlüsseldatei „%s“ enthält einen Schlüssel im veralteten SSH-1-Format."
-SFTP_OVERWRITE_FILE_ERROR2="Die Datei „%s“ kann auf dem Fernrechner nicht überschrieben werden.$$\n \n„Löschen“ wählen, um die Datei zu löschen und neu anzulegen, statt sie zu überschreiben.$$"
+SFTP_OVERWRITE_FILE_ERROR2="Die Datei „%s“ kann auf der Gegenstelle nicht überschrieben werden.$$\n \n„Löschen“ wählen, um die Datei zu löschen und neu anzulegen, statt sie zu überschreiben.$$"
 SFTP_OVERWRITE_DELETE_BUTTON="L&öschen"
 SPACE_AVAILABLE_ERROR="Fehler beim Prüfen des verfügbaren Platzes für den Pfad „%s“."
 TUNNEL_NO_FREE_PORT="Für den Tunnel kann kein freier lokaler Port zum Lauschen im Bereich %d bis %d gefunden werden"
 EVENT_SELECT_ERROR="Netzwerk-Ereignis kann nicht eingerichtet werden (Fehler %d)"
-UNEXPECTED_CLOSE_ERROR="Die Netzwerkverbindung wurde vom Fernrechner unerwartet geschlossen"
+UNEXPECTED_CLOSE_ERROR="Die Netzwerkverbindung wurde von der Gegenstelle unerwartet geschlossen"
 TUNNEL_ERROR="Fehler beim Tunnelaufbau für die Verbindung.\n \n%s"
 CHECKSUM_ERROR="Fehler beim Berechnen der Prüfsumme für Datei „%s“."
 INTERNAL_ERROR="Interner Fehler %s (%s)."
@@ -2055,7 +2055,7 @@ SFTP_STATUS_NO_MATCHING_BYTE_RANGE_LOCK="Der angeforderte Vorgang konnte nicht a
 KEY_TYPE_UNOPENABLE="Datei mit privatem Schlüssel „%s“ ist nicht vorhanden oder kann nicht geöffnet werden."
 UNKNOWN_CHECKSUM="Der Prüfsummenalgorithmus „%s“ wird nicht unterstützt."
 ALG_NOT_VERIFIED="%s %s wurde nicht verifiziert!"
-SFTP_STATUS_4="Häufige Gründe für den Fehlercode 4 sind:\n- Eine Datei wurde in eine bereits vorhandene Datei umbenannt.\n- Erstellen eines Verzeichnisses, das bereits vorhanden ist.\n- Eine Datei auf dem Fernrechner in ein anderes Dateisystem verschieben (HDD).\n- Eine Datei in ein Dateisystem (HDD) hochladen, in dem kein Platz mehr vorhanden ist.\n- Überschreiten der Platzbeschränkung des Benutzers (Disk Quota)."
+SFTP_STATUS_4="Häufige Gründe für den Fehlercode 4 sind:\n- Eine Datei wurde in eine bereits vorhandene Datei umbenannt.\n- Erstellen eines Verzeichnisses, das bereits vorhanden ist.\n- Eine Datei auf der Gegenstelle in ein anderes Dateisystem verschieben (HDD).\n- Eine Datei in ein Dateisystem (HDD) hochladen, in dem kein Platz mehr vorhanden ist.\n- Überschreiten der Platzbeschränkung des Benutzers (Disk Quota)."
 CERTIFICATE_OPEN_ERROR="Das Zertifikat „%s“ kann nicht geöffnet werden."
 CERTIFICATE_READ_ERROR="Das Zertifikat „%s“ kann nicht gelesen werden."
 CERTIFICATE_DECODE_ERROR_INFO="Fehler beim Decodieren des Zertifikats."
@@ -2097,7 +2097,7 @@ TIMEOUT_ERROR="Zeitüberschreitung beim Warten auf Antwort vom Server."
 CREATE_TEMP_DIR_ERROR="Temporäres Verzeichnis „%s“ konnte nicht erstellt werden. Das Basisverzeichnis für temporäre Dateien kann in den Einstellungen geändert werden."
 OPENSSH_CONFIG_NOT_FOUND="OpenSSH-Konfigurationsdatei nicht gefunden."
 OPENSSH_CONFIG_NO_SITES="Keine Host-Direktive für bestimmte Hosts in der OpenSSH-Konfigurationsdatei gefunden."
-CONFIRM_PROLONG_TIMEOUT3="Fernrechner sendet seit %d Sekunden keine Daten.\n\nWeitere %0:d Sekunden warten?"
+CONFIRM_PROLONG_TIMEOUT3="Die Gegenstelle sendet seit %d Sekunden keine Daten.\n\nWeitere %0:d Sekunden warten?"
 PROMPT_KEY_PASSPHRASE="Passphrase für Schlüssel „%s“"
 FILE_OVERWRITE="Datei „%s“ ist bereits vorhanden. Überschreiben?"
 DIRECTORY_OVERWRITE="Verzeichnis „%s“ ist bereits vorhanden. Überschreiben?"
@@ -2111,8 +2111,8 @@ APPEND_OR_RESUME2="**Möchten Sie die Datei „%s“ an das Ende der vorhandenen
 FILE_OVERWRITE_DETAILS="%s\n \nNeu:      \t%s Bytes, %s\nVorhanden: \t%s Bytes, %s"
 READ_ONLY_OVERWRITE="Die Datei „%s“ ist schreibgeschützt. Trotzdem überschreiben?"
 LOCAL_FILE_OVERWRITE2="**Lokale Datei „%s“ überschreiben?**\n\nDas Zielverzeichnis enthält bereits die Datei „%s“.\n„Ja“ wählen, wenn die Datei überschrieben werden soll,\n„Nein“ wählen, um die vorhandene Datei zu behalten."
-REMOTE_FILE_OVERWRITE2="**Datei „%s“ auf dem Fernrechner überschreiben?**\n\nDas Zielverzeichnis enthält bereits die Datei „%s“.\n„Ja“ wählen, wenn die Datei überschrieben werden soll,\n„Nein“ wählen, um die vorhandene Datei zu behalten."
-TIMEOUT_STILL_WAITING3="Der Fernrechner sendet seit mehr als %d Sekunden keine Daten mehr. Es wird weiter gewartet …\n\nHinweis: Wenn das Problem weiterhin besteht, versuchen Sie, die Option „Puffergröße der Verbindung optimieren“ abzuschalten."
+REMOTE_FILE_OVERWRITE2="**Datei „%s“ auf der Gegenstelle überschreiben?**\n\nDas Zielverzeichnis enthält bereits die Datei „%s“.\n„Ja“ wählen, wenn die Datei überschrieben werden soll,\n„Nein“ wählen, um die vorhandene Datei zu behalten."
+TIMEOUT_STILL_WAITING3="Die Gegenstelle sendet seit mehr als %d Sekunden keine Daten mehr. Es wird weiter gewartet …\n\nHinweis: Wenn das Problem weiterhin besteht, versuchen Sie, die Option „Puffergröße der Verbindung optimieren“ abzuschalten."
 RECONNECT_BUTTON="&Verbinden"
 RENAME_BUTTON="Neuer Na&me"
 TUNNEL_SESSION_NAME="Tunnel für %s"
@@ -2165,31 +2165,31 @@ SCRIPT_EXIT_DESC="Schließt alle Sitzungen und beendet das Programm."
 SCRIPT_OPEN_DESC="Verbindet zum Server."
 SCRIPT_CLOSE_DESC="Schließt die Sitzung."
 SCRIPT_SESSION_DESC="Zeigt alle verbundenen Sitzungen oder wählt die aktive Sitzung aus."
-SCRIPT_PWD_DESC="Zeigt den Namen des Arbeitsverzeichnisses auf dem Fernrechner an."
-SCRIPT_CD_DESC="Wechselt das Arbeitsverzeichnis auf dem Fernrechner."
-SCRIPT_LS_DESC="Zeigt den Inhalt des Ordners auf dem Fernrechner an."
+SCRIPT_PWD_DESC="Zeigt den Namen des Arbeitsverzeichnisses der Gegenstelle an."
+SCRIPT_CD_DESC="Wechselt das Arbeitsverzeichnis der Gegenstelle."
+SCRIPT_LS_DESC="Zeigt den Inhalt des Ordners der Gegenstelle an."
 SCRIPT_LPWD_DESC="Zeigt den Namen des lokalen Arbeitsverzeichnisses an."
 SCRIPT_LCD_DESC="Wechselt das lokale Arbeitsverzeichnis."
 SCRIPT_LLS_DESC="Zeigt den Inhalt des lokalen Ordners an."
-SCRIPT_RM_DESC="Löscht eine Datei auf dem Fernrechner."
-SCRIPT_RMDIR_DESC="Löscht einen Ordner auf dem Fernrechner."
-SCRIPT_MV_DESC="Verschiebt oder benennt Datei auf dem Fernrechner um."
-SCRIPT_CHMOD_DESC="Ändert Zugriffsrechte der Datei auf dem Fernrechner."
-SCRIPT_LN_DESC="Erzeugt einen symbolischen Link auf dem Fernrechner."
-SCRIPT_MKDIR_DESC="Erstellt einen Ordner auf dem Fernrechner."
-SCRIPT_GET_DESC="Lädt Datei vom Fernrechner in den lokalen Ordner herunter."
-SCRIPT_PUT_DESC="Lädt Datei vom lokalen in den Ordner auf dem Fernrechner hoch."
+SCRIPT_RM_DESC="Löscht eine Datei auf der Gegenstelle."
+SCRIPT_RMDIR_DESC="Löscht einen Ordner auf der Gegenstelle."
+SCRIPT_MV_DESC="Verschiebt oder benennt Datei auf der Gegenstelle um."
+SCRIPT_CHMOD_DESC="Ändert Zugriffsrechte der Datei auf der Gegenstelle."
+SCRIPT_LN_DESC="Erzeugt einen symbolischen Link auf der Gegenstelle."
+SCRIPT_MKDIR_DESC="Erstellt einen Ordner auf der Gegenstelle."
+SCRIPT_GET_DESC="Lädt Datei von der Gegenstelle in den lokalen Ordner herunter."
+SCRIPT_PUT_DESC="Lädt Datei vom lokalen in den Ordner der Gegenstelle hoch."
 SCRIPT_OPTION_DESC="Setzt oder zeigt Werte der Skriptoptionen."
-SCRIPT_SYNCHRONIZE_DESC="Synchronisiert den Ordner auf dem Fernrechner mit dem lokalen."
-SCRIPT_KEEPUPTODATE_DESC="Lokale Änderungen werden permanent auf Fernrechner übertragen."
+SCRIPT_SYNCHRONIZE_DESC="Synchronisiert den Ordner der Gegenstelle mit dem lokalen."
+SCRIPT_KEEPUPTODATE_DESC="Lokale Änderungen werden permanent auf die Gegenstelle übertragen."
 SCRIPT_HOST_PROMPT="Rechnername:"
 SCRIPT_ACTIVE_SESSION="Aktive Sitzung: [%d] %s"
 SCRIPT_SESSION_CLOSED="Sitzung „%s“ geschlossen."
-SCRIPT_SYNCHRONIZE="Lokal „%s“ %s Fernrechner „%s“"
+SCRIPT_SYNCHRONIZE="Lokal „%s“ %s Gegenstelle „%s“"
 SCRIPT_SYNCHRONIZE_DELETED="„%s“ gelöscht"
 SCRIPT_KEEPING_UP_TO_DATE="Auf Änderungen wird gewartet, Strg+C drücken, um abzubrechen …"
 SKIP_ALL_BUTTON="&Alle überspringen"
-SCRIPT_CALL_DESC2="Befehle auf dem Fernrechner ausführen"
+SCRIPT_CALL_DESC2="Befehle auf der Gegenstelle ausführen"
 COPY_PARAM_PRESET_ASCII="&Text"
 COPY_PARAM_PRESET_BINARY="&Binär"
 COPY_INFO_TRANSFER_TYPE2="Übertragungstyp: %s|Binär|Text|Automatisch (%s)|Automatisch"
@@ -2205,7 +2205,7 @@ COPY_INFO_DONT_CALCULATE_SIZE="Gesamtgröße nicht berechnen"
 COPY_INFO_DEFAULT="Standardübertragungseinstellungen"
 COPY_RULE_HOSTNAME="Rechnername: %s"
 COPY_RULE_USERNAME="Benutzername: %s"
-COPY_RULE_REMOTE_DIR="Verzeichnis auf dem Fernrechner: %s"
+COPY_RULE_REMOTE_DIR="Verzeichnis auf der Gegenstelle: %s"
 COPY_RULE_LOCAL_DIR="Lokales Verzeichnis: %s"
 SYNCHRONIZE_SCAN="„%s“ wird nach Unterverzeichnissen durchsucht …"
 SYNCHRONIZE_START="Veränderungen in %d Verzeichnissen werden überwacht …"
@@ -2224,24 +2224,24 @@ AUTH_TRANSL_TRY_PUBLIC_KEY="Authentifizierungsversuch mit öffentlichem Schlüss
 AUTH_PASSWORD="Authentifikation mit zuvor eingegebenem Passwort."
 OPEN_TUNNEL="Tunnel wird geöffnet …"
 STATUS_CLOSED="Verbindung beendet."
-STATUS_LOOKUPHOST="Fernrechner wird gesucht …"
-STATUS_CONNECT="Verbindung mit Fernrechner wird hergestellt …"
+STATUS_LOOKUPHOST="Gegenstelle wird gesucht …"
+STATUS_CONNECT="Verbindung mit Gegenstelle wird hergestellt …"
 STATUS_AUTHENTICATE="Authentifizierung …"
 STATUS_AUTHENTICATED="Authentifiziert."
 STATUS_STARTUP="Die Sitzung wird gestartet …"
 STATUS_READY="Sitzung gestartet."
-STATUS_OPEN_DIRECTORY="Verzeichnis auf dem Fernrechner wird gelesen …"
+STATUS_OPEN_DIRECTORY="Verzeichnis auf der Gegenstelle wird gelesen …"
 USING_TUNNEL="Verbindung über Tunnel …"
-AUTH_TRANSL_KEY_REFUSED="Der Fernrechner hat unseren Schlüssel abgelehnt."
+AUTH_TRANSL_KEY_REFUSED="Die Gegenstelle hat unseren Schlüssel abgelehnt."
 PFWD_TRANSL_ADMIN="Durch den Administrator nicht zugelassen (%s)."
 PFWD_TRANSL_CONNECT="Verbinden ist fehlgeschlagen (%s)."
 NET_TRANSL_REFUSED2="Netzwerkfehler: Verbindung zum Host „%HOST%“ wurde abgelehnt."
-NET_TRANSL_RESET="Netzwerkfehler: Verbindung von Gegenstelle zurückgesetzt."
+NET_TRANSL_RESET="Netzwerkfehler: Verbindung durch die Gegenstelle zurückgesetzt."
 NET_TRANSL_TIMEOUT2="Netzwerkfehler: Zeitgrenze für Verbindung „%HOST%“ wurde erreicht."
 SESSION_INFO_TIP_NO_SSH="Rechner: %s\nBenutzername: %s\nÜbertragungsprotokoll: %s"
 RESUME_BUTTON="&Fortsetzen"
-FTP_NO_FEATURE_INFO="Der Fernrechner unterstützt keine zusätzlichen FTP-Features"
-FTP_FEATURE_INFO="Der Fernrechner unterstützt folgende zusätzlichen FTP-Features"
+FTP_NO_FEATURE_INFO="Die Gegenstelle unterstützt keine zusätzlichen FTP-Features"
+FTP_FEATURE_INFO="Die Gegenstelle unterstützt folgende zusätzlichen FTP-Features"
 COPY_INFO_CPS_LIMIT2="Geschwindigkeitsbegrenzung für die Übertragung: %u KB/s"
 COPY_KEY_BUTTON="Schlüssel &kopieren"
 UPDATE_KEY_BUTTON="&Aktualisieren"
@@ -2254,7 +2254,7 @@ SPEED_UNLIMITED="Unbegrenzt"
 FTPS_IMPLICIT="Implizites TLS/SSL"
 FTPS_EXPLICIT="Explizites TLS/SSL"
 SCRIPT_ECHO_DESC="Zeigt die Argumente als Ausgabe"
-SCRIPT_STAT_DESC="Ruft die Attribute der Datei auf dem Fernrechner ab"
+SCRIPT_STAT_DESC="Ruft die Attribute der Datei der Gegenstelle ab"
 HOSTKEY="Fingerabdruck des Hostschlüssels ist %s."
 SCRIPT_FILEMASK_INCLUDE_EXCLUDE="Schalter -filemask ersetzt die veralteten Optionen include und exclude."
 COPY_PARAM_NEWER_ONLY="Nur n&eue und geänderte Dateien"
@@ -2263,10 +2263,10 @@ SCRIPT_CMDLINE_SESSION="Öffnen von Sitzungen mithilfe von Befehlszeilenparamete
 ANY_HOSTKEY="WARNUNG! Die Sicherheit wird aufgegeben und alle Hostschlüssel so akzeptiert wie konfiguriert!"
 ANY_CERTIFICATE="WARNUNG! Sicherheit wird aufgegeben und alle Zertifikate so akzeptiert wie konfiguriert!"
 SCRIPT_SYNC_UPLOAD_NEW="Neue lokale Datei %s"
-SCRIPT_SYNC_DOWNLOAD_NEW="Neue Datei %s auf dem Fernrechner"
-SCRIPT_SYNC_UPLOAD_UPDATE="Lokale Datei %s ist neuer als die Datei %s auf dem Fernrechner"
-SCRIPT_SYNC_DOWNLOAD_UPDATE="Datei %s auf dem Fernrechner ist neuer als die lokale Datei %s"
-SCRIPT_SYNC_DELETE_REMOTE="Verwaiste Datei %s auf dem Fernrechner"
+SCRIPT_SYNC_DOWNLOAD_NEW="Neue Datei %s auf der Gegenstelle"
+SCRIPT_SYNC_UPLOAD_UPDATE="Lokale Datei %s ist neuer als die Datei %s auf der Gegenstelle"
+SCRIPT_SYNC_DOWNLOAD_UPDATE="Datei %s auf der Gegenstelle ist neuer als die lokale Datei %s"
+SCRIPT_SYNC_DELETE_REMOTE="Verwaiste Datei %s auf der Gegenstelle"
 SCRIPT_SYNC_DELETE_LOCAL="Verwaiste lokale Datei %s"
 SCRIPT_SYNCHRONIZE_CHECKLIST="Unterschiede gefunden:"
 COPY_INFO_REMOVE_CTRLZ="EOF-Marke entfernen"
@@ -2279,7 +2279,7 @@ VERSION_DEBUG_BUILD="Debug Build"
 VERSION_DONT_DISTRIBUTE="- NICHT weitergeben"
 WEBDAV_EXTENSION_INFO="Der Server unterstützt diese WebDAV-Erweiterungen:"
 COPY_PARAM_PRESET_EXCLUDE_ALL_DIR="Verzeichnisse a&usschließen"
-SCRIPT_CHECKSUM_DESC="Prüfsumme der Datei auf dem Fernrechner berechnen"
+SCRIPT_CHECKSUM_DESC="Prüfsumme der Datei auf der Gegenstelle berechnen"
 CLIENT_CERTIFICATE_LOADING="Clientzertifikat wird geladen …"
 NEED_CLIENT_CERTIFICATE="Der Server fordert eine Authentifizierung mit einem Clientzertifikat."
 LOCKED="Gesperrt"
@@ -2295,7 +2295,7 @@ TEXT_FILE_ENCODING="Die Datei muss in UTF-8- oder UTF-16-codiert sein."
 AND_STR="%s und %s"
 AUTH_CHANGING_PASSWORD="Passwort wird geändert."
 PASTE_KEY_BUTTON="Schlüssel &einfügen"
-SCRIPT_CP_DESC="Dupliziert die Datei auf dem Fernrechner"
+SCRIPT_CP_DESC="Dupliziert die Datei auf der Gegenstelle"
 TIME_UNKNOWN="Unbekannt"
 KEY_DETAILS="  Algorithm.:\t%s\n    SHA-256:\t%s\n    MD5:\t%s"
 COPY_KEY_ACTION="Fingerabdrücke in die Zwischenablage &kopieren"
@@ -2324,27 +2324,27 @@ SCRIPT_CLOSE_HELP="close [ <SitzungsNr> ]\n  Schließt die Sitzung über die Sit
 ; <override>
 SCRIPT_SESSION_HELP="session [ <SitzungsNr> ]\n  Aktiviert die Sitzung der angegebenen Nummer. Wurde keine Sitzungsnummer\n  angegeben, werden die verbundenen Sitzungen angezeigt.\nBeispiele:\n  session\n  session 1\n"
 ; <override>
-SCRIPT_PWD_HELP="pwd\n  Zeigt das aktuelle Arbeitsverzeichnis auf dem Fernrechner für die aktive Sitzung an.\n"
+SCRIPT_PWD_HELP="pwd\n  Zeigt das aktuelle Arbeitsverzeichnis auf der Gegenstelle für die aktive Sitzung an.\n"
 ; <override>
-SCRIPT_CD_HELP="cd [ <Verzeichnis> ]\n  Wechselt das Arbeitsverzeichnis der aktiven Sitzung auf dem Fernrechner. Wurde kein\n  Verzeichnis angegeben wird, wechselt cd in das Heimatverzeichnis.\nBeispiele:\n  cd /home/marko\n  cd\n"
+SCRIPT_CD_HELP="cd [ <Verzeichnis> ]\n  Wechselt das Arbeitsverzeichnis der aktiven Sitzung auf der Gegenstelle. Wurde kein\n  Verzeichnis angegeben wird, wechselt cd in das Heimatverzeichnis.\nBeispiele:\n  cd /home/marko\n  cd\n"
 ; <override>
 SCRIPT_LPWD_HELP="lpwd\n  Zeigt das aktuelle lokale Arbeitsverzeichnis an (gilt für alle Sitzungen).\n"
 ; <override>
 SCRIPT_LCD_HELP="lcd <Verzeichnis>\n  Wechselt das lokale Arbeitsverzeichnis für alle Sitzungen.\nBeispiel:\n  cd d:\\\n"
 ; <override>
-SCRIPT_RMDIR_HELP="rmdir <Verzeichnis> [ <Verzeichnis2> … ]\n  Löscht ein oder mehrere Verzeichnisse auf dem Fernrechner. Wenn der \n  Papierkorb des Fernrechners konfiguriert ist, werden die Verzeichnisse dorthin verschoben,\n  anstatt gelöscht zu werden.\nBeispiel:\n  rmdir public_html\n"
+SCRIPT_RMDIR_HELP="rmdir <Verzeichnis> [ <Verzeichnis2> … ]\n  Löscht ein oder mehrere Verzeichnisse auf der Gegenstelle. Wenn der \n  Papierkorb der Gegenstelle konfiguriert ist, werden die Verzeichnisse dorthin verschoben,\n  anstatt gelöscht zu werden.\nBeispiel:\n  rmdir public_html\n"
 ; <override>
-SCRIPT_LN_HELP="ln <Ziel> <Symlink>\n  Erzeugt einen symbolischen Link auf dem Fernrechner.\nAlias:\n  symlink\nBeispiel:\n  ln /home/marko/public_html www\n"
+SCRIPT_LN_HELP="ln <Ziel> <Symlink>\n  Erzeugt einen symbolischen Link auf der Gegenstelle.\nAlias:\n  symlink\nBeispiel:\n  ln /home/marko/public_html www\n"
 ; <override>
-SCRIPT_MKDIR_HELP="mkdir <Verzeichnis>\n  Erstellt ein Verzeichnis auf dem Fernrechner.\nBeispiel:\n  mkdir public_html\n"
+SCRIPT_MKDIR_HELP="mkdir <Verzeichnis>\n  Erstellt ein Verzeichnis auf der Gegenstelle.\nBeispiel:\n  mkdir public_html\n"
 ; <override>
-SCRIPT_SYNCHRONIZE_HELP7="synchronize local|remote|both [ <lokales Verzeichnis> [ <Verzeichnis auf dem Fernrechner> ] ]\n  Wenn der erste Parameter 'local' ist, wird das lokale Verzeichnis mit dem \n  Fernrechner synchronisiert. Wenn der erste Parameter 'remote' ist, wird das \n  Verzeichnis auf dem Fernrechner mit dem lokalen synchronisiert. 'both' synchronisiert\n  beide Seiten gegenseitig.\n  Wird kein Verzeichnis angegeben, werden die aktuellen Arbeitsverzeichnisse\n  synchronisiert.\n  Hinweis: Überschreibbestätigungen sind bei diesem Befehl immer ausgeschaltet.\nSchalter:\n  -delete              Löscht alte Dateien\n  -mirror              Spiegelmodus (synchronisiert auch ältere Dateien).\n                       Wird bei 'both' ignoriert.\n  -criteria=<criteria> Vergleichskriterium. Mögliche Werte sind 'none', 'time',\n                       'size' und 'either'. Wird bei Modus 'both' ignoriert.\n  -permissions=<mode>  Setzt Berechtigungen\n  -nopermissions       Voreingestellten Berechtigungen erhalten\n  -speed=<kibps>       Begrenzt die Übertragungsgeschwindigkeit\n  -transfer=<modus>    Übertragungsmodus: 'binary', 'ascii', 'automatic'\n  -filemask=<maske>    Setzt die Dateimaske.\n  -resumesupport=<state> Stellt die Unterstützung für Verbindungswiederaufnahme\n                       ein. Mögliche Werte sind 'on', 'off' oder 'threshold'\nVerwendete Optionen:\n  reconnecttime\nBeispiele:\n  synchronize remote -delete\n  synchronize both d:\\www /home/marko/public_html\n"
+SCRIPT_SYNCHRONIZE_HELP7="synchronize local|remote|both [ <lokales Verzeichnis> [ <Verzeichnis auf der Gegenstelle> ] ]\n  Wenn der erste Parameter 'local' ist, wird das lokale Verzeichnis mit dem der \n  Gegenstelle synchronisiert. Wenn der erste Parameter 'remote' ist, wird das \n  Verzeichnis auf der Gegenstelle mit dem lokalen synchronisiert. 'both' synchronisiert\n  beide Seiten gegenseitig.\n  Wird kein Verzeichnis angegeben, werden die aktuellen Arbeitsverzeichnisse\n  synchronisiert.\n  Hinweis: Überschreibbestätigungen sind bei diesem Befehl immer ausgeschaltet.\nSchalter:\n  -delete              Löscht alte Dateien\n  -mirror              Spiegelmodus (synchronisiert auch ältere Dateien).\n                       Wird bei 'both' ignoriert.\n  -criteria=<criteria> Vergleichskriterium. Mögliche Werte sind 'none', 'time',\n                       'size' und 'either'. Wird bei Modus 'both' ignoriert.\n  -permissions=<mode>  Setzt Berechtigungen\n  -nopermissions       Voreingestellten Berechtigungen erhalten\n  -speed=<kibps>       Begrenzt die Übertragungsgeschwindigkeit\n  -transfer=<modus>    Übertragungsmodus: 'binary', 'ascii', 'automatic'\n  -filemask=<maske>    Setzt die Dateimaske.\n  -resumesupport=<state> Stellt die Unterstützung für Verbindungswiederaufnahme\n                       ein. Mögliche Werte sind 'on', 'off' oder 'threshold'\nVerwendete Optionen:\n  reconnecttime\nBeispiele:\n  synchronize remote -delete\n  synchronize both d:\\www /home/marko/public_html\n"
 ; <override>
-SCRIPT_CALL_HELP2="call <Befehl>\n  führt einen beliebigen Shell-Befehl auf dem Fernrechner aus.\n  Wenn die aktuelle Sitzung die Ausführung von Shell-Befehlen nicht erlaubt,\n  wird automatisch eine separate Shell-Sitzung geöffnet.\n  Bei FTP-Verbindungen wird ein Protokollbefehl ausgeführt.\n  Der Befehl darf keine Benutzereingaben erfordern.\nAliases:\n  !\nBeispiel:\n  call touch index.html\n"
+SCRIPT_CALL_HELP2="call <Befehl>\n  führt einen beliebigen Shell-Befehl auf der Gegenstelle aus.\n  Wenn die aktuelle Sitzung die Ausführung von Shell-Befehlen nicht erlaubt,\n  wird automatisch eine separate Shell-Sitzung geöffnet.\n  Bei FTP-Verbindungen wird ein Protokollbefehl ausgeführt.\n  Der Befehl darf keine Benutzereingaben erfordern.\nAliases:\n  !\nBeispiel:\n  call touch index.html\n"
 ; <override>
 SCRIPT_ECHO_HELP="echo <Nachricht>\n  Zeigt Nachricht im Skriptausgabefenster an.\nBeispiel:\n  echo Hochladen startet …\n"
 ; <override>
-SCRIPT_STAT_HELP="stat <Datei>\n  Holt und zeigt die Attribute der angegebenen Datei auf dem Fernrechner.\nBeispiel:\n  stat index.html\n"
+SCRIPT_STAT_HELP="stat <Datei>\n  Holt und zeigt die Attribute der angegebenen Datei auf der Gegenstelle.\nBeispiel:\n  stat index.html\n"
 
 [TextsWin1.rc]
 TRANSLATOR_URL="[email protected]"
@@ -2383,7 +2383,7 @@ OPEN_FILE_NO_PROCESS2="WinSCP konnte nicht feststellen, welche Anwendung gestart
 CLEANUP_TEMP_ERROR="Einige der temporären Ordner wurden nicht gelöscht. Sollten noch Dateien geöffnet sein, die dort gespeichert sind, diese Dateien schließen und erneut versuchen."
 CUSTOM_COMMAND_SELECTED_UNMATCH="Um den ausgewählten Befehl auszuführen, darf nur eine Datei in einem Listenfenster markiert sein, um den Befehl mit dieser Datei und jeder ausgewählten Datei im anderen Listenfenster auszuführen. Alternativ kann auch die gleiche Anzahl Dateien in beiden Listenfenstern markiert werden, um den Befehl jeweils für Dateipaare auszuführen."
 CUSTOM_COMMAND_SELECTED_UNMATCH1="Um den ausgewählten Befehl auszuführen, darf nur eine Datei im lokalen Listenfenster ausgewählt sein."
-CUSTOM_COMMAND_PAIRS_DOWNLOAD_FAILED="Einige der markierten Dateien auf dem Fernrechner wurden nicht heruntergeladen. Der ausgewählte Befehl kann nur für Dateipaare ausgeführt werden, was hier nicht möglich war."
+CUSTOM_COMMAND_PAIRS_DOWNLOAD_FAILED="Einige der markierten Dateien der Gegenstelle wurden nicht heruntergeladen. Der ausgewählte Befehl kann nur für Dateipaare ausgeführt werden, was hier nicht möglich war."
 EXTERNAL_CONSOLE_INIT_ERROR="Externe Konsole kann nicht initialisiert werden."
 CONSOLE_COMM_ERROR="Zuordnungsobjekt für die Kommunikation mit der externen Konsole kann nicht gestartet werden."
 CONSOLE_SEND_TIMEOUT="Zeitüberschreitung beim Warten auf den Abschluss der Befehlsausführung."
@@ -2446,7 +2446,7 @@ CONFIRM_DELETE_FILE="Möchten Sie die Datei „%s“ wirklich löschen?"
 CONFIRM_DELETE_FILES="Möchten Sie die %d ausgewählten Dateien wirklich löschen?"
 CLOSE_SESSION="Sitzung „%s“ schließen und Programm beenden?"
 NEVER_ASK_AGAIN="&Meldung nicht wieder anzeigen"
-DD_WARN_LACK_OF_TEMP_SPACE="Zu wenig Speicherplatz auf dem lokalen Laufwerk!\n\nWenn Dateien von einem Verzeichnis auf dem Fernserver heruntergeladen werden, dann werden diese zuerst in das temporäre Verzeichnis „%s“ gespeichert. Auf dem Laufwerk sind %s frei. Die Größe der herunterzuladenden Dateien ist %s.\n\nHinweis: Das temporäre Verzeichnis kann unter „Einstellungen“ geändert werden.\n\nMöchten Sie trotzdem weiter Dateien herunterladen?"
+DD_WARN_LACK_OF_TEMP_SPACE="Zu wenig Speicherplatz auf dem lokalen Laufwerk!\n\nWenn Dateien von einem Verzeichnis auf dem entfernten Server heruntergeladen werden, dann werden diese zuerst in das temporäre Verzeichnis „%s“ gespeichert. Auf dem Laufwerk sind %s frei. Die Größe der herunterzuladenden Dateien ist %s.\n\nHinweis: Das temporäre Verzeichnis kann unter „Einstellungen“ geändert werden.\n\nMöchten Sie trotzdem weiter Dateien herunterladen?"
 ADD_BOOKMARK_CONFIRM="Verzeichnis „%s“ zu Lesezeichen hinzufügen?"
 CONFIRM_CREATE_SHORTCUT="Soll für das Verbindungsziel „%s“ eine Desktopverknüpfung erstellt werden?"
 CONFIRM_CREATE_SENDTO="Soll für das Verbindungsziel „%s“ eine „Senden an“-Verknüpfung im Explorer erstellt werden?"
@@ -2469,7 +2469,7 @@ CREATE_DESKTOP_ICON2="**Möchten Sie ein Desktopsymbol für alle Benutzer erstel
 CONFIRM_ADD_SEARCH_PATH="Soll der Anwendungspfad „%s“ zum Suchpfad des Systems (%%PATH%%) hinzugefügt werden?"
 EDITOR_EARLY_CLOSED2="Der zum Öffnen der Datei „%s“ gestartete Editor (Anwendung) wurde zu früh beendet. Wenn Sie ihn nicht geschlossen haben, ist die Ursache möglicherweise, dass der externe Editor verschiedene Dateien in einem Fenster (Prozess) öffnet. Zusätzlich gestartete Instanzen des Editors senden dann lediglich die neue Datei an die bereits existierende Instanz und beenden sich selbst sofort wieder. Um diese Art von Editoren zu unterstützen, muss WinSCP sein Verhalten so ändern, dass temporäre Dateien nicht gelöscht werden, wenn der Editorprozess beendet wird, sondern diese Dateien so lange behalten werden, wie WinSCP läuft. Dieses Verhalten kann eingeschaltet werden, indem in der Editoreinstellung die Option „Externer Editor öffnet jede Datei in separatem Fenster (Prozess)“ nicht ausgeschaltet wird. Wenn Ihr Editor nicht diese Art Editor ist, dann können Sie diese Nachricht ignorieren und die Datei jetzt aus dem temporären Ordner löschen lassen.\n \nWollen Sie die geöffnete Datei jetzt löschen? (Durch Drücken von „Nein“ wird automatisch das spezielle Verhalten eingeschaltet und die Datei wird im temporären Ordner behalten, solange das Programm läuft.)"
 SAVE_SYNCHRONIZE_MODE2="**Wollen Sie die von Ihnen gewählte Synchronisationsrichtung zum Standard machen?**\n\nSie haben die voreingestellte Synchronisationsrichtung geändert. Normalerweise wird die Synchronisationsrichtung durch das zuletzt aktive Listenfenster festgelegt."
-SYNCHRONISE_BEFORE_KEEPUPTODATE2="**Wollen Sie zuerst eine volle Synchronisation des Verzeichnisses auf dem Fernrechner durchführen?**\n \nDie Funktion „Verzeichnis auf dem Fernrechner aktuell halten“ funktioniert nur dann richtig, wenn das Verzeichnis auf dem Fernserver vorher mit dem lokalen Verzeichnis synchronisiert wurde.\n"
+SYNCHRONISE_BEFORE_KEEPUPTODATE2="**Wollen Sie zuerst eine volle Synchronisation des Verzeichnisses der Gegenstelle durchführen?**\n \nDie Funktion „Verzeichnis auf der Gegenstelle aktuell halten“ funktioniert nur dann richtig, wenn das Verzeichnis auf dem entfernten Rechner vorher mit dem lokalen Verzeichnis synchronisiert wurde.\n"
 CONFIRM_DELETE_SESSION="Möchten Sie die gespeicherte Sitzung „%s“ wirklich löschen?"
 TOO_MANY_WATCH_DIRECTORIES="Es wurden mehr als %d Verzeichnisse und Unterverzeichnisse gefunden. Die Überwachung vieler Verzeichnisse kann die Geschwindigkeit des Rechners erheblich vermindern.\n \nMöchten Sie bis zu %d weitere Verzeichnisse scannen?"
 TIMEOUT_BUTTON="%s (%d s)"
@@ -2509,7 +2509,7 @@ SAVE_CHANGES="Datei wurde geändert. Sollen die Änderungen gespeichert werden?"
 DOCUMENT_WAIT="Es wird gewartet, dass das Dokument geschlossen wird …"
 SESSION_SENDTO_HOOK_NAME2="%s (Hochladen mit %s)"
 SENDTO_HOOK_NAME2="%s (zum Hochladen)"
-BOOKMARK_INFO_TIP="Lokal: %s\nFernrechner: %s"
+BOOKMARK_INFO_TIP="Lokal: %s\nGegenstelle: %s"
 CUSTOM_COMMAND_TOUCH="&Touch"
 CUSTOM_COMMAND_EXECUTE="&Ausführen"
 ERROR_LIST_COUNT="Bei dem letzten Vorgang trat(en) %d Fehler auf. Möchten Sie diese(n) Fehler ansehen?"
@@ -2543,12 +2543,12 @@ APP_EARLY_CLOSED="Die zum Öffnen der Datei „%s“ gestartete Anwendung wurde
 EXTERNAL_EDITOR_HINT="Bearbeiten (extern)|Ausgewählte Datei(en) mit dem externen Editor „%s“ bearbeiten"
 MASK_HINT2="* passt auf beliebig viele Zeichen\n? passt auf genau ein Zeichen\n[abc] passt auf ein Zeichen der Auswahl\n[a-z] passt auf ein Zeichen des Bereiches\nBeispiele: *.html; photo??.png; [h-r]aus.*"
 PATH_MASK_HINT2="Masken können durch Pfade erweitert werden.\nBeispiel: */public_html/*.html"
-CUSTOM_COMMAND_PATTERNS_HINT5="Muster:\n!! Ausrufezeichen\n! Dateiname\n!& steht für die Liste der ausgewählten Dateien (in Anführungszeichen, durch Leerzeichen getrennt)\n!/ steht für den aktuellen Pfad auf dem Fernrechner\n!S steht für die aktuelle Sitzungs-URL\n!@ steht für den Rechnernamen der aktuellen Sitzung\n!U steht für den Benutzernamen der aktuellen Sitzung\n!P steht für das Passwort der aktuellen Sitzung\n\n!# steht für die Portnummer der aktuellen Sitzung\n!N steht für den Namen der aktuellen Sitzung\n!?prompt[\\]?default! steht für eine benutzerdefinierte Eingabeaufforderung (Prompt) und Standardwert (Default) (das optionale \\ verhindert die Zeichenersetzung)\n!`command` steht für die Ausgabe des lokalen Befehls\n \nLokale Befehlsmuster:\n!^! steht für Dateinamen im lokalen Listenfenster\n \nBeispiel:\ngrep „!?Pattern:?!“ !&"
+CUSTOM_COMMAND_PATTERNS_HINT5="Muster:\n!! Ausrufezeichen\n! Dateiname\n!& steht für die Liste der ausgewählten Dateien (in Anführungszeichen, durch Leerzeichen getrennt)\n!/ steht für den aktuellen Pfad auf der Gegenstelle\n!S steht für die aktuelle Sitzungs-URL\n!@ steht für den Rechnernamen der aktuellen Sitzung\n!U steht für den Benutzernamen der aktuellen Sitzung\n!P steht für das Passwort der aktuellen Sitzung\n\n!# steht für die Portnummer der aktuellen Sitzung\n!N steht für den Namen der aktuellen Sitzung\n!?prompt[\\]?default! steht für eine benutzerdefinierte Eingabeaufforderung (Prompt) und Standardwert (Default) (das optionale \\ verhindert die Zeichenersetzung)\n!`command` steht für die Ausgabe des lokalen Befehls\n \nLokale Befehlsmuster:\n!^! steht für Dateinamen im lokalen Listenfenster\n \nBeispiel:\ngrep „!?Pattern:?!“ !&"
 CLOSED_ON_QUEUE_EMPTY="Alle Hintergrundübertragungen wurden abgeschlossen. Die Verbindung wurde beendet."
-DIRECTORY_READING_CANCELLED="Das Einlesen des Verzeichnisses vom Fernrechner wurde abgebrochen."
+DIRECTORY_READING_CANCELLED="Das Einlesen des Verzeichnisses der Gegenstelle wurde abgebrochen."
 SYNC_DIR_BROWSE_TOGGLE="Die synchronisierte Verzeichnisansicht wurde %sgeschaltet.|ein|aus"
 SHOW_HIDDEN_FILES_TOGGLE="Die Anzeige versteckter Dateien wurde %sgeschaltet.|ein|aus"
-AUTO_READ_DIRECTORY_TOGGLE="Die automatische Aktualisierung des Verzeichnisses vom Fernrechner wurde %sgeschaltet.|ein|aus"
+AUTO_READ_DIRECTORY_TOGGLE="Die automatische Aktualisierung des Verzeichnisses der Gegenstelle wurde %sgeschaltet.|ein|aus"
 BALLOON_QUEUE_USER_ACTION="Für die Hintergrundübertragung ist Ihr Eingreifen erforderlich"
 BALLOON_QUEUE_EMPTY="Die Übertragungsliste ist leer."
 LOG_FILE_HINT3="!Y Jahr\n!M Monat\n!D Tag\n!T Zeit\n!P Prozessnummer\n!@ Rechnername\n!S Sitzungsname\nBeispiel: C:\\!S!T.log"
@@ -2592,9 +2592,9 @@ MESSAGE_DISPLAY_ERROR="Anzeigen nicht möglich"
 USAGE_SYNTAX_LABEL="Verwendung:"
 USAGE_SESSION="Name des Verbindungsziels oder direkte Sitzungsangabe."
 USAGE_NEWINSTANCE="Öffnet die Sitzung in einem neuen Fenster, auch wenn %APP% bereits läuft."
-USAGE_EDIT="Öffnet die Datei auf dem Fernrechner im internen Editor."
+USAGE_EDIT="Öffnet die Datei auf der Gegenstelle im internen Editor."
 USAGE_SYNCHRONIZE="Synchronisiert den Inhalt zweier Verzeichnisse."
-USAGE_KEEPUPTODATE="Beginnt damit, das Verzeichnis auf dem Fernserver aktuell zu halten."
+USAGE_KEEPUPTODATE="Beginnt damit, das Verzeichnis auf der Gegenstelle aktuell zu halten."
 USAGE_DEFAULTS="Startet den Vorgang, ohne den Einstellungen-Dialog anzuzeigen."
 USAGE_CONSOLE="Konsolenmodus (Text). Standardmodus, wenn der Aufruf über %APP%.com erfolgt."
 USAGE_SCRIPT="Führt ein Batchskript aus. Wenn das Skript nicht mit dem Befehl „exit“ endet, wird in den normalen interaktiven Modus geschaltet."
@@ -2623,13 +2623,13 @@ KEYGEN_PASSPHRASE2="Passphrase zur Sicherheit erneut eingeben:"
 KEYGEN_SAVED="Schlüssel wurde in „%s“ gespeichert."
 USAGE_CERTIFICATE="Fingerabdruck des Server-TLS/SSL-Zertifikats (nur FTPS-Protokoll)."
 USAGE_SESSIONNAME="Gibt der Sitzung einen Namen"
-USAGE_REFRESH="Lädt das Fenster des Fernrechners aller laufenden WinSCP-Instanzen neu. Wenn eine Sitzung (und optional ein Pfad) angegeben wurde, werden nur die Instanzen mit dieser Sitzung (und diesem Pfad) neu geladen."
+USAGE_REFRESH="Lädt das Fenster der Gegenstelle aller laufenden WinSCP-Instanzen neu. Wenn eine Sitzung (und optional ein Pfad) angegeben wurde, werden nur die Instanzen mit dieser Sitzung (und diesem Pfad) neu geladen."
 USAGE_LOGSIZE="Schaltet die Archivierung und das optionale Löschen alter Protokolldateien ein."
 PASSWORD_CHANGED="Das Passwort wurde geändert."
 OPEN_TARGET_FOLDER="&Zielordner öffnen"
 OPEN_DOWNLOADED_FILE="Heruntergeladene &Datei öffnen"
 ENCRYPT_KEY_GENERATED="**Verschlüsselungsschlüssel wurde generiert.**\n\nSie sollten den erzeugten Verschlüsselungsschlüssel sicher ablegen. Wenn Sie ihn verlieren, können Sie Ihre verschlüsselten Dateien nicht mehr lesen."
-LOCATION_PROFILE_HINT="Lesezeichen „%s“ öffnen.|Lokales Verzeichnis:\n %s|Verzeichnis auf dem Fernrechner:\n %s"
+LOCATION_PROFILE_HINT="Lesezeichen „%s“ öffnen.|Lokales Verzeichnis:\n %s|Verzeichnis auf der Gegenstelle:\n %s"
 USAGE_INFO="Zeigt eine Liste der unterstützten Verschlüsselungen und Algorithmen."
 USAGE_RAWTRANSFERSETTINGS="Konfiguriert alle Übertragungseinstellungen mit einem Rohformat wie in einer INI-Datei."
 CUSTOM_COMMAND_PATTERNS_HINT6="!E steht für die serialisierten Verbindungsdaten der aktuellen Sitzung"
@@ -2646,7 +2646,7 @@ USAGE_STDIN="Den Datenstrom von stdin lesen"
 COPY_FILE="%s Datei „%s“ nach %s"
 COPY_FILES="%s %d Dateien nach %s"
 COPY_TOLOCAL="Lokales Verzeichnis"
-COPY_TOREMOTE="Verzeichnis auf dem Fernrechner"
+COPY_TOREMOTE="Verzeichnis auf der Gegenstelle"
 COPY_TODROP="Ziel"
 COPY_MOVE_CAPTION="Verschieben"
 PROGRESS_SETPROPERTIES="Eigenschaften werden gesetzt"
@@ -2707,10 +2707,10 @@ CLEANUP_INIFILE="Konfigurationsdatei"
 CLEANUP_SEEDFILE="Startdatei für Zufallszahlen"
 SELECT_LOCAL_DIRECTORY="Lokales Verzeichnis auswählen."
 PROGRESS_REMOTE_MOVE="Verschieben"
-REMOTE_TRANSFER_PROMPT2="Ziel&pfad auf dem Fernrechner:"
+REMOTE_TRANSFER_PROMPT2="Ziel&pfad auf der Gegenstelle:"
 REMOTE_MOVE_TITLE="Verschieben"
-SYNCHRONIZE_TITLE="Verzeichnis auf dem Fernrechner aktuell halten"
-SYNCHRONIZE_SYCHRONIZING="Verzeichnis auf dem Fernrechner wird aktuell gehalten …"
+SYNCHRONIZE_TITLE="Verzeichnis auf der Gegenstelle aktuell halten"
+SYNCHRONIZE_SYCHRONIZING="Verzeichnis auf der Gegenstelle wird aktuell gehalten …"
 CLEANUP_TEMP_FOLDERS="Temporäre Ordner"
 NEW_FILE="Neue Datei"
 EDIT_FILE_CAPTION="Datei bearbeiten"
@@ -2746,7 +2746,7 @@ FSINFO_OWNER_GROUP_CHANGING="Darf Besitzer/Gruppe ändern"
 FSINFO_ANY_COMMAND="Darf beliebige Befehle ausführen"
 FSINFO_SYMBOLIC_HARD_LINK="Darf symbolische/harte Verknüpfung erzeugen"
 FSINFO_USER_GROUP_LISTING="Darf Benutzergruppen herausfinden"
-FSINFO_REMOTE_COPY="Darf Dateien auf dem Fernrechner duplizieren"
+FSINFO_REMOTE_COPY="Darf Dateien auf der Gegenstelle duplizieren"
 FSINFO_NATIVE_TEXT_MODE="Native ASCII-Textmodus-Übertragungen"
 FSINFO_CHECKING_SPACE_AVAILABLE="Darf verfügbaren Platz ermitteln"
 FSINFO_BYTES_ON_DEVICE="Gesamter Speicher auf Gerät"
@@ -2792,7 +2792,7 @@ LOGIN_DELETE_SESSION_FOLDER="Möchten Sie den Verbindungszielordner „%s“ mit
 LOGIN_DELETE_SPECIAL_SESSION="Spezielles Verbindungsziel „%s“ kann nicht gelöscht werden."
 LOGIN_NEW_SESSION_FOLDER_CAPTION="Sitzungsordner erstellen"
 LOGIN_NEW_SESSION_FOLDER_PROMPT="Neuer Ordner:"
-REMOTE_COPY_COMMAND_SESSION2="**Soll eine separate Shell-Sitzung geöffnet werden, um die Datei(en) zu duplizieren?**\n\nDie aktuelle Sitzung unterstützt das direkte Duplizieren von Dateien auf dem Fernserver nicht. Eine separate Shell-Sitzung kann geöffnet werden, um den Befehl auszuführen. Alternativ können Sie die Dateien auch über lokale temporäre Kopien duplizieren."
+REMOTE_COPY_COMMAND_SESSION2="**Soll eine separate Shell-Sitzung geöffnet werden, um die Datei(en) zu duplizieren?**\n\nDie aktuelle Sitzung unterstützt das direkte Duplizieren von Dateien auf der Gegenstelle nicht. Eine separate Shell-Sitzung kann geöffnet werden, um den Befehl auszuführen. Alternativ können Sie die Dateien auch über lokale temporäre Kopien duplizieren."
 EDITOR_AD_HOC="Editor"
 FILE_INFO_HIDDEN2="%s versteckt"
 FILE_INFO_FILTERED2="%s gefiltert"
@@ -2850,7 +2850,7 @@ INC_NEXT_SEARCH="(Tab-Taste für weiter)"
 PROGRESS_UPLOAD="Hochladen läuft"
 PROGRESS_DOWNLOAD="Herunterladen läuft"
 PROGRESS_IN_QUEUE="%d in der Warteschlange"
-PUTTY_PATTERNS_HINT2="Muster:\n!! steht für ein Ausrufezeichen\n!/ steht für den aktuellen Pfad auf dem Fernserver\n!@ steht für den Hostnamen der aktuellen Sitzung\n!U steht für den Benutzernamen der aktuellen Sitzung\n!P steht für das Passwort der aktuellen Sitzung\n!# steht für die Portnummer der aktuellen Sitzung\n!N steht für den Namen der aktuellen Sitzung\n!?prompt[\\]?default! steht für eine Benutzereingabe mit dem angegebenen Prompt und Defaultwert\n(die Angabe des optionalen \\ verhindert das Maskieren von Zeichen)\n!`command` steht für die Ausgabe des lokalen Befehls"
+PUTTY_PATTERNS_HINT2="Muster:\n!! steht für ein Ausrufezeichen\n!/ steht für den aktuellen Pfad der Gegenstelle\n!@ steht für den Hostnamen der aktuellen Sitzung\n!U steht für den Benutzernamen der aktuellen Sitzung\n!P steht für das Passwort der aktuellen Sitzung\n!# steht für die Portnummer der aktuellen Sitzung\n!N steht für den Namen der aktuellen Sitzung\n!?prompt[\\]?default! steht für eine Benutzereingabe mit dem angegebenen Prompt und Defaultwert\n(die Angabe des optionalen \\ verhindert das Maskieren von Zeichen)\n!`command` steht für die Ausgabe des lokalen Befehls"
 LOGIN_NEW_SITE_NODE="Neues Verbindungsziel"
 LOGIN_SITE_FOLDER_CAPTION="Verbindungszielordner"
 LOGIN_WORKSPACE_CAPTION="Arbeitsbereich"
@@ -2933,7 +2933,7 @@ COPY_PARAM_SAVE_PRESET="&Profilbeschreibung speichern …"
 RENAME_SESSION_TITLE="Sitzung umbenennen"
 RENAME_SESSION_PROMPT="&Neuer Sitzungsname"
 SYNCHRONIZE_COMPLETE="Synchronisation abgeschlossen"
-SYNCHRONIZE_SUMMARY="Dateien hochgeladen: %s (%s)|Dateien heruntergeladen: %s (%s)|Lokale Dateien gelöscht: %s|Dateien vom Fernrechner gelöscht: %s|Vergleichszeit: %s|Synchronisationszeit: %s"
+SYNCHRONIZE_SUMMARY="Dateien hochgeladen: %s (%s)|Dateien heruntergeladen: %s (%s)|Lokale Dateien gelöscht: %s|Dateien von Gegenstelle gelöscht: %s|Vergleichszeit: %s|Synchronisationszeit: %s"
 PREFERENCES_DRAGEXT_BROKEN="Die Shell-Erweiterung funktioniert nicht auf diesem System."
 FILE_COLOR_CAPTION="Dateifarben"
 UPDATES_DONATE_HTML="Um automatische Updates zu ermöglichen, spenden Sie bitte <a href=\"%DONATE_URL%\">an die WinSCP-Entwicklung</a> oder laden Sie WinSCP %GET_IMG% <a href=\"%STORE_URL%\">Microsoft Store</a>."
@@ -2944,10 +2944,10 @@ SITE_RAW_ADD="&Hinzufügen …"
 SITE_RAW_ADD_CAPTION="Sitzungseinstellung im Raw-Format hinzufügen"
 SITE_RAW_ADD_LABEL="&Sitzungseinstellung:"
 SYNCHRONIZE_CHECKLIST_UPLOAD_NEW="Neue lokale Datei hochladen"
-SYNCHRONIZE_CHECKLIST_DOWNLOAD_NEW="Neue Datei auf dem Fernrechner herunterladen"
+SYNCHRONIZE_CHECKLIST_DOWNLOAD_NEW="Neue Datei von der Gegenstelle herunterladen"
 SYNCHRONIZE_CHECKLIST_UPLOAD_UPDATE="Geänderte lokale Datei hochladen"
-SYNCHRONIZE_CHECKLIST_DOWNLOAD_UPDATE="Geänderte Datei auf dem Fernrechner herunterladen"
-SYNCHRONIZE_CHECKLIST_DELETE_REMOTE="Veraltete Datei auf dem Fernrechner löschen"
+SYNCHRONIZE_CHECKLIST_DOWNLOAD_UPDATE="Geänderte Datei von der Gegenstelle herunterladen"
+SYNCHRONIZE_CHECKLIST_DELETE_REMOTE="Veraltete Datei auf der Gegenstelle löschen"
 SYNCHRONIZE_CHECKLIST_DELETE_LOCAL="Veraltete lokale Datei löschen"
 SYNCHRONIZE_CHECKLIST_REVERSE="Zum Umkehren anklicken"
 IMPORT_CONVERTED_KEYS="%d Schlüsseldatei(en) in %d importierten Sitzungen wurden konvertiert oder durch vorhandene Schlüssel im unterstützten Format ersetzt."
@@ -2983,7 +2983,7 @@ KEYWORD_SCP_CLIENT="SCP-Client"
 KEYWORD_S3_CLIENT="S3-Client"
 KEYWORD_SECURE_TRANSFER="Sichere Dateiübertragung"
 KEYWORD_FREEWARE="Freeware"
-SCREENSHOT_COMMANDER="Hauptfenster der Commander-Oberfläche mit lokalem und Fernrechner-Dateifenster"
+SCREENSHOT_COMMANDER="Hauptfenster der Commander-Oberfläche mit lokalem und Gegenstellen-Dateifenster"
 SCREENSHOT_COMMANDER_SHORT="Commander-Oberfläche"
 SCREENSHOT_EXPLORER="Explorer-Oberfläche"
 SCREENSHOT_LOGIN="Anmeldedialog"
@@ -3022,7 +3022,7 @@ NEW_5_16_TABS="Verbesserungen bei Sitzungs- und Arbeitsbereichsverwaltung"
 ; <override>
 NEW_5_16_HW_AES="Hardwarebeschleunigtes AES"
 ; <override>
-NEW_5_16_ARCHIVE_DOWNLOAD="Erweiterung „Archivieren und herunterladen“, um Dateien auf dem Fernrechner in ein Archiv zu packen und dieses herunterzuladen"
+NEW_5_16_ARCHIVE_DOWNLOAD="Erweiterung „Archivieren und herunterladen“, um Dateien auf der Gegenstelle in ein Archiv zu packen und dieses herunterzuladen"
 ; <override>
 NEW_5_16_SYNC_CHECKLIST="Verbesserungen an der Checkliste für Synchronisationen"
 ; <override>
@@ -3393,11 +3393,11 @@ UserSettingsTitle="Anfängliche Benutzereinstellungen"
 UserSettingsPrompt="Bitte wählen Sie die Eigenschaften Ihrer bevorzugten Benutzungsoberfläche"
 UserInterfaceStyle="Art der Benutzungsoberfläche"
 NortonCommanderInterfaceC="&Commander"
-NortonCommanderInterface1="- Zwei Listenfenster (links lokales, rechts Verzeichnis auf Fernrechner)"
+NortonCommanderInterface1="- Zwei Listenfenster (links lokales, rechts Verzeichnis der Gegenstelle)"
 NortonCommanderInterface2="- Tastaturkürzel wie beim Norton Commander (u. a. wie Total Commander, Midnight Commander …)"
 NortonCommanderInterface3="- „Drag && Drop“ von und nach beiden Listenfenstern"
 ExplorerInterfaceC="&Explorer"
-ExplorerInterface1="- Nur Verzeichnis auf Fernrechner"
+ExplorerInterface1="- Nur Verzeichnis der Gegenstelle"
 ExplorerInterface2="- Tastaturkürzel wie Windows Explorer"
 ExplorerInterface3="- „Drag && Drop“"
 UserSettingsOverview="Anfängliche Benutzereinstellungen (können später angepasst werden)"
@@ -3423,14 +3423,14 @@ GenerateHttpUrl.PauseCheckbox.Caption="URL anzeigen"
 GenerateHttpUrl.ClipboardCheckbox.Caption="URL in die Zwischenablage kopieren"
 GenerateHttpUrl.OpenCheckbox.Caption="URL in Webbrowser öffnen"
 CompareFiles.Name="Dateien &vergleichen"
-CompareFiles.Description="Vergleicht den ausgewählten lokalen und den Pfad auf dem Fernrechner mit einem externen Dateivergleichswerkzeug"
+CompareFiles.Description="Vergleicht den ausgewählten lokalen und den Pfad der Gegenstelle mit einem externen Dateivergleichswerkzeug"
 CompareFiles.OptionsGroup.Caption="Optionen"
 CompareFiles.ToolDropdownlist.Caption="Anwendung zum Dateivergleich auswählen:"
 CompareFiles.ToolDropdownlist.1="Automatisch"
 VerifyFileChecksum.Name="&Prüfsumme kontrollieren"
-VerifyFileChecksum.Description="Vergleicht die Prüfsummen der ausgewählten lokalen und der Datei auf dem Fernrechner"
+VerifyFileChecksum.Description="Vergleicht die Prüfsummen der ausgewählten lokalen und der Datei der Gegenstelle"
 SearchText.Name="Nach Text &suchen …"
-SearchText.Description="Sucht rekursiv nach dem eingegebenen Text im aktuellen Verzeichnis auf dem Fernrechner"
+SearchText.Description="Sucht rekursiv nach dem eingegebenen Text im aktuellen Verzeichnis der Gegenstelle"
 SearchText.TextTextbox.Caption="Text:"
 SearchText.WildcardTextbox.Caption="Dateimaske:"
 ZipUpload.Name="&Zippen und hochladen …"
@@ -3441,9 +3441,9 @@ ZipUpload.Archive7zipDropdownlist.Caption="Archiv&typ (mit 7-Zip):"
 ZipUpload.Path7zipFile.Caption="7-Zip-&Pfad (7z.exe/7za.exe):"
 ZipUpload.LoggingGroup.Caption="Protokoll"
 KeepLocalUpToDate.Name="Das &lokale Verzeichnis aktuell halten …"
-KeepLocalUpToDate.Description="Das Verzeichnis des Fernrechners wird regelmäßig auf Änderungen überprüft und diese werden auf das lokale Verzeichnis angewandt."
+KeepLocalUpToDate.Description="Das Verzeichnis der Gegenstelle wird regelmäßig auf Änderungen überprüft und diese werden auf das lokale Verzeichnis angewandt."
 KeepLocalUpToDate.DirectoriesGroup.Caption="Verzeichnisse"
-KeepLocalUpToDate.RemotePathTextbox.Caption="Änderungen im Verzeichnis auf dem Fernrechner &überwachen:"
+KeepLocalUpToDate.RemotePathTextbox.Caption="Änderungen im Verzeichnis der Gegenstelle &überwachen:"
 KeepLocalUpToDate.LocalPathTextbox.Caption=" … &und diese automatisch in das lokale Verzeichnis übernehmen:"
 KeepLocalUpToDate.OptionsGroup.Caption="Optionen"
 KeepLocalUpToDate.DeleteCheckbox.Caption="&Dateien löschen"
@@ -3452,7 +3452,7 @@ KeepLocalUpToDate.ContinueOnErrorCheckbox.Caption="Bei F&ehlern fortsetzen"
 KeepLocalUpToDate.IntervalTextbox.Caption="&Intervall (in Sekunden):"
 KeepLocalUpToDate.LoggingGroup.Caption="Protokoll"
 BatchRename.Name="Stapel&umbenennung …"
-BatchRename.Description="Benennt Dateien auf dem Fernrechnermithilfe eines regulären Ausdrucks um"
+BatchRename.Description="Benennt Dateien der Gegenstelle mit Hilfe eines regulären Ausdrucks um"
 BatchRename.RenameGroup.Caption="Umbenennen"
 BatchRename.PatternTextbox.Caption="Dateinamensteil ersetzen, der diesem Muster entspricht:"
 BatchRename.ReplacementTextbox.Caption="mit:"
@@ -3472,7 +3472,7 @@ ArchiveDownload.ExtractCheckbox.Caption="Nach dem Herunterladen &entpacken"
 ArchiveDownload.Use7zipCheckbox.Caption="&7-Zip zum Entpacken verwenden"
 ArchiveDownload.Path7zipFile.Caption="7-Zip-&Pfad (7z.exe/7za.exe):"
 ArchiveDownload.LoggingGroup.Caption="Protokoll"
-SynchronizeAnotherServer.Name="Mit einem anderen Fernrechner &synchronisieren …"
+SynchronizeAnotherServer.Name="Mit einer anderen Gegenstelle &synchronisieren …"
 SynchronizeAnotherServer.Description="Ein Verzeichnis auf einem anderen Server (oder ein anderes Verzeichnis auf diesem Server) mit einem Verzeichnis auf diesem Server auf dem gleichen Stand halten."
 SynchronizeAnotherServer.SynchronizeDirectoryFromThisServerGroup.Caption="Synchronisiere Verzeichnis von diesem Server"
 SynchronizeAnotherServer.RemotePath1Textbox.Caption="&Verzeichnis:"

+ 9 - 10
translations/RU.ini

@@ -17,7 +17,7 @@ BannerPanel.BannerCloseButton.Caption="Продолжить"
 BannerPanel.BannerHelpButton.Caption="&Справка"
 ActionList.EditCopyAction.Caption="&Копировать"
 ActionList.EditSelectAllAction.Caption="Выделить &всё"
-ActionList.BannerMonospacedFontAction.Caption="Использовать шрифт с &постоянным отступом"
+ActionList.BannerMonospacedFontAction.Caption="Использовать &моноширный шрифт"
 ActionList.LabelCopyAction.Caption="&Копировать"
 ActionList.LabelOpenLinkAction2.Caption="&Открыть ссылку"
 
@@ -66,11 +66,11 @@ CancelButton.Caption="Отмена"
 RuleGroup.Caption="Выбор по маске"
 RuleGroup.Label2.Caption="&Сервер:"
 RuleGroup.Label3.Caption="&Пользователь:"
-RuleGroup.Label4.Caption="&Каталог на сервере:"
-RuleGroup.Label5.Caption="&Локальный каталог:"
+RuleGroup.Label4.Caption="Маска &удаленного каталога:"
+RuleGroup.Label5.Caption="Маска &локального каталог:"
 RuleGroup.CurrentRuleButton.Caption="Текущее"
-RuleGroup.RuleMaskHintText.Caption="Справка"
-HasRuleCheck.Caption="Активировать этот вариант в случае…"
+RuleGroup.RuleMaskHintText.Caption="помощь по маскам"
+HasRuleCheck.Caption="Активировать этот вариант если"
 HelpButton.Caption="Справка"
 
 [CopyParams.dfm]
@@ -132,14 +132,14 @@ Group.RemoteCommandButton.Caption="&Удаленная команда"
 Group.ShowResultsCheck.Caption="&Выводить на терминале"
 Group.CopyResultsCheck.Caption="Копировать результат в &буфер"
 Group.HintText.Caption="&шаблоны"
-Group.RemoteFilesCheck.Caption="Маски для файлов на сервере"
+Group.RemoteFilesCheck.Caption="Использовать удаленные файлы"
 OkButton.Caption="OK"
 CancelButton.Caption="Отмена"
 HelpButton.Caption="&Справка"
 
 [CustomScpExplorer.dfm]
-QueueSplitter.Hint="Перетаскивание меняет размер списка. Двойной щелчок скрывает список."
-QueuePanel.QueueFileListSplitter.Hint="Перетаскивание меняет размер списка файлов. Двойной щелчок скрывает список."
+QueueSplitter.Hint="Перетащите для изменения размера списка. Дважды щелкните чтобы скрыть список."
+QueuePanel.QueueFileListSplitter.Hint="Перетащите для изменения размера списка. Дважды щелкните чтобы скрыть список."
 QueuePanel.QueueView3.item0.Caption="Операция"
 QueuePanel.QueueView3.item1.Caption="Источник"
 QueuePanel.QueueView3.item2.Caption="Назначение"
@@ -149,7 +149,7 @@ QueuePanel.QueueView3.item5.Caption="Скорость"
 QueuePanel.QueueView3.item6.Caption="Прогресс"
 
 [EditMask.dfm]
-Caption="Редактировать маску файлов"
+Caption="Изменить маску файлов"
 FilesGroup.Caption="Маски файлов"
 FilesGroup.Label3.Caption="&Включить файлы:"
 FilesGroup.Label1.Caption="&Исключить файлы:"
@@ -2976,7 +2976,6 @@ FUNCTIONS_PORTABLE="При желании поддерживает портат
 FUNCTIONS_TRANSFER="Двоичный и текстовый тип передачи, фоновые загрузки и очередь"
 FUNCTIONS_DOCUMENTATION="Подробная документация по WinSCP и активный форум пользователей находятся в свободном доступе на сайте WinSCP"
 STORE_BUYING="Покупая WinSCP в Microsoft Store, вы поддерживаете разработку WinSCP. Спасибо!"
-STORE_TITLE="WinSCP - SFTP, FTP, WebDAV, SCP и S3 клиент"
 KEYWORD_SFTP_CLIENT="клиент sftp"
 KEYWORD_FTP_CLIENT="клиент ftp"
 KEYWORD_WEBDAV_CLIENT="клиент webdav"

+ 4 - 4
translations/version.ini

@@ -1,6 +1,6 @@
 [Version]
 CS=263
-DE=154
+DE=155
 ES=86
 FI=100
 FR=113
@@ -14,7 +14,7 @@ MS=18
 NL=81
 NO=51
 PL=106
-RU=98
+RU=99
 SV=79
 XXE=7
 EL=19
@@ -56,7 +56,7 @@ MYA=6
 
 [Author]
 CS=2003,2023,Martin Přikryl
-DE=2003,2022,Marko Meister,Mick Weiss
+DE=2003,2023,Marko Meister,Mick Weiss
 ES=2003,2022,David Martin,Fredy Rojas,Pablo Grande,Juan Razeto
 FI=2003,2022,Sami Kuusisto,Tero Pelander,Jarmo Järvenpää
 FR=2003,2022,Nicolas Frissung,Eric Winter,Julien Terral,Raphael Raimbault
@@ -70,7 +70,7 @@ MS=2003,2019,Lim Ghee Lam
 NL=2003,2022,Nathan van Dael,Pieter Verhaeghe,Russell Ian Trafford,Stephan Eizinga,Dennis van Zoerlandt
 NO=2003,2022,Stein-Aksel Basma,Denis Braekhus,Odd Egil Hansen
 PL=2003,2022,Marek Adamski,Michał Trzebiatowski,Hubert Trzewik,Wojciech Fornal,Andrzej Maslowski,Marek Lipinski
-RU=2003,2022,Vitaliy Zhukov,Alexey Vesnin,Maksim Sidorov,Dmitriy Yermolayev,Stas Ukolov,Alexander Nureyev
+RU=2003,2023,Vitaliy Zhukov,Alexey Vesnin,Maksim Sidorov,Dmitriy Yermolayev,Stas Ukolov,Alexander Nureyev
 SV=2003,2022,Andreas Pettersson,René Fichter
 XXE=2004,2019,Trio
 EL=2004,2022,Chrysostomos Rousopoulos,Dimitris Botsis,Michail K. Karos