DEENESPTFRRUARHIKOZHNL

Crypto Driver (Crypto)

ModulCrypto (Crypto Driver)
BSW-Modul-ID114
Standard-Header#include "Crypto.h"
SWS-SpezifikationAUTOSAR_SWS_CryptoDriver.pdf
ClusterCrypto Services

모듈 가이드AI 생성

하드웨어 기반 AUTOSAR Classic 암호화 스택을 위한 암호화 프리미티브 및 키 관리를 제공합니다.
AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 79b1b64c6bf7 출처 열린 질문 (2)
인과 앵커: R20-11 R20-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

하드웨어 기반 AUTOSAR Classic 암호화 스택을 위한 암호화 프리미티브 및 키 관리를 제공합니다.

Crypto Driver는 MCAL 모듈로서 AUTOSAR Classic 암호화 스택을 위한 하드웨어 기반 암호화 계산 및 키 관리를 제공합니다(EXP_UtilizationOfCryptoServices 8쪽). 하드웨어 보안 모듈(HSM) 또는 소프트웨어 라이브러리를 Driver Object로 캡슐화하고 중앙 인터페이스인 Crypto_ProcessJob을 통해 동기 및 비동기 작업을 처리합니다([SWS_Crypto_91003]). 키 액세스는 구성 가능한 권한의 적용을 받으며, 키 유효성 검사가 성공한 경우에만 NVM에 영구 저장이 트리거됩니다(SWS_CryptoDriver 37쪽).

Crypto Driver(모듈 Crypto)는 MCAL 드라이버로서 AUTOSAR Classic 암호화 스택의 최하위 기반을 형성하며 하드웨어 보안 모듈(HSM), 암호화 가속기 및 소프트웨어 루틴을 암호화 인터페이스(CryIf)에 직접 연결합니다(EXP_UtilizationOfCryptoServices 8쪽, SWS_CryptoDriver 15쪽). 다중 구현의 경우 인스턴스는 Crypto_<vi>_<ai> 체계에 따라 공급업체별로 이름이 지정됩니다([SWS_Crypto_00012]). 초기화는 [SWS_Crypto_91016]에 대한 필수 널 포인터와 함께 [SWS_Crypto_91000]를 통해 동기적으로 수행됩니다([SWS_Crypto_00215]). 내부적으로 모듈은 독립적인 계산 단위를 Crypto Driver Object로 캡슐화하며, 이들 각각은 한 번에 정확히 하나의 작업만 실행할 수 있는 반면([SWS_Crypto_00014]), n개의 객체는 병렬 계산을 가능하게 합니다([SWS_Crypto_00117]). 이때 Driver Object 0은 동일한 인스턴스의 다른 모든 드라이버 객체의 내부 요구를 위한 중앙 난수 생성기 역할을 합니다([SWS_Crypto_00224], [SWS_Crypto_00225]).

diag_architektur CSM CSM CryIf CryIf CSM->CryIf Csm_Job CryptoDriver CryptoDriver CryIf->CryptoDriver Crypto_ProcessJob / Key APIs Object0 Object0 CryptoDriver->Object0 RNG Default ObjectN ObjectN CryptoDriver->ObjectN Primitive Job NvM NvM CryptoDriver->NvM NvM_WriteBlock Det DET CryptoDriver->Det Det_ReportError HW_HSM HW_HSM Object0->HW_HSM Hardware Kanal (HSM) SW_Crypto SW_Crypto ObjectN->SW_Crypto Software / Beschleuniger NvM->CryptoDriver NvBlock Callbacks

컨텍스트 다이어그램: Driver Object 및 NvM과 DET 인터페이스를 포함한 AUTOSAR 암호화 스택 내 Crypto Driver의 임베딩. 출처: SWS_CryptoDriver 15쪽, SWS_Crypto_00012, SWS_Crypto_91017

암호화 작업은 [SWS_Crypto_91003](Crypto_ProcessJob)을 통해 처리되며, 모드 비트 필드(START, UPDATE, FINISH)는 스트리밍 및 단일 호출을 통합합니다(SWS_CryptoDriver 25쪽, [SWS_Crypto_00017]). 비동기 작업은 주기 함수 [SWS_Crypto_91012](Crypto_MainFunction)을 통해 계산되며 완료 후 CRYIF_CallbackNotification를 통해 CryIf로 보고됩니다([SWS_Crypto_00027], [SWS_Crypto_00028]). 실행 중인 작업은 [SWS_Crypto_00122]를 사용하여 동기적으로 취소할 수 있으며([SWS_Crypto_00183], [SWS_Crypto_00214]), 키 요소로의 직접 버퍼 리디렉션은 복사 작업을 줄여줍니다([SWS_Crypto_00203], [SWS_Crypto_00221]).

Crypto Driver를 통한 비동기 작업 처리CryIfCrypto DriverDriver ObjectSchM / OSCrypto_ProcessJob(objectId, job)매개변수 및 키 핸들 검사E_OK (Auftrag angenommen)Crypto_MainFunction()연산 트리거 (START/UPDATE/FINISH)암호화 연산 실행Ergebnis bereitstellenCRYIF_CallbackNotification(job, result)복귀

시퀀스 다이어그램: Crypto_ProcessJob을 통한 비동기 처리 흐름, Crypto_MainFunction 내 주기 및 CRYIF_CallbackNotification을 통한 콜백. 출처: SWS_Crypto_91003, SWS_Crypto_00027, SWS_Crypto_00028, SWS_Crypto_91012

키 관리는 엄격한 액세스 권한 제어하에 키 요소의 설정([SWS_Crypto_91004]), 판독([SWS_Crypto_91006]), 복사([SWS_Crypto_00155], [SWS_Crypto_91015]), 생성([SWS_Crypto_91007]) 및 유도([SWS_Crypto_91008])를 포함합니다([SWS_Crypto_00219], [SWS_Crypto_00220]). Non-Volatile RAM Manager(NvM)로의 영속화는 일관성을 위해 단일 쓰기 시에는 트리거되지 않으며, [SWS_Crypto_91014](Crypto_KeySetValid)를 통한 키 검증 시에만 트리거됩니다(SWS_CryptoDriver 37쪽, [SWS_Crypto_91025]). 멀티코어 환경에서 모듈은 각 파티션에서 격리되어 작동하며([SWS_Crypto_CONSTR_00001]), HSM 객체는 최대 하나의 파티션에만 할당될 수 있습니다([SWS_Crypto_CONSTR_00003]).

Classic 암호화 스택에서 Crypto Driver의 역할 및 시스템 경계

Crypto Driver(모듈 약칭 Crypto)는 AUTOSAR Classic 기본 소프트웨어의 최하위 계층인 Microcontroller Abstraction Layer(MCAL)에 위치합니다(EXP_UtilizationOfCryptoServices 8쪽). 이 드라이버는 암호화 인터페이스(Crypto Interface, CryIf) 바로 아래에 위치하며 이를 통해 Crypto Service Manager(CSM)에 서비스를 제공합니다(SWS_CryptoDriver 15쪽). 주요 임무는 하드웨어 보안 모듈(Hardware Security Module, HSM), AES 엔진과 같은 전용 암호화 가속기 또는 순수 소프트웨어 라이브러리 등 구체적인 암호화 연산 장치를 캡슐화하는 것입니다(SWS_CryptoDriver 15쪽). 암호화 프리미티브의 실제 계산 외에도 기능 범위에는 암호화 키의 저장, 구성 및 관리가 포함됩니다(SWS_CryptoDriver 24쪽).

하나의 ECU 내에 서로 다른 공급업체의 여러 드라이버 인스턴스가 병렬로 존재할 수 있으며, 이 경우 파일, API 및 구성 식별자는 Crypto_<vi>_<ai> 체계에 따른 공급업체별 인픽스(infix)를 통해 고유하게 구분됩니다([SWS_Crypto_00012]). 모듈 초기화는 [SWS_Crypto_91000] 함수를 통해 수행됩니다(Crypto_Init). 특별한 규칙으로 [SWS_Crypto_91016] 유형의 구성 포인터(Crypto_ConfigType)는 항상 널 포인터로 전달되어야 합니다([SWS_Crypto_00215]). 버전 정보는 [SWS_Crypto_91001](Crypto_GetVersionInfo)을 통해 동기적으로 쿼리할 수 있으며, 개발 오류 감지가 활성화된 상태에서 널 포인터를 전달하면 DET에 오류 CRYPTO_E_PARAM_POINTER로 보고됩니다(SWS_CryptoDriver 56쪽).

