void enc_gost(char *set_hash,char *in,char *out,int n_blocks){ gost_ctx *c=(gost_ctx *)malloc(sizeof(gost_ctx)); gost_subst_block *b=NULL; gost_init(c,b); gost_key(c,(byte *)set_hash); gost_enc(c,(byte *)in,(byte *)out,n_blocks); free(c);}
int keyWrapCryptoPro(gost_ctx *ctx,const unsigned char *keyExchangeKey, const unsigned char *ukm, const unsigned char *sessionKey, unsigned char *wrappedKey) { unsigned char kek_ukm[32]; keyDiversifyCryptoPro(ctx,keyExchangeKey,ukm,kek_ukm); gost_key(ctx,kek_ukm); memcpy(wrappedKey,ukm,8); gost_enc(ctx,sessionKey,wrappedKey+8,4); gost_mac_iv(ctx,32,ukm,sessionKey,32,wrappedKey+40); return 1; }