AUTOSAR SWS CryptoServiceManager
AUTOSAR SWS CryptoServiceManager
Disclaimer
This work (specification and/or software implementation) and the material contained
in it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and
the companies that have contributed to it shall not be liable for any use of the work.
The material contained in this work is protected by copyright and other types of
intellectual property rights. The commercial exploitation of the material contained in
this work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the
work may be utilized or reproduced, in any form or by any means, without permission
in writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Table of Contents
1 Introduction and Functional Overview ................................................................ 7
2 Acronyms and Abbreviations.............................................................................. 8
2.1 Glossary of Terms ........................................................................................ 8
3 Related documentation .................................................................................... 10
3.1 Input Documents ........................................................................................ 10
3.2 Related standards and norms .................................................................... 11
3.3 Related specification .................................................................................. 11
4 Constraints and Assumptions........................................................................... 12
4.1 Limitations .................................................................................................. 12
4.2 Applicability to Car Domains ....................................................................... 12
4.3 Security Implications................................................................................... 12
5 Dependencies to other Modules....................................................................... 13
5.1 File Structure .............................................................................................. 13
5.1.1 Code File Structure ............................................................................. 13
6 Requirements Traceability................................................................................ 14
7 Functional specification .................................................................................... 17
7.1 Basic Architecture Guidelines ..................................................................... 17
7.2 General Behavior........................................................................................ 17
7.2.1 Normal Operation ................................................................................ 18
7.2.2 Design Notes....................................................................................... 21
7.3 Error Classification ..................................................................................... 29
7.3.1 Development Errors ............................................................................ 29
7.3.2 Runtime Errors .................................................................................... 30
7.3.3 Transient Faults .................................................................................. 30
7.3.4 Production Errors ................................................................................ 30
7.3.5 Extended Production Errors ................................................................ 30
7.4 Error detection ............................................................................................ 30
8 API Specification .............................................................................................. 32
8.1 Imported types ............................................................................................ 32
8.2 Type Definitions .......................................................................................... 32
8.2.1 Csm_ConfigType ................................................................................ 32
8.2.2 Crypto_AlgorithmFamilyType .............................................................. 33
8.2.3 Crypto_AlgorithmModeType................................................................ 34
8.2.4 Crypto_InputOutputRedirectionConfigType ........................................ 35
8.2.5 Crypto_JobStateType ......................................................................... 35
8.2.6 Crypto_JobStateType ......................................................................... 36
8.2.7 Crypto_JobPrimitiveInputOutputType ................................................. 36
8.2.8 Crypto_JobInfoType ............................................................................ 37
8.2.9 Crypto_JobPrimitiveInfoType .............................................................. 37
8.2.10 Crypto_ServiceInfoType ...................................................................... 38
8.2.11 Crypto_JobRedirectionInfoType .......................................................... 39
8.2.12 Crypto_AlgorithmInfoType................................................................... 39
8.2.13 Crypto_ProcessingType ...................................................................... 40
4 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Abbreviation / Description:
Acronym:
AEAD Authenticated Encryption with Associated Data
CDD Complex Device Driver
CSM Crypto Service Manager
CRYIF Crypto Interface
CRYPTO Crypto Driver
DET Default Error Tracer
HSM Hardware Security Module
HW Hardware
SHE Security Hardware Extension
SW Software
Terms: Description:
Crypto Driver A Crypto Driver implements one or more Crypto Driver Objects.
Object The Crypto Driver Object can offer different crypto primitives in
hardware or software. The Crypto Driver Objects of one Crypto
Driver are independent of each other.
There is only one workspace for each Crypto Driver Object (i.e.
only one crypto primitive can be performed at the same time)
Key A Key can be referenced by a job in the Csm.
In the Crypto Driver, the key refers a specific key type.
Key Type A key type consists of refers to key elements.
The key types are typically pre-configured by the vendor of the
Crypto Driver.
Key Element Key elements are used to store data. This data can be e.g. key
material or the IV needed for AES encryption.
It can also be used to configure the behaviour oft he key
management functions.
Job A job is a configured Object with refers to a key and a cryptographic
primitive.
Channel A channel is the path from a Crypto Service Manager queue via the
Crypto Interface to a specific Crypto Driver Object.
Crypto Primitive A crypto primitive is an instance of a configured cryptographic
algorithm realized in a Crypto Driver Object.
Operation An operation of a crypto primitive declares what part of the crypto
primitive shall be performed. There are three different operations:
START Operation indicates a new request of a crypto primitive,
it shall cancel all previous requests perform necessary
8 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
3 Related documentation
Thus, the specification SWS BSW General shall be considered as additional and
required specification for Crypto Service Manager.
4.1 Limitations
Some type definitions of CSM start with the Prefix “CRYPTO_” which will violate
SRS_BSW_00305. This will be harmonized in release 4.3.1. Nevertheless due to the
constraint [constr_1050] part 1 the ports are still consider to be compatible.
[SWS_Csm_00506] ⌈The CSM module shall use the interfaces of the CRYIF with the
underlying Crypto Drivers (CRYPTO) to calculate the result of a cryptographic
service.
⌋(SRS_CryptoStack_00082)
The incorporated cryptographic library modules or hardware extensions of the Crypto
Driver provide the cryptographic routines, e.g. SHA-1, RSA, AES, Diffie-Hellman key-
exchange, etc.
[SWS_Csm_00002] ⌈The code file structure shall not be defined within this
specification completely. The CSM module shall consist of the following parts:
⌋()
6 Requirements Traceability
a cryptographic primitive
which can be requested to a
driver
SRS_CryptoStack_00020 The Crypto Stack shall identify SWS_Csm_00984, SWS_Csm_00989
symmetric
encryption/decryption as a
cryptographic primitive which
can be requested to a driver
SRS_CryptoStack_00021 The Crypto Stack shall identify SWS_Csm_00984, SWS_Csm_00989
asymmetric
encryption/decryption as a
cryptographic primitive which
can be requested to a driver
SRS_CryptoStack_00022 The Crypto Stack shall identify SWS_Csm_00982
MAC generation/verification
as a cryptographic primitive
which can be requested to a
driver
SRS_CryptoStack_00023 The Crypto Stack shall identify SWS_Csm_00992, SWS_Csm_00996
asymmetric signature
generation/verification as a
cryptographic primitive which
can be requested to a driver
SRS_CryptoStack_00024 The Crypto Stack shall identify SWS_Csm_00980
hash calculation as a
cryptographic primitive which
can be requested to a driver
SRS_CryptoStack_00026 The Crypto Stack shall SWS_Csm_00955
provide an interface for the
generation of asymmetric keys
SRS_CryptoStack_00027 The Crypto Stack shall SWS_Csm_00955
provide an interface for the
generation of symmetric keys
SRS_CryptoStack_00082 The CSM module specification SWS_Csm_00001, SWS_Csm_00032,
shall specify the interface and SWS_Csm_00506
behavior of the callback
function, if the asynchronous
job processing mode is
selected
SRS_CryptoStack_00084 The CSM module shall use SWS_Csm_01039
the streaming approach for
some selected services
SRS_CryptoStack_00086 The CSM module shall SWS_Csm_01089, SWS_Csm_91004
distinguish between error
types
SRS_CryptoStack_00087 The CSM module shall report SWS_Csm_01088, SWS_Csm_91012
detected development errors
to the Default Error Tracer
SRS_CryptoStack_00090 The CSM shall provide an SWS_Csm_00073, SWS_Csm_00802,
interface to be accessible via SWS_Csm_00803, SWS_Csm_00902,
the RTE SWS_Csm_00903, SWS_Csm_00912,
SWS_Csm_00922, SWS_Csm_00923,
SWS_Csm_00927, SWS_Csm_00928,
SWS_Csm_00930, SWS_Csm_00934,
SWS_Csm_00935, SWS_Csm_00936,
SWS_Csm_00943, SWS_Csm_00946,
SWS_Csm_01042, SWS_Csm_01074,
SWS_Csm_01075, SWS_Csm_01077,
SWS_Csm_01078, SWS_Csm_01079,
SWS_Csm_01906, SWS_Csm_01910,
SWS_Csm_01915, SWS_Csm_01920,
SWS_Csm_01921, SWS_Csm_01922,
SWS_Csm_01923, SWS_Csm_01924,
SWS_Csm_01925, SWS_Csm_01926,
SWS_Csm_01927, SWS_Csm_01928,
SWS_Csm_09000, SWS_Csm_91023,
SWS_Csm_91051, SWS_Csm_91052,
SWS_Csm_91053, SWS_Csm_91054,
SWS_Csm_91055, SWS_Csm_91056,
SWS_Csm_91057, SWS_Csm_91058,
SWS_Csm_91059, SWS_Csm_91060,
SWS_Csm_91061, SWS_Csm_91062
SRS_CryptoStack_00091 The CSM shall provide one SWS_Csm_00934, SWS_Csm_01042,
Provide--Port for each SWS_Csm_91023, SWS_Csm_91062
configuration
SRS_CryptoStack_00095 The Crypto Driver module SWS_Csm_01069, SWS_Csm_91001
shall strictly separate error
and status information
SRS_CryptoStack_00100 Synchronous Job Processing SWS_Csm_01049
SRS_CryptoStack_00101 Asynchronous Job Processing SWS_Csm_01049
SRS_CryptoStack_00102 The priority of a user and its SWS_Csm_01010
crypto jobs shall be defined by
static configuration
SRS_CryptoStack_00103 The Crypto Stack shall SWS_Csm_00956
provide an interface for the
derivation of symmetric keys
SRS_CryptoStack_00906 - SWS_Csm_00947
SRS_CryptoStack_01076 - SWS_Csm_01083
SRS_CrytptoStack_00028 - SWS_Csm_00966, SWS_Csm_00967
SRS_CrytptoStack_00029 - SWS_Csm_00959
SRS_CrytptoStack_00031 - SWS_Csm_01036
SRS_Csm_00066 - SWS_Csm_00691, SWS_Csm_00728,
SWS_Csm_01905
SWS_BSW_00050 Check parameters passed to SWS_Csm_00186
Initialization functions
SWS_BSW_00216 - SWS_Csm_01085
7 Functional specification
⌋()
[SWS_Csm_00016] ⌈ For each job just one instance shall be processed by CSM at a
time.
⌋()
Note: “job is being processed” means that the corresponding crypto driver object is
currently and actively processing this job. When a job is not finished but the crypto
driver object is not active with it (because, e.g., the operation “FINISH” is
outstanding), this does not mean that this job is being processed.
[SWS_Csm_01039] ⌈To unite a single call function and the streaming approach for
the crypto services, there is the mode parameter, which determines the operation
mode. This service operation is a flag field, indicating the operation mode “START”,
“UPDATE” or “FINISH”. It declares explicitly what operation shall be performed.
These operation modes can be mixed, and execute multiple operations at once.
The diagram in SWS_Csm_00024 shows the state machine of a job of this design.
⌋(SRS_CryptoStack_00084)
Note: The actual transaction of the states is made in the layer, which works with
these states, i.e. in the Crypto Driver.
[SWS_Csm_00024] ⌈
Idle
Initial
Crypto_Operationmode_Start
Activ e
Error E_OK
E_OK
EntryPoint
[successful finish]
[error]
Crypto_Operationmode_Update Crypto_Operationmode_Finish
Update
Crypto_Operationmode_Update
⌋()
Note: The coherent single call approach could improve the performance due to less
overhead. Instead of calling the explicit API multiple times, only one call is necessary.
This approach is intended to be used with small data input, which demand fast
processing.
While operating with the streaming approach (“Start”, “Update”, “Finish”) the
dedicated Crypto Driver Object is waiting for further input (“Update”) until the “Finish”
state has been reached. No other job could be processed on this Crypto Driver
instance meanwhile.Functional Requirements
7.2.1.1 Configuration
Note:
Channels may hold jobs of both asynchronous and synchronous processing type. If
so, a synchronous job might not be accepted for processing although its job's priority
is higher than those of all asynchronous jobs.
Note:
As the underlying Crypto Driver can have its own queue, it can not always be
ensured that the highest priority job provided by the application is processed next.
[SWS_Csm_91007] ⌈ If a synchronous job is issued and the priority is less than the
highest priority available in the queue, the CSM shall return E_BUSY.
⌋()
Note:
By pausing calls to the CSM main function with e.g. critical sections during calling the
synchronous jobs, it can be ensured, that synchronous jobs can be processed in a
row without having to wait for asynchronous jobs in between if they have a high
enough priority. Also consider disabling queueing in the Crypto Driver Object to
ensure fast processing of synchronous jobs.
If the loading of asynchronous jobs from the queue shall not be paused by
synchronous jobs, the priorities of the synchronous jobs have to be smaller than the
asynchronous jobs.
The CSM provides two services: (1) the crypto services itself and (2) key
management.
The Csm_Init() request shall not be responsible to trigger the initialization of the
underlying CRYIF. It is assumed, that the underlying CRYIF will be initialized by any
appropriate entity (e.g. BswM).
Software components, which are using the CSM module, shall be responsible for
checking global error and status information resulting from the CSM module startup.
Note:
The Csm_<Service>() will call the CryIf_ProcessJob() with a pointer to
Crypto_JobType, where all the necessary information are stored to process the job.
Part of this Crypto_JobType is a Crypto_JobPrimitiveInputOutputType, where all the
information about the input and output parameters depending of the service are
stored. A definition of the mapping from the API parameters of Csm_<Service>() to
the parameters of Crypto_JobPrimitiveInputOutputType, can be found in
[SWS_Crypto_00073] of the Crypto Driver specification.
7.2.2.2.2 Queuing
The CSM may have several queues, where the jobs are lining up depending on their
priority, to process multiple cryptographic requests. The path from a CSM queue via
the CryIf to a Crypto Driver Object is called a channel. Each queue of the CSM is
mapped to one channel to access the crypto primitives of the Crypto Driver Object.
The size of the queue is configurable.
To optimize the hardware usage of the Crypto Driver Object, there is optionally a
queue in Crypto Driver, too.
Figure 7.1 illustrates an AUTOSAR Layered View with channels. In this example,
there is a HSM with two Crypto Driver Objects (HW-AES and HW-RSA), each of
them has an own channel. Each channel is connected to a CSM queue and a Crypto
Driver Object queue.
In this case, both Crypto Driver Objects are processing a crypto job (AES-high and
RSA) each, while the queue of the Crypto Driver Object contains one more job (AES-
low). If the HW-AES of the HSM finished the AES-high job, AES-low job will be
processed as next one.
Other scenarios with the same setup (without jobs in process or in queues) can be
derived as follows:
It will be assumed, that a new job of an application calls RSA.
23 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
If the Crypto Driver Object of the RSA is not busy, the job will be processed
immediately.
If the Crypto Driver Object of the RSA is busy, but the queue of the Crypto
Driver Object is not full, the job will be listed into that queue in order of its
priority. As soon as the Crypto Driver Object is free, the job with the highest
priority from the Crypto Driver Object queue will be executed.
If the Crypto Driver Object of the RSA is busy and the queue of the Crypto
Driver Object is full, the job will be stored in the CSM queue in order of its
priority.
If the Crypto Driver Object of the RSA is busy and the queue of the Crypto
Driver Object as well as the CSM queue are full, the CSM rejects the request.
If the Crypto Driver Object of the RSA is active, the job is already started in the
Crypto Driver and is waiting for either more data to process or the finish
command.
[SWS_Csm_00944] ⌈The CsmQueues shall sort the jobs according to the configured
job’s priority.
⌋()
The higher the job priority value, the higher the job’s priority.
[SWS_Csm_01041]⌈
⌋()
Synchronous job processing and queuing might not be useful. So, if synchronous job
processing is chosen, the queue sizes should be “0”. However, it is also possible to
use channels (including queues) with synchronous and asynchronous jobs.
If the job has the state “active” the CSM shall assume, that the mapped cryptographic
driver instance is currently processing this job and the caller wants to continue with
the operation (e.g. feeding more data using “update”). The plausibility check has to
be performed in the cryptographic driver instance.
Keys, i.e. the corresponding key IDs have symbolic names given by the
configuration. The Crypto Stack API uses the following key element index definition
from the CSM module:
[SWS_Csm_01022] ⌈
key
key
Crypto Service: key element Name: element Mandatory:
element:
ID:
Key
CRYPTO_KE_MAC_KEY 1 x
Material
Seed CRYPTO_KE_KEYGENERATE_SEED 16
Key CRYPTO_KE_SIGNATURE_KEY
Signature 1 x
Material
Seed
CRYPTO_KE_RANDOM_SEED_STATE 3
State
Random
Algorithm CRYPTO_KE_RANDOM_ALGORITHM 4
Key
CRYPTO_KE_CIPHER_KEY 1 x
Material
Base CRYPTO_KE_KEYEXCHANGE_BASE 8 x
Private
CRYPTO_KE_KEYEXCHANGE_PRIVKEY 9 x
Key
Key Exchange
Own CRYPTO_KE_KEYEXCHANGE_OWNPUBKEY 10 x
Public Key
Shared
CYRPTO_KE_KEYEXCHANGE_SHAREDVALUE 1 x
Value
Algorithm CRYPTO_KE_KEYEXCHANGE_ALGORITHM 12
Password CRYPTO_KE_KEYDERIVATION_PASSWORD 1 x
Salt CRYPTO_KE_KEYDERIVATION_SALT 13
Key Derivation
Iterations CRYPTO_KE_KEYDERIVATION_ITERATIONS 14
Algorithm CRYPTO_KE_KEYDERIVATION_ALGORITHM 15
Key
CRYPTO_KE_KEYGENERATE_KEY 1 x
Material
Key Generate
Seed CRYPTO_KE_KEYGENERATE_SEED 16
Algorithm CRYPTO_KE_KEYGENERATE_ALGORITHM 17
Format CRYPTO_KE_CERTIFICATE_PARSING_FORMAT 18
Current
CRYPTO_KE_CERTIFICATE_CURRENT_TIME 19
Time
Version CRYPTO_KE_CERTIFICATE_VERSION 20
Serial CRYPTO_KE_CERTIFICATE_SERIALNUMBER 21
Number
Signature CRYPTO_KE_CERTIFICATE_SIGNATURE_ALGORITHM 22
Algroithm
Issuer CRYPTO_KE_CERTIFICATE_ISSUER 23
Validity
CRYPTO_KE_CERTIFICATE_VALIDITY_NOT_BEFORE 24
start
Validity
CRYPTO_KE_CERTIFICATE_VALIDITY_NOT_AFTER 25
end
Subject CRYPTO_KE_CERTIFICATE_SUBJECT 26
Subject
CRYPTO_KE_CERTIFICATE_SUBJECT_PUBLIC_KEY 1
Public Key
Extensions CRYPTO_KE_CERTIFICATE_EXTENSIONS 27
Signature CRYPTO_KE_CERTIFICATE_SIGNATURE 28
⌋()
[SWS_Csm_00951] ⌈For each key element that contains cryptographic key material,
the format of the provided key shall be specified in the configuration used for data
exchange, e.g. for Csm_KeyElementGet() or Csm_KeyElementSet().The key
formats supported by a specific crypto driver are part of the pre-configuration
information that comes along with the crypto driver.
⌋(SRS_CryptoStack_00008)
1
CRYPTO_KE_FORMAT_BIN_OCTET Key provided as octet value in binary form .
CRYPTO_KE_FORMAT_BIN_SHEKEYS Combined input/output keys for SHE operation
(M1+M2+M3) and (M4+M5).
CRYPTO_KE_FORMAT_BIN_IDENT_PRIVATEKEY_ PKCS8 Private key material in ASN.1 coded form
(BER coding) with identification. The data is
provided in binary form, not, e.g. as a BASE64
string.
CRYPTO_KE_FORMAT_BIN_IDENT_PUBLICKEY Public key material in ASN.1 coded form (BER
coding) with identification. The data is provided
in binary form, not, e.g. as a BASE64 string.
CRYPTO_KE_FORMAT_BIN _RSA_PRIVATEKEY Private key material in ASN.1 coded form
(BER coding). The key material is provided in
binary form, not, e.g. as a BASE64 string.
CRYPTO_KE_FORMAT_BIN _RSA_PUBLICKEY Public key material in ASN.1 coded form (BER
coding). The key material is provided in binary
form, not, e.g. as a BASE64 string.
CRYPTO_KE_FORMAT_BIN_CERT_X509_V3 TBD
CRYPTO_KE_FORMAT_BIN_CERT_CVC TBD
A binary Octet is the integer representation in base 256. A large value can be splitted into his factors:
xLen–1 xLen–2
x = x xLen–1 * 256 + xxLen–2 * 256 + … + x1 * 256 + x0. where 0 <= xi < 256.
Let the Octet Xi have the integer value x xLen-i for 1 <= i <= xLen. The octet is then
X = X1 X2 .. XxLen
Note:
The key elements CRYPTO_KE_[…]_ALGORITHM are used to configure the behavior
of the key management functions, because they are independent of jobs and
therefore can not be configured like a primitive.
[SWS_Csm_91015]⌈If input or output redirection is not used for a job element (no
CsmInOutRedirectionRef ECUC_Csm_00262 is existing), jobRedirectionInfoRef shall
be set to NULL_PTR. If redirection is used element (CsmInOutRedirectionRef
ECUC_Csm_00262 is existing) the jobRedirectionInfoRef shall point to a structure of
Crypto_JobRedirectionInfoType.
⌋()
[SWS_Csm_91011] ⌈If a CSM API with a key handle in its interface is called and the
key handle (called keyID) is out of range, the operation shall not be performed and
CSM_E_PARAM_HANDLE shall be reported to the DET when CsmDevErrorDetect
is true.
⌋()
[SWS_Csm_91012] ⌈If a CSM API is called with a buffer too small to perform the
desired operation, the operation shall not be performed and CSM_E_SMALL_BUFFER
shall be reported to the DET when CsmDevErrorDetect is true.
⌋(SRS_CryptoStack_00087)
[SWS_Csm_01088] ⌈If a CSM job needs to be queued and the queue is full, the
runtime error CSM_E_QUEUE_FULL shall be reported to the DET.
⌋(SRS_CryptoStack_00087)
8 API Specification
8.2.1 Csm_ConfigType
[SWS_Csm_01085] ⌈
Name: Csm_ConfigType
Type: Structure
Range: implementation The content of the configuration data structure is
specific implementation specific.
Description: Configuration data structure of Csm module
Available via: Csm.h
⌋ (SWS_BSW_00216)
8.2.2 Crypto_AlgorithmFamilyType
[SWS_Csm_01047] ⌈
Name: Crypto_AlgorithmFamilyType
Type: Enumeration
Range: CRYPTO_ALGOFAM_NOT_SET 0x00 Algorithm family is not set
CRYPTO_ALGOFAM_SHA1 0x01 SHA1 hash
CRYPTO_ALGOFAM_SHA2_224 0x02 SHA2-224 hash
CRYPTO_ALGOFAM_SHA2_256 0x03 SHA2-256 hash
CRYPTO_ALGOFAM_SHA2_384 0x04 SHA2-384 hash
CRYPTO_ALGOFAM_SHA2_512 0x05 SHA2-512 hash
CRYPTO_ALGOFAM_SHA2_512_224 0x06 SHA2-512/224 hash
CRYPTO_ALGOFAM_SHA2_512_256 0x07 SHA2-512/256 hash
CRYPTO_ALGOFAM_SHA3_224 0x08 SHA3-224 hash
CRYPTO_ALGOFAM_SHA3_256 0x09 SHA3-256 hash
CRYPTO_ALGOFAM_SHA3_384 0x0a SHA3-384 hash
CRYPTO_ALGOFAM_SHA3_512 0x0b SHA3-512 hash
CRYPTO_ALGOFAM_SHAKE128 0x0c SHAKE128 hash
CRYPTO_ALGOFAM_SHAKE256 0x0d SHAKE256 hash
CRYPTO_ALGOFAM_RIPEMD160 0x0e RIPEMD hash
CRYPTO_ALGOFAM_BLAKE_1_256 0x0f BLAKE-1-256 hash
CRYPTO_ALGOFAM_BLAKE_1_512 0x10 BLAKE-1-512 hash
CRYPTO_ALGOFAM_BLAKE_2s_256 0x11 BLAKE-2s-256 hash
CRYPTO_ALGOFAM_BLAKE_2s_512 0x12 BLAKE-2s-512 hash
CRYPTO_ALGOFAM_3DES 0x13 3DES cipher
CRYPTO_ALGOFAM_AES 0x14 AES cipher
CRYPTO_ALGOFAM_CHACHA 0x15 ChaCha cipher
CRYPTO_ALGOFAM_RSA 0x16 RSA cipher
CRYPTO_ALGOFAM_ED25519 0x17 ED22518 elliptic curve
CRYPTO_ALGOFAM_BRAINPOOL 0x18 Brainpool elliptic curve
CRYPTO_ALGOFAM_ECCNIST 0x19 NIST ECC elliptic curves
CRYPTO_ALGOFAM_RNG 0x1b Random Number Generator
CRYPTO_ALGOFAM_SIPHASH 0x1c SipHash
CRYPTO_ALGOFAM_ECIES 0x1d ECIES Cipher
CRYPTO_ALGOFAM_ECCANSI 0x1e Elliptic curve according to
ANSI X9.62
CRYPTO_ALGOFAM_ECCSEC 0x1f Elliptic curve according to
SECG
CRYPTO_ALGOFAM_DRBG 0x20 Random number generator
according to NIST SP800-
90A
CRYPTO_ALGOFAM_FIPS186 0x21 Random number generator
according to FIPS 186.
CRYPTO_ALGOFAM_PADDING_PKCS7 0x22 Cipher padding according
to PKCS.7
CRYPTO_ALGOFAM_PADDING_ONEWITHZEROS 0x23 Cipher padding mode.
Fill/verify data with 0, but
first bit after the data is 1.
Eg. "DATA" & 0x80 &
0x00...
8.2.3 Crypto_AlgorithmModeType
[SWS_Csm_01048] ⌈
Name: Crypto_AlgorithmModeType
Type: Enumeration
Range: CRYPTO_ALGOMODE_NOT_SET 0x00 Algorithm key is not set
CRYPTO_ALGOMODE_ECB 0x01 Blockmode: Electronic Code
Book
CRYPTO_ALGOMODE_CBC 0x02 Blockmode: Cipher Block
Chaining
CRYPTO_ALGOMODE_CFB 0x03 Blockmode: Cipher Feedback
Mode
CRYPTO_ALGOMODE_OFB 0x04 Blockmode: Output Feedback
Mode
CRYPTO_ALGOMODE_CTR 0x05 Blockmode: Counter Modex
CRYPTO_ALGOMODE_GCM 0x06 Blockmode: Galois/Counter
Mode
CRYPTO_ALGOMODE_XTS 0x07 XOR-encryption-based
tweaked-codebook mode with
ciphertext stealing
CRYPTO_ALGOMODE_RSAES_OAEP 0x08 RSA Optimal Asymmetric
Encryption Padding
CRYPTO_ALGOMODE_RSAES_PKCS1_v1_5 0x09 RSA encryption/decryption with
PKCS#1 v1.5 padding
CRYPTO_ALGOMODE_RSASSA_PSS 0x0a RSA Probabilistic Signature
Scheme
CRYPTO_ALGOMODE_RSASSA_PKCS1_v1_5 0x0b RSA signature with PKCS#1
v1.5
CRYPTO_ALGOMODE_8ROUNDS 0x0c 8 rounds (e.g. ChaCha8)
CRYPTO_ALGOMODE_12ROUNDS 0x0d 12 rounds (e.g. ChaCha12)
CRYPTO_ALGOMODE_20ROUNDS 0x0e 20 rounds (e.g. ChaCha20)
CRYPTO_ALGOMODE_HMAC 0x0f Hashed-based MAC
CRYPTO_ALGOMODE_CMAC 0x10 Cipher-based MAC
CRYPTO_ALGOMODE_GMAC 0x11 Galois MAC
CRYPTO_ALGOMODE_CTRDRBG 0x12 Counter-based Deterministic
Random Bit Generator
CRYPTO_ALGOMODE_SIPHASH_2_4 0x13 Siphash-2-4
CRYPTO_ALGOMODE_SIPHASH_4_8 0x14 Siphash-4-8
CRYPTO_ALGOMODE_PXXXR1 0x15 ANSI R1 Curve
CRYPTO_ALGOMODE_CUSTOM 0xff Custom algorithm mode
Description: Enumeration of the algorithm mode
Available via: Csm.h
⌋ ()
8.2.4 Crypto_InputOutputRedirectionConfigType
[SWS_Csm_91024] ⌈
Name: Crypto_InputOutputRedirectionConfigType
Type: Enumeration
Range: CRYPTO_REDIRECT_CONFIG_PRIMARY_INPUT 0x01 --
CRYPTO_REDIRECT_CONFIG_SECONDARY_INPUT 0x02 --
CRYPTO_REDIRECT_CONFIG_TERTIARY_INPUT 0x04 --
CRYPTO_REDIRECT_CONFIG_PRIMARY_OUTPUT 0x10 --
CRYPTO_REDIRECT_CONFIG_SECONDARY_OUTPUT 0x20 --
Description: Defines which of the input/output parameters are re-directed to a key
element. The values can be combined to define a bit field.
Available via: Csm.h
⌋ ()
8.2.5 Crypto_JobStateType
[SWS_Csm_01013] ⌈
Name: Crypto_JobType
Type: Structure
Element: uint32 jobId Identifier
for the job
structure.
Crypto_JobStateType jobState Determines
the current
job state.
Crypto_JobPrimitiveInputOutputType jobPrimitiveInputOutput Structure
containing
input and
output
information
depending
on the job
and the
crypto
primitive.
const Crypto_JobPrimitiveInfoType* jobPrimitiveInfo Pointer to a
structure
containing
further
information
which
depends
on the job
and the
crypto
primitive.
const Crypto_JobInfoType* jobInfo Pointer to a
structure
containing
further
information
which
depends
on the job
and the
35 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
crypto
primitive.
Crypto_JobRedirectionInfoType* jobRedirectionInfoRef Pointer to a
structure
containing
further
information
on the
usage of
keys as
input and
output for
jobs.
Description: Structure which contains further information, which depends on the job and the crypto
primitive.
Available <none>
via:
⌋ ()
8.2.6 Crypto_JobStateType
[SWS_Csm_01028] ⌈
Name: Crypto_JobStateType
Type: Enumeration
Range: CRYPTO_JOBSTATE_IDLE 0x00 Job is in the state "idle". This state is reached
after Csm_Init() or when the "Finish" state is
finished.
CRYPTO_JOBSTATE_ACTIVE 0x01 Job is in the state "active". There was already
some input or there are intermediate results. This
state is reached, when the "update" or "start"
operation finishes.
Description: Enumeration of the current job state.
Available via: Csm.h
⌋ ()
8.2.7 Crypto_JobPrimitiveInputOutputType
[SWS_Csm_01009] ⌈
Name: Crypto_JobPrimitiveInputOutputType
Type: Structure
Element: const uint8* inputPtr Pointer to the input data.
uint32 inputLength Contains the input length
in bytes.
const uint8* secondaryInputPtr Pointer to the secondary
input data (for
MacVerify,
SignatureVerify).
uint32 secondaryInputLength Contains the secondary
input length in bytes.
const uint8* tertiaryInputPtr Pointer to the tertiary
input data (for
MacVerify,
SignatureVerify).
uint32 tertiaryInputLength Contains the tertiary
36 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.2.8 Crypto_JobInfoType
[SWS_Csm_01010] ⌈
Name: Crypto_JobInfoType
Type: Structure
Element: const uint32 jobId The family of the algorithm
const uint32 jobPriority Specifies the importance of the job (the
higher, the more important).
Description: Structure which contains job information (job ID and job priority).
Available via: <none>
⌋ (SRS_CryptoStack_00102)
8.2.9 Crypto_JobPrimitiveInfoType
[SWS_Csm_01012] ⌈
Name: Crypto_JobPrimitiveInfoType
Type: Structure
Element: uint32 callbackId Identifier of
the callback
37 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
function, to
be called, if
the
configured
service
finished.
const primitiveInfo Pointer to a
Crypto_PrimitiveInfoType* structure
containing
further
configuration
of the crypto
primitives
uint32 cryIfKeyId Identifier of
the CryIf key.
Crypto_ProcessingType processingType Determines
the
synchronous
or
asynchronous
behavior.
boolean callbackUpdateNotification Indicates,
whether the
callback
function shall
be called, if
the UPDATE
operation has
finished.
Description: Structure which contains further information, which depends on the job and the
crypto primitive.
Available via: Csm.h
⌋ (SRS_CryptoStack_00008)
8.2.10 Crypto_ServiceInfoType
[SWS_Csm_01031] ⌈
Name: Crypto_ServiceInfoType
Type: Enumeration
Range: CRYPTO_HASH 0x00 Hash Service
CRYPTO_MACGENERATE 0x01 MacGenerate Service
CRYPTO_MACVERIFY 0x02 MacVerify Service
CRYPTO_ENCRYPT 0x03 Encrypt Service
CRYPTO_DECRYPT 0x04 Decrypt Service
CRYPTO_AEADENCRYPT 0x05 AEADEncrypt Service
CRYPTO_AEADDECRYPT 0x06 AEADDecrypt Service
CRYPTO_SIGNATUREGENERATE 0x07 SignatureGenerate Service
CRYPTO_SIGNATUREVERIFY 0x08 SignatureVerify Service
CRYPTO_RANDOMGENERATE 0x0B RandomGenerate Service
CRYPTO_RANDOMSEED 0x0C RandomSeed Service
CRYPTO_KEYGENERATE 0x0D KeyGenerate Service
CRYPTO_KEYDERIVE 0x0E KeyDerive Service
CRYPTO_KEYEXCHANGECALCPUBVAL 0x0F KeyExchangeCalcPubVal Service
CRYPTO_KEYEXCHANGECALCSECRET 0x10 KeyExchangeCalcSecret Service
CRYPTO_CERTIFICATEPARSE 0x11 CertificiateParse Service
38 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.2.11 Crypto_JobRedirectionInfoType
[SWS_Csm_91026] ⌈
Name: Crypto_JobRedirectionInfoType
Type: Structure
Element: uint8 redirectionConfig Bit structure which indicates which buffer
shall be redirected to a key element.
Values from
Crypto_InputOutputRedirectionConfigType
can be used and combined with unary OR
operation.
uint32 inputKeyId Identifier of the key which shall be used as
input
uint32 inputKeyElementId Identifier of the key element which shall be
used as input
uint32 secondaryInputKeyId Identifier of the key which shall be used as
secondary input
uint32 secondaryInputKeyElementId Identifier of the key element which shall be
used as secondary input
uint32 tertiaryInputKeyId Identifier of the key which shall be used as
tertiary input
uint32 tertiaryInputKeyElementId Identifier of the key element which shall be
used as tertiary input
uint32 outputKeyId Identifier of the key which shall be used as
output
uint32 outputKeyElementId Identifier of the key element which shall be
used as output
uint32 secondaryOutputKeyId Identifier of the key which shall be used as
secondary output
uint32 secondaryOutputKeyElementId Identifier of the key element which shall be
used as secondary output
Description: Structure which holds the identifiers of the keys and key elements which shall be used as
input and output for a job and a bit structure which indicates which buffers shall be
redirected to those key elements.
Available --
via:
⌋ ()
8.2.12 Crypto_AlgorithmInfoType
[SWS_Csm_01008] ⌈
Name: Crypto_AlgorithmInfoType
Type: Structure
Element: Crypto_AlgorithmFamilyType family The family of the algorithm
Crypto_AlgorithmFamilyType secondaryFamily The secondary family of the
algorithm
uint32 keyLength The key length in bits to be
8.2.13 Crypto_ProcessingType
[SWS_Csm_01049] ⌈
Name: Crypto_ProcessingType
Type: Enumeration
Range: CRYPTO_PROCESSING_ASYNC 0x00 Asynchronous job processing
CRYPTO_PROCESSING_SYNC 0x01 Synchronous job processing
Description: Enumeration of the processing type.
Available via: Csm.h
⌋ (SRS_CryptoStack_00100, SRS_CryptoStack_00101)
8.2.14 Crypto_PrimitiveInfoType
[SWS_Csm_01011] ⌈
Name: Crypto_PrimitiveInfoType
Type: Structure
Element: const uint32 resultLength Contains the result length in bytes.
const service Contains the enum of the used
Crypto_ServiceInfoType service, e.g. Encrypt
const algorithm Contains the information of the used
Crypto_AlgorithmInfoType algorithm
Description: Structure which contains basic information about the crypto primitive.
Available via: Csm.h
⌋ ()
8.2.15 Csm_ConfigIdType
[SWS_Csm_00691] ⌈
Name: Csm_ConfigIdType
Type: uint16
Range: 0..65535 -- --
Description: Identification of a CSM service configuration via a numeric identifier, that is unique
within a service.
The name of a CSM service configuration, i.e. the name of the container
Csm_<Service>Config, shall serve as a symbolic name for this parameter
Available via: Csm.h
⌋ (SRS_Csm_00066)
8.3.1.1 Csm_Init
[SWS_Csm_00646] ⌈
Service name: Csm_Init
Syntax: void Csm_Init(
const Csm_ConfigType* configPtr
)
Service ID[hex]: 0x00
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): configPtr Pointer to a selected configuration structure
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: Initializes the CSM module.
Available via: Csm.h
⌋ (SRS_BSW_00101, SRS_BSW_00358, SRS_BSW_00414)
The Configuration pointer configPtr is currently not used and shall therefore be set
null pointer value.
[SWS_Csm_00659] ⌈If the initialization of the CSM module fails, the CSM shall
report CSM_E_INIT_FAILED to the DET when CsmDevErrorDetect is true.
⌋()
8.3.1.2 Csm_GetVersionInfo
[SWS_Csm_00705] ⌈
Service name: Csm_GetVersionInfo
Syntax: void Csm_GetVersionInfo(
Std_VersionInfoType* versioninfo
)
Service ID[hex]: 0x3b
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): None
Parameters None
(inout):
41 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Parameters (out): versioninfo Pointer to where to store the version information of this module.
Return value: None
Description: Returns the version information of this module.
Available via: Csm.h
⌋ (SRS_BSW_00407)
8.3.2.1 Csm_Hash
[SWS_Csm_00980] ⌈
Service name: Csm_Hash
Syntax: Std_ReturnType Csm_Hash(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
uint8* resultPtr,
uint32* resultLengthPtr
)
Service ID[hex]: 0x5d
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode Indicates which operation mode(s) to perfom.
Parameters (in): dataPtr Contains the pointer to the data for which the hash shall be
computed.
dataLength Contains the number of bytes to be hashed.
resultLengthPtr Holds a pointer to the memory location in which the output length
in bytes is stored. On calling this function, this parameter shall
Parameters
contain the size of the buffer provided by resultPtr. When the
(inout):
request has finished, the actual length of the returned value shall
be stored.
resultPtr Contains the pointer to the data where the hash value shall be
Parameters (out):
stored.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
Return value: CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_SMALL_BUFFER: The provided buffer is too small
to store the result
Description: Uses the given data to perform the hash calculation and stores the hash.
Available via: Csm.h
⌋ (SRS_CryptoStack_00024)
8.3.3.1 Csm_MacGenerate
[SWS_Csm_00982] ⌈
Service name: Csm_MacGenerate
Syntax: Std_ReturnType Csm_MacGenerate(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
uint8* macPtr,
uint32* macLengthPtr
)
Service ID[hex]: 0x60
Sync/Async: Sync or Async, dependent on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode Indicates which operation mode(s) to perfom.
Parameters (in): dataPtr Contains the pointer to the data for which the MAC shall be
computed.
dataLength Contains the number of bytes to be hashed.
macLengthPtr Holds a pointer to the memory location in which the output length
in bytes is stored. On calling this function, this parameter shall
Parameters
contain the size of the buffer provided by macPtr. When the
(inout):
request has finished, the actual length of the returned MAC shall
be stored.
Parameters (out): macPtr Contains the pointer to the data where the MAC shall be stored.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
Return value: CRYPTO_E_SMALL_BUFFER:The provided buffer is too small to
store the result
CRYPTO_E_KEY_SIZE_MISMATCH: Request failed, a key
element has the wrong size
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Uses the given data to perform a MAC generation and stores the MAC in the
memory location pointed to by the MAC pointer.
Available via: Csm.h
⌋ (SRS_CryptoStack_00022)
8.3.3.2 Csm_MacVerify
[SWS_Csm_01050] ⌈
43 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
⌋ ()
The cipher interfaces can be used for symmetrical and asymmentrical encryption or
decryption. Furthermore, it is also possible to use these interfaces for compression
and decompression, respectively.
8.3.4.1 Csm_Encrypt
[SWS_Csm_00984] ⌈
Service name: Csm_Encrypt
Syntax: Std_ReturnType Csm_Encrypt(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
uint8* resultPtr,
uint32* resultLengthPtr
)
Service ID[hex]: 0x5e
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode Indicates which operation mode(s) to perfom.
Parameters (in):
dataPtr Contains the pointer to the data to be encrypted.
dataLength Contains the number of bytes to encrypt.
resultLengthPtr Holds a pointer to the memory location in which the output length
information is stored in bytes. On calling this function, this
Parameters
parameter shall contain the size of the buffer provided by
(inout):
resultPtr. When the request has finished, the actual length of the
returned value shall be stored.
resultPtr Contains the pointer to the data where the encrypted data shall
Parameters (out):
be stored.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
Return value: CRYPTO_E_SMALL_BUFFER: The provided buffer is too small
to store the result
CRYPTO_E_KEY_SIZE_MISMATCH: Request failed, a key
element has the wrong size
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Encrypts the given data and store the ciphertext in the memory location pointed by
the result pointer.
Available via: Csm.h
⌋ (SRS_CryptoStack_00020, SRS_CryptoStack_00021)
In the case of block ciphers, it shall be possible to pass a dataLength which is not
a multiple of the corresponding block size. The underlying Crypto Driver is
responsible for handling these input data.
8.3.4.2 Csm_Decrypt
[SWS_Csm_00989] ⌈
Service name: Csm_Decrypt
Syntax: Std_ReturnType Csm_Decrypt(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
uint8* resultPtr,
uint32* resultLengthPtr
)
Service ID[hex]: 0x5f
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
Parameters (in): mode Indicates which operation mode(s) to perfom.
dataPtr Contains the pointer to the data to be decrypted.
45 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
⌋ (SRS_CryptoStack_00020, SRS_CryptoStack_00021)
8.3.5.1 Csm_AEADEncrypt
[SWS_Csm_01023] ⌈
Service name: Csm_AEADEncrypt
Syntax: Std_ReturnType Csm_AEADEncrypt(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* plaintextPtr,
uint32 plaintextLength,
const uint8* associatedDataPtr,
uint32 associatedDataLength,
uint8* ciphertextPtr,
uint32* ciphertextLengthPtr,
uint8* tagPtr,
uint32* tagLengthPtr
)
Service ID[hex]: 0x62
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode Indicates which operation mode(s) to perfom.
plaintextPtr Contains the pointer to the data to be encrypted.
Parameters (in):
plaintextLength Contains the number of bytes to encrypt.
associatedDataPtr Contains the pointer to the associated data.
associatedDataLength Contains the number of bytes of the associated data.
Parameters ciphertextLengthPtr Holds a pointer to the memory location in which the output
46 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
⌋ ()
8.3.5.2 Csm_AEADDecrypt
[SWS_Csm_01026] ⌈
Service name: Csm_AEADDecrypt
Syntax: Std_ReturnType Csm_AEADDecrypt(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* ciphertextPtr,
uint32 ciphertextLength,
const uint8* associatedDataPtr,
uint32 associatedDataLength,
const uint8* tagPtr,
uint32 tagLength,
uint8* plaintextPtr,
uint32* plaintextLengthPtr,
Crypto_VerifyResultType* verifyPtr
)
Service ID[hex]: 0x63
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode Indicates which operation mode(s) to perfom.
Parameters (in): ciphertextPtr Contains the pointer to the data to be decrypted.
ciphertextLength Contains the number of bytes to decrypt.
associatedDataPtr Contains the pointer to the associated data.
⌋ ()
8.3.6.1 Csm_SignatureGenerate
[SWS_Csm_00992] ⌈
Service name: Csm_SignatureGenerate
Syntax: Std_ReturnType Csm_SignatureGenerate(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
uint8* resultPtr,
uint32* resultLengthPtr
)
Service ID[hex]: 0x76
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
Parameters (in): jobId Holds the identifier of the job using the CSM service.
48 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.3.6.2 Csm_SignatureVerify
[SWS_Csm_00996] ⌈
Service name: Csm_SignatureVerify
Syntax: Std_ReturnType Csm_SignatureVerify(
uint32 jobId,
Crypto_OperationModeType mode,
const uint8* dataPtr,
uint32 dataLength,
const uint8* signaturePtr,
uint32 signatureLength,
Crypto_VerifyResultType* verifyPtr
)
Service ID[hex]: 0x64
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
mode The Crypto_JobInfoType job with the corresponding jobId shall be
modified in the following way:
Parameters (in): dataPtr Contains the pointer to the data to be verified.
dataLength Contains the number of data bytes.
signaturePtr Holds a pointer to the signature to be verified.
signatureLength Contains the signature length in bytes.
Parameters None
(inout):
verifyPtr Holds a pointer to the memory location, which will hold the result
Parameters (out):
of the signature verification.
Std_ReturnType E_OK: Request successful
Return value: E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
49 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.3.7.1 Csm_RandomGenerate
[SWS_Csm_01543] ⌈
Service name: Csm_RandomGenerate
Syntax: Std_ReturnType Csm_RandomGenerate(
uint32 jobId,
uint8* resultPtr,
uint32* resultLengthPtr
)
Service ID[hex]: 0x72
Sync/Async: Sync or Async, dependend on the job configuration
Reentrancy: Reentrant
Parameters (in): jobId Holds the identifier of the job using the CSM service.
resultLengthPtr Holds a pointer to the memory location in which the result length
in bytes is stored. On calling this function, this parameter shall
Parameters
contain the number of random bytes, which shall be stored to the
(inout):
buffer provided by resultPtr. When the request has finished, the
actual length of the returned value shall be stored.
resultPtr Holds a pointer to the memory location which will hold the result
Parameters (out):
of the random number generation.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
Return value: CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_ENTROPY_EXHAUSTION: Request failed, entropy
of random number generator is exhausted
Description: Generate a random number and stores it in the memory location pointed by the
result pointer.
Available via: Csm.h
⌋ (SRS_CryptoStack_00019)
The following interfaces are used for key management. Basically, a key contains of
one ore more key elements. A key element can be part of multiple keys. For
example, this allows to derive a key element from a password with one keyId, and to
use this derived key element for encryption with another keyId.
Note:
If the actual key element to be modified is directly mapped to flash memory, there
could be a bigger delay when calling the key management functions (synchronous
operation)
8.3.8.1.1 Csm_KeyElementSet
[SWS_Csm_00957] ⌈
Service name: Csm_KeyElementSet
Syntax: Std_ReturnType Csm_KeyElementSet(
uint32 keyId,
uint32 keyElementId,
const uint8* keyPtr,
uint32 keyLength
)
Service ID[hex]: 0x78
Sync/Async: Synchronous
Reentrancy: Non Reentrant
keyId Holds the identifier of the key for which a new material shall be
set.
Parameters (in): keyElementId Holds the identifier of the key element to be written.
keyPtr Holds the pointer to the key element bytes to be processed.
keyLength Contains the number of key element bytes.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is busy
Return value:
CRYPTO_E_KEY_WRITE_FAIL:Request failed because write
access was denied
CRYPTO_E_KEY_NOT_AVAILABLE: Request failed because
51 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.3.8.1.2 Csm_KeySetValid
[SWS_Csm_00958] ⌈
Service name: Csm_KeySetValid
Syntax: Std_ReturnType Csm_KeySetValid(
uint32 keyId
)
Service ID[hex]: 0x67
Sync/Async: Synchronous
Reentrancy: Non Reentrant
keyId Holds the identifier of the key for which a new material shall be
Parameters (in):
validated.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
Return value: E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypro Driver Object is busy
Description: Sets the key state of the key identified by keyId to valid.
Available via: Csm.h
⌋ ()
8.3.8.2.1 Csm_KeyElementGet
[SWS_Csm_00959] ⌈
Service name: Csm_KeyElementGet
Syntax: Std_ReturnType Csm_KeyElementGet(
uint32 keyId,
uint32 keyElementId,
uint8* keyPtr,
uint32* keyLengthPtr
)
Service ID[hex]: 0x68
Sync/Async: Synchronous
Reentrancy: Reentrant
keyId Holds the identifier of the key from which a key element shall be
Parameters (in): extracted.
keyElementId Holds the identifier of the key element to be extracted.
keyLengthPtr Holds a pointer to the memory location in which the output buffer
length in bytes is stored. On calling this function, this parameter
Parameters
shall contain the buffer length in bytes of the keyPtr. When the
(inout):
request has finished, the actual size of the written input bytes
shall be stored.
keyPtr Holds the pointer to the memory location where the key shall be
Parameters (out):
copied to.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is busy
CRYPTO_E_KEY_NOT_AVAILABLE: Request failed, the
requested key element is not available
Return value: CRYPTO_E_KEY_READ_FAIL: Request failed because read
access was denied
CRYPTO_E_SMALL_BUFFER: The provided buffer is too small
to store the result
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Retrieves the key element bytes from a specific key element of the key identified
by the keyId and stores the key element in the memory location pointed by the key
pointer.
Available via: Csm.h
⌋ (SRS_CryptoStack_00010, SRS_CryptoStack_00011, SRS_CrytptoStack_00029)
The underlying Crypto Driver has to decide if and how the key element bytes are
extracted.
[SWS_Csm_00969] ⌈
Service name: Csm_KeyElementCopy
Syntax: Std_ReturnType Csm_KeyElementCopy(
const uint32 keyId,
const uint32 keyElementId,
const uint32 targetKeyId,
const uint32 targetKeyElementId
)
Service ID[hex]: 0x71
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for the same keyId
keyId Holds the identifier of the key whose key element shall be the
source element.
keyElementId Holds the identifier of the key element which shall be the
source for the copy operation.
Parameters (in):
targetKeyId Holds the identifier of the key whose key element shall be the
destination element.
targetKeyElementId Holds the identifier of the key element which shall be the
destination for the copy operation.
Parameters None
(inout):
Parameters (out): None
53 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.3.8.3.2 Csm_KeyCopy
[SWS_Csm_01034] ⌈
Service name: Csm_KeyCopy
Syntax: Std_ReturnType Csm_KeyCopy(
const uint32 keyId,
const uint32 targetKeyId
)
Service ID[hex]: 0x73
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for same keyId
keyId Holds the identifier of the key whose key element shall be the
source element.
Parameters (in):
targetKeyId Holds the identifier of the key whose key element shall be the
destination element.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is busy
CRYPTO_E_KEY_NOT_AVAILABLE: Request failed, the
requested key element is not available
CRYPTO_E_KEY_READ_FAIL: Request failed, not allowed to
Return value: extract key element
CRYPTO_E_KEY_WRITE_FAIL: Request failed, not allowed to
write key element
CRYPTO_E_KEY_SIZE_MISMATCH: Request failed, key
element sizes are not compatible
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: This function shall copy all key elements from the source key to a target key.
54 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
8.3.8.3.3 Csm_KeyElementCopyPartial
[SWS_Csm_91025] ⌈
Service name: Csm_KeyElementCopyPartial
Syntax: Std_ReturnType Csm_KeyElementCopyPartial(
uint32 keyId,
uint32 keyElementId,
uint32 keyElementSourceOffset,
uint32 keyElementTargetOffset,
uint32 keyElementCopyLength,
uint32 targetKeyId,
uint32 targetKeyElementId
)
Service ID[hex]: 0x79
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for the same keyId
keyId Holds the identifier of the key whose key element shall
be the source element for copy operation.
keyElementId Holds the identifier of the key element which shall be
the source for the copy operation.
keyElementSourceOffset This is the offset of the source key element indicating
the start index of the copy operation.
Parameters (in): keyElementTargetOffset This is the offset of the destination key element
indicating the start index of the copy operation.
keyElementCopyLength Specifies the number of bytes that shall be copied.
targetKeyId Holds the identifier of the key whose key element shall
be the destination element.
targetKeyElementId Holds the identifier of the key element which shall be
the destination for the copy operation.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver
Object is busy
CRYPTO_E_KEY_NOT_AVAILABLE: Request failed,
the requested key element is not available
CRYPTO_E_KEY_READ_FAIL: Request failed, not
Return value:
allowed to extract key element
CRYPTO_E_KEY_WRITE_FAIL: Request failed, not
allowed to write key element
CRYPTO_E_KEY_SIZE_MISMATCH: Request failed,
key element sizes are not compatible
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Copies a key element to another key element in the same crypto driver. The
keyElementSourceOffset and keyElementCopyLength allows to copy just a part of
55 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
the source key element into the destination. The offset into the target key is also
specified with this function.
Available via: Csm.h
⌋ ()
Note: A Concatenation of partial keys into one key element is possible by calling
Csm_KeyElementCopyPartial() multiple times and adjusting keyElementTargetOffset
properly.
[SWS_Csm_91020] ⌈If the current length of the target key element is greater or
equal than (keyElementTargetOffset + keyElementCopyLength), the key element
length remains unchanged and the target data is overwritten with the contents of the
source data.
⌋()
[SWS_Csm_91021] ⌈ If the current length of the target key element is lower than
(keyElementTargetOffset + keyElementCopyLength) and the maximum
length of the key element is greater or equal than (keyElementTargetOffset +
keyElementCopyLength), then the source data shall be copied into the target key
element and the length shall be set to (keyElementTargetOffset +
keyElementCopyLength).
⌋()
[SWS_Csm_91022] ⌈
If the maximum length of the target key element is lower than
(keyElementTargetOffset + keyElementCopyLength) then the copy operation
shall not be performed and the function shall return with the error code
CRYPTO_E_KEY_SIZE_MISMATCH.
⌋()
8.3.8.4.1 Csm_RandomSeed
[SWS_Csm_01051] ⌈
Service name: Csm_RandomSeed
Syntax: Std_ReturnType Csm_RandomSeed(
uint32 keyId,
const uint8* seedPtr,
uint32 seedLength
)
Service ID[hex]: 0x69
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for same keyId
keyId Holds the identifier of the key for which a new seed shall be
Parameters (in): generated.
seedPtr Holds a pointer to the memory location which contains the data to
56 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
⌋ ()
8.3.8.4.2 Csm_KeyGenerate
[SWS_Csm_00955] ⌈
Service name: Csm_KeyGenerate
Syntax: Std_ReturnType Csm_KeyGenerate(
uint32 keyId
)
Service ID[hex]: 0x6a
Sync/Async: Synchronous
Reentrancy: Reentrant but not for same keyId
keyId Holds the identifier of the key for which a new material shall be
Parameters (in):
generated.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is busy
Return value: CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Generates new key material and store it in the key identified by keyId.
Available via: Csm.h
⌋ (SRS_CryptoStack_00026, SRS_CryptoStack_00027)
In cryptography, a key derivation function (or KDF) is a function, which derives one or
more secret keys from a secret value and/or other known information such as a
passphrase or cryptographic key.
Specification of input keys that are protected by hardware means can be achieved by
using the Csm_KeyDeriveKey interface.
8.3.8.5.1 Csm_KeyDerive
[SWS_Csm_00956] ⌈
Service name: Csm_KeyDerive
Syntax: Std_ReturnType Csm_KeyDerive(
uint32 keyId,
uint32 targetKeyId
)
Service ID[hex]: 0x6b
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for same keyId
keyId Holds the identifier of the key which is used for key derivation.
Parameters (in): targetKeyId Holds the identifier of the key which is used to store the
derived key.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is
busy
CRYPTO_E_KEY_READ_FAIL: Request failed, not allowed to
extract key element
CRYPTO_E_KEY_WRITE_FAIL: Request failed, not allowed
Return value:
to write key element
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's
state is "invalid"
CRYPTO_E_KEY_SIZE_MISMATCH: Request failed, key
element sizes are not compatible
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Derives a new key by using the key elements in the given key identified by the
keyId. The given key contains the key elements for the password and salt. The
derived key is stored in the key element with the id 1 of the key identified by
targetCryptoKeyId.
Available via: Csm.h
⌋ (SRS_CryptoStack_00103) Csm_KeyGenerate
Two users that each have a private secret can use a key exchange protocol to obtain
a common secret, e.g. a key for a symmetric-key algorithm, without telling each other
their private secret and without any listener being able to obtain the common secret
or their private secrets
8.3.8.6.1 Csm_KeyExchangeCalcPubVal
[SWS_Csm_00966] ⌈
Service name: Csm_KeyExchangeCalcPubVal
Syntax: Std_ReturnType Csm_KeyExchangeCalcPubVal(
uint32 keyId,
uint8* publicValuePtr,
uint32* publicValueLengthPtr
)
Service ID[hex]: 0x6c
Sync/Async: Synchronous
Reentrancy: Reentrant, but not for same keyId
keyId Holds the identifier of the key which shall be used for the key
Parameters (in):
exchange protocol.
publicValueLengthPtr Holds a pointer to the memory location in which the public
value length information is stored. On calling this function,
Parameters
this parameter shall contain the size of the buffer provided
(inout):
by publicValuePtr. When the request has finished, the actual
length of the returned value shall be stored.
publicValuePtr Contains the pointer to the data where the public value shall
Parameters (out):
be stored.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is
busy
CRYPTO_E_SMALL_BUFFER: The provided buffer is too
Return value:
small to store the result
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's
state is "invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Calculates the public value of the current user for the key exchange and stores the
public key in the memory location pointed by the public value pointer.
Available via: Csm.h
⌋ (SRS_CrytptoStack_00028)
8.3.8.6.2 Csm_KeyExchangeCalcSecret
[SWS_Csm_00967] ⌈
Service name: Csm_KeyExchangeCalcSecret
Syntax: Std_ReturnType Csm_KeyExchangeCalcSecret(
uint32 keyId,
const uint8* partnerPublicValuePtr,
uint32 partnerPublicValueLength
)
59 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Description: This function shall dispatch the certificate parse function to the CRYIF.
Available via: Csm.h
⌋ (SRS_CrytptoStack_00031)
8.3.8.7.2 Csm_CertificateVerify
[SWS_Csm_01038] ⌈
Service name: Csm_CertificateVerify
Syntax: Std_ReturnType Csm_CertificateVerify(
const uint32 keyId,
const uint32 verifyCryptoKeyId,
Crypto_VerifyResultType* verifyPtr
)
Service ID[hex]: 0x74
Sync/Async: Synchronous
Reentrancy: Reentrant but not for the same cryptoKeyId
keyId Holds the identifier of the key which shall be used to validate
the certificate.
Parameters (in):
verifyCryptoKeyId Holds the identifier of the key containing the certificate to be
verified.
Parameters None
(inout):
verifyPtr Holds a pointer to the memory location which will contain the
Parameters (out):
result of the certificate verification.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypto Driver Object is
busy
Return value:
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's
state is "invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Verifies the certificate stored in the key referenced by verifyKeyId with the
certificate stored in the key referenced by keyId.
Note:
Only certificates stored in the same Crypto Driver can be verified against each
other. If the key element CRYPTO_KE_CERTIFICATE_CURRENT_TIME is used
for the verification of the validity period of the certificate indentified by verifyKeyId,
it shall have the same format as the timestamp in the certificate.
Available via: Csm.h
⌋ ()
The keyId configured in the Job is only used to determine which driver objects needs
to be used for the specific JobKeyPrimitive operation.
8.3.9.1 Csm_JobKeySetValid
[SWS_Csm_91027] ⌈
Service name: Csm_JobKeySetValid
Syntax: Std_ReturnType Csm_JobKeySetValid(
uint32 jobId,
uint32 keyId
)
Service ID[hex]: 0x7a
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
Parameters (in): keyId Holds the identifier of the key for which a new material shall be
validated.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
Return value: E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, Crypro Driver Object is busy
Description: Stores the key if necessary and sets the key state of the key identified by keyId to
valid.
Available via: Csm.h
⌋ ()
8.3.9.2 Csm_JobRandomSeed
[SWS_Csm_91028] ⌈
Service name: Csm_JobRandomSeed
Syntax: Std_ReturnType Csm_JobRandomSeed(
uint32 jobId,
uint32 keyId,
const uint8* seedPtr,
uint32 seedLength
)
Service ID[hex]: 0x7b
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
keyId Holds the identifier of the key for which a new seed shall be
generated.
Parameters (in):
seedPtr Holds a pointer to the memory location which contains the data to
feed the seed.
seedLength Contains the length of the seed in bytes.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
Return value:
CRYPTO_E_QUEUE_FULL: Request failed, the queue is full
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
Description: This function shall dispatch the random seed function to the configured crypto
driver object.
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.9.3 Csm_JobKeyGenerate
[SWS_Csm_91029] ⌈
Service name: Csm_JobKeyGenerate
Syntax: Std_ReturnType Csm_JobKeyGenerate(
uint32 jobId,
uint32 keyId
)
Service ID[hex]: 0x7c
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
Parameters (in): keyId Holds the identifier of the key for which a new material shall be
generated.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_QUEUE_FULL: Request failed, the queue is full
Return value:
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Generates new key material and stores it in the key identified by keyId.
Available via: Csm.h
⌋ ()
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.9.4 Csm_JobKeyDerive
[SWS_Csm_91030] ⌈
Service name: Csm_JobKeyDerive
Syntax: Std_ReturnType Csm_JobKeyDerive(
uint32 jobId,
uint32 keyId,
uint32 targetKeyId
)
Service ID[hex]: 0x7d
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
keyId Holds the identifier of the key which is used for key derivation.
Parameters (in):
targetKeyId Holds the identifier of the key which is used to store the derived
key.
Parameters None
(inout):
63 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.9.5 Csm_JobKeyExchangeCalcPubVal
[SWS_Csm_91031] ⌈
Service name: Csm_JobKeyExchangeCalcPubVal
Syntax: Std_ReturnType Csm_JobKeyExchangeCalcPubVal(
uint32 jobId,
uint32 keyId,
uint8* publicValuePtr,
uint32* publicValueLengthPtr
)
Service ID[hex]: 0x7e
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
keyId Holds the identifier of the key which shall be used for the key
Parameters (in): exchange protocol.
publicValuePtr Contains the pointer to the data where the public value shall
be stored.
Parameters None
(inout):
publicValueLengthPtr Holds a pointer to the memory location in which the public
value length information is stored. On calling this function,
Parameters (out): this parameter shall contain the size of the buffer provided
by publicValuePtr. When the request has finished, the actual
length of the returned value shall be stored.
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
CRYPTO_E_BUSY: Request failed, service is still busy
CRYPTO_E_SMALL_BUFFER: The provided buffer is too
Return value:
small to store the result
CRYPTO_E_QUEUE_FULL: Request failed, the queue is
full
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's
64 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
state is "invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Calculates the public value of the current user for the key exchange and stores the
public key in the memory location pointed by the public value pointer.
Available via: Csm.h
⌋ ()
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.9.6 Csm_JobKeyExchangeCalcSecret
[SWS_Csm_91032] ⌈
Service name: Csm_JobKeyExchangeCalcSecret
Syntax: Std_ReturnType Csm_JobKeyExchangeCalcSecret(
uint32 jobId,
uint32 keyId,
const uint8* partnerPublicValuePtr,
uint32 partnerPublicValueLength
)
Service ID[hex]: 0x7f
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
keyId Holds the identifier of the key which shall be used for
the key exchange protocol.
Parameters (in): partnerPublicValuePtr Holds the pointer to the memory location which
contains the partner's public value.
partnerPublicValueLength Contains the length of the partner's public value in
bytes.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
E_BUSY: Request failed, Crypto Driver Object is busy
CRYPTO_E_SMALL_BUFFER: The provided buffer is
too small to store the result
Return value:
CRYPTO_E_QUEUE_FULL: Request failed, the
queue is full CRYPTO_E_KEY_NOT_VALID: Request
failed, the key's state is "invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: Calculates the shared secret key for the key exchange with the key material of the
key identified by the keyId and the partner public key. The shared secret key is
stored as a key element in the same key.
Available via: Csm.h
⌋ ()
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.9.7 Csm_JobCertificateParse
[SWS_Csm_91033] ⌈
Service name: Csm_JobCertificateParse
Syntax: Std_ReturnType Csm_JobCertificateParse(
uint32 jobId,
uint32 keyId
)
Service ID[hex]: 0x80
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
Parameters (in): keyId Holds the identifier of the key to be used for the certificate
parsing.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful
E_NOT_OK: Request failed
E_BUSY: Request failed, Crypto Driver Object is busy
CRYPTO_E_QUEUE_FULL: Request failed, the queue is full
Return value:
CRYPTO_E_KEY_NOT_VALID: Request failed, the key's state is
"invalid"
CRYPTO_E_KEY_EMPTY: Request failed because of
uninitialized source key element
Description: This function shall dispatch the certificate parse function to the CRYIF.
Available via: Csm.h
⌋ ()
Note: The provided key Id(s) shall be transformed from CsmKeyId´s to CryIfKeyId’s.
8.3.9.8 Csm_JobCertificateVerify
[SWS_Csm_91034] ⌈
Service name: Csm_JobCertificateVerify
Syntax: Std_ReturnType Csm_JobCertificateVerify(
const uint32 jobId,
const uint32 keyId,
const uint32 verifyKeyId,
Crypto_VerifyResultType* verifyPtr
)
Service ID[hex]: 0x81
Sync/Async: Sync or Async, depending on the job configuration
Reentrancy: Reentrant
jobId Holds the identifier of the job using the CSM service.
keyId Holds the identifier of the key which shall be used to validate
Parameters (in): the certificate.
verifyKeyId Holds the identifier of the key containing the certificate to be
verified.
Parameters None
(inout):
verifyPtr Holds a pointer to the memory location which will contain the
Parameters (out):
result of the certificate verification.
Std_ReturnType E_OK: Request successful
Return value:
E_NOT_OK: Request failed
66 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Note: The provided key Id(s) shall be transformed from CsmKeyId’s to CryIfKeyId’s.
8.3.10.1 Csm_CancelJob
[SWS_Csm_00968] ⌈
Service name: Csm_CancelJob
Syntax: Std_ReturnType Csm_CancelJob(
uint32 job,
Crypto_OperationModeType mode
)
Service ID[hex]: 0x6f
Sync/Async: Synchronous
Reentrancy: Non Reentrant
job Holds the identifier of the job to be canceled
Parameters (in):
mode Not used, just for interface compatibility provided.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Request successful. Job removed from any queue and
potentially from crypto driver hardware.
E_NOT_OK: Request failed
Return value:
CRYPTO_E_JOB_CANCELED: Immediate cancelation not
possible. The cancelation will be done at next suitable processing
step and notified via a negative finish callback.
Description: Cancels the job processing from asynchronous or streaming jobs.
Available via: Csm.h
⌋ ()
Note: In case the crypto driver does not support an instant cancelation of the job, the
application need to wait for the job finish callback to free the buffers. The crypto
driver could potentially still write to the output buffer(s).
8.3.11.1 Csm_CallbackNotification
[SWS_Csm_00970] ⌈
Service name: Csm_CallbackNotification
Syntax: void Csm_CallbackNotification(
Crypto_JobType* job,
Csm_ResultType result
)
Service ID[hex]: 0x70
Sync/Async: Synchronous
Reentrancy: Reentrant
job Holds a pointer to the job, which has finished.
Parameters (in):
result Contains the result of the cryptographic operation.
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: Notifies the CSM that a job has finished. This function is used by the underlying
layer (CRYIF).
Variation:
{ecuc(Csm/CsmJob/CsmJobUsePort == false)} &&
{ecuc(Csm/CsmJobs/CsmJob.CsmJobPrimitiveRef-
>CsmPrimitives/{Primitive}Config/{Primitive}Processing ==
CRYPTO_PROCESSING_ASYNC)}
Available via: Csm.h
⌋ (SRS_BSW_00359, SRS_BSW_00360)
8.3.12.1 Csm_MainFunction
[SWS_Csm_00479] ⌈
Service name: Csm_MainFunction
Syntax: void Csm_MainFunction(
void
)
Service ID[hex]: 0x01
Description: API to be called cyclically to process the requested jobs. The Csm_MainFunction
shall check the queues for jobs to pass to the underlying CRYIF.
Available via: SchM_Csm.h
⌋ (SRS_BSW_00373, SRS_BSW_00432)
[SWS_Csm_00484] ⌈In this section, all interfaces required from other modules are
listed.
⌋()
[SWS_Csm_00485] ⌈The CSM module shall use an AUTOSAR Det module for
development error notification.
⌋()
8.4.4.1 Csm_ApplicationCallbackNotification
[SWS_Csm_00971] ⌈
Service name: Csm_ApplicationCallbackNotification
Syntax: void Csm_ApplicationCallbackNotification(
const uint32 jobID,
Csm_ResultType result
)
Service ID[hex]: 0x80
Sync/Async: Synchronous
Reentrancy: Reentrant
jobID JobID of the operation that caused the callback
Parameters (in):
result Contains the result of the cryptographic operation.
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: CSM notifies the application that a job has finished. The function name is
configurable.
Available via: Csm.h
⌋ (SRS_BSW_00359, SRS_BSW_00360)
described here will be visible on the VFB and are used to generate the RTE between
application software and the Csm module.
8.5.1 Client-Server-Interfaces
8.5.1.1 CsmKeyManagement_{Key}
[SWS_Csm_01905] ⌈
Name CsmKeyManagement_{Key}
IsService true
({ecuc(Csm/CsmKeys/CsmKey.CsmKeyUsePort)} == TRUE)
Variation
Key = {ecuc(Csm/CsmKeys/CsmKey.SHORT-NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
7 CSM_E_KEY_WRITE_FAIL
8 CSM_E_KEY_NOT_AVAILABLE
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
CertificateParse
Comments This function shall dispatch the certificate parse function to the CRYIF.
Variation --
CertificateVerify
Verifies the certificate stored in the key referenced by verifyKeyId with the certificate
stored in the key referenced by keyId.
Note:
Comments Only certificates stored in the same Crypto Driver can be verified against each other. If
the key element CRYPTO_KE_CERTIFICATE_CURRENT_TIME is used for the
verification of the validity period of the certificate indentified by verifyKeyId, it shall have
the same format as the timestamp in the certificate
Variation --
Type uint32
verifyKeyId
Variation --
Direction IN
Parameters
Contains the result of the certificate
Comment
verification
Type Crypto_VerifyResultType
verifyPtr
Variation --
Direction OUT
KeyCopy
Comments This function shall copy all key elements from the source key to a target key.
Variation --
Variation --
Direction IN
KeyDerive
Derives a new key by using the key elements in the given key. The given key contains
Comments the key elements for the password and salt. The derived key is stored in the key
element with the id 1 of the key identified by targetCryptoKeyId.
Variation --
Type uint32
Parameters targetKeyId
Variation --
Direction IN
KeyElementCopy
Comments This function shall copy a key elements from one key to a target key
Variation --
Variation --
Direction IN
Variation --
Direction IN
Variation --
Direction IN
KeyElementCopyPartial
This function shall copy parts of a a key elements from one key to parts of a target key
Comments
element of a target key.
Variation --
Variation --
Direction IN
Variation --
Direction IN
Variation --
Direction IN
Parameters
Specifies the number of bytes that shall
Comment
be copied.
Type uint32
keyElementCopyLength
Variation --
Direction IN
Variation --
Direction IN
Variation --
Direction IN
KeyElementGet
Retrieves the key element bytes from a specific key element of the key and stores the
Comments
key element in the provided buffer.
Variation --
Type uint32
keyElementId
Variation --
Direction IN
Type Csm_KeyDataType_{Crypto}
Parameters keyPtr
Variation --
Direction OUT
Type uint32
keyLength
Variation --
Direction INOUT
KeyElementSet
Variation --
Type uint32
keyElementId
Variation --
Direction IN
Type Csm_KeyDataType_{Crypto}
Parameters keyPtr
Variation --
Direction IN
Type uint32
keyLength
Variation --
Direction IN
KeyExchangeCalcPubVal
Calculates the public value of the current user for the key exchange and stores the
Comments
public key in the provided buffer
Variation --
Type Csm_DataPtr
Parameters Variation --
Direction OUT
Type uint32
publicValueLengthPtr
Variation --
Direction INOUT
KeyExchangeCalcSecret
Calculates the shared secret key for the key exchange with the key material of the key
Comments identified by the keyId and the partner public key. The shared secret key is stored as a
key element in the same key.
Variation --
Type Csm_DataPtr
Variation --
Direction IN
Type uint32
partnerPublicValueLength
Variation --
Direction IN
KeyGenerate
Comments Generates new key material and store it in the key identified by keyId.
Variation --
KeySetValid
Variation --
RandomSeed
Variation --
Type Csm_DataPtr
seedPtr
Variation --
Direction IN
Parameters
Contains the length of the seed in
Comment
bytes.
Type uint32
seedLength
Variation --
Direction IN
8.5.1.2 CsmHash_{PrimitiveCfg}
[SWS_Csm_00946] ⌈
Name CsmHash_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
Possible
Errors
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Operations
Hash
Variation --
Type Csm_HashDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Parameters
Comment Contains the data of the hash.
Type Csm_HashResultType_{Crypto}
resultBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
8.5.1.3 CsmMacGenerate_{PrimitiveCfg}
[SWS_Csm_09000] ⌈
Name CsmMacGenerate_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation
PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
MacGenerate
Uses the given data to perform a MAC generation and stores the MAC in the memory
Comments
location pointed to by the MAC pointer.
Variation --
Type Csm_MacGenerateDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Commen
Contains the data of the MAC.
t
Csm_MacGenerateResultType_{Crypto
Type
}
resultBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction OUT
Type uint32
Variation --
Direction INOUT
8.5.1.4 CsmMacVerify_{PrimitiveCfg}
[SWS_Csm_00936] ⌈
Name CsmMacVerify_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
MacVerify
Comments Uses the given data to perform a MAC generation and stores the MAC in the memory
83 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Variation --
Type Csm_MacVerifyDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Type Csm_MacVerifyCompareType_{Crypto}
Parameters
compareBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
compareLength
Variation --
Direction IN
Type Crypto_VerifyResultType
resultBuffer
Variation --
Direction OUT
8.5.1.5 CsmEncrypt_{PrimitiveCfg}
[SWS_Csm_00947] ⌈
Name CsmEncrypt_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
Encrypt
Encrypts the given data and store the ciphertext in the memory location pointed by the
Comments
result pointer.
Variation --
Type Csm_EncryptDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Parameters
Direction IN
Variation --
Direction IN
Type Csm_EncryptResultType_{Crypto}
result
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
8.5.1.6 CsmDecrypt_{PrimitiveCfg}
[SWS_Csm_01906] ⌈
Name CsmDecrypt_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
Possible
Errors
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
Decrypt
Variation --
Type Csm_DecryptDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Parameters
Contains the data of the decrypted
Comment
plaintext.
Type Csm_DecryptResultType_{Crypto}
resultBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
8.5.1.7 CsmAEADEncrypt_{PrimitiveCfg}
[SWS_Csm_01910] ⌈
Name CsmAEADEncrypt_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
AEADEncrypt
Comment
Streaming approach of the AEAD encryption.
s
Variation --
n NAME}
Directio
IN
n
Type uint32
plaintextLength
Variatio
--
n
Directio
IN
n
Csm_AEADEncryptAssociatedDataType_{Cr
Type
ypto}
associatedDataBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
IN
n
Type uint32
associatedDataLength
Variatio
--
n
Directio
IN
n
Comme
Contains the data of the AEAD cipher.
nt
Type Csm_AEADEncryptCiphertextType_{Crypto}
ciphertextBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
OUT
n
Type uint32
ciphertextLengthPtr
Variatio
--
n
Directio
INOUT
n
Comme
Contains the data of the Tag.
nt
Type Csm_AEADEncryptTagType_{Crypto}
tagBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
OUT
n
Type uint32
tagLength
Variatio
--
n
Directio
INOUT
n
8.5.1.8 CsmAEADDecrypt_{PrimitiveCfg}
[SWS_Csm_01915] ⌈
Name CsmAEADDecrypt_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
Possible
Errors
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
AEADDecrypt
Comment
Streaming approach of the AEAD decryption.
s
Variation --
Type Csm_AEADDecryptCiphertextType_{Crypto}
ciphertextBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
IN
n
Type uint32
ciphertextLength
Variatio
--
n
Parameter Directio
IN
s n
Csm_AEADDecryptAssociatedDataType_{Cr
Type
ypto}
associatedDataBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
IN
n
Variatio --
Directio
IN
n
Comme
Contains the data of the Tag.
nt
Type Csm_AEADDecryptTagType_{Crypto}
tagBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
IN
n
Type uint32
tagLength
Variatio
--
n
Directio
IN
n
Type Csm_AEADDecryptPlaintextType_{Crypto}
plaintextBuffer
Variatio Crypto = {ecuc/Csm/CsmPrimitives.SHORT-
n NAME}
Directio
OUT
n
Type uint32
plaintextLength
Variatio
--
n
Directio
INOUT
n
Comme
Contains the verification result.
nt
Type Crypto_VerifyResultType
resultBuffer
Variatio
--
n
Directio
OUT
n
8.5.1.9 CsmSignatureGenerate_{PrimitiveCfg}
[SWS_Csm_00903] ⌈
Name CsmSignatureGenerate_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
SignatureGenerate
Variation --
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Variation --
Direction IN
Commen
Contains the signature.
t
Csm_SignatureGenerateResultType_{Cryp
Type
to}
resultBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
8.5.1.10 CsmSignatureVerify_{PrimitiveCfg}
[SWS_Csm_00943] ⌈
Name CsmSignatureVerify_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible
3 CSM_E_SMALL_BUFFER
Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
13 CSM_E_KEY_EMPTY
Operations
SignatureVerify
Variation --
Type Csm_SignatureVerifyDataType_{Crypto}
dataBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
Parameter dataLength
s
Variation --
Direction IN
Commen
Contains the signature to be verified.
t
Csm_SignatureVerifyCompareType_{Cryp
Type
to}
compareBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Direction IN
Type uint32
compareLength
Variation --
Direction IN
Commen
Contains the verification result.
t
Type Crypto_VerifyResultType
resultBuffer
Variation --
Direction OUT
8.5.1.11 CsmRandomGenerate_{PrimitiveCfg}
[SWS_Csm_00902] ⌈
Name CsmRandomGenerate_{PrimitiveCfg}
IsService true
Primitive = {ecuc(Csm/CsmPrimitives.SHORT-NAME)}
Variation PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
0 E_OK
1 E_NOT_OK
Possible
Errors
2 CSM_E_BUSY
4 CSM_E_ENTROPY_EXHAUSTION
Operations
RandomGenerate
Comment
Synchronous processing interface to execute the random number generation.
s
Variation --
Comme
Contains the random number
nt
Csm_RandomGenerateResultType_{Cry
Type
pto}
resultBuffer
Crypto = {ecuc/Csm/CsmPrimitives.
Variation
SHORT-NAME}
Parameter
Direction OUT
s
Comme Contains the length in bytes of the data
nt of random number.
Type uint32
resultLength
Variation --
Direction INOUT
8.5.2.1 CsmHash
[SWS_Csm_91051] ⌈
Name CsmHash
IsService true
0 E_OK
Possible Errors
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
12 CSM_E_JOB_CANCELED
Operations
CancelJob
Variation --
Hash
Variation --
Type Csm_DataPtr
dataBuffer
Variation --
Direction IN
Type uint32
dataLength
Variation --
Parameters
Direction IN
Type Csm_DataPtr
resultBuffer
Variation --
Direction IN
Variation --
Direction INOUT
E_NOT_OK --
Possible
Errors
CSM_E_BUSY Request failed, service is still busy.
8.5.2.2 CsmMacGenerate
[SWS_Csm_91052] ⌈
Name CsmMacGenerate
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
MacGenerate
Uses the given data to perform a MAC generation and stores the MAC in the memory
Comments
location pointed to by the MAC pointer.
Variation --
Type Csm_DataPtr
dataBuffer
Variation --
Direction IN
Variation --
Parameters Direction IN
Type Csm_DataPtr
resultBuffer
Variation --
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
E_NOT_OK --
Possible CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
Errors
CSM_E_KEY_NOT_VALID Request failed, the key is not valid.
⌋ (SRS_CryptoStack_00090)
8.5.2.3 CsmMacVerify
[SWS_Csm_91053] ⌈
Name CsmMacVerify
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
MacVerify
Uses the given data to perform a MAC generation and stores the MAC in the memory
Comments
location pointed to by the MAC pointer.
Variation --
Type Csm_DataPtr
Variation --
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Type Csm_DataPtr
compareBuffer
Variation --
Direction IN
Type uint32
compareLength
Variation --
Direction IN
Type Crypto_VerifyResultType
resultBuffer
Variation --
Direction OUT
E_NOT_OK --
Possible CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
Errors
CSM_E_KEY_NOT_VALID Request failed, the key is not valid.
8.5.2.4 CsmEncrypt
[SWS_Csm_91054] ⌈
Name CsmEncrypt
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
Encrypt
Encrypts the given data and stores the ciphertext in the memory location pointed by
Comments
the result pointer.
Variation --
Variation --
103 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Type Csm_DataPtr
result
Variation --
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
E_NOT_OK --
Possible CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
Errors
CSM_E_KEY_NOT_VALID Request failed, the key is not valid.
8.5.2.5 CsmDecrypt
[SWS_Csm_91055] ⌈
Name CsmDecrypt
IsService true
0 E_OK
Possible Errors
1 E_NOT_OK
104 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
Decrypt
Decrypts the given data and stores the plaintext in the memory location pointed by the
Comments
resultBuffer pointer.
Variation --
Type Csm_DataPtr
dataBuffer
Variation --
Direction IN
Type uint32
dataLength
Variation --
Direction IN
Type Csm_DataPtr
Variation --
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
E_NOT_OK --
Possible CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
Errors
CSM_E_KEY_NOT_VALID Request failed, the key is not valid.
8.5.2.6 CsmAEADEncrypt
[SWS_Csm_91056] ⌈
Name CsmAEADEncrypt
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
AEADEncrypt
Variation --
Type Csm_DataPtr
plaintextBuffer
Variation --
Direction IN
Variation --
Direction IN
Variation --
Parameters
Direction IN
Type uint32
associatedDataLength
Variation --
Direction IN
Type Csm_DataPtr
ciphertextBuffer
Variation --
Direction OUT
Variation --
107 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
Direction INOUT
Type Csm_DataPtr
tagBuffer
Variation --
Direction OUT
Type uint32
tagLength
Variation --
Direction INOUT
E_NOT_OK --
Possible CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
Errors
CSM_E_KEY_NOT_VALID Request failed, the key is not valid.
CancelJob
Variation --
8.5.2.7 CsmAEADDecrypt
[SWS_Csm_91057] ⌈
Name CsmAEADDecrypt
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
AEADDecrypt
Variation --
Type Csm_DataPtr
ciphertextBuffer
Variation --
Direction IN
Type uint32
ciphertextLength
Parameters Variation --
Direction IN
Variation --
Direction IN
Type uint32
Variation --
Direction IN
Type Csm_DataPtr
tagBuffer
Variation --
Direction IN
Type uint32
tagLength
Variation --
Direction IN
Type Csm_DataPtr
plaintextBuffer
Variation --
Direction OUT
Type uint32
plaintextLength
Variation --
Direction INOUT
Type Crypto_VerifyResultType
resultBuffer
Variation --
Direction OUT
E_NOT_OK --
Possible
CSM_E_BUSY Request failed, service is still busy.
Errors
CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
CancelJob
Variation --
8.5.2.8 CsmSignatureGenerate
[SWS_Csm_91058] ⌈
Name CsmSignatureGenerate
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
SignatureGenerate
Variation --
Type Csm_DataPtr
dataBuffer
Variation --
Direction IN
Variation --
Parameters Direction IN
Type Csm_DataPtr
resultBuffer
Variation --
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
8.5.2.9 CsmSignatureVerify
[SWS_Csm_91059] ⌈
Name CsmSignatureVerify
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
3 CSM_E_SMALL_BUFFER
Possible Errors
9 CSM_E_KEY_NOT_VALID
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
SignatureVerify
Variation --
Type Csm_DataPtr
dataBuffer
Variation --
Direction IN
Variation --
Direction IN
Direction IN
Type uint32
compareLength
Variation --
Direction IN
Type Crypto_VerifyResultType
resultBuffer
Variation --
Direction OUT
E_NOT_OK --
Possible
CSM_E_BUSY Request failed, service is still busy.
Errors
CSM_E_SMALL_BUFFER The provided buffer is too small to store the result.
8.5.2.10 CsmRandomGenerate
[SWS_Csm_91060] ⌈
Name CsmRandomGenerate
IsService true
0 E_OK
1 E_NOT_OK
4 CSM_E_ENTROPY_EXHAUSTION
12 CSM_E_JOB_CANCELED
Operations
CancelJob
Variation --
RandomGenerate
Generates a random number and stores it in the memory location pointed by the
Comments
resultBuffer pointer.
Variation --
Type Csm_DataPtr
Variation --
Direction OUT
Type uint32
resultLength
Variation --
Direction INOUT
E_NOT_OK --
Possible
Errors CSM_E_BUSY Request failed, service is still busy.
8.5.3.1 CsmJobKeySetValid
[SWS_Csm_91035] ⌈
Name CsmJobKeySetValid
IsService true
0 E_OK
1 E_NOT_OK
Possible Errors
2 CSM_E_BUSY
12 CSM_E_JOB_CANCELED
Operations
CancelJob
Variation --
KeySetValid
Variation --
Type uint32
Parameters key
Variation --
Direction IN
8.5.3.2 CsmJobRandomSeed
[SWS_Csm_91036] ⌈
Name CsmJobRandomSeed
IsService true
0 E_OK
1 E_NOT_OK
Possible Errors
2 CSM_E_BUSY
12 CSM_E_JOB_CANCELED
Operations
CancelJob
Variation --
RandomSeed
Variation --
Type uint32
key
Variation --
Direction IN
Type Csm_DataPtr
Parameters seedPtr
Variation --
Direction IN
Type uint32
seedLength
Variation --
Direction IN
8.5.3.3 CsmJobKeyGenerate
[SWS_Csm_91037] ⌈
Name CsmJobKeyGenerate
IsService true
0 E_OK
1 E_NOT_OK
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
KeyGenerate
Comments Generates new key material and stores it in the key identified by keyId.
Variation --
Type uint32
Parameters key
Variation --
Direction IN
8.5.3.4 CsmJobKeyDerive
[SWS_Csm_91038] ⌈
Name CsmJobKeyDerive
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
6 CSM_E_KEY_READ_FAIL
Possible Errors
7 CSM_E_KEY_WRITE_FAIL
10 CSM_E_KEY_SIZE_MISMATCH
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
KeyDerive
Derives a new key by using the key elements in the given key. The given key contains
Comments the key elements for the password and salt. The derived key is stored in the key
element with the id 1 of the key identified by targetCryptoKeyId.
Variation --
Type uint32
key
Variation --
Parameters Direction IN
Type uint32
Variation --
Direction IN
8.5.3.5 CsmJobKeyExchangeCalcPubVal
[SWS_Csm_91039] ⌈
Name CsmJobKeyExchangeCalcPubVal
Comment Interface to execute calculation of the public value for key exchange.
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible Errors
3 CSM_E_SMALL_BUFFER
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
KeyExchangeCalcPubVal
Calculates the public value of the current user for the key exchange and stores the
Comments
public key in the provided buffer.
Variation --
Type uint32
key
Variation --
Direction IN
Variation --
Direction OUT
Type uint32
publicValueLengthPtr
Variation --
Direction OUT
8.5.3.6 CsmJobKeyExchangeCalcSecret
[SWS_Csm_91040] ⌈
Name CsmJobKeyExchangeCalcSecret
IsService true
0 E_OK
1 E_NOT_OK
2 CSM_E_BUSY
Possible Errors
3 CSM_E_SMALL_BUFFER
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
KeyExchangeCalcSecret
Calculates the shared secret key for the key exchange with the key material of the key
Comments identified by the keyId and the partner public key. The shared secret key is stored as a
key element in the same key.
Variation --
Type uint32
key
Variation --
Parameters
Direction IN
Type Csm_DataPtr
Variation --
Direction IN
Type uint32
partnerPublicValueLength
Variation --
Direction OUT
8.5.3.7 CsmJobCertificateParse
[SWS_Csm_91041] ⌈
Name CsmJobCertificateParse
IsService true
0 E_OK
1 E_NOT_OK
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
CertificateParse
Comments This function shall dispatch the certificate parse function to the CRYIF.
Variation --
Type uint32
Parameters key
Variation --
Direction IN
8.5.3.8 CsmJobCertificateVerify
[SWS_Csm_91042] ⌈
Name CsmJobCertificateVerify
IsService true
0 E_OK
1 E_NOT_OK
12 CSM_E_JOB_CANCELED
13 CSM_E_KEY_EMPTY
Operations
CancelJob
Variation --
CertificateVerify
Verifies the certificate stored in the key referenced by verifyKeyId with the certificate
stored in the key referenced by keyId.
Note:
Comments Only certificates stored in the same Crypto Driver can be verified against each other. If
the key element CRYPTO_KE_CERTIFICATE_CURRENT_TIME is used for the
verification of the validity period of the certificate identified by verifyKeyId, it shall have
the same format as the timestamp in the certificate.
Variation --
Type uint32
key
Variation --
Direction IN
Type uint32
verifyKeyId
Parameters
Variation --
Direction IN
Type Crypto_VerifyResultType
verifyPtr
Variation --
Direction OUT
⌋ ()
8.5.3.9 CallbackNotification
[SWS_Csm_00928] ⌈
Name CallbackNotification
IsService true
Variation --
Possible Errors -- --
Operations
CallbackNotification
Comments Notifies the application with a return value that the job has finished.
Variation --
Type Csm_ResultType
Parameters result
Variation --
Direction IN
⌋ (SRS_CryptoStack_00090)
8.5.4.1 Crypto_OperationModeType
[SWS_Csm_01029] ⌈
Name Crypto_OperationModeType
Kind Enumeration
Variation --
Available
Rte_Csm_Type.h
via
⌋ ()
8.5.4.2 Crypto_VerifyResultType
[SWS_Csm_01024] ⌈
Name Crypto_VerifyResultType
Kind Enumeration
Variation --
Available
<none>
via
⌋ ()
8.5.4.3 Csm_KeyDataType_{Crypto}
[SWS_Csm_00828] ⌈
Name Csm_KeyDataType_{Crypto}
max({ecuc(Csm/CsmKeys/CsmKey/CsmKeyRef->CryIfKey/CryIfKeyRef->CryptoKey/
Size CryptoKeyTypeRef->CryptoKeyType/CryptoKeyElementRef->CryptoKeyElement/
CryptoKeyElementSize) Elements
Available
Rte_Csm_Type.h
via
⌋ ()
8.5.4.4 Csm_ResultType
[SWS_Csm_91001] ⌈
Name Csm_ResultType
Kind Type
Derived
Std_ReturnType
from
Csm module specific return values for use in Std_ReturnType that could occur on
Description
async.
Variation --
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00095)
8.5.4.5 Csm_HashDataType_{Crypto}
[SWS_Csm_01920] ⌈
Name Csm_HashDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmHash/CsmHashConfig/CsmHashDataMaxLength}
Size
Elements
Description Array long enough to store the data which shall be hashed.
Variation Crypto={ecuc/Csm/CsmPrimitives.SHORT-NAME}
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.6 Csm_HashResultType_{Crypto}
[SWS_Csm_00912] ⌈
Name Csm_HashResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmHash/CsmHashConfig/CsmHashResultLength}
Size
Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.7 Csm_MacGenerateDataType_{Crypto}
[SWS_Csm_00935] ⌈
Name Csm_MacGenerateDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmMacGenerate/CsmMacGenerateConfig/
Size
CsmMacGenerateDataMaxLength} Elements
Description Array long enough to store the data from which a MAC shall be generated.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.8 Csm_MacGenerateResultType_{Crypto}
[SWS_Csm_00927] ⌈
Name Csm_MacGenerateResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmMacGenerate/CsmMacGenerateConfig/
Size
CsmMacGenerateResultLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.9 Csm_MacVerifyDataType_{Crypto}
[SWS_Csm_00802] ⌈
Name Csm_MacVerifyDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmMacVerify/CsmMacVerifyConfig/
Size
CsmMacVerifyDataMaxLength} Elements
Description Array long enough to store the data for whichs MAC shall be verified.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.10 Csm_MacVerifyCompareType_{Crypto}
[SWS_Csm_00803] ⌈
Name Csm_MacVerifyCompareType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmMacVerify/CsmMacVerifyConfig/
Size
CsmMacVerifyCompareLength}/8 Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.11 Csm_EncryptDataType_{Crypto}
[SWS_Csm_01921] ⌈
Name Csm_EncryptDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmEncrypt/CsmEncryptConfig/
Size
CsmEncryptDataMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.12 Csm_EncryptResultType_{Crypto}
[SWS_Csm_01922] ⌈
Name Csm_EncryptResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmEncrypt/CsmEncryptConfig/
Size
CsmEncryptResultMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.13 Csm_DecryptDataType_{Crypto}
[SWS_Csm_01923] ⌈
Name Csm_DecryptDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmDecrypt/CsmDecryptConfig/
Size
CsmDecryptDataMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.14 Csm_DecryptResultType_{Crypto}
[SWS_Csm_01924] ⌈
Name Csm_DecryptResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmDecrypt/CsmDecryptConfig/
Size
CsmDecryptResultMaxLength} Elements
Description Array long enough to store the data of the decrypted plaintext.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.15 Csm_AEADEncryptPlaintextType_{Crypto}
[SWS_Csm_01925] ⌈
Name Csm_AEADEncryptPlaintextType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmAEADEncrypt/CsmAEADEncryptConfig/
Size
CsmAEADEncryptPlaintextMaxLength} Elements
Description Array long enough to store the plaintext to be encrypted with AEAD.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.16 Csm_AEADEncryptAssociatedDataType_{Crypto}
[SWS_Csm_01928] ⌈
Name Csm_AEADEncryptAssociatedDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmAEADEncrypt/CsmAEADEncryptConfig/
Size
CsmAEADEncryptAssociatedDataMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.17 Csm_AEADEncryptCiphertextType_{Crypto}
[SWS_Csm_01927] ⌈
Name Csm_AEADEncryptCiphertextType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmAEADEncrypt/CsmAEADEncryptConfig/
Size
CsmAEADEncryptCiphertextMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.18 Csm_AEADEncryptTagType_{Crypto}
[SWS_Csm_01926] ⌈
Name Csm_AEADEncryptTagType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmAEADEncrypt/CsmAEADEncryptConfig/
Size
CsmAEADEncryptTagLength)} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.19 Csm_AEADDecryptCiphertextType_{Crypto}
[SWS_Csm_00922] ⌈
Name Csm_AEADDecryptCiphertextType_{Crypto}
{ecuc(Csm/CsmAEADDecrypt/CsmAEADDecryptConfig/
Size
CsmAEADDecryptCiphertextMaxLength} Elements
Description Array long enough to store the ciphertext to be decrypted with AEAD.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.20 Csm_AEADDecryptAssociatedDataType_{Crypto}
[SWS_Csm_00923] ⌈
Name Csm_AEADDecryptAssociatedDataType_{Crypto}
{ecuc(Csm/CsmAEADDecrypt/CsmAEADDecryptConfig/
Size
CsmAEADDecryptAssociatedDataMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.21 Csm_AEADDecryptTagType_{Crypto}
[SWS_Csm_01074] ⌈
Name Csm_AEADDecryptTagType_{Crypto}
(({ecuc(Csm/CsmPrimitives/CsmAEADDecrypt/CsmAEADDecryptConfig/
Size
CsmAEADDecryptTagLength)}+7)/8) Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.22 Csm_AEADDecryptPlaintextType_{Crypto}
[SWS_Csm_01075] ⌈
Name Csm_AEADDecryptPlaintextType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmAEADDecrypt/CsmAEADDecryptConfig/
Size
CsmAEADDecryptPlaintextMaxLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.23 Csm_SignatureGenerateDataType_{Crypto}
[SWS_Csm_01083] ⌈
Name Csm_SignatureGenerateDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmSignatureGenerate/CsmSignatureGenerateConfig/
Size
CsmSignatureGenerateDataMaxLength} Elements
Description Array long enough to store the data from which the signature shall be generated.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_01076)
8.5.4.24 Csm_SignatureGenerateResultType_{Crypto}
[SWS_Csm_01077] ⌈
Name Csm_SignatureGenerateResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmSignatureGenerate/CsmSignatureGenerateConfig/
Size
CsmSignatureGenerateResultLength} Elements
Description Array long enough to store the signature and its length.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.25 Csm_SignatureVerifyDataType_{Crypto}
[SWS_Csm_01078] ⌈
Name Csm_SignatureVerifyDataType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmSignatureVerify/CsmSignatureVerifyConfig/
Size
CsmSignatureVerifyDataMaxLength} Elements
Description Array long enough to store the data for whichs signature shall be verified.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.26 Csm_SignatureVerifyCompareType_{Crypto}
[SWS_Csm_01079] ⌈
Name Csm_SignatureVerifyCompareType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmSignatureVerify/CsmSignatureVerifyConfig/
Size
CsmSignatureVerifyCompareLength} Elements
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.4.27 Csm_RandomGenerateResultType_{Crypto}
[SWS_Csm_00930] ⌈
Name Csm_RandomGenerateResultType_{Crypto}
{ecuc(Csm/CsmPrimitives/CsmRandomGenerate/CsmRandomGenerateConfig/
Size
CsmRandomGenerateResultLength) Elements
Description Array long enough to store the data of the random number.
Available
Rte_Csm_Type.h
via
⌋ (SRS_CryptoStack_00090)
8.5.5 Ports
8.5.5.1 CsmKey_{Key}
[SWS_Csm_01042] ⌈
Name CsmKey_{Key}
Type uint32
Port Defined
Argument Value(s)
Value {ecuc(Csm/CsmKeys/CsmKey/CsmKeyId)}
{ecuc(Csm/CsmKeys/CsmKey.CsmKeyUsePort)} == TRUE
Variation
Key = {ecuc(Csm/CsmKeys/CsmKey.SHORT-NAME)}
⌋ (SRS_CryptoStack_00090, SRS_CryptoStack_00091)
[SWS_Csm_91023] ⌈
Name CsmJob_{Job}
Type uint32
Value {ecuc(Csm/CsmJobs/CsmJob.CsmJobId)}
Port Defined
Argument
Value(s)
Type Crypto_OperationModeType
Value CRYPTO_OPERATIONMODE_SINGLECALL
({ecuc(Csm/CsmJobs/CsmJob.CsmJobInterfaceUsePort)} ==
CRYPTO_USE_PORT) &&({ecuc(Csm/CsmJobs/CsmJob.CsmJobPrimitiveRef)}
!= NULL)
Job = {ecuc(Csm/CsmJobs/CsmJob.SHORT-NAME)}
Variation
Primitive = {ecuc(Csm/CsmJobs/CsmJob.CsmJobPrimitiveRef->CsmPrimitives/*.
SHORT-NAME)}
PrimitiveCfg = {ecuc(Csm/CsmPrimitives/{Primitive}/{Primitive}Config.SHORT-
NAME)}
⌋ (SRS_CryptoStack_00090, SRS_CryptoStack_00091)
[SWS_Csm_91062] ⌈
Name CsmJob_{Job}
Type uint32
Value CRYPTO_OPERATIONMODE_SINGLECALL
({ecuc(Csm/CsmJobs/CsmJob.CsmJobInterfaceUsePort)} ==
CRYPTO_USE_PORT_OPTIMIZED) &&({ecuc(Csm/CsmJobs/CsmJob.
CsmJobPrimitiveRef)} != NULL)
Variation
Job = {ecuc(Csm/CsmJobs/CsmJob.SHORT-NAME)}
Primitive = {ecuc(Csm/CsmJobs/CsmJob.CsmJobPrimitiveRef->CsmPrimitives/*.
SHORT-NAME)}
⌋ (SRS_CryptoStack_00090, SRS_CryptoStack_00091)
8.5.5.4 {Callback}_CallbackNotification
[SWS_Csm_00934] ⌈
Name {Job}_CallbackNotification
({ecuc(Csm/CsmJobs/CsmJob.CsmProcessingMode)} ==
Variation CRYPTO_PROCESSING_ASYNC)
Job = {ecuc(Csm/CsmJobs/CsmJob.SHORT-NAME)}
⌋ (SRS_CryptoStack_00090, SRS_CryptoStack_00091)
9 Sequence Diagrams
The following sequence diagrams concentrate on the interaction between the CSM
module and software components respectively the ECU state manager.
The following diagram (Sequence diagram for asynchronous call) shows a sample
sequence of function calls for a request performed asynchronously. The result of the
asynchronous function can be accessed after an asynchronous notification
(invocation of the configured callback function).
<Service>()
<Service>()
<Service>()
return()
return()
return()
Crypto_ProcessJob(Std_ReturnType,
uint32, Crypto_JobType**)
The following diagram (Sequence diagram for synchronous calls) shows a sample
sequence of function calls with the scheduler for a request performed synchronously.
<Service>()
<Service>()
<Service>()
10 Configuration
In general, this chapter defines configuration parameters and their clustering into
containers. In order to support the specification Chapter 10.1 describes
fundamentals. It also specifies a template (table) you shall use for the parameter
specification.
Chapter 10.2 specifies the structure (containers) and the parameters of the module
CSM.
Csm: EcucModuleDef
+container CsmGeneral:
lowerMultiplicity = 0 EcucParamConfContainerDef
upperMultiplicity = 1
CsmJobs:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmKeys:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmPrimitives:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
CsmQueues:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmCallbacks:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmInOutRedirections:
+container EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = false
+parameter CsmUseDeprecated:
EcucBooleanParamDef
defaultValue = false
CsmAsymPublicKeyMaxLength:
EcucIntegerParamDef
+parameter
min = 1
CsmMainFunctionPeriod: max = 4294967295
EcucFloatParamDef lowerMultiplicity = 0
+parameter upperMultiplicity = 1
min = 0
max = INF
lowerMultiplicity = 0
upperMultiplicity = 1 CsmAsymPrivateKeyMaxLength:
EcucIntegerParamDef
+parameter
min = 1
max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
CsmJobs: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
CsmJob: CsmJobId:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 1 min = 0
upperMultiplicity = * max = 4294967295
symbolicNameValue = true
CsmJobPriority:
+parameter EcucIntegerParamDef
min = 0
max = 4294967295
+literal CRYPTO_USE_FNC:
EcucEnumerationLiteralDef
CsmJobInterfaceUsePort: +literal
+parameter EcucEnumerationParamDef CRYPTO_USE_PORT:
EcucEnumerationLiteralDef
+literal
CRYPTO_USE_PORT_OPTIMIZED:
EcucEnumerationLiteralDef
lowerMultiplicity = 0
upperMultiplicity = *
CsmJobPrimitiveCallbackRef:
+reference EcucReferenceDef CsmCallback:
+destination
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
upperMultiplicity = *
CsmJobPrimitiveCallbackUpdateNotification:
+parameter EcucBooleanParamDef
defaultValue = false
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = *
lowerMultiplicity = 0
upperMultiplicity = *
CsmInOutRedirections:
CsmInOutRedirectionRef:
+reference +destination EcucParamConfContainerDef
EcucReferenceDef
lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = 1
upperMultiplicity = 1
+literal
CsmProcessingMode: CRYPTO_PROCESSING_ASYNC:
+parameter EcucEnumerationParamDef
EcucEnumerationLiteralDef
+literal
CRYPTO_PROCESSING_SYNC:
EcucEnumerationLiteralDef
CsmKeys:
CsmKey:
EcucParamConfContainerDef CsmKeyId:
EcucParamConfContainerDef
+parameter EcucIntegerParamDef
lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = 1 symbolicNameValue = true
upperMultiplicity = *
min = 0
+subContainer
max = 4294967295
CsmKeyRef: EcucReferenceDef
+reference
requiresSymbolicNameValue = true
+destination
CryIfKey:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
+parameter CsmKeyUsePort:
EcucBooleanParamDef
CsmPrimitives:
EcucParamConfContainerDef CsmHash:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = * lowerMultiplicity = 0
upperMultiplicity = 1 CsmMacGenerate:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmMacVerify:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0 CsmEncrypt:
upperMultiplicity = 1 +subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
CsmDecrypt: upperMultiplicity = 1
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 CsmAEADEncrypt:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
CsmAEADDecrypt: upperMultiplicity = 1
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 CsmSignatureGenerate:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmSignatureVerify:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmRandomGenerate:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
CsmJobKeySetValid:
upperMultiplicity = 1 +subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
CsmJobRandomSeed: upperMultiplicity = 1
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 CsmJobKeyDerive:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
CsmJobKeyGenerate: upperMultiplicity = 1
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 CsmJobKeyExchangeCalcPubVal:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmJobKeyExchangeCalcSecret:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmJobCertificateParse:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmJobCertificateVerify:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
CsmQueues: CsmQueue:
+reference CsmChannelRef: EcucReferenceDef
EcucParamConfContainerDef EcucParamConfContainerDef
requiresSymbolicNameValue = true
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
+destination
CryIfChannel:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
CsmQueueSize:
+parameter
EcucIntegerParamDef
min = 1
max = 4294967295
CsmCallbacks: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
CsmCallback: CsmCallbackFunc:
EcucParamConfContainerDef +parameter EcucFunctionNameDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
CsmCallbackId:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.1 Csm
Included Containers
Container Name Multiplicity Scope / Dependency
CsmCallbacks 0..1 Container for callback function configurations
CsmGeneral 1 Container for common configuration options.
CsmInOutRedirections 0..1 Configuration for CSM redirection configurations
CsmJobs 0..1 Container for configuration of CSM jobs.
148 of 202 Document ID 402: AUTOSAR_SWS_CryptoServiceManager
- AUTOSAR confidential -
Specification of Crypto Service Manager
AUTOSAR CP Release 4.4.0
10.2.2 CsmGeneral
Multiplicity 1
Type EcucBooleanParamDef
Default value false
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Name CsmVersionInfoApi
Parent Container CsmGeneral
Description Pre-processor switch to enable and disable availability of the API
Csm_GetVersionInfo().
True: API Csm_GetVersionInfo() is available.
False: API Csm_GetVersionInfo() is not available.
Multiplicity 1
Type EcucBooleanParamDef
Default value false
Post-Build Variant Value false
Multiplicity Configuration Pre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.3 CsmJobs
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of CSM job. The container name
CsmJob 1..* serves as a symbolic name for the identifier of a job
configuration.
10.2.4 CsmJob
Multiplicity 1
Type EcucIntegerParamDef (Symbolic Name generated for this parameter)
Range 0 .. 4294967295
Default value --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.5 CsmKeys
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM key. The container name
CsmKey 0..* serves as a symbolic name for the identifier of a key
configuration.
10.2.6 CsmKey
No Included Containers
10.2.7 CsmPrimitives
Included Containers
Container Name Multiplicity Scope / Dependency
CsmAEADDecrypt 0..1 Configuration of AEAD decryption primitives
CsmAEADEncrypt 0..1 Configuration of AEAD encryption primitives
CsmDecrypt 0..1 Configurations of Decryption primitives
CsmEncrypt 0..1 Configurations of Encryption primitives
CsmHash 0..1 Container for Hash Configurations
CsmJobCertificateParse 0..1 Configurations of CertificateParse primitives
CsmJobCertificateVerify 0..1 Configurations of CertificateVerify primitves
CsmJobKeyDerive 0..1 Configurations of KeyDerive primitives
CsmJobKeyExchangeCalcPubVa
0..1 Configurations of KeyExchangeCalcPubVal primitives
l
CsmJobKeyExchangeCalcSecret 0..1 Configurations of KeyExchangeCalcSecret primitives
CsmJobKeyGenerate 0..1 Configurations of KeyGenerate primitives
CsmJobKeySetValid 0..1 Configurations of KeySetValid primitives
CsmJobRandomSeed 0..1 Configurations of RandomSeed primitives
CsmMacGenerate 0..1 Configurations of MacGenerate primitives
CsmMacVerify 0..1 Configurations of MacVerify primitives
CsmRandomGenerate 0..1 Configurations of RandomGenerate primitives
CsmSignatureGenerate 0..1 Configurations of SignatureGenerate primitives
CsmSignatureVerify 0..1 Configurations of SignatureVerify primitives
10.2.8 CsmQueues
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM queue.
A queue has two tasks:
CsmQueue 1..* 1. queue jobs which cannot be processed since the underlying
hardware is busy and
2. refer to channel which shall be used
10.2.9 CsmQueue
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.10 CsmInOutRedirections
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM redirection.
CsmInOutRedirection 1..* A redirection let a CSM job use a specific key element as input
or/and output.
10.2.11 CsmInOutRedirection
Name CsmTertiaryInputKeyElementId
Parent Container CsmInOutRedirection
Description Identifier of the key element used as tertiary input.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 4294967295
Default value --
Post-Build Variant
false
Multiplicity
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Multiplicity 0..1
Type Reference to [ CsmKey ]
Post-Build Variant
false
Multiplicity
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.12 CsmHash
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM hash. The container
CsmHashConfig 1 name serves as a symbolic name for the identifier of a key
configuration.
10.2.13 CsmHashConfig
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.14 CsmMacGenerate
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM mac generation interface.
CsmMacGenerateConfig 1 The container name serves as a symbolic name for the
identifier of a MAC generation interface.
10.2.15 CsmMacGenerateConfig
Type EcucEnumerationParamDef
Range CRYPTO_ALGOFAM_3DES 0x13
CRYPTO_ALGOFAM_AES 0x14
CRYPTO_ALGOFAM_BLAKE_1_256 0x0F
CRYPTO_ALGOFAM_BLAKE_1_512 0x10
CRYPTO_ALGOFAM_BLAKE_2s_256 0x11
CRYPTO_ALGOFAM_BLAKE_2s_512 0x12
CRYPTO_ALGOFAM_CHACHA 0x15
CRYPTO_ALGOFAM_CUSTOM 0xFF
CRYPTO_ALGOFAM_RIPEMD160 0x0E
CRYPTO_ALGOFAM_RNG 0x1B
CRYPTO_ALGOFAM_SHA1 0x01
CRYPTO_ALGOFAM_SHA2_224 0x02
CRYPTO_ALGOFAM_SHA2_256 0x03
CRYPTO_ALGOFAM_SHA2_384 0x04
CRYPTO_ALGOFAM_SHA2_512 0x05
CRYPTO_ALGOFAM_SHA2_512_224 0x06
CRYPTO_ALGOFAM_SHA2_512_256 0x07
CRYPTO_ALGOFAM_SHA3_224 0x08
CRYPTO_ALGOFAM_SHA3_256 0x09
CRYPTO_ALGOFAM_SHA3_384 0x0A
CRYPTO_ALGOFAM_SHA3_512 0x0B
CRYPTO_ALGOFAM_SHA3_SHAKE128 0x0C
CRYPTO_ALGOFAM_SHA3_SHAKE256 0x0D
CRYPTO_ALGOFAM_SIPHASH 0x1C
Post-Build Variant
false
Value
Multiplicity Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Value Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Scope / scope: local
Dependency
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.16 CsmMacVerify
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM MAC verification
CsmMacVerifyConfig 1 interface. The container name serves as a symbolic name for
the identifier of a MAC generation interface
10.2.17 CsmMacVerifyConfig
Description Determines the algorithm family used for the crypto service. This parameter defines
the most significant part of the algorithm.
Multiplicity 1
Type EcucEnumerationParamDef
Range CRYPTO_ALGOFAM_3DES 0x13
CRYPTO_ALGOFAM_AES 0x14
CRYPTO_ALGOFAM_BLAKE_1_256 0x0F
CRYPTO_ALGOFAM_BLAKE_1_512 0x10
CRYPTO_ALGOFAM_BLAKE_2s_256 0x11
CRYPTO_ALGOFAM_BLAKE_2s_512 0x12
CRYPTO_ALGOFAM_CHACHA 0x15
CRYPTO_ALGOFAM_RIPEMD160 0x0E
CRYPTO_ALGOFAM_RNG 0x1B
CRYPTO_ALGOFAM_SHA1 0x01
CRYPTO_ALGOFAM_SHA2_224 0x02
CRYPTO_ALGOFAM_SHA2_256 0x03
CRYPTO_ALGOFAM_SHA2_384 0x04
CRYPTO_ALGOFAM_SHA2_512 0x05
CRYPTO_ALGOFAM_SHA2_512_224 0x06
CRYPTO_ALGOFAM_SHA2_512_256 0x07
CRYPTO_ALGOFAM_SHA3_224 0x08
CRYPTO_ALGOFAM_SHA3_256 0x09
CRYPTO_ALGOFAM_SHA3_384 0x0A
CRYPTO_ALGOFAM_SHA3_512 0x0B
CRYPTO_ALGOFAM_SHA3_SHAKE128 0x0C
CRYPTO_ALGOFAM_SHA3_SHAKE256 0x0D
CRYPTO_ALGOFAM_SIPHASH 0x1C
CRYPTO_ALGOMODE_CUSTOM 0xFF
Post-Build Variant
false
Value
Multiplicity Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Value Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Scope / scope: local
Dependency
Link time --
Post-build time --
Scope / Dependency scope: local
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.18 CsmEncrypt
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM encryption interface. The
CsmEncryptConfig 1 container name serves as a symbolic name for the identifier of
an encryption interface.
10.2.19 CsmEncryptConfig
Range 1 .. 4294967295
Default value --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.20 CsmDecrypt
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM decryption interface. The
CsmDecryptConfig 1 container name serves as a symbolic name for the identifier of
an decryption interface.
10.2.21 CsmDecryptConfig
CRYPTO_ALGOMODE_CUSTOM 0xFF
CRYPTO_ALGOMODE_ECB 0x01
CRYPTO_ALGOMODE_OFB 0x04
CRYPTO_ALGOMODE_RSAES_OAEP 0x08
CRYPTO_ALGOMODE_RSAES_PKCS1_v1_5 0x09
CRYPTO_ALGOMODE_XTS 0x06
Post-Build
false
Variant Value
Multiplicity Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Value Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Scope / scope: local
Dependency
No Included Containers
10.2.22 CsmAEADEncrypt
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM encryption interface. The
CsmAEADEncryptConfig 1 container name serves as a symbolic name for the identifier of
an encryption interface.
10.2.23 CsmAEADEncryptConfig
Default value --
maxLength --
minLength --
regularExpression --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
maxLength --
minLength --
regularExpression --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.24 CsmAEADDecrypt
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM decryption interface. The
CsmAEADDecryptConfig 1 container name serves as a symbolic name for the identifier of
an decryption interface.
10.2.25 CsmAEADDecryptConfig
Multiplicity 0..1
Type EcucStringParamDef
Default value --
maxLength --
minLength --
regularExpression --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Type EcucStringParamDef
Default value --
maxLength --
minLength --
regularExpression --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Default value --
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.26 CsmSignatureGenerate
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM signature generation
CsmSignatureGenerateConfi
1 interface. The container name serves as a symbolic name for
g
the identifier of signature generation interface.
10.2.27 CsmSignatureGenerateConfig
Link time --
Post-build time --
Scope / Dependency scope: local
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.28 CsmSignatureVerify
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM signature verification
CsmSignatureVerifyConfig 1 interface. The container name serves as a symbolic name for
the identifier of signature verification interface.
10.2.29 CsmSignatureVerifyConfig
Name CsmSignatureVerifyAlgorithmFamilyCustom
Parent Container CsmSignatureVerifyConfig
Description Name of the custom algorithm family used for the crypto service. This is
the name of the custom algorithm family, if
CRYPTO_ALGOFAM_CUSTOM is used as
CsmSignatureVerifyAlgorithmFamily.
Multiplicity 0..1
Type EcucStringParamDef
Default value --
maxLength --
minLength --
regularExpression --
Post-Build Variant Value false
Multiplicity Configuration Pre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
No Included Containers
10.2.30 CsmRandomGenerate
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM random generator. The
CsmRandomGenerateConfig 1 container name serves as a symbolic name for the identifier of
a random generator configuration.
10.2.31 CsmRandomGenerateConfig
CRYPTO_ALGOFAM_SHA2_384 0x04
CRYPTO_ALGOFAM_SHA2_512 0x05
CRYPTO_ALGOFAM_SHA2_512_224 0x06
CRYPTO_ALGOFAM_SHA2_512_256 0x07
CRYPTO_ALGOFAM_SHA3_224 0x08
CRYPTO_ALGOFAM_SHA3_256 0x09
CRYPTO_ALGOFAM_SHA3_384 0x0A
CRYPTO_ALGOFAM_SHA3_512 0x0B
CRYPTO_ALGOFAM_SHA3_SHAKE128 0x0C
CRYPTO_ALGOFAM_SHA3_SHAKE256 0x0D
Post-Build Variant
false
Value
Multiplicity Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Value Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Scope / scope: local
Dependency
Post-Build Variant
false
Value
Multiplicity Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Value Pre-compile time X All Variants
Configuration Link time --
Class Post-build time --
Scope / scope: local
Dependency
No Included Containers
10.2.32 CsmJobKeySetValid
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM key set valid operation.
CsmJobKeySetValidConfig 1 The container name serves as a symbolic name for the
identifier of a key configuration.
10.2.33 CsmJobKeySetValid
Included Containers
Container Name Multiplicity Scope / Dependency
Container for configuration of a CSM key set valid operation.
CsmJobKeySetValidConfig 1 The container name serves as a symbolic name for the
identifier of a key configuration.
10.2.34 CsmCallbacks
Included Containers
Container Name Multiplicity Scope / Dependency
CsmCallback 0..* Container for configuration of a callback function
10.2.35 CsmCallback
Post-build time --
Scope / Dependency scope: local
No Included Containers