include serdes
include collections
Datagram Transport Layer Security (DTLS)
module coap_protection(tls_id, tls) = {
instance idx : unbounded_sequence
instance arr : array(idx,stream_data)
type header_info = struct {
version : stream_pos, # [1]
mtype : coap_type, # [2]
token_len : stream_pos, # [3]
code : coap_code, # [4]
message_id : wostream_posrd, # [5]
token : stream_data, # [6]
options : coap_option.arr, # [7]
payload : stream_data # [8]
}
action encrypt(c:tls_id,seq:pkt_num,pkt:stream_data) returns (pkt:stream_data)
action decrypt(c:tls_id,seq:pkt_num,pkt:stream_data) returns (res:tls.decrypt_result)
}
object coap_prot_ser = {}
<<< member
class `coap_prot_ser`;
>>>
<<< impl
class `coap_prot_ser` : public ivy_binary_ser_128 {
public:
void open_list(int) {
}
virtual void set(int128_t res) {
setn(res,1);
}
};
>>>
object coap_prot_deser = {}
<<< member
class `ping_prot_deser`;
>>>
<<< impl
class `coap_prot_deser` : public ivy_binary_deser_128 {
int data_remaining;
public:
coap_prot_deser(const std::vector<char> &inp) : ivy_binary_deser_128(inp) {
data_remaining = inp.size();
}
void get(int128_t &res) {
getn(res,1);
}
unsigned char peek(unsigned p) {
return more(p-pos+1) ? inp[p] : 0;
}
void open_list() {
return;
}
bool open_list_elem() {
bool res = data_remaining--> = 0;
return res;
}
void close_list_elem() {
}
};
>>>