mco_crypt_block

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

For an overview see page Encryption C API

Prototype

 
    void mco_crypt_block(mco_crypt_ctx_t const* crypt_ctx, uint1* block, uint4 block_size, uint8 block_offs);
     

Arguments

crypt_ctx The address of the initialized encryption context (see mco_crypt_init_ctx())
block The address of the data array to be encrypted and receive the encrypted result
block_size The size of the block
block_offs The offset into the data array where the block will be read or written

Description

This function encrypts or decrypts a block of data using the specified pre-initialized encryption context crypt_cts. Where block and block_size are features of the block itself while block_offs is an offset of current block in whole array of data (see usage in the example below). This function is useful for block-based operations like disk drive storage.

(Note that instead of block-based operations the functions mco_crypt_stream() and mco_crypt_init_state() provide stream-based encryption or decryption.)

Return Codes

void No value returned

Example

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

 
    /* Code sample for block-based encryption */
    FILE *fin, *fout;
    char block[512];
    const int block_size = sizeof(block);
    const char *cipher = "my cipher key";
    mco_crypt_ctx_t crypt_ctx;
    size_t n;
    uint8 pos = 0;
 
    mco_crypt_init_ctx(&crypt_ctx, cipher);
    fin = fopen("unencrypted.file", "rb");
    fout = fopen("encrypted.file", "wb");
    do
    {
        n = fread(block, block_size, 1, fin);
        mco_crypt_block(&crypt_ctx, block, n, pos);

        fwrite(block, n, 1, fout);
        pos += block_size;
    } while (n == block_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