Rename smtp.client-ip to smtp.remote-ip
authorPhil Pennock <pdp@exim.org>
Fri, 12 Oct 2018 17:35:00 +0000 (13:35 -0400)
committerPhil Pennock <pdp@exim.org>
Fri, 12 Oct 2018 17:35:00 +0000 (13:35 -0400)
This tracks changes in the ARC draft.

The Received-SPF headers remain unchanged.

src/src/arc.c
src/src/expand.c
test/log/4560
test/mail/3700.smtps
test/mail/3700.x

index 64362e7..80bb30e 100644 (file)
@@ -1840,7 +1840,7 @@ if (arc_state)
       US" arc.oldest-pass=", string_sprintf("%d", arc_oldest_pass));
 
     if (sender_host_address)
-      g = string_append(g, 2, US" smtp.client-ip=", sender_host_address);
+      g = string_append(g, 2, US" smtp.remote-ip=", sender_host_address);
     }
   else if (arc_state_reason)
     g = string_append(g, 3, US" (", arc_state_reason, US")");
index ca7d368..adc90f6 100644 (file)
@@ -1687,7 +1687,7 @@ else
   return g;
 
 if (sender_host_address)
-  g = string_append(g, 2, US" smtp.client-ip=", sender_host_address);
+  g = string_append(g, 2, US" smtp.remote-ip=", sender_host_address);
 return g;
 }
 
index 2ffd41b..7b11a85 100644 (file)
@@ -62,8 +62,8 @@
 1999-03-02 09:44:33 10HmbC-0005vi-00 domains:        <test.ex:test.ex>
 1999-03-02 09:44:33 10HmbC-0005vi-00 arc_oldest_pass <1>
 1999-03-02 09:44:33 10HmbC-0005vi-00 reason:         <>
-1999-03-02 09:44:33 10HmbC-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbC-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbC-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbC-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
 1999-03-02 09:44:33 10HmbC-0005vi-00 oldest-p-ams:   <i=1; test.ex;\n  arc=none>
 1999-03-02 09:44:33 10HmbC-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@test.ex
 1999-03-02 09:44:33 10HmbB-0005vi-00 => a@test.ex <za@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbC-0005vi-00"
@@ -98,9 +98,9 @@
 1999-03-02 09:44:33 10HmbF-0005vi-00 domains:        <test.ex:test.ex>
 1999-03-02 09:44:33 10HmbF-0005vi-00 arc_oldest_pass <2>
 1999-03-02 09:44:33 10HmbF-0005vi-00 reason:         <>
-1999-03-02 09:44:33 10HmbF-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbF-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
-1999-03-02 09:44:33 10HmbF-0005vi-00 oldest-p-ams:   <i=2; test.ex;\n  iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1>
+1999-03-02 09:44:33 10HmbF-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbF-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbF-0005vi-00 oldest-p-ams:   <i=2; test.ex;\n  iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1>
 1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for za@test.ex
 1999-03-02 09:44:33 10HmbE-0005vi-00 => za@test.ex <mza@test.ex> R=mlist T=tmlist H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbF-0005vi-00"
 1999-03-02 09:44:33 10HmbE-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbG-0005vi-00 domains:        <test.ex:test.ex:test.ex>
 1999-03-02 09:44:33 10HmbG-0005vi-00 arc_oldest_pass <2>
 1999-03-02 09:44:33 10HmbG-0005vi-00 reason:         <>
-1999-03-02 09:44:33 10HmbG-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbG-0005vi-00 lh-ams:         < i=3; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1: i=2; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
-1999-03-02 09:44:33 10HmbG-0005vi-00 oldest-p-ams:   <i=2; test.ex;\n  iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1>
+1999-03-02 09:44:33 10HmbG-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.remote-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbG-0005vi-00 lh-ams:         < i=3; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.remote-ip=127.0.0.1: i=2; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbG-0005vi-00 oldest-p-ams:   <i=2; test.ex;\n  iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1>
 1999-03-02 09:44:33 10HmbG-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@test.ex
 1999-03-02 09:44:33 10HmbF-0005vi-00 => a@test.ex <za@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbG-0005vi-00"
 1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
 1999-03-02 09:44:33 10HmbJ-0005vi-00 domains:        <test.ex:test.ex>
 1999-03-02 09:44:33 10HmbJ-0005vi-00 arc_oldest_pass <1>
 1999-03-02 09:44:33 10HmbJ-0005vi-00 reason:         <>
