DEENESPTFRRUARHIKOZHNL

Secure Onboard Communication (SecOC)

ModulSecOC (Secure Onboard Communication)
BSW-Modul-ID150
Standard-Header#include "SecOC.h"
SWS-SpezifikationAUTOSAR_SWS_SecureOnboardCommunication.pdf
ClusterSecurity & Intrusion Detection

模块指南人工智能生成

在PDU路由旁使用验证码和新鲜度值保护I-PDU免遭篡改和重放。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: e42ecdfc6fe3 来源 未决问题(2)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

在PDU路由旁使用验证码和新鲜度值保护I-PDU免遭篡改和重放。

SecOC保护I-PDU免遭篡改和重放。为此,它在发送时附加一个验证码和一个新鲜度值,并在接收时对两者进行校验。PDU的接收与加密处理是解耦的:仅在周期性主函数中分六个步骤进行身份验证或校验([SWS_SecOC_00040])。密码学功能由CSM提供,新鲜度值由外部Freshness Manager提供。有限的重试次数决定了何时丢弃接收到的PDU并报告校验状态([SWS_SecOC_00241])。

SecOC保护通信栈中的I-PDU。它位于PduR旁,并为每个Authentic I-PDU附加验证码和可能被截短的新鲜度值。从而生成Secured I-PDU(SWS SecOC 第39页)。验证码通过数据标识符、有效负载数据和完整的新鲜度值进行计算(SWS SecOC 第29页)。密码学功能由CSM提供([SWS_SecOC_00138]),新鲜度值由Freshness Manager通过RTE或C函数提供([SWS_SecOC_91001]、[SWS_SecOC_00230])。

kontext com Com / obere Schicht pdur PduR com->pdur Authentic I-PDU secoc SecOC pdur->secoc SecOC_[If|Tp]Transmit, SecOC_RxIndication, SecOC_StartOfReception lower Untere Schicht (CanIf, FrIf, CanTp …) pdur->lower Secured I-PDU secoc->pdur PduR_SecOCTransmit, PduR_SecOC…RxIndication csm Csm secoc->csm Csm_MacGenerate / Csm_MacVerify fvm Freshness Manager (通过 RTE 的 SW-C 或 C 函数) secoc->fvm Get[Tx|Rx]Freshness…, SPduTxConfirmation, VerificationStatusCallout app SW-C (Verifikationsstatus) secoc->app VerificationStatusIndication det Det secoc->det SECOC_E_… idsm IdsM secoc->idsm Security Events app->secoc SecOC_VerifyStatusOverride, SecOC_SendDefaultAuthenticationInformation lower->pdur Secured I-PDU (Empfang)

上下文图:位于PduR、CSM、Freshness Manager、应用程序、DET和IdsM之间的SecOC。来源:[SWS_SecOC_00138]、[SWS_SecOC_91001]、[SWS_SecOC_00273]

发送和接收是解耦的。在执行SecOC_[If|Tp]Transmit时,SecOC仅复制有效负载数据。仅在周期性SecOC_MainFunctionTx中计算认证信息并通过PduR触发传输(SWS SecOC 第40页、[SWS_SecOC_00176])。SecOC完整缓冲接收到的Secured I-PDU,并在SecOC_MainFunctionRx中分六个步骤进行检查,从解析直至向上传递([SWS_SecOC_00040]、[SWS_SecOC_00255])。该模块仅在状态SECOC_INIT下工作,该状态由SecOC_Init建立并由SecOC_DeInit解除([SWS_SecOC_00162]、[SWS_SecOC_00161])。

接收时的重试由两个计数器控制([SWS_SecOC_00237]、[SWS_SecOC_00239]、[SWS_SecOC_00240]、[SWS_SecOC_00241]):

  • 构建计数器统计临时瓶颈,如E_BUSY。
  • 校验计数器统计失败的MAC比对。
  • 如果其中一个达到其上限,则PDU被丢弃。

在发送时,达到上限会导致SECOC_E_CRYPTO_FAILURE,如果已启用,则使用默认模式发送([SWS_SecOC_00155]、[SWS_SecOC_00229])。

rxverifikation a Secured I-PDU 已完整接收 Build 计数器 = 0,Verify 计数器 = 0 b Freshness abfragen (SecOC_GetRxFreshness / …AuthData) a->b c Ergebnis Freshness? b->c d Build 计数器 + 1 c->d E_BUSY h Verwerfen: SECOC_FRESHNESSFAILURE c->h E_NOT_OK i Csm_MacVerify c->i E_OK e Build 计数器 >= SecOCAuthenticationBuildAttempts? d->e f 在下一次 SecOC_MainFunctionRx 中重试 e->f 不 g Verwerfen: SECOC_AUTHENTICATIONBUILDFAILURE e->g 是 f->b j Ergebnis Verifikation? i->j j->d E_BUSY, QUEUE_FULL k Verify 计数器 + 1, Build 计数器 = 0 j->k MAC 无效 m Verwerfen: SECOC_VERIFICATIONFAILURE j->m 不可恢复 (E_NOT_OK, KEY_FAILURE) n SECOC_VERIFICATIONSUCCESS, Authentic I-PDU an obere Schicht j->n 成功的 l Verify 计数器 >= SecOCAuthenticationVerifyAttempts? k->l l->b 否:下一个有效 Freshness Value l->m 是

活动图:构建和校验计数器决定重试或丢弃。来源:[SWS_SecOC_00239]、[SWS_SecOC_00241]

SecOC将每次尝试的结果报告为SecOC_VerificationStatusType,并根据配置上报给软件组件和Freshness Manager([SWS_SecOC_00271]、[SWS_SecOC_00243])。通过SecOC_VerifyStatusOverride可以有针对性地覆盖校验([SWS_SecOC_00122])。在划分为Authentic和Cryptographic I-PDU时,只有当两个部分都带有匹配的Message Linker并就绪时,才会执行检查([SWS_SecOC_00211])。

PduR旁的角色与系统边界

SecOC在分层架构中位于PDU路由旁。它通过在有效负载数据后直接附加认证信息将Authentic I-PDU转换为Secured I-PDU:验证码以及可能被截短的新鲜度值(SWS SecOC 第39页、SWS SecOC 第43页)。其他任何模块都不得依赖SecOC,以便系统在没有SecOC的情况下也能构建。Authentic PDU的MetaData在Secured PDU中保持不变,反之亦然([SWS_SecOC_00212])。

验证码通过三个部分的串联计算得出:SecOCDataId、Authentic I-PDU的受保护部分和完整的新鲜度值(SWS SecOC 第29页)。密码学功能由CSM提供,例如使用Csm_MacGenerate和Csm_MacVerify([SWS_SecOC_00138])。新鲜度值由Freshness Manager提供,可以通过RTE端口FreshnessManagement或C函数([SWS_SecOC_91001]、[SWS_SecOC_00230])提供。通知的其他接收方包括:

kontext com Com / obere Schicht pdur PduR com->pdur Authentic I-PDU secoc SecOC pdur->secoc SecOC_[If|Tp]Transmit, SecOC_RxIndication, SecOC_StartOfReception lower Untere Schicht (CanIf, FrIf, CanTp …) pdur->lower Secured I-PDU secoc->pdur PduR_SecOCTransmit, PduR_SecOC…RxIndication csm Csm secoc->csm Csm_MacGenerate / Csm_MacVerify fvm Freshness Manager (通过 RTE 的 SW-C 或 C 函数) secoc->fvm Get[Tx|Rx]Freshness…, SPduTxConfirmation, VerificationStatusCallout app SW-C (Verifikationsstatus) secoc->app VerificationStatusIndication det Det secoc->det SECOC_E_… idsm IdsM secoc->idsm Security Events app->secoc SecOC_VerifyStatusOverride, SecOC_SendDefaultAuthenticationInformation lower->pdur Secured I-PDU (Empfang)

上下文图:SecOC在PduR、CSM、Freshness Manager和应用程序之间进行中介,并向DET和IdsM进行报告。来源:SWS SecOC 第24页、[SWS_SecOC_00138]、[SWS_SecOC_91001]、[SWS_SecOC_00273]

相同的机制也支持网关。SecOC支持安全区之间的重新身份验证网关,每个过程都单独配置。不支持“即时网关”(Gatewaying-on-the-fly)(SWS SecOC 第57页)。

初始化、模块状态与周期性主函数

模块状态SecOC_StateType包含SECOC_UNINIT和SECOC_INIT([SWS_SecOC_00162])。

  • SecOC_Init接收特定于实现的SecOC_ConfigType,成功时转入SECOC_INIT。当分配到多个分区时,每个分区都可以有一个Init函数([SWS_SecOC_00106]、[SWS_SecOC_00104])。
  • SecOC_DeInit丢弃所有缓冲的I-PDU并将模块重置为未初始化状态([SWS_SecOC_00161])。在此过程中,内部变量和缓冲区也会被清除(SWS SecOC 第65页)。
  • 在未预先初始化的情况下调用会报告SECOC_E_UNINIT([SWS_SecOC_00101])。

实际的处理由SecOC_MainFunctionTx和SecOC_MainFunctionRx完成。针对每个配置的实例都会生成一个独立的函数…_<shortName>([SWS_SecOC_00176]、[SWS_SecOC_00171])。其周期是可配置的(SWS SecOC 第130页、SWS SecOC 第129页)。每个SecOCTxPduProcessing都在引用的实例中运行([SWS_SecOC_00276])。

若未初始化,Tx主函数会立即返回。否则,它会在同一次调用中对所有新的Authentic I-PDU进行身份验证,并立即通过PduR触发其传输(SWS SecOC 第84页)。

lebenszyklus start 开始 uninit SECOC_UNINIT start->uninit uninit->uninit SecOC_MainFunctionTx:立即返回; API 调用:SECOC_E_UNINIT init SECOC_INIT uninit->init SecOC_Init(config) erfolgreich init->uninit SecOC_DeInit(): 清除缓冲的 I-PDU、变量和缓冲区 init->init SecOC_MainFunctionTx/Rx: 认证或校验

状态图:Init和DeInit在SECOC_UNINIT和SECOC_INIT之间切换;主函数仅在初始化状态下工作。来源:[SWS_SecOC_00162]、[SWS_SecOC_00106]、[SWS_SecOC_00161]、SWS SecOC 第84页

发送:从Authentic到Secured I-PDU

发送路径是解耦的,并分为两个阶段进行(SWS SecOC 第40页):

  1. 上层调用PduR_<Up>Transmit,PduR调用SecOC_[If|Tp]Transmit。SecOC将Authentic I-PDU完整复制到自己的内存中并返回([SWS_SecOC_00252])。
  2. 在主函数的下一次运行中生成Secured I-PDU,并且SecOC通过PduR触发其传输。

SecOC通过PduR_SecOC[If|Tp]TxConfirmation将下层的确认向上传递([SWS_SecOC_00063])。