diag_architektur CSM CSM CryIf CryIf CSM->CryIf Csm_Job CryptoDriver CryptoDriver CryIf->CryptoDriver Crypto_ProcessJob / Key APIs Object0 Object0 CryptoDriver->Object0 RNG Default ObjectN ObjectN CryptoDriver->ObjectN Primitive Job NvM NvM CryptoDriver->NvM NvM_WriteBlock Det DET CryptoDriver->Det Det_ReportError HW_HSM HW_HSM Object0->HW_HSM Hardware Kanal (HSM) SW_Crypto SW_Crypto ObjectN->SW_Crypto Software / Beschleuniger NvM->CryptoDriver NvBlock Callbacks

컨텍스트 다이어그램: Driver Object 및 NvM과 DET 인터페이스를 포함한 AUTOSAR 암호화 스택 내 Crypto Driver의 임베딩. 출처: SWS_CryptoDriver 15쪽, SWS_Crypto_00012, SWS_Crypto_91017

Crypto Driver Object 관리 및 하드웨어 추상화

Crypto Driver의 각 인스턴스는 내부적으로 하나 이상의 논리적 드라이버 객체(Crypto Driver Objects)로 세분화됩니다(SWS_CryptoDriver 15쪽). 하나의 Crypto Driver Object는 암호 채널의 기능적 종단점을 구성하며 독립적인 하드웨어 연산 장치 또는 소프트웨어 구현을 나타냅니다(SWS_CryptoDriver 15쪽). 단일 Driver Object는 원리상 주어진 시점에 항상 정확히 하나의 작업(Job)만 능동적으로 실행할 수 있습니다([SWS_Crypto_00014]). 따라서 n개의 Driver Object를 가진 Crypto Driver는 n개의 암호 작업을 병렬로 연산할 수 있는 용량을 갖습니다([SWS_Crypto_00117]). 지원되는 수학적 및 보안 관련 프리미티브는 할당된 객체의 성능에 따라 결정됩니다([SWS_Crypto_00013]).

드라이버 객체가 (예를 들어 [SWS_Crypto_91009]를 통한 키 교환의 맥락에서 공개 값을 계산하기 위해) 내부 난수를 필요로 하고 자체 난수 생성기를 보유하고 있지 않은 경우, 동일한 드라이버의 Crypto Driver Object 0을 의무적으로 사용합니다([SWS_Crypto_00224], [SWS_Crypto_00225]). 이때 드라이버 객체는 어떠한 경우에도 외부 암호 드라이버 인스턴스의 난수 생성기에 접근해서는 안 됩니다([SWS_Crypto_00226]). 해석: 따라서 Driver Object 0은 동일한 파티션의 다른 모든 드라이버 객체를 위한 중앙 내부 참조 난수 생성기로 기능합니다. 질문 Q-4e8e30714cbc9c80 (열림)

동기식 Direct-Call과 비동기식 스트리밍 간의 작업 처리

암호화 처리는 중앙 인터페이스 [SWS_Crypto_91003](Crypto_ProcessJob)을 통해 Crypto_JobType 타입의 Job 구조체로서 모듈에 전달됩니다([SWS_Crypto_00042], AUTOSAR_CP_SWS_CryptoServiceManager 21쪽). 이 인터페이스는 모드별 비트 필드를 통해 블록 기반 전체 호출과 연속적인 데이터 스트리밍을 결합합니다: 연산 START, UPDATE 및 FINISH은 개별적으로 또는 조합하여 전달될 수 있습니다(SWS_CryptoDriver 25쪽). START 플래그를 설정하면 새 작업으로 표시되고 동일한 작업의 모든 이전 인스턴스를 중단합니다([SWS_Crypto_00017]). 조합하여 전달할 경우 단계들은 항상 START, UPDATE 및 최종적으로 FINISH의 고정된 순서로 실행됩니다(SWS_CryptoDriver 25쪽).

작업이 동기식으로 처리되는지 비동기식으로 처리되는지 여부는 Crypto_JobType의 메타데이터 구성의 일부입니다(SWS_CryptoDriver 26쪽). 비동기 모드에서 [SWS_Crypto_91003]는 단지 작업 데이터를 수신할 뿐이며, 실제 수행은 주기적 메인 함수 [SWS_Crypto_91012](Crypto_MainFunction)에 의해 트리거되거나 처리됩니다([SWS_Crypto_00027], [SWS_Crypto_91012]). 비동기 계산이 완료된 후 Crypto Driver는 상태 및 결과 포인터를 반환하면서 콜백 함수 CRYIF_CallbackNotification을 호출하여 상위 계층인 CryIf에 필수적으로 통지합니다([SWS_Crypto_00028]). 해석: 반면에 동기식 호출은 메인 함수를 통해 분리되지 않고 호출자의 컨텍스트에서 암호화 연산을 블로킹 방식으로 수행합니다. 질문 Q-0447ed9db11aa30b (열림)

Crypto Driver를 통한 비동기 작업 처리CryIfCrypto DriverDriver ObjectSchM / OSCrypto_ProcessJob(objectId, job)매개변수 및 키 핸들 검사E_OK (Auftrag angenommen)Crypto_MainFunction()연산 트리거 (START/UPDATE/FINISH)암호화 연산 실행Ergebnis bereitstellenCRYIF_CallbackNotification(job, result)복귀

시퀀스 다이어그램: Crypto_ProcessJob을 통한 비동기 처리 흐름, Crypto_MainFunction 내 주기 및 CRYIF_CallbackNotification을 통한 콜백. 출처: SWS_Crypto_91003, SWS_Crypto_00027, SWS_Crypto_00028, SWS_Crypto_91012

실행 중이거나 대기 중인 암호 작업은 함수 [SWS_Crypto_00122](Crypto_CancelJob)을 통해 취소할 수 있습니다. 요청된 작업이 드라이버 객체에 의해 활성 처리 중이 아닌 경우 즉시 제거되고 호출은 E_OK를 반환합니다([SWS_Crypto_00214]). 그러나 하드웨어가 활성 연산 프로세스를 즉시 중단할 수 없는 경우 API는 이 시도를 CRYPTO_E_JOB_CANCELED로 확인 응답하며, 중단은 다음 도달 가능한 단계에서 완료됩니다([SWS_Crypto_00183]).

Crypto_CancelJob을 통한 작업(Job) 취소CryIfCrypto DriverDriver ObjectCrypto_CancelJob(objectId, job)altJob이 활성 처리 상태가 아님드라이버 대기열에서 Job 제거E_OK (Job sofort entfernt)Job 활성 상태 & 하드웨어가 즉시 취소할 수 없음Hardware-Abbruch anfordernCRYPTO_E_JOB_CANCELED

시퀀스 다이어그램: 활성 하드웨어 실행 시 케이스 구분을 포함하는 Crypto_CancelJob을 통한 암호화 작업의 동기식 취소. 출처: SWS_Crypto_00122, SWS_Crypto_00183, SWS_Crypto_00214

애플리케이션 메모리와 하드웨어 메모리 간의 불필요한 복사 작업을 방지하기 위해 Crypto Driver는 직접 버퍼 리디렉션(Job Redirection)을 지원합니다: 입력 및 출력 데이터는 jobRedirectionInfoRef을 통해 내부 키 요소로 직접 참조될 수 있습니다([SWS_Crypto_00203], [SWS_Crypto_00204]). 데이터 유출을 방지하기 위해 엄격한 권한 검사가 적용됩니다: 암호화 및 복호화 서비스를 위한 입력 리디렉션의 경우 키 요소가 최소 CRYPTO_RA_ENCRYPTED 권한을 보유해야 하며, 순수 읽기 리디렉션의 경우 최소 CRYPTO_RA_INTERNAL_COPY가 요구됩니다([SWS_Crypto_00221]).

키 관리, 접근 권한 및 암호화 키 연산

Crypto Driver에서 논리적 키(Key)는 실제 키 자료, 초기화 벡터(IV), 난수 시드 또는 SHE 증명(Proof)을 저장하는 하나 이상의 키 요소(Key Elements)로 구성됩니다(SWS_CryptoDriver 28쪽). 각 개별 요소에 대한 접근은 엄격하게 규제됩니다: 읽기 및 쓰기 접근은 구성된 권한 계층 구조(예: CRYPTO_RA_ALLOWED, CRYPTO_RA_ENCRYPTED, CRYPTO_RA_INTERNAL_COPY)를 기반으로 모니터링되며, 열거형 값이 작을수록 더 높은 접근 권한을 나타냅니다(SWS_CryptoDriver 28쪽, [SWS_Crypto_00219]). 직접 읽기 연산은 CRYPTO_RA_ALLOWED 또는 CRYPTO_RA_ENCRYPTED에서만 허용됩니다([SWS_Crypto_00222]). 쓰기 접근은 최소 CRYPTO_WA_ALLOWED 또는 CRYPTO_WA_ENCRYPTED을 필요로 합니다([SWS_Crypto_00223]). 복사 시 소스 요소는 최소 CRYPTO_RA_INTERNAL_COPY를 보유해야 하며 대상 요소보다 낮은 권한을 가져서는 안 됩니다([SWS_Crypto_00220]).