-1999-03-02 09:44:33 10HmbJ-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbJ-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbJ-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbJ-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
 1999-03-02 09:44:33 10HmbJ-0005vi-00 oldest-p-ams:   <i=1; test.ex;\n  arc=none>
 1999-03-02 09:44:33 10HmbJ-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for mza@test.ex
 1999-03-02 09:44:33 10HmbI-0005vi-00 => mza@test.ex <zmza@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbJ-0005vi-00"
 1999-03-02 09:44:33 10HmbK-0005vi-00 domains:        <test.ex:test.ex>
 1999-03-02 09:44:33 10HmbK-0005vi-00 arc_oldest_pass <0>
 1999-03-02 09:44:33 10HmbK-0005vi-00 reason:         <AMS body hash miscompare>
-1999-03-02 09:44:33 10HmbK-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbK-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbK-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbK-0005vi-00 lh-ams:         < i=2; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
 1999-03-02 09:44:33 10HmbK-0005vi-00 oldest-p-ams:   <>
 1999-03-02 09:44:33 10HmbK-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss for za@test.ex
 1999-03-02 09:44:33 10HmbJ-0005vi-00 => za@test.ex <mza@test.ex> R=mlist T=tmlist H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbK-0005vi-00"
 1999-03-02 09:44:33 10HmbL-0005vi-00 domains:        <test.ex:test.ex:test.ex>
 1999-03-02 09:44:33 10HmbL-0005vi-00 arc_oldest_pass <0>
 1999-03-02 09:44:33 10HmbL-0005vi-00 reason:         <i=3 (cv)>
-1999-03-02 09:44:33 10HmbL-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=fail (i=2)(AMS body hash miscompare) header.s=sel arc.oldest-pass=0 smtp.client-ip=127.0.0.1: test.ex;\n    iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
-1999-03-02 09:44:33 10HmbL-0005vi-00 lh-ams:         < i=3; test.ex;\n iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=fail (i=2)(AMS body hash miscompare) header.s=sel arc.oldest-pass=0 smtp.client-ip=127.0.0.1: i=2; test.ex;\n       iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: i=1; test.ex;\n arc=none>
+1999-03-02 09:44:33 10HmbL-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=fail (i=2)(AMS body hash miscompare) header.s=sel arc.oldest-pass=0 smtp.remote-ip=127.0.0.1: test.ex;\n    iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbL-0005vi-00 lh-ams:         < i=3; test.ex;\n iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=fail (i=2)(AMS body hash miscompare) header.s=sel arc.oldest-pass=0 smtp.remote-ip=127.0.0.1: i=2; test.ex;\n       iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: i=1; test.ex;\n arc=none>
 1999-03-02 09:44:33 10HmbL-0005vi-00 oldest-p-ams:   <>
 1999-03-02 09:44:33 10HmbL-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss for a@test.ex
 1999-03-02 09:44:33 10HmbK-0005vi-00 => a@test.ex <za@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbL-0005vi-00"
 1999-03-02 09:44:33 10HmbO-0005vi-00 domains:        <test.ex>
 1999-03-02 09:44:33 10HmbO-0005vi-00 arc_oldest_pass <1>
 1999-03-02 09:44:33 10HmbO-0005vi-00 reason:         <>
-1999-03-02 09:44:33 10HmbO-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.client-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1: test.ex;\n      arc=none>
+1999-03-02 09:44:33 10HmbO-0005vi-00 lh_A-R:         < test.ex;\n      iprev=pass (localhost) smtp.remote-ip=127.0.0.1;\n      arc=pass (i=1) header.s=sel arc.oldest-pass=1 smtp.remote-ip=127.0.0.1: test.ex;\n      arc=none>
 1999-03-02 09:44:33 10HmbO-0005vi-00 lh-ams:         < i=1; test.ex;\n arc=none>
 1999-03-02 09:44:33 10HmbO-0005vi-00 oldest-p-ams:   <i=1; test.ex;\n  arc=none>
 1999-03-02 09:44:33 10HmbO-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@test.ex
 1999-03-02 09:44:33 10HmbQ-0005vi-00 domains:        <convivian.com:test.ex>
 1999-03-02 09:44:33 10HmbQ-0005vi-00 arc_oldest_pass <0>
 1999-03-02 09:44:33 10HmbQ-0005vi-00 reason:         <i=2 (cv)>
