Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Side by Side Diff: openssl/engines/ccgost/gost89.h

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/engines/ccgost/gost2001_keyx.c ('k') | openssl/engines/ccgost/gost89.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /**********************************************************************
2 * gost89.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 * No OpenSSL libraries required to compile and use *
8 * this code *
9 **********************************************************************/
10 #ifndef GOST89_H
11 #define GOST89_H
12
13 /* Typedef for unsigned 32-bit integer */
14 #if __LONG_MAX__ > 2147483647L
15 typedef unsigned int u4;
16 #else
17 typedef unsigned long u4;
18 #endif
19 /* Typedef for unsigned 8-bit integer */
20 typedef unsigned char byte;
21
22 /* Internal representation of GOST substitution blocks */
23 typedef struct {
24 byte k8[16];
25 byte k7[16];
26 byte k6[16];
27 byte k5[16];
28 byte k4[16];
29 byte k3[16];
30 byte k2[16];
31 byte k1[16];
32 } gost_subst_block;
33
34
35 /* Cipher context includes key and preprocessed substitution block */
36 typedef struct {
37 u4 k[8];
38 /* Constant s-boxes -- set up in gost_init(). */
39 u4 k87[256],k65[256],k43[256],k21[256];
40 } gost_ctx;
41 /* Note: encrypt and decrypt expect full blocks--padding blocks is
42 caller's responsibility. All bulk encryption is done in
43 ECB mode by these calls. Other modes may be added easily
44 enough. */
45 /* Encrypt several full blocks in ECB mode */
46 void gost_enc(gost_ctx *ctx, const byte *clear,byte *cipher, int blocks);
47 /* Decrypt several full blocks in ECB mode */
48 void gost_dec(gost_ctx *ctx, const byte *cipher,byte *clear, int blocks);
49 /* Encrypts several full blocks in CFB mode using 8byte IV */
50 void gost_enc_cfb(gost_ctx *ctx,const byte *iv,const byte *clear,byte *cipher,in t blocks);
51 /* Decrypts several full blocks in CFB mode using 8byte IV */
52 void gost_dec_cfb(gost_ctx *ctx,const byte *iv,const byte *cipher,byte *clear,in t blocks);
53
54 /* Encrypt one block */
55 void gostcrypt(gost_ctx *c, const byte *in, byte *out);
56 /* Decrypt one block */
57 void gostdecrypt(gost_ctx *c, const byte *in,byte *out);
58 /* Set key into context */
59 void gost_key(gost_ctx *ctx, const byte *key);
60 /* Get key from context */
61 void gost_get_key(gost_ctx *ctx, byte *key);
62 /* Set S-blocks into context */
63 void gost_init(gost_ctx *ctx, const gost_subst_block *subst_block);
64 /* Clean up context */
65 void gost_destroy(gost_ctx *ctx);
66 /* Intermediate function used for calculate hash */
67 void gost_enc_with_key(gost_ctx *,byte *key,byte *inblock,byte *outblock);
68 /* Compute MAC of given length in bits from data */
69 int gost_mac(gost_ctx *ctx,int hmac_len,const unsigned char *data,
70 unsigned int data_len,unsigned char *hmac) ;
71 /* Compute MAC of given length in bits from data, using non-zero 8-byte
72 * IV (non-standard, for use in CryptoPro key transport only */
73 int gost_mac_iv(gost_ctx *ctx,int hmac_len,const unsigned char *iv,const unsigne d char *data,
74 unsigned int data_len,unsigned char *hmac) ;
75 /* Perform one step of MAC calculation like gostcrypt */
76 void mac_block(gost_ctx *c,byte *buffer,const byte *block);
77 /* Extracts MAC value from mac state buffer */
78 void get_mac(byte *buffer,int nbits,byte *out);
79 /* Implements cryptopro key meshing algorithm. Expect IV to be 8-byte size*/
80 void cryptopro_key_meshing(gost_ctx *ctx, unsigned char *iv);
81 /* Parameter sets specified in RFC 4357 */
82 extern gost_subst_block GostR3411_94_TestParamSet;
83 extern gost_subst_block GostR3411_94_CryptoProParamSet;
84 extern gost_subst_block Gost28147_TestParamSet;
85 extern gost_subst_block Gost28147_CryptoProParamSetA;
86 extern gost_subst_block Gost28147_CryptoProParamSetB;
87 extern gost_subst_block Gost28147_CryptoProParamSetC;
88 extern gost_subst_block Gost28147_CryptoProParamSetD;
89 extern const byte CryptoProKeyMeshingKey[];
90 #if __LONG_MAX__ > 2147483647L
91 typedef unsigned int word32;
92 #else
93 typedef unsigned long word32;
94 #endif
95
96 #endif
OLDNEW
« no previous file with comments | « openssl/engines/ccgost/gost2001_keyx.c ('k') | openssl/engines/ccgost/gost89.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698