SecOC_集成手册
目标
本集成手册用于指导用户进行SecOC模块集成,文档主要包括的内容为:SecOC模块集成指导、基于示例应用的集成讲解。
由于各项目的需求不同,集成示例不会针对于特定的商业项目做详细讲解。
缩写词和术语
** 缩写词/术语** |
描述 |
SecOC |
Security On board Communication安全板载通信 |
MCAL |
Microcontroller Abstraction Layer微控制器抽象层 |
CryIf |
Crypto Interface Crypto接口 |
Csm |
Crypto ServiceManager Crypto服务管理 |
MAC |
Message Authentication Code消息认证码 |
参考文档
[1]《参考手册_CryIf.pdf》
[2]《参考手册_CSM.pdf》
[3]《参考手册_Crypto.pdf》
[4]《参考手册_SecOC.pdf》
SecOC集成
项目交付的内容为:SecOC源码和ORIENTAIS Configurator配置工具。
SecOC相关配置模块的功能介绍,参见表4‑1 SecOC相关配置模块介绍。
使用SecOC源码和配置工具,进行SecOC的集成的步骤,参见表4‑2 SecOC集成的步骤。
模 块名 |
功能 |
Can |
提供SecOC所需要的邮箱 |
CANIf |
CANIf模块主要处理上层模块与底层驱动的之间 PDU的传递,为上层模块提供统一的接口来管理不同的CAN硬件模块 |
EcuC |
用于辅助配置工具完成配置的模块。主 要提供PDU的定义,其它模块通过关联EcuC中PDU,相互关联起来。 |
PduR |
PDU Router主要为通讯接口模块(CANIf)、传输协议模块(CAN TP、J1939 TP)、诊断通讯管理模块(DCM、J1939DCM)以及通讯模块(C OM、LDCOM)以及IPDUM、SECOC等模块提供基于I-PDU的路由服务。 |
Com |
COM模块主要提供I-PDU和信号相关管理功能 |
Crypto |
为SecOC提供底层加密驱动程序 |
Csm |
Csm模块为Crypto进行抽象并为上层提供标准化接口 |
SecOC |
SecOC模块主要管理参与信息安全收发的PDU及相关属性 |
步 骤 * |
操作 |
说明 |
1 |
ORIENTAIS Configurator配置工 具工程搭建和SecOC相关模块加载 |
若配置工具已经搭建,则仅需 进行SecOC相关模块的加载操作。 |
2 |
模块配置及配置文件生成 |
NA |
3 |
代码集成 |
现有工程、SecOC相关模块 源代码和配置生成文件的集成。 |
4 |
验证测试 |
NA |
注意:SecOC模块集成之前,用户须确保已经有基础工程。
新建ORIENTAIS Configurator配置工程及模块加载
安装ORIENTAIS Configurator软件后,双击软件图标打开软件。
图4-1 新建工程-1
菜单栏File🡪New🡪Project,新建工程。
图4-2 新建工程-2
在弹出的新建窗口中选择Autosar下的 [BSW Project],选择Next。
图4-3 新建工程-3
在弹出的窗口中输入工程名,选择Finish。
图4-4 新建工程-4
在弹出的窗口中选择Yes。
图4-5 新建工程-5
选择[Bsw_Builder],右键单击,选择New ECU Configuration。
图4-6 新建工程-6
在弹出的窗口中输入ECU名,然后选择Next。
图4-7 新建工程-7
在弹出的窗口中勾选需添加的模块,点击Finish。
图4-8 新建工程-8
新建工程如下所示,上一步添加的模块已经被加入到工程中。
图4-9 新建工程-9
MCAL配置导入,BSW模块需要依赖MCAL生成的CAN模块
从MCAL配置工具生成arxml
图4-11 新建工程-11
导入BSW工具
图4-12 新建工程-12
图4-13 新建工程-13
图4-14 新建工程-14
模块配置及生成代码
该章节主要介绍SecOC模块的配置参数,列举配置项在配置界面显示的名称、可能的取值、默认的取值、参数描述及依赖关系,旨在指导用户如何使用配置工具进行SecOC模块参数的配置。
目标:配置一组报文进行SecOC的正常收发
类型 |
CANID |
Date |
新鲜度长度 |
MAC值长度 |
SecOCID |
TX |
0x350 |
8Bytes |
2Bytes |
6Bytes |
2Bytes |
RX |
0x351 |
8Bytes |
2Bytes |
6Bytes |
2Bytes |
表格名词解析如下表介绍
UI名称 |
该配置项在配置工具界面显示的名称 |
取值范围 |
该配置项允许的取值区间 |
默认取值 |
该配置项默认的配置值 |
参数描述 |
该配置项在标准的AUTOSAR_EcucParamDef.arxml文件中的描述 |
依赖关系 |
该配置项与其他模块或配置项的关系 |
Ecuc配置
一帧SecOC报文对应于四组ECUC和PDUR的两组路由组,分别对应于CANIf和COM使用。
EcucConfigSet
如表 4-3配置目标,示例中使用CANFD,数据整体长度是16Bytes(此长度不包含SecOCID)。
配置Ecuc包含的发送、接收信息
COM -> SecOC_Authentic_Tx -> SecOC_Secured_Tx -> SecOC_Tx
SecOC_Rx -> SecOC_Secured_Rx -> SecOC_Authentic_Rx -> COM
图4-15 EcucConfigSet
配置COM发送、接收信息:
COM_SECOC_DEMO_TX_350/COM_SECOC_DEMO_RX_351,长度为8
配置CANIf的发送、接收信息:
SECOC_DEMO_TX_350/SECOC_DEMO_RX_351,长度为16
配置SecOC的加密、真实的发送、接收信息:
SecOC_Authentic_Tx/ SecOC_Authentic_Rx,长度为8
SecOC_Secured_Tx/SecOC_Secured/Rx,长度为16
CanIf的配置
CanIfRx
CanIf主要是对报文属性的定义,包含了CANID和DLC以及帧类型等重要数据。
图4-16 CanIfInitCfgRX配置
配置接收报文的ID 0x351这个信息和底层的邮箱信息相匹配。
配置帧类型是STANDARD_FD_CAN。
DLC的长度,接收数据为16字节。
填写接收报文的ID,确定数据帧的类型以及数据长度,选择此数据的PDUHrH,以及CanIfRxPduRef。
表4-5 CanIfRx界面配置说明
UI名称 |
描述* |
|||
CanIfR xPduCanId |
取 值范围 |
0-0x7FF |
默认取值 |
0x00 |
参 数描述 |
报文的ID |
|||
依 赖关系 |
无 |
|||
CanIfRxPdu CanIdType* |
取 值范围 |
无 |
默认取值 |
ST ABDARD_CAN |
参 数描述 |
帧类型 |
|||
依 赖关系 |
无 |
|||
CanI fRxPduDlc |
取 值范围 |
0-32 |
默认取值 |
8 |
参 数描述 |
报文长度 |
|||
依 赖关系 |
无 |
|||
CanIfRxP duUserRxInd icationUL |
取 值范围 |
无 |
默认取值 |
PDUR |
参 数描述 |
接收 报文所属的规范类型 |
|||
依 赖关系 |
无 |
|||
CanIfRxPd uHrhIdRef |
取 值范围 |
无 |
默认取值 |
HRH |
参 数描述 |
Rx L-PDU所属的 HRH通过该参数引用 |
|||
依 赖关系 |
无 |
|||
CanI fRxPduRef |
取 值范围 |
无 |
默认取值 |
|
参 数描述 |
引用“全局”P du结构,以允许协调 com堆栈中的句柄id |
|||
依 赖关系 |
无 |
CanIfTx
图4‑17 CanIfInitCfgTX配置
配置发送报文的ID 0x350这个信息和底层的邮箱信息相匹配。
配置帧类型STANDARD_FD_CAN。。
填写发送报文的ID,确定数据帧的类型,选择此数据的PDUHrH,以及CanIfTxPduRef。
表4-6 CanIfTx界面配置说明
UI名称 |
描述* |
|||
CanIf TxPduType |
取 值范围 |
0-0x7FF |
默认取值 |
0x00 |
参 数描述 |
报文的ID |
|||
依 赖关系 |
无 |
|||
CanIfTxPdu CanIdType* |
取 值范围 |
无 |
默认取值 |
ST ABDARD_CAN |
参 数描述 |
帧类型 |
|||
依 赖关系 |
无 |
|||
CanIf TxPduType |
取 值范围 |
无 |
默认取值 |
STATIC |
参 数描述 |
是否可以更改CANID |
|||
依 赖关系 |
无 |
|||
CanIfTxP duUserRxInd icationUL |
取 值范围 |
无 |
默认取值 |
PDUR |
参 数描述 |
接收 报文所属的规范类型 |
|||
依 赖关系 |
无 |
|||
CanIfTxPdu BufferRef* |
取 值范围 |
无 |
默认取值 |
|
参 数描述 |
对CanIf缓冲 区配置的可配置引用 |
|||
依 赖关系 |
无 |
|||
CanI fTxPduRef |
取 值范围 |
无 |
默认取值 |
|
参 数描述 |
引用“全局”P DU结构,以允许协调 com堆栈中的句柄id |
|||
依 赖关系 |
无 |
PDUR
PduRBswModules
图4‑18 PduRBswModules配置
打开发送确认(PduRTxConfirmation)。
Module引用SecOC模块。
此界面包含函数接口的宏开关以及PDU路由器模块应使用传输协议接口指定的API参数。PduRBswModuleRef需要在添加SecOC模块之后才可出现选择项。
表4-7 PduRBswModules界面配置说明
UI名称 |
描述* |
|||
PduRCance lTransmit |
取 值范围 |
True / False |
默认取值 |
False |
参 数描述 |
取 消发送函数的宏开关 |
|||
依 赖关系 |
无 |
|||
PduRTxCon firmation |
取 值范围 |
True / False |
默认取值 |
False |
参 数描述 |
发 送确认函数的宏开关 |
|||
依 赖关系 |
无 |
|||
PduRBsw ModuleRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
这是对一个 BSW模块配置的引用 |
|||
依 赖关系 |
无 |
PduRRoutingTables
在界面配置路由表,包含在ECUC里面配置的句柄信息以及数据流向,本文档中在此只关注SecOC报文。
图4-19 路由表配置
如上述的4.3章节里面已经描述SecOC配置的ECUC的分组信息,在此配置发送是两组,接收是两组,分别在CanIf和COM里面进行传输,普通报文仅只有COM和CanIf两者之间传输而已,并不包含SecOC的附加信息。
发送路由表
发送的数据信息的传输如下图所示:
图4-20 发送数据流
分析路由表的配置以下:
一、真实数据发送PduR组
源发送数据(此数据和下面的数据为一组,在COM往下发的时候传输使用,和安全的数据不一样,此为真实数据组8Bytes)。
图4-21 COM发送数据流Src
启动传输需要打开,否则无法传输。
目的PDU参考为COM来的PDU,选择COM_SECOC_DEMO_Tx_0x350
发送的时候数据从COM源发送真实数据到真实数据配置的ECUC
PduRSrcPdus -> PduRDestPdus
表4-8 PduRSrcPdus界面配置说明TxCom
UI名称 |
描述* |
|||
PduRSrcPd uUpTxConf |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
启动传输 |
|||
依 赖关系 |
无 |
|||
PduR SrcPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
源PDU参 考;引用唯一的PDU标 识符,应使用用于请 求的PDU路由器操作 |
|||
依 赖关系 |
无 |
目的发送数据(此数据和上面的数据为一组8Bytes)
图4-22 COM发送数据流Dest
选择数据的传输方式为直接传输。
此路由和TP无关报文走的是If,不需勾选PduRTpThreshold。
目的PDU参考为真实PDU,选择SecOC_Authentic_Tx
表4-9 PduRSrcPdus界面配置说明TxCom
UI名称 |
描述* |
|||
PduR DestPduData Provision |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
指定如何提供数 据:direct(作为传输 调用的一部分)或via |
|||
依 赖关系 |
无 |
|||
PduRTp Threshold |
取 值范围 |
0…255 |
默认取值 |
0 |
参 数描述 |
此参 数仅与TP路由相关。 |
|||
依 赖关系 |
无 |
|||
PduRTran smissionCon firmation |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
此参数仅 用于通信接口。传输 协议模块将始终调用 TxConfirmation函数 |
|||
依 赖关系 |
无 |
|||
PduRD estPduRef |
取 值范围 |
无 |
默认取值 |
SecOC_Aut hentic_Tx0 |
参 数描述 |
目的地PD U参考;当调用目标模 块的相关函数时,由 PDU路由器引用唯一 的PDU标识符应使用 而不是源PDU标识符 |
|||
依 赖关系 |
无 |
二、安全数据PduR组
SecOC_Secured_Tx -> CANIF_SECOC_DEMO_Tx_0x350为PduR的数据流向
安全PduR源目的的数据如下:
源发送数据(此数据和下面的数据为一组,在CanIf往外发的时候传输使用,和真实的数据不一样,此为安全数据组16Bytes)。
图4-23 CanIf发送数据流Src
启动传输需要打开,否则无法传输。
PDU参考为安全的PDU,选择SecOC_Secured_Tx
表4-10 PduRSrcPdus界面配置说明TxCanIf
UI名称 |
描述* |
|||
PduRSrcPd uUpTxConf |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
启动传输 |
|||
依 赖关系 |
无 |
|||
PduR SrcPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
源PDU参 考;引用唯一的PDU标 识符,应使用用于请 求的PDU路由器操作 |
|||
依 赖关系 |
无 |
安全PduR目的数据如下:
目的发送数据(此数据和上面的数据为一组16Bytes)
图4-24 CanIf发送数据流Dest
选择数据的传输方式为直接传输。
和TP无关报文走的是If,填写0.
目的PDU参考为CanIf的PDU,选择CANIF_SECOC_DEMO_Tx_0x350
表4-11 PduRSrcPdus界面配置说明TxCom
UI名称 |
描述* |
|||
PduR DestPduData Provision |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
指定如何提供数 据:direct(作为传输 调用的一部分)或via |
|||
依 赖关系 |
无 |
|||
PduRTp Threshold |
取 值范围 |
0…255 |
默认取值 |
0 |
参 数描述 |
此参 数仅与TP路由相关。 |
|||
依 赖关系 |
无 |
|||
PduRTran smissionCon firmation |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
此参数仅 用于通信接口。传输 协议模块将始终调用 TxConfirmation函数 |
|||
依 赖关系 |
无 |
|||
PduRD estPduRef |
取 值范围 |
无 |
默认取值 |
SecOC_Aut hentic_Tx0 |
参 数描述 |
目的地PD U参考;当调用目标模 块的相关函数时,由 PDU路由器引用唯一 的PDU标识符应使用 而不是源PDU标识符 |
|||
依 赖关系 |
无 |
注意:如果已在DBC里面配置SecOC报文,需要删除工具里生成的这一层的PduR,手动的去配置。因为目前DBC需求中没有明确信息表明是SecOC报文,所以会按照非加密报文生成通信栈里面的信息,需要按照本文档写的配置说明去手动更改配置的信息(Ecuc-CanIf-PduR-COM-SecOC的顺序配置)或者在DBC中删除多余信号。
接收路由表
接收数据信息的传输如下图所示:
图4-25 接收数据流
路由表的配置如下:
一、加密数据接收PduR组
源发送数据(此数据和下面的数据为一组,在Can接收的时候传输使用,和真实的数据不一样,此为安全数据组16Bytes)。
图4-26 CanIf接收数据流Src
启动传输需要打开,否则无法传输。
源PDU参考为CanIf的PDU,选择SecOC_DEMO_Rx_0x351
表4-12 PduRSrcPdus界面配置说明RxCanIf
UI名称 |
描述* |
|||
PduRSrcPd uUpTxConf |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
启动传输 |
|||
依 赖关系 |
无 |
|||
PduR SrcPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
源PDU参 考;引用唯一的PDU标 识符,应使用用于请 求的PDU路由器操作 |
|||
依 赖关系 |
无 |
接收时,安全数据从CanIf源接收外部的数据,路由到SecOC安全的数据配置的ECUC。
图4-27 CanIf接收数据流Dest
选择数据的传输方式为直接传输。
和TP无关报文走的是If,填写0.
目的PDU参考为安全的PDU,选择SecOC_Secured_Rx
表4-13 PduRSrcPdus界面配置说明RxCanIf
UI名称 |
描述* |
|||
PduR DestPduData Provision |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
指定如何提供数 据:direct(作为传输 调用的一部分)或via |
|||
依 赖关系 |
无 |
|||
PduRTp Threshold |
取 值范围 |
0…255 |
默认取值 |
0 |
参 数描述 |
此参 数仅与TP路由相关。 |
|||
依 赖关系 |
无 |
|||
PduRTran smissionCon firmation |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
此参数仅 用于通信接口。传输 协议模块将始终调用 TxConfirmation函数 |
|||
依 赖关系 |
无 |
|||
PduRD estPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
目的地PD U参考;当调用目标模 块的相关函数时,由 PDU路由器引用唯一 的PDU标识符应使用 而不是源PDU标识符 |
|||
依 赖关系 |
无 |
二、真实数据接收PduR组
这是PduR源目的的数据如下:
源发送数据(此数据和下面的数据为一组,在COM接收的时候传输使用,和安全的数据不一样,此为安全数据组8Bytes)。
图4-28 COM接收数据流Src
启动传输需要打开,否则无法传输。
源PDU参考为真实的PDU,选择SecOC_Authentic_Rx
表4-14 PduRSrcPdus界面配置说明RxCom
UI名称 |
描述* |
|||
PduRSrcPd uUpTxConf |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
启动传输 |
|||
依 赖关系 |
无 |
|||
PduR SrcPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
源PDU参 考;引用唯一的PDU标 识符,应使用用于请 求的PDU路由器操作 |
|||
依 赖关系 |
无 |
真实PduR目的的数据如下:
目的接收数据(此数据和上面的数据为一组8Bytes)
图4-29 COM接收数据流Dest
选择数据的传输方式为直接传输。
和TP无关报文走的是If,填写0.
目的PDU参考为COM的PDU,选择COM_SecOC_DEMO_Rx_0x351
表4-15 PduRDestPdus界面配置说明RxCom
UI名称 |
描述* |
|||
PduR DestPduData Provision |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
指定如何提供数 据:direct(作为传输 调用的一部分)或via |
|||
依 赖关系 |
无 |
|||
PduRTp Threshold |
取 值范围 |
0…255 |
默认取值 |
0 |
参 数描述 |
此参 数仅与TP路由相关。 |
|||
依 赖关系 |
无 |
|||
PduRTran smissionCon firmation |
取 值范围 |
True / False |
默认取值 |
True |
参 数描述 |
此参数仅 用于通信接口。传输 协议模块将始终调用 TxConfirmation函数 |
|||
依 赖关系 |
无 |
|||
PduRD estPduRef |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
目的地PD U参考;当调用目标模 块的相关函数时,由 PDU路由器引用唯一 的PDU标识符应使用 而不是源PDU标识符 |
|||
依 赖关系 |
无 |
COM
DBC的配置
TX(信号只需要定义有效数据即可,本文档采用大端法)
图4-30 TX_DBC的定义
RX(信号只需要定义有效数据即可,本文档采用大端法)
图4-31 RX_DBC的定义
附加的信息不必要占用任何的DBC里面的信息,描述包含:新鲜度、MAC、SecOCID。
ComConfig
Tx信号的配置
SECOC_DEMO_Tx_Data0x_IPDU_COM_SECOC_DEMO_Tx_0x350信号的定义
图4-32 TX信号
数据的起始位和位长度可以根据DBC的导入获得,或者根据大端和小端的方式来确定,本示例使用大端配置。
信号类型采用:大端法。
信号的初始值:此处可人为填写,也可以在测试的时候更改这个值,验证功能,示例按照图4-32所示字节填写即可。
信号类型:这个很重要,后面的测试转发报文的需要信号的类型相匹配,此选项是16Bits,选择UINT16。
表4-16 ComConfig界面配置说明
UI名称 |
描述 |
|||
ComBit Position |
取值范围 |
0..4294967295 |
默认取值 |
无 |
参数描述 |
I-PDU内的 起始位置该参数指的 是I-PDU中的位置,而 不是影子缓冲区中的 位置如果将字节序转 换配置为不透明,则 参数ComBitPosition 应定义第一个字节的b it0,如小端字节顺序 |
|||
依赖关系 |
无 |
|||
C omSignalEn dianness |
取值范围 |
BIG_ENDIAN LITTLE_ENDIAN OPAQUE |
默认取值 |
无 |
参数描述 |
定义信号 网络表示的字节顺序 |
|||
依赖关系 |
无 |
|||
** ComSignalI nitValue** |
取值范围 |
与信号类型有关 |
默认取值 |
0 |
参数描述 |
此信号的初始值在UI NT8_N的情况下,默认 值是一个长度为ComS ignalLength的字符串 ,所有字节都设置为 0x00在UINT8_DYN的情 况下,初始大小应为0 |
|||
依赖关系 |
在 UINT8_N的情况下,C omSignalInitValue的 长度必须与ComSigna lLength的长度相同。 |
|||
C omTransfer Property |
取值范围 |
PENDING TRIGGERED TRIGGERED_ON_CHANGE TRIGGERED_ON_CHANGE _WITHOUT_REPETITION TRIGGERED _WITHOUT_REPETITION |
默认取值 |
PENDING |
参数描述 |
定义对此信号的写访 问是否可以触发相应 I-PDU的传输如果I-PD U被触发,则还取决于 相应I-PDU的传输模式 |
|||
依赖关系 |
无 |
|||
Co mUpdateBit Position |
取值范围 |
0..4294967295 |
默认取值 |
无 |
参数描述 |
更新 位在I-PDU内的位位置 |
|||
依赖关系 |
无 |
|||
ComG wIPduRef |
取值范围 |
引用[ComIPdu] |
默认取值 |
无 |
参数描述 |
引用Signal Gateway源 或目的地描述的I-PDU |
|||
依赖关系 |
无 |
Rx信号的配置
SecOC_Payload_Rx00_IPDU_COM_SecOC_Rx的定义
图4-33 RX信号
数据的起始位和位长度可以根据DBC的导入获得,或者根据大端和小端的方式来确定,在这里采用大端法。
信号类型采用:大端法。
信号的初始值:接收数据无需配置,默认即可。
信号类型:这个很重要,后面的测试转发报文的需要信号的类型相匹配,此选项是16Bits,选择UINT16。
表4-17 ComConfig界面配置说明R
UI名称 |
描述 |
|||
ComBit Position |
取值范围 |
0..4294967295 |
默认取值 |
无 |
参数描述 |
I-PDU内的 起始位置该参数指的 是I-PDU中的位置,而 不是影子缓冲区中的 位置如果将字节序转 换配置为不透明,则 参数ComBitPosition 应定义第一个字节的b it0,如小端字节顺序 |
|||
依赖关系 |
无 |
|||
C omSignalEn dianness |
取值范围 |
BIG_ENDIAN LITTLE_ENDIAN OPAQUE |
默认取值 |
无 |
参数描述 |
定义信号 网络表示的字节顺序 |
|||
依赖关系 |
无 |
|||
** ComSignalI nitValue** |
取值范围 |
与信号类型有关 |
默认取值 |
0 |
参数描述 |
此信号的初始值在UI NT8_N的情况下,默认 值是一个长度为ComS ignalLength的字符串 ,所有字节都设置为 0x00在UINT8_DYN的情 况下,初始大小应为0 |
|||
依赖关系 |
在 UINT8_N的情况下,C omSignalInitValue的 长度必须与ComSigna lLength的长度相同。 |
|||
C omTransfer Property |
取值范围 |
PENDING TRIGGERED TRIGGERED_ON_CHANGE TRIGGERED_ON_CHANGE _WITHOUT_REPETITION TRIGGERED _WITHOUT_REPETITION |
默认取值 |
PENDING |
参数描述 |
定义对此信号的写访 问是否可以触发相应 I-PDU的传输如果I-PD U被触发,则还取决于 相应I-PDU的传输模式 |
|||
依赖关系 |
无 |
|||
Co mUpdateBit Position |
取值范围 |
0..4294967295 |
默认取值 |
无 |
参数描述 |
更新 位在I-PDU内的位位置 |
|||
依赖关系 |
无 |
|||
ComG wIPduRef |
取值范围 |
引用[ComIPdu] |
默认取值 |
无 |
参数描述 |
引用Signal Gateway源 或目的地描述的I-PDU |
|||
依赖关系 |
无 |
Crypto
设置CryptoQueueSize大小为16,选择后面设置的CryptoPrimitive.
图4-34 Crypto设置
添加密钥元素,后面的CryptoKeyTypes可选择此处设置的CryptoKeyElements作为密钥类型参考值。
图4-35 CryptoKeyElement设置
设置算法类型,此处设置为AES-CMAC算法,选择算法加密服务为MAC_GENERATE。
图4-36 Crypto设置
CryIf
CryIfIncludes
此处主要设置CryIf需要的头文件名,不需要添加.h后缀
图4-37 CryIf设置
CryIfChannel
选择对应的底层驱动
图4-38 CryIf设置
CryIfKey
添加底层驱动的密钥参考值
图4-39 CryIf设置
Csm
CsmJobs
添加密钥管理服务的任务设置
CsmJobPriority:设置任务优先级
CsmProcessingMode:设置任务处理模式,可选择同步或者异步
CsmJobKeyRef:设置参考的密钥,在后面的CsmKeys中配置
CsmJobPrimitiveRef:设置任务原型,在后面的CsmPrimitives中配置
CsmJobQueueRef:设置任务队列,在后面的CsmQueues中配置
图4-40 Csm设置
CsmKeys
图4-41 Csm设置
添加从If层设置的密钥
CsmPrimitives
设置加密原型
CsmMacGenerateAlgorithmFamily:设置加密服务的算法族
CsmMacGenerateAlgorithmKeyLength:设置MAC的长度16byte
CsmMacGenerateAlgorithmMode:设置加密算法服务
CsmMacGenerateResultLength:设置输出的MAC长度6bytes
图4-42 Csm设置
CsmQueues
设置Csm序列大小、If层设置的参考通道
图4-43 Csm设置
SecOC
Genernal
图4-44 General
MainFunction所放置的周期,通常放在10ms里面,此处写0.01。
表4-18 General界面说明
UI名称 |
描述* |
|||
SecOCDevE rrorDetect |
取 值范围 |
True / False |
默认取值 |
False |
参 数描述 |
错误检 查开关,表示是否打 开DET错误检查机制 |
|||
依 赖关系 |
无 |
|||
SecOCM ainFunctionP eriodRx/Tx |
取 值范围 |
0 .. 0.255 |
默认取值 |
无 |
参 数描述 |
SecOC模块Main Function的调度周期 |
|||
依 赖关系 |
无 |
|||
依 赖关系 |
无 |
|||
SecOCVers ionInfoApi |
取 值范围 |
True / False |
默认取值 |
False |
参 数描述 |
用于配置 SecOC_GetVersionIn fo函数接口是否可用 |
|||
依 赖关系 |
无 |
SecOCRxPduProcessing
图4-45 SecOCRxPduProcessings
如上图,SecOCRxPduProcessings为SecOCRxPduProcessing对象的集合,在该对象的右键菜单中,可添加0 .. n个SecOCRxPduProcessing对象。
图4-46 SecOCRxPduProcessing
SecOCAuthInfoTxLength:描述的是MAC的长度。
SecOCDataId :和发送的ID需要一致,接收和发送是一组,具有唯一性。
SecOCFreshnessCounterSyncAttempts:新鲜度的尝试次数,也许会出现偶然新鲜度失败,可以通过多次尝试依旧接收报文。
SecOCFreshnessValueId:和发送的ID需要一致,接收和发送是一组,具有唯一性。
SecOCFreshnessValueLength:新鲜度在加密信息里所占用的长度,单位:Bits。
SecOCFreshnessValueTxLength:和SecOCFreshnessValueId保持一致即可。
SecOCVerificationStatusPropagationMode:参数用于描述从SecOC模块到SWCs的每次验证尝试状态的传播,此处包含失败通知,成功通知,和不通知,为了提高代码的效率,选择NONE。
SecOCRxAuthServiceConfigRef:算法选择,根据在Csm模块中配置的算法进行选择。
SecOCSecuredPduBuffLength:大于等于所有信息的长度即可,数组缓存SecOC报文(此例程大于16即可,单位Bytes)。
表4-19 SecOCRxPduProcessing参数说明
UI名称 |
描述* |
|||
SecOCAuthIn foTxLength* |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定 义了添加在Secured I-PDU后 面的Authentication cod e的长度,单位为bit |
|||
依 赖关系 |
无 |
|||
S ecOCDataId |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
Secured I-PDU唯一的标识符 |
|||
依 赖关系 |
无 |
|||
SecOCFreshn essCounterSy ncAttempts* |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
该参数定 义了在校验Secured I-PDU失败后, 尝试再校验的次数。 |
|||
依 赖关系 |
无 |
|||
SecOC FreshnessTim estampTimePe riodFactor |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
该参数目 前不可用,不可配置 |
|||
依 赖关系 |
无 |
|||
Sec OCFreshnessV alueLength |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定义了Freshness Value的完 整长度,单位为bit |
|||
依 赖关系 |
无 |
|||
SecOC FreshnessVal ueTxLength |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定 义了添加在Secured I- PDU后面的Freshness Valu e的长度,单位为bit |
|||
依 赖关系 |
无 |
|||
参 数描述 |
定义了用于认证 和校验MAC时使用的 key在本地的标识符 |
|||
依 赖关系 |
无 |
|||
S ecOCRxAccept anceWindow |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
该参数目 前未使用,不可配置 |
|||
依 赖关系 |
无 |
|||
SecOCSec ondaryFreshn essValueId |
取 值范围 |
0 .. 65535 |
默认取值 |
0xFFFF |
参 数描述 |
Secondary Freshness Value的Id |
|||
依 赖关系 |
无 |
|||
SecO CUseFreshnes sTimestamp |
取 值范围 |
False |
默认取值 |
False |
参 数描述 |
该参数固定 为False,不可配置 |
|||
依 赖关系 |
无 |
|||
SecO CVerificatio nStatusPropa gationMode |
取 值范围 |
BOTH FAILURE_ONLY NONE |
默认取值 |
NONE |
参 数描述 |
用于定义在那种校验 结果下,通知用户: BOTH: 在校验结果成功 和失败时都通知用户 FAILURE_ONLY:只在 校验失败时通知用户 NONE:任 何结果都不通知用户 |
|||
依 赖关系 |
无 |
|||
SecOC RxAuthServic eConfigRef |
取 值范围 |
Csm模块选择 |
默认取值 |
|
参 数描述 |
进 行校验时使用的算法 |
|||
依 赖关系 |
无 |
|||
SecOC AuthenticPdu BuffLength |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
用于存储Authentic PDU的buffer的长度 |
|||
依 赖关系 |
无 |
|||
Sec OCSecuredPdu BuffLength |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
用于存储Secured PDU的buffer的长度 |
|||
依 赖关系 |
无 |
|||
参 数描述 |
CSM或CAL模 块中用于提供该PDU 校验服务所配置的Id |
|||
依 赖关系 |
无 |
|||
SecOCSameBu fferPduRef* |
取 值范围 |
引用到配 置的samebuffer对象 |
默认取值 |
无 |
参 数描述 |
如果使用SameBu ffer,则指向一个配 置的SameBuffer对象 |
|||
依 赖关系 |
无 |
SecOCRxAuthenticPduLayer
图4-47 SecOCRxAuthenticPduLayer
SecOCPduType:选择所走的协议,此例程为If。
SecOCRxAuthenticLayerPduRef:SecOc_RxPduA。
表4-20 SecOCRxAuthenticPduLayer参数说明
UI名称 |
描述* |
||||
Se cOCPduType |
取 值范围 |
SECOC_IFPDU SECOC_TPPDU |
默 | 认 | 取 | 值 | |
SECOC_IFPDU |
|
参 数描述 |
表示PDU的类型是IF PDU还是TP PDU |
||||
依 赖关系 |
无 |
||||
SecOC RxAuthenticL ayerPduRef |
取 值范围 |
ECUC中定义的PDU |
默 认取值 |
无 |
|
参 数描述 |
SecOCRxAuthentic PduLayer对应的PDU |
||||
依 赖关系 |
无 |
SecOCRxSecuredPduLayer
SecOCRxSecuredLayerPduRef:SecOc_RxPduS。
图4-48 SecOCRxSecuredPduLayer
表4-21 SecOCRxSecuredPduLayer参数说明
UI名称 |
描述* |
|||
** SecOCRxSecur edPduLayer** |
取 值范围 |
ECUC中定义的PDU |
默认取值 |
无 |
参 数描述 |
SecOCRxSecure dPduLayer对应的PDU |
|||
依 赖关系 |
无 |
SecOCTxPduProcessing
图4-49 SecOCTxPduProcessings
如上图,SecOCTxPduProcessings为SecOCTxPduProcessing对象的集合,在该对象的右键菜单中,可添加0 .. n个SecOCTxPduProcessing对象。
图4-50 SecOCTxPduProcessing
SecOCAuthInfoTxLength:描述的是MAC的长度。
SecOCDataId :和发送的ID需要一致,接收和发送是一组,具有唯一性。
SecOCAuthenticationBuildAttempts:新鲜度的尝试次数,也许会出现偶然新鲜度失败,可以通过多次尝试依旧接收报文。
SecOCFreshnessValueId:和发送的ID需要一致,接收和发送是一组,具有唯一性。
SecOCFreshnessValueLength:新鲜度在加密信息里所占用的长度,单位:Bits。
SecOCFreshnessValueTruncLength:和SecOCFreshnessValueLength保持一致即可。
SecOCAuthenticPduBuffLength:大于等于真实信息的长度即可,数组缓存SecOC报文(此例程大于8即可,单位Bytes)。
SecOCSecuredPduBuffLength:大于等于所有信息的长度即可,数组缓存SecOC报文(此例程大于16即可,单位Bytes)。
SecOCTxAuthServiceConfigRef:算法选择,从Csm中选择对应的CsmJob。
表4-22 SecOCTxPduProcessing参数说明
UI名称 |
描述* |
|||
SecOCAuthIn foTxLength* |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定 义了添加在Secured I-PDU后 面的Authentication cod e的长度,单位为bit |
|||
依 赖关系 |
无 |
|||
SecO CAuthenticat ionRetries |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
定义 了在生成认证信息失 败后再次尝试的次数 |
|||
依 赖关系 |
无 |
|||
S ecOCDataId |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
Secured I-PDU唯一的标识符 |
|||
依 赖关系 |
无 |
|||
SecOC FreshnessTim estampTimePe riodFactor |
取 值范围 |
无 |
默认取值 |
无 |
参 数描述 |
该参数目 前不可用,不可配置 |
|||
依 赖关系 |
无 |
|||
Sec OCFreshnessV alueLength |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定义了Freshness Value的完 整长度,单位为bit |
|||
依 赖关系 |
无 |
|||
SecOC FreshnessVal ueTxLength |
取 值范围 |
0 .. 64 |
默认取值 |
0 |
参 数描述 |
定 义了添加在Secured I- PDU后面的Freshness Valu e的长度,单位为bit |
|||
依 赖关系 |
无 |
|||
** SecOCKeyId** |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
定义了用于认证 和校验MAC时使用的 key在本地的标识符 |
|||
依 赖关系 |
无 |
|||
SecO CUseFreshnes sTimestamp |
取 值范围 |
False |
默认取值 |
False |
参 数描述 |
该参数固定 为False,不可配置 |
|||
依 赖关系 |
无 |
|||
SecOC AuthenticPdu BuffLength |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
用于存储Authentic PDU的buffer的长度 |
|||
依 赖关系 |
无 |
|||
Sec OCSecuredPdu BuffLength |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
用于存储Secured PDU的buffer的长度 |
|||
依 赖关系 |
无 |
|||
SecOCC smCalCfgId |
取 值范围 |
0 .. 65535 |
默认取值 |
0 |
参 数描述 |
Csm或CAL模 块中用于提供该PDU 校验服务所配置的Id |
|||
依 赖关系 |
无 |
|||
SecOC RxAuthServic eConfigRef |
取 值范围 |
SECOC_CALMAC SECOC_CALSIGNATURE SECOC_CSMMAC SECOC_CSMSIGNATURE |
默认取值 |
SE COC_CSMMAC |
参 数描述 |
进 行校验时使用的算法 |
|||
依 赖关系 |
无 |
|||
SecOCSameBu fferPduRef* |
取 值范围 |
引用到配 置的samebuffer对象 |
默认取值 |
无 |
参 数描述 |
如果使用SameBu ffer,则指向一个配 置的SameBuffer对象 |
|||
依 赖关系 |
无 |
SecOCTxAuthenticPduLayer
图4-51 SecOCTxAuthenticPduLayer
SecOCPduType:选择所走的协议,此例程为If。
SecOCTxAuthenticLayerPduRef:SecOc_TxPduA。
表4-23 SecOCTxAuthenticPduLayer参数说明
UI名称 |
描述* |
|||
Se cOCPduType |
取 值范围 |
SECOC_IFPDU SECOC_TPPDU |
默认取值 |
S ECOC_IFPDU |
参 数描述 |
表示PDU的类型是IF PDU还是TP PDU |
|||
依 赖关系 |
无 |
|||
SecOC TxAuthenticL ayerPduRef |
取 值范围 |
ECUC中定义的PDU |
默认取值 |
无 |
参 数描述 |
SecOCTxAuthenti cPduLayer对应的PDU |
|||
依 赖关系 |
无 |
SecOCTxSecuredPduLayer
图4-52 SecOCTxSecuredPduLayer
SecOCTxSecuredLayerPduRef:SecOc_TxPduS。
表4-24 SecOCTxSecuredPduLayer参数说明
UI名称 |
描述* |
|||
** SecOCTxSecur edPduLayer** |
取 值范围 |
ECUC中定义的PDU |
默认取值 |
无 |
参 数描述 |
SecOCTxSecure dPduLayer对应的PDU |
|||
依 赖关系 |
无 |
代码例程
代码结构
示例集成通讯安全模块代码框架如下:
图5-1代码框架
源代码调度集成
包含了模块初始化和Csm密钥的有效性验证。
图5-2代码初始化
信息的加密和解密是下函数,放置在5ms周期里面,进行周期的处理发送和接收的SecOC报文。
图5-3周期处理函数
测试结果
需要在Rte_SecOC.c的函数FreshnessManagement_GetTxFreshness中添加对入参freshnessValue的操作,作为观察周期发送的新鲜度值的依据,以下为一个简单的周期更新计算方法:
在CAN监测工具里面观察数据新鲜度的变化是否连续。新鲜度在本例程里占2Bytes,在真实数据的后面。
向对应的SecOC邮箱发送一条报文,检查是否可以进对应的SecOC_RxIndication。
收到校验通过的报文后,可进入COM配置中PDU接收callout函数。