Previous section.

Common Security: CDSA and CSSM
Copyright © 1997 The Open Group

NAME

CSP_DecryptData

SYNOPSIS

CSSM_RETURN CSSMSPI CSP_DecryptData
    (CSSM_CSP_HANDLE CSPHandle,
    CSSM_CC_HANDLE CCHandle,
    const CSSM_CONTEXT_PTR Context,
    const CSSM_DATA_PTR CipherBufs,
    uint32 CipherBufCount,
    CSSM_DATA_PTR ClearBufs,
    uint32 ClearBufCount,
    uint32 *bytesDecrypted,
    CSSM_DATA_PTR RemData)

DESCRIPTION

This function decrypts the supplied encrypted data. The CSP_QuerySize function can be used to estimate the output buffer size required.

PARAMETERS

CSPHandle (input)

The handle that describes the add-in cryptographic service provider module used to perform up-calls to CSSM for the memory functions managed by CSSM.

CCHandle (input)

The handle that describes the context of this cryptographic operation used to link to the CSP-managed information.

Context (input)

Pointer to CSSM_CONTEXT structure that describes the attributes with this context.

CipherBufs (input)

A pointer to one or more CSSM_DATA structures containing the encrypted data.

CipherBufCount (input)

The number of CipherBufs.

ClearBufs (output)

A pointer to one or more CSSM_DATA structures for the decrypted data.

ClearBufCount (input)

The number of ClearBufs.

bytesDecrypted (output)

A pointer to uint32 for the size of the decrypted data in bytes.

RemData (output)

A pointer to the CSSM_DATA structure for the last decrypted block.

RETURN VALUE

A CSSM return value. This function returns CSSM_OK if successful and returns an error code if an error has occurred.

ERRORS

CSSM_CSP_INVALID_CSP_HANDLE

Invalid CSP handle.

CSSM_CSP_INVALID_CONTEXT_HANDLE

Invalid context handle.

CSSM_CSP_INVALID_CONTEXT_POINTER

Invalid CSSM_CONTEXT pointer.

CSSM_CSP_INVALID_CONTEXT

Context type and operation do not match.

CSSM_CSP_INVALID_DATA_POINTER

Invalid input or output CSSM_DATA pointer.

CSSM_CSP_INVALID_DATA_COUNT

Invalid data count; data count cannot be 0.

CSSM_CSP_INVALID_DATA

Invalid output CSSM_DATA buffer.

CSSM_CSP_NOT_ENOUGH_BUFFER

The output buffer is not big enough.

CSSM_CSP_INVALID_ALGORITHM

Unknown algorithm.

CSSM_CSP_MEMORY_ERROR

Not enough memory to allocate.

CSSM_CSP_OPERATION_UNSUPPORTED

Decrypt data service not supported.

CSSM_CSP_OPERATION_FAILED

Cryptographic operation failed.

CSSM_CSP_VECTOROFBUFS_UNSUPPORTED

Supports only a single buffer of input.

CSSM_CSP_INVALID_ATTR_KEY

Invalid or missing key attribute in the context.

CSSM_CSP_INVALID_KEY

Invalid or missing key data in the context attribute.

CSSM_CSP_INVALID_KEYCLASS

Key class is not private or public key class for asymmetric context or is not session class for symmetric context.

CSSM_CSP_KEY_USAGE_INCORRECT

Key usage does not allow decryption.

CSSM_CSP_KEY_ALGID_MISMATCH

The supplied key does not match the operation.

CSSM_CSP_KEY_KEYHEADER_INCONSISTENT

Key header and key data is inconsistent.

CSSM_CSP_KEY_FORMAT_INCORRECT

Unknown key format.

CSSM_CSP_INVALID_KEY_SIZE_IN_BITS

Key size in bits unsupported.

CSSM_CSP_INVALID_PADDING

Unknown padding.

CSSM_CSP_INVALID_MODE

Unknown algorithm mode for symmetric context.

CSSM_CSP_INVALID_ATTR_PASSPHRASE

Invalid or missing passphrase attribute in the asymmetric context.

CSSM_CSP_PRIKEY_NOT_FOUND

Cannot find the corresponding private key for asymmetric context.

CSSM_CSP_PASSPHRASE_INVALID

Passphrase length error or passphrase badly formed for asymmetric context.

CSSM_CSP_PASSPHRASE_INCORRECT

Passphrase incorrect for asymmetric context.

CSSM_CSP_PRIKEY_ERROR

Error in getting the raw private key or private key storage error for asymmetric context.

CSSM_CSP_INVALID_ATTR_INIT_VECTOR

Init vector attribute data or length error for symmetric context.

Comments

The output can be obtained either by filling the caller-supplied buffer or using the application's memory allocation functions to allocate space; application has to free the memory in this case. If the output buffer pointer is NULL, an error code CSSM_CSP_INVALID_DATA_POINTER is returned. In-place decryption can be done by supplying the same input and output buffer.

SEE ALSO

CSP_QuerySize, CSP_EncryptData,
CSP_DecryptDataInit, CSP_DecryptDataUpdate,
CSP_DecryptDataFinal

Why not acquire a nicely bound hard copy?
Click here to return to the publication details or order a copy of this publication.
You should also read the legal notice explaining the terms and conditions relating to the CDSA documentation.

Contents Next section Index