]> wagner.pp.ru Git - openssl-gost/engine.git/commitdiff
Backport commit 22dc08d00ae9517048b1ca44cd3810128eba0273
authorDmitry Belyavskiy <beldmit@gmail.com>
Sun, 3 Jan 2016 20:23:59 +0000 (23:23 +0300)
committerDmitry Belyavskiy <beldmit@gmail.com>
Sun, 3 Jan 2016 20:23:59 +0000 (23:23 +0300)
gost_ameth.c
gost_ec_sign.c
gost_lcl.h

index f967283dff04529398fe9c3ec0bc59437385d6fb..0ea1583aa4742c5cc47847b0f0aeeb24aadbfb5d 100644 (file)
@@ -34,22 +34,6 @@ int store_bignum(BIGNUM *bn, unsigned char *buf, int len)
     return 1;
 }
 
-/* Convert byte buffer to bignum, skipping leading zeros*/
-BIGNUM *getbnfrombuf(const unsigned char *buf, size_t len)
-{
-    BIGNUM *b;
-
-    while (*buf == 0 && len > 0) {
-        buf++;
-        len--;
-    }
-    if (len)
-        return BN_bin2bn(buf, len, NULL);
-    b = BN_new();
-    BN_zero(b);
-    return b;
-}
-
 static int pkey_bits_gost(const EVP_PKEY *pk)
 {
     if (!pk)
@@ -684,8 +668,8 @@ static int pub_decode_gost_ec(EVP_PKEY *pk, X509_PUBKEY *pub)
     len = octet->length / 2;
     ASN1_OCTET_STRING_free(octet);
 
-    Y = getbnfrombuf(databuf, len);
-    X = getbnfrombuf(databuf + len, len);
+    Y = BN_bin2bn(databuf, len, NULL);
+    X = BN_bin2bn(databuf + len, len, NULL);
     OPENSSL_free(databuf);
     pub_key = EC_POINT_new(group);
     if (!EC_POINT_set_affine_coordinates_GFp(group, pub_key, X, Y, NULL)) {
index c700ac2f7d83db9478fc04e5cdaaa14141a50a1a..c3e1e016e84bc85ca38b243cea034507fb0fc958 100644 (file)
@@ -35,7 +35,7 @@ BIGNUM *hashsum2bn(const unsigned char *dgst, int len)
     for (i = 0; i < len; i++) {
         buf[len - i - 1] = dgst[i];
     }
-    return getbnfrombuf(buf, len);
+    return BN_bin2bn(buf, len, NULL);
 }
 
 static R3410_ec_params *gost_nid2params(int nid)
index 3cc15f73a4f1839634787f8c533da96263d2dd38..68f40b683cb50814af14faf901df8d7768f2722e 100644 (file)
@@ -245,8 +245,6 @@ BIGNUM *hashsum2bn(const unsigned char *dgst, int len);
  * nesseccary
  */
 int store_bignum(BIGNUM *bn, unsigned char *buf, int len);
-/* Read bignum, which can have few MSB all-zeros    from buffer*/
-BIGNUM *getbnfrombuf(const unsigned char *buf, size_t len);
 /* Pack GOST R 34.10 signature according to CryptoPro rules */
 int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen);
 /* from ameth.c */