키 및 키 요소의 직접 조작을 위해 Crypto Driver는 일련의 동기식 API를 제공합니다: 데이터 설정 및 판독은 [SWS_Crypto_91004](Crypto_KeyElementSet) 또는 [SWS_Crypto_91006](Crypto_KeyElementGet)를 통해 수행됩니다. 키의 기존 요소 식별자는 [SWS_Crypto_00160](Crypto_KeyElementIdsGet)를 통해 결정할 수 있습니다. 전체 키 또는 개별 요소는 [SWS_Crypto_00155](Crypto_KeyCopy) 또는 [SWS_Crypto_00148](Crypto_KeyElementCopy)을 사용하여 복제됩니다. 부분 복사를 위해 [SWS_Crypto_91015](Crypto_KeyElementCopyPartial)이 존재하며, 이는 소스 및 대상 버퍼에 대한 정밀한 길이 및 오프셋 검사를 강제하고([SWS_Crypto_00207], [SWS_Crypto_00208], [SWS_Crypto_00209]) 대상 길이를 동적으로 조정합니다([SWS_Crypto_00210], [SWS_Crypto_00211]).

또한 모듈은 복합적인 키 연산을 지원합니다: 키 생성은 사전에 [SWS_Crypto_91013](Crypto_RandomSeed)를 통해 초기화된 엔트로피 데이터를 기반으로 [SWS_Crypto_91007](Crypto_KeyGenerate)을 통해 수행됩니다. 새로운 키 자료의 파생은 [SWS_Crypto_91008](Crypto_KeyDerive)가 담당합니다. Diffie-Hellman 키 교환 프로토콜의 경우 공개 값 생성을 위한 함수 [SWS_Crypto_91009](Crypto_KeyExchangeCalcPubVal)과 공유 비밀 결정을 위한 함수 [SWS_Crypto_91010](Crypto_KeyExchangeCalcSecret)을 사용할 수 있습니다(SWS_CryptoServiceManager 70쪽).

각 논리적 키는 [SWS_Crypto_91019](Crypto_KeyGetStatus)을 통해 쿼리할 수 있는 상태를 유지합니다. 새로 작성된 키는 처음에 invalid 상태이며 [SWS_Crypto_91014](Crypto_KeySetValid)를 통한 검증이 성공한 후에만 valid로 해제되는 반면, [SWS_Crypto_91020](Crypto_KeySetInvalid)는 키를 명시적으로 잠급니다. 데이터 형식과 관련하여 드라이버는 ASN.1-PKCS#8 인코딩의 RFC 5958에 따른 비대칭 키([SWS_Crypto_00184]), 고정 알고리즘 OID 1.2.840.113549.1.1.1을 포함하는 RFC 8017에 따른 RSA 키 구조체([SWS_Crypto_00185], [SWS_Crypto_00186], [SWS_Crypto_00187], [SWS_Crypto_00188]) 및 리틀 엔디언 포인트 좌표의 ECC 곡선 데이터(NIST, Brainpool, ED25519)([SWS_Crypto_00189], [SWS_Crypto_00190], [SWS_Crypto_00191], [SWS_Crypto_00192], [SWS_Crypto_00193])를 처리합니다. 하드웨어 밀접 SHE 키는 M1M2M3 형식으로 전달되며, 해당 검증 증명 M4M5은 검증 직후 키 요소 2에서 일시적으로 읽을 수 있습니다([SWS_Crypto_00255]).

diag_schluessel_lebenszyklus UNINITIALIZED UNINITIALIZED INVALID INVALID UNINITIALIZED->INVALID Crypto_Init / NVM-Ladefehler INVALID->INVALID Crypto_KeyElementSet / Crypto_KeyGenerate VALID VALID INVALID->VALID Crypto_KeySetValid (검사 OK) VALID->INVALID Crypto_KeySetInvalid VALID->VALID Crypto_KeyElementSet (Re-Validierung ausstehend) NVM_SYNC NVM_SYNC VALID->NVM_SYNC NVM-Schreibanforderung NVM_SYNC->VALID Persistierung erfolgreich

상태 다이어그램: 채우기부터 검증, 영속화 및 오류 처리까지의 키 상태 전이. 출처: SWS_Crypto_00198, SWS_Crypto_00242, SWS_Crypto_91014, SWS_Crypto_91019, SWS_Crypto_91020

Non-Volatile RAM Manager를 통한 키 요소 영속화

전원 사이클 전반에 걸쳐 키를 비휘발성으로 유지해야 하는 경우, Crypto Driver는 Non-Volatile RAM Manager(NvM)에 연결됩니다(SWS_CryptoDriver 35쪽, AUTOSAR_CP_SWS_CryptoDriver 37쪽). 핵심 아키텍처 원칙에 따르면, Crypto_KeyElementSet를 통해 개별 요소를 채울 때 NvM으로의 쓰기 작업이 직접 트리거되지 않습니다(SWS_CryptoDriver 37쪽). 대신 영속화는 오직 [SWS_Crypto_91014](Crypto_KeySetValid)를 통한 상태 검증 KEYSETVALID 또는 동등한 암호 작업에 의해서만 시작됩니다(SWS_CryptoDriver 37쪽). 이는 상호 의존적인 키 요소들이 일관되게 검사되고 단일 NvM 쓰기 접근으로 저장되도록 보장하여 플래시 사이클을 절약합니다(SWS_CryptoDriver 37쪽).

NvM과의 상호작용은 전용 콜백 인터페이스를 통해 수행됩니다: 제어기 시작(startup) 동안 NvM은 [SWS_Crypto_91023](Crypto_<vi>_<ai>_NvBlock_Init_<NvBlock>)을 통해 초기화 블록을 제공합니다. NvM의 RAM 미러에서 영속화된 데이터를 로드하는 작업은 [SWS_Crypto_91024](Crypto_<vi>_<ai>_NvBlock_ReadFrom_<NvBlock>)를 통해 수행됩니다. 쓰기 전에 NvM은 암호 드라이버가 내부 키 데이터를 NvM 버퍼에 복사할 수 있도록 [SWS_Crypto_91025](Crypto_<vi>_<ai>_NvBlock_WriteTo_<NvBlock>)를 호출하며, 비동기 블록 전송 완료는 [SWS_Crypto_91026](Crypto_<vi>_<ai>_NvBlock_Callback_<NvBlock>)을 통해 보고됩니다. 제어를 위해 드라이버는 NvM 서비스 NvM_SetRamBlockStatus 및 NvM_WriteBlock를 사용합니다([SWS_Crypto_91017]). 시작 시 영속 키 로드에 실패하면 드라이버는 이 키를 필수적으로 invalid로 표시합니다([SWS_Crypto_00198]).

유효성 검증 시 NVM에 키 영구 저장CryIf / ApplikationCrypto DriverNvMCrypto_KeySetValid(cryptoKeyId)엘리먼트의 일관성 및 종속성 검사NvM_WriteBlock(BlockId, NvM_Buffer)Crypto_<vi>_<ai>_NvBlock_WriteTo_<NvBlock>(NvmBuffer)키 데이터를 NvM RAM 미러로 전송E_OKCrypto_<vi>_<ai>_NvBlock_Callback_<NvBlock>(BlockRequest, JobResult)키 상태를 VALID로 설정E_OKE_OK

시퀀스 다이어그램: NvM_WriteBlock 및 드라이버 특정 콜백을 통한 검증 시 NVM으로의 키 요소 영속화. 출처: SWS_Crypto_00242, SWS_Crypto_91017, SWS_Crypto_91025, SWS_Crypto_91026

파티셔닝 및 멀티코어 동작 규칙

멀티코어 시스템에서 암호 연산을 효율적으로 분할하기 위해 암호 스택을 여러 소프트웨어 파티션에 분산할 수 있습니다(BSWDistributionGuide 59쪽). Crypto 모듈은 각 파티션에서 완전히 독립적인 인스턴스로 작동합니다: 각 API 호출은 호출이 발행된 파티션 내에서만 배타적으로 데이터를 처리합니다([SWS_Crypto_CONSTR_00001]). 드라이버 객체의 파티셔닝은 엄격한 구성 규칙을 따릅니다: CryptoDriverObjectEcucPartitionRef에 의해 참조되는 파티션은 모듈에 할당된 파티션(CryptoEcucPartitionRef)의 진부분집합을 의무적으로 형성해야 합니다([SWS_Crypto_CONSTR_00002]). Crypto Driver Object가 하드웨어 보안 모듈(HSM)에 결합된 경우 하드웨어 격리를 이유로 정확히 0개 또는 1개의 파티션에만 할당될 수 있습니다([SWS_Crypto_CONSTR_00003]).

오류가 발생한 경우의 동작

