c++ - Can't set public/private key in OpenSSL -
i trying set public , private key evp_pkey in c++ string. however, after following several examples online, pkey comes out null. here code reproduce problem (this private keys effect same public keys):
#include <openssl/evp.h> #include <openssl/pem.h> #include <string> #include <iostream> int main() { evp_pkey *keypair; keypair = null; std::string privatekey = "-----begin private key-----miievaibadanbgkqhkig9w0baqefaascbkywggsiageaaoibaqcukz6enuunixu9celogd6otlmkxpwzoaebuvxlwlh2ae4as/8rmaiptsxq9m8umy7l69gvho51+wmacrw1ftea3s5rvlruorwfnyglulrbji4hud5ipxs0mbxke+lc/vyltn26zpi8pl8qb38eesilxz7uno1xriskxjixy/j4cmmddn0uftjkxxmdqlun67t1jlzgzalrkyfmlf8h+vlqhw6ygfe1ojjj8zwqup8t2mrbflxwh1bwffxx4ruwab+c9fxhwen5sjv8aoj/9awew7cywa0eeabl2tfpw+qcbzcitp9l9g/9/8m9rh0wqurczv+z7p0wkc2jrdca6vidagmbaaecggeahjfo8bpp96+jjeziljw0whz8ocyncs/0or2/0sfjebw61/jcgd3zb5fczhq0rczs7trfjsub5kx1gqzao8rtmuv+3qpdeplln1emmnu/vmpkyvwojimmver+8jsnetqz7nerzi2cvjjwyagcfrlavxamugkg1k1krt53+5jwyrbswqb+05egoxvoqahbjblwbwjrufbjmscakf/1mvnj9h2camrjiowmjzwgs2myuszae0i0vlg/mtluxugwa7efay6bngwuahdd6cy2ghlcoeel4gyatdtqk1k5r/5o54gtjq1risejicxp/qlifiea8feucfgwffqnixlmvrz/gqkbgqdka8gdq5xtbqhdcasienjjtgmb1w0cugymub01o0kk0o5svah0ltwkif6tw5od3olyrt/unpegovyoc+lm3kls14npcd5p3zdl/i9ncwq8qf3unzt5nfli2nh8lyh2q41koc2skrqsiqkzeogljp2+n3sszf0pboe9ryeo9rkswwkbgqddi6cwvosh4susgljeauc/j7/mwmatm7r5coegh1tjzrahil7dxewm9it2vwu+9fih16je6+0puxpmkcj3t/e/fswq+6n0yjnviuyqgxmfxw2zwssxgv51id+eo88lfd+2wr6yuhl0wpesqtuvhm3xup/uog0yuvocijqxfcyvwqkbgcvy7qd1v3onc4b7wdqqnvjwkc70retvl8pctt6dxzyvcmwojniydmxmn26ty+gp9j8nsg1fwirx2pcdjwhe5wxutckkuadjnsnz8xqiqeh4v6ii0fsxavhm2kjpfwpklp9eali6xgedfrvvxmo1ktolojnilpyufbu/ttmnhjsxaogag+ci+uwk+vbtmzxaiao/iek1x7xo6wljkgwniw4ijnlmpmug3ntbyxip3nbzybsjplx4cm3r8v7utf2ul+vwsevogj44ixxranmhjh4nnqkvuc7yztgu8y6ev5arnk8hskcf1hkmh5+g69vn+dr0c6zk1ixizpbvw41xrq1nseecgybmtby5divremh4fdsmjduuqcurvyqpeiwdczwurrxfkcuwtbvvn1artq/nl+kuixmjpuebinx90vxp+ptopahxomkuzx+bfnwiqz+oibq1wpug8nv4o7trzokipsy8yvz8ufquua6wf5w2kh3gc3iprqt5jjspkwpduc1taqo/pw==-----end private key-----"; bio *bio = bio_new(bio_s_mem()); if(bio_write(bio, (unsigned char*)privatekey.c_str(), (size_t)privatekey.size()) != (int)privatekey.size()) { bio_free_all(bio); return 0; } pem_read_bio_privatekey(bio, &keypair, null, null); bio_free_all(bio); if(keypair == null) { std::cout << "error"; } else { return 0; } } what doing wrong?
the private key you're passing invalid; it's missing newlines. there needs 1 right after -----begin private key----- header, 1 before corresponding footer, , 1 after every 64 characters in body, e.g.
std::string privatekey = "-----begin rsa private key-----\n" "miieogibaakcaqearis+hdvfj4l1pqnptoa+qe5zpmt1magngvfvy8jydmhoalp/\n" "etgiku7mavtpfjmoy+vrlr6odfsjgaq1tx7rgt0ua1s0bjq8btwbi1ja244uibg+\n" /* ... */ "5y/pfistiz7ngsj1/dl8t/qbadwb1zjcrmcfmxtccegfjiaunvj1bvj1eko7uwtp\n" "cd0svgfc/fbulrgolhevtpid4hn4j60lesy7kzfjw7gtbwkkp6c=\n" "-----end rsa private key-----";
Comments
Post a Comment