Tec*_*163 6 openssl cryptography objective-c cryptoapi public-key-encryption
这是我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
我收到一条错误,上面写着"类型'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));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到一个EXC_BAD_ACCESS错误.如何打印(用于调试)公钥的x和y点?
您必须将EC_GROUP对象与EC_KEY之前的调用关联EC_KEY_generate_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);
Run Code Online (Sandbox Code Playgroud)
然后打印公钥:
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);
}
Run Code Online (Sandbox Code Playgroud)
不要忘记添加错误和内存处理,上面的示例代码泄漏.
| 归档时间: |
|
| 查看次数: |
4269 次 |
| 最近记录: |