Crypto Driver는 개발 감지(Development Errors)와 런타임 오류(Runtime Errors)로 구성된 2단계 오류 모니터링을 구현합니다. 개발 보안 모드(DET)가 활성화되면 정형 인터페이스 위반이 Det_ReportError으로 전송됩니다([SWS_Crypto_91017]). 여기에는 드라이버 초기화 이전의 호출(CRYPTO_E_UNINIT, 0x00)([SWS_Crypto_00040], [SWS_Crypto_00196], [SWS_Crypto_00205]), 유효하지 않은 초기화 데이터(CRYPTO_E_INIT_FAILED, 0x01) 및 허용되지 않은 널 포인터(CRYPTO_E_PARAM_POINTER, 0x02)가 포함됩니다([SWS_Crypto_00040]). 키 식별자 또는 대상 키 핸들이 허용된 값 범위를 벗어나는 경우 드라이버는 E_NOT_OK로 호출을 중단하고 CRYPTO_E_PARAM_HANDLE(0x04)을 보고합니다([SWS_Crypto_00040], [SWS_Crypto_00180], [SWS_Crypto_00197], [SWS_Crypto_00202], [SWS_Crypto_00217]).

연산에 전달된 입력 또는 출력 버퍼가 충분하지 않은 경우 실행이 거부되고 활성 DET에서 오류 CRYPTO_E_SMALL_BUFFER이 보고됩니다([SWS_Crypto_00195], SWS_CryptoDriver 49쪽). 서비스 CRYPTO_HASH 및 CRYPTO_MACGENERATE에는 표준 예외가 적용됩니다: 여기서 출력 버퍼가 네이티브 해시 또는 MAC 길이보다 작은 경우 결과가 삭제되지 않고 최상위 비트(MSB) 형태로 잘려서 버퍼에 기록됩니다([SWS_Crypto_00065]). 운영 동작에서 드라이버는 반환값을 통해 특정 런타임 오류를 보고합니다: 난수 엔트로피가 고갈되면 [SWS_Crypto_91003]은 리턴 코드 CRYPTO_E_ENTROPY_EXHAUSTED로 응답하고 런타임 오류 CRYPTO_E_RE_ENTROPY_EXHAUSTED(0x03)을 보고합니다([SWS_Crypto_00141], [SWS_Crypto_00194], [SWS_Crypto_91018]). NVM에 대한 읽기 또는 쓰기 접근이 실패하면 CRYPTO_E_RE_NVM_ACCESS_FAILED(0x04)가 신호됩니다([SWS_Crypto_00194]). 추가적인 표준화된 API 반환값은 CRYPTO_E_BUSY, CRYPTO_E_KEY_READ_FAIL, CRYPTO_E_KEY_WRITE_FAIL, CRYPTO_E_KEY_NOT_AVAILABLE, CRYPTO_E_KEY_NOT_VALID, CRYPTO_E_KEY_SIZE_MISMATCH 및 CRYPTO_E_KEY_EMPTY입니다([SWS_Crypto_00155], [SWS_Crypto_00207], [SWS_Crypto_91018]).

더 자세한 증거

Crypto Driver의 주요 특성은 다음 기능 사양 규정 및 아키텍처 위치를 기반으로 합니다:

주제 영역주요 사양 요소문서 참조
모듈 프레임워크 & 인스턴스화[SWS_Crypto_00012], [SWS_Crypto_91000], [SWS_Crypto_91016], [SWS_Crypto_00215]SWS_CryptoDriver S. 15
작업 처리 & Cancellation[SWS_Crypto_91003], [SWS_Crypto_00017], [SWS_Crypto_00027], [SWS_Crypto_00122], [SWS_Crypto_00183]SWS_CryptoDriver S. 25
키 & 권한 관리[SWS_Crypto_91004], [SWS_Crypto_91006], [SWS_Crypto_00219], [SWS_Crypto_00220], [SWS_Crypto_91014]SWS_CryptoDriver S. 28
암호 연산 & 교환[SWS_Crypto_91007], [SWS_Crypto_91008], [SWS_Crypto_91009], [SWS_Crypto_91010]SWS_CryptoServiceManager S. 70
NvM 영속화 & 콜백[SWS_Crypto_91023], [SWS_Crypto_91024], [SWS_Crypto_91025], [SWS_Crypto_91026]SWS_CryptoDriver S. 37
멀티코어 & 파티셔닝[SWS_Crypto_CONSTR_00001], [SWS_Crypto_CONSTR_00002], [SWS_Crypto_CONSTR_00003]BSWDistributionGuide S. 59

이 가이드는 전적으로 AUTOSAR Classic R20-11 사양의 표준 규정을 기반으로 합니다.

Crypto Driver (Crypto)

Low-level driver executing cryptographic primitives on hardware security modules (HSM) or software libraries.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

함수 Crypto_Init [SWS_Crypto_91000] 📄 PDF

void Crypto_Init (const Crypto_ConfigType* configPtr);

Initializes the Crypto Driver.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 4040b6dde00b 출처 열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Crypto_Init은 [SWS_Crypto_91000]에 따라 Crypto Driver를 초기화하는 역할을 합니다. 인터페이스는 헤더 Crypto.h에 선언되어 있으며 서비스 ID 0x00을 가집니다[SWS_Crypto_91000].

호출 및 인터페이스 매개변수에 대해 다음과 같은 속성이 지정되어 있습니다:

  • 구성 포인터: const Crypto_ConfigType* 타입의 입력 매개변수 configPtr을 통해 선택된 구성 구조체에 대한 포인터가 전달됩니다[SWS_Crypto_91000].
  • 반환값: 이 함수는 반환값을 가지지 않으며(void), 입출력 매개변수나 별도의 출력 매개변수도 존재하지 않습니다[SWS_Crypto_91000].
  • 실행 동작: 초기화 루틴은 동기식으로 실행됩니다(Synchronous)[SWS_Crypto_91000].
  • 재진입성: 이 함수는 비-재진입(Non Reentrant)으로 정의됩니다[SWS_Crypto_91000]. 병렬 또는 중첩 호출은 허용되지 않습니다.

비-재진입으로 분류되어 있고 사양에서 특정 오류 코드를 반환하지 않으므로, 이 호출은 일반적으로 ECU 시작 단계에서 다른 모든 드라이버 액세스 전에 중앙에서 수행될 것으로 보입니다(해석). 질문 Q-008bb5a45b823891 (열림) 또한 호출자는 참조된 구성 구조체가 메모리에서 영구적으로 유효하게 유지되도록 보장할 책임이 있을 것으로 보입니다(해석). 질문 Q-6271a86fad440121 (열림)

본 사용 지침은 AUTOSAR CP R20-11 사양을 바탕으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_ProcessJob [SWS_Crypto_91003] 📄 PDF

Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);

Service Crypto_ProcessJob.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 58fc9052e1fa 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Crypto_ProcessJob은 매개변수 job에 구성된 암호화 프리미티브를 objectId가 참조하는 Crypto Driver Object에서 실행합니다[SWS_Crypto_91003]. 이 호출은 reentrant이며 작업 구성에 따라 동기 또는 비동기식으로 작동합니다[SWS_Crypto_91003]. Crypto_JobType에 대한 포인터를 통해 프리미티브를 위한 구성 데이터와 결과 데이터를 위한 버퍼가 모두 전달됩니다[SWS_Crypto_91003].

실제 작업 실행 전에 드라이버는 키 식별자의 유효성을 검사합니다. job->cryptoKeyId 또는 해당되는 경우 job->targetCryptoKeyId이 허용 범위를 벗어나는 경우, 함수는 DET에 오류 CRYPTO_E_PARAM_HANDLE를 보고하고 E_NOT_OK을 반환합니다[SWS_Crypto_00217]. 이는 job->targetCryptoKeyId이 유효하지 않은 경우 서비스 CRYPTO_KEYDERIVE(job->jobPrimitiveInfo->primitiveInfo->service)에도 적용됩니다[SWS_Crypto_00202].

E_OK 및 E_NOT_OK 외에도 특정 오류 코드가 요청의 실패를 알립니다[SWS_Crypto_91003]:

  • 드라이버 객체가 사용 중이거나 해당 대기열이 가득 찬 경우 CRYPTO_E_BUSY[SWS_Crypto_91003],
  • CRYPTO_E_KEY_NOT_VALID, CRYPTO_E_KEY_SIZE_MISMATCH, CRYPTO_E_KEY_READ_FAIL, CRYPTO_E_KEY_WRITE_FAIL, CRYPTO_E_KEY_NOT_AVAILABLE 또는 CRYPTO_E_KEY_EMPTY와 같은 키 관련 오류[SWS_Crypto_91003],
  • 동기 작업 중단 시 CRYPTO_E_JOB_CANCELED[SWS_Crypto_91003] 및
  • 난수 생성기의 엔트로피가 불충분한 경우 CRYPTO_E_ENTROPY_EXHAUSTED. 이때 함수는 런타임 오류 CRYPTO_E_RE_ENTROPY_EXHAUSTED을 추가로 보고합니다[SWS_Crypto_00141], [SWS_Crypto_91003].

