]> www.wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
Merge pull request #14 from levitte/fix-getting-asn1-params
authorDmitry Belyavskiy <beldmit@users.noreply.github.com>
Wed, 2 Mar 2016 16:21:49 +0000 (19:21 +0300)
committerDmitry Belyavskiy <beldmit@users.noreply.github.com>
Wed, 2 Mar 2016 16:21:49 +0000 (19:21 +0300)
Fix getting asn1 params

gost_asn1.c
gost_crypt.c

index fb9792a7fbe5c9aad1eb028843b8269ae5c4eefb..bcfe73fa84cc344434b3f36f7501d4c7fab4599f 100644 (file)
 
 ASN1_NDEF_SEQUENCE(GOST_KEY_TRANSPORT) = {
     ASN1_SIMPLE(GOST_KEY_TRANSPORT, key_info, GOST_KEY_INFO),
-        ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info,
-                 GOST_KEY_AGREEMENT_INFO, 0)
+    ASN1_IMP(GOST_KEY_TRANSPORT, key_agreement_info,
+             GOST_KEY_AGREEMENT_INFO, 0)
 }
-
 ASN1_NDEF_SEQUENCE_END(GOST_KEY_TRANSPORT)
+IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT)
 
-    IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_TRANSPORT)
-
-    ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) =
+ASN1_NDEF_SEQUENCE(GOST_KEY_INFO) =
 {
     ASN1_SIMPLE(GOST_KEY_INFO, encrypted_key, ASN1_OCTET_STRING),
-        ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING)
-} ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO)
- IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO)
- ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) =
+    ASN1_SIMPLE(GOST_KEY_INFO, imit, ASN1_OCTET_STRING)
+}
+ASN1_NDEF_SEQUENCE_END(GOST_KEY_INFO)
+IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_INFO)
+
+ASN1_NDEF_SEQUENCE(GOST_KEY_AGREEMENT_INFO) =
 {
     ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, cipher, ASN1_OBJECT),
-        ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0),
-        ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING)
-} ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO)
- IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO)
- ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) =
+    ASN1_IMP_OPT(GOST_KEY_AGREEMENT_INFO, ephem_key, X509_PUBKEY, 0),
+    ASN1_SIMPLE(GOST_KEY_AGREEMENT_INFO, eph_iv, ASN1_OCTET_STRING)
+}
+ASN1_NDEF_SEQUENCE_END(GOST_KEY_AGREEMENT_INFO)
+IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_AGREEMENT_INFO)
+
+ASN1_NDEF_SEQUENCE(GOST_KEY_PARAMS) =
 {
-ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT),
-        ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT),
-        ASN1_OPT(GOST_KEY_PARAMS, cipher_params,
-                     ASN1_OBJECT),} ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS)
- IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS)
- ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) =
+    ASN1_SIMPLE(GOST_KEY_PARAMS, key_params, ASN1_OBJECT),
+    ASN1_SIMPLE(GOST_KEY_PARAMS, hash_params, ASN1_OBJECT),
+    ASN1_OPT(GOST_KEY_PARAMS, cipher_params, ASN1_OBJECT),
+}
+ASN1_NDEF_SEQUENCE_END(GOST_KEY_PARAMS)
+IMPLEMENT_ASN1_FUNCTIONS(GOST_KEY_PARAMS)
+
+ASN1_NDEF_SEQUENCE(GOST_CIPHER_PARAMS) =
 {
-ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING),
-        ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set,
-                        ASN1_OBJECT),}
+    ASN1_SIMPLE(GOST_CIPHER_PARAMS, iv, ASN1_OCTET_STRING),
+    ASN1_SIMPLE(GOST_CIPHER_PARAMS, enc_param_set, ASN1_OBJECT),
+}
 ASN1_NDEF_SEQUENCE_END(GOST_CIPHER_PARAMS)
- IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS)
- ASN1_NDEF_SEQUENCE(GOST_CLIENT_KEY_EXCHANGE_PARAMS) =
+IMPLEMENT_ASN1_FUNCTIONS(GOST_CIPHER_PARAMS)
+
+ASN1_NDEF_SEQUENCE(GOST_CLIENT_KEY_EXCHANGE_PARAMS) =
 {                               /* FIXME incomplete */
     ASN1_SIMPLE(GOST_CLIENT_KEY_EXCHANGE_PARAMS, gkt, GOST_KEY_TRANSPORT)
-} ASN1_NDEF_SEQUENCE_END(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
-
-    IMPLEMENT_ASN1_FUNCTIONS(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
+}
+ASN1_NDEF_SEQUENCE_END(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
+IMPLEMENT_ASN1_FUNCTIONS(GOST_CLIENT_KEY_EXCHANGE_PARAMS)
 
-    ASN1_NDEF_SEQUENCE(MASKED_GOST_KEY) =
+ASN1_NDEF_SEQUENCE(MASKED_GOST_KEY) =
 {
     ASN1_SIMPLE(MASKED_GOST_KEY, masked_priv_key, ASN1_OCTET_STRING),
-        ASN1_SIMPLE(MASKED_GOST_KEY, public_key, ASN1_OCTET_STRING)
-} ASN1_NDEF_SEQUENCE_END(MASKED_GOST_KEY)
- IMPLEMENT_ASN1_FUNCTIONS(MASKED_GOST_KEY)
+    ASN1_SIMPLE(MASKED_GOST_KEY, public_key, ASN1_OCTET_STRING)
+}
+ASN1_NDEF_SEQUENCE_END(MASKED_GOST_KEY)
+IMPLEMENT_ASN1_FUNCTIONS(MASKED_GOST_KEY)
index 259939dde80814ad86588f0c406a0da9a5690ca3..8132a1eaaffee8b3e899bbae60b362dc5d221113 100644 (file)
@@ -649,7 +649,12 @@ int gost89_get_asn1_parameters(EVP_CIPHER_CTX *ctx, ASN1_TYPE *params)
         GOST_CIPHER_PARAMS_free(gcp);
         return -1;
     }
-    memcpy(ctx->oiv, gcp->iv->data, len);
+
+    {
+        ASN1_TYPE tmp;
+        ASN1_TYPE_set(&tmp, V_ASN1_OCTET_STRING, gcp->iv);
+        EVP_CIPHER_get_asn1_iv(ctx, &tmp);
+    }
 
     GOST_CIPHER_PARAMS_free(gcp);