gpt4 book ai didi

objective-c - OpenSSL:打印 EC_POINT 的 X 和 Y

转载 作者:太空狗 更新时间:2023-10-30 03:50:31 24 4
gpt4 key购买 nike

这是我的代码:

EC_KEY *eckey = EC_KEY_new();
EC_KEY_generate_key(eckey);
const EC_POINT *pub = EC_KEY_get0_public_key(eckey);
printf("%s", pub->X);

我收到一条错误消息“'struct ec_point_st' 类型的定义不完整”。我也试过:

EC_GROUP *curve = EC_GROUP_new_by_curve_name(NID_secp521r1);
BN_CTX *ecctx= BN_CTX_new();
EC_KEY *eckey = EC_KEY_new();
EC_KEY_generate_key(eckey);
const EC_POINT *pub = EC_KEY_get0_public_key(eckey);
NSLog(@"%s", EC_POINT_point2hex(curve, pub, POINT_CONVERSION_HYBRID, ecctx));

在这种情况下,我收到 EXC_BAD_ACCESS 错误。如何打印(用于调试)公钥的 x 和 y 点?

最佳答案

在调用 EC_KEY_generate_key 之前,您必须将 EC_GROUP 对象关联到 EC_KEY:

    EC_KEY *ec_key = EC_KEY_new();
EC_GROUP *ec_group = EC_GROUP_new_by_curve_name(NID_secp521r1);

EC_KEY_set_group(ec_key, ec_group);
EC_KEY_generate_key(ec_key);

然后打印公钥:

    const EC_POINT *pub = EC_KEY_get0_public_key(ec_key);

BIGNUM *x = BN_new();
BIGNUM *y = BN_new();

if (EC_POINT_get_affine_coordinates_GFp(ec_group, pub, x, y, NULL)) {
BN_print_fp(stdout, x);
putc('\n', stdout);
BN_print_fp(stdout, y);
putc('\n', stdout);
}

不要忘记添加错误和内存处理,上面的示例代码会泄漏。

关于objective-c - OpenSSL:打印 EC_POINT 的 X 和 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com