이 텍스트는 AUTOSAR R20-11 사양 데이터를 기반으로 AI에 의해 작성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_CancelJob [SWS_Crypto_00122] 📄 PDF

Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);

This interface removes the provided job from the queue and cancels the processing of the job if possible.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 53c6dc327c97 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

동기 함수 Crypto_CancelJob은 전달된 작업을 대기열에서 제거하고 가능한 경우 해당 처리 작업을 중단합니다[SWS_Crypto_00122]. 호출 시 Crypto Driver Object의 식별자(objectId) 및 작업 구성에 대한 포인터(job)가 전달됩니다[SWS_Crypto_00122].

반환값은 중단 시도의 결과를 나타냅니다:

  • E_OK: 요청이 성공했으며 작업이 제거되었습니다[SWS_Crypto_00122]. 드라이버에 오류가 없고 작업이 현재 처리 중이 아닌 경우에도 서비스는 추가 조치 없이 E_OK를 반환합니다[SWS_Crypto_00214].
  • E_NOT_OK: 작업을 제거할 수 없어 요청이 실패했습니다 [SWS_Crypto_00122].
  • CRYPTO_E_JOB_CANCELED: 작업이 취소되었으나 계속 실행됩니다. 애플리케이션으로 결과가 반환되지 않습니다[SWS_Crypto_00122]. 이는 드라이버가 오류 없이 동작하지만 (예: 하드웨어 제한으로 인해) 작업을 중단할 수 없는 경우에 적용됩니다[SWS_Crypto_00183].

동시성 및 제약사항

이 인터페이스는 서로 다른 인스턴스에 대해 reentrant이지만, 동일한 Crypto Driver Object에 대해 동시에 호출되어서는 안 됩니다[SWS_Crypto_00122].

이 사용 지침은 자동으로 작성되었으며 AUTOSAR R20-11의 사양 데이터만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyElementSet [SWS_Crypto_91004] 📄 PDF

Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);

Sets the given key element bytes to the key identified by crypto Key Id.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: c644721999af 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyElementSet은 암호화 드라이버에서 cryptoKeyId을 통해 식별된 키에 대한 특정 키 요소의 원시 데이터를 설정하는 데 사용됩니다[SWS_Crypto_91004].

매개변수 및 반환값

keyElementId을 통해 대상 키 요소가 주소 지정되는 반면, keyPtr은 데이터 버퍼를 가리키고 keyLength는 해당 바이트 크기를 참조합니다[SWS_Crypto_91004]. 성공적으로 할당되면 인터페이스는 E_OK를 반환합니다[SWS_Crypto_91004].

오류 처리

처리 중 오류가 발생하면 함수는 특정 반환값을 제공합니다[SWS_Crypto_91004]:

  • CRYPTO_E_BUSY: 관련 Crypto-Driver-Objekt가 사용 중입니다.
  • CRYPTO_E_KEY_WRITE_FAIL: 키 엘리먼트에 대한 쓰기 액세스가 거부되었습니다.
  • CRYPTO_E_KEY_NOT_AVAILABLE: 요청된 키 요소 또는 키를 사용할 수 없습니다.
  • CRYPTO_E_KEY_SIZE_MISMATCH: 전달된 데이터 길이가 키 요소의 크기와 일치하지 않습니다.
  • E_NOT_OK: 기타 이유로 요청이 실패했습니다.

동시성

이 함수는 비-재진입(Non Reentrant)으로 지정되어 있습니다[SWS_Crypto_91004]. 해석: 드라이버 내의 데이터 불일치를 방지하기 위해 병렬 호출을 서로 동기화할 책임은 호출자에게 있을 것으로 보입니다. 질문 Q-d7ef7a774052a212 (열림)

이 사용 지침은 사양 SWS_Crypto_91004(R20-11)를 기반으로 자동 작성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeySetValid [SWS_Crypto_91014] 📄 PDF

Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);

Sets the key state of the key identified by crypto Key Id to valid.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 234814436706 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeySetValid은 식별자 cryptoKeyId로 지정된 키의 상태를 유효함(valid)으로 설정하는 역할을 합니다([SWS_Crypto_91014]). 이 인터페이스는 헤더 파일 Crypto.h을 통해 사용할 수 있으며 서비스 ID 0x05를 갖습니다([SWS_Crypto_91014]).

사용 시 다음과 같은 매개변수 및 반환값이 정의되어 있습니다([SWS_Crypto_91014]):

  • 입력 매개변수: cryptoKeyId(타입 uint32)을 통해 상태를 유효함으로 설정할 키의 식별자가 전달됩니다([SWS_Crypto_91014]). 추가적인 입력 또는 출력 매개변수는 존재하지 않습니다([SWS_Crypto_91014]).
  • 반환값: Std_ReturnType 타입의 상태 코드가 요청 결과에 대한 정보를 제공합니다([SWS_Crypto_91014]):

동시성과 관련하여 이 함수는 재진입 불가능(“Non Reentrant”)으로 명시되어 있습니다([SWS_Crypto_91014]). 해석: 충돌을 방지하기 위해 호출자는 태스크 간의 병렬 호출을 외부에서 조정해야 할 것으로 보이며, CRYPTO_E_BUSY 수신 시 나중에 호출을 재시도하도록 조치해야 합니다. 질문 Q-32d775a9e61e5731 (열림)

본 텍스트는 AI에 의해 작성되었으며 AUTOSAR R20-11 사양 버전을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeySetInvalid [SWS_Crypto_91020] 📄 PDF

Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);

Sets invalid for the status of the key identifi ed by crypto Key Id.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f9c09a4552e9 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

동기 함수 Crypto_KeySetInvalid은 cryptoKeyId로 식별된 키의 상태를 무효함으로 설정합니다 [SWS_Crypto_91020]. 이 함수는 헤더 파일 Crypto.h에 정의되어 있으며 서비스 ID 0x15를 통해 호출됩니다 [SWS_Crypto_91020]. 유일한 전달 매개변수로는 대상 키의 고유 식별자를 포함하는 입력값 cryptoKeyId(타입 uint32)이 사용되며, 입출력 및 출력 매개변수는 없습니다 [SWS_Crypto_91020].

오류 처리 및 반환값

함수 실행 결과는 Std_ReturnType 타입의 반환값을 통해 전달됩니다 [SWS_Crypto_91020]:

  • E_OK: 요청이 성공적이었으며 키 상태가 무효함으로 설정되었습니다 [SWS_Crypto_91020].
  • E_NOT_OK: 요청 수행에 실패했습니다 [SWS_Crypto_91020].
  • CRYPTO_E_BUSY: 담당 암호화 드라이버 객체(Crypto Driver Object)가 현재 사용 중이어서 요청이 실패했습니다 [SWS_Crypto_91020].

동시성 및 제약사항

이 인터페이스는 재진입 불가능(Non Reentrant)으로 명시되어 있습니다 [SWS_Crypto_91020]. 따라서 동시 또는 인터럽트성 호출은 허용되지 않습니다. 함수가 동기적으로 실행되므로 상태 변경이 완료되거나 오류가 확인된 후에야 호출자에게 반환됩니다 [SWS_Crypto_91020].

본 사용 지침은 명세를 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyElementGet [SWS_Crypto_91006] 📄 PDF

Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);

This interface shall be used to get a key element of the key identified by the crypto

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: c68d666a4fd9 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기식 및 reentrant 함수 Crypto_KeyElementGet은 keyElementId을 통해 식별된 키 요소를 키 cryptoKeyId에서 읽어 메모리 영역 resultPtr에 저장하는 역할을 합니다[SWS_Crypto_91006]. 이 인터페이스는 헤더 Crypto.h를 통해 제공되며 서비스 ID 0x06을 가집니다[SWS_Crypto_91006]. 호출 시 호출자는 입출력(In-Out) 매개변수 resultLengthPtr을 통해 버퍼 크기를 전달하거나, 부분 액세스가 구성된 경우 원하는 읽기 크기를 전달합니다. 실행 완료 후 드라이버는 실제로 복사된 데이터 양을 그곳에 저장합니다[SWS_Crypto_91006].

성공 시 함수는 E_OK을 반환합니다[SWS_Crypto_91006]. 작업이 실패하면 특정 오류 코드를 통해 이를 알립니다: 암호화 드라이버 객체가 사용 중인 경우 CRYPTO_E_BUSY, 키 요소를 사용할 수 없는 경우 CRYPTO_E_KEY_NOT_AVAILABLE, 읽기 액세스가 거부된 경우 CRYPTO_E_KEY_READ_FAIL, 소스 요소가 초기화되지 않은 경우 CRYPTO_E_KEY_EMPTY, 그리고 일반 오류 E_NOT_OK입니다[SWS_Crypto_91006].