身份验证包括六个步骤:准备、构建DataToAuthenticator、生成验证码、组装Secured I-PDU、递增新鲜度计数器、发送。在此过程中,数据ID(16位)和新鲜度值以大端序计入(SWS SecOC 第33页)。

如果新鲜度源是C函数(CFUNC),则SecOC通过SecOC_GetTxFreshness获取该值。如果Freshness Manager应自行提供截短的值,则使用SecOC_GetTxFreshnessTruncData([SWS_SecOC_00231]、[SWS_SecOC_00230])。SecOC通过SecOC_SPduTxConfirmation或通过RTE报告发送触发([SWS_SecOC_00232]、[SWS_SecOC_00233])。未使用的区域填充为SecOCTxPduUnusedAreasDefault([SWS_SecOC_00269])。

直接传输时的认证(总线接口)ComPduRSecOCFreshness ManagerCsmUntere Schicht (z. B. CanIf)PduR_ComTransmit()SecOC_IfTransmit()Authentic I-PDU 完整in eigenen Puffer kopierenE_OKUse Case: SecOC_MainFunctionTx(下一次调用)SecOC_GetTxFreshness()或 SecOC_GetTxFreshnessTruncData()E_OK, Freshness ValueCsm_MacGenerate(DataToAuthenticator)AuthenticatorAsynchroner Csm-Job: Ergebnis per CallbackSecured I-PDU bilden:Authentic I-PDU | Freshness Value(截断)| AuthenticatorPduR_SecOCTransmit()Transmit (Secured I-PDU)SecOC_SPduTxConfirmation()Use Case: 确认TxConfirmation(result)SecOC_TxConfirmation(result)PduR_SecOCIfTxConfirmation(result)TxConfirmation(result)

时序图:Authentic I-PDU的接收与主函数下一次运行中的身份验证是解耦的。来源:SWS SecOC 第40页、[SWS_SecOC_00231]、[SWS_SecOC_00232]、[SWS_SecOC_00063]

在触发传输时,必须事先发生过至少一次SecOC_IfTransmit。在没有可用数据的情况下,SecOC_TriggerTransmit响应以E_NOT_OK,并且不应使用AlwaysTransmit(SWS SecOC 第44页、[SWS_SecOC_00127])。

对于SECOC_TPPDU,SecOC_TpTransmit启动该过程。SecOC使用PduR_SecOCTpCopyTxData分段获取数据([SWS_SecOC_00253]、[SWS_SecOC_00254])。TP模块随后通过SecOC_CopyTxData进行读出([SWS_SecOC_00129])。

使用传输协议的认证 (SECOC_TPPDU)ComPduRSecOCCanTpPduR_ComTransmit()SecOC_TpTransmit()loop直到 Authentic I-PDU 复制完成PduR_SecOCTpCopyTxData()Com_CopyTxData()BUFREQ_E_BUSY:在下一次 Main-Function 调用中重试BUFREQ_E_NOT_OK: AbbruchUse Case: SecOC_MainFunctionTxauthenticate()PduR_SecOCTransmit()CanTp_Transmit()loopje N-PDUPduR_CanTpCopyTxData()SecOC_CopyTxData()PduR_CanTpTxConfirmation()SecOC_TpTxConfirmation()PduR_SecOCTpTxConfirmation()Com_TpTxConfirmation()

时序图:在TP发送时,SecOC向上为TP接收端,向下为TP数据源。来源:SWS SecOC 第109页、[SWS_SecOC_00253]、[SWS_SecOC_00254]

通过SecOCTxSecuredPduCollection,Secured I-PDU被划分为两条消息:

  • Authentic I-PDU,
  • 由认证数据和Message Linker组成的Cryptographic I-PDU。

两者在同一周期中发送([SWS_SecOC_00201]、[SWS_SecOC_00209]、[SWS_SecOC_00202])。仅当两个部分都以E_OK确认时,向上的确认才为E_OK([SWS_SecOC_00270])。

接收与校验

校验包含六个步骤([SWS_SecOC_00040]):

  1. 解析Authentic I-PDU、新鲜度值和验证码,
  2. 向Freshness Manager查询新鲜度值,
  3. 构建待校验数据,
  4. 校验 Authentication Information,
  5. 确认 Freshness Manager,
  6. 将 Authentic I-PDU 传递给上层。

SecOC 首先将 Secured I-PDU 复制到自己的缓冲区中,并在主函数的下一次运行中对其进行校验(SWS SecOC 第50页)。通过总线接口,它经由 SecOC_RxIndication 传入([SWS_SecOC_00124])。如果静态长度的 I-PDU 短于配置值,则会被静默丢弃([SWS_SecOC_00268])。Authentic I-PDU 的长度来自配置、下层或报头([SWS_SecOC_00257]、[SWS_SecOC_00258]、[SWS_SecOC_00259])。

通过总线接口接收及新鲜度处理PduRSecOCSchMFreshness ManagerCsmSecOC_RxIndication()Secured I-PDU puffern,Build 计数器和 Verify 计数器 = 0SecOC_MainFunctionRx()loopAuthentication verify attempts [MAC-Verifikation fehlgeschlagen]loopAuthentication build attempts [GetRxFreshness()==E_BUSY || Csm_MacVerify()==E_BUSY]GetRxFreshness()Freshness ValueCsm_MacVerify()VerifikationsergebnisVerificationStatus()

时序图:新鲜度查询与 MAC 校验在 Rx 主函数上下文中以两个嵌套的重试循环运行。来源:SWS SecOC 第103页、[SWS_SecOC_00237]、[SWS_SecOC_00238]

在使用传输协议时,接收过程如下进行([SWS_SecOC_00130]、[SWS_SecOC_00128]、[SWS_SecOC_00125]):

  • SecOC_StartOfReception 为整个 Secured I-PDU 预留缓冲区,
  • SecOC_CopyRxData 接收各个分段,
  • SecOC_TpRxIndication 报告接收结束。

只有在完全接收后,SecOC 才允许传递 Authentic I-PDU([SWS_SecOC_00255])。根据图解的解读:向上层的传递应该在成功验证之后才开始(SWS SecOC 第112页)。 问题 Q-d5c1780d034c722e (未决)与此不同的是,R23-11 版本在 SecOC_StartOfReception 中就已经转发了接收开始(SWS SecOC 第54页)。

使用传输协议进行校验CanTpPduRSecOCComPduR_CanTpStartOfReception()SecOC_StartOfReception()BUFREQ_OK(用于完整 Secured I-PDU 的缓冲区)loopje N-PDUPduR_CanTpCopyRxData()SecOC_CopyRxData()BUFREQ_OKPduR_CanTpRxIndication()SecOC_TpRxIndication(E_OK)Use Case: SecOC_MainFunctionRxverify()opt校验成功(按示意图所示顺序解释)PduR_SecOCTpStartOfReception()Com_StartOfReception()loop直至所有数据复制完毕PduR_SecOCTpCopyRxData()Com_CopyRxData()PduR_SecOCTpRxIndication()Com_TpRxIndication()

时序图:SecOC 缓冲整个 Secured I-PDU;(解读)向 Com 的传递仅在成功验证后进行。来源:SWS SecOC 第112页、[SWS_SecOC_00255]

使用 SecOCRxSecuredPduCollection 时,SecOC 仅在具有匹配 Message Linker 的 Authentic 和 Cryptographic I-PDU 均就绪时才执行校验([SWS_SecOC_00203]、[SWS_SecOC_00211])。为此,它维护独立的缓冲区([SWS_SecOC_00204]):

  • 校验成功后,两个缓冲区均被清空([SWS_SecOC_00207])。
  • 校验失败后,两者均被保留,并在每次新接收时重新执行校验([SWS_SecOC_00208])。

溢出策略 QUEUE 排除了这种划分([SWS_SecOC_CONSTR_00265])。

Freshness Manager、验证状态与 Override

SecOC 本身不管理新鲜度。根据 SecOCQueryFreshnessValue(RTE 或 CFUNC)和 SecOCUseAuthDataFreshness,它查询 GetRxFreshness 或 GetRxFreshnessAuthData。在第二种情况下,它还会传递所接收 PDU 的配置片段([SWS_SecOC_00244]、[SWS_SecOC_00245]、[SWS_SecOC_00246]、[SWS_SecOC_00247])。同时还会附带截断的 Freshness Value 以及先前的验证尝试次数([SWS_SecOC_91007]、[SWS_SecOC_91006])。

这些值以 SecOC_FreshnessArrayType 形式提供([SWS_SecOC_91012]),最高有效位位于第一个字节中,即大端序(Big Endian)(SWS SecOC 第80页)。返回值 E_BUSY 表示该值暂时不可用([SWS_SecOC_91002])。

每次尝试的结果由 SecOC_VerificationStatusType 汇总:freshnessValueID 加上来自 SecOC_VerificationResultType 的值,例如 SECOC_FRESHNESSFAILURE([SWS_SecOC_00160]、[SWS_SecOC_00149])。根据模式,它通过 BOTH、FAILURE_ONLY 或 NONE 进行报告([SWS_SecOC_00271]、[SWS_SecOC_91016])。可选地,仅传递最终状态([SWS_SecOC_00272])。Freshness Manager 通过 SecOC_VerificationStatusCallout 接收该结果([SWS_SecOC_00119]、[SWS_SecOC_00243])。

SecOC_VerifyStatusOverride 有针对性地覆盖验证([SWS_SecOC_00122])。在 R20-11 中,SecOC_OverrideStatusType 包含 …DROP_UNTIL_NOTICE、…DROP_UNTIL_LIMIT、…CANCEL 和 …PASS_UNTIL_NOTICE 等([SWS_SecOC_00991])。R23-11 补充了 …SKIP_UNTIL_LIMIT 和 …PASS_UNTIL_LIMIT(SWS SecOC 第102页)。在发送端,SecOC_SendDefaultAuthenticationInformation 针对每个 Freshness Value ID 启用或禁用默认模式([SWS_SecOC_91013])。

配置与实例关联

配置分为三个容器:

核心参数包括 SecOCDataId、SecOCFreshnessValueId、新鲜度与 Authenticator 长度以及 CsmJob 引用(SWS SecOC 第106页)。如果 CSM 作业异步工作,SecOC 需要为此使用厂商特定的回调(SWS SecOC 第78页)。

某些端口仅在相应配置下存在:

  • SendDefaultAuthenticationInformation 仅在设置了默认模式时存在([SWS_SecOC_91020]),
  • FreshnessManagement 仅在通过 RTE 查询时存在([SWS_SecOC_91001])。

仅当设置了 SecOCEnableSecurityEventReporting 时才会报告 Security Events([SWS_SecOC_00273])。

发生错误时的行为

