ud3tn/test/unit/bundle7Data.c
Georg Alexander Murzik 298431c68f Insert SPDX license expression comments into our .c, .h, .py, and .sh code
ud3tn is available under multiple licenses and we want to reflect this in
our source code. But which license information should appear first and how
can we manage this efficiently in the future? The Linux Kernel uses SPDX
expressions instead of boilerplate sections. This seems to be a great
approach, so we do the same here.

Signed-off-by: Georg Alexander Murzik <georg.murzik@d3tn.com>
2022-02-20 16:24:38 +01:00

168 lines
5.4 KiB
C

// SPDX-License-Identifier: BSD-3-Clause OR Apache-2.0
#include <inttypes.h>
#include <stddef.h>
// -------------------
// Simple BPbis bundle
// -------------------
//
// A CBOR-encoded BPbis bundle with all extension blocks specified in BPbis.
const uint8_t cbor_simple_bundle[] = {
0x9f, // CBOR indefinite array
// Primary block
//
// [
// 7, # Protocol version
// 131076, # Bundle Processing Flags:
// # - REPORT_DELIVERY
// # - MUST_NOT_BE_FRAGMENTED
// 0, # CRC Type (None)
// [1, "GS2"], # Destination EID "dtn:GS2"
// [2, [243, 350]], # Source EID "ipn:243.350"
// [1, 0], # Report-to EID "dtn:none"
// [658489863000, 0],# DTN Time "2020-11-12T09:51:03", sequence number
// 86400 # Lifetime
// ]
0x88, 0x07, 0x1a, 0x00, 0x02, 0x00, 0x04, 0x00, 0x82, 0x01, 0x63, 0x47,
0x53, 0x32, 0x82, 0x02, 0x82, 0x18, 0xf3, 0x19, 0x01, 0x5e, 0x82, 0x01,
0x00, 0x82, 0x1b, 0x00, 0x00, 0x00, 0x99, 0x51, 0x0d, 0xeb, 0x58, 0x00,
0x1a, 0x00, 0x01, 0x51, 0x80,
// Previous Node Block
//
// [7, 2, 0, 0, cbor_serialize([1, "GS4"])]
0x85, 0x06, 0x02, 0x00, 0x00, 0x46,
0x82, 0x01, 0x63, 0x47, 0x53, 0x34,
// Hop Count Block
//
// [9, 3, 0, 0, cbor_serialize([30, 0])]
0x85, 0x0a, 0x03, 0x00, 0x00, 0x44,
0x82, 0x18, 0x1e, 0x00,
// Bundle Age Block
//
// [8, 4, 0, 0, b"\0"]
0x85, 0x07, 0x04, 0x00, 0x00, 0x41,
0x00,
// Payload Block
//
// [1, 1, 0, 0, b'Hello world!']
0x85, 0x01, 0x01, 0x00, 0x00, 0x4c,
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21,
0xff, // CBOR "STOP"
};
const size_t len_simple_bundle = sizeof(cbor_simple_bundle);
// ------------
// CRC 16 AX.25
// ------------
//
// Bundle with CRC-16 checksum for the primary block
//
// - no bundle processing flags
// - no extension blocks
// - payload block with empty byte string and no block processing flags
//
// CBOR structure:
// [
// [7, 0, 1, [1, "GS2"], [1, 0], [1, 0], [0, 0], 86400, b"\x71\x23"],
// [1, 0, 0, 0, 1, b""]
// ]
const uint8_t cbor_crc16_primary_block[] = {
0x9f, 0x89, 0x07, 0x00, 0x01, 0x82, 0x01, 0x63, 0x47, 0x53, 0x32, 0x82,
0x01, 0x00, 0x82, 0x01, 0x00, 0x82, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x51,
0x80, 0x42, 0x71, 0x23, 0x85, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff,
};
const size_t len_crc16_primary_block = sizeof(cbor_crc16_primary_block);
// Bundle with CRC-16 checksum for the payload block
//
// - no bundle processing flags
// - no extension blocks
// - payload block with "Hello world" byte string and CRC 16 checksum and no
// block processing flags
//
// CBOR structure:
// [
// [7, 0, 0, [1, "GS2"], [1, 0], [1, 0], [0, 0], 86400],
// [1, 0, 0, 1, b"Hello world!", b"\x60\xd7"]
// ]
const uint8_t cbor_crc16_payload_block[] = {
0x9f, 0x88, 0x07, 0x00, 0x00, 0x82, 0x01, 0x63, 0x47, 0x53, 0x32, 0x82,
0x01, 0x00, 0x82, 0x01, 0x00, 0x82, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x51,
0x80, 0x86, 0x01, 0x00, 0x00, 0x01, 0x4c, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x42, 0x60, 0xd7, 0xff,
};
const size_t len_crc16_payload_block = sizeof(cbor_crc16_payload_block);
// ------------------------------
// CRC 32 Castagnoli Verification
// ------------------------------
//
// Bundle with CRC-32-C checksum for the primary block
//
// - no bundle processing flags
// - no extension blocks
// - payload block with empty byte string and no block processing flags
//
// CBOR structure:
// [
// [
// 7, 0, 2, [1, "GS2"], [1, 0], [1, 0], [0, 0], 86400,
// b"\x95\x42\xde\xfd"
// ],
// [1, 0, 0, 0, 1, b""]
// ]
const uint8_t cbor_crc32_primary_block[] = {
0x9f, 0x89, 0x07, 0x00, 0x02, 0x82, 0x01, 0x63, 0x47, 0x53, 0x32, 0x82,
0x01, 0x00, 0x82, 0x01, 0x00, 0x82, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x51,
0x80, 0x44, 0x95, 0x42, 0xde, 0xfd, 0x85, 0x01, 0x00, 0x00, 0x00, 0x40,
0xff,
};
const size_t len_crc32_primary_block = sizeof(cbor_crc32_primary_block);
// Bundle with CRC-32 checksum for the payload block
//
// - no bundle processing flags
// - no extension blocks
// - payload block with "Hello world" byte string and CRC 32 checksum and no
// block processing flags
//
// CBOR structure:
// [
// [7, 0, 0, [1, "GS2"], [1, 0], [1, 0], [0, 0], 86400],
// [1, 0, 0, 2, b"Hello world!", b"\xc3\xae\xc5\x52"]
// ]
const uint8_t cbor_crc32_payload_block[] = {
0x9f, 0x88, 0x07, 0x00, 0x00, 0x82, 0x01, 0x63, 0x47, 0x53, 0x32, 0x82,
0x01, 0x00, 0x82, 0x01, 0x00, 0x82, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x51,
0x80, 0x86, 0x01, 0x00, 0x00, 0x02, 0x4c, 0x48, 0x65, 0x6c, 0x6c, 0x6f,
0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x44, 0xc3, 0xae, 0xc5, 0x52,
0xff,
};
const size_t len_crc32_payload_block = sizeof(cbor_crc32_payload_block);
// Bundle with invalid CRC-16 X.25 checksum for the primary block
//
// - no bundle processing flags
// - no extension blocks
// - payload block with empty byte string and no block processing flags
//
// CBOR structure:
// [
// [7, 0, 1, [1, "GS2"], [1, 0], [1, 0], [0, 0], 86400, b"\x00\x00"],
// [1, 0, 0, 0, b""]
// ]
const uint8_t cbor_invalid_crc16[] = {
0x9f, 0x89, 0x07, 0x00, 0x01, 0x82, 0x01, 0x63, 0x47, 0x53, 0x32, 0x82,
0x01, 0x00, 0x82, 0x01, 0x00, 0x82, 0x00, 0x00, 0x1a, 0x00, 0x01, 0x51,
0x80, 0x42, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, 0x00, 0x40, 0xff,
};
const size_t len_invalid_crc16 = sizeof(cbor_invalid_crc16);