This add an RRDP regress test that checks basic operation.
It checks some valid notification, snapshot and delta XML.
There are also two XML attacks included (billion laughs and XXE).
More bad XML files should be added.

Comments?
-- 
:wq Claudio

Index: Makefile.inc
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/Makefile.inc,v
retrieving revision 1.15
diff -u -p -r1.15 Makefile.inc
--- Makefile.inc        24 Oct 2021 17:54:28 -0000      1.15
+++ Makefile.inc        24 Nov 2021 14:12:39 -0000
@@ -8,6 +8,7 @@ PROGS += test-gbr
 PROGS += test-mft
 PROGS += test-roa
 PROGS += test-tal
+PROGS += test-rrdp
 
 .for p in ${PROGS}
 REGRESS_TARGETS += run-regress-$p
@@ -50,3 +51,35 @@ SRCS_test-tal+=      test-tal.c tal.c ip.c io
                encoding.c print.c dummy.c
 run-regress-test-tal: test-tal
        ./test-tal -v ${.CURDIR}/../tal/*.tal
+
+SRCS_test-rrdp+=       test-rrdp.c rrdp_delta.c rrdp_notification.c \
+                       rrdp_snapshot.c rrdp_util.c \
+                       log.c encoding.c ip.c validate.c dummy.c
+LDADD_test-rrdp+=      -lexpat ${LDADD}
+DPADD_test-rrdp+=      ${LIBEXPAT} ${DPADD}
+run-regress-test-rrdp: test-rrdp
+       ./test-rrdp \
+       -n < ${.CURDIR}/../rrdp/notification.xml 2>&1 | tee rrdp-r1.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r1.out rrdp-r1.out
+
+       ./test-rrdp -S 8fe05c2e-047d-49e7-8398-cd4250a572b1 -N 50500 \
+       -n < ${.CURDIR}/../rrdp/notification.xml 2>&1 | tee rrdp-r2.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r2.out rrdp-r2.out
+       
+       ./test-rrdp -S 9b3f7e31-4979-ef8c-d818-73e4dadc3e6b -N 13755 \
+       -H 27571e365a4c87b51a03731415ce2118cc268d686db3209ae752f01ba2d74bc5 \
+       -d < ${.CURDIR}/../rrdp/delta.xml 2>&1 | tee rrdp-r3.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r3.out rrdp-r3.out
+
+       ./test-rrdp -S 7e7d2563-5bbb-40b0-8723-6a2e90c85d9e -N 28483 \
+       -H 2a051bfd199150fe6bcdc777d09e70fe1acdf239fbf98ba378a793685e5adb21 \
+       -s < ${.CURDIR}/../rrdp/snapshot.xml 2>&1 | tee rrdp-r4.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r4.out rrdp-r4.out
+
+       ./test-rrdp \
+       -n < ${.CURDIR}/../rrdp/xxe.xml 2>&1 | tee rrdp-r5.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r5.out rrdp-r5.out
+
+       ./test-rrdp \
+       -n < ${.CURDIR}/../rrdp/billion_lol.xml 2>&1 | tee rrdp-r6.out
+       cmp ${.CURDIR}/../rrdp/rrdp-r6.out rrdp-r6.out
Index: test-rrdp.c
===================================================================
RCS file: test-rrdp.c
diff -N test-rrdp.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test-rrdp.c 24 Nov 2021 17:34:37 -0000
@@ -0,0 +1,338 @@
+/*     $OpenBSD: rrdp.c,v 1.17 2021/10/29 09:27:36 claudio Exp $ */
+/*
+ * Copyright (c) 2020 Nils Fisher <nils_fis...@hotmail.com>
+ * Copyright (c) 2021 Claudio Jeker <clau...@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#include <sys/queue.h>
+#include <sys/stat.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <poll.h>
+#include <string.h>
+#include <unistd.h>
+#include <sha2.h>
+
+#include <expat.h>
+#include <openssl/sha.h>
+
+#include "extern.h"
+#include "rrdp.h"
+
+#define REGRESS_NOTIFY_URI     "https://rpki.example.com/notify.xml";
+
+#define MAX_SESSIONS   12
+#define        READ_BUF_SIZE   (32 * 1024)
+
+#define RRDP_STATE_REQ         0x01
+#define RRDP_STATE_WAIT                0x02
+#define RRDP_STATE_PARSE       0x04
+#define RRDP_STATE_PARSE_ERROR 0x08
+#define RRDP_STATE_PARSE_DONE  0x10
+#define RRDP_STATE_HTTP_DONE   0x20
+#define RRDP_STATE_DONE                (RRDP_STATE_PARSE_DONE | 
RRDP_STATE_HTTP_DONE)
+
+struct rrdp {
+       TAILQ_ENTRY(rrdp)        entry;
+       size_t                   id;
+       char                    *notifyuri;
+       char                    *local;
+       char                    *last_mod;
+
+       struct pollfd           *pfd;
+       int                      infd;
+       int                      state;
+       unsigned int             file_pending;
+       unsigned int             file_failed;
+       enum http_result         res;
+       enum rrdp_task           task;
+
+       char                     hash[SHA256_DIGEST_LENGTH];
+       SHA256_CTX               ctx;
+
+       struct rrdp_session      repository;
+       struct rrdp_session      current;
+       XML_Parser               parser;
+       struct notification_xml *nxml;
+       struct snapshot_xml     *sxml;
+       struct delta_xml        *dxml;
+};
+
+void
+logx(const char *fmt, ...)
+{
+       va_list ap;
+
+       va_start(ap, fmt);
+       vwarnx(fmt, ap);
+       va_end(ap);
+}
+
+char *
+xstrdup(const char *s)
+{
+       char *r;
+       if ((r = strdup(s)) == NULL)
+               err(1, "strdup");
+       return r;
+}
+
+/*
+ * Send a blob of data to the main process to store it in the repository.
+ */
+void
+rrdp_publish_file(struct rrdp *s, struct publish_xml *pxml,
+    unsigned char *data, size_t datasz)
+{
+       char buf[SHA256_DIGEST_STRING_LENGTH];
+       char *hash = NULL;
+
+       switch (pxml->type) {
+       case PUB_ADD:
+               logx("type: %s", "add");
+               break;
+       case PUB_UPD:
+               logx("type: %s", "update");
+               hash = hex_encode(pxml->hash, sizeof(pxml->hash));
+               break;
+       case PUB_DEL:
+               logx("type: %s", "delete");
+               hash = hex_encode(pxml->hash, sizeof(pxml->hash));
+               break;
+       default:
+               errx(1, "unknown publish type");
+       }
+       logx("uri: %s", pxml->uri);
+       SHA256Data(data, datasz, buf);
+       logx("data: %s", buf);
+
+       if (hash)
+               logx("hash: %s", hash);
+       free(hash);
+}
+
+static struct rrdp *
+rrdp_new(size_t id, char *local, char *notify, char *session_id,
+    long long serial, char *last_mod)
+{
+       struct rrdp *s;
+
+       if ((s = calloc(1, sizeof(*s))) == NULL)
+               err(1, NULL);
+
+       s->infd = 0; /* stdin */
+       s->id = id;
+       s->local = local;
+       s->notifyuri = notify;
+       s->repository.session_id = session_id;
+       s->repository.serial = serial;
+       s->repository.last_mod = last_mod;
+
+       s->state = RRDP_STATE_REQ;
+       if ((s->parser = XML_ParserCreate("US-ASCII")) == NULL)
+               err(1, "XML_ParserCreate");
+
+       return s;
+}
+
+static void
+rrdp_free(struct rrdp *s)
+{
+       if (s == NULL)
+               return;
+
+       free_notification_xml(s->nxml);
+       free_snapshot_xml(s->sxml);
+       free_delta_xml(s->dxml);
+
+       if (s->parser)
+               XML_ParserFree(s->parser);
+       if (s->infd != -1)
+               close(s->infd);
+       free(s->notifyuri);
+       free(s->local);
+       free(s->last_mod);
+       free(s->repository.last_mod);
+       free(s->repository.session_id);
+       free(s->current.last_mod);
+       free(s->current.session_id);
+
+       free(s);
+}
+
+static void
+rrdp_finished(struct rrdp *s)
+{
+       XML_Parser p = s->parser;
+       size_t id = s->id;
+
+       if (s->state & RRDP_STATE_PARSE_ERROR)
+               return;
+
+       /*
+        * Finalize parsing on success to be sure that
+        * all of the XML is correct. Needs to be done here
+        * since the call would most probably fail for non
+        * successful data fetches.
+        */
+       if (XML_Parse(p, NULL, 0, 1) != XML_STATUS_OK) {
+               warnx("%s: XML error at line %llu: %s", s->local,
+                   (unsigned long long)XML_GetCurrentLineNumber(p),
+                   XML_ErrorString(XML_GetErrorCode(p)));
+               return;
+       }
+
+       switch (s->task) {
+       case NOTIFICATION:
+               log_notification_xml(s->nxml);
+               break;
+       case SNAPSHOT:
+               log_snapshot_xml(s->sxml);
+               break;
+       case DELTA:
+               log_delta_xml(s->dxml);
+               break;
+       }
+}
+
+static void
+rrdp_data_handler(struct rrdp *s)
+{
+       char buf[READ_BUF_SIZE];
+       XML_Parser p = s->parser;
+       ssize_t len;
+
+       len = read(s->infd, buf, sizeof(buf));
+       if (len == -1) {
+               s->state |= RRDP_STATE_PARSE_ERROR;
+               warn("%s: read failure", s->local);
+               return;
+       }
+       if ((s->state & RRDP_STATE_PARSE) == 0)
+               errx(1, "%s: bad parser state", s->local);
+       if (len == 0) {
+               /* parser stage finished */
+               close(s->infd);
+               s->infd = -1;
+
+               if (s->task != NOTIFICATION) {
+                       char h[SHA256_DIGEST_LENGTH];
+
+                       SHA256_Final(h, &s->ctx);
+                       if (memcmp(s->hash, h, sizeof(s->hash)) != 0) {
+                               s->state |= RRDP_STATE_PARSE_ERROR;
+                               warnx("%s: bad message digest", s->local);
+                       }
+               }
+
+               s->state |= RRDP_STATE_PARSE_DONE;
+               rrdp_finished(s);
+               return;
+       }
+
+       /* parse and maybe hash the bytes just read */
+       if (s->task != NOTIFICATION)
+               SHA256_Update(&s->ctx, buf, len);
+       if ((s->state & RRDP_STATE_PARSE_ERROR) == 0 &&
+           XML_Parse(p, buf, len, 0) != XML_STATUS_OK) {
+               warnx("%s: parse error at line %llu: %s", s->local,
+                   (unsigned long long)XML_GetCurrentLineNumber(p),
+                   XML_ErrorString(XML_GetErrorCode(p)));
+               s->state |= RRDP_STATE_PARSE_ERROR;
+       }
+}
+
+int
+main(int argc, char **argv)
+{
+       struct rrdp *s = NULL;
+       const char *e;
+       char *session_id = NULL;
+       char hash[SHA256_DIGEST_LENGTH];
+       long long serial = 0;
+       int c;
+
+
+       while ((c = getopt(argc, argv, "dH:N:nS:s")) != -1)
+               switch (c) {
+               case 'd':
+                       if (s)
+                               goto usage;
+                       s = rrdp_new(0, "stdin", REGRESS_NOTIFY_URI,
+                           session_id, serial, NULL);
+                       s->dxml = new_delta_xml(s->parser,
+                           &s->repository, s);
+                       s->task = DELTA;
+                       SHA256_Init(&s->ctx);
+                       memcpy(s->hash, hash, sizeof(s->hash));
+                       break;
+               case 'H':
+                       if (hex_decode(optarg, hash, sizeof(hash)) == -1)
+                               errx(1, "bad hash");
+                       break;
+               case 'N':
+                       serial = strtonum(optarg, LLONG_MIN, LLONG_MAX, &e);
+                       if (e != NULL)
+                               errx(1, "serial is %s: %s", e, optarg);
+                       break;
+               case 'n':
+                       if (s)
+                               goto usage;
+                       s = rrdp_new(0, "stdin", REGRESS_NOTIFY_URI,
+                           session_id, serial, NULL);
+                       s->nxml = new_notification_xml(s->parser,
+                           &s->repository, &s->current, s->notifyuri);
+                       s->task = NOTIFICATION;
+                       break;
+               case 'S':
+                       session_id = optarg;
+                       break;
+               case 's':
+                       if (s)
+                               goto usage;
+                       s = rrdp_new(0, "stdin", REGRESS_NOTIFY_URI,
+                           session_id, serial, NULL);
+                       s->sxml = new_snapshot_xml(s->parser,
+                           &s->repository, s);
+                       s->task = SNAPSHOT;
+                       SHA256_Init(&s->ctx);
+                       memcpy(s->hash, hash, sizeof(s->hash));
+                       break;
+               default:
+                       goto usage;
+               }
+
+       s->state = RRDP_STATE_PARSE;
+
+       while (!(s->state & RRDP_STATE_PARSE_DONE)) {
+               rrdp_data_handler(s);
+       }
+
+       if ((s->state & RRDP_STATE_PARSE_ERROR) == 0) {
+               printf("OK\n");
+               return 0;
+       } else {
+               return 1;
+       }
+
+usage:
+       fprintf(stderr, "usage: %s [-S session_id] [-N serial] [-H hash] "
+           "-d | -n | -s\n", "test-rrdp");
+       exit(1);
+}
Index: rrdp/billion_lol.xml
===================================================================
RCS file: rrdp/billion_lol.xml
diff -N rrdp/billion_lol.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/billion_lol.xml        24 Nov 2021 14:00:55 -0000
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE lolz [
+<!ENTITY lol "lol">
+<!ELEMENT lolz (#PCDATA)>
+<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
+<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
+<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
+<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
+<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
+<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
+<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
+<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
+<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
+]>
+<notification version="1" session_id="9b3f7e31-4979-ef8c-d818-73e4dadc3e6b" 
serial="13756" xmlns="http://www.ripe.net/rpki/rrdp";>
+&lol9;
+</notification>
Index: rrdp/delta.xml
===================================================================
RCS file: rrdp/delta.xml
diff -N rrdp/delta.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/delta.xml      24 Nov 2021 13:10:03 -0000
@@ -0,0 +1,6 @@
+<delta version="1" session_id="9b3f7e31-4979-ef8c-d818-73e4dadc3e6b" 
serial="13755" xmlns="http://www.example.com/rpki/rrdp";>
+<withdraw 
uri="rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/gSk6an-JyWyxV5LYX0AB2BOJb7I.roa"
 hash="6f19c7760d83b12e259f35924f40be76c6a9c963db23a692ce192c2faef94271"/>
+<publish 
uri="rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/nBETmuVT1txzB4h_Rn5CB4gARes.crl"
 
hash="9aaf87b277efb7e47ab00a4a86cad1cd132d8a06a782d9b54202c4bffede347b">MIICDDCB9QIBATANBgkqhkiG9w0BAQsFADAzMTEwLwYDVQQDEyg5YzExMTM5YWU1NTNkNmRjNzMwNzg4N2Y0NjdlNDIwNzg4MDA0NWViFw0yMTExMjQxMjU4MzlaFw0yMTExMjUxMjU4MzlaMFwwFQIEAn7YkhcNMjExMTI0MTI1NzM4WjAVAgQFTTrHFw0yMTExMjQwMDIwMThaMBUCBAVOq8cXDTIxMTEyNDA4MjAyM1owFQIEBU7nwxcNMjExMTI0MTI1ODM5WqAwMC4wHwYDVR0jBBgwFoAUnBETmuVT1txzB4h/Rn5CB4gAReswCwYDVR0UBAQCAgbkMA0GCSqGSIb3DQEBCwUAA4IBAQCfpuUosjOLlChmmjHjIZ0+NiQSb7EnPZdOZKnbAmK3xqflMAvbdHe7ROuFeb6LFU1RvAfq+100NRbBnt7kppLoHFItAoNUl8YtOevRr8imkE0I6jhj3kPxsFhjnWwD1Bqv++SP84xQQrTJ9+NhVv4xWx4K21OaBK1jQfNnDIEKgtMV5FKrb3GJNoWjFIURLkyJ4GKuFhp/J+Jr5PHb36k1aZBYlXU52/MkYROyHw8MgcfY39ECCjoz7396ihwuB5DX8h8C1oPyQtMKHRs7HLHbSu0VTMKz2iL8U8D14dnRz3ALB28FpAU1jRcYjPsV6913GYC1u931CIdzCL/cF6sY</publish>
+<publish 
uri="rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/nBETmuVT1txzB4h_Rn5CB4gARes.mft"
 
hash="b45fa2daaeeda2b37bff1a039ada2c299dc6ace28ca16dbc22664e3d89b8d556">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</publish>
+<publish 
uri="rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/x7OkhL6fs-x6CQ4Kqd5jOkkB4pY.roa">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</publish>
+</delta>
Index: rrdp/notification.xml
===================================================================
RCS file: rrdp/notification.xml
diff -N rrdp/notification.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/notification.xml       25 Nov 2021 11:24:10 -0000
@@ -0,0 +1,104 @@
+<notification xmlns="http://www.ripe.net/rpki/rrdp"; version="1" 
session_id="8fe05c2e-047d-49e7-8398-cd4250a572b1" serial="50550">
+  <snapshot 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50550/snapshot.xml";
 hash="ae52f78bcb1b258a1da924122971b0fddfce4c01b2b2dba59c9b28ef1d94c02b" />
+  <delta serial="50550" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50550/delta.xml";
 hash="e99cc80cb36259e73ec1ffed5a0cfbaf27d345800da18147dbdf8316b28e027c" />
+  <delta serial="50549" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50549/delta.xml";
 hash="0f7808520c7d54e6f0cbd37bbf391e9028fdc62bdc0f2e90d986479b3b11f8aa" />
+  <delta serial="50548" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50548/delta.xml";
 hash="8f022550ecee3cd13ee209c1a8fcd5e99e449295ae9d53adca1ba3231718b36c" />
+  <delta serial="50547" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50547/delta.xml";
 hash="fb94b545fc52cc7ca91a42bc09ae5f89dcf7bcd758fe4bded47f565cf991dd64" />
+  <delta serial="50546" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50546/delta.xml";
 hash="67dcb6751e0e31586603244cd90fc2f8a3e7ea8132af13d95962c59898f11b24" />
+  <delta serial="50545" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50545/delta.xml";
 hash="12985397a67daed8f64ee8b653a60a02b121632169247bb95a9d3beb0f897ca1" />
+  <delta serial="50544" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50544/delta.xml";
 hash="b4b36d43e649ca7b919ad5754c745a8b50a594f0250e4617c7756b9ae008ead0" />
+  <delta serial="50543" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50543/delta.xml";
 hash="7626bd5fe4528b3810806eede9698f0c835657024717c116024b010d0239ae58" />
+  <delta serial="50542" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50542/delta.xml";
 hash="bee7a540aa6fff7c2c00d559b7e9de6973d52ffa7121030ba534db5f18a23fa6" />
+  <delta serial="50541" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50541/delta.xml";
 hash="d9622f90e5850f38cf2ecbcd5714a9f5f699d8d0ba509f41daa56dfeef83cd85" />
+  <delta serial="50540" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50540/delta.xml";
 hash="a64882d43f76933bfbba07e96a3982a6b1b15bd261f4f78ffbf19ad4c9fafded" />
+  <delta serial="50539" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50539/delta.xml";
 hash="397264bfbd7d466f9bddefe5139ba9ce392fafe24c95f80be00f27f40246919b" />
+  <delta serial="50538" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50538/delta.xml";
 hash="f5b6e9e253597f0fa8c023278d9d77e75b220e1cebae597e906a7d6b0ab07398" />
+  <delta serial="50537" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50537/delta.xml";
 hash="13be78ba673b89d9d8004a1c39e82f667219610371f4ecd64c3c318636419608" />
+  <delta serial="50536" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50536/delta.xml";
 hash="59fbb6d36742c51219cd1a4ef064d6a54531b82cb8db592a4fad9d89e867353f" />
+  <delta serial="50535" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50535/delta.xml";
 hash="a749ff4e39b607f65b7d2d2b4baababa0198c47ea02c9ef8a8fc36529102bc3c" />
+  <delta serial="50534" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50534/delta.xml";
 hash="19eff9063c421788ffa4859842cf05366862a78c9dd40d926091a6e9e6f9bb1b" />
+  <delta serial="50533" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50533/delta.xml";
 hash="e45dcdab3ac49d0f6af740b6c42b2c48faf539bb1bcbe6ac0eac9e95028d1d7d" />
+  <delta serial="50532" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50532/delta.xml";
 hash="26cb2af7ef8ef4a6568832feeccf45193503e2d5aa60edc36f04928a91448228" />
+  <delta serial="50531" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50531/delta.xml";
 hash="8e18d6c89b7129c2450efb4a36fee9085ee5abd02f0a9aadbcc2a6f4afd1369e" />
+  <delta serial="50530" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50530/delta.xml";
 hash="99d665bc23a27a011684985a3f986c4a8d99ef2c5aa700ddcca48c32d68d1da1" />
+  <delta serial="50529" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50529/delta.xml";
 hash="afbe35fac90ed1f9ffbc9c00ef9f264e52c3ce5a963cb71d8493fec0970c6ade" />
+  <delta serial="50528" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50528/delta.xml";
 hash="7ca7b7bbeaf412c492b4781d23f3cf3de1ce333ef569377b57719c58195cba6f" />
+  <delta serial="50527" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50527/delta.xml";
 hash="fdc9eb4e70a5f55b310015936d65a3878665d9c03631da4b66069f4f1d812d5f" />
+  <delta serial="50526" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50526/delta.xml";
 hash="e615ed42ac32529c7dfe7189f8deca1e7ec7c4d79c03c50bd51488c7381610bb" />
+  <delta serial="50525" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50525/delta.xml";
 hash="2660598aafb968737d8a81f823d490c7157f5a6ee72ef7f2def8176095cb96be" />
+  <delta serial="50524" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50524/delta.xml";
 hash="6bd5645cda5490eb42737ed94f249c9166f626231b5315c1205c4e1d8e7fd409" />
+  <delta serial="50523" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50523/delta.xml";
 hash="abd00b8aeb0555a965f83ea89853e5a8179d5f00e341c7f958e95c3bd6df8807" />
+  <delta serial="50522" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50522/delta.xml";
 hash="aa249c432d2eaeff266b3a875c1cbf721491c10776a28d62cd5cf0cce891e834" />
+  <delta serial="50521" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50521/delta.xml";
 hash="321d3c439dc175974842a52d936ec13fc6a73912f75e6ae66d99b9eaac09e84d" />
+  <delta serial="50520" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50520/delta.xml";
 hash="ab32d797dfa4d0490888d129ba275f9c4a816f409b5d99dba76c07ab14ba3a2b" />
+  <delta serial="50519" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50519/delta.xml";
 hash="0c07702baee536f54f5a35bc481c422c170974dcc2bd4f99e4f58028901b3a52" />
+  <delta serial="50518" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50518/delta.xml";
 hash="30a580dd74f8f5cf1bf83bc8643171a09482fb401e3f2f0443934ee675ca8107" />
+  <delta serial="50517" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50517/delta.xml";
 hash="eac5270a5109e95683eb73153e7f5e081f6da473048782ce4e0e708ad2264b3a" />
+  <delta serial="50516" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50516/delta.xml";
 hash="fadee13b825f713e931edadedc79b1f86f4e501ef6c153c0f5fd4401c73b3065" />
+  <delta serial="50515" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50515/delta.xml";
 hash="bd258657de4c220ad500cc0ece87cffcad813ecd30a63deff28086a5f2dcbb5f" />
+  <delta serial="50514" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50514/delta.xml";
 hash="70d288ec67c4b47b6dc177bfb735ddd6542b2a9e484bae770534a83fd515ce8b" />
+  <delta serial="50513" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50513/delta.xml";
 hash="85daf825c8335d8f59fd6b32b25f9b7152f89038b74ed3366a6ea59bd2f4e600" />
+  <delta serial="50512" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50512/delta.xml";
 hash="155c0f96de414ac4ca7d60de7b1acbecdf5b192ccae6af3c78f06fff212138f4" />
+  <delta serial="50511" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50511/delta.xml";
 hash="9015620f5b20dba3dedc63f90c0cfab5dd3816217976c6dcc4a68d5555649dc9" />
+  <delta serial="50510" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50510/delta.xml";
 hash="6d8d296ca28ca390b761d25bdb69eaa0086242911a90965c7436d602b4190b66" />
+  <delta serial="50509" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50509/delta.xml";
 hash="fcd7fe3d59f4b8daa40920c7b3c5c4d149660afd35dfca53ede7671919802cfb" />
+  <delta serial="50508" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50508/delta.xml";
 hash="b4ae54c1207ec9a12a5e20091004830fb3d146f62b2396a6c3de2ab0795ed2e7" />
+  <delta serial="50507" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50507/delta.xml";
 hash="20360d8b294e3a6e62de2af58955afe601507231e6937b375de0c047a69cd9c1" />
+  <delta serial="50506" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50506/delta.xml";
 hash="7c9c62da4dd109e5151fcc0ea366db343e35ab7f2a62d81d6c54eee1e1fd72b1" />
+  <delta serial="50505" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50505/delta.xml";
 hash="50c95ff4b63c03836fe291afca61fda25c96bc0d280e421dddc307e591fe8f81" />
+  <delta serial="50504" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50504/delta.xml";
 hash="cdcd746257a0f35bbce0b1832c2df4cf25751c281fde23cae8b17f607f1e82e1" />
+  <delta serial="50503" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50503/delta.xml";
 hash="e8de1e10d05734bb9efe65202b96023d3770f0b8fd457249676214612f4685b3" />
+  <delta serial="50502" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50502/delta.xml";
 hash="1036a71df3129449e1403f3beacfa427d59659fac0b45c9e3dffdbebdb17d722" />
+  <delta serial="50501" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50501/delta.xml";
 hash="40521fb9995aca55d39360985c336619e08072a6afffce97753e701a0d65d57b" />
+  <delta serial="50500" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50500/delta.xml";
 hash="7efb8b3a1e854b0d2814ab18446ee022ade286c5a1d31606097b3f90356ccdaf" />
+  <delta serial="50499" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50499/delta.xml";
 hash="c70a32f49cce1debba0966f78ff99ea18e78bd40dba9f67396d26b5cc5c605ff" />
+  <delta serial="50498" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50498/delta.xml";
 hash="751794129303140be49746bf9e3622c2bdd8e4c5a08e40493f7cd46a71d20aa1" />
+  <delta serial="50497" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50497/delta.xml";
 hash="cc6a29239f63de8518f1af177a1b0dc5b2e0a88eb4fe0922e56c73d83dd4d6d0" />
+  <delta serial="50496" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50496/delta.xml";
 hash="a716208fdc5cdff2c7f56cdec1c02286c59823afd3879aa75e1f06c987748441" />
+  <delta serial="50495" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50495/delta.xml";
 hash="ef3ca2ce6b1d169e8fe62ee8f0b7242ee8fa2a1c573993c674faa4ec611dc544" />
+  <delta serial="50494" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50494/delta.xml";
 hash="54c980eaa0124eabd3099e0d8272293e2deb796acf8f102dfd24a250ddee2775" />
+  <delta serial="50493" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50493/delta.xml";
 hash="7cfd18677fd6dae4293980a78ab555cbe9e61d803b142ffc8198a29ec6b04c08" />
+  <delta serial="50492" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50492/delta.xml";
 hash="4f6206afd9bf34751fd733874becac64b9dc04630640e7df8c772fb2fcf7a348" />
+  <delta serial="50491" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50491/delta.xml";
 hash="7a74b74aa104f7f52d8f7bc6ed1ec5f9e6e3adccadd1e04fc575f6d8f34ee6dc" />
+  <delta serial="50490" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50490/delta.xml";
 hash="ceda0e4154f22b7a16ef04998dc17fc70c84105c4aae083e17fac6f381c41713" />
+  <delta serial="50489" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50489/delta.xml";
 hash="010c945e13c99cf92741d523f5c57f0f2851fb1c52d1fb4964f115bfd85c9ef6" />
+  <delta serial="50488" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50488/delta.xml";
 hash="0fd5fa0604384d8ddec30b69acd04d23c90bcba34d3e062e73a96a3a57bf60a8" />
+  <delta serial="50487" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50487/delta.xml";
 hash="0427cccadfa70f69a412122ba8419aee3a8904a3de63b7059a35e652f9404569" />
+  <delta serial="50486" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50486/delta.xml";
 hash="d171d1e8ef82c0769b36efff0debac91f3cc33054ded176d54a35b63232d2c96" />
+  <delta serial="50485" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50485/delta.xml";
 hash="f05dc4d2995cb514391404936edcdebb1107297887e3a3c494c0896477b27e6e" />
+  <delta serial="50484" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50484/delta.xml";
 hash="1f6c44e3d738879df95fc8673e659fd78a30a183a1d5ca823ccabe81fdf3736a" />
+  <delta serial="50483" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50483/delta.xml";
 hash="b2ed1f439cac0a62001f6e1d9e1f00ad764fd047a64126b47f26af3b2ab514e8" />
+  <delta serial="50482" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50482/delta.xml";
 hash="83d1c8e6bc1b065a32683d6f2ef7ca4ee1009e6d0d8b22062d6288cd72617b3f" />
+  <delta serial="50481" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50481/delta.xml";
 hash="24a99e8d8ab0b3352d19f33a49eaf69939086ab0315ec6dbed067f63b5604ef5" />
+  <delta serial="50480" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50480/delta.xml";
 hash="6a2accdfd0b4af9906a5a81e30241fb87f67bb6f7e9d7b99d59cae15044a010b" />
+  <delta serial="50479" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50479/delta.xml";
 hash="8f7af8fd7c729baddedc2a13b689544a767dd936dbcbf084211e00075d74a1e5" />
+  <delta serial="50478" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50478/delta.xml";
 hash="d2b419736b991ccdc6198f8c1e8c602f14e934871be7ecd607d866e584f2aa42" />
+  <delta serial="50477" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50477/delta.xml";
 hash="bdf736d3c7cecd75ee19dba29941881cade37c2c53b165a2413a1b7982795be6" />
+  <delta serial="50476" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50476/delta.xml";
 hash="c7975b0f7ef18f93304a2babed5f7486262c90ee02977a3fab9ecd95c4b47852" />
+  <delta serial="50475" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50475/delta.xml";
 hash="2aa5b94c098d36affabeef66f7f9271d7e6ae93985c3457ed4a3c84316b8d1f6" />
+  <delta serial="50474" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50474/delta.xml";
 hash="e8c459bd165aa12c7e2f0b0da0d8fb18e0e23607c42f2b7f9a7957fe6b8eef28" />
+  <delta serial="50473" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50473/delta.xml";
 hash="3b9fbe5d13d4403acedc45d946f3068ed17c6bbe62196186dab9a12b3e558599" />
+  <delta serial="50472" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50472/delta.xml";
 hash="b8b884391b4058d1eaca7e166d205db1594847cc1e5cc956b6445d38e376f646" />
+  <delta serial="50471" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50471/delta.xml";
 hash="160c140d36df4ed569ab11a540ec17e2cd5530950e119cc4a06e5ffb9d9f9150" />
+  <delta serial="50470" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50470/delta.xml";
 hash="baf8b1d3700495e112c23189e927a52a7ac2246d4da310ae4fc6eea0351d513f" />
+  <delta serial="50469" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50469/delta.xml";
 hash="e4dcefd79395aa920fe91888afedc82a8e28e262e6e40127a6b937635faf9fba" />
+  <delta serial="50468" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50468/delta.xml";
 hash="af6fb2aeafd434254e29fa7f16dd133c69abb464ad1b8ae8a44de23578f1bcbd" />
+  <delta serial="50467" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50467/delta.xml";
 hash="bd8816c6e64e42fcb0046aa2ca9b5769b5c3ebbf32ffac844c8b38c8889b62c9" />
+  <delta serial="50466" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50466/delta.xml";
 hash="c1bd0883c69fe968d949933b0e0272ce07e91424b8357f62b7ee4ba63d63d9f4" />
+  <delta serial="50465" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50465/delta.xml";
 hash="3f420ccdc0efe1086ec4950c76396cfd2c47875a9a6da4d5eae914af60876ba5" />
+  <delta serial="50464" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50464/delta.xml";
 hash="0e2a66306ce1fe54f7b29ea2b33c29bb42c75d0e085386f20a05312fce7bdcff" />
+  <delta serial="50463" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50463/delta.xml";
 hash="e60d42e6886464763f02d5b025015872357392b6769a69ccf3aa6e61fa013276" />
+  <delta serial="50462" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50462/delta.xml";
 hash="9e8b3371c693c0893f1edbdb055a6b81de26aceb82f57af728ac7c1954c9d5a1" />
+  <delta serial="50461" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50461/delta.xml";
 hash="6ecd5a432c927c8e491f56abcf0eee37ab77a620a8b98672c80f07777175c824" />
+  <delta serial="50460" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50460/delta.xml";
 hash="5455227b1ec9b681d75dcc2427c6762c6e9a58249112e815142d321e1c465eff" />
+  <delta serial="50459" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50459/delta.xml";
 hash="c13c22ef00f54d628e58928411aa810e4044f08fe6b752adcb680c490807eac2" />
+  <delta serial="50458" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50458/delta.xml";
 hash="0a8ade6143f941d60b07a6638a3095101960dde1cb05243361ec8a1bbd3d61b8" />
+  <delta serial="50457" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50457/delta.xml";
 hash="e44bee224b87ae7cd52b9f9e87366e47aec0f8d9f337f49963444b99f4752a3a" />
+  <delta serial="50456" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50456/delta.xml";
 hash="b1a0bb86fdbfded50ed63272a904c99f368cf30872be8f4ff392e2a02cd95da4" />
+  <delta serial="50455" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50455/delta.xml";
 hash="1b976ee80548f199f0e18600ba4bae12ca3099294c7fbd78f25fe493d550341d" />
+  <delta serial="50454" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50454/delta.xml";
 hash="9b83636b38eea408454b44d886d42d7b9ff8e531c6630aa733262f8b29955ac0" />
+  <delta serial="50453" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50453/delta.xml";
 hash="bad9175c574653bdd0c89c5d1acec0e8d529613f570787283e81d467c522b581" />
+  <delta serial="50452" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50452/delta.xml";
 hash="914f4248a268fdec1920bffa407e4473c0c81e834d4389f07285e8d60d05bae9" />
+  <delta serial="50451" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50451/delta.xml";
 hash="e968914f508d6e6a36656cd715905e819ff0fa9d35bf5243d7bf884fb1b8818b" />
+  <delta serial="50450" 
uri="https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50450/delta.xml";
 hash="968b9b9e4236309c1219bb4dc8a71dcf7492103309c8d28ec95f1904b54fc58c" />
+</notification>
Index: rrdp/rrdp-r1.out
===================================================================
RCS file: rrdp/rrdp-r1.out
diff -N rrdp/rrdp-r1.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r1.out    24 Nov 2021 13:26:12 -0000
@@ -0,0 +1,4 @@
+test-rrdp: session_id: 8fe05c2e-047d-49e7-8398-cd4250a572b1, serial: 50550
+test-rrdp: snapshot_uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50550/snapshot.xml
+test-rrdp: snapshot hash: 
AE52F78BCB1B258A1DA924122971B0FDDFCE4C01B2B2DBA59C9B28EF1D94C02B
+OK
Index: rrdp/rrdp-r2.out
===================================================================
RCS file: rrdp/rrdp-r2.out
diff -N rrdp/rrdp-r2.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r2.out    24 Nov 2021 13:26:47 -0000
@@ -0,0 +1,104 @@
+test-rrdp: session_id: 8fe05c2e-047d-49e7-8398-cd4250a572b1, serial: 50550
+test-rrdp: snapshot_uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50550/snapshot.xml
+test-rrdp: snapshot hash: 
AE52F78BCB1B258A1DA924122971B0FDDFCE4C01B2B2DBA59C9B28EF1D94C02B
+test-rrdp: delta serial 50501 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50501/delta.xml
+test-rrdp: delta hash: 
40521FB9995ACA55D39360985C336619E08072A6AFFFCE97753E701A0D65D57B
+test-rrdp: delta serial 50502 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50502/delta.xml
+test-rrdp: delta hash: 
1036A71DF3129449E1403F3BEACFA427D59659FAC0B45C9E3DFFDBEBDB17D722
+test-rrdp: delta serial 50503 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50503/delta.xml
+test-rrdp: delta hash: 
E8DE1E10D05734BB9EFE65202B96023D3770F0B8FD457249676214612F4685B3
+test-rrdp: delta serial 50504 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50504/delta.xml
+test-rrdp: delta hash: 
CDCD746257A0F35BBCE0B1832C2DF4CF25751C281FDE23CAE8B17F607F1E82E1
+test-rrdp: delta serial 50505 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50505/delta.xml
+test-rrdp: delta hash: 
50C95FF4B63C03836FE291AFCA61FDA25C96BC0D280E421DDDC307E591FE8F81
+test-rrdp: delta serial 50506 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50506/delta.xml
+test-rrdp: delta hash: 
7C9C62DA4DD109E5151FCC0EA366DB343E35AB7F2A62D81D6C54EEE1E1FD72B1
+test-rrdp: delta serial 50507 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50507/delta.xml
+test-rrdp: delta hash: 
20360D8B294E3A6E62DE2AF58955AFE601507231E6937B375DE0C047A69CD9C1
+test-rrdp: delta serial 50508 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50508/delta.xml
+test-rrdp: delta hash: 
B4AE54C1207EC9A12A5E20091004830FB3D146F62B2396A6C3DE2AB0795ED2E7
+test-rrdp: delta serial 50509 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50509/delta.xml
+test-rrdp: delta hash: 
FCD7FE3D59F4B8DAA40920C7B3C5C4D149660AFD35DFCA53EDE7671919802CFB
+test-rrdp: delta serial 50510 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50510/delta.xml
+test-rrdp: delta hash: 
6D8D296CA28CA390B761D25BDB69EAA0086242911A90965C7436D602B4190B66
+test-rrdp: delta serial 50511 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50511/delta.xml
+test-rrdp: delta hash: 
9015620F5B20DBA3DEDC63F90C0CFAB5DD3816217976C6DCC4A68D5555649DC9
+test-rrdp: delta serial 50512 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50512/delta.xml
+test-rrdp: delta hash: 
155C0F96DE414AC4CA7D60DE7B1ACBECDF5B192CCAE6AF3C78F06FFF212138F4
+test-rrdp: delta serial 50513 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50513/delta.xml
+test-rrdp: delta hash: 
85DAF825C8335D8F59FD6B32B25F9B7152F89038B74ED3366A6EA59BD2F4E600
+test-rrdp: delta serial 50514 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50514/delta.xml
+test-rrdp: delta hash: 
70D288EC67C4B47B6DC177BFB735DDD6542B2A9E484BAE770534A83FD515CE8B
+test-rrdp: delta serial 50515 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50515/delta.xml
+test-rrdp: delta hash: 
BD258657DE4C220AD500CC0ECE87CFFCAD813ECD30A63DEFF28086A5F2DCBB5F
+test-rrdp: delta serial 50516 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50516/delta.xml
+test-rrdp: delta hash: 
FADEE13B825F713E931EDADEDC79B1F86F4E501EF6C153C0F5FD4401C73B3065
+test-rrdp: delta serial 50517 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50517/delta.xml
+test-rrdp: delta hash: 
EAC5270A5109E95683EB73153E7F5E081F6DA473048782CE4E0E708AD2264B3A
+test-rrdp: delta serial 50518 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50518/delta.xml
+test-rrdp: delta hash: 
30A580DD74F8F5CF1BF83BC8643171A09482FB401E3F2F0443934EE675CA8107
+test-rrdp: delta serial 50519 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50519/delta.xml
+test-rrdp: delta hash: 
0C07702BAEE536F54F5A35BC481C422C170974DCC2BD4F99E4F58028901B3A52
+test-rrdp: delta serial 50520 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50520/delta.xml
+test-rrdp: delta hash: 
AB32D797DFA4D0490888D129BA275F9C4A816F409B5D99DBA76C07AB14BA3A2B
+test-rrdp: delta serial 50521 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50521/delta.xml
+test-rrdp: delta hash: 
321D3C439DC175974842A52D936EC13FC6A73912F75E6AE66D99B9EAAC09E84D
+test-rrdp: delta serial 50522 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50522/delta.xml
+test-rrdp: delta hash: 
AA249C432D2EAEFF266B3A875C1CBF721491C10776A28D62CD5CF0CCE891E834
+test-rrdp: delta serial 50523 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50523/delta.xml
+test-rrdp: delta hash: 
ABD00B8AEB0555A965F83EA89853E5A8179D5F00E341C7F958E95C3BD6DF8807
+test-rrdp: delta serial 50524 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50524/delta.xml
+test-rrdp: delta hash: 
6BD5645CDA5490EB42737ED94F249C9166F626231B5315C1205C4E1D8E7FD409
+test-rrdp: delta serial 50525 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50525/delta.xml
+test-rrdp: delta hash: 
2660598AAFB968737D8A81F823D490C7157F5A6EE72EF7F2DEF8176095CB96BE
+test-rrdp: delta serial 50526 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50526/delta.xml
+test-rrdp: delta hash: 
E615ED42AC32529C7DFE7189F8DECA1E7EC7C4D79C03C50BD51488C7381610BB
+test-rrdp: delta serial 50527 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50527/delta.xml
+test-rrdp: delta hash: 
FDC9EB4E70A5F55B310015936D65A3878665D9C03631DA4B66069F4F1D812D5F
+test-rrdp: delta serial 50528 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50528/delta.xml
+test-rrdp: delta hash: 
7CA7B7BBEAF412C492B4781D23F3CF3DE1CE333EF569377B57719C58195CBA6F
+test-rrdp: delta serial 50529 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50529/delta.xml
+test-rrdp: delta hash: 
AFBE35FAC90ED1F9FFBC9C00EF9F264E52C3CE5A963CB71D8493FEC0970C6ADE
+test-rrdp: delta serial 50530 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50530/delta.xml
+test-rrdp: delta hash: 
99D665BC23A27A011684985A3F986C4A8D99EF2C5AA700DDCCA48C32D68D1DA1
+test-rrdp: delta serial 50531 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50531/delta.xml
+test-rrdp: delta hash: 
8E18D6C89B7129C2450EFB4A36FEE9085EE5ABD02F0A9AADBCC2A6F4AFD1369E
+test-rrdp: delta serial 50532 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50532/delta.xml
+test-rrdp: delta hash: 
26CB2AF7EF8EF4A6568832FEECCF45193503E2D5AA60EDC36F04928A91448228
+test-rrdp: delta serial 50533 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50533/delta.xml
+test-rrdp: delta hash: 
E45DCDAB3AC49D0F6AF740B6C42B2C48FAF539BB1BCBE6AC0EAC9E95028D1D7D
+test-rrdp: delta serial 50534 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50534/delta.xml
+test-rrdp: delta hash: 
19EFF9063C421788FFA4859842CF05366862A78C9DD40D926091A6E9E6F9BB1B
+test-rrdp: delta serial 50535 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50535/delta.xml
+test-rrdp: delta hash: 
A749FF4E39B607F65B7D2D2B4BAABABA0198C47EA02C9EF8A8FC36529102BC3C
+test-rrdp: delta serial 50536 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50536/delta.xml
+test-rrdp: delta hash: 
59FBB6D36742C51219CD1A4EF064D6A54531B82CB8DB592A4FAD9D89E867353F
+test-rrdp: delta serial 50537 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50537/delta.xml
+test-rrdp: delta hash: 
13BE78BA673B89D9D8004A1C39E82F667219610371F4ECD64C3C318636419608
+test-rrdp: delta serial 50538 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50538/delta.xml
+test-rrdp: delta hash: 
F5B6E9E253597F0FA8C023278D9D77E75B220E1CEBAE597E906A7D6B0AB07398
+test-rrdp: delta serial 50539 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50539/delta.xml
+test-rrdp: delta hash: 
397264BFBD7D466F9BDDEFE5139BA9CE392FAFE24C95F80BE00F27F40246919B
+test-rrdp: delta serial 50540 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50540/delta.xml
+test-rrdp: delta hash: 
A64882D43F76933BFBBA07E96A3982A6B1B15BD261F4F78FFBF19AD4C9FAFDED
+test-rrdp: delta serial 50541 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50541/delta.xml
+test-rrdp: delta hash: 
D9622F90E5850F38CF2ECBCD5714A9F5F699D8D0BA509F41DAA56DFEEF83CD85
+test-rrdp: delta serial 50542 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50542/delta.xml
+test-rrdp: delta hash: 
BEE7A540AA6FFF7C2C00D559B7E9DE6973D52FFA7121030BA534DB5F18A23FA6
+test-rrdp: delta serial 50543 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50543/delta.xml
+test-rrdp: delta hash: 
7626BD5FE4528B3810806EEDE9698F0C835657024717C116024B010D0239AE58
+test-rrdp: delta serial 50544 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50544/delta.xml
+test-rrdp: delta hash: 
B4B36D43E649CA7B919AD5754C745A8B50A594F0250E4617C7756B9AE008EAD0
+test-rrdp: delta serial 50545 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50545/delta.xml
+test-rrdp: delta hash: 
12985397A67DAED8F64EE8B653A60A02B121632169247BB95A9D3BEB0F897CA1
+test-rrdp: delta serial 50546 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50546/delta.xml
+test-rrdp: delta hash: 
67DCB6751E0E31586603244CD90FC2F8A3E7EA8132AF13D95962C59898F11B24
+test-rrdp: delta serial 50547 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50547/delta.xml
+test-rrdp: delta hash: 
FB94B545FC52CC7CA91A42BC09AE5F89DCF7BCD758FE4BDED47F565CF991DD64
+test-rrdp: delta serial 50548 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50548/delta.xml
+test-rrdp: delta hash: 
8F022550ECEE3CD13EE209C1A8FCD5E99E449295AE9D53ADCA1BA3231718B36C
+test-rrdp: delta serial 50549 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50549/delta.xml
+test-rrdp: delta hash: 
0F7808520C7D54E6F0CBD37BBF391E9028FDC62BDC0F2E90D986479B3B11F8AA
+test-rrdp: delta serial 50550 uri: 
https://rpki.example.com/8fe05c2e-047d-49e7-8398-cd4250a572b1/50550/delta.xml
+test-rrdp: delta hash: 
E99CC80CB36259E73EC1FFED5A0CFBAF27D345800DA18147DBDF8316B28E027C
+OK
Index: rrdp/rrdp-r3.out
===================================================================
RCS file: rrdp/rrdp-r3.out
diff -N rrdp/rrdp-r3.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r3.out    24 Nov 2021 13:44:08 -0000
@@ -0,0 +1,18 @@
+test-rrdp: type: delete
+test-rrdp: uri: 
rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/gSk6an-JyWyxV5LYX0AB2BOJb7I.roa
+test-rrdp: data: 
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+test-rrdp: hash: 
6F19C7760D83B12E259F35924F40BE76C6A9C963DB23A692CE192C2FAEF94271
+test-rrdp: type: update
+test-rrdp: uri: 
rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/nBETmuVT1txzB4h_Rn5CB4gARes.crl
+test-rrdp: data: 
27b240ccb4adefc4438a0b0c94cf995fed9e1a227987e31b7fde9b67209e04c7
+test-rrdp: hash: 
9AAF87B277EFB7E47AB00A4A86CAD1CD132D8A06A782D9B54202C4BFFEDE347B
+test-rrdp: type: update
+test-rrdp: uri: 
rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/nBETmuVT1txzB4h_Rn5CB4gARes.mft
+test-rrdp: data: 
9148c46222a49fc9b18607474d549ec126d2f4dbf4fa4fe2007588b9a958d29d
+test-rrdp: hash: 
B45FA2DAAEEDA2B37BFF1A039ADA2C299DC6ACE28CA16DBC22664E3D89B8D556
+test-rrdp: type: add
+test-rrdp: uri: 
rsync://rpki.example.com/repository/DEFAULT/95/d58727-d970-44d9-abdc-93b3ad12d2f3/1/x7OkhL6fs-x6CQ4Kqd5jOkkB4pY.roa
+test-rrdp: data: 
28b761092849ea963824de57bd8b0bef1de6f467b91af51c2d847fa5ae90c6dc
+test-rrdp: version: 1
+test-rrdp: session_id: 9b3f7e31-4979-ef8c-d818-73e4dadc3e6b serial: 13755
+OK
Index: rrdp/rrdp-r4.out
===================================================================
RCS file: rrdp/rrdp-r4.out
diff -N rrdp/rrdp-r4.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r4.out    24 Nov 2021 14:04:25 -0000
@@ -0,0 +1,13 @@
+test-rrdp: type: add
+test-rrdp: uri: 
rsync://rpki.example.com/rpki/TA/XUJQ4tgdREjYop786R0p_wdeyeI.cer
+test-rrdp: data: 
9dbea4222e3b687772763b21da1118d858b1271c989f10adb3b2611945609dbc
+test-rrdp: type: add
+test-rrdp: uri: 
rsync://rpki.example.com/rpki/Sobornost-RIPE/Sobornost-OP/fxYnc2Mg1Fnou14i_Qm39uMR1bA.crl
+test-rrdp: data: 
831c1b054aaff13240df899e5048b67c227689d5e5ecdf7d38f9a8e4603beb4b
+test-rrdp: type: add
+test-rrdp: uri: 
rsync://rpki.example.com/rpki/uplift/IBfMWA0nPFS6MGTNLNavObgEuIc.mft
+test-rrdp: data: 
61bbdc519a39a870f2169d474d957713e611662c44daa7f0b9e3d922f93b0312
+test-rrdp: scope: 3
+test-rrdp: version: 1
+test-rrdp: session_id: 7e7d2563-5bbb-40b0-8723-6a2e90c85d9e serial: 28483
+OK
Index: rrdp/rrdp-r5.out
===================================================================
RCS file: rrdp/rrdp-r5.out
diff -N rrdp/rrdp-r5.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r5.out    24 Nov 2021 14:01:19 -0000
@@ -0,0 +1,2 @@
+test-rrdp: parse failed - DOCTYPE not allowed
+test-rrdp: stdin: parse error at line 2: parsing aborted
Index: rrdp/rrdp-r6.out
===================================================================
RCS file: rrdp/rrdp-r6.out
diff -N rrdp/rrdp-r6.out
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/rrdp-r6.out    24 Nov 2021 14:01:19 -0000
@@ -0,0 +1,2 @@
+test-rrdp: parse failed - DOCTYPE not allowed
+test-rrdp: stdin: parse error at line 2: parsing aborted
Index: rrdp/snapshot.xml
===================================================================
RCS file: rrdp/snapshot.xml
diff -N rrdp/snapshot.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/snapshot.xml   24 Nov 2021 14:04:01 -0000
@@ -0,0 +1,80 @@
+<snapshot xmlns="http://www.ripe.net/rpki/rrdp"; serial="28483" version="1" 
session_id="7e7d2563-5bbb-40b0-8723-6a2e90c85d9e">
+<publish xmlns="http://www.ripe.net/rpki/rrdp"; 
uri="rsync://rpki.example.com/rpki/TA/XUJQ4tgdREjYop786R0p_wdeyeI.cer">
+MIIDaDCCAlCgAwIBAgICBa8wDQYJKoZIhvcNAQELBQAwMzExMC8GA1UEAxMoNkFF
+NTA5NDE3OTBDMTQwN0FCMzdBQ0Y4NzNCQTFCNzA1NDMyMTQwRDAeFw0yMTEwMTEy
+MDQxMzFaFw0yMjEwMTEyMDQxMzFaMC0xGDAWBgNVBAMTD1JPVVRFUi0wMDAwM2Nj
+YTERMA8GA1UEBRMIMDAwMDAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASA
+VyND+D/8sBB6sAfYymn4a5ygMAYFuEioPffA0+xfGcAZv6a1ntdCtU70NDpSUBKG
+2KDn5B8QqlO0WCKp+IAVo4IBVTCCAVEwHQYDVR0OBBYEFF1CUOLYHURI2KKe/Okd
+Kf8HXsniMB8GA1UdIwQYMBaAFGrlCUF5DBQHqzes+HO6G3BUMhQNMBgGA1UdIAEB
+/wQOMAwwCgYIKwYBBQUHDgIwVAYDVR0fBE0wSzBJoEegRYZDcnN5bmM6Ly9jaGxv
+ZS5zb2Jvcm5vc3QubmV0L3Jwa2kvVEEvYXVVSlFYa01GQWVyTjZ6NGM3b2JjRlF5
+RkEwLmNybDBfBggrBgEFBQcBAQRTMFEwTwYIKwYBBQUHMAKGQ3JzeW5jOi8vY2hs
+b2Uuc29ib3Jub3N0Lm5ldC9ycGtpL1RBL2F1VUpRWGtNRkFlck42ejRjN29iY0ZR
+eUZBMC5jZXIwDgYDVR0PAQH/BAQDAgeAMBkGCCsGAQUFBwEIAQH/BAowCKAGMAQC
+AjzKMBMGA1UdJQQMMAoGCCsGAQUFBwMeMA0GCSqGSIb3DQEBCwUAA4IBAQBEMMvm
+OwAmPw081LOBQk5Qvpx6jKQumbdErbyz+UM86wuUpriZv34TQkqOQAg+uSCAeAy8
+LGpyep4fkfUfPjCgmOQHOiVJUcLkYCYmBsgUk9KWHPLR7YmCKEljrOwpNDF2HI/T
+obeYKIrxJIJ+vGs+5st3frftdBWNbCaY7dxjD8NCSjVF3Y3JyCqe4qhot93ghs4/
+SEUmJAdRUIxZcZH1ZAv3N0mxP3PyD0n1jrJ/dMdLC4FmDEJYj6nbxe8Kxu6wXE+O
+3pWHyW37+4ozaVranGlDFn+K31AonRw384RURKEf9ZexTRheS/BqpWEPVOtJjxjH
+l0LnExuGWTxZ6mos
+</publish>
+<publish xmlns="http://www.ripe.net/rpki/rrdp"; 
uri="rsync://rpki.example.com/rpki/Sobornost-RIPE/Sobornost-OP/fxYnc2Mg1Fnou14i_Qm39uMR1bA.crl">
+MIIBrTCBlgIBATANBgkqhkiG9w0BAQsFADAzMTEwLwYDVQQDEyg3RjE2Mjc3MzYz
+MjBENDU5RThCQjVFMjJGRDA5QjdGNkUzMTFENUIwFw0yMDEyMjgyMDAyMjlaFw0y
+MDEyMjkwMjAyMjlaoC8wLTAfBgNVHSMEGDAWgBR/FidzYyDUWei7XiL9Cbf24xHV
+sDAKBgNVHRQEAwIBAzANBgkqhkiG9w0BAQsFAAOCAQEAYSjbe7pERFgmJMdOpHsr
+DbcJIb9xxd/7EtWb6gjcoxCnxiiSx65sOJ4y3Sb51U8eJgFMvrWzEGJx1aOEcQ0e
+CSh1jByVbphyMu4+y4bIUt459dkvrE2msOHcGUGMrqTX/4uKwLwenDArYFD5ar/W
+tWSyyGI6ra3zRRCKGzqbttm91qBNjKBFSRsZzZibxWZKeOlzVRLZPz9tyh0cg7K5
+rdpHQQ2Grf5bVpIUDgN9N01uYb81jQGOZimCMZo2sC3HFfX3tN0KriB4YU5JdUs9
+76z8WV7L0irVxkokxgpxBhodt46JH/PmeIFbQpX23B9aeeGdSWpRHTaU1pYESdIp
+6g==
+</publish>
+<publish xmlns="http://www.ripe.net/rpki/rrdp"; 
uri="rsync://rpki.example.com/rpki/uplift/IBfMWA0nPFS6MGTNLNavObgEuIc.mft">
+MIIH8AYJKoZIhvcNAQcCoIIH4TCCB90CAQMxDTALBglghkgBZQMEAgEwggEfBgsq
+hkiG9w0BCRABGqCCAQ4EggEKMIIBBgICBb8YDzIwMjExMTI0MTAxMjEyWhgPMjAy
+MTExMjQxNjEyMTJaBglghkgBZQMEAgEwgdIwRBYfN2JWbmtaTF96X251ZzNtZUhM
+UnVFdmllNkRFLnJvYQMhAHiD6NgwQsIVGC2zWqIka9ykfLX/ROIAbEaJplrlulMB
+MEQWH0lCZk1XQTBuUEZTNk1HVE5MTmF2T2JnRXVJYy5jcmwDIQCcN0Fc02sS0g4e
+yRbcYwgZsUYzShvz434HCvnXFqxbOjBEFh9OWGNYY3Z1ZnhhejdVS2ozVGVpVG1i
+QXVhbDQucm9hAyEATn49/cJO4lEGWuy166O5hKaAOWvY7uQZgX8Pb914jCOgggT2
+MIIE8jCCA9qgAwIBAgICBcMwDQYJKoZIhvcNAQELBQAwMzExMC8GA1UEAxMoMjAx
+N2NjNTgwZDI3M2M1NGJhMzA2NGNkMmNkNmFmMzliODA0Yjg4NzAeFw0yMTExMjQx
+MDEyMTJaFw0yMjA3MDEwMDAwMDBaMDMxMTAvBgNVBAMTKDRFMTc3NDdBRkYxOTg2
+QkY3QkJFNzgzMkYzMDE1QzM3MjUwNTdDMjkwggEiMA0GCSqGSIb3DQEBAQUAA4IB
+DwAwggEKAoIBAQDLBJFoJXpJo0S+F8Lfgdbem5CXRNDP6yrd1oqqZDRiwe5/Az1u
+qx13PrtHvEeyJ0T1JEQfo0O/nRofmGXyNhmCsAOFb2+BlXy/BaKiM28l6DYRZM2v
+AAEn0sJibjtA3npyBfoW+GKC7chNXDTJd0c2AyX8FO8bgZge26weKuyvP2xIgmgR
+LcegEQq7JVls5a8Bl/GdNEIpX/PKsjmxVBhqXuIQ5eJbfLllwT0jkBnaqAWj+Rz0
+0gqTbJ2T8lXhDM43llPkxu3wF2IFLhugIS+oGObo2+fQhkPzwzcHGfUxbKgLgJpx
+ZpgfFjCFLjC61sw+9fyFRnSa/U8zZEDgOMPvAgMBAAGjggIOMIICCjAdBgNVHQ4E
+FgQUThd0ev8Zhr97vngy8wFcNyUFfCkwHwYDVR0jBBgwFoAUIBfMWA0nPFS6MGTN
+LNavObgEuIcwGAYDVR0gAQH/BA4wDDAKBggrBgEFBQcOAjBYBgNVHR8EUTBPME2g
+S6BJhkdyc3luYzovL2NobG9lLnNvYm9ybm9zdC5uZXQvcnBraS91cGxpZnQvSUJm
+TVdBMG5QRlM2TUdUTkxOYXZPYmdFdUljLmNybDBkBggrBgEFBQcBAQRYMFYwVAYI
+KwYBBQUHMAKGSHJzeW5jOi8vcnBraS5yaXBlLm5ldC9yZXBvc2l0b3J5L0RFRkFV
+TFQvSUJmTVdBMG5QRlM2TUdUTkxOYXZPYmdFdUljLmNlcjAOBgNVHQ8BAf8EBAMC
+B4AwgaMGCCsGAQUFBwELBIGWMIGTMFMGCCsGAQUFBzALhkdyc3luYzovL2NobG9l
+LnNvYm9ybm9zdC5uZXQvcnBraS91cGxpZnQvSUJmTVdBMG5QRlM2TUdUTkxOYXZP
+YmdFdUljLm1mdDA8BggrBgEFBQcwDYYwaHR0cHM6Ly9jaGxvZS5zb2Jvcm5vc3Qu
+bmV0L3Jwa2kvbmV3cy1wdWJsaWMueG1sMBUGCCsGAQUFBwEIAQH/BAYwBKACBQAw
+IQYIKwYBBQUHAQcBAf8EEjAQMAYEAgABBQAwBgQCAAIFADANBgkqhkiG9w0BAQsF
+AAOCAQEAjjYeUpH9tIXtkV1f2fN76HLFFaiCEilhMwkNPzmVePs3cRRGJg+qhgSz
+gLP2yngSTKX/zGUM1eQU+BMJHyhi4XOfD3Bdr7rkWq47UZSOn5N7mv/yA2UYx6gb
+dOToFwTgoyGAE0Zjxep8c2v33RUYwBaFZxuPqZYKsm1wbvVKvn+GiroPq3QEFdHr
+welCQ9u1//RN1BgXP56tBDhEI2xXDN6hOfkGs4xz+WqQnGlhU3KFAo0QR3/+EIXZ
+pB/kgkTWBFO7MF2B645GFa4VnQy9t7prwKUfgne8mFis5NmzU8rGNXfSzpSoelyU
+4xsKoY+D7DSE24Kk1vYsMl31VhtbbTGCAaowggGmAgEDgBROF3R6/xmGv3u+eDLz
+AVw3JQV8KTALBglghkgBZQMEAgGgazAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQ
+ARowHAYJKoZIhvcNAQkFMQ8XDTIxMTEyNDEwMTIxMlowLwYJKoZIhvcNAQkEMSIE
+IJeKYLhddBj4+sfXo9frzQq8hi7d0FXA+3WR7AAsv2OuMA0GCSqGSIb3DQEBAQUA
+BIIBAJAgvliloHtLKq1cBGWgsxY/sIfjB06P14Ic8nDQkYtZWVXeewXUOxbbPpIG
+PlHMOe2rYV6AaeupErXOepC0DT+gFlKcDPEv+MW8mOU9gxV7i1dq6PHLOiYiKzoh
+R8/CQhKRHgCZHCm3CaaLIdZmQvDOQaXEAIJf2vguGMPqHG7AzVkHOQsWrQsoFWJs
+w5J/PtrCFJMMAc6/5dxKhEUy5yhZdBiJ0TmmyVeHYA2gYZ8UD3p0YyVKB/UZp4wc
+KmpiFkpRuvQmscZDqmOU5C6aDitOkHj3EwEoULx0qMGnBB7VaDhxPDGcL2oFn4bM
+kj4IN2Oc7BuCKj9ruDmULONsAGo=
+</publish>
+</snapshot>
Index: rrdp/xxe.xml
===================================================================
RCS file: rrdp/xxe.xml
diff -N rrdp/xxe.xml
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ rrdp/xxe.xml        24 Nov 2021 13:58:07 -0000
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<!DOCTYPE foo [  
+<!ELEMENT foo ANY >
+<!ENTITY xxe SYSTEM "file:///etc/passwd" >]><notification version="1" 
session_id="9b3f7e31-4979-ef8c-d818-73e4dadc3e6b" serial="13756" 
xmlns="http://www.ripe.net/rpki/rrdp";>&xxe;</notification>

Reply via email to