Function prototype
aat_int32 AAL2GenDeriveTokenBlobsCmd(
aat_byte *Cmd,
aat_int32 *CmdSize,
TDigipassBlob *DPData [8],
TKernelParms *CallParms,
aat_int16 Appl_count,
aat_ascii *aStorageKeyNameIn,
aat_ascii *aIVIn,
aat_ascii *aChallengeIn,
aat_ascii *aDerivationCodeIn,
aat_word32 DerivationCodeFormat);
Description
This function creates a command which directs the HSM to derive the Digipass data of a Software Digipass based on Digipass SDK 4.0 or higher for Software Digipass compliant with the standard one-step activation (in the context of single-device licensing); for more information, refer to the Authentication Suite Server SDK Product Guide, using the given data and to return a result in the form of a reply.
The software Digipass data derivation on the HSM is identical to the functionality available with the Authentication Suite Server SDK Software Digipass Derivation Service. For information on the associated functions, refer to the Authentication Suite Server SDK C-C++ Programmer's Guide.
This function must be used with the post-HSM API AAL2ProcDeriveTokenBlobsRpl.
This function serializes an important amount of data. The Cmd buffer must be allocated with a sufficient size. For more information about the allocation of the Cmd and InReply buffers, refer to Cmd and InReply buffers allocation
Parameters
Table: Parameters (AAL2GenDeriveTokenBlobsCmd) | Type | Name | Use | Description |
|---|
| aat_byte * | Cmd | O | Up to 1874 bytes that serialize the DERIVE TOKEN BLOBS command type and the input data to the derive token Blobs function on the HSM: - Command type - 2 bytes
- An authenticator application BLOBs - up to 8x192 bytes
- Runtime parameters - 80 bytes
- ApplCount - 4 bytes
- StorageKeyName - up to 128 characters
- InitialVector - 8 bytes
- Challenge - up to 17 characters
- DerivationCode - up to 27 characters
- DerivationCodeFormat - 4 bytes
- Host time - 4 bytes
Plus 64 bytes for Authentication Suite Server SDK internal use. |
| aat_int32 * | CmdSize | I/O | On entry, this parameter contains the size of the Cmd buffer.On exit, this parameter contains the length of the Cmd message. |
| TDigipassBlob * [8] | DPData | I | Array of authenticator application BLOB pointers. |
| TKernelParms * | CallParms | I | Structure of runtime parameters to use during this function call. |
| aat_int16 | Appl_count | I | Number of applications in the authenticator application BLOB array (1 to 8). |
| aat_ascii * | aStorageKey NameIn | I | String of up to 128+1 characters, left-justified, null-terminated, or right-padded with spaces. This is the label of the HSM storage key used to encrypt the sensitive Digipass application BLOB data. |
| aat_ascii * | aIVIn | I | String of 16 hexadecimal characters, left-justified, null-terminated, or right-padded with spaces. This is the initial vector used to encrypt the sensitive authenticator application BLOB data. |
| aat_ascii * | aChallenge In | I | String of up to 17 numeric characters, left justified, null-terminated or right padded with spaces. This parameter holds the challenge that may have been proposed to the user to generate the DerivationCode (in case the first authenticator application BLOB is a Challenge/Response application). If no challenge is used to generate the derivation code, this parameter must be NULL. |
| aat_ascii * | aDerivationCodeIn | I | String of up to 27+1 decimal or hexadecimal characters, null-terminated. This is the derivation code generated by the Digipass authenticator. This derivation code can contain hexadecimal characters if the OTP response output is hexadecimal. |
| aat_word32 | DerivationCodeFormat | I | Reserved. Must be set to 0. |
Return codes
Table: Return codes (AAL2GenDeriveTokenBlobsCmd) | Code | Meaning | Code | Meaning |
|---|
| 0 | Success | 706 | Invalid data buffer pointer |
| 149 | Invalid initial vector length | 1000 | Function does not support EMV-CAP |
| 412 | Invalid checksum (software)) | 1018 | Invalid TLV item pointer |
| 413 | Invalid Base64 format | 1025 | Data buffer too small |
| 510 | Invalid Digipass data pointer | 1110 | Invalid derivation code pointer |
| 590 | Invalid command pointer | | |