リビジョン | 6570 (tree) |
---|---|
日時 | 2017-01-15 14:28:14 |
作者 | (del#24082) |
ECDSA_SIG構造体のメンバーアクセスを関数アクセスに変更した。
@@ -347,6 +347,7 @@ | ||
347 | 347 | unsigned int len, dlen; |
348 | 348 | int ret, nid = NID_undef; |
349 | 349 | char *ptr; |
350 | + BIGNUM *r, *s; | |
350 | 351 | |
351 | 352 | OpenSSL_add_all_digests(); |
352 | 353 |
@@ -375,13 +376,14 @@ | ||
375 | 376 | /* parse signature */ |
376 | 377 | if ((sig = ECDSA_SIG_new()) == NULL) |
377 | 378 | return -4; |
378 | - if ((sig->r = BN_new()) == NULL) | |
379 | + if ((r = BN_new()) == NULL) | |
379 | 380 | return -5; |
380 | - if ((sig->s = BN_new()) == NULL) | |
381 | + if ((s = BN_new()) == NULL) | |
381 | 382 | return -6; |
383 | + ECDSA_SIG_set0(sig, r, s); | |
382 | 384 | |
383 | - buffer_get_bignum2(&sigblob, sig->r); | |
384 | - buffer_get_bignum2(&sigblob, sig->s); | |
385 | + buffer_get_bignum2(&sigblob, r); | |
386 | + buffer_get_bignum2(&sigblob, s); | |
385 | 387 | if (sigblob != ptr) { |
386 | 388 | return -7; |
387 | 389 | } |
@@ -1649,6 +1651,7 @@ | ||
1649 | 1651 | u_char digest[EVP_MAX_MD_SIZE]; |
1650 | 1652 | u_int len, dlen, nid; |
1651 | 1653 | buffer_t *buf2 = NULL; |
1654 | + BIGNUM *br, *bs; | |
1652 | 1655 | |
1653 | 1656 | nid = keytype_to_hash_nid(keypair->type); |
1654 | 1657 | if ((evp_md = EVP_get_digestbynid(nid)) == NULL) { |
@@ -1670,8 +1673,9 @@ | ||
1670 | 1673 | // TODO: error check |
1671 | 1674 | goto error; |
1672 | 1675 | } |
1673 | - buffer_put_bignum2(buf2, sig->r); | |
1674 | - buffer_put_bignum2(buf2, sig->s); | |
1676 | + ECDSA_SIG_get0(sig, &br, &bs); | |
1677 | + buffer_put_bignum2(buf2, br); | |
1678 | + buffer_put_bignum2(buf2, bs); | |
1675 | 1679 | ECDSA_SIG_free(sig); |
1676 | 1680 | |
1677 | 1681 | s = get_sshname_from_key(keypair); |