mco_crypt_stream

Encrypt or decrypt a block of data using the encryption context.

For an overview see page Encryption C API

Prototype

 
    void mco_crypt_stream(mco_crypt_ctx_t const* crypt_ctx,
                mco_crypt_state_t* state,
                uint1* buf,
                uint4 size);
     

Arguments

crypt_ctx The address of the pre-initialized encryption context
state The address of the encryption state structure indicating the encryption process at the current location of the stream
buf The address of the data buffer to encrypt / decrypt
size The size to be placed into or retrieved from the buffer buf

Description

This function encrypts or decrypts a data buffer buf of size size to be placed into or retrieved from a stream. Unlike the block-based function mco_crypt_block(), this function assumes an arbitrary buffer size that is the usual usage pattern for stream-based operations.

Return Codes

void No value returned

Example

The following code snippet demonstrates encrypting / decrypting an external file:

     
    /* Code sample for stream-based encryption */
    FILE *fin, *fout;
    char buff[100];
    const int buff_size = sizeof(buff);
    const char *cipher = "my cipher key";
    mco_crypt_ctx_t crypt_ctx;
    mco_crypt_state_t crypt_state;
    size_t n;
 
    mco_crypt_init_ctx(&crypt_ctx, cipher);
    mco_crypt_init_state(&crypt_ctx, &crypt_state);
    fin = fopen("unencrypted.file", "rb");
    fout = fopen("encrypted.file", "wb");
    do
    {
        n = fread(buff, buff_size, 1, fin);
        mco_crypt_stream(&crypt_ctx, &crypt_state, buff, (uint4)n);

        fwrite(buff, n, 1, fout);
    } while (n == buff_size);
    fclose(fin);
    fclose(fout);
     

Files

Header file:
mco.h
Source file:
mcocryptaes.c
Library:
libmcocryptaes.a
Header file:
mco.h
Source file:
mcocryptstub.c
Library:
libmcocryptstub.a