ndn-lite
ndn-constants.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018-2019 Zhiyi Zhang, Tianyuan Yu, Xinyu Ma
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v3.0. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #ifndef NDN_CONSTANTS_H
10 #define NDN_CONSTANTS_H
11 
12 #include <stdint.h>
13 
14 // name and name component
15 #define NDN_NAME_COMPONENT_BUFFER_SIZE 36
16 #define NDN_NAME_COMPONENT_BLOCK_SIZE 38
17 #define NDN_NAME_COMPONENTS_SIZE 10
18 #define NDN_NAME_MAX_BLOCK_SIZE 384
19 #define NDN_FWD_INVALID_NAME_SIZE ((uint32_t)(-1))
20 #define NDN_FWD_INVALID_NAME_COMPONENT_SIZE ((uint32_t)(-1))
21 
22 // tlv
23 #define NDN_TLV_LENGTH_FIELD_MAX_SIZE 9
24 #define NDN_TLV_TYPE_FIELD_MAX_SIZE 1
25 
26 // interest
27 #define NDN_INTEREST_PARAMS_BUFFER_SIZE 248
28 #define NDN_INTEREST_PARAMS_BLOCK_SIZE (NDN_INTEREST_PARAMS_BUFFER_SIZE+10) //1byte[type] + 9byte[Max Len]
29 #define NDN_SIGNED_INTEREST_BE_SIGNED_MAX_SIZE 680
30 #define NDN_DEFAULT_INTEREST_LIFETIME 4000
31 
32 // data
33 #define NDN_CONTENT_BUFFER_SIZE 256
34 
35 // signature
36 #define NDN_SIGNATURE_BUFFER_SIZE 128
37 
38 // forwarder
39 typedef uint16_t ndn_table_id_t;
40 
41 #define NDN_INVALID_ID 0xFFFF
42 #define NDN_NAMETREE_MAX_SIZE 64
43 #define NDN_FIB_MAX_SIZE 20
44 #define NDN_PIT_MAX_SIZE 32
45 #define NDN_CS_MAX_SIZE 10
46 #define NDN_FACE_TABLE_MAX_SIZE 10
47 #define NDN_FACE_DEFAULT_COST 1
48 #define NDN_AES_BLOCK_SIZE 16
49 #define NDN_MAX_FACE_PER_PIT_ENTRY 3
50 
51 // fragmentation support
52 #define NDN_FRAG_HDR_LEN 3 // Size of the NDN L2 fragmentation header
53 #define NDN_FRAG_HB_MASK 0x80 // 1000 0000
54 #define NDN_FRAG_MF_MASK 0x20 // 0010 0000
55 #define NDN_FRAG_SEQ_MASK 0x1F // 0001 1111
56 #define NDN_FRAG_MAX_SEQ_NUM 30
57 #define NDN_FRAG_BUFFER_MAX 512
58 
59 // access control
60 #define NDN_APPSUPPORT_AC_EDK_SIZE 16
61 #define NDN_APPSUPPORT_AC_SALT_SIZE 16
62 #define NDN_APPSUPPORT_AC_KEY_LIST_SIZE 5
63 
64 // service discovery
65 #define NDN_APPSUPPORT_NEIGHBORS_SIZE 10
66 #define NDN_APPSUPPORT_PREFIXES_SIZE 10
67 #define NDN_APPSUPPORT_SERVICES_SIZE 10
68 #define NDN_APPSUPPORT_SERVICE_ID_SIZE 20
69 #define NDN_APPSUPPORT_INVALID_SERVICE_ID_SIZE ((uint32_t)(-1))
70 #define NDN_APPSUPPORT_SERVICE_UNDEFINED ((uint8_t)(-1))
71 #define NDN_APPSUPPORT_SERVICE_UNAVAILABLE 0
72 #define NDN_APPSUPPORT_SERVICE_AVAILABLE 1
73 #define NDN_APPSUPPORT_SERVICE_BUSY 2
74 #define NDN_APPSUPPORT_SERVICE_PERMISSION_DENIED 3
75 
76 // asn1 encoding
77 // the below constants are based on the number of bytes in the
78 // micro-ecc curve, which can be found here:
79 // https://github.com/kmackay/micro-ecc/blob/master/curve-specific.inc
80 // the maximum asn signature encoding size is found by taking the
81 // size of the raw signature (the number of bytes in its micro-ecc curve * 2)
82 // and then adding 8, to account for the ASN1.SEQUENCE tlv type and length fields,
83 // the two ASN1.INTEGER tlv type and length fields, and the two potential extra
84 // 0's if the integers of the signature containing a leading 1 bit
85 #define NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES 8
86 #define NDN_ASN1_ECDSA_ENCODING_MIN_EXTRA_BYTES 6
87 #define NDN_ASN1_ECDSA_SECP256R1_RAW_SIG_SIZE 64
88 #define NDN_ASN1_ECDSA_SECP256K1_RAW_SIG_SIZE 64
89 #define NDN_ASN1_ECDSA_SECP224R1_RAW_SIG_SIZE 56
90 #define NDN_ASN1_ECDSA_SECP192R1_RAW_SIG_SIZE 48
91 #define NDN_ASN1_ECDSA_SECP160R1_RAW_SIG_SIZE 40
92 #define NDN_ASN1_ECDSA_SECP256R1_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_SECP256R1_RAW_SIG_SIZE + \
93  NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
94 #define NDN_ASN1_ECDSA_SECP256K1_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_SECP256K1_RAW_SIG_SIZE + \
95  NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
96 #define NDN_ASN1_ECDSA_SECP224R1_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_SECP224R1_RAW_SIG_SIZE + \
97  NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
98 #define NDN_ASN1_ECDSA_SECP192R1_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_SECP192R1_RAW_SIG_SIZE + \
99 NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
100 #define NDN_ASN1_ECDSA_SECP160R1_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_SECP160R1_RAW_SIG_SIZE + \
101  NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
102 #define NDN_ASN1_ECDSA_MIN_RAW_SIG_SIZE (NDN_ASN1_ECDSA_SECP160R1_RAW_SIG_SIZE)
103 #define NDN_ASN1_ECDSA_MIN_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_MIN_RAW_SIG_SIZE + \
104  NDN_ASN1_ECDSA_ENCODING_MIN_EXTRA_BYTES)
105 #define NDN_ASN1_ECDSA_MAX_RAW_SIG_SIZE (NDN_ASN1_ECDSA_SECP256R1_RAW_SIG_SIZE)
106 #define NDN_ASN1_ECDSA_MAX_ENCODED_SIG_SIZE (NDN_ASN1_ECDSA_MAX_RAW_SIG_SIZE + \
107  NDN_ASN1_ECDSA_ENCODING_MAX_EXTRA_BYTES)
108 
109 // security
110 #define NDN_SEC_SIGNING_KEYS_SIZE 10
111 #define NDN_SEC_ENCRYPTION_KEYS_SIZE 5
112 #define NDN_SEC_INVALID_KEY_SIZE ((uint32_t)(-1))
113 #define NDN_SEC_INVALID_KEY_ID ((uint32_t)(-1))
114 #define NDN_SEC_SHA256_HASH_SIZE 32
115 #define NDN_SEC_AES_MIN_KEY_SIZE 16
116 #define NDN_SEC_AES_IV_LENGTH 16
117 #define NDN_SEC_ECC_SECP256R1_PUBLIC_KEY_SIZE 64
118 #define NDN_SEC_ECC_SECP256R1_PRIVATE_KEY_SIZE 32
119 #define NDN_SEC_ECC_SECP160R1_PUBLIC_KEY_SIZE 40
120 #define NDN_SEC_ECC_SECP160R1_PRIVATE_KEY_SIZE 21
121 #define NDN_SEC_ECC_MAX_PUBLIC_KEY_SIZE (NDN_SEC_ECC_SECP256R1_PUBLIC_KEY_SIZE)
122 #define NDN_SEC_ECC_MAX_PRIVATE_KEY_SIZE (NDN_SEC_ECC_SECP256R1_PRIVATE_KEY_SIZE)
123 #define NDN_SEC_ECC_MIN_PUBLIC_KEY_SIZE (NDN_SEC_ECC_SECP160R1_PUBLIC_KEY_SIZE)
124 #define NDN_SEC_ECC_MIN_PRIVATE_KEY_SIZE (NDN_SEC_ECC_SECP160R1_PRIVATE_KEY_SIZE)
125 #define NDN_SEC_MAX_SIG_SIZE (NDN_ASN1_ECDSA_MAX_ENCODED_SIG_SIZE)
126 #define NDN_SEC_MIN_SIG_SIZE (NDN_SEC_SHA256_HASH_SIZE)
127 
128 // schematized trust
129 #define NDN_TRUST_SCHEMA_MAX_SUBPATTERN_MATCHES 5
130 #define NDN_TRUST_SCHEMA_PATTERN_COMPONENTS_SIZE 10
131 #define NDN_TRUST_SCHEMA_PATTERN_COMPONENT_BUFFER_SIZE 50
132 #define NDN_TRUST_SCHEMA_PATTERN_COMPONENT_STRING_MAX_SIZE \
133  (NDN_TRUST_SCHEMA_PATTERN_COMPONENT_BUFFER_SIZE)
134 #define NDN_TRUST_SCHEMA_RULE_NAME_MAX_LENGTH \
135  (NDN_TRUST_SCHEMA_PATTERN_COMPONENT_BUFFER_SIZE - 1)
136 #define NDN_TRUST_SCHEMA_NO_TYPE 0x00
137 #define NDN_TRUST_SCHEMA_WILDCARD_NAME_COMPONENT_SEQUENCE 0x01
138 #define NDN_TRUST_SCHEMA_WILDCARD_NAME_COMPONENT 0x02
139 #define NDN_TRUST_SCHEMA_SINGLE_NAME_COMPONENT 0x03
140 #define NDN_TRUST_SCHEMA_SUBPATTERN_INDEX 0x04
141 #define NDN_TRUST_SCHEMA_WILDCARD_SPECIALIZER 0x05
142 #define NDN_TRUST_SCHEMA_RULE_REF 0x06
143 #define NDN_TRUST_SCHEMA_SUBPATTERN_BEGIN_ONLY 0x02
144 #define NDN_TRUST_SCHEMA_SUBPATTERN_END_ONLY 0x01
145 
146 #endif // NDN_CONSTANTS_H
uint16_t ndn_table_id_t
Definition: ndn-constants.h:39