Functions ¶ CryptoGenerateRandomNumber (Function) CryptoGetAlgorithmById (Function) CryptoGetFirstAlgorithm (Function) CryptoGetNextAlgorithm (Function) CryptoRtsByteStringExit (Function) CryptoRtsByteStringInit (Function) CryptoRtsByteStringInit2 (Function)
CryptoGenerateRandomNumber (FUN) ¶ FUNCTION CryptoGenerateRandomNumber : RTS_IEC_RESULT Generate a number of cryptographic strong bytes. InOut: Scope Name Type Comment Return CryptoGenerateRandomNumber RTS_IEC_RESULT Function returns ERR_OK if the bytes could be generated Input ui32NumOfRandomBytes UDINT Number of bytes needed. pRandom POINTER TO RtsByteString Buffer to store the bytes.
CryptoGetAlgorithmById (FUN) ¶ FUNCTION CryptoGetAlgorithmById : RTS_IEC_HANDLE Get a handle to the algorithm using a specific ID InOut: Scope Name Type Comment Return CryptoGetAlgorithmById RTS_IEC_HANDLE Handle to the crypto algorithm Input ui32CryptoID RtsCryptoID ID of the algorthm pResult POINTER TO RTS_IEC_RESULT Result of the operation. Can be NULL.
CryptoGetFirstAlgorithm (FUN) ¶ FUNCTION CryptoGetFirstAlgorithm : RTS_IEC_HANDLE Get the first algorthm matching the type given. Use this with the GetNext function to iterate over algorthmes of a specific type. InOut: Scope Name Type Comment Return CryptoGetFirstAlgorithm RTS_IEC_HANDLE Handle to the crypto algorithm Input ui32CryptoType RtsCryptoType Type of the algorithm. See: Crypto Types pszName POINTER TO STRING Name of the algorthm. Can be NULL. i32MaxNameLen DINT Maximum length of the name buffer pui32CryptoID POINTER TO RtsCryptoID ID of the algorithm. pResult POINTER TO RTS_IEC_RESULT Result of the operation. Can be NULL.
CryptoGetNextAlgorithm (FUN) ¶ FUNCTION CryptoGetNextAlgorithm : RTS_IEC_HANDLE Get the next algorthm matching the type given. InOut: Scope Name Type Comment Return CryptoGetNextAlgorithm RTS_IEC_HANDLE Handle to the crypto algorithm Input hCrypto RTS_IEC_HANDLE Handle to the last algorithem. ui32CryptoType RtsCryptoType Handle to the last algorithem. pszName POINTER TO STRING Name of the agorithm. Can be NULL. i32MaxNameLen DINT Maximum length of the name buffer pui32CryptoID POINTER TO RtsCryptoID ID of the agorithm. pResult POINTER TO RTS_IEC_RESULT Result of the operation. Can be NULL.
CryptoRtsByteStringExit (FUN) ¶ FUNCTION CryptoRtsByteStringExit : RTS_IEC_RESULT InOut: Scope Name Type Return CryptoRtsByteStringExit RTS_IEC_RESULT Input pByteString POINTER TO RtsByteString
CryptoRtsByteStringInit (FUN) ¶ FUNCTION CryptoRtsByteStringInit : RTS_IEC_RESULT InOut: Scope Name Type Return CryptoRtsByteStringInit RTS_IEC_RESULT Input pByteString POINTER TO RtsByteString
CryptoRtsByteStringInit2 (FUN) ¶ FUNCTION CryptoRtsByteStringInit2 : RTS_IEC_RESULT Initialize a byte string. InOut: Scope Name Type Comment Return CryptoRtsByteStringInit2 RTS_IEC_RESULT Input pByteString POINTER TO RtsByteString Pointer to the RtsByteString to be initialized. ui32BufferSize UDINT Buffersize needed for this byte string. pBuffer POINTER TO BYTE Pointer to a optional static buffer. If NULL is passed the function will allocated ui32BufferSize bytes from the heap. xEmptyBuffer BOOL Used for static buffers. If FALSE pByteString->ui32Lenght will be set to ui32BufferSize. Must be TRUE if pBuffer == NULL
Key Derivation ¶ CryptoDeriveKey (Function)
CryptoDeriveKey (FUN) ¶ FUNCTION CryptoDeriveKey : RTS_IEC_RESULT This Function derives a new key FROM an existing secret (key) AND an corresponding salt. The functions generates keys of the requested size which is given in pDerivedKey->ui32MaxLen. If setup properly this function provides a secure way to store passwords within the file system. By now two classes of algorithms can be use: 1. P_SHA(1, 256): This algorithm can be used to derive session keys from some kind of secret data. If this algorithm is used the pSpecificParameters is not evaluated an should be NULL. This algorithm is quite fast. 2. SCRYPT: This algorithm can be used to generate strong keys from weak passwords, or to store passwords in a secure way within the file system. This algorithm makes use of the pSpecificParameters and requires this parameter. Depending on the configuration given in pSpecificParameters this algorithm is time and memory consuming. For details see RFC-7914. InOut: Scope Name Type Comment Return CryptoDeriveKey RTS_IEC_RESULT Result of the operation. ERR_OK: The key was derived successfully. ERR_INVALID_HANDLE: hAlgo was not a valid handle to derive keys. ERR_PARAMETER: One of the other parameters was invalid. ERR_FAILED: some internal error happend. Input hAlgo RTS_IEC_HANDLE Handle of the used algoritm. Should be one of RTSCRYPTOID_KDF_* algorithms. pKey POINTER TO RtsByteString The key that should be derived. The function reads pKey->ui32Len bytes of the given buffer. pSalt POINTER TO RtsByteString The SALT that should be used to derive the key. The function reads pSalt->ui32Len bytes of the given buffer. pSpecificParameters POINTER TO RtsKdfParameter Some additional algorithm specific parameters. By now only used for scrypt. pDerivedKey POINTER TO RtsByteString Destination where to store the derived key. The function generates a key with the size of pDerivedKey->ui32MaxLen. The size of the derived key will be stored in pDerivedKey->ui32Len.