コード例 #1
0
/*---------------------------------------------------------------------------*/
void
adaptivesec_aead(uint8_t *key, int shall_encrypt, uint8_t *result, int forward)
{
  uint8_t nonce[CCM_STAR_NONCE_LENGTH];
  uint8_t *m;
  uint8_t m_len;
  uint8_t *a;
  uint8_t a_len;

  ccm_star_packetbuf_set_nonce(nonce, forward);
  a = packetbuf_hdrptr();
  if(shall_encrypt) {
#if AKES_NBR_WITH_GROUP_KEYS && PACKETBUF_WITH_UNENCRYPTED_BYTES
    a_len = packetbuf_hdrlen() + packetbuf_attr(PACKETBUF_ATTR_UNENCRYPTED_BYTES);
#else /* AKES_NBR_WITH_GROUP_KEYS && PACKETBUF_WITH_UNENCRYPTED_BYTES */
    a_len = packetbuf_hdrlen();
#endif /* AKES_NBR_WITH_GROUP_KEYS && PACKETBUF_WITH_UNENCRYPTED_BYTES */
    m = a + a_len;
    m_len = packetbuf_totlen() - a_len;
  } else {
    a_len = packetbuf_totlen();
    m = NULL;
    m_len = 0;
  }

  AES_128_GET_LOCK();
  ADAPTIVESEC_SET_KEY(key);
  CCM_STAR.aead(nonce,
      m, m_len,
      a, a_len,
      result, adaptivesec_mic_len(),
      forward);
  AES_128_RELEASE_LOCK();
}
コード例 #2
0
ファイル: packetbuf.c プロジェクト: 13416795/contiki
/*---------------------------------------------------------------------------*/
void
packetbuf_compact(void)
{
  int16_t i;

  if(bufptr) {
    /* shift data to the left */
    for(i = 0; i < buflen; i++) {
      packetbuf[hdrlen + i] = packetbuf[packetbuf_hdrlen() + i];
    }
    bufptr = 0;
  }
}
コード例 #3
0
ファイル: packetbuf.c プロジェクト: kkrentz/contiki
/*---------------------------------------------------------------------------*/
void
packetbuf_compact(void)
{
  int16_t i;

  if(packetbuf->bufptr) {
    /* shift data to the left */
    for(i = 0; i < packetbuf->datalen; i++) {
      packetbuf->data[packetbuf->hdrlen + i] = packetbuf->data[packetbuf_hdrlen() + i];
    }
    packetbuf->bufptr = 0;
  }
}
コード例 #4
0
ファイル: chameleon.c プロジェクト: 13416795/contiki
/*---------------------------------------------------------------------------*/
int
chameleon_create(struct channel *c)
{
  int ret;

  PRINTF("%d.%d: chameleon_output channel %d\n",
	 linkaddr_node_addr.u8[0],linkaddr_node_addr.u8[1],
	 c->channelno);

  ret = CHAMELEON_MODULE.output(c);
  packetbuf_set_attr(PACKETBUF_ATTR_CHANNEL, c->channelno);
#if DEBUG
  printhdr(packetbuf_hdrptr(), packetbuf_hdrlen());
#endif /* DEBUG */
  if(ret) {
    return 1;
  }
  return 0;
}
コード例 #5
0
ファイル: chameleon.c プロジェクト: EDAyele/ptunes
/*---------------------------------------------------------------------------*/
int
chameleon_output(struct channel *c)
{
  int ret;

  PRINTF("%d.%d: chameleon_output channel %d\n",
	 rimeaddr_node_addr.u8[0],rimeaddr_node_addr.u8[1],
	 c->channelno);

  if(header_module) {
    ret = header_module->output(c);
    packetbuf_set_attr(PACKETBUF_ATTR_CHANNEL, c->channelno);
#if DEBUG
    printhdr(packetbuf_hdrptr(), packetbuf_hdrlen());
#endif /* DEBUG */
    if(ret) {
      rime_output();
      return 1;
    }
  }
  return 0;
}
コード例 #6
0
ファイル: packetbuf.c プロジェクト: kamejoko80/emb6
/*---------------------------------------------------------------------------*/
uint16_t
packetbuf_totlen(void)
{
  return packetbuf_hdrlen() + packetbuf_datalen();
}
コード例 #7
0
ファイル: packetbuf.c プロジェクト: 13416795/contiki
/*---------------------------------------------------------------------------*/
void *
packetbuf_dataptr(void)
{
  return packetbuf + packetbuf_hdrlen();
}