blob: 5ebe3cd7d23347602f4b1d3b1faf6e34dc1e2404 [file] [log] [blame]
/*
* Copyright (c) 2021 Apple Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef RESOURCE_RECORD_BYTES_H
#define RESOURCE_RECORD_BYTES_H
#include "dns_common.h"
#include "dns_obj_crypto.h"
#define MAX_RDATA_LEN 2048
typedef struct expected_cname_result_s {
const uint8_t canonical_name[MAX_DOMAIN_NAME];
} expected_cname_result_t;
typedef struct expected_soa_result_s {
const uint32_t minimum_ttl;
} expected_soa_result_t;
typedef struct expected_srv_result_s {
uint16_t priority;
uint16_t weight;
uint16_t port;
const uint8_t target[MAX_DOMAIN_NAME];
} expected_srv_result_t;
typedef struct expected_ds_result_s {
const uint16_t key_tag;
const uint8_t algorithm;
const uint8_t digest_type;
const uint8_t digest[MAX_DIGEST_OUTPUT_SIZE];
const uint8_t digest_length;
const bool is_valid_for_dnssec;
} expected_ds_result_t;
typedef struct expected_nsec_result_s {
const uint8_t current_owner_name[MAX_DOMAIN_NAME];
const uint8_t next_owner_name[MAX_DOMAIN_NAME];
const uint16_t types_covered[UINT16_MAX];
} expected_nsec_result_t;
typedef struct expected_rrsig_result_s {
const uint16_t type_covered;
const uint8_t algorithm;
const uint8_t labels;
const uint32_t original_ttl;
const uint32_t signature_expiration;
const uint32_t signature_inception;
const uint16_t key_tag;
const uint8_t signer_name[MAX_DOMAIN_NAME];
const uint8_t signature[MAX_RDATA_LEN];
} expected_rrsig_result_t;
typedef struct expected_dnskey_result_s {
const uint16_t flags;
const uint8_t protocol;
const uint8_t algorithm;
const uint8_t public_key[MAX_PUBLIC_KEY_BYTES];
const uint16_t public_key_size;
const uint16_t key_tag;
const bool is_zone_key;
const bool is_secure_entry_point;
const bool has_supported_algorithm;
const bool is_valid_for_dnssec;
const uint16_t priority;
} expected_dnskey_result_t;
typedef struct expected_nsec3_result_s {
const uint8_t current_owner_name[MAX_DOMAIN_NAME];
const uint8_t hash_algorithm;
const uint8_t flags;
const uint16_t iterations;
const uint8_t salt_length;
const uint8_t salt[UINT8_MAX];
const uint8_t hash_length;
const uint8_t next_hashed_owner_name_in_binary[UINT8_MAX];
const uint8_t next_hashed_owner_name[MAX_DOMAIN_LABEL];
const uint16_t types_covered[UINT16_MAX];
} expected_nsec3_result_t;
typedef struct resource_record_bytes_s {
const uint8_t name[MAX_DOMAIN_NAME];
const uint16_t type;
const uint16_t class;
const uint16_t rdata_len;
const uint8_t rdata[MAX_RDATA_LEN];
union {
expected_cname_result_t cname;
expected_soa_result_t soa;
expected_srv_result_t srv;
expected_ds_result_t ds;
expected_nsec_result_t nsec;
expected_rrsig_result_t rrsig;
expected_dnskey_result_t dnskey;
expected_nsec3_result_t nsec3;
} expected_result_u;
} resource_record_bytes_t;
typedef struct resource_record_bytes_short_s {
const uint8_t name[MAX_DOMAIN_NAME];
const uint16_t class;
const uint16_t type;
const uint16_t rdata_len;
const uint8_t rdata[MAX_RDATA_LEN];
} resource_record_bytes_short_t;
#undef MAX_RDATA_LEN
#define NUM_OF_RR_RECORDS 22
extern const resource_record_bytes_t test_records[NUM_OF_RR_RECORDS];
#endif // RESOURCE_RECORD_BYTES_H