diff options
Diffstat (limited to 'src/lib/serdes-oep.c')
| -rw-r--r-- | src/lib/serdes-oep.c | 37 | 
1 files changed, 22 insertions, 15 deletions
diff --git a/src/lib/serdes-oep.c b/src/lib/serdes-oep.c index cae5c598..f5034a4a 100644 --- a/src/lib/serdes-oep.c +++ b/src/lib/serdes-oep.c @@ -26,12 +26,13 @@  #include <ouroboros/serdes-oep.h> -ssize_t enroll_req_ser(buffer_t buf) +ssize_t enroll_req_ser(const struct enroll_req * req, +                       buffer_t                  buf)  {          enroll_req_msg_t * msg;          ssize_t            sz; -        msg = enroll_req_s_to_msg(); +        msg = enroll_req_s_to_msg(req);          if (msg == NULL)                  goto fail_msg; @@ -46,24 +47,33 @@ ssize_t enroll_req_ser(buffer_t buf)          return sz;   fail_pack: -    enroll_req_msg__free_unpacked(msg, NULL); +        enroll_req_msg__free_unpacked(msg, NULL);   fail_msg:      return -1;  } -int enroll_req_des(const buffer_t buf) +int enroll_req_des(struct enroll_req * req, +                   const buffer_t      buf)  {          enroll_req_msg_t * msg;          msg = enroll_req_msg__unpack(NULL, buf.len, buf.data);          if (msg == NULL) -                return -1; +                goto fail_unpack; -        /* Nothing in request yet, if it unpacks, it's good. */ +        if (msg->id.len != ENROLL_ID_LEN) +                goto fail_id; + +        *req = enroll_req_msg_to_s(msg);          enroll_req_msg__free_unpacked(msg, NULL);          return 0; + + fail_id: +        enroll_req_msg__free_unpacked(msg, NULL); + fail_unpack: +        return -1;  }  ssize_t enroll_resp_ser(const struct enroll_resp * resp, @@ -80,9 +90,6 @@ ssize_t enroll_resp_ser(const struct enroll_resp * resp,          if (sz < 0 || (size_t) sz > buf.len)                  goto fail_pack; -        msg->t_sec = resp->t.tv_sec; -        msg->t_nsec = resp->t.tv_nsec; -          enroll_resp_msg__pack(msg, buf.data);          enroll_resp_msg__free_unpacked(msg, NULL); @@ -111,13 +118,13 @@ int enroll_resp_des(struct enroll_resp * resp,          return 0;  } -ssize_t enroll_ack_ser(const int response, -                       buffer_t  buf) +ssize_t enroll_ack_ser(const struct enroll_ack * ack, +                       buffer_t                  buf)  {          enroll_ack_msg_t * msg;          ssize_t            sz; -        msg = enroll_ack_s_to_msg(response); +        msg = enroll_ack_s_to_msg(ack);          if (msg == NULL)                  goto fail_msg; @@ -138,8 +145,8 @@ ssize_t enroll_ack_ser(const int response,  } -int enroll_ack_des(int *          response, -                   const buffer_t buf) +int enroll_ack_des(struct enroll_ack * ack, +                   const buffer_t      buf)  {          enroll_ack_msg_t * msg; @@ -147,7 +154,7 @@ int enroll_ack_des(int *          response,          if (msg == NULL)                  return -1; -        *response = enroll_ack_msg_to_s(msg); +        *ack = enroll_ack_msg_to_s(msg);          enroll_ack_msg__free_unpacked(msg, NULL);  | 