인터페이스가 reentrant로 지정되어 있음에도 불구하고, 사양에서는 키 요소를 플래시 메모리에 직접 매핑할 때 동기 실행 중에 상당한 지연 시간이 발생할 수 있음을 지적합니다[SWS_Crypto_91006]. 해석: 이러한 잠재적인 지연으로 인해 이 호출은 시간에 민감한 인터럽트 서비스 루틴 내부가 아니라 주로 태스크 컨텍스트에서 사용하는 것이 적절할 것으로 보입니다. 질문 Q-ff4e2843b9aad46d (열림)

이 사용 지침은 자동으로 생성되었으며 AUTOSAR Classic R20-11의 사양 상태를 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyGetStatus [SWS_Crypto_91019] 📄 PDF

Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);

Returns the key state of the key identified by crypto Key Id.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 4f6e929a170d 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyGetStatus은 암호화 드라이버 내에서 특정 키의 현재 상태를 쿼리하는 데 사용됩니다[SWS_Crypto_91019]. 이 함수는 헤더 Crypto.h를 통해 제공되며 서비스 ID 0x14을 갖습니다[SWS_Crypto_91019].

사용법 및 매개변수

호출은 동기식으로 이루어지며 두 개의 매개변수를 필요로 합니다[SWS_Crypto_91019]:

  • cryptoKeyId: 상태를 확인할 키의 식별자입니다.
  • keyStatusPtr: 상태가 반환될 Crypto_KeyStatusType 타입의 메모리 영역에 대한 포인터입니다.

반환값으로 인터페이스는 Std_ReturnType을 반환합니다. 성공적으로 수행되면 E_OK이 보고되고, 오류 시에는 E_NOT_OK가 반환됩니다[SWS_Crypto_91019].

동시성 및 제약사항

이 함수는 비-재진입(Non Reentrant)으로 선언되어 있습니다[SWS_Crypto_91019]. 따라서 호출자는 상위 레벨 동기화 메커니즘을 통해 동시 호출이 발생하지 않도록 해야 합니다. 특정 DET 오류 메시지는 나열되어 있지 않으며, 유효하지 않은 포인터나 유효하지 않은 ID와 같은 잘못된 호출은 E_NOT_OK의 직접 반환으로 이어질 것으로 추정됩니다[SWS_Crypto_91019]. 질문 Q-5703fab02905e91a (열림)

이 텍스트는 AI에 의해 작성되었으며 AUTOSAR R20-11 사양을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyElementCopy [SWS_Crypto_00148] 📄 PDF

Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopy.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 0bf976054e55 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyElementCopy은 동일한 암호화 드라이버 내에서 하나의 키 요소를 다른 키 요소로 복사하는 역할을 합니다[SWS_Crypto_00148]. 소스 키(cryptoKeyId) 및 소스 키 요소(keyElementId)의 식별자와 대상 키(targetCryptoKeyId) 및 대상 키 요소(targetKeyElementId)의 식별자가 전달됩니다[SWS_Crypto_00148].

시간 동작과 관련하여, 플래시 메모리에 직접 매핑된 키 요소의 경우 동기식 실행으로 인해 함수 호출 시 더 큰 지연이 발생할 수 있음에 유의해야 합니다[SWS_Crypto_00148]. 따라서 특히 시간에 민감한 컨텍스트에서는 런타임 동작을 고려해야 합니다.

이 함수는 reentrant로 설계되었으나, 동일한 cryptoKeyId에 대해서는 명시적으로 그렇지 않습니다[SWS_Crypto_00148]. 따라서 동일한 소스 키를 사용한 동시 호출은 호출자에 의해 동기화되거나 배제되어야 합니다.

성공 시 함수는 E_OK을 반환합니다[SWS_Crypto_00148]. 오류가 발생한 경우 반환값은 특정 원인을 나타냅니다[SWS_Crypto_00148]:

  • CRYPTO_E_BUSY: 암호화 드라이버 객체가 사용 중입니다[SWS_Crypto_00148].
  • CRYPTO_E_KEY_NOT_AVAILABLE: 적어도 하나의 키에서 요청된 키 요소를 사용할 수 없습니다[SWS_Crypto_00148].
  • CRYPTO_E_KEY_READ_FAIL 또는 CRYPTO_E_KEY_WRITE_FAIL: 소스 요소 읽기 또는 대상 요소 쓰기가 허용되지 않습니다[SWS_Crypto_00148].
  • CRYPTO_E_KEY_SIZE_MISMATCH: 키 요소의 크기가 서로 호환되지 않습니다[SWS_Crypto_00148].
  • CRYPTO_E_KEY_EMPTY: 소스 키 요소가 초기화되지 않았습니다[SWS_Crypto_00148].
  • E_NOT_OK: 요청이 일반적으로 실패했습니다 [SWS_Crypto_00148].

이 사용 지침은 AUTOSAR Classic R20-11 사양을 바탕으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyElementCopyPartial [SWS_Crypto_91015] 📄 PDF

Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopyPartial.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a5ad7cce8b26 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyElementCopyPartial은 동일한 암호화 드라이버 내에서 소스 키 요소의 데이터를 대상 키 요소로 부분 복사하는 데 사용됩니다 [SWS_Crypto_91015]. 매개변수 keyElementSourceOffset 및 keyElementCopyLength을 통해 소스 요소(cryptoKeyId, keyElementId)에서 복사할 부분이 정의되며, keyElementTargetOffset은 대상 요소(targetCryptoKeyId, targetKeyElementId)에서의 시작 위치를 결정합니다. 검사에 오류가 없으면 드라이버는 복사 작업을 동기적으로 수행하고 E_OK를 반환합니다 [SWS_Crypto_00209].

수행 전 드라이버는 버퍼 및 드라이버 상태를 유효성 검사합니다:

  • 암호화 드라이버가 초기화되지 않았고 개발 오류 감지가 활성화된 경우, 함수는 DET에 CRYPTO_E_UNINIT을 보고하고 E_NOT_OK을 반환합니다 [SWS_Crypto_00205].
  • 소스 키 요소의 전체 길이가 keyElementSourceOffset + keyElementCopyLength보다 작으면 호출은 CRYPTO_E_KEY_SIZE_MISMATCH과 함께 실패합니다 [SWS_Crypto_00207].
  • 대상 키 요소의 최대 버퍼 공간이 keyElementTargetOffset + keyElementCopyLength보다 작으면 마찬가지로 CRYPTO_E_KEY_SIZE_MISMATCH이 보고됩니다 [SWS_Crypto_00208].
  • 기타 명시된 오류값에는 CRYPTO_E_BUSY(드라이버 객체 사용 중), CRYPTO_E_KEY_EMPTY(초기화되지 않은 소스 요소), CRYPTO_E_KEY_NOT_AVAILABLE 및 읽기 또는 쓰기 액세스 오류(CRYPTO_E_KEY_READ_FAIL, CRYPTO_E_KEY_WRITE_FAIL) 등이 있습니다 [SWS_Crypto_91015].

이 함수는 재진입 가능하지만, 동일한 키 ID cryptoKeyId에 대해 동시에 호출되어서는 안 됩니다 [SWS_Crypto_91015]. 키 요소가 플래시 메모리에 직접 저장되어 있는 경우 동기 실행으로 인해 눈에 띄는 시간 지연이 발생할 수 있습니다 [SWS_Crypto_91015].

이 사용 지침은 AUTOSAR 명세 R20-11을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 Crypto_KeyCopy [SWS_Crypto_00155] 📄 PDF

Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);

Copies a key with all its elements to another key in the same crypto driver. Note: If the actual key element is directly mapped to flash memory, there could be a bigger delay when calling this function (synchronous operation)

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 4fed74be6625 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

동기 함수 Crypto_KeyCopy은 동일한 Crypto 드라이버 내에서 키와 해당 키의 모든 키 요소를 대상 키로 복사합니다 [SWS_Crypto_00155]. 할당은 소스 키를 위한 입력 매개변수 cryptoKeyId 및 대상 키를 위한 targetCryptoKeyId을 통해 수행됩니다 [SWS_Crypto_00155]. 성공적인 복사 작업은 E_OK로 확인됩니다 [SWS_Crypto_00155].

동시성 및 런타임 동작

이 인터페이스는 재진입 가능하도록 설계되었으나, 동일한 cryptoKeyId에 대해 동시에 실행되어서는 안 됩니다 [SWS_Crypto_00155]. 동기적으로 실행되므로 플래시 메모리에 직접 저장된 키 요소의 경우 호출 중 눈에 띄는 시간 지연이 발생할 수 있습니다 [SWS_Crypto_00155].

오류 처리

