Claudio Jeker([email protected]) on 2021.11.25 12:30:31 +0100:
> 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?

Thanks for implementing all that.

Looks good, put it in and see how it goes?

> -- 
> :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 <[email protected]>
> + * Copyright (c) 2021 Claudio Jeker <[email protected]>
> + *
> + * 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