Crypto Requirements#

Crypto Requirements
status: draft
security: YES
safety: QM
tags: crypto
version: 1

Hash Functionality#

The requirements in this section specify behavior provided by the Crypto component’s hash API. They do not make qualification claims about a complete deployed system.

Support SHA-2 hash algorithms
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1

The Crypto component shall provide SHA-256, SHA-384, and SHA-512 hash operations.

Provide streaming hash operation
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

The Crypto component shall support incremental hashing through the ordered Init(), zero or more Update(), and Finalize() operations.

Provide single-shot hash operation
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

The Crypto component shall support hashing an input buffer through SingleShot() and shall produce the same digest as the corresponding streaming operation.

Report hash digest size
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Interface
version: 1
satisfied by: comp__crypto

For each supported hash algorithm, the Crypto component shall expose through the hash interface the digest output size, in bytes, required by that algorithm.

Reject undersized hash output buffers
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Interface
version: 1
satisfied by: comp__crypto

The Crypto component shall reject a hash operation when the caller-provided output buffer is smaller than the digest size of the configured algorithm.

Preserve hash state after output-buffer validation
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

When streaming hash finalization reports that the output buffer is too small, the Crypto component shall preserve the active hash state so that Finalize() can be retried with a sufficient output buffer.

Reject unsupported hash algorithms
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

The Crypto component shall report an unsupported-algorithm error when a hash algorithm cannot be resolved by the selected provider and shall not substitute a digest size or another algorithm.

Maintain provider-independent hash results
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

For each supported hash algorithm, the Crypto stack shall return identical digests for identical input bytes independent of the selected provider.

Provider Selection#

Honor preferred-provider fallback for context creation
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

When context creation requests a preferred provider category, the Crypto component shall use the corresponding fallback category only if the preferred provider is unavailable or does not support the requested operation.

Hash Context Lifecycle#

Reset reusable hash contexts
status: valid
security: YES
safety: QM
tags: crypto
reqtype: Functional
version: 1
satisfied by: comp__crypto

The Crypto component shall allow an initialized or completed hash context to be reset to the idle state without changing its algorithm or provider binding.