오류 발생 시 이 함수는 Std_ReturnType 타입의 특정 반환값을 제공합니다 [SWS_Crypto_00155]:

  • CRYPTO_E_BUSY: 연관된 Crypto Driver Object가 사용 중입니다 [SWS_Crypto_00155].
  • CRYPTO_E_KEY_NOT_AVAILABLE: 요청된 키 중 적어도 하나를 사용할 수 없습니다 [SWS_Crypto_00155].
  • CRYPTO_E_KEY_READ_FAIL: 소스 키 요소를 읽을 수 없습니다 [SWS_Crypto_00155].
  • CRYPTO_E_KEY_WRITE_FAIL: 대상 키 요소를 쓸 수 없습니다 [SWS_Crypto_00155].
  • CRYPTO_E_KEY_SIZE_MISMATCH: 키 요소의 크기가 서로 호환되지 않습니다 [SWS_Crypto_00155].
  • CRYPTO_E_KEY_EMPTY: 소스 키의 키 요소가 초기화되지 않았습니다 [SWS_Crypto_00155].
  • E_NOT_OK: 요청 수행에 실패했습니다 [SWS_Crypto_00155].

본 사용 지침은 AUTOSAR CP R20-11 사양을 바탕으로 AI에 의해 생성되었습니다.

함수 Crypto_KeyElementIdsGet [SWS_Crypto_00160] 📄 PDF

Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);

Used to retrieve information which key elements are available in a given key.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 73fbfa8804b7 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyElementIdsGet은 지정된 키에서 어떤 키 요소를 사용할 수 있는지에 대한 정보를 쿼리하는 데 사용됩니다[SWS_Crypto_00160]. 입력 매개변수 cryptoKeyId를 통해 사용 가능한 요소 ID를 내보낼 키의 식별자가 전달됩니다[SWS_Crypto_00160]. 확인된 식별자는 포인터 keyElementIdsPtr가 참조하는 배열에 저장됩니다[SWS_Crypto_00160].

버퍼 크기 관리는 입출력 매개변수 keyElementIdsLengthPtr을 통해 이루어집니다. 호출 시 이 매개변수는 제공된 버퍼 keyElementIdsPtr의 크기를 포함해야 합니다[SWS_Crypto_00160]. 작업이 완료된 후 그곳에 실제 존재하는 키 요소의 수가 저장됩니다[SWS_Crypto_00160].

반환값으로 이 서비스는 성공적인 쿼리 시 E_OK을 반환하고, 요청이 실패한 경우 E_NOT_OK을 반환합니다[SWS_Crypto_00160]. 호출 시점에 담당 암호화 드라이버 객체가 사용 중이면 오류 코드 CRYPTO_E_BUSY이 반환됩니다[SWS_Crypto_00160].

동시성과 관련하여 이 함수는 reentrant이지만, 동일한 cryptoKeyId에 대해 동시에 호출되어서는 안 됩니다[SWS_Crypto_00160]. 선언은 헤더 Crypto.h를 통해 사용할 수 있습니다[SWS_Crypto_00160].

이 텍스트는 AUTOSAR 사양을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_RandomSeed [SWS_Crypto_91013] 📄 PDF

Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);

This function generates the internal seed state using the pro vided entropy source. Furthermore, this function can be used to update the seed state with new entropy

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 7ee33749b38a 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_RandomSeed(서비스 ID 0x0d)은 [SWS_Crypto_91013]에 따라 제공된 엔트로피 소스를 사용하여 키의 내부 시드 상태를 생성하고 업데이트하는 역할을 합니다. 함수 선언은 헤더 파일 Crypto.h에 포함되어 있습니다.

사용 및 호출 매개변수

초기 생성 외에도 [SWS_Crypto_91013]에 따르면 이 함수를 사용하여 새로운 엔트로피로 시드 상태를 업데이트할 수도 있습니다. 이때 동기 호출에는 세 개의 입력 매개변수가 필요합니다:

  • cryptoKeyId: 새 시드를 생성할 키의 식별자를 전달합니다.
  • seedPtr: 시드 공급을 위한 데이터가 있는 메모리 영역에 대한 포인터를 유지합니다.
  • seedLength: 전달된 시드 데이터의 길이를 바이트 단위로 정의합니다.

반환값 및 오류 처리

반환값으로 Crypto_RandomSeed은 [SWS_Crypto_91013]에 따라 Std_ReturnType 타입의 상태를 보고합니다:

  • E_OK: 요청이 성공적으로 실행되었습니다.
  • E_NOT_OK: 요청이 실패했습니다.
  • CRYPTO_E_KEY_NOT_VALID: cryptoKeyId을 통해 식별된 키의 키 상태가 "invalid" 상태이므로 실행이 실패합니다.

동시성 및 제약사항

[SWS_Crypto_91013]에 따르면 이 함수는 reentrant로 지정되어 있지만, 동일한 cryptoKeyId에 대해서는 명시적으로 그렇지 않습니다. 따라서 동일한 키에 대한 병렬 호출은 호출자 측에서 방지되어야 합니다.

이 텍스트는 AI에 의해 생성되었으며 페이로드의 사양 데이터만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyGenerate [SWS_Crypto_91007] 📄 PDF

Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);

Generates new key material store it in the key identified by crypto Key Id.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 9465afa4791c 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

헤더 파일 Crypto.h을 통해 제공되는 함수 Crypto_KeyGenerate은 새로운 키 자료를 생성하고 식별자 cryptoKeyId를 통해 주소 지정된 키를 업데이트합니다[SWS_Crypto_91007]. 이 함수는 완전히 동기식으로 작동하며 서비스 ID 0x07로 정의되어 있습니다[SWS_Crypto_91007]. 키 식별자 외에 다른 매개변수는 존재하지 않습니다[SWS_Crypto_91007].

동시성 및 제약사항

동시성과 관련하여 Crypto_KeyGenerate은 reentrant로 지정되어 있지만, 동일한 cryptoKeyId에 대해서는 적용되지 않는다는 명시적 제한이 있습니다[SWS_Crypto_91007]. 동일한 키에 대해 여러 요청이 이루어지는 경우 드라이버 충돌을 방지하기 위해 호출자 측에서 이를 동기화해야 합니다.

반환값 및 오류 처리

기본 타입 Std_ReturnType의 반환값을 통해 호출자는 작업의 성공 또는 특정 오류 원인에 대한 자세한 피드백을 받습니다[SWS_Crypto_91007]:

  • E_OK: 키 생성이 성공적으로 실행되었습니다[SWS_Crypto_91007].
  • CRYPTO_E_BUSY: 담당 Crypto Driver Object가 현재 사용 중이므로 요청이 실패했습니다[SWS_Crypto_91007].
  • CRYPTO_E_KEY_EMPTY: 필요한 소스 키 요소가 초기화되지 않아 생성이 실패했습니다[SWS_Crypto_91007].
  • CRYPTO_E_KEY_NOT_VALID: cryptoKeyId이 참조하는 키의 키 상태가 무효로 표시되어 작업이 실패했습니다[SWS_Crypto_91007].
  • E_NOT_OK: 기타 이유로 키 생성 요청이 실패했습니다[SWS_Crypto_91007].

이 사용 지침은 AUTOSAR Classic R20-11 사양을 바탕으로 자동 생성되었습니다.

함수 Crypto_KeyDerive [SWS_Crypto_91008] 📄 PDF

Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);

Derives a new key by using the key elements in the given key identified by the crypto Key Id. The given key contains the key elements for the password, salt. The derived key is stored in the key element with the id 1 of the key identified by target Crypto Key Id. The number of iterations is given in the key element CRYPTO_ KE_ KEYDERIVATION_ ITERATIONS.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 5847568b736a 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyDerive은 소스 키(cryptoKeyId)의 키 요소로부터 새로운 암호화 키를 유도하여 이를 대상 키(targetCryptoKeyId)의 ID가 1인 키 요소에 저장합니다[SWS_Crypto_91008]. 소스 키에는 암호 및 솔트에 필요한 키 요소가 포함되어 있어야 하며, 반복 횟수는 키 요소 CRYPTO_KE_KEYDERIVATION_ITERATIONS를 통해 지정됩니다[SWS_Crypto_91008].

호출 및 동시성

이 인터페이스는 reentrant이지만, 동일한 cryptoKeyId에 대해 동시에 호출되어서는 안 됩니다[SWS_Crypto_91008]. 따라서 호출자는 병렬 유도 작업이 서로 다른 소스 키에서 작동하도록 보장해야 합니다.

반환값 및 오류 처리

