struct CCL::Security::Crypto::Internal::ICryptoService

Overview

Helper methods for crypto class implementation. More…

#include <icryptoservice.h>

struct ICryptoService: public CCL::IUnknown
{
    // methods

    virtual tresult CCL_API RNG_generate (BlockRef randomData) = 0;

    virtual tresult CCL_API MD5_calculate (
        BlockRef digest,
        IStream& data,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual tresult CCL_API SHA1_calculate (
        BlockRef digest,
        IStream& data,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual tresult CCL_API SHA256_calculate (
        BlockRef digest,
        IStream& data,
        IProgressNotify* progress = nullptr
    ) = 0;

    virtual tresult CCL_API HMAC_SHA1_sign (
        IStream& signature,
        BlockRef key,
        IStream& data
    ) = 0;

    virtual tresult CCL_API HMAC_SHA256_sign (
        IStream& signature,
        BlockRef key,
        IStream& data
    ) = 0;

    virtual tresult CCL_API HKDF_deriveKey (
        IStream& _derivedKey,
        uint32 derivedKeyLength,
        BlockRef secret,
        BlockRef salt,
        BlockRef info
    ) = 0;

    virtual tresult CCL_API AES_encrypt (
        IStream& cipherData,
        BlockRef key,
        BlockRef iv,
        IStream& plainData,
        BlockCipherMode mode
    ) = 0;

    virtual tresult CCL_API AES_decrypt (
        IStream& plainData,
        BlockRef key,
        BlockRef iv,
        IStream& cipherData,
        BlockCipherMode mode
    ) = 0;

    virtual tresult CCL_API RSA_generateKeyPair (
        IStream& privateKey,
        IStream& publicKey,
        uint32 keyLength,
        BlockRef randomData
    ) = 0;

    virtual tresult CCL_API RSA_encrypt (
        IStream& cipherData,
        IStream& publicKey,
        BlockRef randomData,
        IStream& plainData
    ) = 0;

    virtual tresult CCL_API RSA_decrypt (
        IStream& plainData,
        IStream& privateKey,
        IStream& cipherData
    ) = 0;

    virtual tresult CCL_API RSA_sign (
        IStream& signature,
        IStream& privateKey,
        IStream& data,
        Hash hash
    ) = 0;

    virtual tresult CCL_API RSA_verify (
        IStream& data,
        IStream& publicKey,
        IStream& signature,
        Hash hash
    ) = 0;

    virtual tresult CCL_API BER_decode (
        IASN1ContentHandler& reader,
        IStream& encodedData
    ) = 0;

    virtual tresult CCL_API DER_encode (
        IStream& encodedData,
        int tag,
        IStream& content
    ) = 0;

    virtual tresult CCL_API PKCS7_decodeData (
        IASN1ContentHandler& reader,
        IStream& encodedData
    ) = 0;

    virtual tresult CCL_API PKCS7_getCertificates (
        IStream& certficates,
        IStream& encodedData
    ) = 0;

    virtual IInteger*CCL_API Integer_create () = 0;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Helper methods for crypto class implementation.

Do not use this interface directly.

Methods

virtual tresult CCL_API RNG_generate (BlockRef randomData) = 0

Generate random data.

virtual tresult CCL_API MD5_calculate (
    BlockRef digest,
    IStream& data,
    IProgressNotify* progress = nullptr
) = 0

[MD5] Calculate digest from data stream - DEPRECATED.

virtual tresult CCL_API SHA1_calculate (
    BlockRef digest,
    IStream& data,
    IProgressNotify* progress = nullptr
) = 0

[SHA1] Calculate digest from data stream.

virtual tresult CCL_API SHA256_calculate (
    BlockRef digest,
    IStream& data,
    IProgressNotify* progress = nullptr
) = 0

[SHA256] Calculate digest from data stream.

virtual tresult CCL_API HMAC_SHA1_sign (
    IStream& signature,
    BlockRef key,
    IStream& data
) = 0

[HMAC-SHA1] Sign data.

virtual tresult CCL_API HMAC_SHA256_sign (
    IStream& signature,
    BlockRef key,
    IStream& data
) = 0

[HMAC-SHA256] Sign data.

virtual tresult CCL_API AES_encrypt (
    IStream& cipherData,
    BlockRef key,
    BlockRef iv,
    IStream& plainData,
    BlockCipherMode mode
) = 0

[AES] Encrypt data.

virtual tresult CCL_API AES_decrypt (
    IStream& plainData,
    BlockRef key,
    BlockRef iv,
    IStream& cipherData,
    BlockCipherMode mode
) = 0

[AES] Decrypt data.

virtual tresult CCL_API RSA_generateKeyPair (
    IStream& privateKey,
    IStream& publicKey,
    uint32 keyLength,
    BlockRef randomData
) = 0

[RSA] Generate private/public key pair.

virtual tresult CCL_API RSA_encrypt (
    IStream& cipherData,
    IStream& publicKey,
    BlockRef randomData,
    IStream& plainData
) = 0

[RSA] Encrypt data.

virtual tresult CCL_API RSA_decrypt (
    IStream& plainData,
    IStream& privateKey,
    IStream& cipherData
) = 0

[RSA] Decrypt data.

virtual tresult CCL_API RSA_sign (
    IStream& signature,
    IStream& privateKey,
    IStream& data,
    Hash hash
) = 0

[RSA] Sign data.

virtual tresult CCL_API RSA_verify (
    IStream& data,
    IStream& publicKey,
    IStream& signature,
    Hash hash
) = 0

[RSA] Verify data.

virtual tresult CCL_API BER_decode (
    IASN1ContentHandler& reader,
    IStream& encodedData
) = 0

Parse ASN.1 encoded data (Basic Encoding Rules)

virtual tresult CCL_API DER_encode (
    IStream& encodedData,
    int tag,
    IStream& content
) = 0

Write ASN.1 encoded data (Distinguished Encoding Rules)

virtual tresult CCL_API PKCS7_decodeData (
    IASN1ContentHandler& reader,
    IStream& encodedData
) = 0

Parse the ASN.1 payload from a PKCS #7 container.

virtual tresult CCL_API PKCS7_getCertificates (
    IStream& certficates,
    IStream& encodedData
) = 0

Get an X.509 certificate (chain) from a PKCS #7 container.

virtual IInteger*CCL_API Integer_create () = 0

Create new integer instance.