在发送端适用以下规则:

  • 当出现可恢复的 CSM 错误(例如 E_BUSY 或 QUEUE_FULL)时,SecOC 保留 Authentic I-PDU 并在下一次运行中重试([SWS_SecOC_00151])。
  • 若达到尝试次数上限,它会向 DET 报告 SECOC_E_CRYPTO_FAILURE([SWS_SecOC_00155])。
  • 当达到上限、出现新鲜度 E_NOT_OK 或不可恢复的错误时,若已使能,SecOC 将使用默认模式([SWS_SecOC_00229])。
  • 若未配置模式,SecOC 将中止该任务(SWS SecOC 第124页)。
  • 在配置了模式但未使能的情况下,SecOC 大概也会中止。 问题 Q-a3c1cc4b9b925ed4 (未决)
txfehler a SecOC_MainFunctionTx: Authentifizierung starten b Freshness abfragen, Csm_MacGenerate a->b c Ergebnis? b->c d 保留 Authentic I-PDU, 下一次 Main-Function 调用 c->d behebbar (E_BUSY, QUEUE_FULL) g Default-Senden per SecOC_SendDefaultAuthenticationInformation freigegeben? c->g Freshness E_NOT_OK 或 不可恢复 (E_NOT_OK, KEY_FAILURE) j 通过 PduR 发送 Secured I-PDU c->j E_OK e SecOCAuthenticationBuildAttempts erreicht? d->e e->b 不 e->g 是(额外向 Det 报告: SECOC_E_CRYPTO_FAILURE) h 来自 SecOCDefaultAuthenticationInformationPattern 的 Freshness Value 和 Authenticator g->h 是 i Authentic I-PDU entfernen, Sendeauftrag abbrechen g->i 未配置模式; Interpretation: 在模式未启用的情况下同样适用 h->j

活动图:可恢复错误导致重试,达到限制或硬错误导致采用默认模式或中止。来源:[SWS_SecOC_00151]、[SWS_SecOC_00155]、[SWS_SecOC_00229]、SWS SecOC 第124页

SecOC 如下处理相邻层的中止和错误:

  • SecOC 立即将 SecOC_[If|Tp]CancelTransmit 向下传递并释放所有缓冲区(SWS SecOC 第48页、[SWS_SecOC_91009])。
  • 如果下层报告 E_NOT_OK,SecOC 仅取消向上层的确认。
  • 若 TP 发送时的数据检索返回 BUFREQ_E_BUSY,SecOC 会在下一次运行中重试([SWS_SecOC_00260])。
  • 无论在发送还是接收时,BUFREQ_E_NOT_OK 都会导致立即中止([SWS_SecOC_00266]、[SWS_SecOC_00267])。

在接收端,SecOC 为每个 PDU 维护一个构建计数器和一个校验计数器,两者均从 0 开始([SWS_SecOC_00234]、[SWS_SecOC_00235]):

rxverifikation a Secured I-PDU 已完整接收 Build 计数器 = 0,Verify 计数器 = 0 b Freshness abfragen (SecOC_GetRxFreshness / …AuthData) a->b c Ergebnis Freshness? b->c d Build 计数器 + 1 c->d E_BUSY h Verwerfen: SECOC_FRESHNESSFAILURE c->h E_NOT_OK i Csm_MacVerify c->i E_OK e Build 计数器 >= SecOCAuthenticationBuildAttempts? d->e f 在下一次 SecOC_MainFunctionRx 中重试 e->f 不 g Verwerfen: SECOC_AUTHENTICATIONBUILDFAILURE e->g 是 f->b j Ergebnis Verifikation? i->j j->d E_BUSY, QUEUE_FULL k Verify 计数器 + 1, Build 计数器 = 0 j->k MAC 无效 m Verwerfen: SECOC_VERIFICATIONFAILURE j->m 不可恢复 (E_NOT_OK, KEY_FAILURE) n SECOC_VERIFICATIONSUCCESS, Authentic I-PDU an obere Schicht j->n 成功的 l Verify 计数器 >= SecOCAuthenticationVerifyAttempts? k->l l->b 否:下一个有效 Freshness Value l->m 是

活动图:构建与校验计数器控制接收时的重试与丢弃。来源:SWS SecOC 第42页、PRS SecOC 第19页、[SWS_SecOC_00239]、[SWS_SecOC_00241]

针对新鲜度 E_NOT_OK,R20-11 并列包含了两项 Requirement。其中一项立即以 SECOC_FRESHNESSFAILURE 丢弃 PDU([SWS_SecOC_00256])。另一项则计一次失败尝试,并在达到上限时向 DET 报告 SECOC_E_FRESHNESS_FAILURE([SWS_SecOC_00248])。此外,Security Events 会发送给 IdsM,例如以 DataId 作为上下文的 SECOC_SEV_MAC_VERIFICATION_FAILED([SWS_SecOC_00274]、[SWS_SecOC_00275])。

进一步详细证据

基于负载中所含规范摘录的 AI 生成指南。对于 R20-11,规范性依据为各 Requirement;文档引用部分来自其他版本。不可替代规范本身。

Secure Onboard Communication (SecOC)

Provides cryptographic authentication and freshness protection for critical communication PDUs.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 SecOC_Init [SWS_SecOC_00106] 📄 PDF

void SecOC_Init (const SecOC_ConfigType* config);