-1999-03-02 09:44:33 10HmbQ-0005vi-00 lh_A-R:         < test.ex;\n      dkim=pass header.d=dmarc.org header.s=clochette header.a=rsa-sha256;\n  dkim=fail (body hash mismatch; body probably modified in transit)\n              header.d=convivian.com header.s=default header.a=rsa-sha256;\n arc=fail (i=1)(AMS body hash miscompare) header.s=default arc.oldest-pass=0 smtp.client-ip=127.0.0.1: dragon.trusteddomain.org; sender-id=fail (NotPermitted) header.sender=arc-discuss-bounces@dmarc.org; spf=fail (NotPermitted) smtp.mfrom=arc-discuss-bounces@dmarc.org: dragon.trusteddomain.org; dkim=pass\n reason="1024-bit key"\n header.d=convivian.com header.i=@convivian.com header.b=LHXEAl5e;\n dkim-adsp=pass: dragon.trusteddomain.org;\n sender-id=pass header.from=jered@convivian.com;\n spf=pass smtp.mfrom=jered@convivian.com>
-1999-03-02 09:44:33 10HmbQ-0005vi-00 lh-ams:         < i=2; test.ex;\n dkim=pass header.d=dmarc.org header.s=clochette header.a=rsa-sha256;\n  dkim=fail (body hash mismatch; body probably modified in transit)\n              header.d=convivian.com header.s=default header.a=rsa-sha256;\n arc=fail (i=1)(AMS body hash miscompare) header.s=default arc.oldest-pass=0 smtp.client-ip=127.0.0.1: i=1; mailhub.convivian.com; none>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 lh_A-R:         < test.ex;\n      dkim=pass header.d=dmarc.org header.s=clochette header.a=rsa-sha256;\n  dkim=fail (body hash mismatch; body probably modified in transit)\n              header.d=convivian.com header.s=default header.a=rsa-sha256;\n arc=fail (i=1)(AMS body hash miscompare) header.s=default arc.oldest-pass=0 smtp.remote-ip=127.0.0.1: dragon.trusteddomain.org; sender-id=fail (NotPermitted) header.sender=arc-discuss-bounces@dmarc.org; spf=fail (NotPermitted) smtp.mfrom=arc-discuss-bounces@dmarc.org: dragon.trusteddomain.org; dkim=pass\n reason="1024-bit key"\n header.d=convivian.com header.i=@convivian.com header.b=LHXEAl5e;\n dkim-adsp=pass: dragon.trusteddomain.org;\n sender-id=pass header.from=jered@convivian.com;\n spf=pass smtp.mfrom=jered@convivian.com>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 lh-ams:         < i=2; test.ex;\n dkim=pass header.d=dmarc.org header.s=clochette header.a=rsa-sha256;\n  dkim=fail (body hash mismatch; body probably modified in transit)\n              header.d=convivian.com header.s=default header.a=rsa-sha256;\n arc=fail (i=1)(AMS body hash miscompare) header.s=default arc.oldest-pass=0 smtp.remote-ip=127.0.0.1: i=1; mailhub.convivian.com; none>
 1999-03-02 09:44:33 10HmbQ-0005vi-00 oldest-p-ams:   <>
 1999-03-02 09:44:33 10HmbQ-0005vi-00 <= CALLER@bloggs.com H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss DKIM=dmarc.org id=1426665656.110316.1517535248039.JavaMail.zimbra@convivian.com for a@test.ex
 1999-03-02 09:44:33 10HmbP-0005vi-00 => a@test.ex <za@test.ex> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbQ-0005vi-00"
index e00ff4d..700d681 100644 (file)
@@ -1,6 +1,6 @@
 From ok@test.ex Tue Mar 02 09:44:33 1999
 Authentication-Results: myhost.test.ex;
-       iprev=pass (localhost) smtp.client-ip=127.0.0.1;
+       iprev=pass (localhost) smtp.remote-ip=127.0.0.1;
        auth=pass (tls) x509.auth="Phil Pennock"
 Received: from localhost ([127.0.0.1] helo=myhost.test.ex)
        by myhost.test.ex with esmtpsa (TLS_proto_and_cipher)
index 138bcfb..8b589be 100644 (file)
@@ -1,6 +1,6 @@
 From ok@test.ex Tue Mar 02 09:44:33 1999
 Authentication-Results: myhost.test.ex;
-       iprev=pass (localhost) smtp.client-ip=127.0.0.1;
+       iprev=pass (localhost) smtp.remote-ip=127.0.0.1;
        auth=pass (tls) x509.auth="Phil Pennock"
 Received: from localhost ([127.0.0.1] helo=myhost.test.ex)
        by myhost.test.ex with esmtpsa (TLS_proto_and_cipher)