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

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -