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

📄 ecc_encrypt.h

📁 基于msp430的椭圆曲线加密器程序
💻 H
字号:

//***************程序说明****************************************//
//程序名称:    射频数据通信头文件 AUCT-Scanner.h                //
//功能:        无线扫码器                                       //
//硬件环境:    MSP430F135; NRF2401                              //
//软件开发环境:IAR Embedded Workbench for MSP430 V3             //
//制作单位:    艾易(武汉)电子技术有限公司                       //
//作者:                                                         //
//日期:        2007.1.1                                        //
//***************************************************************//
#ifndef __COMMON_H
#define __COMMON_H
#include <stdio.h>
#include  <msp430x13x.h>

//********************************NRF2401 CONTROL  宏命令********************************//
// I/O口对应关系: P2.0-----> DATA       P2.1-----> CLK1           P2.2-----> DR1
//                 P2.3-----> CS         P2.4-----> DOUT2          P2.5-----> CLK2
//                 P2.6-----> DR2        P2.7-----> CE


  #define           DATA_NRF2401_H         (P2OUT |= 0x01)     // P2.0=1  " XXXX,XXX1 " 
  #define           DATA_NRF2401_L         (P2OUT &= 0xfe)     // P2.0=0  " XXXX,XXX0 " 
  #define           DATA_NRF2401_IN        (P2IN & 0x01)       // get the bit0 data
                                     
  #define           CLK1_NRF2401_H         (P2OUT |= 0x02)     // P2.1 =1 " XXXX,XX1X "
  #define           CLK1_NRF2401_L         (P2OUT &= 0xfd)     // P2.1 =0 " XXXX,XX0X " 
  
  #define           DR1_NRF2401            (P2IN & 0x04)       // P2.2 IS DR1 OF NRF2401

  #define           CS_NRF2401_H           (P2OUT |= 0x08)     // P2.3 =1 " XXXX,1XXX " 
  #define           CS_NRF2401_L           (P2OUT &= 0xf7)     // P2.3 =0 " XXXX,0XXX "
  
  
  #define           DOUT2_NRF2401_H        (P2OUT |= 0x10)    // P2.4 =1 " XXX1 ,XXXX "
  #define           DOUT2_NRF2401_L        (P2OUT &= 0xef)    // P2.4 =0 " XXX0 ,XXXX "
  
  #define           CLK2_NRF2401_H         (P2OUT |= 0x20)    // P2.5 =1 " XX1X ,XXXX "
  #define           CLK2_NRF2401_L         (P2OUT &= 0xdf)    // P2.5 =0 " XX0X ,XXXX "
  
                       // P2.6 IS DR2 OF NRF2401
                       
  #define           CE_NRF2401_H           (P2OUT |= 0x80)    // P2.7 =1 " 1XXX ,XXXX "
  #define           CE_NRF2401_L           (P2OUT &= 0x7f)    // P2.7 =0 " 0XXX ,XXXX "  
  
  #define           POWER_UP_NRF2401_H     (P3OUT |= 0x01)    // P3.0 =1 " XXXX ,XXX1 "
  #define           POWER_UP_NRF2401_L     (P3OUT &= 0xfe)    // P3.0 =0 " XXXX ,XXX0 "
  
  #define           P2DIR_FIRST_SETUP      (P2DIR = 0xAA)     // P2口初始化
  #define           P2DIR_DATA_RECV        (P2DIR &= 0xfe)    // P2.0 =0  "XXXX,XXX0"
  #define           P2DIR_DATA_SEND        (P2DIR |= 0x01)    // P2.0 =1  "XXXX,XXX1"
  #define           P2INIT_FLAG_SET        (P2IFG = 0)        // 标志设置 1 = 有中断
  #define           P2INIT_EDGE_SET        (P2IES = 0)        // 中断信号 1 = 下降沿
  #define           P2INIT_ENABLE_SET      (P2IE = BIT2)      // 开中断 1 = 开中断
  
//*************************************串口控制宏命令*************************************//
  #define           P3SEL_INIT_SETUP       (P3SEL = 0x30)     // P3.4,5 = USART0 TXD/RXD
  #define           P3DIR_SETUP_OUTPUT     (P3DIR = 0x11)     // P3.0,4 = OUT

//****************************************************************************************//

//---------------常数定义------------
#define MAX_BUF_SIZE  	        34                             //串口最大接收数据个数
#define BITS_OF_ABYTE 	        8                              //一个字节有8位
#define ONE_BYTE_CONFIG         2                              //串口接收到的数据个数
#define MULT_BYTE_CONFIG        17                             //串口接收到的数据个数
#define TR_CONFIG_BYTE          14                             //射频头的最后一个字节,配置其收发转换
#define MAX_CONFIG_BYTE         15                             //配置字节数