Initializes the the Sec OC module. Successful initialization leads to state Sec OC_ INIT. In configurations, in which Sec OC is assigned to more than one partition (i.e. Sec OC_ Main Functions are mapped to partition s), Sec OC may provide one init AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_SecureOnboardCommunication function per partition. The decision on whether a single Sec OC_ Init() function or one per partition is provided is implementation - specific. In case a given implementation provides one Sec OC_ Init() function per partition, it is up to the implementation to devise a naming pattern that prevents name clashes among the different Sec OC_ Init() functions (e.g., by adding a suffix containing short name the Ecuc Partition.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4620b5d490e2 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 SecOC_Init 用于初始化模块 SecOC,并在成功完成后将其转换为状态 SecOC_INIT [SWS_SecOC_00106]。通过来自 SecOC.h 的接口进行调用,其服务 ID 为 0x01 [SWS_SecOC_00106]。

参数与返回值

  • 传入参数:通过输入参数 config 传递指向所选配置结构(类型为 SecOC_ConfigType)的指针 [SWS_SecOC_00106]。
  • 返回值:该函数无返回值(void)[SWS_SecOC_00106]。

并发与分区

SecOC_Init 的执行被指定为非可重入(Non Reentrant)[SWS_SecOC_00106]。

特殊规定适用于具有多个分区的系统:若模块 SecOC 分配给多个分区(通过将诸如 SecOC_MainFunction 的主要功能函数分布到各个分区),则每个分区可以存在一个 Init 函数 [SWS_SecOC_00106]。提供单一中心函数 SecOC_Init 还是为每个分区提供独立函数取决于具体实现 [SWS_SecOC_00106]。如果提供分区专属函数,则实现必须防止命名冲突,例如通过附加带有各 EcucPartition 短名称的后缀 [SWS_SecOC_00106]。

本说明由 AI 基于 AUTOSAR Classic R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_DeInit [SWS_SecOC_00161] 📄 PDF

void SecOC_DeInit (void);

This service stops the secure onboard communication. All buffered I - PDU are removed and have to be obtained again, if needed, after Sec OC_ Init has been called. By a call to Sec OC_ De Init the AUTOSAR Sec OC module is put into a not in itialized state (Sec OC_ UNINIT).

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: c3c9650a2dbc 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

同步函数 SecOC_DeInit 终止 SecOC 模块中板载安全通信的运行,并将其转换至状态 SecOC_UNINIT [SWS_SecOC_00161]。该函数在头文件 SecOC.h 中声明,具有服务 ID 0x05 以及签名 void SecOC_DeInit(void) [SWS_SecOC_00161]。它既不处理输入参数也不处理输出参数,并且不提供返回值 [SWS_SecOC_00161]。

缓冲区清理与状态转换

通过调用 SecOC_DeInit,模块中暂存的所有 I-PDU 都将被丢弃并从缓冲区中移除 [SWS_SecOC_00161]。若在安全通信重新启动后仍需要这些数据,则必须在重新调用 SecOC_Init 后再次获取 [SWS_SecOC_00161]。

并发性与限制

执行去初始化适用固定的规范和约束条件 [SWS_SecOC_00161]:

  • 不可重入:该接口被指定为不可重入(Non Reentrant),因此不得并发执行 [SWS_SecOC_00161]。
  • 时序条件:调用后模块保持在未初始化状态,因此后续的通信服务必须强制重新调用 SecOC_Init [SWS_SecOC_00161]。

此使用说明是基于 AUTOSAR Classic 规范 R20-11 自动生成的。

实现者指南即将推出(复杂度 I1)

函数 SecOC_IfTransmit [SWS_SecOC_00112] 📄 PDF

Std_ReturnType SecOC_IfTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

Requests transmission of a PDU.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4ad6d7766599 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步服务函数 SecOC_IfTransmit 用于在模块 SecOC 中请求传输 PDU [SWS_SecOC_00112]。它具有服务 ID 0x49,并通过头文件 SecOC.h 声明 [SWS_SecOC_00112]。

该函数需要两个输入参数 [SWS_SecOC_00112]:

  • TxPduId:要传输的 PDU 的标识符(类型 PduIdType)。
  • PduInfoPtr:指向类型为 PduInfoType 的结构的指针,该结构提供数据长度以及指向 PDU 数据和元数据的指针。

不存在输入/输出参数或纯输出参数 [SWS_SecOC_00112]。

返回值与错误处理

作为同步返回值,返回类型为 Std_ReturnType 的状态 [SWS_SecOC_00112]:

发生错误时,请求的失败直接通过 E_NOT_OK 指示;在函数规范中未单独指定针对 DET 或 DEM 的特定错误代码 [SWS_SecOC_00112]。

并发性与限制

关于并发性,该函数对于不同的 PDU ID 是可重入的,但对于相同的 PDU ID 是不可重入的 [SWS_SecOC_00112]。

本使用说明由 AI 基于 AUTOSAR 规范生成。

函数 SecOC_TpTransmit [SWS_SecOC_91008] 📄 PDF

Std_ReturnType SecOC_TpTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

Requests transmission of a PDU.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4b4f6d06f1cb 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

具有服务 ID 0x53 的同步接口 SecOC_TpTransmit 用于在 SecOC 模块中请求 PDU 传输,并通过头文件 SecOC.h 声明 [SWS_SecOC_91008]。它接收发送请求并在模块内部启动进一步处理。

使用与交互

作为输入参数,该函数需要 PDU 标识符 TxPduId 以及指向类型为 PduInfoType 的常量的指针 PduInfoPtr,该常量包含关于 PDU 长度的信息以及指向有效载荷数据和元数据的指针 [SWS_SecOC_91008]。功能交互由配置决定:如果 SecOCPduType 配置为 SECOC_TPPDU,则对 SecOC_TpTransmit 的调用将触发 Authentic I-PDU 的具体发送操作 [SWS_SecOC_00253]。

返回值和并发性

调用结果通过 Std_ReturnType 返回:值 E_OK 确认发送请求已被成功接受,而 E_NOT_OK 表示请求已被拒绝 [SWS_SecOC_91008]。关于并发行为,该函数针对不同的 PDU 标识符实现为可重入,但绝不允许针对相同的 TxPduId 可重入地调用 [SWS_SecOC_91008]。

解释:在实践中,使用 E_NOT_OK 拒绝请求可能主要归因于 PduInfoPtr 中的无效指针值,或者归因于相同 PDU 的传输已被阻塞或正在进行中。 问题 Q-4c6165f6330c4bc2 (未决)

本使用说明基于 AUTOSAR R20-11 规范自动创建。

实现者指南即将推出(复杂度 I1)

函数 SecOC_IfCancelTransmit [SWS_SecOC_00113] 📄 PDF

Std_ReturnType SecOC_IfCancelTransmit (PduIdType TxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 93fdfc8c106e 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

同步接口函数 SecOC_IfCancelTransmit 在下层通信模块中请求取消正在进行的 PDU 传输 [SWS_SecOC_00113]。它通过头文件 SecOC.h 声明,并具有服务 ID 0x4a [SWS_SecOC_00113]。通过类型为 PduIdType 的传入参数 TxPduId 传递应取消发送过程的 PDU [SWS_SecOC_00113]。不存在额外的输入或输出参数 [SWS_SecOC_00113]。

返回值与执行

取消请求的结果通过类型为 Std_ReturnType 的返回值同步传达给调用者 [SWS_SecOC_00113]:

由于未针对该函数指定特定的错误代码或向开发或诊断错误捕获(DET/DEM)发送的错误通知,因此仅使用返回值进行错误检测 [SWS_SecOC_00113]。

并发性与限制

关于并行调用,SecOC_IfCancelTransmit 对于不同的 PDU 标识符是可重入的,但对于相同的 TxPduId 明确是不可重入的 [SWS_SecOC_00113]。因此,调用模块必须通过适当的同步确保不会有多个实例同时对同一 PDU 发起发送取消。

此使用说明基于 AUTOSAR CP R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TpCancelTransmit [SWS_SecOC_91009] 📄 PDF

Std_ReturnType SecOC_TpCancelTransmit (PduIdType TxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 507f9341fb59 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 SecOC_TpCancelTransmit 用于请求中止底层通信模块中正在进行的 PDU 传输 [SWS_SecOC_91009]。它通过头文件 SecOC.h 声明,并具有服务 ID 0x54 [SWS_SecOC_91009]。

作为输入参数,传递类型为 PduIdType 的标识符 TxPduId,该标识符唯一标识待中止的发送 PDU [SWS_SecOC_91009]。中止请求的结果通过类型为 Std_ReturnType 的返回值同步报告 [SWS_SecOC_91009]:

在并发性方面,该函数对于不同的 PDU ID 是可重入的,但对于相同的 PDU ID 显式非可重入 [SWS_SecOC_91009]。因此,调用方必须确保避免使用相同的 TxPduId 进行并行调用。由于有效负载未为 Default Error Tracer (DET) 或 Diagnostic Event Manager (DEM) 规定特定错误代码,因此调用方上下文中的直接错误处理推测主要通过评估返回值 E_NOT_OK 进行 [SWS_SecOC_91009]。 问题 Q-c1f907444c4ca270 (未决)

本使用说明由系统自动生成,且基于 AUTOSAR R20-11 规范。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TpCancelReceive [SWS_SecOC_91010] 📄 PDF

Std_ReturnType SecOC_TpCancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 7bc4b1ba75bb 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 SecOC_TpCancelReceive 用于请求中止底层传输协议模块中正在进行的 PDU 接收过程 [SWS_SecOC_91010]。通过唯一的输入参数 RxPduId 向模块传递待中止 PDU 的唯一标识 [SWS_SecOC_91010]。

返回值与执行

关于取消成功的反馈直接通过类型为 Std_ReturnType 的返回值给出 [SWS_SecOC_91010]:

该函数的规范数据中未规定特定错误代码、开发错误(DET)或生产错误(DEM)。解释:规范中提及的目标模块(“destination module”)推测是指接收中止请求的底层传输协议模块。 问题 Q-bce6ed77e65a6b9b (未决)

并发性与集成

在并发性方面,该函数被声明为不可重入(Non Reentrant)[SWS_SecOC_91010]。因此不得进行并发或中断性调用;调用方软件实体必须相应地协调访问。该函数具有服务 ID 0x4c,并通过头文件 SecOC.h 声明 [SWS_SecOC_91010]。

本使用说明由 AI 生成,并完全基于 AUTOSAR 版本 R20-11 的规范。

实现者指南即将推出(复杂度 I1)

函数 SecOC_VerifyStatusOverride [SWS_SecOC_00122] 📄 PDF

Std_ReturnType SecOC_VerifyStatusOverride (uint16 ValueID, SecOC_OverrideStatusType overrideStatus, uint8 numberOfMessagesToOverride);

Service SecOC_VerifyStatusOverride.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 87867716fd61 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 SecOC_VerifyStatusOverride 允许应用程序针对性地覆盖 SecOC 的验证和转发行为,以便无论实际验证结果如何均接受或丢弃 I-PDU,并控制错误处理 [SWS_SecOC_00122]。

参数与调用上下文

寻址方式取决于模块配置:若 SecOCOverrideStatusWithDataId 设置为 FALSE,则 Value ID 标识所有关联 Secured I-PDU 的 Freshness Value;若该参数为 TRUE,则 Value ID 直接表示 Secured I-PDU 的 Data ID [SWS_SecOC_00122]。通过 overrideStatus 定义期望的行为及其时间有效性。计数器 numberOfMessagesToOverride 确定要按顺序覆盖的验证次数,但仅在模式 SECOC_OVERRIDE_DROP_UNTIL_LIMIT、SECOC_OVERRIDE_SKIP_UNTIL_LIMIT 和 SECOC_OVERRIDE_PASS_UNTIL_LIMIT 下才会被评估 [SWS_SecOC_00122]。

对于模式 SECOC_OVERRIDE_PASS_UNTIL_NOTICE、SECOC_OVERRIDE_SKIP_UNTIL_LIMIT、SECOC_OVERRIDE_PASS_UNTIL_LIMIT 和 SECOC_OVERRIDE_SKIP_UNTIL_NOTICE,必须强制将 SecOCEnableForcedPassOverride 配置为 TRUE [SWS_SecOC_00122]。

并发性与返回值

该函数对于不同的 Freshness Value ID 是可重入的,但对于相同的 Freshness Value ID 是非可重入的 [SWS_SecOC_00122]。成功的调用返回 E_OK,而失败的调用则以 E_NOT_OK 确认 [SWS_SecOC_00122]。

验证过程中的相互配合

设置的覆盖会介入接收路径的处理逻辑:

  • 如果使用分离的 Authentic 和 Cryptographic I-PDU(SecOCRxSecuredPduCollection),一旦接收到具有匹配 Message Linker 的两个 PDU,overrideStatus 便控制该行为 [SWS_SecOC_00203]、[SWS_SecOC_00206]、[SWS_SecOC_00211]。
  • 即使在超过 SecOCAuthenticationBuildAttempts 或 SecOCAuthenticationVerifyAttempts 以及发生不可恢复的错误(如 KEY_FAILURE)时,验证结果和 PDU 转发也优先遵循 overrideStatus [SWS_SecOC_00240]、[SWS_SecOC_00241]。

本段文本由 AI 生成,基于 AUTOSAR 规范的要求。

实现者指南即将推出(复杂度 I2)

函数 SecOC_SendDefaultAuthenticationInformation [SWS_SecOC_91013] 📄 PDF

Std_ReturnType SecOC_SendDefaultAuthenticationInformation (uint16 FreshnessValueID, boolean sendDefaultAuthenticationInformation);

The service provides the ability to enable the sending of un - authenticated PDU to lower layer. (example: in case authentication build counter has reached the configuration value Sec OCAuthentication Build Attempts or the query of the freshness function returns E_ NOT_ OK or the calculation of the authenticator has returned a non - recoverable error such as returning E_ NOT_ OK or KEY_ FAILURE). T his service is optional (the service is available only if Sec OCDefault Authentication Information Pattern is configured). If the service is not available or the service is available but the service was called with send Default

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 78b64ca2ff88 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数 SecOC_SendDefaultAuthenticationInformation([SWS_SecOC_91013])允许针对性地使能或禁止向底层发送未经身份验证的 I-PDU。该服务通过 SecOC.h 声明,并通过标志 send Default Authentication Information 控制特定 Freshness Value ID 的行为。请求成功时函数返回 E_OK,否则返回 E_NOT_OK([SWS_SecOC_91013])。

交互与错误行为

该函数是可选的,仅在配置了参数 SecOCDefaultAuthenticationInformationPattern 时可用([SWS_SecOC_91013])。当身份验证信息的生成失败时——例如当达到计数器 SecOCAuthenticationBuildAttempts、新鲜度函数返回 E_NOT_OK,或身份验证器的计算返回不可恢复的错误如 KEY_FAILURE 或 E_NOT_OK 时,该行为生效([SWS_SecOC_91013]、[SWS_SecOC_00229]):

  • 如果使用 TRUE 调用了该服务,则模块将模式 SecOCDefaultAuthenticationInformationPattern 用于新鲜度值和身份验证器的所有字节,以构建身份验证信息,并且不中止发送请求([SWS_SecOC_91013]、[SWS_SecOC_00229])。
  • 如果该服务不可用,或者针对相关 ID 使用 FALSE 进行了调用,则模块从其内部缓冲区中移除真实 I-PDU 并中止传输([SWS_SecOC_91013]、[SWS_SecOC_00229])。

并发性

对于相同的 Freshness Value ID,该函数是不可重入的,但对于不同的 ID,可以重入调用([SWS_SecOC_91013])。

本使用说明是基于 AUTOSAR R20-11 的规范自动生成的。

实现者指南即将推出(复杂度 I1)

函数 SecOC_RxIndication [SWS_SecOC_00124] 📄 PDF

void SecOC_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

Indication of a received PDU from a lower layer communication interface module.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f7c10da93bc2 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

底层通信接口模块调用同步接口函数 SecOC_RxIndication(服务 ID 0x42),以向 SecOC 模块报告接收到 PDU [SWS_SecOC_00124]。调用时,RxPduId 标识所接收的 PDU,而通过 PduInfoPtr 传递指向 PDU 信息的指针。该结构包含有效负载长度 SduLength、缓冲区指针 SduDataPtr 以及该 PDU 的关联元数据 [SWS_SecOC_00124]。该函数没有返回值,并通过头文件 SecOC.h 声明 [SWS_SecOC_00124]。

错误处理与长度检查

对于静态配置的 I-PDU 的接收(EcuC 参数 DynamicLength 等于 FALSE 的受保护、真实或加密 I-PDU),适用特定的错误检查:如果接收到的长度小于配置的长度,SecOC 模块将以静默方式丢弃该 I-PDU [SWS_SecOC_00268]。解释:由于函数返回 void,推测错误或不完整的 I-PDU 会在不向调用层提供反馈的情况下被丢弃。 问题 Q-6e9a176383e1983b (未决)

并发性与限制

对于具有不同 PDU ID 的调用,SecOC_RxIndication 的执行是可重入的,但对于相同的 PDU ID 显式非可重入 [SWS_SecOC_00124]。因此,调用模块必须通过其流程控制确保阻止具有相同 RxPduId 的并行调用。

本使用说明由自动化系统生成,且基于 AUTOSAR 规范 R20-11。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TpRxIndication [SWS_SecOC_00125] 📄 PDF

void SecOC_TpRxIndication (PduIdType id, Std_ReturnType result);

Called after an I - PDU has been received via the TP API, the result indicates whether the transmission was successful or not.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 4e2c4fc6858d 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 SecOC_TpRxIndication 用作 SecOC 模块的回调接口,在通过传输协议 API(TP API)接收到 I-PDU 后被调用 [SWS_SecOC_00125]。通过该通知,SecOC 可以获知 I-PDU 的传输是已成功完成还是发生了传输错误 [SWS_SecOC_00125]。

根据 [SWS_SecOC_00125],该接口具有以下参数和属性:

  • id (PduIdType):所接收 I-PDU 的标识,针对该 I-PDU 指示接收事件。
  • result (Std_ReturnType):PDU 接收的结果,指示传输是成功还是失败。
  • 返回值:无(void);函数不向调用者返回任何状态值。

在并发性方面,SecOC_TpRxIndication 被指定为可重入的(Reentrant),并在服务 ID 0x45 下同步工作(Synchronous)[SWS_SecOC_00125]。该声明通过头文件 SecOC.h 提供 [SWS_SecOC_00125]。Interpretation:一旦 PDU 数据传输完全结束,通常可能会由传输层(如 PduR 或 TP 模块)触发调用。 问题 Q-6448356fa3609004 (未决)

规范中未为该函数定义特定的错误码、DET 检查或 DEM 错误条目 [SWS_SecOC_00125]。错误处理仅限于通过参数 result 传递传输结果,SecOC 模块据此决定是继续处理还是丢弃接收到的数据。

此使用说明基于 AUTOSAR CP R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TxConfirmation [SWS_SecOC_00126] 📄 PDF

void SecOC_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 73c9975309da 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 SecOC_TxConfirmation 由下层通信接口模块调用,以向 SecOC 模块同步确认 PDU 传输成功或发送失败 [SWS_SecOC_00126]。该服务没有返回值(void),在头文件 SecOC.h 中声明,并在服务 ID 0x40 下列出 [SWS_SecOC_00126]。

该函数需要两个输入参数 [SWS_SecOC_00126]:

  • TxPduId:已传输 PDU 的标识符(类型 PduIdType)。
  • result:传输结果(类型 Std_ReturnType),其值为传输成功时的 E_OK 或传输失败时的 E_NOT_OK。

错误处理与并发

下层的传输错误直接通过带有值 E_NOT_OK 的参数 result 传递 [SWS_SecOC_00126]。关于并发性,对于不同的 PDU ID,该调用是可重入的,但对于相同的 PDU ID 则被定义为不可重入 [SWS_SecOC_00126]。由于规范对此未做限制,具体的执行上下文推测可能位于下层模块的 Task 或中断级别。 问题 Q-8bb15b92df860fc1 (未决)

交互与转发

如果使用配置 SecOCTxSecuredPduCollection,SecOC 仅在对 Authentic I-PDU 和 Cryptographic I-PDU 均已调用 SecOC_TxConfirmation 时,才将确认转发给上层 [SWS_SecOC_00270]。

向上一层提供的结果状态遵循严格的条件:仅当对两个部分 PDU 的确认分别以 E_OK 传递时,转发调用的参数 result 才为 E_OK;否则状态为 E_NOT_OK [SWS_SecOC_00270]。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TpTxConfirmation [SWS_SecOC_00152] 📄 PDF

void SecOC_TpTxConfirmation (PduIdType id, Std_ReturnType result);

This function is called after the I - PDU has been transmitted on its network, the result indicates whether the transmission was successful or not.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ed0d4b6dacab 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 SecOC_TpTxConfirmation 用于确认通过网络传输的 I-PDU,并同步通知 SecOC 模块发送过程的成功或失败 [SWS_SecOC_00152]。

用法与参数

该调用在网络上对 I-PDU 进行物理传输之后发生 [SWS_SecOC_00152]。该接口在头文件 SecOC.h 中声明,且具有服务 ID 0x48 [SWS_SecOC_00152]。它接收两个输入参数且不返回任何返回值(void):

  • id(类型 PduIdType):已传输 I-PDU 的唯一标识 [SWS_SecOC_00152]。
  • result(类型 Std_ReturnType):指示网络上的传输是成功还是失败 [SWS_SecOC_00152]。

并发性与执行

根据规范,该函数应同步执行且完全可重入(Reentrant)[SWS_SecOC_00152]。因此,只要调用上下文有此要求,便可针对不同或相同的 I-PDU 并行调用它。

错误处理与交互

Payload 中未指出具体的 DET 或 DEM 错误代码。有关传输的错误处理主要通过传入的状态参数 result 进行,该参数告知模块发送过程是否成功 [SWS_SecOC_00152]。解释:该函数的主要用途可能是作为下层传输协议实例的回调接口,以便在大型或分段传输完成后反馈发送状态。 问题 Q-a2957406d76ee65f (未决)

本使用说明由 AI 生成,总结了 AUTOSAR 规范中针对 SecOC 模块的要求。

实现者指南即将推出(复杂度 I1)

函数 SecOC_TriggerTransmit [SWS_SecOC_00127] 📄 PDF

Std_ReturnType SecOC_TriggerTransmit (PduIdType TxPduId, PduInfoType* PduInfoPtr);

Within this API , the upper layer module (called module) shall check whether the available data fits into the buffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without changing Pdu Info Ptr.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: da47edaa7d8f 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步接口 SecOC_TriggerTransmit 用于复制请求传输的 SDU [SWS_SecOC_00127]。通过参数 TxPduId 寻址该 SDU,而 PduInfoPtr 作为输入和输出参数提供指向目标缓冲区的指针(SduDataPtr)以及缓冲区大小规格(SduLength)[SWS_SecOC_00127]。

使用与数据传递

在函数内部,模块检查待提供的数据是否能容纳在通过 PduInfoPtr->SduLength 报告的缓冲区大小中 [SWS_SecOC_00127]:

  • 若数据能够容纳,函数将其复制到缓冲区 PduInfoPtr->SduDataPtr 中,在 PduInfoPtr->SduLength 中填入实际复制的字节数,并返回 E_OK [SWS_SecOC_00127]。
  • 若存储空间不足,函数返回 E_NOT_OK,且不更改 PduInfoPtr 的内容 [SWS_SecOC_00127]。

错误处理与并发

若返回 E_NOT_OK,则未复制任何 SDU 数据。在此情况下,调用方不得评估或使用 PduInfoPtr,因为其可能包含 NULL 指针或指向无效数据 [SWS_SecOC_00127]。该函数对于不同的 PDU ID 是可重入的,但对于相同的 TxPduId 是非可重入的 [SWS_SecOC_00127]。该服务可通过头文件 SecOC.h 获取 [SWS_SecOC_00127]。

本使用说明基于 AUTOSAR Classic Platform Release R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_CopyRxData [SWS_SecOC_00128] 📄 PDF

BufReq_ReturnType SecOC_CopyRxData (PduIdType id, const PduInfoType* info, PduLengthType* bufferSizePtr);

This function is called to provide the received data of an I - PDU segment (N - PDU) to the upper layer. Each call to this function provides the next part of the I - PDU data. The si ze of the remaining buffer is written to the position indicated by buffer Size Ptr.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 35610f4482a7 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

调用同步函数 SecOC_CopyRxData 以将 I-PDU 分段(N-PDU)的接收数据传递给上层 [SWS_SecOC_00128]。每次调用提供 I-PDU 数据的下一个相应部分 [SWS_SecOC_00128]。该服务具有服务 ID 0x44,并通过头文件 SecOC.h 提供 [SWS_SecOC_00128]。

参数与缓冲区查询

参数 id 唯一标识接收到的 I-PDU [SWS_SecOC_00128]。通过指针 info 提供源缓冲区 SduDataPtr 和待复制的字节数 SduLength [SWS_SecOC_00128]。传入值为 0 的 SduLength 用于查询上层模块中当前可用的接收缓冲区;在此情况下,SduDataPtr 允许作为 NULL_PTR 传入 [SWS_SecOC_00128]。复制后,剩余缓冲区大小将写入由 bufferSizePtr 引用的位置 [SWS_SecOC_00128]。

返回值和并发性

该函数返回状态 BufReq_ReturnType [SWS_SecOC_00128]。数据传输成功时,它报告 BUFREQ_OK [SWS_SecOC_00128]。如果发生错误,则不会复制任何数据,并且函数返回 BUFREQ_E_NOT_OK [SWS_SecOC_00128]。SecOC_CopyRxData 被指定为可重入 [SWS_SecOC_00128]。

此使用说明基于 AUTOSAR CP R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_CopyTxData [SWS_SecOC_00129] 📄 PDF

BufReq_ReturnType SecOC_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);

Service SecOC_CopyTxData.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 42779c9fb9b6 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

调用同步且可重入的函数 SecOC_CopyTxData 以获取 I-PDU 分段(N-PDU)的发送数据 [SWS_SecOC_00129]。通过参数 info 传递目标缓冲区 SduDataPtr 以及要请求的字节量 SduLength [SWS_SecOC_00129]。在 SduLength 等于 0 的情况下调用允许查询可用数据量或通过参数 retry 报告状态更改;在此情况下,SduDataPtr 可以是 NULL_PTR [SWS_SecOC_00129]。模块通过 availableDataPtr 返回发送缓冲区中剩余的残留数据量 [SWS_SecOC_00129]。

重试与错误处理

缓冲区行为和重试行为通过 retry 控制 [SWS_SecOC_00129]:

  • 如果 retry 为 NULL_PTR,则已复制的数据可被立即释放 [SWS_SecOC_00129]。
  • 对于 TP_CONFPENDING,先前复制的数据将保留在缓冲区中以进行错误恢复 [SWS_SecOC_00129]。
  • TP_DATACONF 确认本次调用前传输的所有数据均可释放缓冲区 [SWS_SecOC_00129]。
  • TP_DATARETRY 触发从 TxTpDataCnt 定义的字节偏移量处开始重新复制已传输的数据 [SWS_SecOC_00129]。

作为返回值,该函数在复制过程成功时返回 BUFREQ_OK;若暂时没有足够的发送数据(从而调用方可以稍后重试),则返回 BUFREQ_E_BUSY;在常规失败时返回 BUFREQ_E_NOT_OK [SWS_SecOC_00129]。

并发性

该函数设计为可重入,因此推测允许针对不同 PDU 实例进行并行调用 [SWS_SecOC_00129]。 问题 Q-6420f2ca317efcb4 (未决)

本使用说明基于规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_StartReception [SWS_SecOC_00130] 📄 PDF

BufReq_ReturnType SecOC_StartOfReception (PduIdType id, const PduInfoType* info, PduLengthType TpSduLength, PduLengthType* bufferSizePtr);

Service SecOC_StartReception.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e711d8ef8bcc 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

在开始接收 N-SDU 时调用同步且可重入的函数 SecOC_StartReception,以检查连接并提供必要的接收缓冲区 [SWS_SecOC_00130]。此时 N-SDU 可以作为单帧(Single Frame, SF)接收,也可以跨多个 N-PDU 分段接收(First Frame, FF,后接 Consecutive Frames, CF)[SWS_SecOC_00130]。声明可通过头文件 SecOC.h 获取 [SWS_SecOC_00130]。

参数与缓冲区查询

  • id:所接收 I-PDU 的标识 [SWS_SecOC_00130]。
  • info:指向包含首帧或单帧有效负载数据及元数据的 PduInfoType 结构的指针;若数据和元数据均不可用,则传入 NULL_PTR [SWS_SecOC_00130]。
  • TpSduLength:待接收 N-SDU 的总长度。如果传入该参数的值为 0,则该服务返回当前最大可用缓冲区大小 [SWS_SecOC_00130]。
  • bufferSizePtr:用于可用接收缓冲区的输出参数,由传输协议模块用于计算块大小(Block Size, BS)[SWS_SecOC_00130]。

返回值与错误处理

  • BUFREQ_OK:连接已被接受,接收继续进行;bufferSizePtr 指明可用缓冲区大小(若没有所需大小的可用缓冲区,则报告 0)[SWS_SecOC_00130]。
  • BUFREQ_E_NOT_OK:连接被拒绝,接收中止;bufferSizePtr 保持不变 [SWS_SecOC_00130]。
  • BUFREQ_E_OVFL:无法提供所需长度的缓冲区;接收中止且 bufferSizePtr 保持不变 [SWS_SecOC_00130]。

此使用说明基于 AUTOSAR R20-11 自动生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_GetRxFreshness [SWS_SecOC_91007] 📄 PDF

Std_ReturnType SecOC_GetRxFreshness (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

Service SecOC_GetRxFreshness.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ef974f5cced3 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步接口函数 SecOC_GetRxFreshness 用于 SecOC 模块查询所接收受保护 I-PDU 的当前 Freshness 值 [SWS_SecOC_91007]。一旦完整接收到受保护 PDU 且为其配置指定了 SecOCQueryFreshnessValue == CFUNC 以及 SecOCUseAuthDataFreshness == FALSE,就会执行该调用 [SWS_SecOC_00247]、[SWS_SecOC_00250]。

该函数是可重入的 [SWS_SecOC_91007],并传递或期望以下参数:

  • SecOCFreshnessValueID:待查询 Freshness 值的标识符 [SWS_SecOC_91007]。
  • SecOCTruncatedFreshnessValue 和 SecOCTruncatedFreshnessValueLength:指向所接收 PDU 中包含的截断 Freshness 值的指针及其以位为单位的长度 [SWS_SecOC_91007]。
  • SecOCAuthVerifyAttempts:自 PDU 接收以来的先前验证尝试次数(从 0 开始,每次尝试失败时递增)[SWS_SecOC_91007]。
  • SecOCFreshnessValue 和 SecOCFreshnessValueLength:用于所确定 Freshness 值的输出缓冲区,以及用于其位长度的输入/输出参数 [SWS_SecOC_91007]。

查询结果控制 SecOC 中的进一步处理:

  • E_OK:Freshness 值已成功提供,并用于 Authenticator 计算 [SWS_SecOC_91007]。
  • E_NOT_OK:由于普遍问题或错误的 Freshness ID,提供失败 [SWS_SecOC_91007]。
  • E_BUSY:信息暂时不可用 [SWS_SecOC_91007]。在此情况下,SecOC 会递增 Authentication-Build-Counter,并且不进行身份验证的验证尝试 [SWS_SecOC_00236]。

此使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I2)

函数 SecOC_GetRxFreshnessAuthData [SWS_SecOC_91006] 📄 PDF

Std_ReturnType SecOC_GetRxFreshnessAuthData (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, const uint8* SecOCAuthDataFreshnessValue, uint16 SecOCAuthDataFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

Service SecOC_GetRxFreshnessAuthData.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 21909ecce4eb 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

当完全接收到安全 I-PDU 时,SecOC 模块会调用同步且可重入的函数 SecOC_GetRxFreshnessAuthData 来确定用于身份验证的当前新鲜度值([SWS_SecOC_91006]、[SWS_SecOC_00246])。该调用专门在针对相应 PDU 配置参数化了 SecOCQueryFreshnessValue = CFUNC 以及 SecOCUseAuthDataFreshness = TRUE 时发生([SWS_SecOC_00246]、[SWS_SecOC_00249])。

参数与传递值

  • 输入数据:传递标识符 SecOCFreshnessValueID、I-PDU 中包含的截短新鲜度值 SecOCTruncatedFreshnessValue 及其比特长度 SecOCTruncatedFreshnessValueLength,以及在尝试失败时递增的计数器 SecOCAuthVerifyAttempts([SWS_SecOC_91006])。
  • 身份验证数据:通过 SecOCAuthDataFreshnessValue 和 SecOCAuthDataFreshnessValueLength 可选传递已接收 PDU 的配置片段;起始位置和长度由 SecOCAuthDataFreshnessStartPosition 和 SecOCAuthDataFreshnessLen 确定([SWS_SecOC_91006]、[SWS_SecOC_00246])。
  • 结果数据:完整的新鲜度值通过输出缓冲区 SecOCFreshnessValue 提供,其比特长度充当输入输出参数 SecOCFreshnessValueLength([SWS_SecOC_91006])。

返回值与错误处理

该函数通过 E_OK 指示查询成功([SWS_SecOC_91006])。如果由于一般性问题或无效的新鲜度 ID 而无法提供新鲜度值,则返回 E_NOT_OK;在暂时不可用时,它返回 E_BUSY([SWS_SecOC_91006])。Interpretation:由于该函数作为 C 函数通过 CFUNC 接入,因此该实现可能由外部新鲜度管理模块完成。 问题 Q-01aa77b7235b9001 (未决)

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_GetTxFreshness [SWS_SecOC_91004] 📄 PDF

Std_ReturnType SecOC_GetTxFreshness (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

This API returns th e freshness value from the Most Significant Bits in the first byte in the array (Sec OCFreshness Value), in big endian format.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: dd021d2527b1 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 SecOC_GetTxFreshness 用于为待发送消息提供当前 Freshness 值,并通过头文件 SecOC.h 声明 [SWS_SecOC_91004]。根据 [SWS_SecOC_00231],如果在配置中设置了 SecOCQueryFreshnessValue = CFUNC 以及 SecOCProvideTxTruncatedFreshnessValue = FALSE,SecOC 模块会针对某个 PDU 调用此函数。解释:由于 SecOC 会在相应配置下执行该调用,因此该函数可能必须作为 Callout 由外部组件提供。 问题 Q-99a14f896ffddf5f (未决)

该接口使用以下参数 [SWS_SecOC_91004]:

  • SecOCFreshnessValueID(In):所请求 Freshness 值的数值标识符。
  • SecOCFreshnessValueLength(InOut):传递或接收所提供 Freshness 值的位长度。
  • SecOCFreshnessValue(Out):指向字节数组的指针,用于以大端格式接收 Freshness 值,从首字节中的最高有效位开始。

类型为 Std_ReturnType 的返回值指示提供结果 [SWS_SecOC_91004]:

  • E_OK:Freshness 值已成功提供。
  • E_BUSY:Freshness 信息暂时无法提供。
  • E_NOT_OK:请求失败,因为无法针对该 ID 或根本无法确定任何值。

本使用说明由自动生成,完全基于 AUTOSAR 版本 R20-11 的规范。

实现者指南即将推出(复杂度 I1)

函数 SecOC_GetTxFreshnessTruncData [SWS_SecOC_91003] 📄 PDF

Std_ReturnType SecOC_GetTxFreshnessTruncData (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength, uint8* SecOCTruncatedFreshnessValue, uint32* SecOCTruncatedFreshnessValueLength);

Service SecOC_GetTxFreshnessTruncData.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 2ae3128a39ae 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 SecOC_GetTxFreshnessTruncData 由 SecOC 模块调用,以便在发送过程(TX)中查询待传输 Secured I-PDU 的完整 Freshness 值以及截断的 Freshness 值(Truncated Freshness)[SWS_SecOC_91003]。仅当针对该 PDU 配置设置了 SecOCQueryFreshnessValue = CFUNC 以及 SecOCProvideTxTruncatedFreshnessValue = TRUE 时,才会进行该调用 [SWS_SecOC_00230]。

该接口传递以下参数 [SWS_SecOC_91003]:

  • SecOCFreshnessValueID (in):所请求 Freshness 值的标识符。
  • SecOCFreshnessValue (out):用于当前完整 Freshness 值的目标缓冲区。
  • SecOCFreshnessValueLength (inout):指定所提供新鲜度值的长度(以位为单位)。
  • SecOCTruncatedFreshnessValue (out):用于嵌入 Secured I-PDU 中的截断 Freshness 值的可选缓冲区。
  • SecOCTruncatedFreshnessValueLength (inout):传递截断 Freshness 的配置长度;该值可根据需要由函数进行调整或保持不变。

作为返回值,该函数在成功提供时返回 E_OK;若该信息暂时不可用,则返回 E_BUSY;若因普遍问题或特定于所传递 ID 的问题导致提供失败,则返回 E_NOT_OK [SWS_SecOC_91003]。声明可通过头文件 SecOC.h 获取 [SWS_SecOC_91003]。

本使用说明由 AI 策展助手基于 AUTOSAR R20-11 的规范数据生成。

实现者指南即将推出(复杂度 I1)

函数 SecOC_SPduTxConfirmation [SWS_SecOC_91005] 📄 PDF

void SecOC_SPduTxConfirmation (uint16 SecOCFreshnessValueID);

This interface is used by the Sec OC to indicate that the Secured I - PDU has been initiated for transmission.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 802cf05f792c 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数接口 SecOC_SPduTxConfirmation 由 SecOC 模块用于指示已启动安全 I-PDU(Secured I-PDU)的传输 [SWS_SecOC_91005]。该函数在头文件 SecOC.h 中声明,且无返回值(void)[SWS_SecOC_91005]。

作为唯一的形参,SecOCFreshnessValueID 作为类型为 uint16 的输入值(in)传入 [SWS_SecOC_91005]。该参数传递相关 I-PDU 的相应 Freshness 值的标识符 [SWS_SecOC_91005]。接口中不存在其他输入、输出或输入输出参数(inout/out)[SWS_SecOC_91005]。

并发性与属性

该接口具有服务 ID 0x4d,同步工作并设计为完全可重入 [SWS_SecOC_91005]。可重入特性允许在并发执行上下文中并行调用 [SWS_SecOC_91005]。接口规范中未规定通过 DET 或 DEM 的错误报告以及特殊错误代码 [SWS_SecOC_91005]。

解释:由于 SecOC 调用此函数来通报 PDU 传输的启动,且在此过程中仅传递 SecOCFreshnessValueID,因此该调用大概用于外部组件中 Freshness 计数器的更新或确认 [SWS_SecOC_91005]。 问题 Q-f234a3c6e9b16362 (未决)

本使用说明由自动生成,完全基于 AUTOSAR CP R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 SecOC_MainFunctionRx [SWS_SecOC_00171] 📄 PDF

void SecOC_MainFunctionRx (void);

This function performs the processing of the Sec OC module's authentication and verification processing for the Rx path. Per configured Sec OCMain Function Rx instance one Sec OC_ Main Function Rx_ shall be implemented. Hereby is the short name of the Sec OCMain Function Rx configuration container in the ECU configuration.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 03542d899cdb 来源 未决问题(3)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 SecOC_MainFunctionRx 承担模块 SecOC 在接收路径中针对入站消息的核心身份验证和验证处理 [SWS_SecOC_00171]。根据其接口规范,该函数具有签名 void SecOC_MainFunctionRx (void),服务 ID 为 0x06,不期望传入参数且不返回返回值 [SWS_SecOC_00171]。它通过头文件 SchM_SecOC.h 声明 [SWS_SecOC_00171];由此可以推导(解释),其调用由 BSW 调度程序在操作系统任务的上下文中周期性执行。 问题 Q-d24cb58f541f6674 (未决)

实例化与配置

在具有多个接收实例的系统配置中,针对每个配置的 SecOCMainFunctionRx 容器,都会按照模式 SecOC_MainFunctionRx_<shortName> 实现一个独立的函数实例 [SWS_SecOC_00171]。其中 <shortName> 对应于 ECU 配置模型中为该容器分配的短名称 [SWS_SecOC_00171]。这推测使得能够对不同 Rx 处理路径进行单独的时间控制或优先级排序。 问题 Q-ebb55c5d3a3da97d (未决)

错误处理与并发

对于 SecOC_MainFunctionRx,规定中既未记录特定返回值,也未记录针对 DET 或 DEM 的显式错误代码 [SWS_SecOC_00171]。因此,错误状态或失败的验证推测纯粹在内部处理,并通过接收路径异步报告给上层模块。 问题 Q-5d1e45f7a779bea9 (未决)

本文本由 AI 生成,仅供参考。始终以官方 AUTOSAR 规范为准。

函数 SecOC_MainFunctionTx [SWS_SecOC_00176] 📄 PDF

void SecOC_MainFunctionTx (void);

This function performs the processing of the Sec OC module's authentication and verification processing for the Tx path. Per configured Sec OCMain Function Tx instance one Sec OC_ Main Function Tx_ shall be implemented. Hereby is t he short name of the Sec OCMain Function Tx configuration container in the ECU configuration.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 0a9d6b2d7e1e 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

根据 [SWS_SecOC_00176],主函数 SecOC_MainFunctionTx 负责 SecOC 模块在发送路径(Tx 路径)上的身份验证和校验处理。它具有签名 void SecOC_MainFunctionTx(void),因此不接收传递参数且不返回任何返回值;向其分配了服务 ID 0x03 [SWS_SecOC_00176]。该声明通过头文件 SchM_SecOC.h 提供 [SWS_SecOC_00176]。Interpretation:由于通过调度管理器进行集成,因此调用通常可能由 BSW 调度器在操作系统任务的上下文中周期性地执行。 问题 Q-34b30208648c8e30 (未决)

实例化与命名规范

规范规定了针对多重配置的实例特定实现:对于 ECU 配置中每个配置的实例容器 SecOCMainFunctionTx,必须按照命名模式 SecOC_MainFunctionTx_<shortName> 精确实现一个函数,其中 <shortName> 对应于相关配置容器的短名称 [SWS_SecOC_00176]。

限制与错误处理

特定的错误码、DET 或 DEM 反馈以及关于重入性的详细信息未在规范元素中单独列出 [SWS_SecOC_00176]。Interpretation:由于与实例特定的配置容器绑定,生成的每个实例可能负责 Tx PDU 处理的隔离子集,并且按计划不应被同一任务上下文并发中断。 问题 (未决)

此使用说明由 AI 管理助手基于 AUTOSAR 规范 R20-11 自动生成。

函数 SecOC_VerificationStatusCallout [SWS_SecOC_00119] 📄 PDF

void SecOC_VerificationStatusCallout (SecOC_VerificationStatusType verificationStatus);

Service is used to propagate the status of each verification attempt from the Sec OC module to other modules. This service can be configured such that:  Only: "False" Verifica tion Status is propagated to modules  Both: "True" and "False" Verification Status are propagated to modules  None: No Verification Status is propagated

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a7aa9530a7de 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步 callout 函数 SecOC_VerificationStatusCallout 用于将 SecOC 模块中的验证尝试状态传递给外部软件模块 [SWS_SecOC_00119]。它通过头文件 SecOC_Externals.h 声明,并具有服务 ID 0x50 [SWS_SecOC_00119]。通过输入参数 verificationStatus(类型 SecOC_VerificationStatusType)传递一个数据结构,该结构汇集了特定 Freshness Value ID 和 Data ID 的验证结果 [SWS_SecOC_00119]。该函数没有输出参数,也没有返回值(返回类型为 void)[SWS_SecOC_00119]。

状态转发行为是可配置的,支持三种形式 [SWS_SecOC_00119]:

  • Only:仅传播失败的验证尝试(“False”)。
  • Both:成功(“True”)和失败(“False”)的验证状态均转发给模块。
  • None:不传递任何验证状态。

在并发性方面,SecOC_VerificationStatusCallout 对于不同的 Freshness Value ID 是可重入的,但对于相同的 Freshness Value ID 是非可重入的 [SWS_SecOC_00119]。因此,实现模块必须确保在 Freshness Value ID 相同的情况下不会发生并发调用。调用上下文推测同步处于 SecOC 模块的内部验证例程范围内。 问题 Q-cd6928ca22d48f54 (未决)未为该 callout 定义特定的错误代码或向 DET 和 DEM 发送的消息 [SWS_SecOC_00119]。

本使用说明由 AI 生成,且完全基于 AUTOSAR 发行版 R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 SecOC_VerifyStatus [SWS_SecOC_91014] 📄 PDF

void SecOC_VerifyStatus (SecOC_VerificationStatusType verificationStatus);

This s ervice provides the ability to inform the application about the result of the verification attempt of a received PDU by the Sec OC module.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 40383ff847fc 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

同步函数 SecOC_VerifyStatus 向应用程序通知 SecOC 模块对接收到的 PDU 执行校验尝试的结果 [SWS_SecOC_91014]。该接口具有服务 ID 0x53,不返回值(void),并通过头文件 SecOC_Externals.h 提供 [SWS_SecOC_91014]。

范围

唯一的传递参数是类型为 SecOC_VerificationStatusType 的输入参数 verificationStatus [SWS_SecOC_91014]。该结构体提供了关于校验状态的详细信息,以及已对哪个 Data-ID 和 Freshness-Value-ID 进行了校验的信息 [SWS_SecOC_91014]。不存在额外的输入或输出参数 [SWS_SecOC_91014]。

错误处理与并发

未为该服务定义特定的错误码以及向 DET 或 DEM 的通知 [SWS_SecOC_91014]。Interpretation:失败的校验可能主要通过传递的结构体 verificationStatus 内的状态值传达给应用程序。 问题 Q-177be3d746f99b24 (未决)关于并发性,SecOC_VerifyStatus 对于相同的 Freshness-Value-ID 不可重入,但对于不同的 Freshness-Value-ID 是可重入的 [SWS_SecOC_91014]。

本文本由 AI 生成,仅供参考。一切以 AUTOSAR 规范为准。

实现者指南即将推出(复杂度 I1)

类型 SecOC_StateType [SWS_SecOC_00162] 📄 PDF

States of the Sec OC module

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9d4be727e8c2 来源 未决问题(2)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 SecOC_StateType 用于形式化表示 SecOC 模块的内部运行状态,并通过头文件 SecOC.h 提供 [SWS_SecOC_00162]。它允许在整个软件组件生命周期内保持一致的状态管理。

根据规范,该枚举类型的值范围恰好包含两个离散状态 [SWS_SecOC_00162]:

在交互与时序条件方面,SECOC_UNINIT 可能代表系统启动后的默认状态。 问题 Q-4d02fe3a0979113f (未决)在此阶段,由于必要的数据结构尚未就绪,用于报文密码学保护或校验的功能性调用可能会被拒绝。只有在模块成功初始化后,状态可能才会切换为 SECOC_INIT。调用模块或内部监控例程可能会使用 SecOC_StateType 来同步检查当前运行状态,并在初始化之前可靠地阻止非法访问。

该文本由 AI 创建,且完全基于来自 AUTOSAR R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

类型 SecOC_VerificationResultType [SWS_SecOC_00149] 📄 PDF

Enumeration to indicate veri fication results.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9b4c5c47c73b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 SecOC_VerificationResultType 用于在 SecOC 模块中指示受保护 I-PDU 的验证结果,并通过头文件 Rte_SecOC_Type.h 提供 [SWS_SecOC_00149]。

该枚举指定了以下用于区分验证状态的结果值 [SWS_SecOC_00149]:

  • SECOC_VERIFICATIONSUCCESS (0x00):数据验证成功 [SWS_SecOC_00149]。
  • SECOC_VERIFICATIONFAILURE (0x01):验证未成功 [SWS_SecOC_00149]。
  • SECOC_FRESHNESSFAILURE (0x02):验证因 Freshness 值错误而失败 [SWS_SecOC_00149]。
  • SECOC_AUTHENTICATIONBUILDFAILURE (0x03):验证因身份验证码结构错误而未成功 [SWS_SecOC_00149]。
  • SECOC_NO_VERIFICATION (0x04):验证被跳过,数据未作更改即被转发至上层;该状态仅在状态覆盖 SecOC_VerifyStatusOverride 处于激活状态时可能出现 [SWS_SecOC_00149]。
  • SECOC_VERIFICATIONFAILURE_OVERWRITTEN (0x05):验证失败,但由于覆盖状态,I-PDU 仍被传递给上层;该状态同样仅在使用 SecOC_VerifyStatusOverride 时出现 [SWS_SecOC_00149]。

借助这些值,上层可以精确评估验证是正常成功、因加密代码或 Freshness 值失败,还是由管理覆盖状态控制了数据传递 [SWS_SecOC_00149]。

此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。

类型 SecOC_VerificationStatusType [SWS_SecOC_00160] 📄 PDF

Data structure to bundle the status of a verification attempt for a specific Freshness Value and Data ID

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 98b8726de1ab 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

校验状态结构体的使用

根据 [SWS_SecOC_00160],结构体类型 SecOC_VerificationStatusType 将安全 I-PDU 的校验尝试结果与关联的 Data-ID 以及所使用的 Freshness 值捆绑在一起。该定义通过头文件 Rte_SecOC_Type.h 提供,并包含以下元素:

  • freshnessValueID(uint16):导致该校验状态的新鲜度值标识符([SWS_SecOC_00160])。
  • verificationStatus(SecOC_VerificationResultType):校验尝试的详细结果([SWS_SecOC_00160])。
  • secOCDataId(uint16):受影响 PDU 的 Data-ID([SWS_SecOC_00160])。

元素 verificationStatus 区分了特定的成功与错误状态([SWS_SecOC_00160]):

  • SECOC_VERIFICATIONSUCCESS:密码学检查成功。
  • SECOC_VERIFICATIONFAILURE:校验失败。
  • SECOC_FRESHNESSFAILURE:由于新鲜度值无效,校验失败。
  • SECOC_AUTHENTICATIONBUILDFAILURE:因生成的身份验证码错误而导致校验失败。
  • SECOC_NO_VERIFICATION:未对此 I-PDU 执行校验尝试;其未作更改直接传递至上层。
  • SECOC_VERIFICATIONFAILURE_OVERWRITTEN:校验失败,但由于覆盖状态处于激活状态,I-PDU 已转发至上层。

Interpretation:由于该类型捆绑了校验细节,因此它可能主要用于反馈和通知接口,以通知上层所接收数据的身份验证状态。 问题 Q-a1099bc88a2981e2 (未决)

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

类型 SecOC_OverrideStatusType [SWS_SecOC_00991] 📄 PDF

Type SecOC_OverrideStatusType.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a5d2888a2f81 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 SecOC_OverrideStatusType 定义了在 SecOC 模块中用于覆盖 I-PDU 验证状态的各种模式,并通过头文件 Rte_SecOC_Type.h 提供 [SWS_SecOC_00991]。

该枚举类型的值控制是否以及如何执行 Authenticator 验证,以及如何处理入站 I-PDU [SWS_SecOC_00991]:

  • SECOC_OVERRIDE_DROP_UNTIL_NOTICE (0x00):无需 CSM 调用即可省略验证,I-PDU 被丢弃,验证结果设置为 SECOC_NO_VERIFICATION [SWS_SecOC_00991]。
  • SECOC_OVERRIDE_DROP_UNTIL_LIMIT (0x01):同前所述暂停验证并丢弃 I-PDU,但受限于达到配置的待覆盖消息数量 [SWS_SecOC_00991]。
  • SECOC_OVERRIDE_CANCEL (0x02):中止验证状态的活动覆盖并恢复常规行为 [SWS_SecOC_00991]。
  • SECOC_OVERRIDE_PASS_UNTIL_NOTICE (0x40) 和 SECOC_OVERRIDE_PASS_UNTIL_LIMIT (0x42):执行 Authenticator 验证,且无论结果如何均将 I-PDU 转发给上层;若验证失败,结果被设置为 SECOC_VERIFICATIONFAILURE_OVERWRITTEN(要么直至另行通知,要么受计数器限制)[SWS_SecOC_00991]。
  • SECOC_OVERRIDE_SKIP_UNTIL_LIMIT (0x41) 和 SECOC_OVERRIDE_SKIP_UNTIL_NOTICE (0x43):省略验证,结果为 SECOC_NO_VERIFICATION,并将 I-PDU 传递给上层。若配置了 SecOCRxSecuredPduCollection,SecOC 会直接处理 SecOCRxAuthenticPdu,而无需等待 SecOCRxCryptographicPdu [SWS_SecOC_00991]。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_SecOC
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_SecOC@rel:R20-11#0e8dc029
Content hash
0e8dc029
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_SecureOnboardCommunication.pdf#nameddest=SWS_SecOC_00106

初始化与状态

This service stops the secure onboard communication. All buffered I - PDU are removed and have to be obtained again, if needed, after Sec OC_ Init has been called. By a call to Sec OC_ De Init the AUTOSAR Sec OC module is put into a not in itialized state (Sec OC_ UNINIT).

void SecOC_DeInit (void);

Returns the version information of this module.

void SecOC_GetVersionInfo (Std_VersionInfoType* versioninfo);
SecOC_Init 函数

Initializes the the Sec OC module. Successful initialization leads to state Sec OC_ INIT. In configurations, in which Sec OC is assigned to more than one partition (i.e. Sec OC_ Main Functions are mapped to partition s), Sec OC may provide one init AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_SecureOnboardCommunication function per partition. The decision on whether a single Sec OC_ Init() function or one per partition is provided is implementation - specific. In case a given implementation provides one Sec OC_ Init() function per partition, it is up to the implementation to devise a naming pattern that prevents name clashes among the different Sec OC_ Init() functions (e.g., by adding a suffix containing short name the Ecuc Partition.

void SecOC_Init (const SecOC_ConfigType* config);

服务 · Get…

Service SecOC_GetRxFreshness.

Std_ReturnType SecOC_GetRxFreshness (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

Service SecOC_GetRxFreshnessAuthData.

Std_ReturnType SecOC_GetRxFreshnessAuthData (uint16 SecOCFreshnessValueID, const uint8* SecOCTruncatedFreshnessValue, uint32 SecOCTruncatedFreshnessValueLength, const uint8* SecOCAuthDataFreshnessValue, uint16 SecOCAuthDataFreshnessValueLength, uint16 SecOCAuthVerifyAttempts, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

This API returns th e freshness value from the Most Significant Bits in the first byte in the array (Sec OCFreshness Value), in big endian format.

Std_ReturnType SecOC_GetTxFreshness (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength);

Service SecOC_GetTxFreshnessTruncData.

Std_ReturnType SecOC_GetTxFreshnessTruncData (uint16 SecOCFreshnessValueID, uint8* SecOCFreshnessValue, uint32* SecOCFreshnessValueLength, uint8* SecOCTruncatedFreshnessValue, uint32* SecOCTruncatedFreshnessValueLength);

服务 · Tp…

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

Std_ReturnType SecOC_TpCancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

Std_ReturnType SecOC_TpCancelTransmit (PduIdType TxPduId);

Requests transmission of a PDU.

Std_ReturnType SecOC_TpTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

服务 · 其他

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

Std_ReturnType SecOC_IfCancelTransmit (PduIdType TxPduId);

Requests transmission of a PDU.

Std_ReturnType SecOC_IfTransmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

The service provides the ability to enable the sending of un - authenticated PDU to lower layer. (example: in case authentication build counter has reached the configuration value Sec OCAuthentication Build Attempts or the query of the freshness function returns E_ NOT_ OK or the calculation of the authenticator has returned a non - recoverable error such as returning E_ NOT_ OK or KEY_ FAILURE). T his service is optional (the service is available only if Sec OCDefault Authentication Information Pattern is configured). If the service is not available or the service is available but the service was called with send Default

Std_ReturnType SecOC_SendDefaultAuthenticationInformation (uint16 FreshnessValueID, boolean sendDefaultAuthenticationInformation);

This s ervice provides the ability to inform the application about the result of the verification attempt of a received PDU by the Sec OC module.

void SecOC_VerifyStatus (SecOC_VerificationStatusType verificationStatus);

Service SecOC_VerifyStatusOverride.

Std_ReturnType SecOC_VerifyStatusOverride (uint16 ValueID, SecOC_OverrideStatusType overrideStatus, uint8 numberOfMessagesToOverride);

回调

This function is called to provide the received data of an I - PDU segment (N - PDU) to the upper layer. Each call to this function provides the next part of the I - PDU data. The si ze of the remaining buffer is written to the position indicated by buffer Size Ptr.

BufReq_ReturnType SecOC_CopyRxData (PduIdType id, const PduInfoType* info, PduLengthType* bufferSizePtr);

Service SecOC_CopyTxData.

BufReq_ReturnType SecOC_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);

Indication of a received PDU from a lower layer communication interface module.

void SecOC_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

This interface is used by the Sec OC to indicate that the Secured I - PDU has been initiated for transmission.

void SecOC_SPduTxConfirmation (uint16 SecOCFreshnessValueID);

Service SecOC_StartReception.

BufReq_ReturnType SecOC_StartOfReception (PduIdType id, const PduInfoType* info, PduLengthType TpSduLength, PduLengthType* bufferSizePtr);

Called after an I - PDU has been received via the TP API, the result indicates whether the transmission was successful or not.

void SecOC_TpRxIndication (PduIdType id, Std_ReturnType result);

This function is called after the I - PDU has been transmitted on its network, the result indicates whether the transmission was successful or not.

void SecOC_TpTxConfirmation (PduIdType id, Std_ReturnType result);

Within this API , the upper layer module (called module) shall check whether the available data fits into the buffer size reported by Pdu Info Ptr - >Sdu Length. If it fits, it shall copy its data into the buffer provided by Pdu Info Ptr - >Sdu Data Ptr and update the length of the actual copied data in Pdu Info Ptr - >Sdu Length. If not, it returns E_ NOT_ OK without changing Pdu Info Ptr.

Std_ReturnType SecOC_TriggerTransmit (PduIdType TxPduId, PduInfoType* PduInfoPtr);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

void SecOC_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

Callout 与预期接口

Service is used to propagate the status of each verification attempt from the Sec OC module to other modules. This service can be configured such that:  Only: "False" Verifica tion Status is propagated to modules  Both: "True" and "False" Verification Status are propagated to modules  None: No Verification Status is propagated

void SecOC_VerificationStatusCallout (SecOC_VerificationStatusType verificationStatus);

周期性

This function performs the processing of the Sec OC module's authentication and verification processing for the Rx path. Per configured Sec OCMain Function Rx instance one Sec OC_ Main Function Rx_ shall be implemented. Hereby is the short name of the Sec OCMain Function Rx configuration container in the ECU configuration.

void SecOC_MainFunctionRx (void);

This function performs the processing of the Sec OC module's authentication and verification processing for the Tx path. Per configured Sec OCMain Function Tx instance one Sec OC_ Main Function Tx_ shall be implemented. Hereby is t he short name of the Sec OCMain Function Tx configuration container in the ECU configuration.

void SecOC_MainFunctionTx (void);

类型

Configuration data structure of Sec OC module

Type SecOC_OverrideStatusType.

States of the Sec OC module

Enumeration to indicate veri fication results.

Data structure to bundle the status of a verification attempt for a specific Freshness Value and Data ID