2014-01-18 37 views
1

我有這個,但它不工作:如何使用OpenSSL將生成器點添加到EC公鑰?

EC_GROUP * group = EC_GROUP_new_by_curve_name(NID_secp256k1); 
EC_POINT * pub = EC_POINT_new(group); 
EC_POINT * new = EC_POINT_new(group); 
BN_CTX * ctx = BN_CTX_new(); 
EC_POINT_oct2point(group, pub, key->pubkey.key, 33, ctx); 
EC_POINT_add(group, (EC_POINT *)EC_GROUP_get0_generator(group), pub, new, ctx); 
EC_POINT_point2oct(group, new, POINT_CONVERSION_COMPRESSED, key->pubkey.key, 33, ctx); 
BN_CTX_free(ctx); 
EC_POINT_free(pub); 
EC_POINT_free(new); 
EC_GROUP_free(group); 

公鑰保持不變,除了這是不是2或3鍵壓縮,但0(我不知道是什麼的第一個字節是,還是甚至是有效類型的公鑰)。

回答

1

EC_POINT_add(group, (EC_POINT *)EC_GROUP_get0_generator(group), pub, new, ctx);

應該

EC_POINT_add(group, new, (EC_POINT *)EC_GROUP_get0_generator(group), pub, ctx);

相關問題