Files

40 lines
717 B
C

#include "frame.h"
wsd_Frame *wsd_Frame_create()
{
wsd_Frame *frame = calloc(1, sizeof(wsd_Frame));
if (frame == NULL) return NULL;
frame->payload = NULL;
return frame;
}
void wsd_Frame_destroy(wsd_Frame *frame)
{
if (frame == NULL) return;
wsd_clear_pointer(free, frame->payload);
free(frame);
}
void wsd_Frame_mask(wsd_Frame *frame)
{
uint64_t i = 0;
if (!frame->masked) return;
for (i = 0; i < frame->length; i++) {
frame->payload[i] ^= frame->masking_key[i % 4];
}
}
uint64_t wsd_Frame_copy(wsd_Frame *frame, uint8_t *target, uint64_t offset)
{
uint64_t n = frame->length;
memcpy(target + offset, frame->payload, n);
return offset + n;
}