#define DATA_BIT_TO_BYTE        3                              //将数据长度的位转换为字节
#define ADDR_BIT_TO_BYTE        5                              //将地址长度的位转换为字节
#define POWERUP_DELAY_TIME      16000                           //软件延时

//========================================================================================================
//                 以下常数定义为串口波特率设置
//========================================================================================================
#define UART_BAUD_BYTE_H        0x00                           // 32768Hz/9600 
#define UART_BAUD_BYTE_L        0x03
#define UART_BAUD_FINE          0x4A                           //UMCTL 寄存器用细调
//========================================================================================================
//                 以下常数定义为串口命令字定义
//========================================================================================================
#define GET_ENCRYPT_PK_COMD     0x01                           //命令1:请求加密方公钥/加密方算出公钥返回
#define SENT_DECRYPT_PK_COMD    0x02                           //命令2:向加密方传送解密方的公钥
#define SENT_ENCRYPT_COMD       0x03                           //命令3:向加密方发送加密命令

#define GET_DECRYPT_PK_COMD     0x04                           //命令4:请求解密方公钥/解密方算出公钥返回
#define SENT_ENCRYPT_PK_COMD    0x05                           //命令5:向解密方传送加密方的公钥
#define SENT_DECRYPT_COMD       0x06                           //命令6:向解密方发送解密命令

#define NORMAL                  0x88   // show the program into the normal state
//========================================================================================================
//                以下常数定义为MCU的DCO配置信息
//========================================================================================================
#define SYS_XTCL1_INIT          0x87   //clock初始设置1;XT2 off;XT on;DIV 0;RSEL 111; BCSCTL1
#define SYS_XTCL2_INIT          0x00   //clock初始设置2;XT1 sel;DIV 0;SEL XT1;DIV 0;  BCSCTL2
#define SYS_DCOCTL_INIT         0x80
//========================================================================================================
//                全局变量定义
//========================================================================================================
unsigned char g_recv_count;             //接收数据总数
unsigned char g_recv_flag;              // 收到一帧数据标志
unsigned char g_uart_answer;   	        //串口应答 无错时为0,有错时为1

unsigned char g_UartCommand;            // 串口命令  
unsigned char g_Uartdata2;              // 串口命令接收到的第二个字节
unsigned char g_powerup_flag;           //上电标志     

unsigned char g_buf[12];      	        //数据接收缓冲区12字节
unsigned char g_buf_out[12];      	//数据发送缓冲区12字节

unsigned char g_encrypt_private_key;   //加密方私钥
unsigned char g_encrypt_pk_x;          //加密方公钥x
unsigned char g_encrypt_pk_y;          //加密方公钥y

unsigned char g_decrypt_private_key;   //解密方私钥
unsigned char g_decrypt_pk_x;          //解密方公钥x
unsigned char g_decrypt_pk_y;          //解密方公钥y

unsigned char yes;

unsigned char px;
unsigned char py;
//========================================================================================================
//                函数定义
//========================================================================================================
void Software_delay(unsigned int i);                        //软件延时

void send_uart_a_byte(unsigned char sendbyte);              //串口发射一字节数据

void uart_command_prog(void);                               //串口命令处理函数

unsigned char add(unsigned char add_1,unsigned char add_2);
unsigned char sub(unsigned char sub_1,unsigned char sub_2);
unsigned char mul(unsigned char mul_1,unsigned char mul_2);
unsigned char division(unsigned char div_1,unsigned char div_2);
void addition(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,unsigned char *x3,unsigned char *y3);
void square(unsigned char x1,unsigned char y1,unsigned char *x3,unsigned char *y3);
void proclaimed(unsigned char mw,unsigned char *pmx,unsigned char *pmy,unsigned char *yes);
int oula(unsigned char mwdel);
void pow_p(unsigned char bottom,unsigned char top,unsigned char *result);
void longth(unsigned char pv_key,unsigned char *bit);
void kp(unsigned char pv_key,unsigned char pb_key_x,unsigned char pb_key_y,unsigned char *pv_pb_key_x,unsigned char *pv_pb_key_y);
void encryption(unsigned char mw,unsigned char qbx,unsigned char qby,unsigned char *cx,unsigned char *cy,unsigned char *yes);
void decode(unsigned char cx,unsigned char cy,unsigned char qax,unsigned char qay,unsigned char yes,unsigned char *mx);
void SHA_b_4(unsigned char,unsigned char *pv_key_b);
void SHA_a_4(unsigned char ,unsigned char*pv_key_a);

#endif /* #ifndef __common */

⌨️ 快捷键说明

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