summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authormiod <>2014-11-09 19:27:29 +0000
committermiod <>2014-11-09 19:27:29 +0000
commitf2c42fa634a7a6cdbdccd6ae03f6cb947aaad95e (patch)
tree62d2f50ea8c6cdfc769ff562ca03d42f6ddc5ebb /src/lib
parent73a7816209b98b60e458e2975460de46215d27cf (diff)
downloadopenbsd-f2c42fa634a7a6cdbdccd6ae03f6cb947aaad95e.tar.gz
openbsd-f2c42fa634a7a6cdbdccd6ae03f6cb947aaad95e.tar.bz2
openbsd-f2c42fa634a7a6cdbdccd6ae03f6cb947aaad95e.zip
Rename internal yet public key_{un,}wrap_crypto_pro symbols by prepending a
`gost_' prefix to them, so that we do not pollute the global namespace too much.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/gost/gost89_keywrap.c25
-rw-r--r--src/lib/libcrypto/gost/gost_locl.h31
-rw-r--r--src/lib/libcrypto/gost/gostr341001_pmeth.c6
-rw-r--r--src/lib/libssl/src/crypto/gost/gost89_keywrap.c25
-rw-r--r--src/lib/libssl/src/crypto/gost/gost_locl.h31
-rw-r--r--src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c6
6 files changed, 64 insertions, 60 deletions
diff --git a/src/lib/libcrypto/gost/gost89_keywrap.c b/src/lib/libcrypto/gost/gost89_keywrap.c
index 8f641b6cef..fa7698d3f7 100644
--- a/src/lib/libcrypto/gost/gost89_keywrap.c
+++ b/src/lib/libcrypto/gost/gost89_keywrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gost89_keywrap.c,v 1.1 2014/11/09 19:17:13 miod Exp $ */ 1/* $OpenBSD: gost89_keywrap.c,v 1.2 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -59,14 +59,15 @@
59 59
60#include "gost_locl.h" 60#include "gost_locl.h"
61 61
62static void key_diversify_crypto_pro(GOST2814789_KEY * ctx, const unsigned char *inputKey, 62static void
63 const unsigned char *ukm, unsigned char *outputKey) 63key_diversify_crypto_pro(GOST2814789_KEY *ctx, const unsigned char *inputKey,
64 const unsigned char *ukm, unsigned char *outputKey)
64{ 65{
65
66 unsigned long k, s1, s2; 66 unsigned long k, s1, s2;
67 int i, mask; 67 int i, mask;
68 unsigned char S[8]; 68 unsigned char S[8];
69 unsigned char *p; 69 unsigned char *p;
70
70 memcpy(outputKey, inputKey, 32); 71 memcpy(outputKey, inputKey, 32);
71 for (i = 0; i < 8; i++) { 72 for (i = 0; i < 8; i++) {
72 /* Make array of integers from key */ 73 /* Make array of integers from key */
@@ -86,13 +87,15 @@ static void key_diversify_crypto_pro(GOST2814789_KEY * ctx, const unsigned char
86 l2c (s2, p); 87 l2c (s2, p);
87 Gost2814789_set_key(ctx, outputKey, 256); 88 Gost2814789_set_key(ctx, outputKey, 256);
88 mask = 0; 89 mask = 0;
89 Gost2814789_cfb64_encrypt(outputKey, outputKey, 32, ctx, S, &mask, 1); 90 Gost2814789_cfb64_encrypt(outputKey, outputKey, 32, ctx, S,
91 &mask, 1);
90 } 92 }
91} 93}
92 94
93int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 95int
94 const unsigned char *ukm, const unsigned char *sessionKey, 96gost_key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
95 unsigned char *wrappedKey) 97 const unsigned char *ukm, const unsigned char *sessionKey,
98 unsigned char *wrappedKey)
96{ 99{
97 GOST2814789_KEY ctx; 100 GOST2814789_KEY ctx;
98 unsigned char kek_ukm[32]; 101 unsigned char kek_ukm[32];
@@ -109,9 +112,9 @@ int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
109 return 1; 112 return 1;
110} 113}
111 114
112int key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 115int
113 const unsigned char *wrappedKey, 116gost_key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
114 unsigned char *sessionKey) 117 const unsigned char *wrappedKey, unsigned char *sessionKey)
115{ 118{
116 unsigned char kek_ukm[32], cek_mac[4]; 119 unsigned char kek_ukm[32], cek_mac[4];
117 GOST2814789_KEY ctx; 120 GOST2814789_KEY ctx;
diff --git a/src/lib/libcrypto/gost/gost_locl.h b/src/lib/libcrypto/gost/gost_locl.h
index b616005dc5..202ba39688 100644
--- a/src/lib/libcrypto/gost/gost_locl.h
+++ b/src/lib/libcrypto/gost/gost_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: gost_locl.h,v 1.1 2014/11/09 19:17:13 miod Exp $ */ 1/* $OpenBSD: gost_locl.h,v 1.2 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -88,22 +88,21 @@ extern void Gost2814789_decrypt(const unsigned char *in, unsigned char *out,
88extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key); 88extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key);
89 89
90/* GOST 28147-89 key wrapping */ 90/* GOST 28147-89 key wrapping */
91extern int key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 91extern int gost_key_unwrap_crypto_pro(int nid,
92 const unsigned char *wrappedKey, 92 const unsigned char *keyExchangeKey, const unsigned char *wrappedKey,
93 unsigned char *sessionKey); 93 unsigned char *sessionKey);
94extern int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 94extern int gost_key_wrap_crypto_pro(int nid,
95 const unsigned char *ukm, const unsigned char *sessionKey, 95 const unsigned char *keyExchangeKey, const unsigned char *ukm,
96 unsigned char *wrappedKey); 96 const unsigned char *sessionKey, unsigned char *wrappedKey);
97/* Pkey part */ 97/* Pkey part */
98extern int gost2001_compute_public(GOST_KEY * ec); 98extern int gost2001_compute_public(GOST_KEY *ec);
99extern ECDSA_SIG *gost2001_do_sign(BIGNUM * md, GOST_KEY * eckey); 99extern ECDSA_SIG *gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey);
100extern int gost2001_do_verify(BIGNUM * md, ECDSA_SIG * sig, GOST_KEY * ec); 100extern int gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec);
101extern int gost2001_keygen(GOST_KEY * ec); 101extern int gost2001_keygen(GOST_KEY *ec);
102extern void VKO_compute_key(BIGNUM * X, BIGNUM * Y, 102extern void VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey,
103 const GOST_KEY * pkey, GOST_KEY * priv_key, 103 GOST_KEY *priv_key, const BIGNUM *ukm);
104 const BIGNUM * ukm); 104extern BIGNUM *GOST_le2bn(const unsigned char *buf, size_t len, BIGNUM *bn);
105extern BIGNUM *GOST_le2bn(const unsigned char * buf, size_t len, BIGNUM * bn); 105extern int GOST_bn2le(BIGNUM *bn, unsigned char *buf, int len);
106extern int GOST_bn2le(BIGNUM * bn, unsigned char * buf, int len);
107 106
108/* GOST R 34.10 parameters */ 107/* GOST R 34.10 parameters */
109extern int GostR3410_get_md_digest(int nid); 108extern int GostR3410_get_md_digest(int nid);
diff --git a/src/lib/libcrypto/gost/gostr341001_pmeth.c b/src/lib/libcrypto/gost/gostr341001_pmeth.c
index 910c0b9c45..c7001fc1fa 100644
--- a/src/lib/libcrypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libcrypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.2 2014/11/09 19:24:30 miod Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.3 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -396,7 +396,7 @@ int pkey_gost01_decrypt(EVP_PKEY_CTX * pctx, unsigned char *key,
396 OPENSSL_assert(gkt->key_info->imit->length == 4); 396 OPENSSL_assert(gkt->key_info->imit->length == 4);
397 memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4); 397 memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4);
398 gost01_VKO_key(peerkey, priv, wrappedKey, sharedKey); 398 gost01_VKO_key(peerkey, priv, wrappedKey, sharedKey);
399 if (!key_unwrap_crypto_pro(nid, sharedKey, wrappedKey, key)) { 399 if (!gost_key_unwrap_crypto_pro(nid, sharedKey, wrappedKey, key)) {
400 GOSTerr(GOST_F_PKEY_GOST01_DECRYPT, 400 GOSTerr(GOST_F_PKEY_GOST01_DECRYPT,
401 GOST_R_ERROR_COMPUTING_SHARED_KEY); 401 GOST_R_ERROR_COMPUTING_SHARED_KEY);
402 goto err; 402 goto err;
@@ -478,7 +478,7 @@ int pkey_gost01_encrypt(EVP_PKEY_CTX * pctx, unsigned char *out,
478 478
479 if (out) { 479 if (out) {
480 gost01_VKO_key(pubk, sec_key, ukm, shared_key); 480 gost01_VKO_key(pubk, sec_key, ukm, shared_key);
481 key_wrap_crypto_pro(nid, shared_key, ukm, key, crypted_key); 481 gost_key_wrap_crypto_pro(nid, shared_key, ukm, key, crypted_key);
482 } 482 }
483 gkt = GOST_KEY_TRANSPORT_new(); 483 gkt = GOST_KEY_TRANSPORT_new();
484 if (!gkt) { 484 if (!gkt) {
diff --git a/src/lib/libssl/src/crypto/gost/gost89_keywrap.c b/src/lib/libssl/src/crypto/gost/gost89_keywrap.c
index 8f641b6cef..fa7698d3f7 100644
--- a/src/lib/libssl/src/crypto/gost/gost89_keywrap.c
+++ b/src/lib/libssl/src/crypto/gost/gost89_keywrap.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gost89_keywrap.c,v 1.1 2014/11/09 19:17:13 miod Exp $ */ 1/* $OpenBSD: gost89_keywrap.c,v 1.2 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -59,14 +59,15 @@
59 59
60#include "gost_locl.h" 60#include "gost_locl.h"
61 61
62static void key_diversify_crypto_pro(GOST2814789_KEY * ctx, const unsigned char *inputKey, 62static void
63 const unsigned char *ukm, unsigned char *outputKey) 63key_diversify_crypto_pro(GOST2814789_KEY *ctx, const unsigned char *inputKey,
64 const unsigned char *ukm, unsigned char *outputKey)
64{ 65{
65
66 unsigned long k, s1, s2; 66 unsigned long k, s1, s2;
67 int i, mask; 67 int i, mask;
68 unsigned char S[8]; 68 unsigned char S[8];
69 unsigned char *p; 69 unsigned char *p;
70
70 memcpy(outputKey, inputKey, 32); 71 memcpy(outputKey, inputKey, 32);
71 for (i = 0; i < 8; i++) { 72 for (i = 0; i < 8; i++) {
72 /* Make array of integers from key */ 73 /* Make array of integers from key */
@@ -86,13 +87,15 @@ static void key_diversify_crypto_pro(GOST2814789_KEY * ctx, const unsigned char
86 l2c (s2, p); 87 l2c (s2, p);
87 Gost2814789_set_key(ctx, outputKey, 256); 88 Gost2814789_set_key(ctx, outputKey, 256);
88 mask = 0; 89 mask = 0;
89 Gost2814789_cfb64_encrypt(outputKey, outputKey, 32, ctx, S, &mask, 1); 90 Gost2814789_cfb64_encrypt(outputKey, outputKey, 32, ctx, S,
91 &mask, 1);
90 } 92 }
91} 93}
92 94
93int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 95int
94 const unsigned char *ukm, const unsigned char *sessionKey, 96gost_key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
95 unsigned char *wrappedKey) 97 const unsigned char *ukm, const unsigned char *sessionKey,
98 unsigned char *wrappedKey)
96{ 99{
97 GOST2814789_KEY ctx; 100 GOST2814789_KEY ctx;
98 unsigned char kek_ukm[32]; 101 unsigned char kek_ukm[32];
@@ -109,9 +112,9 @@ int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
109 return 1; 112 return 1;
110} 113}
111 114
112int key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 115int
113 const unsigned char *wrappedKey, 116gost_key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey,
114 unsigned char *sessionKey) 117 const unsigned char *wrappedKey, unsigned char *sessionKey)
115{ 118{
116 unsigned char kek_ukm[32], cek_mac[4]; 119 unsigned char kek_ukm[32], cek_mac[4];
117 GOST2814789_KEY ctx; 120 GOST2814789_KEY ctx;
diff --git a/src/lib/libssl/src/crypto/gost/gost_locl.h b/src/lib/libssl/src/crypto/gost/gost_locl.h
index b616005dc5..202ba39688 100644
--- a/src/lib/libssl/src/crypto/gost/gost_locl.h
+++ b/src/lib/libssl/src/crypto/gost/gost_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: gost_locl.h,v 1.1 2014/11/09 19:17:13 miod Exp $ */ 1/* $OpenBSD: gost_locl.h,v 1.2 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -88,22 +88,21 @@ extern void Gost2814789_decrypt(const unsigned char *in, unsigned char *out,
88extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key); 88extern void Gost2814789_cryptopro_key_mesh(GOST2814789_KEY *key);
89 89
90/* GOST 28147-89 key wrapping */ 90/* GOST 28147-89 key wrapping */
91extern int key_unwrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 91extern int gost_key_unwrap_crypto_pro(int nid,
92 const unsigned char *wrappedKey, 92 const unsigned char *keyExchangeKey, const unsigned char *wrappedKey,
93 unsigned char *sessionKey); 93 unsigned char *sessionKey);
94extern int key_wrap_crypto_pro(int nid, const unsigned char *keyExchangeKey, 94extern int gost_key_wrap_crypto_pro(int nid,
95 const unsigned char *ukm, const unsigned char *sessionKey, 95 const unsigned char *keyExchangeKey, const unsigned char *ukm,
96 unsigned char *wrappedKey); 96 const unsigned char *sessionKey, unsigned char *wrappedKey);
97/* Pkey part */ 97/* Pkey part */
98extern int gost2001_compute_public(GOST_KEY * ec); 98extern int gost2001_compute_public(GOST_KEY *ec);
99extern ECDSA_SIG *gost2001_do_sign(BIGNUM * md, GOST_KEY * eckey); 99extern ECDSA_SIG *gost2001_do_sign(BIGNUM *md, GOST_KEY *eckey);
100extern int gost2001_do_verify(BIGNUM * md, ECDSA_SIG * sig, GOST_KEY * ec); 100extern int gost2001_do_verify(BIGNUM *md, ECDSA_SIG *sig, GOST_KEY *ec);
101extern int gost2001_keygen(GOST_KEY * ec); 101extern int gost2001_keygen(GOST_KEY *ec);
102extern void VKO_compute_key(BIGNUM * X, BIGNUM * Y, 102extern void VKO_compute_key(BIGNUM *X, BIGNUM *Y, const GOST_KEY *pkey,
103 const GOST_KEY * pkey, GOST_KEY * priv_key, 103 GOST_KEY *priv_key, const BIGNUM *ukm);
104 const BIGNUM * ukm); 104extern BIGNUM *GOST_le2bn(const unsigned char *buf, size_t len, BIGNUM *bn);
105extern BIGNUM *GOST_le2bn(const unsigned char * buf, size_t len, BIGNUM * bn); 105extern int GOST_bn2le(BIGNUM *bn, unsigned char *buf, int len);
106extern int GOST_bn2le(BIGNUM * bn, unsigned char * buf, int len);
107 106
108/* GOST R 34.10 parameters */ 107/* GOST R 34.10 parameters */
109extern int GostR3410_get_md_digest(int nid); 108extern int GostR3410_get_md_digest(int nid);
diff --git a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
index 910c0b9c45..c7001fc1fa 100644
--- a/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
+++ b/src/lib/libssl/src/crypto/gost/gostr341001_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gostr341001_pmeth.c,v 1.2 2014/11/09 19:24:30 miod Exp $ */ 1/* $OpenBSD: gostr341001_pmeth.c,v 1.3 2014/11/09 19:27:29 miod Exp $ */
2/* 2/*
3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 3 * Copyright (c) 2014 Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
4 * Copyright (c) 2005-2006 Cryptocom LTD 4 * Copyright (c) 2005-2006 Cryptocom LTD
@@ -396,7 +396,7 @@ int pkey_gost01_decrypt(EVP_PKEY_CTX * pctx, unsigned char *key,
396 OPENSSL_assert(gkt->key_info->imit->length == 4); 396 OPENSSL_assert(gkt->key_info->imit->length == 4);
397 memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4); 397 memcpy(wrappedKey + 40, gkt->key_info->imit->data, 4);
398 gost01_VKO_key(peerkey, priv, wrappedKey, sharedKey); 398 gost01_VKO_key(peerkey, priv, wrappedKey, sharedKey);
399 if (!key_unwrap_crypto_pro(nid, sharedKey, wrappedKey, key)) { 399 if (!gost_key_unwrap_crypto_pro(nid, sharedKey, wrappedKey, key)) {
400 GOSTerr(GOST_F_PKEY_GOST01_DECRYPT, 400 GOSTerr(GOST_F_PKEY_GOST01_DECRYPT,
401 GOST_R_ERROR_COMPUTING_SHARED_KEY); 401 GOST_R_ERROR_COMPUTING_SHARED_KEY);
402 goto err; 402 goto err;
@@ -478,7 +478,7 @@ int pkey_gost01_encrypt(EVP_PKEY_CTX * pctx, unsigned char *out,
478 478
479 if (out) { 479 if (out) {
480 gost01_VKO_key(pubk, sec_key, ukm, shared_key); 480 gost01_VKO_key(pubk, sec_key, ukm, shared_key);
481 key_wrap_crypto_pro(nid, shared_key, ukm, key, crypted_key); 481 gost_key_wrap_crypto_pro(nid, shared_key, ukm, key, crypted_key);
482 } 482 }
483 gkt = GOST_KEY_TRANSPORT_new(); 483 gkt = GOST_KEY_TRANSPORT_new();
484 if (!gkt) { 484 if (!gkt) {