⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 secprimitivem.nc

📁 tinyos密钥管理组件 用在tinyos仿真里的
💻 NC
字号:


module SecPrimitiveM {
  provides {
    interface Primitive;
  }
  uses {	
    interface MAC;
    interface BlockCipher;
  }
}
implementation
{
  uint8_t random_key[8];
  uint32_t counter;
 
  command result_t Primitive.PRF(uint8_t *key, uint32_t x, uint8_t *out)
  {
      return call Primitive.MAC(key,(uint8_t *)&x,4,out);
  }

  command result_t Primitive.PRG(uint8_t *out)
  {
      counter++;
      return call Primitive.MAC(random_key,(uint8_t *)&counter, 4, out);
  }

  command result_t Primitive.MAC (uint8_t *key, uint8_t *in, uint8_t len, uint8_t *out)
  {
      MACContext context; 
      call MAC.init(&context, 8, key);
      return call MAC.MAC (&context, in, len, out, 8);
  }

  command result_t Primitive.verifyMAC(uint8_t *key, uint8_t *in, uint8_t len,uint8_t *mac)
  {
      uint8_t i;
      MACContext context; 
      uint8_t tmp[8];
      call MAC.init(&context, 8, key);
      call MAC.MAC (&context, in, len, tmp, 8);
      for(i=0;i<8;i++) if(tmp[i]!=mac[i]) return FAIL;
      return SUCCESS;
  }

  command result_t Primitive.encrypt(uint8_t *key, uint8_t * plainBlock, uint8_t * cipherBlock) 
  {
     CipherContext context;
     call BlockCipher.init(&context,8,8,key);
     call BlockCipher.encrypt(&context,plainBlock, cipherBlock);
     return SUCCESS;
  }
  command result_t Primitive.decrypt(uint8_t *key,uint8_t * cipherBlock, uint8_t * plainBlock)
  {
     CipherContext context;
     call BlockCipher.init(&context,8,8,key);
     call BlockCipher.decrypt(&context, cipherBlock,plainBlock);
     return SUCCESS;
  }
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -