GOST public key algorithm ENGINE donated to the OpenSSL by Cryptocom.
[openssl.git] / engines / ccgost / crypt.h
1 /**********************************************************************
2  *                        gost_crypt.h                                *
3  *             Copyright (c) 2005-2006 Cryptocom LTD                  *
4  *       This file is distributed under the same license as OpenSSL   *
5  *                                                                    *
6  *          Declarations for GOST 28147-89 encryption algorithm       *
7  *            OpenSSL 0.9.9 libraries required                        *
8  **********************************************************************/            
9 #ifndef GOST_CRYPT_H
10 #define GOST_CRYPT_H
11 #include <unistd.h>
12 #include <openssl/err.h>
13 #include <openssl/evp.h>
14 #include "gost89.h"
15 #ifdef __cplusplus
16  extern "C" {
17 #endif
18 /* Cipher context used for EVP_CIPHER operation */
19 struct ossl_gost_cipher_ctx {
20         int paramNID;
21         off_t count;
22         int key_meshing;
23         gost_ctx cctx;
24 };      
25 /* Structure to map parameter NID to S-block */
26 struct gost_cipher_info {
27         int nid;
28         gost_subst_block *sblock;
29         int key_meshing;
30 };
31 #ifdef USE_SSL
32 /* Context for MAC */
33 struct ossl_gost_imit_ctx {
34         gost_ctx cctx;
35         unsigned char buffer[8];
36         unsigned char partial_block[8];
37         off_t count;
38         int key_meshing;
39         int bytes_left;
40         int key_set;
41 };      
42 #endif
43 /* Table which maps parameter NID to S-blocks */
44 extern struct gost_cipher_info gost_cipher_list[];
45 /* Find encryption params from ASN1_OBJECT */
46 const struct gost_cipher_info *get_encryption_params(ASN1_OBJECT *obj);
47 /* Implementation of GOST 28147-89 cipher in CFB and CNT modes */
48 extern EVP_CIPHER cipher_gost;
49 #ifdef USE_SSL
50 #define EVP_MD_FLAG_NEEDS_KEY 0x20
51 #define EVP_MD_CTRL_GET_TLS_MAC_KEY_LENGTH (EVP_MD_CTRL_ALG_CTRL+1)
52 #define EVP_MD_CTRL_SET_KEY (EVP_MD_CTRL_ALG_CTRL+2)
53 /* Ciphers and MACs specific for GOST TLS draft */
54 extern EVP_CIPHER cipher_gost_vizircfb;
55 extern EVP_CIPHER cipher_gost_cpacnt;
56 extern EVP_MD imit_gost_vizir;
57 extern EVP_MD imit_gost_cpa;
58 #endif
59 #ifdef __cplusplus
60   };
61 #endif
62 #endif