-#ifdef EXPERIMENTAL_ARC
-# if !defined SUPPORT_SPF
-# error SPF must also be enabled for ARC
-# elif defined DISABLE_DKIM
+#if defined EXPERIMENTAL_ARC
+# if defined DISABLE_DKIM
memcpy(al->rawsig_no_b_val.data, h->text, off); /* copy the header name blind */
r = al->rawsig_no_b_val.data + off;
al->rawsig_no_b_val.len = off;
memcpy(al->rawsig_no_b_val.data, h->text, off); /* copy the header name blind */
r = al->rawsig_no_b_val.data + off;
al->rawsig_no_b_val.len = off;
while ((c = *++s) && c != ';')
if (c != ' ' && c != '\t' && c != '\n' && c != '\r')
g = string_catn(g, s, 1);
while ((c = *++s) && c != ';')
if (c != ' ' && c != '\t' && c != '\n' && c != '\r')
g = string_catn(g, s, 1);
while ((c = *++s) && c != ';')
if (c != ' ' && c != '\t' && c != '\n' && c != '\r')
g = string_catn(g, s, 1);
while ((c = *++s) && c != ';')
if (c != ' ' && c != '\t' && c != '\n' && c != '\r')
g = string_catn(g, s, 1);
- al->s.len, al->s.data, al->d.len, al->d.data))))
+ (int)al->s.len, al->s.data, (int)al->d.len, al->d.data))))
if ((errstr = exim_dkim_verify(&vctx,
pdkim_hashes[hashtype].exim_hashmethod, &hhash, &sighash)))
if ((errstr = exim_dkim_verify(&vctx,
pdkim_hashes[hashtype].exim_hashmethod, &hhash, &sighash)))
if ((errstr = exim_dkim_verify(&vctx,
pdkim_hashes[hashtype].exim_hashmethod,
&hhash_computed, &sighash)))
if ((errstr = exim_dkim_verify(&vctx,
pdkim_hashes[hashtype].exim_hashmethod,
&hhash_computed, &sighash)))
const uschar * identity, int instance, blob * ar)
{
int aar_off = g ? g->ptr : 0;
const uschar * identity, int instance, blob * ar)
{
int aar_off = g ? g->ptr : 0;
arc_line * al = (arc_line *)(as+1);
header_line * h = (header_line *)(al+1);
g = string_catn(g, ARC_HDR_AAR, ARC_HDRLEN_AAR);
arc_line * al = (arc_line *)(as+1);
header_line * h = (header_line *)(al+1);
g = string_catn(g, ARC_HDR_AAR, ARC_HDRLEN_AAR);
-g = string_cat(g, string_sprintf(" i=%d; %s;\r\n\t", instance, identity));
+g = string_fmt_append(g, " i=%d; %s;\r\n\t", instance, identity);
g = string_catn(g, US ar->data, ar->len);
h->slen = g->ptr - aar_off;
g = string_catn(g, US ar->data, ar->len);
h->slen = g->ptr - aar_off;
|| (errstr = exim_dkim_sign(&sctx, hm, &hhash, sig)))
{
log_write(0, LOG_MAIN, "ARC: %s signing: %s\n", why, errstr);
|| (errstr = exim_dkim_sign(&sctx, hm, &hhash, sig)))
{
log_write(0, LOG_MAIN, "ARC: %s signing: %s\n", why, errstr);
g = string_catn(g, US"\r\n\t ", 5);
}
g = string_catn(g, US";\r\n", 3);
g = string_catn(g, US"\r\n\t ", 5);
}
g = string_catn(g, US";\r\n", 3);
header_line * h = (header_line *)(al+1);
/* debug_printf("%s\n", __FUNCTION__); */
header_line * h = (header_line *)(al+1);
/* debug_printf("%s\n", __FUNCTION__); */
-g = string_append(g, 7,
- ARC_HDR_AMS,
- US" i=", string_sprintf("%d", instance),
- US"; a=rsa-sha256; c=relaxed; d=", identity, /*XXX hardwired */
- US"; s=", selector);
+g = string_fmt_append(g, "%s i=%d; a=rsa-sha256; c=relaxed; d=%s; s=%s",
+ ARC_HDR_AMS, instance, identity, selector); /*XXX hardwired a= */
- g = string_append(g, 2,
- US"; t=", string_sprintf("%lu", (u_long)now));
+ g = string_fmt_append(g, "; t=%lu", (u_long)now);
- g = string_append(g, 2,
- US"; x=", string_sprintf("%lu", (u_long)expire));
-g = string_append(g, 3,
- US";\r\n\tbh=", pdkim_encode_base64(bodyhash),
- US";\r\n\th=");
+ g = string_fmt_append(g, "; x=%lu", (u_long)expire);
+g = string_fmt_append(g, ";\r\n\tbh=%s;\r\n\th=",
+ pdkim_encode_base64(bodyhash));
- all ARC set headers, set-number order, aar then ams then as,
including self (but with an empty b= in self)
*/
- all ARC set headers, set-number order, aar then ams then as,
including self (but with an empty b= in self)
*/
/* For any but "fail" chain-verify status, walk the entire chain in order by
instance. For fail, only the new arc-set. Accumulate the elements walked. */
/* For any but "fail" chain-verify status, walk the entire chain in order by
instance. For fail, only the new arc-set. Accumulate the elements walked. */
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, TRUE));
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, TRUE));
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, TRUE));
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, TRUE));
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, !!as->next));
}
hdata = string_cat(hdata, pdkim_relax_header_n(h->text, h->slen, !!as->next));
}
/* Finally, append the AMS and AAR to the new AS */
return string_catn(arcset, arcset_interim->s, arcset_interim->ptr);
/* Finally, append the AMS and AAR to the new AS */
return string_catn(arcset, arcset_interim->s, arcset_interim->ptr);
-g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar,
+if (g)
+ g = arc_sign_prepend_as(g, &arc_sign_ctx, instance, identity, selector, &ar,
if ((errstr = arc_parse_line(&al, &h, ARC_HDRLEN_AMS, FALSE)))
{
DEBUG(D_acl) if (errstr) debug_printf("ARC: %s\n", errstr);
if ((errstr = arc_parse_line(&al, &h, ARC_HDRLEN_AMS, FALSE)))
{
DEBUG(D_acl) if (errstr) debug_printf("ARC: %s\n", errstr);
g = string_append(g, 2, US";\n\tarc=", arc_state);
if (arc_received_instance > 0)
{
g = string_append(g, 2, US";\n\tarc=", arc_state);
if (arc_received_instance > 0)
{
- g = string_append(g, 3, US" (i=",
- string_sprintf("%d", arc_received_instance), US")");
+ g = string_fmt_append(g, " (i=%d)", arc_received_instance);
if (arc_state_reason)
g = string_append(g, 3, US"(", arc_state_reason, US")");
g = string_catn(g, US" header.s=", 10);
highest_ams = arc_received->hdr_ams;
g = string_catn(g, highest_ams->s.data, highest_ams->s.len);
if (arc_state_reason)
g = string_append(g, 3, US"(", arc_state_reason, US")");
g = string_catn(g, US" header.s=", 10);
highest_ams = arc_received->hdr_ams;
g = string_catn(g, highest_ams->s.data, highest_ams->s.len);
- g = string_append(g, 2,
- US" arc.oldest-pass=", string_sprintf("%d", arc_oldest_pass));
+ g = string_fmt_append(g, " arc.oldest-pass=%d", arc_oldest_pass);
- 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")");
}
else if (arc_state_reason)
g = string_append(g, 3, US" (", arc_state_reason, US")");