RSA BSAFE Micro Edition Suite

Streamlined security for mobile and embedded devices

Search  Print

cryp_meth.h

Go to the documentation of this file.
00001 /* $Id: cryp_meth.h,v 1.22 2005/06/23 02:15:53 jmckee Exp $ */
00002 /*
00003  * Copyright (C) 1998-2003 RSA Security Inc. All rights reserved.
00004  *
00005  * This work contains proprietary information of RSA Security.
00006  * Distribution is limited to authorized licensees of RSA
00007  * Security. Any unauthorized reproduction, distribution or
00008  * modification of this work is strictly prohibited.
00009  */
00010 
00017 #ifndef HEADER_COMMON_CRYP_METH_H
00018 #define HEADER_COMMON_CRYP_METH_H
00019 
00020 #ifdef  __cplusplus
00021 extern "C" {
00022 #endif
00023 
00024 #include "cryp_mod.h"
00025 
00037 struct r_cr_method_st
00038 {
00040     int (*ctx_new)(R_LIB_CTX *lib_ctx, R_RES_FLAG flag, R_CR_CTX **ctx);
00041 
00043     int (*ctx_free)(R_CR_CTX *ctx);
00044 
00046     int (*crypto_new)(R_CR_CTX *crypto_ctx, int alg_type, int alg_id,
00047                 int alg_sub, R_CR **crypto);
00048 
00050     int (*crypto_dup)(R_CR *crypto, R_CR **new_crypto);
00051 
00053     int (*crypto_free)(R_CR *crypto);
00054 
00061     int (*crypto_get_errinfo)(R_CR *crypto, int what, void **data);
00062 
00064     int (*crypto_getinfo)(R_CR *crypto, int id, void **param);
00065 
00067     int (*crypto_setinfo)(R_CR *crypto, int id, void *param);
00068 
00070     int (*encrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv);
00071 
00073     int (*encrypt)(R_CR *crypto, unsigned char *data,
00074         unsigned int data_len, unsigned char *out,
00075         unsigned int *out_len);
00076 
00078     int (*encrypt_update)(R_CR *crypto, unsigned char *data,
00079         unsigned int dlen, unsigned char *out, unsigned int *olen);
00080 
00082     int (*encrypt_final)(R_CR *crypto, unsigned char *out,
00083         unsigned int *olen);
00084 
00086     int (*decrypt_init)(R_CR *crypto, R_SKEY *key, R_ITEM *iv);
00087 
00089     int (*decrypt)(R_CR *crypto, unsigned char *data,
00090         unsigned int data_len, unsigned char *out,
00091         unsigned int *out_len);
00092 
00094     int (*decrypt_update)(R_CR *crypto, unsigned char *data,
00095         unsigned int dlen, unsigned char *out, unsigned int *olen);
00096 
00098     int (*decrypt_final)(R_CR *crypto, unsigned char *out,
00099         unsigned int *olen);
00100 
00102     int (*sign_init)(R_CR *crypto, R_PKEY *key);
00103 
00105     int (*sign)(R_CR *crypto, unsigned char *data,
00106         unsigned int dlen, unsigned char *out, unsigned int *olen);
00107 
00109     int (*sign_update)(R_CR *crypto, unsigned char *data,
00110         unsigned int data_len);
00111 
00113     int (*sign_final)(R_CR *crypto,unsigned char *out,
00114         unsigned int *out_len);
00115 
00117     int (*verify_init)(R_CR *crypto, R_PKEY *key);
00118 
00120     int (*verify)(R_CR *crypto, unsigned char *data,
00121         unsigned int dlen, unsigned char *signature,
00122         unsigned int slen, int *result);
00123 
00125     int (*verify_update)(R_CR *crypto, unsigned char *data,
00126         unsigned int data_len);
00127 
00129     int (*verify_final)(R_CR *crypto, unsigned char *signature,
00130         unsigned int sig_len, int *result);
00131 
00133     int (*asym_encrypt_init)(R_CR *crypto, R_PKEY *key);
00134 
00136     int (*asym_encrypt)(R_CR *crypto, unsigned char *data,
00137         unsigned int data_len, unsigned char *out,
00138         unsigned int *out_len);
00139 
00141     int (*asym_decrypt_init)(R_CR *crypto, R_PKEY *key);
00142 
00144     int (*asym_decrypt)(R_CR *crypto, unsigned char *data,
00145         unsigned int data_len, unsigned char *out,
00146         unsigned int *out_len);
00147 
00149     int (*digest_init)(R_CR *crypto);
00150 
00152     int (*digest)(R_CR *crypto, unsigned char *data,
00153         unsigned int data_len, unsigned char *out,
00154         unsigned int *out_len);
00155 
00157     int (*digest_update)(R_CR *crypto, unsigned char *data,
00158         unsigned int data_len);
00159 
00161     int (*digest_final)(R_CR *crypto, unsigned char *out,
00162         unsigned int *olen);
00163 
00165     int (*mac_init)(R_CR *crypto, R_SKEY *key);
00166 
00168     int (*mac)(R_CR *crypto, unsigned char *data,
00169         unsigned int data_len, unsigned char *out,
00170         unsigned int *olen);
00171 
00173     int (*mac_update)(R_CR *crypto, unsigned char *data,
00174         unsigned int data_len);
00175 
00177     int (*mac_final)(R_CR *crypto, unsigned char *out,
00178         unsigned int *olen);
00179 
00181         int (*verify_mac_init)(R_CR *crypto, R_SKEY *key);
00182 
00184     int (*verify_mac)(R_CR *crypto, unsigned char *data,
00185         unsigned int data_len, unsigned char *mac,
00186         unsigned int mac_len, int *result);
00187 
00189     int (*verify_mac_update)(R_CR *crypto, unsigned char *data,
00190         unsigned int data_len);
00191 
00193     int (*verify_mac_final)(R_CR *crypto, unsigned char *mac,
00194         unsigned int mac_len, int *result);
00195 
00201     int (*key_exchange_init)(R_CR *crypto, R_PKEY *key);
00202 
00208     int (*key_exchange_phase_1)(R_CR *crypto, unsigned char *out,
00209         unsigned int *olen);
00210 
00216     int (*key_exchange_phase_2)(R_CR *crypto, unsigned char *data,
00217         unsigned int dlen, unsigned char *out, unsigned int * olen);
00218 
00220     int (*generate_key_init)(R_CR *crypto);
00221 
00223     int (*generate_key)(R_CR *crypto, R_PKEY **key);
00224 
00226     int (*generate_params_init)(R_CR *crypto);
00227 
00229     int (*generate_params)(R_CR *crypto, R_PKEY **params);
00230 
00232     int (*random_seed)(R_CR *crypto, unsigned char *bytes,
00233         unsigned int len);
00234 
00236     int (*gen_rand)(R_CR *crypto, unsigned int len,
00237         unsigned char *out, unsigned int *olen);
00238 };
00239 
00240 
00246 int R_CDECL r_crm_not_implemented(void);
00247 
00248 int R_CDECL r_crm_ctx_new(R_LIB_CTX *lib_ctx, R_RES_FLAG flag, R_CR_CTX **crypto_ctx);
00249 int R_CDECL r_crm_ctx_free(R_CR_CTX *crypto_ctx);
00250 
00251 int R_CDECL r_crm_new(R_CR_CTX *crypto_ctx, R_CR_ALG_TYPE alg_type, R_CR_ALG_ID alg_id,
00252     R_CR_ALG_SUB alg_sub, R_CR **crypto);
00253 int R_CDECL r_crm_dup(R_CR *crypto, R_CR **new_crypto);
00254 int R_CDECL r_crm_free(R_CR *crypto);
00255 
00256 int R_CDECL r_crm_digest_init(R_CR *crypto);
00257 int R_CDECL r_crm_digest(R_CR *crypto, unsigned char *data,
00258     unsigned int data_len, unsigned char *out,
00259     unsigned int *out_len);
00260 int R_CDECL r_crm_digest_update(R_CR *crypto, unsigned char *data,
00261     unsigned int data_len);
00262 int R_CDECL r_crm_digest_final(R_CR *crypto, unsigned char *out,
00263     unsigned int *olen);
00264 
00265 int R_CDECL r_crm_mac_init(R_CR *crypto, R_SKEY *key);
00266 int R_CDECL r_crm_mac(R_CR *crypto, unsigned char *data,
00267     unsigned int data_len, unsigned char *out,
00268     unsigned int *olen);
00269 int R_CDECL r_crm_mac_update(R_CR *crypto, unsigned char *data,
00270     unsigned int data_len);
00271 int R_CDECL r_crm_mac_final(R_CR *crypto, unsigned char *out,
00272     unsigned int *olen);
00273 
00274 int R_CDECL r_crm_verify_mac(R_CR *crypto, unsigned char *data,
00275     unsigned int data_len, unsigned char *mac, unsigned int mac_len,
00276     int *result);
00277 int R_CDECL r_crm_verify_mac_update(R_CR *crypto, unsigned char *data,
00278     unsigned int data_len);
00279 int R_CDECL r_crm_verify_mac_final(R_CR *crypto, unsigned char *mac,
00280     unsigned int mac_len, int *result);
00281 
00282 int R_CDECL r_crm_encrypt_init(R_CR *crypto, R_SKEY *key, R_ITEM *iv);
00283 int R_CDECL r_crm_decrypt_init(R_CR *crypto, R_SKEY *key, R_ITEM *iv);
00284 int R_CDECL r_crm_cipher(R_CR *crypto, unsigned char *data,
00285     unsigned int data_len, unsigned char *out, unsigned int *out_len);
00286 int R_CDECL r_crm_cipher_update(R_CR *crypto, unsigned char *data,
00287     unsigned int dlen, unsigned char *out, unsigned int *olen);
00288 int R_CDECL r_crm_cipher_final(R_CR *crypto, unsigned char *out,unsigned int *olen);
00289 
00290 int R_CDECL r_crm_asym_init(R_CR *crypto, R_PKEY *key);
00291 int R_CDECL r_crm_asym_enc(R_CR *crypto, unsigned char *data,
00292     unsigned int data_len, unsigned char *out,
00293     unsigned int *out_len);
00294 int R_CDECL r_crm_asym_dec(R_CR *crypto, unsigned char *data,
00295     unsigned int data_len, unsigned char *out, unsigned int *out_len);
00296 
00297 int R_CDECL r_crm_ke_init(R_CR *crypto, R_PKEY *key);
00298 int R_CDECL r_crm_ke_phase_1(R_CR *crypto, unsigned char *out,
00299     unsigned int *olen);
00300 int R_CDECL r_crm_ke_phase_2(R_CR *crypto, unsigned char *data,
00301     unsigned int dlen, unsigned char *out, unsigned int * olen);
00302 
00303 int R_CDECL r_crm_kgen_init(R_CR *crypto);
00304 int R_CDECL r_crm_generate_key(R_CR *crypto, R_PKEY **key);
00305 
00306 int R_CDECL r_crm_pgen_init(R_CR *crypto);
00307 int R_CDECL r_crm_generate_params(R_CR *crypto, R_PKEY **params);
00308 
00309 int R_CDECL r_crm_sign_vfy_init(R_CR *crypto, R_PKEY *key);
00310 int R_CDECL r_crm_sign(R_CR *crypto, unsigned char *data, unsigned int dlen,
00311     unsigned char *out, unsigned int *olen);
00312 int R_CDECL r_crm_sign_update(R_CR *crypto, unsigned char *data, unsigned int data_len);
00313 int R_CDECL r_crm_sign_final(R_CR *crypto,unsigned char *out, unsigned int *out_len);
00314 int R_CDECL r_crm_verify(R_CR *crypto, unsigned char *data, unsigned int dlen,
00315     unsigned char *signature, unsigned int slen, int *result);
00316 int R_CDECL r_crm_verify_update(R_CR *crypto, unsigned char *data,
00317     unsigned int data_len);
00318 int R_CDECL r_crm_verify_final(R_CR *crypto, unsigned char *signature,
00319     unsigned int sig_len, int *result);
00320 
00321 int R_CDECL r_crm_random_seed(R_CR *crypto, unsigned char *seed, unsigned int len);
00322 int R_CDECL r_crm_gen_rand(R_CR *crypto, unsigned int len,
00323     unsigned char *out, unsigned int *olen);
00324 
00325 int R_CDECL r_crm_get_errinfo(R_CR *crypto, int what, void **data);
00326 
00327 int R_CDECL r_crm_get_info(R_CR *crypto, int id, void **param);
00328 int R_CDECL r_crm_set_info(R_CR *crypto, int id, void *param);
00329 
00330 int R_CDECL r_crm_function_lookup(R_CR *crypto, R_CR_IMP_METHOD *table,
00331     R_CR_IMP_METHOD **imp_meth);
00332 
00333 
00334 #ifdef  __cplusplus
00335 }
00336 #endif
00337 
00338 #endif /* HEADER_COMMON_CRYP_METH_H */

Copyright (c) 1999-2005 RSA Security Inc. All rights reserved. 072-001001-2100-001-000 - 2.1