RSA BSAFE Cert-C Micro Edition

The power of PKI for the smallest of devices

R_CR_METHOD Reference

This structure contains the set of function pointers which are used as a method table to map calls to the cryptographic Application Programming Interface (API) functions through to their implementations.

The functions provide support for init, update, final and single update/final operations which are required by PKCS #11. With this, individual functions can be mapped through to hardware devices that provide a PKCS #11 interface.

#include <cryp_meth.h>

struct r_cr_method_st
{
    /** @see R_CR_CTX_new(). */
    int (*ctx_new)(R_LIB_CTX *lib_ctx, R_RES_FLAG flag, R_CR_CTX **ctx);

    /** @see R_CR_CTX_free(). */
    int (*ctx_free)(R_CR_CTX *ctx);

    /** @see R_CR_new(). */
    int (*crypto_new)(R_CR_CTX *crypto_ctx, int alg_type, int alg_id,
                int alg_sub, R_CR **crypto);

    /** @see R_CR_dup(). */
    int (*crypto_dup)(R_CR *crypto, R_CR **new_crypto);

    /** @see R_CR_free(). */
    int (*crypto_free)(R_CR *crypto);

    /**
     * @see R_CR_get_error(), R_CR_get_reason(), R_CR_get_detail(),
     * R_CR_get_function(), R_CR_get_line(), R_CR_get_file(),
     * R_CR_get_error_string(), R_CR_get_reason_string(),
     * R_CR_get_detail_string() and R_CR_get_function_string().
     */
    int (*crypto_get_errinfo)(R_CR *crypto, int what, void **data);

    /** @see R_CR_set_info(). */
    int (*crypto_getinfo)(R_CR *crypto, int id, void **param);

    /** @see R_CR_get_info(). */
    int (*crypto_setinfo)(R_CR *crypto, int id, void *param);

    /** @see R_CR_encrypt_init(). */
    int (*encrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv);

    /** @see R_CR_encrypt(). */
    int (*encrypt)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_encrypt_update(). */
    int (*encrypt_update)(R_CR *crypto, unsigned char *data,
        unsigned int dlen, unsigned char *out, unsigned int *olen);