함수는 타입 Std_ReturnType의 정의된 반환값을 통해 결과를 알립니다[SWS_Crypto_91008]:

  • E_OK: 키 유도가 성공적으로 수행되었습니다.
  • E_NOT_OK: 유도가 실패했습니다. 매개변수 targetCryptoKeyId이 유효 범위를 벗어나고 개발 오류 감지가 활성화된 경우, 함수는 DET에 CRYPTO_E_PARAM_HANDLE도 보고합니다[SWS_Crypto_00180].
  • CRYPTO_E_BUSY: 담당 Crypto Driver Object가 사용 중입니다 [SWS_Crypto_91008].
  • CRYPTO_E_KEY_EMPTY: 필요한 소스 키 요소가 초기화되지 않았습니다[SWS_Crypto_91008].
  • CRYPTO_E_KEY_NOT_VALID: cryptoKeyId이 참조하는 키의 상태가 무효입니다[SWS_Crypto_91008].

이 사용 지침은 명세를 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyExchangeCalcPubVal [SWS_Crypto_91009] 📄 PDF

Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: c27ddd0a9e75 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

동기 함수 Crypto_KeyExchangeCalcPubVal은 키 교환 프로토콜을 위한 공개 값을 계산하고 이를 publicValuePtr의 저장 위치에 저장합니다([SWS_Crypto_91009]). 호출자는 cryptoKeyId을 통해 프로토콜에 사용될 키의 식별자를 전달합니다. 입출력 매개변수 publicValueLengthPtr를 통해 호출 시 제공된 메모리의 버퍼 크기를 전달해야 하며, 실행 완료 후 그곳에 계산된 공개 값의 실제 길이가 저장됩니다([SWS_Crypto_91009]).

오류 처리 및 반환값

성공적인 실행 시 함수는 E_OK을 반환합니다. 오류가 발생하면 E_NOT_OK 또는 특정 오류 코드가 반환됩니다([SWS_Crypto_91009]):

  • CRYPTO_E_BUSY: Crypto Driver Object가 사용 중이므로 요청이 실패합니다.
  • CRYPTO_E_KEY_EMPTY: 소스 키 요소가 초기화되지 않았기 때문에 요청이 실패합니다.
  • CRYPTO_E_KEY_NOT_VALID: cryptoKeyId을 통해 참조된 키의 상태가 무효이므로 요청이 실패합니다.

동시성 및 시스템 통합

[SWS_Crypto_91009]에 따르면 이 함수는 reentrant이지만 동일한 cryptoKeyId에 대해서는 그렇지 않습니다. 암호화 드라이버가 Crypto_KeyExchangeCalcPubVal와 같은 내부 목적으로 난수 생성기(RNG) 서비스를 필요로 하는 경우, 첫 번째 Crypto Driver Object(객체 번호 0)가 이 목적을 위해 구성되어 있어야 합니다([SWS_Crypto_00224]).

이 텍스트는 AI에 의해 생성되었습니다. 모든 내용은 AUTOSAR Classic R20-11 사양을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 Crypto_KeyExchangeCalcSecret [SWS_Crypto_91010] 📄 PDF

Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);

Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the partner public key. The shared secret key is stored as a key element in the same key.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: c3912e0f8927 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 함수 Crypto_KeyExchangeCalcSecret은 키 교환 프로토콜을 위한 공유 비밀 키(Shared Secret Key)를 계산하는 역할을 합니다[SWS_Crypto_91010]. 이 함수는 cryptoKeyId를 통해 지정된 키의 키 자료를 partnerPublicValuePtr을 통해 전달된 상대방의 공개 값(바이트 수는 partnerPublicValueLength를 통해 지정됨)과 함께 처리합니다[SWS_Crypto_91010]. 계산된 공유 비밀은 동일한 키 내의 키 요소로 직접 저장됩니다[SWS_Crypto_91010].

반환값으로 함수는 Std_ReturnType을 통해 상태를 보고합니다[SWS_Crypto_91010]:

  • E_OK: 비밀의 계산 및 저장이 성공적으로 완료되었습니다[SWS_Crypto_91010].
  • E_NOT_OK: 요청이 실패했습니다[SWS_Crypto_91010].
  • CRYPTO_E_BUSY: 담당 Crypto Driver Object가 사용 중이므로 실행이 실패했습니다[SWS_Crypto_91010].
  • CRYPTO_E_KEY_EMPTY: 소스 키 요소가 초기화되지 않았습니다 [SWS_Crypto_91010].
  • CRYPTO_E_KEY_NOT_VALID: cryptoKeyId이 참조하는 키의 상태가 무효입니다[SWS_Crypto_91010].

이 인터페이스는 reentrant로 구현되어 있지만, 동일한 cryptoKeyId에 대해 동시에 호출되어서는 안 됩니다[SWS_Crypto_91010]. 따라서 호출자는 동일한 키 ID를 가진 동시 호출을 방지하고, 오류 상태를 방지하기 위해 참조된 키 자료가 사전에 초기화되고 유효한 상태인지 확인해야 합니다[SWS_Crypto_91010].

이 사용 지침은 SWS_Crypto_91010 사양을 기반으로 자동 생성되었습니다.

함수 Crypto_MainFunction [SWS_Crypto_91012] 📄 PDF

void Crypto_MainFunction (void);

If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoDriver

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 0801a980dea9 출처 열린 질문 (3)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 Crypto_MainFunction은 암호화 드라이버의 작업 대기열에 인큐된 암호화 작업을 주기적으로 처리하는 역할을 합니다[SWS_Crypto_91012]. 이 함수의 사용을 위한 전제 조건은 모듈에서 비동기 작업 처리가 구성되어 있고 해당 작업 대기열이 존재하는 것입니다[SWS_Crypto_91012].

호출 및 시맨틱

이 함수는 시그니처 void Crypto_MainFunction(void)을 가지며 서비스 ID 0x0c로 지정되어 있습니다[SWS_Crypto_91012]. 입력 매개변수를 받지 않으며 반환값도 제공하지 않습니다. 인터페이스는 헤더 SchM_Crypto.h을 통해 제공됩니다[SWS_Crypto_91012]. 이는 주기적 호출이 운영체제의 주기적 태스크 컨텍스트에서 BSW 스케줄러(Schedule Manager)에 의해 계획대로 트리거된다는 해석을 가능하게 합니다.

동시성 및 제약사항

호출은 비동기 작업 대기열의 구성에 엄격하게 종속됩니다[SWS_Crypto_91012]. 사양에서 Crypto_MainFunction에 대한 재진입성을 명시하지 않으므로 이 함수는 비-재진입으로 처리되어야 할 것으로 보이며, 따라서 여러 스레드 또는 태스크에서의 병렬 호출은 피해야 합니다. 질문 Q-038d384305c8c5c3 (열림)

오류 처리

사양에는 이 함수에 대한 특정 오류 코드나 DET 항목이 정의되어 있지 않습니다[SWS_Crypto_91012]. 함수가 반환값을 제공하지 않으므로 비동기 처리 중 발생하는 모든 오류는 상태 쿼리 또는 해당 작업의 피드백 채널을 통해 상위 계층으로 전달될 것으로 추정됩니다. 질문 (열림)

본 사용 지침은 AUTOSAR CP R20-11 사양을 바탕으로 AI에 의해 생성되었습니다.

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

Record
AUTOSAR/AP/record/CP_MOD_Crypto
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_Crypto@rel:R20-11#ab86e1bf
Content hash
ab86e1bf
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CryptoDriver.pdf#nameddest=SWS_Crypto_91000

초기화 및 상태

Returns the version information of this module.

void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);

Initializes the Crypto Driver.

void Crypto_Init (const Crypto_ConfigType* configPtr);

서비스 · KeyElement…

Service Crypto_KeyElementCopy.

Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopyPartial.

Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

This interface shall be used to get a key element of the key identified by the crypto

Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);

Used to retrieve information which key elements are available in a given key.

Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);

Sets the given key element bytes to the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);

서비스 · Key…

Copies a key with all its elements to another key in the same crypto driver. Note: If the actual key element is directly mapped to flash memory, there could be a bigger delay when calling this function (synchronous operation)

Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);

Derives a new key by using the key elements in the given key identified by the crypto Key Id. The given key contains the key elements for the password, salt. The derived key is stored in the key element with the id 1 of the key identified by target Crypto Key Id. The number of iterations is given in the key element CRYPTO_ KE_ KEYDERIVATION_ ITERATIONS.

Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);

Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.

Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the partner public key. The shared secret key is stored as a key element in the same key.

Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);

Generates new key material store it in the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);

Returns the key state of the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);

Sets invalid for the status of the key identifi ed by crypto Key Id.

Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);

Sets the key state of the key identified by crypto Key Id to valid.

Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);

서비스 · 기타

This interface removes the provided job from the queue and cancels the processing of the job if possible.

Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);

Service Crypto_ProcessJob.

Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);

This function generates the internal seed state using the pro vided entropy source. Furthermore, this function can be used to update the seed state with new entropy

Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);

주기적

If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoDriver

void Crypto_MainFunction (void);

타입

Configuration data structure of Cry If module