У меня есть эта тестовая программа:
Код:
#включают
#включают
#включают
Int основных () {
Е ("OpenSSL версия:% s \ п", OPENSSL_VERSION_TEXT);
EC_KEY * ключ = EC_KEY_new_by_curve_name (NID_secp256k1);
если (! EC_KEY_generate_key (ключ)) {
Е ("GENERATE KEY СБОЙ \ п");
возвращает 1;
}
u_int8_t pubSize = i2o_ECPublicKey (ключ, NULL);
если (! pubSize) {
Е ("PUB KEY TO DATA ZERO \ п");
возвращает 1;
}
u_int8_t * Публичный = таНос (pubSize);
если (i2o_ECPublicKey (ключ, &Публичный)! = pubSize) {
Е ("PUB KEY TO DATA СБОЙ \ п");
возвращает 1;
}
u_int8_t * хэш = таНос (SHA256_DIGEST_LENGTH);
SHA256 (Публичный, pubSize, хэш);
для (целое х = 0; х < 32; х ++) {
Е ("% .2x", Хэш [х]);
}
EC_KEY_free (ключ);
бесплатно (Публичный);
бесплатно (хэш);
возвращать 0;
}
#включают
#включают
Int основных () {
Е ("OpenSSL версия:% s \ п", OPENSSL_VERSION_TEXT);
EC_KEY * ключ = EC_KEY_new_by_curve_name (NID_secp256k1);
если (! EC_KEY_generate_key (ключ)) {
Е ("GENERATE KEY СБОЙ \ п");
возвращает 1;
}
u_int8_t pubSize = i2o_ECPublicKey (ключ, NULL);
если (! pubSize) {
Е ("PUB KEY TO DATA ZERO \ п");
возвращает 1;
}
u_int8_t * Публичный = таНос (pubSize);
если (i2o_ECPublicKey (ключ, &Публичный)! = pubSize) {
Е ("PUB KEY TO DATA СБОЙ \ п");
возвращает 1;
}
u_int8_t * хэш = таНос (SHA256_DIGEST_LENGTH);
SHA256 (Публичный, pubSize, хэш);
для (целое х = 0; х < 32; х ++) {
Е ("% .2x", Хэш [х]);
}
EC_KEY_free (ключ);
бесплатно (Публичный);
бесплатно (хэш);
возвращать 0;
}
Но i2o_ECPublicKey развращает блок Публичных памяти. Глянь сюда: http://stackoverflow.com/questions/10906524/openssl-i2o-ecpublickey-not-working
Я использую OpenSSL 1.0.1c.
Пока это не сортируется существует серьезная проблема с развитием cbitcoin.
Благодарю.