    /** @see R_CR_encrypt_final(). */
    int (*encrypt_final)(R_CR *crypto, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_decrypt_init(). */
    int (*decrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv);

    /** @see R_CR_decrypt(). */
    int (*decrypt)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_decrypt_update(). */
    int (*decrypt_update)(R_CR *crypto, unsigned char *data,
        unsigned int dlen, unsigned char *out, unsigned int *olen);

    /** @see R_CR_decrypt_final(). */
    int (*decrypt_final)(R_CR *crypto, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_sign_init(). */
    int (*sign_init)(R_CR *crypto, R_PKEY *key);

    /** @see R_CR_sign(). */
    int (*sign)(R_CR *crypto, unsigned char *data,
        unsigned int dlen, unsigned char *out, unsigned int *olen);

    /** @see R_CR_sign_update(). */
    int (*sign_update)(R_CR *crypto, unsigned char *data,
        unsigned int data_len);

    /** @see R_CR_sign_final(). */
    int (*sign_final)(R_CR *crypto,unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_verify_init(). */
    int (*verify_init)(R_CR *crypto, R_PKEY *key);

    /** @see R_CR_verify(). */
    int (*verify)(R_CR *crypto, unsigned char *data,
        unsigned int dlen, unsigned char *signature,
        unsigned int slen, int *result);

    /** @see R_CR_verify_update(). */
    int (*verify_update)(R_CR *crypto, unsigned char *data,
        unsigned int data_len);

    /** @see R_CR_verify_final(). */
    int (*verify_final)(R_CR *crypto, unsigned char *signature,
        unsigned int sig_len, int *result);

    /** @see R_CR_asym_encrypt_init(). */
    int (*asym_encrypt_init)(R_CR *crypto, R_PKEY *key);

    /** @see R_CR_asym_encrypt(). */
    int (*asym_encrypt)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_asym_decrypt_init(). */
    int (*asym_decrypt_init)(R_CR *crypto, R_PKEY *key);

    /** @see R_CR_asym_decrypt(). */
    int (*asym_decrypt)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_digest_init(). */
    int (*digest_init)(R_CR *crypto);

    /** @see R_CR_digest(). */
    int (*digest)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *out_len);

    /** @see R_CR_digest_update(). */
    int (*digest_update)(R_CR *crypto, unsigned char *data,
        unsigned int data_len);

    /** @see R_CR_digest_final(). */
    int (*digest_final)(R_CR *crypto, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_mac_init(). */
    int (*mac_init)(R_CR *crypto, R_SKEY *key);

    /** @see R_CR_mac(). */
    int (*mac)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_mac_update(). */
    int (*mac_update)(R_CR *crypto, unsigned char *data,
        unsigned int data_len);

    /** @see R_CR_mac_final(). */
    int (*mac_final)(R_CR *crypto, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_verify_mac_init(). */
        int (*verify_mac_init)(R_CR *crypto, R_SKEY *key);

    /** @see R_CR_verify_mac(). */
    int (*verify_mac)(R_CR *crypto, unsigned char *data,
        unsigned int data_len, unsigned char *mac,
        unsigned int mac_len, int *result);

    /** @see R_CR_verify_mac_update(). */
    int (*verify_mac_update)(R_CR *crypto, unsigned char *data,
        unsigned int data_len);

    /** @see R_CR_verify_mac_final(). */
    int (*verify_mac_final)(R_CR *crypto, unsigned char *mac,
        unsigned int mac_len, int *result);

    /** @see R_CR_key_exchange_init(). */
    int (*key_exchange_init)(R_CR *crypto, R_PKEY *key);

    /** @see R_CR_key_exchange_phase_1(). */
    int (*key_exchange_phase_1)(R_CR *crypto, unsigned char *out,
        unsigned int *olen);

    /** @see R_CR_key_exchange_phase_2(). */
    int (*key_exchange_phase_2)(R_CR *crypto, unsigned char *data,
        unsigned int dlen, unsigned char *out, unsigned int * olen);

    /** @see R_CR_generate_key_init(). */
    int (*generate_key_init)(R_CR *crypto);

    /** @see R_CR_generate_key(). */
    int (*generate_key)(R_CR *crypto, R_PKEY **key);

    /** @see R_CR_generate_parameter_init(). */
    int (*generate_params_init)(R_CR *crypto);

    /** @see R_CR_generate_parameter(). */
    int (*generate_params)(R_CR *crypto, R_PKEY **params);

    /** @see R_CR_random_seed(). */
    int (*random_seed)(R_CR *crypto, unsigned char *bytes,
        unsigned int len);

    /** @see R_CR_random_bytes(). */
    int (*gen_rand)(R_CR *crypto, unsigned int len,
        unsigned char *out, unsigned int *olen);
};

Data Fields

int(* ctx_new )(R_LIB_CTX *lib_ctx, R_RES_FLAG flag, R_CR_CTX **ctx)
int(* ctx_free )(R_CR_CTX *ctx)
int(* crypto_new )(R_CR_CTX *crypto_ctx, int alg_type, int alg_id, int alg_sub, R_CR **crypto)
int(* crypto_dup )(R_CR *crypto, R_CR **new_crypto)
int(* crypto_free )(R_CR *crypto)
int(* crypto_get_errinfo )(R_CR *crypto, int what, void **data)
int(* crypto_getinfo )(R_CR *crypto, int id, void **param)
int(* crypto_setinfo )(R_CR *crypto, int id, void *param)
int(* encrypt_init )(R_CR *crypto, R_SKEY *key, R_ITEM *iv)
int(* encrypt )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
int(* encrypt_update )(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
int(* encrypt_final )(R_CR *crypto, unsigned char *out, unsigned int *olen)
int(* decrypt_init )(R_CR *crypto, R_SKEY *key, R_ITEM *iv)
int(* decrypt )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
int(* decrypt_update )(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
int(* decrypt_final )(R_CR *crypto, unsigned char *out, unsigned int *olen)
int(* sign_init )(R_CR *crypto, R_PKEY *key)
int(* sign )(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
int(* sign_update )(R_CR *crypto, unsigned char *data, unsigned int data_len)
int(* sign_final )(R_CR *crypto, unsigned char *out, unsigned int *out_len)
int(* verify_init )(R_CR *crypto, R_PKEY *key)
int(* verify )(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *signature, unsigned int slen, int *result)
int(* verify_update )(R_CR *crypto, unsigned char *data, unsigned int data_len)
int(* verify_final )(R_CR *crypto, unsigned char *signature, unsigned int sig_len, int *result)
int(* asym_encrypt_init )(R_CR *crypto, R_PKEY *key)
int(* asym_encrypt )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
int(* asym_decrypt_init )(R_CR *crypto, R_PKEY *key)
int(* asym_decrypt )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
int(* digest_init )(R_CR *crypto)
int(* digest )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
int(* digest_update )(R_CR *crypto, unsigned char *data, unsigned int data_len)
int(* digest_final )(R_CR *crypto, unsigned char *out, unsigned int *olen)
int(* mac_init )(R_CR *crypto, R_SKEY *key)
int(* mac )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *olen)
int(* mac_update )(R_CR *crypto, unsigned char *data, unsigned int data_len)
int(* mac_final )(R_CR *crypto, unsigned char *out, unsigned int *olen)
int(* verify_mac_init )(R_CR *crypto, R_SKEY *key)
int(* verify_mac )(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *mac, unsigned int mac_len, int *result)
int(* verify_mac_update )(R_CR *crypto, unsigned char *data, unsigned int data_len)
int(* verify_mac_final )(R_CR *crypto, unsigned char *mac, unsigned int mac_len, int *result)
int(* key_exchange_init )(R_CR *crypto, R_PKEY *key)
int(* key_exchange_phase_1 )(R_CR *crypto, unsigned char *out, unsigned int *olen)
int(* key_exchange_phase_2 )(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
int(* generate_key_init )(R_CR *crypto)
int(* generate_key )(R_CR *crypto, R_PKEY **key)
int(* generate_params_init )(R_CR *crypto)
int(* generate_params )(R_CR *crypto, R_PKEY **params)
int(* random_seed )(R_CR *crypto, unsigned char *bytes, unsigned int len)
int(* gen_rand )(R_CR *crypto, unsigned int len, unsigned char *out, unsigned int *olen)

Field Documentation

int(* asym_decrypt)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_asym_decrypt().

int(* asym_decrypt_init)(R_CR *crypto, R_PKEY *key)
 

See also:
R_CR_asym_decrypt_init().

int(* asym_encrypt)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_asym_encrypt().

int(* asym_encrypt_init)(R_CR *crypto, R_PKEY *key)
 

See also:
R_CR_asym_encrypt_init().

int(* crypto_dup)(R_CR *crypto, R_CR **new_crypto)
 

See also:
R_CR_dup().

int(* crypto_free)(R_CR *crypto)
 

See also:
R_CR_free().

int(* crypto_get_errinfo)(R_CR *crypto, int what, void **data)
 

See also:
R_CR_get_error(), R_CR_get_reason(), R_CR_get_detail(), R_CR_get_function(), R_CR_get_line(), R_CR_get_file(), R_CR_get_error_string(), R_CR_get_reason_string(), R_CR_get_detail_string() and R_CR_get_function_string().

int(* crypto_getinfo)(R_CR *crypto, int id, void **param)
 

See also:
R_CR_set_info().

int(* crypto_new)(R_CR_CTX *crypto_ctx, int alg_type, int alg_id, int alg_sub, R_CR **crypto)
 

See also:
R_CR_new().

int(* crypto_setinfo)(R_CR *crypto, int id, void *param)
 

See also:
R_CR_get_info().

int(* ctx_free)(R_CR_CTX *ctx)
 

See also:
R_CR_CTX_free().

int(* ctx_new)(R_LIB_CTX *lib_ctx, R_RES_FLAG flag, R_CR_CTX **ctx)
 

See also:
R_CR_CTX_new().

int(* decrypt)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_decrypt().

int(* decrypt_final)(R_CR *crypto, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_decrypt_final().

int(* decrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv)
 

See also:
R_CR_decrypt_init().

int(* decrypt_update)(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_decrypt_update().

int(* digest)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_digest().

int(* digest_final)(R_CR *crypto, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_digest_final().

int(* digest_init)(R_CR *crypto)
 

See also:
R_CR_digest_init().

int(* digest_update)(R_CR *crypto, unsigned char *data, unsigned int data_len)
 

See also:
R_CR_digest_update().

int(* encrypt)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_encrypt().

int(* encrypt_final)(R_CR *crypto, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_encrypt_final().

int(* encrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv)
 

See also:
R_CR_encrypt_init().

int(* encrypt_update)(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_encrypt_update().

int(* gen_rand)(R_CR *crypto, unsigned int len, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_random_bytes().

int(* generate_key)(R_CR *crypto, R_PKEY **key)
 

See also:
R_CR_generate_key().

int(* generate_key_init)(R_CR *crypto)
 

See also:
R_CR_generate_key_init().

int(* generate_params)(R_CR *crypto, R_PKEY **params)
 

See also:
R_CR_generate_parameter().

int(* generate_params_init)(R_CR *crypto)
 

See also:
R_CR_generate_parameter_init().

int(* key_exchange_init)(R_CR *crypto, R_PKEY *key)
 

See also:
R_CR_key_exchange_init().

int(* key_exchange_phase_1)(R_CR *crypto, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_key_exchange_phase_1().

int(* key_exchange_phase_2)(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int * olen)
 

See also:
R_CR_key_exchange_phase_2().

int(* mac)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_mac().

int(* mac_final)(R_CR *crypto, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_mac_final().

int(* mac_init)(R_CR *crypto, R_SKEY *key)
 

See also:
R_CR_mac_init().

int(* mac_update)(R_CR *crypto, unsigned char *data, unsigned int data_len)
 

See also:
R_CR_mac_update().

int(* random_seed)(R_CR *crypto, unsigned char *bytes, unsigned int len)
 

See also:
R_CR_random_seed().

int(* sign)(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *out, unsigned int *olen)
 

See also:
R_CR_sign().

int(* sign_final)(R_CR *crypto,unsigned char *out, unsigned int *out_len)
 

See also:
R_CR_sign_final().

int(* sign_init)(R_CR *crypto, R_PKEY *key)
 

See also:
R_CR_sign_init().

int(* sign_update)(R_CR *crypto, unsigned char *data, unsigned int data_len)
 

See also:
R_CR_sign_update().

int(* verify)(R_CR *crypto, unsigned char *data, unsigned int dlen, unsigned char *signature, unsigned int slen, int *result)
 

See also:
R_CR_verify().

int(* verify_final)(R_CR *crypto, unsigned char *signature, unsigned int sig_len, int *result)
 

See also:
R_CR_verify_final().

int(* verify_init)(R_CR *crypto, R_PKEY *key)
 

See also:
R_CR_verify_init().

int(* verify_mac)(R_CR *crypto, unsigned char *data, unsigned int data_len, unsigned char *mac, unsigned int mac_len, int *result)
 

See also:
R_CR_verify_mac().

int(* verify_mac_final)(R_CR *crypto, unsigned char *mac, unsigned int mac_len, int *result)
 

See also:
R_CR_verify_mac_final().

int(* verify_mac_init)(R_CR *crypto, R_SKEY *key)
 

See also:
R_CR_verify_mac_init().

int(* verify_mac_update)(R_CR *crypto, unsigned char *data, unsigned int data_len)
 

See also:
R_CR_verify_mac_update().

int(* verify_update)(R_CR *crypto, unsigned char *data, unsigned int data_len)
 

See also:
R_CR_verify_update().


Copyright (c) 1999-2002 RSA Security Inc. All rights reserved. 061-001005-150-001-000-3768 - 1.5