RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/libreswan#edf019da096d996a265210d164af9c89a6b637c9
This commit is contained in:
parent
17714fc5a8
commit
5389f58fcc
36
.gitignore
vendored
36
.gitignore
vendored
@ -0,0 +1,36 @@
|
||||
/libreswan-3.2.tar.gz
|
||||
/libreswan-3.3.tar.gz
|
||||
/libreswan-3.4.tar.gz
|
||||
/libreswan-3.5.tar.gz
|
||||
/libreswan-3.6.tar.gz
|
||||
/libreswan-3.7.tar.gz
|
||||
/libreswan-3.8.tar.gz
|
||||
/libreswan-3.9.tar.gz
|
||||
/libreswan-3.10.tar.gz
|
||||
/libreswan-3.11.tar.gz
|
||||
/libreswan-3.12.tar.gz
|
||||
/libreswan-3.13.tar.gz
|
||||
/libreswan-3.14.tar.gz
|
||||
/ikev1_dsa.fax.bz2
|
||||
/ikev1_psk.fax.bz2
|
||||
/ikev2.fax.bz2
|
||||
/libreswan-3.15.tar.gz
|
||||
/libreswan-3.16.tar.gz
|
||||
/libreswan-3.17.tar.gz
|
||||
/libreswan-3.18.tar.gz
|
||||
/libreswan-3.19.tar.gz
|
||||
/libreswan-3.20dr4.tar.gz
|
||||
/libreswan-3.20.tar.gz
|
||||
/libreswan-3.21.tar.gz
|
||||
/libreswan-3.22.tar.gz
|
||||
/libreswan-3.23.tar.gz
|
||||
/libreswan-3.24.tar.gz
|
||||
/libreswan-3.25.tar.gz
|
||||
/libreswan-3.26.tar.gz
|
||||
/libreswan-3.27.tar.gz
|
||||
/libreswan-3.28.tar.gz
|
||||
/libreswan-3.29.tar.gz
|
||||
/libreswan-3.30.tar.gz
|
||||
/libreswan-3.31.tar.gz
|
||||
/libreswan-3.32.tar.gz
|
||||
/libreswan-4.0rc1.tar.gz
|
66
libreswan-3.23-crypto-policies.patch
Normal file
66
libreswan-3.23-crypto-policies.patch
Normal file
@ -0,0 +1,66 @@
|
||||
diff --git a/lib/libipsecconf/parser.l b/lib/libipsecconf/parser.l
|
||||
index c41dd8048..cc2faf5c9 100644
|
||||
--- a/lib/libipsecconf/parser.l
|
||||
+++ b/lib/libipsecconf/parser.l
|
||||
@@ -160,7 +160,9 @@ static int parser_y_nextglobfile(struct ic_inputsource *iis)
|
||||
char ebuf[128];
|
||||
|
||||
snprintf(ebuf, sizeof(ebuf),
|
||||
- "cannot open include filename: '%s': %s",
|
||||
+ (strstr(iis->filename, "crypto-policies/back-ends/libreswan.config") == NULL) ?
|
||||
+ "cannot open include filename: '%s': %s" :
|
||||
+ "ignored loading default system-wide crypto-policies file '%s': %s",
|
||||
iis->fileglob.gl_pathv[fcnt],
|
||||
strerror(errno));
|
||||
yyerror(ebuf);
|
||||
diff --git a/programs/configs/ipsec.conf.in b/programs/configs/ipsec.conf.in
|
||||
index 7374efc3c..974699f01 100644
|
||||
--- a/programs/configs/ipsec.conf.in
|
||||
+++ b/programs/configs/ipsec.conf.in
|
||||
@@ -1,27 +1,18 @@
|
||||
# @FINALCONFDIR@/ipsec.conf - Libreswan IPsec configuration file
|
||||
#
|
||||
-# Manual: ipsec.conf.5
|
||||
+# see 'man ipsec.conf' and 'man pluto' for more information
|
||||
+#
|
||||
+# For example configurations and documentation, see https://libreswan.org/wiki/
|
||||
|
||||
config setup
|
||||
- # Normally, pluto logs via syslog. If you want to log to a file,
|
||||
- # specify below or to disable logging, eg for embedded systems, use
|
||||
- # the file name /dev/null
|
||||
- # Note: SElinux policies might prevent pluto writing to a log file at
|
||||
- # an unusual location.
|
||||
+ # Normally, pluto logs via syslog.
|
||||
#logfile=/var/log/pluto.log
|
||||
#
|
||||
# Do not enable debug options to debug configuration issues!
|
||||
#
|
||||
- # plutodebug "all", "none" or a combation from below:
|
||||
- # "raw crypt parsing emitting control controlmore kernel pfkey
|
||||
- # natt x509 dpd dns oppo oppoinfo private".
|
||||
- # Note: "private" is not included with "all", as it can show confidential
|
||||
- # information. It must be specifically specified
|
||||
- # examples:
|
||||
# plutodebug="control parsing"
|
||||
# plutodebug="all crypt"
|
||||
- # Again: only enable plutodebug when asked by a developer
|
||||
- #plutodebug=none
|
||||
+ plutodebug=none
|
||||
#
|
||||
# NAT-TRAVERSAL support
|
||||
# exclude networks used on server side by adding %v4:!a.b.c.0/24
|
||||
@@ -30,10 +21,8 @@ config setup
|
||||
# This range has never been announced via BGP (at least up to 2015)
|
||||
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:100.64.0.0/10,%v6:fd00::/8,%v6:fe80::/10
|
||||
|
||||
-# For example connections, see your distribution's documentation directory,
|
||||
-# or https://libreswan.org/wiki/
|
||||
-#
|
||||
-# There is also a lot of information in the manual page, "man ipsec.conf"
|
||||
-#
|
||||
+# if it exists, include system wide crypto-policy defaults
|
||||
+include /etc/crypto-policies/back-ends/libreswan.config
|
||||
+
|
||||
# It is best to add your IPsec connections as separate files in @IPSEC_CONFDDIR@/
|
||||
include @IPSEC_CONFDDIR@/*.conf
|
507
libreswan-3.23-fixups.patch
Normal file
507
libreswan-3.23-fixups.patch
Normal file
@ -0,0 +1,507 @@
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/connections.c libreswan-3.23/programs/pluto/connections.c
|
||||
--- libreswan-3.23-orig/programs/pluto/connections.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/connections.c 2018-02-05 14:38:49.372280712 -0500
|
||||
@@ -3158,10 +3158,8 @@
|
||||
matching_peer_id && matching_peer_ca && matching_requested_ca,
|
||||
matching_peer_id, matching_peer_ca, matching_requested_ca);});
|
||||
|
||||
- /* Ignore template from which we instantiated - this should never happen */
|
||||
if (c->kind == CK_INSTANCE && d->kind == CK_TEMPLATE && streq(c->name, d->name)) {
|
||||
- libreswan_log("Warning: not switching back to template of current instance (FIXME)");
|
||||
- continue;
|
||||
+ DBG(DBG_CONTROLMORE, DBG_log("template conn fits better than instance of it - different client on same IP/port requires new instance"));
|
||||
}
|
||||
|
||||
/* 'You Tarzan, me Jane' check based on received IDr */
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/hostpair.c libreswan-3.23/programs/pluto/hostpair.c
|
||||
--- libreswan-3.23-orig/programs/pluto/hostpair.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/hostpair.c 2018-02-05 14:38:57.865635032 -0500
|
||||
@@ -144,17 +144,6 @@
|
||||
hisport = pluto_port;
|
||||
|
||||
for (prev = NULL, p = host_pairs; p != NULL; prev = p, p = p->next) {
|
||||
- if (p->connections != NULL && (p->connections->kind == CK_INSTANCE) &&
|
||||
- (p->connections->spd.that.id.kind == ID_NULL))
|
||||
- {
|
||||
- DBG(DBG_CONTROLMORE, {
|
||||
- char ci[CONN_INST_BUF];
|
||||
- DBG_log("find_host_pair: ignore CK_INSTANCE with ID_NULL hp:\"%s\"%s",
|
||||
- p->connections->name,
|
||||
- fmt_conn_instance(p->connections, ci));
|
||||
- });
|
||||
- continue;
|
||||
- }
|
||||
|
||||
DBG(DBG_CONTROLMORE, {
|
||||
ipstr_buf b1;
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/ikev2.h libreswan-3.23/programs/pluto/ikev2.h
|
||||
--- libreswan-3.23-orig/programs/pluto/ikev2.h 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/ikev2.h 2018-02-05 14:39:11.171190105 -0500
|
||||
@@ -162,7 +162,9 @@
|
||||
extern bool ikev2_calculate_rsa_sha1(struct state *st,
|
||||
enum original_role role,
|
||||
unsigned char *idhash,
|
||||
- pb_stream *a_pbs);
|
||||
+ pb_stream *a_pbs,
|
||||
+ bool calc_no_ppk_auth,
|
||||
+ chunk_t *no_ppk_auth);
|
||||
|
||||
extern bool ikev2_create_psk_auth(enum keyword_authby authby,
|
||||
struct state *st,
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/ikev2_parent.c libreswan-3.23/programs/pluto/ikev2_parent.c
|
||||
--- libreswan-3.23-orig/programs/pluto/ikev2_parent.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/ikev2_parent.c 2018-02-05 14:39:11.173190188 -0500
|
||||
@@ -2783,7 +2783,9 @@
|
||||
|
||||
switch (a.isaa_type) {
|
||||
case IKEv2_AUTH_RSA:
|
||||
- if (!ikev2_calculate_rsa_sha1(pst, role, idhash_out, &a_pbs)) {
|
||||
+ if (!ikev2_calculate_rsa_sha1(pst, role, idhash_out, &a_pbs,
|
||||
+ FALSE, /* store-only not set */
|
||||
+ NULL /* store-only chunk unused */)) {
|
||||
loglog(RC_LOG_SERIOUS, "Failed to find our RSA key");
|
||||
return STF_FATAL;
|
||||
}
|
||||
@@ -2792,7 +2794,7 @@
|
||||
case IKEv2_AUTH_PSK:
|
||||
case IKEv2_AUTH_NULL:
|
||||
if (!ikev2_create_psk_auth(authby, pst, idhash_out, &a_pbs,
|
||||
- FALSE /* store-only not set */,
|
||||
+ FALSE, /* store-only not set */
|
||||
NULL /* store-only chunk unused */)) {
|
||||
loglog(RC_LOG_SERIOUS, "Failed to find our PreShared Key");
|
||||
return STF_FATAL;
|
||||
@@ -2812,7 +2814,9 @@
|
||||
return STF_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
- if (!ikev2_calculate_rsa_sha1(pst, role, idhash_out, &a_pbs)) {
|
||||
+ if (!ikev2_calculate_rsa_sha1(pst, role, idhash_out, &a_pbs,
|
||||
+ FALSE, /* store-only not set */
|
||||
+ NULL /* store-only chunk unused */)) {
|
||||
loglog(RC_LOG_SERIOUS, "DigSig: failed to find our RSA key");
|
||||
return STF_FATAL;
|
||||
}
|
||||
@@ -3224,7 +3228,7 @@
|
||||
hmac_update(&id_ctx, id_start, id_len);
|
||||
hmac_final(idhash, &id_ctx);
|
||||
|
||||
- if (pst->st_sk_pi_no_ppk != NULL) {
|
||||
+ if (pst->st_seen_ppk && !LIN(POLICY_PPK_INSIST, pc->policy)) {
|
||||
struct hmac_ctx id_ctx_npa;
|
||||
|
||||
hmac_init(&id_ctx_npa, pst->st_oakley.ta_prf, pst->st_sk_pi_no_ppk);
|
||||
@@ -3371,7 +3375,7 @@
|
||||
notifies++;
|
||||
|
||||
if (pst->st_seen_ppk)
|
||||
- notifies++; /* used for two payloads */
|
||||
+ notifies++; /* used for one or two payloads */
|
||||
|
||||
/* code does not support AH + ESP, not recommend rfc8221 section-4 */
|
||||
struct ipsec_proto_info *proto_info
|
||||
@@ -3437,21 +3441,24 @@
|
||||
}
|
||||
if (pst->st_seen_ppk) {
|
||||
chunk_t notify_data = create_unified_ppk_id(&ppk_id_p);
|
||||
+ int np = LIN(POLICY_PPK_INSIST, cc->policy) ? ISAKMP_NEXT_v2NONE : ISAKMP_NEXT_v2N;
|
||||
|
||||
- notifies--; /* used for 2 payloads */
|
||||
- if (!ship_v2N(ISAKMP_NEXT_v2N, ISAKMP_PAYLOAD_NONCRITICAL,
|
||||
- PROTO_v2_RESERVED, &empty_chunk,
|
||||
- v2N_PPK_IDENTITY, ¬ify_data,
|
||||
- &e_pbs_cipher))
|
||||
- return STF_INTERNAL_ERROR;
|
||||
+ notifies--; /* used for one or two payloads */
|
||||
+ if (!ship_v2N(np, ISAKMP_PAYLOAD_NONCRITICAL,
|
||||
+ PROTO_v2_RESERVED, &empty_chunk,
|
||||
+ v2N_PPK_IDENTITY, ¬ify_data,
|
||||
+ &e_pbs_cipher))
|
||||
+ return STF_INTERNAL_ERROR;
|
||||
freeanychunk(notify_data);
|
||||
|
||||
- ikev2_calc_no_ppk_auth(cc, pst, idhash_npa, &pst->st_no_ppk_auth);
|
||||
- if (!ship_v2N(ISAKMP_NEXT_v2NONE, ISAKMP_PAYLOAD_NONCRITICAL,
|
||||
- PROTO_v2_RESERVED, &empty_chunk,
|
||||
- v2N_NO_PPK_AUTH, &pst->st_no_ppk_auth,
|
||||
- &e_pbs_cipher))
|
||||
- return STF_INTERNAL_ERROR;
|
||||
+ if (!LIN(POLICY_PPK_INSIST, cc->policy)) {
|
||||
+ ikev2_calc_no_ppk_auth(cc, pst, idhash_npa, &pst->st_no_ppk_auth);
|
||||
+ if (!ship_v2N(ISAKMP_NEXT_v2NONE, ISAKMP_PAYLOAD_NONCRITICAL,
|
||||
+ PROTO_v2_RESERVED, &empty_chunk,
|
||||
+ v2N_NO_PPK_AUTH, &pst->st_no_ppk_auth,
|
||||
+ &e_pbs_cipher))
|
||||
+ return STF_INTERNAL_ERROR;
|
||||
+ }
|
||||
}
|
||||
|
||||
passert(notifies == 0);
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/ikev2_ppk.c libreswan-3.23/programs/pluto/ikev2_ppk.c
|
||||
--- libreswan-3.23-orig/programs/pluto/ikev2_ppk.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/ikev2_ppk.c 2018-02-05 14:39:11.173190188 -0500
|
||||
@@ -113,7 +113,24 @@
|
||||
enum keyword_authby authby = c->spd.this.authby;
|
||||
switch (authby) {
|
||||
case AUTH_RSASIG:
|
||||
- /* TODO */
|
||||
+ if (ikev2_calculate_rsa_sha1(st, st->st_original_role, id_hash, NULL, TRUE, no_ppk_auth)) {
|
||||
+ if (st->st_hash_negotiated & NEGOTIATE_AUTH_HASH_SHA1) {
|
||||
+ /* make blobs separately, and somehow combine them and no_ppk_auth
|
||||
+ * to get an actual no_ppk_auth */
|
||||
+ int len = ASN1_LEN_ALGO_IDENTIFIER + ASN1_SHA1_RSA_OID_SIZE + no_ppk_auth->len;
|
||||
+ u_char *blobs = alloc_bytes(len, "bytes for blobs for AUTH_DIGSIG NO_PPK_AUTH");
|
||||
+ u_char *ret = blobs;
|
||||
+ memcpy(blobs, len_sha1_rsa_oid_blob, ASN1_LEN_ALGO_IDENTIFIER);
|
||||
+ blobs += ASN1_LEN_ALGO_IDENTIFIER;
|
||||
+ memcpy(blobs, sha1_rsa_oid_blob, ASN1_SHA1_RSA_OID_SIZE);
|
||||
+ blobs += ASN1_SHA1_RSA_OID_SIZE;
|
||||
+ memcpy(blobs, no_ppk_auth->ptr, no_ppk_auth->len);
|
||||
+ chunk_t release = *no_ppk_auth;
|
||||
+ setchunk(*no_ppk_auth, ret, len);
|
||||
+ freeanychunk(release);
|
||||
+ }
|
||||
+ }
|
||||
+ return STF_OK;
|
||||
break;
|
||||
case AUTH_PSK:
|
||||
if (ikev2_create_psk_auth(AUTH_PSK, st, id_hash, NULL, TRUE, no_ppk_auth))
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/ikev2_rsa.c libreswan-3.23/programs/pluto/ikev2_rsa.c
|
||||
--- libreswan-3.23-orig/programs/pluto/ikev2_rsa.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/ikev2_rsa.c 2018-02-05 14:39:11.173190188 -0500
|
||||
@@ -101,7 +101,9 @@
|
||||
bool ikev2_calculate_rsa_sha1(struct state *st,
|
||||
enum original_role role,
|
||||
unsigned char *idhash,
|
||||
- pb_stream *a_pbs)
|
||||
+ pb_stream *a_pbs,
|
||||
+ bool calc_no_ppk_auth,
|
||||
+ chunk_t *no_ppk_auth)
|
||||
{
|
||||
unsigned char signed_octets[SHA1_DIGEST_SIZE + 16];
|
||||
size_t signed_len;
|
||||
@@ -136,8 +138,13 @@
|
||||
if (shr == 0)
|
||||
return FALSE;
|
||||
passert(shr == (int)sz);
|
||||
- if (!out_raw(sig_val, sz, a_pbs, "rsa signature"))
|
||||
- return FALSE;
|
||||
+ if (calc_no_ppk_auth == FALSE) {
|
||||
+ if (!out_raw(sig_val, sz, a_pbs, "rsa signature"))
|
||||
+ return FALSE;
|
||||
+ } else {
|
||||
+ clonetochunk(*no_ppk_auth, sig_val, sz, "NO_PPK_AUTH chunk");
|
||||
+ DBG(DBG_PRIVATE, DBG_dump_chunk("NO_PPK_AUTH payload", *no_ppk_auth));
|
||||
+ }
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/nss_cert_verify.c libreswan-3.23/programs/pluto/nss_cert_verify.c
|
||||
--- libreswan-3.23-orig/programs/pluto/nss_cert_verify.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/nss_cert_verify.c 2018-02-05 14:38:52.685418927 -0500
|
||||
@@ -498,60 +498,83 @@
|
||||
|
||||
bool cert_VerifySubjectAltName(const CERTCertificate *cert, const char *name)
|
||||
{
|
||||
- SECStatus rv;
|
||||
SECItem subAltName;
|
||||
- PLArenaPool *arena = NULL;
|
||||
- CERTGeneralName *nameList = NULL;
|
||||
- CERTGeneralName *current = NULL;
|
||||
- bool san_ip = FALSE;
|
||||
- unsigned int len = strlen(name);
|
||||
- ip_address myip;
|
||||
-
|
||||
- rv = CERT_FindCertExtension(cert, SEC_OID_X509_SUBJECT_ALT_NAME,
|
||||
+ SECStatus rv = CERT_FindCertExtension(cert, SEC_OID_X509_SUBJECT_ALT_NAME,
|
||||
&subAltName);
|
||||
if (rv != SECSuccess) {
|
||||
DBG(DBG_X509, DBG_log("certificate contains no subjectAltName extension"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- if (tnatoaddr(name, 0, AF_UNSPEC, &myip) == NULL)
|
||||
- san_ip = TRUE;
|
||||
+ ip_address myip;
|
||||
+ bool san_ip = (tnatoaddr(name, 0, AF_UNSPEC, &myip) == NULL);
|
||||
|
||||
- arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
|
||||
+ PLArenaPool *arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
|
||||
passert(arena != NULL);
|
||||
|
||||
- nameList = current = CERT_DecodeAltNameExtension(arena, &subAltName);
|
||||
- passert(current != NULL);
|
||||
+ CERTGeneralName *nameList = CERT_DecodeAltNameExtension(arena, &subAltName);
|
||||
|
||||
- do
|
||||
- {
|
||||
+ if (nameList == NULL) {
|
||||
+ loglog(RC_LOG_SERIOUS, "certificate subjectAltName extension failed to decode");
|
||||
+ PORT_FreeArena(arena, PR_FALSE);
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * nameList is a pointer into a non-empty circular linked list.
|
||||
+ * This loop visits each entry.
|
||||
+ * We have visited each when we come back to the start.
|
||||
+ * We test only at the end, after we advance, because we want to visit
|
||||
+ * the first entry the first time we see it but stop when we get to it
|
||||
+ * the second time.
|
||||
+ */
|
||||
+ CERTGeneralName *current = nameList;
|
||||
+ do {
|
||||
switch (current->type) {
|
||||
case certDNSName:
|
||||
case certRFC822Name:
|
||||
- if (san_ip)
|
||||
- break;
|
||||
- if (current->name.other.len == len) {
|
||||
- if (memcmp(current->name.other.data, name, len) == 0) {
|
||||
- DBG(DBG_X509, DBG_log("subjectAltname %s found in certificate", name));
|
||||
- PORT_FreeArena(arena, PR_FALSE);
|
||||
- return TRUE;
|
||||
- }
|
||||
- }
|
||||
+ {
|
||||
+ /*
|
||||
+ * Match the parameter name with the name in the certificate.
|
||||
+ * The name in the cert may start with "*."; that will match
|
||||
+ * any initial component in name (up to the first '.').
|
||||
+ */
|
||||
+ /* we need to cast because name.other.data is unsigned char * */
|
||||
+ const char *c_ptr = (const void *) current->name.other.data;
|
||||
+ size_t c_len = current->name.other.len;
|
||||
+
|
||||
+ const char *n_ptr = name;
|
||||
+ static const char wild[] = "*.";
|
||||
+ const size_t wild_len = sizeof(wild) - 1;
|
||||
+
|
||||
+ if (c_len > wild_len && startswith(c_ptr, wild)) {
|
||||
+ /* wildcard in cert: ignore first component of name */
|
||||
+ c_ptr += wild_len;
|
||||
+ c_len -= wild_len;
|
||||
+ n_ptr = strchr(n_ptr, '.');
|
||||
+ if (n_ptr == NULL)
|
||||
+ break; /* cannot match */
|
||||
|
||||
- if (current->name.other.len != 0 && current->name.other.len < IDTOA_BUF) {
|
||||
- char osan[IDTOA_BUF];
|
||||
+ n_ptr++; /* skip . */
|
||||
+ }
|
||||
|
||||
- memcpy(osan,current->name.other.data, current->name.other.len);
|
||||
- osan[current->name.other.len] = '\0';
|
||||
- DBG(DBG_X509, DBG_log("subjectAltname (len=%d) %s not match %s", current->name.other.len, osan, name));
|
||||
- } else {
|
||||
- DBG(DBG_X509, DBG_log("subjectAltname <TOO BIG TO PRINT> does not match %s", name));
|
||||
+ if (c_len == strlen(n_ptr) && strncaseeq(n_ptr, c_ptr, c_len)) {
|
||||
+ /*
|
||||
+ * ??? if current->name.other.data contains bad characters,
|
||||
+ * what prevents them being logged?
|
||||
+ */
|
||||
+ DBG(DBG_X509, DBG_log("subjectAltname %s matched %*s in certificate",
|
||||
+ name, current->name.other.len, current->name.other.data));
|
||||
+ PORT_FreeArena(arena, PR_FALSE);
|
||||
+ return TRUE;
|
||||
}
|
||||
break;
|
||||
+ }
|
||||
|
||||
case certIPAddress:
|
||||
if (!san_ip)
|
||||
break;
|
||||
+
|
||||
if ((current->name.other.len == 4) && (addrtypeof(&myip) == AF_INET)) {
|
||||
if (memcmp(current->name.other.data, &myip.u.v4.sin_addr.s_addr, 4) == 0) {
|
||||
DBG(DBG_X509, DBG_log("subjectAltname IPv4 matches %s", name));
|
||||
@@ -572,7 +595,7 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
- DBG(DBG_X509, DBG_log("subjectAltnamea IP address family mismatch for %s", name));
|
||||
+ DBG(DBG_X509, DBG_log("subjectAltname IP address family mismatch for %s", name));
|
||||
break;
|
||||
|
||||
default:
|
||||
diff -Naur libreswan-3.23-orig/programs/_unbound-hook/_unbound-hook.in libreswan-3.23/programs/_unbound-hook/_unbound-hook.in
|
||||
--- libreswan-3.23-orig/programs/_unbound-hook/_unbound-hook.in 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/_unbound-hook/_unbound-hook.in 2018-02-05 14:38:49.373280754 -0500
|
||||
@@ -1,31 +1,52 @@
|
||||
#!/usr/bin/python
|
||||
+#
|
||||
+# Copyright (C) 2018 Paul Wouters <pwouters@redhat.com>
|
||||
+#
|
||||
+# This program is free software; you can redistribute it and/or modify it
|
||||
+# under the terms of the GNU General Public License as published by the
|
||||
+# Free Software Foundation; either version 2 of the License, or (at your
|
||||
+# option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful, but
|
||||
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
+# for more details.
|
||||
|
||||
import sys
|
||||
-import base64
|
||||
-import commands
|
||||
+import subprocess
|
||||
|
||||
-log = ""
|
||||
-
|
||||
-status, myip = commands.getstatusoutput("ip -o route get 1.0.0.1")
|
||||
+# Get my %defaultroute IP address
|
||||
+myip = subprocess.check_output("ip -o route get 8.8.8.8", shell=True)
|
||||
myip = myip.split("src")[1].strip().split()[0]
|
||||
|
||||
argv = sys.argv
|
||||
-argc = len(sys.argv)
|
||||
+ourself = argv.pop(0)
|
||||
|
||||
-#log += "Number or arguments is %d\n"%argc
|
||||
-#if argc >= 4:
|
||||
-# log += "QNAME:%s\n"%argv[1]
|
||||
-# log += "TTL:%s\n"%argv[2]
|
||||
-# log += "IP:%s\n"%argv[3]
|
||||
-# log += "IPSECKEY:%s\n"%argv[4]
|
||||
-# rr = argv[4]
|
||||
-# pref, gwtype, algo, gw, pubkey = rr.split(" ")
|
||||
-#log += "-----------------------------\n"
|
||||
-
|
||||
-cmdname = "@IPSEC_EXECDIR@/whack --keyid @%s --addkey --pubkeyrsa 0s%s"%(argv[1], pubkey)
|
||||
-cmdip = "@IPSEC_EXECDIR@/whack --keyid %s --addkey --pubkeyrsa 0s%s"%(argv[3], pubkey)
|
||||
-cmdoe = "@IPSEC_EXECDIR@/whack --oppohere %s --oppothere %s"%(myip, argv[3])
|
||||
-ret, output = commands.getstatusoutput(cmdname)
|
||||
-ret, output = commands.getstatusoutput(cmdip)
|
||||
-ret, output = commands.getstatusoutput(cmdoe)
|
||||
-ret, output = commands.getstatusoutput("@IPSEC_EXECDIR@ whack --trafficstatus")
|
||||
+try:
|
||||
+ qname = argv.pop(0)
|
||||
+ ttl = argv.pop(0)
|
||||
+ ip = argv.pop(0)
|
||||
+except:
|
||||
+ sys.exit("Bad arguments to ipsec _unbound")
|
||||
+
|
||||
+while (argv != []):
|
||||
+ try:
|
||||
+ gwprec = argv.pop(0)
|
||||
+ gwtype = argv.pop(0)
|
||||
+ gwalg = argv.pop(0)
|
||||
+ gwid = argv.pop(0)
|
||||
+ pubkey = argv.pop(0)
|
||||
+ addkeyip = "ipsec whack --keyid @%s --addkey --pubkeyrsa 0s%s"%(ip, pubkey)
|
||||
+ addkeyhostname = "ipsec whack --keyid @%s --addkey --pubkeyrsa 0s%s"%(qname, pubkey)
|
||||
+ print("processing an IPSECKEY record for Opportunistic IPsec to %s(%s)"%(qname,ip))
|
||||
+ print(subprocess.call(addkeyip, shell=True))
|
||||
+ print(subprocess.call(addkeyhostname, shell=True))
|
||||
+ except:
|
||||
+ sys.exit("failed to process an IPSECKEY record for Opportunistic IPsec to %s(%s)"%(qname,ip))
|
||||
+
|
||||
+# done injecting all IPSECKEY records into pluto - try actual OE now
|
||||
+cmdoeip = "ipsec whack --oppohere %s --oppothere %s"%(myip, ip)
|
||||
+print(subprocess.check_output(cmdoeip, shell=True))
|
||||
+#cmdoeqname = "ipsec whack --oppohere %s --oppothere %s"%(myip, qname)
|
||||
+#ret, output = commands.getstatusoutput(cmdoeqname)
|
||||
+print(subprocess.check_output("ipsec whack --trafficstatus", shell=True))
|
||||
diff --git a/include/ietf_constants.h b/include/ietf_constants.h
|
||||
index 8a1ba5d..38fa4de 100644
|
||||
--- a/include/ietf_constants.h
|
||||
+++ b/include/ietf_constants.h
|
||||
@@ -1215,7 +1215,7 @@ enum ikev2_cp_attribute_type {
|
||||
IKEv2_EXTERNAL_SOURCE_IP4_NAT_INFO = 23,
|
||||
IKEv2_TIMEOUT_PERIOD_FOR_LIVENESS_CHECK = 24,
|
||||
IKEv2_INTERNAL_DNS_DOMAIN = 25,
|
||||
- /* IKEv2_INTERNAL_DNSSEC_TA = 26 expected */
|
||||
+ IKEv2_INTERNAL_DNSSEC_TA = 26
|
||||
};
|
||||
|
||||
|
||||
diff --git a/lib/libswan/constants.c b/lib/libswan/constants.c
|
||||
index 9ea9872..ab6db3e 100644
|
||||
--- a/lib/libswan/constants.c
|
||||
+++ b/lib/libswan/constants.c
|
||||
@@ -1365,13 +1365,12 @@ static const char *const ikev2_cp_attribute_type_name[] = {
|
||||
"IKEv2_EXTERNAL_SOURCE_IP4_NAT_INFO", /* 3gpp */
|
||||
"IKEv2_TIMEOUT_PERIOD_FOR_LIVENESS_CHECK", /* 3gpp */
|
||||
"IKEv2_INTERNAL_DNS_DOMAIN", /* draft-ietf-ipsecme-split-dns */
|
||||
- /* "IKEv2_INTERNAL_DNSSEC_TA", draft-ietf-ipsecme-split-dns, no Code Point yet */
|
||||
+ "IKEv2_INTERNAL_DNSSEC_TA", /* draft-ietf-ipsecme-split-dns */
|
||||
};
|
||||
|
||||
enum_names ikev2_cp_attribute_type_names = {
|
||||
IKEv2_CP_ATTR_RESERVED,
|
||||
- IKEv2_INTERNAL_DNS_DOMAIN,
|
||||
- /* IKEv2_INTERNAL_DNSSEC_TA, */
|
||||
+ IKEv2_INTERNAL_DNSSEC_TA,
|
||||
ARRAY_REF(ikev2_cp_attribute_type_name),
|
||||
NULL, /* prefix */
|
||||
NULL
|
||||
diff --git a/programs/addconn/addconn.c b/programs/addconn/addconn.c
|
||||
index ae56972..e818e0e 100644
|
||||
--- a/programs/addconn/addconn.c
|
||||
+++ b/programs/addconn/addconn.c
|
||||
@@ -416,12 +416,11 @@ int main(int argc, char *argv[])
|
||||
if (verbose)
|
||||
printf(" Pass #1: Loading auto=add, auto=route and auto=start connections\n");
|
||||
|
||||
- for (conn = cfg->conns.tqh_first;
|
||||
- conn != NULL;
|
||||
- conn = conn->link.tqe_next) {
|
||||
+ for (conn = cfg->conns.tqh_first; conn != NULL; conn = conn->link.tqe_next) {
|
||||
if (conn->desired_state == STARTUP_ADD ||
|
||||
conn->desired_state == STARTUP_ONDEMAND ||
|
||||
- conn->desired_state == STARTUP_START) {
|
||||
+ conn->desired_state == STARTUP_START)
|
||||
+ {
|
||||
if (verbose)
|
||||
printf(" %s", conn->name);
|
||||
resolve_defaultroute(conn);
|
||||
@@ -436,30 +435,22 @@ int main(int argc, char *argv[])
|
||||
starter_whack_listen(cfg);
|
||||
|
||||
if (verbose)
|
||||
- printf(" Pass #2: Routing auto=route and auto=start connections\n");
|
||||
+ printf(" Pass #2: Routing auto=route connections\n");
|
||||
|
||||
- for (conn = cfg->conns.tqh_first;
|
||||
- conn != NULL;
|
||||
- conn = conn->link.tqe_next) {
|
||||
- if (conn->desired_state == STARTUP_ADD ||
|
||||
- conn->desired_state == STARTUP_ONDEMAND ||
|
||||
- conn->desired_state == STARTUP_START) {
|
||||
+ for (conn = cfg->conns.tqh_first; conn != NULL; conn = conn->link.tqe_next) {
|
||||
+ if (conn->desired_state == STARTUP_ONDEMAND)
|
||||
+ {
|
||||
if (verbose)
|
||||
printf(" %s", conn->name);
|
||||
- resolve_defaultroute(conn);
|
||||
- if (conn->desired_state == STARTUP_ONDEMAND ||
|
||||
- conn->desired_state == STARTUP_START) {
|
||||
+ if (conn->desired_state == STARTUP_ONDEMAND)
|
||||
starter_whack_route_conn(cfg, conn);
|
||||
- }
|
||||
}
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
printf(" Pass #3: Initiating auto=start connections\n");
|
||||
|
||||
- for (conn = cfg->conns.tqh_first;
|
||||
- conn != NULL;
|
||||
- conn = conn->link.tqe_next) {
|
||||
+ for (conn = cfg->conns.tqh_first; conn != NULL; conn = conn->link.tqe_next) {
|
||||
if (conn->desired_state == STARTUP_START) {
|
||||
if (verbose)
|
||||
printf(" %s", conn->name);
|
||||
diff --git a/programs/_updown.netkey/_updown.netkey.in b/programs/_updown.netkey/_updown.netkey.in
|
||||
index 64b2808..b343445 100644
|
||||
--- a/programs/_updown.netkey/_updown.netkey.in
|
||||
+++ b/programs/_updown.netkey/_updown.netkey.in
|
||||
@@ -745,6 +745,7 @@ case "${PLUTO_VERB}" in
|
||||
up-client)
|
||||
# connection to my client subnet coming up
|
||||
# If you are doing a custom version, firewall commands go here.
|
||||
+ addvtiiface
|
||||
updateresolvconf
|
||||
addcat
|
||||
addsource
|
82
libreswan-3.23-gcc8.patch
Normal file
82
libreswan-3.23-gcc8.patch
Normal file
@ -0,0 +1,82 @@
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/kernel_netlink.c libreswan-3.23/programs/pluto/kernel_netlink.c
|
||||
--- libreswan-3.23-orig/programs/pluto/kernel_netlink.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/kernel_netlink.c 2018-02-19 18:56:24.433527475 -0500
|
||||
@@ -51,8 +51,9 @@
|
||||
#include <linux/if_addr.h>
|
||||
#include <linux/if_link.h>
|
||||
|
||||
-#include "libreswan.h" /* before xfrm.h otherwise break on F22 */
|
||||
+//#include <netinet/in.h>
|
||||
#include "linux/xfrm.h" /* local (if configured) or system copy */
|
||||
+#include "libreswan.h" /* before xfrm.h otherwise break on F22 */
|
||||
|
||||
#include "libreswan/pfkeyv2.h"
|
||||
#include "libreswan/pfkey.h"
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/linux_audit.c libreswan-3.23/programs/pluto/linux_audit.c
|
||||
--- libreswan-3.23-orig/programs/pluto/linux_audit.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/linux_audit.c 2018-02-19 18:58:51.356837932 -0500
|
||||
@@ -74,6 +74,15 @@
|
||||
|
||||
#include "pluto_stats.h"
|
||||
|
||||
+#if __GNUC__ >= 7
|
||||
+ /*
|
||||
+ * GCC 7+ warns about the following calls that truncate a string using
|
||||
+ * snprintf(). We are truncating the log message for a reason.
|
||||
+ */
|
||||
+#pragma GCC diagnostic push
|
||||
+#pragma GCC diagnostic ignored "-Wformat-truncation"
|
||||
+#endif
|
||||
+
|
||||
static bool log_to_audit = FALSE; /* audit log messages for kernel */
|
||||
|
||||
void linux_audit_init(void)
|
||||
@@ -159,13 +168,13 @@
|
||||
char raddr[ADDRTOT_BUF];
|
||||
char laddr[ADDRTOT_BUF];
|
||||
char audit_str[AUDIT_LOG_SIZE];
|
||||
- char cipher_str[AUDIT_LOG_SIZE];
|
||||
- char spi_str[AUDIT_LOG_SIZE];
|
||||
+ char cipher_str[20];
|
||||
+ char spi_str[20];
|
||||
struct connection *const c = st->st_connection;
|
||||
bool initiator = FALSE;
|
||||
char head[IDTOA_BUF];
|
||||
- char integname[IDTOA_BUF];
|
||||
- char prfname[IDTOA_BUF];
|
||||
+ char integname[20];
|
||||
+ char prfname[20];
|
||||
struct esb_buf esb, esb2;
|
||||
/* we need to free() this */
|
||||
char *conn_encode = audit_encode_nv_string("conn-name",c->name,0);
|
||||
@@ -300,3 +309,6 @@
|
||||
AUDIT_CRYPTO_IPSEC_SA : AUDIT_CRYPTO_IKE_SA,
|
||||
audit_str, raddr, AUDIT_RESULT_OK);
|
||||
}
|
||||
+#if __GNUC__ >= 7
|
||||
+#pragma GCC diagnostic pop
|
||||
+#endif
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/log.h libreswan-3.23/programs/pluto/log.h
|
||||
--- libreswan-3.23-orig/programs/pluto/log.h 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/log.h 2018-02-19 18:56:24.433527475 -0500
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
#ifdef USE_LINUX_AUDIT
|
||||
#include <libaudit.h> /* from audit-libs devel */
|
||||
-#define AUDIT_LOG_SIZE 256
|
||||
+#define AUDIT_LOG_SIZE 512
|
||||
/* should really be in libaudit.h */
|
||||
#define AUDIT_RESULT_FAIL 0
|
||||
#define AUDIT_RESULT_OK 1
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/pluto_constants.c libreswan-3.23/programs/pluto/pluto_constants.c
|
||||
--- libreswan-3.23-orig/programs/pluto/pluto_constants.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/pluto_constants.c 2018-02-19 18:56:24.434527471 -0500
|
||||
@@ -478,7 +478,7 @@
|
||||
policy &
|
||||
~(POLICY_SHUNT_MASK | POLICY_FAIL_MASK),
|
||||
pbitnamesbuf, sizeof(pbitnamesbuf));
|
||||
- static char buf[200]; /* NOT RE-ENTRANT! I hope that it is big enough! */
|
||||
+ static char buf[512]; /* NOT RE-ENTRANT! I hope that it is big enough! */
|
||||
lset_t shunt = (policy & POLICY_SHUNT_MASK) >> POLICY_SHUNT_SHIFT;
|
||||
lset_t fail = (policy & POLICY_FAIL_MASK) >> POLICY_FAIL_SHIFT;
|
||||
|
116
libreswan-3.23-ppk-update.patch
Normal file
116
libreswan-3.23-ppk-update.patch
Normal file
@ -0,0 +1,116 @@
|
||||
diff --git a/include/ietf_constants.h b/include/ietf_constants.h
|
||||
index 38fa4de..08c8d9e 100644
|
||||
--- a/include/ietf_constants.h
|
||||
+++ b/include/ietf_constants.h
|
||||
@@ -1486,12 +1486,14 @@ typedef enum {
|
||||
v2N_SENDER_REQUEST_ID = 16429, /* draft-yeung-g-ikev2 */
|
||||
v2N_IKEV2_FRAGMENTATION_SUPPORTED = 16430, /* RFC-7383 */
|
||||
v2N_SIGNATURE_HASH_ALGORITHMS = 16431, /* RFC-7427 */
|
||||
-
|
||||
- v2N_USE_PPK = 40960, /* draft-ietf-ipsecme-qr-ikev2-01 */
|
||||
- v2N_PPK_IDENTITY = 40961, /* draft-ietf-ipsecme-qr-ikev2-01 */
|
||||
- v2N_NO_PPK_AUTH = 40962, /* draft-ietf-ipsecme-qr-ikev2-01 */
|
||||
-
|
||||
- /* 16432 - 40969 Unassigned */
|
||||
+ v2N_CLONE_IKE_SA_SUPPORTED = 16432, /* RFC-7791 */
|
||||
+ v2N_CLONE_IKE_SA = 16433, /* RFC-7791 */
|
||||
+ v2N_PUZZLE = 16434, /* RFC-8019 */
|
||||
+ v2N_USE_PPK = 16435, /* draft-ietf-ipsecme-qr-ikev2 */
|
||||
+ v2N_PPK_IDENTITY = 16436, /* draft-ietf-ipsecme-qr-ikev2 */
|
||||
+ v2N_NO_PPK_AUTH = 16437, /* draft-ietf-ipsecme-qr-ikev2 */
|
||||
+
|
||||
+ /* 16438 - 40969 Unassigned */
|
||||
/* 40960 - 65535 Private Use */
|
||||
} v2_notification_t;
|
||||
|
||||
diff --git a/lib/libswan/constants.c b/lib/libswan/constants.c
|
||||
index ab6db3e..a0dab63 100644
|
||||
--- a/lib/libswan/constants.c
|
||||
+++ b/lib/libswan/constants.c
|
||||
@@ -1634,20 +1634,6 @@ static enum_names ikev2_ppk_id_type_names = {
|
||||
};
|
||||
*/
|
||||
|
||||
-static const char *const ikev2_notify_name_private[] = {
|
||||
- "v2N_USE_PPK",
|
||||
- "v2N_PPK_IDENTITY",
|
||||
- "v2N_NO_PPK_AUTH",
|
||||
-};
|
||||
-
|
||||
-static enum_names ikev2_notify_names_private = {
|
||||
- v2N_USE_PPK,
|
||||
- v2N_NO_PPK_AUTH,
|
||||
- ARRAY_REF(ikev2_notify_name_private),
|
||||
- "v2N_", /* prefix */
|
||||
- NULL
|
||||
-};
|
||||
-
|
||||
/* http://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xml#ikev2-parameters-13 */
|
||||
static const char *const ikev2_notify_name_16384[] = {
|
||||
"v2N_INITIAL_CONTACT", /* 16384 */
|
||||
@@ -1698,14 +1684,20 @@ static const char *const ikev2_notify_name_16384[] = {
|
||||
"v2N_SENDER_REQUEST_ID",
|
||||
"v2N_IKEV2_FRAGMENTATION_SUPPORTED", /* 16430 */
|
||||
"v2N_SIGNATURE_HASH_ALGORITHMS",
|
||||
+ "v2N_CLONE_IKE_SA_SUPPORTED",
|
||||
+ "v2N_CLONE_IKE_SA",
|
||||
+ "v2N_PUZZLE",
|
||||
+ "v2N_USE_PPK", /* 16435 */
|
||||
+ "v2N_PPK_IDENTITY",
|
||||
+ "v2N_NO_PPK_AUTH",
|
||||
};
|
||||
|
||||
static enum_names ikev2_notify_names_16384 = {
|
||||
v2N_INITIAL_CONTACT,
|
||||
- v2N_SIGNATURE_HASH_ALGORITHMS,
|
||||
+ v2N_NO_PPK_AUTH,
|
||||
ARRAY_REF(ikev2_notify_name_16384),
|
||||
"v2N_", /* prefix */
|
||||
- &ikev2_notify_names_private
|
||||
+ NULL
|
||||
};
|
||||
|
||||
static const char *const ikev2_notify_name[] = {
|
||||
diff --git a/programs/pluto/ikev2_parent.c b/programs/pluto/ikev2_parent.c
|
||||
index 258ba85..b86eea8 100644
|
||||
--- a/programs/pluto/ikev2_parent.c
|
||||
+++ b/programs/pluto/ikev2_parent.c
|
||||
@@ -3749,18 +3749,14 @@ stf_status ikev2_parent_inI2outR2_id_tail(struct msg_digest *md)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (LIN(POLICY_PPK_ALLOW, policy)) {
|
||||
- no_ppk_auth = alloc_chunk(len, "NO_PPK_AUTH");
|
||||
+ no_ppk_auth = alloc_chunk(len, "NO_PPK_AUTH");
|
||||
|
||||
- if (!in_raw(no_ppk_auth.ptr, len, &pbs, "NO_PPK_AUTH extract")) {
|
||||
- loglog(RC_LOG_SERIOUS, "Failed to extract %zd bytes of NO_PPK_AUTH from Notify payload", len);
|
||||
- return STF_FATAL;
|
||||
- }
|
||||
- DBG(DBG_PRIVATE, DBG_dump_chunk("NO_PPK_AUTH:", no_ppk_auth));
|
||||
- st->st_no_ppk_auth = no_ppk_auth;
|
||||
- } else {
|
||||
- libreswan_log("ignored received NO_PPK_AUTH - connection does not allow PPK");
|
||||
+ if (!in_raw(no_ppk_auth.ptr, len, &pbs, "NO_PPK_AUTH extract")) {
|
||||
+ loglog(RC_LOG_SERIOUS, "Failed to extract %zd bytes of NO_PPK_AUTH from Notify payload", len);
|
||||
+ return STF_FATAL;
|
||||
}
|
||||
+ DBG(DBG_PRIVATE, DBG_dump_chunk("NO_PPK_AUTH:", no_ppk_auth));
|
||||
+ st->st_no_ppk_auth = no_ppk_auth;
|
||||
break;
|
||||
}
|
||||
case v2N_MOBIKE_SUPPORTED:
|
||||
@@ -3774,8 +3770,11 @@ stf_status ikev2_parent_inI2outR2_id_tail(struct msg_digest *md)
|
||||
}
|
||||
}
|
||||
|
||||
- /* if we found proper PPK ID, we should use that without fallback to no ppk */
|
||||
- if (found_ppk)
|
||||
+ /*
|
||||
+ * If we found proper PPK ID and policy allows PPK, use that.
|
||||
+ * Otherwise use NO_PPK_AUTH
|
||||
+ */
|
||||
+ if (found_ppk && LIN(POLICY_PPK_ALLOW, policy))
|
||||
freeanychunk(st->st_no_ppk_auth);
|
||||
|
||||
if (!found_ppk && LIN(POLICY_PPK_INSIST, policy)) {
|
24
libreswan-3.23-seccomp.patch
Normal file
24
libreswan-3.23-seccomp.patch
Normal file
@ -0,0 +1,24 @@
|
||||
diff -Naur libreswan-3.23-orig/programs/addconn/addconn.c libreswan-3.23/programs/addconn/addconn.c
|
||||
--- libreswan-3.23-orig/programs/addconn/addconn.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/addconn/addconn.c 2018-02-05 14:13:25.758711788 -0500
|
||||
@@ -140,7 +140,9 @@
|
||||
rc |= S_RULE_ADD(set_robust_list);
|
||||
rc |= S_RULE_ADD(set_tid_address);
|
||||
rc |= S_RULE_ADD(socket);
|
||||
+ rc |= S_RULE_ADD(socketcall);
|
||||
rc |= S_RULE_ADD(socketpair);
|
||||
+ rc |= S_RULE_ADD(stat);
|
||||
rc |= S_RULE_ADD(statfs);
|
||||
rc |= S_RULE_ADD(uname);
|
||||
rc |= S_RULE_ADD(write);
|
||||
diff -Naur libreswan-3.23-orig/programs/pluto/pluto_seccomp.c libreswan-3.23/programs/pluto/pluto_seccomp.c
|
||||
--- libreswan-3.23-orig/programs/pluto/pluto_seccomp.c 2018-01-25 15:19:46.000000000 -0500
|
||||
+++ libreswan-3.23/programs/pluto/pluto_seccomp.c 2018-02-05 14:13:38.390239502 -0500
|
||||
@@ -109,6 +109,7 @@
|
||||
rc |= S_RULE_ADD(set_robust_list);
|
||||
rc |= S_RULE_ADD(setsockopt);
|
||||
rc |= S_RULE_ADD(socket);
|
||||
+ rc |= S_RULE_ADD(socketcall);
|
||||
rc |= S_RULE_ADD(socketpair);
|
||||
rc |= S_RULE_ADD(sysinfo);
|
||||
rc |= S_RULE_ADD(uname);
|
62
libreswan-3.25-relax-delete.patch
Normal file
62
libreswan-3.25-relax-delete.patch
Normal file
@ -0,0 +1,62 @@
|
||||
diff --git a/programs/pluto/state.c b/programs/pluto/state.c
|
||||
index 7b33145..a3bcc3c 100644
|
||||
--- a/programs/pluto/state.c
|
||||
+++ b/programs/pluto/state.c
|
||||
@@ -3155,27 +3155,40 @@ void ISAKMP_SA_established(const struct state *pst)
|
||||
d = next;
|
||||
}
|
||||
|
||||
- if (c->newest_isakmp_sa != SOS_NOBODY &&
|
||||
- c->newest_isakmp_sa != pst->st_serialno) {
|
||||
- struct state *old_p1 = state_by_serialno(c->newest_isakmp_sa);
|
||||
+ /*
|
||||
+ * This only affects IKEv2, since we don't store any
|
||||
+ * received INITIAL_CONTACT for IKEv1.
|
||||
+ * We don't do this on IKEv1, because it seems to
|
||||
+ * confuse various third parties (Windows, Cisco VPN 300,
|
||||
+ * and juniper
|
||||
+ * likely because this would be called before the IPsec SA
|
||||
+ * of QuickMode is installed, so the remote endpoints view
|
||||
+ * this IKE SA still as the active one?
|
||||
+ */
|
||||
+ if (pst->st_seen_initialc) {
|
||||
|
||||
- DBG(DBG_CONTROL, DBG_log("deleting replaced IKE state for %s",
|
||||
- old_p1->st_connection->name));
|
||||
- old_p1->st_suppress_del_notify = TRUE;
|
||||
- event_force(EVENT_SA_EXPIRE, old_p1);
|
||||
- }
|
||||
+ if (c->newest_isakmp_sa != SOS_NOBODY &&
|
||||
+ c->newest_isakmp_sa != pst->st_serialno) {
|
||||
+ struct state *old_p1 = state_by_serialno(c->newest_isakmp_sa);
|
||||
|
||||
- if (pst->st_seen_initialc && (c->newest_ipsec_sa != SOS_NOBODY))
|
||||
- {
|
||||
- struct state *old_p2 = state_by_serialno(c->newest_ipsec_sa);
|
||||
- struct connection *d = old_p2 == NULL ? NULL : old_p2->st_connection;
|
||||
+ DBG(DBG_CONTROL, DBG_log("deleting replaced IKE state for %s",
|
||||
+ old_p1->st_connection->name));
|
||||
+ old_p1->st_suppress_del_notify = TRUE;
|
||||
+ event_force(EVENT_SA_EXPIRE, old_p1);
|
||||
+ }
|
||||
|
||||
- if (c == d && same_id(&c->spd.that.id, &d->spd.that.id))
|
||||
+ if (c->newest_ipsec_sa != SOS_NOBODY)
|
||||
{
|
||||
- DBG(DBG_CONTROL, DBG_log("Initial Contact received, deleting old state #%lu from connection '%s'",
|
||||
- c->newest_ipsec_sa, c->name));
|
||||
- old_p2->st_suppress_del_notify = TRUE;
|
||||
- event_force(EVENT_SA_EXPIRE, old_p2);
|
||||
+ struct state *old_p2 = state_by_serialno(c->newest_ipsec_sa);
|
||||
+ struct connection *d = old_p2 == NULL ? NULL : old_p2->st_connection;
|
||||
+
|
||||
+ if (c == d && same_id(&c->spd.that.id, &d->spd.that.id))
|
||||
+ {
|
||||
+ DBG(DBG_CONTROL, DBG_log("Initial Contact received, deleting old state #%lu from connection '%s'",
|
||||
+ c->newest_ipsec_sa, c->name));
|
||||
+ old_p2->st_suppress_del_notify = TRUE;
|
||||
+ event_force(EVENT_SA_EXPIRE, old_p2);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
35
libreswan-3.25-unbound-hook.patch
Normal file
35
libreswan-3.25-unbound-hook.patch
Normal file
@ -0,0 +1,35 @@
|
||||
commit 9dce290a0d2df5c278ed9442b10954d65cc238e4
|
||||
Author: Paul Wouters <pwouters@redhat.com>
|
||||
Date: Sun Jul 8 22:29:52 2018 -0400
|
||||
|
||||
_unbound-hook: Fixup adding IPv4 pubkey into pluto. Expect unbound to quote argument as 1
|
||||
|
||||
diff --git a/programs/_unbound-hook/_unbound-hook.in b/programs/_unbound-hook/_unbound-hook.in
|
||||
index 0d266d5..38279de 100755
|
||||
--- a/programs/_unbound-hook/_unbound-hook.in
|
||||
+++ b/programs/_unbound-hook/_unbound-hook.in
|
||||
@@ -29,14 +29,17 @@ try:
|
||||
except:
|
||||
sys.exit("Bad arguments to ipsec _unbound")
|
||||
|
||||
-while (argv != []):
|
||||
+# unbound now quotes the entire RRDATAs, so it counts as 1 argument in the list
|
||||
+data = argv.pop(0).split(" ")
|
||||
+
|
||||
+while (data != []):
|
||||
try:
|
||||
- gwprec = argv.pop(0)
|
||||
- gwtype = argv.pop(0)
|
||||
- gwalg = argv.pop(0)
|
||||
- gwid = argv.pop(0)
|
||||
- pubkey = argv.pop(0)
|
||||
- addkeyip = "ipsec whack --keyid @%s --addkey --pubkeyrsa 0s%s"%(ip, pubkey)
|
||||
+ gwprec = data.pop(0)
|
||||
+ gwtype = data.pop(0)
|
||||
+ gwalg = data.pop(0)
|
||||
+ gwid = data.pop(0)
|
||||
+ pubkey = data.pop(0)
|
||||
+ addkeyip = "ipsec whack --keyid %s --addkey --pubkeyrsa 0s%s"%(ip, pubkey)
|
||||
addkeyhostname = "ipsec whack --keyid @%s --addkey --pubkeyrsa 0s%s"%(qname, pubkey)
|
||||
print("processing an IPSECKEY record for Opportunistic IPsec to %s(%s)"%(qname,ip))
|
||||
print(subprocess.call(addkeyip, shell=True))
|
21
libreswan-3.26-asn1-zu.patch
Normal file
21
libreswan-3.26-asn1-zu.patch
Normal file
@ -0,0 +1,21 @@
|
||||
diff -Naur libreswan-3.26-orig/lib/libswan/asn1.c libreswan-3.26/lib/libswan/asn1.c
|
||||
--- libreswan-3.26-orig/lib/libswan/asn1.c 2018-09-16 22:45:52.000000000 -0400
|
||||
+++ libreswan-3.26/lib/libswan/asn1.c 2018-09-17 00:28:06.726985327 -0400
|
||||
@@ -164,7 +164,7 @@
|
||||
sig_val->len = len_r;
|
||||
/* XXX: need to check len_r and len_s fits in this */
|
||||
sig_val->ptr = alloc_bytes(len_r * 2, "ec points");
|
||||
- DBG(DBG_PARSING, DBG_log(" sig_val len is %ld",sig_val->len));
|
||||
+ DBG(DBG_PARSING, DBG_log(" sig_val len is %zu",sig_val->len));
|
||||
/* copy the values of r into signature */
|
||||
memcpy(sig_val->ptr,blob->ptr,len_r);
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
}
|
||||
DBG(DBG_PARSING, DBG_log(" len_s is %d",len_s));
|
||||
sig_val->len += len_s;
|
||||
- DBG(DBG_PARSING, DBG_log(" sig_val total len is %ld",sig_val->len));
|
||||
+ DBG(DBG_PARSING, DBG_log(" sig_val total len is %zu",sig_val->len));
|
||||
/* copy the values of r into signature */
|
||||
memcpy(sig_val->ptr+len_r,blob->ptr,len_s);
|
||||
}
|
13
libreswan-3.29-updown-syntax.patch
Normal file
13
libreswan-3.29-updown-syntax.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/programs/_updown.netkey/_updown.netkey.in b/programs/_updown.netkey/_updown.netkey.in
|
||||
index 9c76998233..21000b1ea4 100644
|
||||
--- a/programs/_updown.netkey/_updown.netkey.in
|
||||
+++ b/programs/_updown.netkey/_updown.netkey.in
|
||||
@@ -446,7 +446,7 @@ delsource() {
|
||||
return ${st}
|
||||
fi
|
||||
# Remove source ip if it's not used any more.
|
||||
- if [ -z $(ip -o route list src ${PLUTO_MY_SOURCEIP}) ]; then
|
||||
+ if [ -z "$(ip -o route list src ${PLUTO_MY_SOURCEIP})" ]; then
|
||||
if [ -n "${VTI_IFACE}" -a "${VTI_ROUTING}" = yes ]; then
|
||||
interface="${VTI_IFACE}"
|
||||
fi
|
21
libreswan-3.30-s390x.patch
Normal file
21
libreswan-3.30-s390x.patch
Normal file
@ -0,0 +1,21 @@
|
||||
commit 8b067b47b1e2306c83bed49ecada1bddfb1c1a38
|
||||
Author: Paul Wouters <pwouters@redhat.com>
|
||||
Date: Fri Feb 14 15:22:21 2020 -0500
|
||||
|
||||
pluto: fixup: 'incl' may be used uninitialized in init_virtual_ip()
|
||||
|
||||
For some reason, only the s390x compiler complains.
|
||||
|
||||
diff --git a/programs/pluto/virtual.c b/programs/pluto/virtual.c
|
||||
index ce94d5a5ee..74d77a3ab0 100644
|
||||
--- a/programs/pluto/virtual.c
|
||||
+++ b/programs/pluto/virtual.c
|
||||
@@ -172,7 +172,7 @@ void init_virtual_ip(const char *private_list)
|
||||
if (next == NULL)
|
||||
next = str + strlen(str);
|
||||
|
||||
- bool incl;
|
||||
+ bool incl = FALSE;
|
||||
if (read_subnet(str, next - str,
|
||||
&(private_net_incl[i_incl]),
|
||||
&(private_net_excl[i_excl]),
|
16
libreswan-3.32-nss-api.patch
Normal file
16
libreswan-3.32-nss-api.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff -Naur libreswan-3.32-orig/lib/libswan/ike_alg_encrypt_nss_gcm_ops.c libreswan-3.32/lib/libswan/ike_alg_encrypt_nss_gcm_ops.c
|
||||
--- libreswan-3.32-orig/lib/libswan/ike_alg_encrypt_nss_gcm_ops.c 2020-05-11 10:13:41.000000000 -0400
|
||||
+++ libreswan-3.32/lib/libswan/ike_alg_encrypt_nss_gcm_ops.c 2020-05-26 10:23:26.563318038 -0400
|
||||
@@ -16,6 +16,12 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
+/*
|
||||
+ * Special advise from Bob Relyea - needs to go before any nss include
|
||||
+ *
|
||||
+ */
|
||||
+#define NSS_PKCS11_2_0_COMPAT 1
|
||||
+
|
||||
#include "lswlog.h"
|
||||
#include "lswnss.h"
|
||||
#include "prmem.h"
|
13
libreswan-3.32-uninitialized.patch
Normal file
13
libreswan-3.32-uninitialized.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/programs/pluto/ikev2_parent.c b/programs/pluto/ikev2_parent.c
|
||||
index 702c9a8..3772508 100644
|
||||
--- a/programs/pluto/ikev2_parent.c
|
||||
+++ b/programs/pluto/ikev2_parent.c
|
||||
@@ -2150,7 +2150,7 @@ static stf_status ikev2_parent_inR1outI2_tail(struct state *pst, struct msg_dige
|
||||
struct pluto_crypto_req *r)
|
||||
{
|
||||
struct connection *const pc = pst->st_connection; /* parent connection */
|
||||
- struct ppk_id_payload ppk_id_p;
|
||||
+ struct ppk_id_payload ppk_id_p = { };
|
||||
struct ike_sa *ike = pexpect_ike_sa(pst);
|
||||
|
||||
if (!finish_dh_v2(pst, r, FALSE)) {
|
435
libreswan.spec
Normal file
435
libreswan.spec
Normal file
@ -0,0 +1,435 @@
|
||||
%global _hardened_build 1
|
||||
# These are rpm macros and are 0 or 1
|
||||
%global with_efence 0
|
||||
%global with_development 0
|
||||
%global with_cavstests 1
|
||||
# minimum version for support for rhbz#1651314
|
||||
%global nss_version 3.44.0-8
|
||||
%global unbound_version 1.6.6
|
||||
# Libreswan config options. With these settings, libreswan
|
||||
# does not require its own FIPS validation. Only the system
|
||||
# and NSS needs to be FIPS validated.
|
||||
%global libreswan_config \\\
|
||||
SHELL_BINARY=/usr/bin/sh \\\
|
||||
FINALLIBEXECDIR=%{_libexecdir}/ipsec \\\
|
||||
FINALMANDIR=%{_mandir} \\\
|
||||
PREFIX=%{_prefix} \\\
|
||||
INITSYSTEM=systemd \\\
|
||||
NSS_REQ_AVA_COPY=false \\\
|
||||
NSS_HAS_IPSEC_PROFILE=true \\\
|
||||
PYTHON_BINARY=%{__python3} \\\
|
||||
USE_DNSSEC=true \\\
|
||||
USE_FIPSCHECK=false \\\
|
||||
USE_LABELED_IPSEC=true \\\
|
||||
USE_LDAP=true \\\
|
||||
USE_LIBCAP_NG=true \\\
|
||||
USE_LIBCURL=true \\\
|
||||
USE_LINUX_AUDIT=true \\\
|
||||
USE_NM=true \\\
|
||||
USE_SECCOMP=true \\\
|
||||
USE_XAUTHPAM=true \\\
|
||||
USE_NSS_KDF=true \\\
|
||||
%{nil}
|
||||
|
||||
%global prever rc1
|
||||
|
||||
Name: libreswan
|
||||
Summary: IKE implementation for IPsec with IKEv1 and IKEv2 support
|
||||
# version is generated in the release script
|
||||
Version: 4.0
|
||||
Release: %{?prever:0.}2%{?prever:.%{prever}}%{?dist}
|
||||
License: GPLv2
|
||||
Url: https://libreswan.org/
|
||||
Source0: https://download.libreswan.org/%{?prever:with_development/}%{name}-%{version}%{?prever}.tar.gz
|
||||
%if 0%{with_cavstests}
|
||||
Source1: https://download.libreswan.org/cavs/ikev1_dsa.fax.bz2
|
||||
Source2: https://download.libreswan.org/cavs/ikev1_psk.fax.bz2
|
||||
Source3: https://download.libreswan.org/cavs/ikev2.fax.bz2
|
||||
%endif
|
||||
BuildRequires: audit-libs-devel
|
||||
BuildRequires: bison
|
||||
BuildRequires: curl-devel
|
||||
BuildRequires: flex
|
||||
BuildRequires: gcc make
|
||||
BuildRequires: ldns-devel
|
||||
BuildRequires: libcap-ng-devel
|
||||
BuildRequires: libevent-devel
|
||||
BuildRequires: libseccomp-devel
|
||||
BuildRequires: libselinux-devel
|
||||
BuildRequires: nspr-devel
|
||||
BuildRequires: nss-devel >= %{nss_version}
|
||||
BuildRequires: nss-tools
|
||||
BuildRequires: openldap-devel
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: hostname
|
||||
BuildRequires: redhat-rpm-config
|
||||
BuildRequires: systemd-devel
|
||||
BuildRequires: unbound-devel >= %{unbound_version}
|
||||
BuildRequires: xmlto
|
||||
%if 0%{with_efence}
|
||||
BuildRequires: ElectricFence
|
||||
%endif
|
||||
Requires: iproute >= 2.6.8
|
||||
Requires: nss >= %{nss_version}
|
||||
Requires: nss-softokn
|
||||
Requires: nss-tools
|
||||
Requires: unbound-libs >= %{unbound_version}
|
||||
Requires(post): bash
|
||||
Requires(post): coreutils
|
||||
Requires(post): systemd
|
||||
Requires(preun): systemd
|
||||
Requires(postun): systemd
|
||||
|
||||
%description
|
||||
Libreswan is an implementation of IKEv1 and IKEv2 for IPsec. IPsec is
|
||||
the Internet Protocol Security and uses strong cryptography to provide
|
||||
both authentication and encryption services. These services allow you
|
||||
to build secure tunnels through untrusted networks. Everything passing
|
||||
through the untrusted net is encrypted by the ipsec gateway machine and
|
||||
decrypted by the gateway at the other end of the tunnel. The resulting
|
||||
tunnel is a virtual private network or VPN.
|
||||
|
||||
This package contains the daemons and userland tools for setting up
|
||||
Libreswan.
|
||||
|
||||
Libreswan also supports IKEv2 (RFC7296) and Secure Labeling
|
||||
|
||||
Libreswan is based on Openswan-2.6.38 which in turn is based on FreeS/WAN-2.04
|
||||
|
||||
%prep
|
||||
%setup -q -n libreswan-%{version}%{?prever}
|
||||
|
||||
# replace unsupported KLIPS README
|
||||
echo "KLIPS is not supported with RHEL8" > README.KLIPS
|
||||
|
||||
# linking to freebl is not needed
|
||||
sed -i "s/-lfreebl //" mk/config.mk
|
||||
|
||||
# enable crypto-policies support
|
||||
sed -i "s:#[ ]*include \(.*\)\(/crypto-policies/back-ends/libreswan.config\)$:include \1\2:" programs/configs/ipsec.conf.in
|
||||
|
||||
|
||||
%build
|
||||
# link flags disable hardening because it fails on arm with what looks like gcc bugs in -Werror=lto-type-mismatch
|
||||
make %{?_smp_mflags} \
|
||||
%if 0%{with_development}
|
||||
OPTIMIZE_CFLAGS="%{?_hardened_cflags}" \
|
||||
%else
|
||||
OPTIMIZE_CFLAGS="%{optflags}" \
|
||||
%endif
|
||||
%if 0%{with_efence}
|
||||
USE_EFENCE=true \
|
||||
%endif
|
||||
WERROR_CFLAGS="-Werror -Wno-missing-field-initializers -Wno-lto-type-mismatch -Wno-maybe-uninitialized" \
|
||||
USERLINK="-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -flto --no-lto" \
|
||||
%{libreswan_config} \
|
||||
programs
|
||||
FS=$(pwd)
|
||||
|
||||
%install
|
||||
make \
|
||||
DESTDIR=%{buildroot} \
|
||||
%{libreswan_config} \
|
||||
install
|
||||
FS=$(pwd)
|
||||
rm -rf %{buildroot}/usr/share/doc/libreswan
|
||||
rm -rf %{buildroot}%{_libexecdir}/ipsec/*check
|
||||
|
||||
install -d -m 0755 %{buildroot}%{_rundir}/pluto
|
||||
install -d %{buildroot}%{_sbindir}
|
||||
|
||||
install -d %{buildroot}%{_sysconfdir}/sysctl.d
|
||||
install -m 0644 packaging/fedora/libreswan-sysctl.conf \
|
||||
%{buildroot}%{_sysconfdir}/sysctl.d/50-libreswan.conf
|
||||
|
||||
echo "include %{_sysconfdir}/ipsec.d/*.secrets" \
|
||||
> %{buildroot}%{_sysconfdir}/ipsec.secrets
|
||||
rm -fr %{buildroot}%{_sysconfdir}/rc.d/rc*
|
||||
|
||||
%if 0%{with_cavstests}
|
||||
%check
|
||||
# There is an elaborate upstream testing infrastructure which we do not
|
||||
# run here - it takes hours and uses kvm
|
||||
# We only run the CAVS tests.
|
||||
cp %{SOURCE1} %{SOURCE2} %{SOURCE3} .
|
||||
bunzip2 *.fax.bz2
|
||||
|
||||
: starting CAVS test for IKEv2
|
||||
%{buildroot}%{_libexecdir}/ipsec/cavp -v2 ikev2.fax | \
|
||||
diff -u ikev2.fax - > /dev/null
|
||||
: starting CAVS test for IKEv1 RSASIG
|
||||
%{buildroot}%{_libexecdir}/ipsec/cavp -v1dsa ikev1_dsa.fax | \
|
||||
diff -u ikev1_dsa.fax - > /dev/null
|
||||
: starting CAVS test for IKEv1 PSK
|
||||
%{buildroot}%{_libexecdir}/ipsec/cavp -v1psk ikev1_psk.fax | \
|
||||
diff -u ikev1_psk.fax - > /dev/null
|
||||
: CAVS tests passed
|
||||
|
||||
%{buildroot}%{_libexecdir}/ipsec/algparse -tp || { echo prooposal test failed; exit 1; }
|
||||
%{buildroot}%{_libexecdir}/ipsec/algparse -ta || { echo algorithm test failed; exit 1; }
|
||||
|
||||
# self test for pluto daemon - this also shows which algorithms it allows in FIPS mode
|
||||
tmpdir=$(mktemp -d /tmp/libreswan-XXXXX)
|
||||
certutil -N -d sql:$tmpdir --empty-password
|
||||
%{buildroot}%{_libexecdir}/ipsec/pluto --selftest --nssdir $tmpdir --rundir $tmpdir
|
||||
: pluto self-test passed - verify FIPS algorithms allowed is still compliant with NIST
|
||||
|
||||
%endif
|
||||
|
||||
%post
|
||||
%systemd_post ipsec.service
|
||||
|
||||
%preun
|
||||
%systemd_preun ipsec.service
|
||||
|
||||
%postun
|
||||
%systemd_postun_with_restart ipsec.service
|
||||
|
||||
%files
|
||||
%doc CHANGES COPYING CREDITS README* LICENSE
|
||||
%doc docs/*.* docs/examples
|
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/ipsec.conf
|
||||
%attr(0600,root,root) %config(noreplace) %{_sysconfdir}/ipsec.secrets
|
||||
%attr(0700,root,root) %dir %{_sysconfdir}/ipsec.d
|
||||
%attr(0700,root,root) %dir %{_sysconfdir}/ipsec.d/policies
|
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/ipsec.d/policies/*
|
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysctl.d/50-libreswan.conf
|
||||
%attr(0755,root,root) %dir %{_rundir}/pluto
|
||||
%attr(0644,root,root) %{_tmpfilesdir}/libreswan.conf
|
||||
%attr(0644,root,root) %{_unitdir}/ipsec.service
|
||||
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/pluto
|
||||
%{_sbindir}/ipsec
|
||||
%{_libexecdir}/ipsec
|
||||
%attr(0644,root,root) %doc %{_mandir}/*/*
|
||||
|
||||
%changelog
|
||||
* Wed Sep 30 14:05:58 EDT 2020 Paul Wouters <pwouters@redhat.com> - 4.0-0.2.rc1
|
||||
- Rebuild for libevent 2.1.12 with a soname bump
|
||||
|
||||
* Sun Sep 27 22:49:40 EDT 2020 Paul Wouters <pwouters@redhat.com> - 4.0-0.1.rc1
|
||||
- Updated to 4.0rc1
|
||||
|
||||
* Thu Aug 27 2020 Paul Wouters <pwouters@redhat.com> - 3.32-4
|
||||
- Resolves: rhbz#1864043 libreswan: FTBFS in Fedora rawhide/f33
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.32-3.2
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.32-3.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Tue Jun 30 2020 Jeff Law <law@redhat.com> - 3.32-3
|
||||
- Initialize ppk_id_p in ikev2_parent_inR1outI2_tail to avoid uninitialized
|
||||
object
|
||||
|
||||
* Tue May 26 2020 Paul Wouters <pwouters@redhat.com> - 3.32-2
|
||||
- Backport NSS guarding fix for unannounced changed api in NSS causing segfault
|
||||
|
||||
* Mon May 11 2020 Paul Wouters <pwouters@redhat.com> - 3.32-1
|
||||
- Resolves: rhbz#1809770 libreswan-3.32 is available
|
||||
|
||||
* Tue Apr 14 2020 Paul Wouters <pwouters@redhat.com> - 3.31-2
|
||||
- Resolves: rhbz#1823823 Please drop the dependency on fipscheck
|
||||
|
||||
* Tue Mar 03 2020 Paul Wouters <pwouters@redhat.com> - 3.31-1
|
||||
- Resolves: rhbz#1809770 libreswan-3.31 is available (fixes rekey regression)
|
||||
|
||||
* Fri Feb 14 2020 Paul Wouters <pwouters@redhat.com> - 3.30-1
|
||||
- Resolves: rhbz#1802896 libreswan-3.30 is available
|
||||
- Resolves: rhbz#1799598 libreswan: FTBFS in Fedora rawhide/f32
|
||||
- Resolves: rhbz#1760571 [abrt] libreswan: configsetupcheck(): verify:366:configsetupcheck:TypeError:
|
||||
|
||||
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.29-2.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Thu Jan 09 2020 Paul Wouters <pwouters@redhat.com> - 3.29-2
|
||||
- _updown.netkey: fix syntax error in checking routes
|
||||
|
||||
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.29-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Mon Jun 10 2019 Paul Wouters <pwouters@redhat.com> - 3.29-1
|
||||
- Resolves: rhbz#1718986 Updated to 3.29 for CVE-2019-10155
|
||||
|
||||
* Tue May 21 2019 Paul Wouters <pwouters@redhat.com> - 3.28-1
|
||||
- Updated to 3.28 (many imported bugfixes, including CVE-2019-12312)
|
||||
|
||||
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.27-1.2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Mon Jan 14 2019 Björn Esser <besser82@fedoraproject.org> - 3.27-1.1
|
||||
- Rebuilt for libcrypt.so.2 (#1666033)
|
||||
|
||||
* Mon Oct 08 2018 Paul Wouters <pwouters@redhat.com> - 3.27-1
|
||||
- Updated to 3.27 (various bugfixes)
|
||||
|
||||
* Thu Sep 27 2018 Paul Wouters <pwouters@redhat.com> - 3.26-3
|
||||
- Add fedora python fixup for _unbound-hook
|
||||
|
||||
* Mon Sep 17 2018 Paul Wouters <pwouters@redhat.com> - 3.26-2
|
||||
- linking against freebl is no longer needed (and wasn't done in 3.25)
|
||||
|
||||
* Mon Sep 17 2018 Paul Wouters <pwouters@redhat.com> - 3.26-1
|
||||
- Updated to 3.26 (CHACHA20POLY1305, ECDSA and RSA-PSS support)
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.25-3.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Mon Jul 09 2018 Paul Wouters <pwouters@redhat.com> - 3.25-3
|
||||
- Fix Opportunistic IPsec _unbound-hook argument parsing
|
||||
- Make rundir readable for all (so we can hand out permissions later)
|
||||
|
||||
* Mon Jul 02 2018 Paul Wouters <pwouters@redhat.com> - 3.25-2
|
||||
- Relax deleting IKE SA's and IPsec SA's to avoid interop issues with third party VPN vendors
|
||||
|
||||
* Wed Jun 27 2018 Paul Wouters <pwouters@redhat.com> - 3.25-1
|
||||
- Updated to 3.25
|
||||
|
||||
* Mon Feb 19 2018 Paul Wouters <pwouters@redhat.com> - 3.23-2
|
||||
- Support crypto-policies package
|
||||
- Pull in some patches from upstream and IANA registry updates
|
||||
- gcc7 format-truncate fixes and workarounds
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.23-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Thu Jan 25 2018 Paul Wouters <pwouters@redhat.com> - 3.23-1
|
||||
- Updated to 3.23 - support for MOBIKE, PPK, CMAC, nic offload and performance improvements
|
||||
|
||||
* Sat Jan 20 2018 Björn Esser <besser82@fedoraproject.org> - 3.22-1.1
|
||||
- Rebuilt for switch to libxcrypt
|
||||
|
||||
* Mon Oct 23 2017 Paul Wouters <pwouters@redhat.com> - 3.22-1
|
||||
- Updated to 3.22 - many bugfixes, and unbound ipsecmod support
|
||||
|
||||
* Wed Aug 9 2017 Paul Wouters <pwouters@redhat.com> - 3.21-1
|
||||
- Updated to 3.21
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.20-1.2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.20-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Tue Mar 14 2017 Paul Wouters <pwouters@redhat.com> - 3.20-1
|
||||
- Updated to 3.20
|
||||
|
||||
* Fri Mar 03 2017 Paul Wouters <pwouters@redhat.com> - 3.20-0.1.dr4
|
||||
- Update to 3.20dr4 to test mozbz#1336487 export CERT_CompareAVA
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.19-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Fri Feb 03 2017 Paul Wouters <pwouters@redhat.com> - 3.19-2
|
||||
- Resolves: rhbz#1392191 libreswan: crash when OSX client connects
|
||||
- Improved uniqueid and session replacing support
|
||||
- Test Buffer warning fix on size_t
|
||||
- Re-introduce --configdir for backwards compatibility
|
||||
|
||||
* Sun Jan 15 2017 Paul Wouters <pwouters@redhat.com> - 3.19-1
|
||||
- Updated to 3.19 (see download.libreswan.org/CHANGES)
|
||||
|
||||
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 3.18-1.1
|
||||
- Rebuild for Python 3.6
|
||||
|
||||
* Fri Jul 29 2016 Paul Wouters <pwouters@redhat.com> - 3.18-1
|
||||
- Updated to 3.18 for CVE-2016-5391 rhbz#1361164 and VTI support
|
||||
- Remove support for /etc/sysconfig/pluto (use native systemd instead)
|
||||
|
||||
* Thu May 05 2016 Paul Wouters <pwouters@redhat.com> - 3.17-2
|
||||
- Resolves: rhbz#1324956 prelink is gone, /etc/prelink.conf.d/* is no longer used
|
||||
|
||||
* Thu Apr 07 2016 Paul Wouters <pwouters@redhat.com> - 3.17-1
|
||||
- Updated to 3.17 for CVE-2016-3071
|
||||
- Disable LIBCAP_NG as it prevents unbound-control from working properly
|
||||
- Temporarilly disable WERROR due to a few minor known issues
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.16-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Dec 18 2015 Paul Wouters <pwouters@redhat.com> - 3.16-1
|
||||
- Updated to 3.16 (see https://download.libreswan.org/CHANGES)
|
||||
|
||||
* Tue Aug 11 2015 Paul Wouters <pwouters@redhat.com> - 3.15-1
|
||||
- Updated to 3.15 (see http://download.libreswan.org/CHANGES)
|
||||
- Resolves: rhbz#CVE-2015-3240 IKE daemon restart when receiving a bad DH gx
|
||||
- NSS database creation moved from spec file to service file
|
||||
- Run CAVS tests on package build
|
||||
- Added BuildRequire systemd-units and xmlto
|
||||
- Bumped minimum required nss to 3.16.1
|
||||
- Install tmpfiles
|
||||
- Install sysctl file
|
||||
- Update doc files to include
|
||||
|
||||
* Mon Jul 13 2015 Paul Wouters <pwouters@redhat.com> - 3.13-2
|
||||
- Resolves: rhbz#1238967 Switch libreswan to use python3
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.13-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Mon Jun 01 2015 Paul Wouters <pwouters@redhat.com> - 3.13-1
|
||||
- Updated to 3.13 for CVE-2015-3204
|
||||
|
||||
* Fri Nov 07 2014 Paul Wouters <pwouters@redhat.com> - 3.12-1
|
||||
- Updated to 3.12 Various IKEv2 fixes
|
||||
|
||||
* Wed Oct 22 2014 Paul Wouters <pwouters@redhat.com> - 3.11-1
|
||||
- Updated to 3.11 (many fixes, including startup fixes)
|
||||
- Resolves: rhbz#1144941 libreswan 3.10 upgrade breaks old ipsec.secrets configs
|
||||
- Resolves: rhbz#1147072 ikev1 aggr mode connection fails after libreswan upgrade
|
||||
- Resolves: rhbz#1144831 Libreswan appears to start with systemd before all the NICs are up and running
|
||||
|
||||
* Tue Sep 09 2014 Paul Wouters <pwouters@redhat.com> - 3.10-3
|
||||
- Fix some coverity issues, auto=route on bootup and snprintf on 32bit machines
|
||||
|
||||
* Mon Sep 01 2014 Paul Wouters <pwouters@redhat.com> - 3.10-1
|
||||
- Updated to 3.10, major bugfix release, new xauth status options
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.9-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Thu Jul 10 2014 Paul Wouters <pwouters@redhat.com> - 3.9-1
|
||||
- Updated to 3.9. IKEv2 enhancements, ESP/IKE algo enhancements
|
||||
- Mark libreswan-fips.conf as config file
|
||||
- attr modifier for man pages no longer needed
|
||||
- BUGS file no longer exists upstream
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.8-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat Jan 18 2014 Paul Wouters <pwouters@redhat.com> - 3.8-1
|
||||
- Updated to 3.8, fixes rhbz#CVE-2013-6467 (rhbz#1054102)
|
||||
|
||||
* Wed Dec 11 2013 Paul Wouters <pwouters@redhat.com> - 3.7-1
|
||||
- Updated to 3.7, fixes CVE-2013-4564
|
||||
- Fixes creating a bogus NSS db on startup (rhbz#1005410)
|
||||
|
||||
* Thu Oct 31 2013 Paul Wouters <pwouters@redhat.com> - 3.6-1
|
||||
- Updated to 3.6 (IKEv2, MODECFG, Cisco interop fixes)
|
||||
- Generate empty NSS db if none exists
|
||||
|
||||
* Mon Aug 19 2013 Paul Wouters <pwouters@redhat.com> - 3.5-3
|
||||
- Add a Provides: for openswan-doc
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.5-1.1
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Mon Jul 15 2013 Paul Wouters <pwouters@redhat.com> - 3.5-2
|
||||
- Added interop patch for (some?) Cisco VPN clients sending 16 zero
|
||||
bytes of extraneous IKE data
|
||||
- Removed fipscheck_version
|
||||
|
||||
* Sat Jul 13 2013 Paul Wouters <pwouters@redhat.com> - 3.5-1
|
||||
- Updated to 3.5
|
||||
|
||||
* Thu Jun 06 2013 Paul Wouters <pwouters@redhat.com> - 3.4-1
|
||||
- Updated to 3.4, which only contains style changes to kernel coding style
|
||||
- IN MEMORIAM: June 3rd, 2013 Hugh Daniel
|
||||
|
||||
* Mon May 13 2013 Paul Wouters <pwouters@redhat.com> - 3.3-1
|
||||
- Updated to 3.3, which resolves CVE-2013-2052
|
||||
|
||||
* Sat Apr 13 2013 Paul Wouters <pwouters@redhat.com> - 3.2-1
|
||||
- Initial package for Fedora
|
4
sources
Normal file
4
sources
Normal file
@ -0,0 +1,4 @@
|
||||
SHA512 (ikev1_dsa.fax.bz2) = 627cbac14248bd68e8d22fbca247668a7749ef0c2e41df8d776d62df9a21403d3a246c0bd82c3faedce62de90b9f91a87f753e17b056319000bba7d2038461ac
|
||||
SHA512 (ikev1_psk.fax.bz2) = 1b2daec32edc56b410c036db2688c92548a9bd9914994bc7e555b301dd6db4497a6b3e89dc12ddf36826ae90b40fcde501a5a45c0d59098e07839073d219d467
|
||||
SHA512 (ikev2.fax.bz2) = 0d3748d1bd574f6f1f3e4db847eca126ce649566ea710ef227426f433122752b80d1d6b8acf9d0df07b5597c1e45447e3a2fcb3391756e834e8e75f99df8e51e
|
||||
SHA512 (libreswan-4.0rc1.tar.gz) = 3ae36e477c6891f94b5d82b1a0ecb05a8413eab96125e6ae92289164b797538cf53cf6825dd1d4699bfdd4c49f68cc65097024f5b1ea9464226dae75abc5c669
|
14
tests/tests.yml
Normal file
14
tests/tests.yml
Normal file
@ -0,0 +1,14 @@
|
||||
# Tests for libreswan using NM's tests
|
||||
- hosts: localhost
|
||||
roles:
|
||||
- role: standard-test-basic
|
||||
tags:
|
||||
- classic
|
||||
repositories:
|
||||
- repo: "https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci"
|
||||
dest: "NetworkManager-ci"
|
||||
tests:
|
||||
- sanity-tests:
|
||||
dir: NetworkManager-ci
|
||||
run: run/osci/run-tests libreswan
|
||||
|
Loading…
Reference in New Issue
Block a user