青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

調用OPENSSL讀取PEM文件的靈異問題

Posted on 2010-01-11 18:30 S.l.e!ep.¢% 閱讀(6783) 評論(0)  編輯 收藏 引用 所屬分類: OpenSSL

openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key

????????BIO? * key? = ?NULL;?
????????RSA?
* r? = ?NULL;?
????????key?
= ?BIO_new(BIO_s_file());?
????????BIO_read_filename(key,?
" c:\\private.key " );?
????????r?
= ?PEM_read_bio_RSAPrivateKey(key,?NULL,?NULL,?NULL);?
????????BIO_free_all(key);

讀取 private key?讀取正常,r 并不返回空

使用同樣方法讀取 public key

????????BIO?*key?=?NULL;?
????????RSA?
*r?=?NULL;?
????????key?
=?BIO_new(BIO_s_file());?
????????BIO_read_filename(key,?
"c:\\public.key");?
????????r?
=?PEM_read_bio_RSAPublicKey(key,?NULL,?NULL,?NULL);?
????????BIO_free_all(key);

不正常, r 總是返回 NULL,很不爽,將函數(shù)改一下 PEM_read_bio_RSA_PUBKEY

??BIO *key1=NULL;
??RSA *r1=NULL;
??key1=BIO_new(BIO_s_file());
??if(BIO_read_filename(key1,"c:\\public.key") <= 0 )
??{
???printf("error\n");
??}
??
??r1 = PEM_read_bio_RSA_PUBKEY(key1, NULL,NULL,NULL);
??BIO_free_all(key1);
??openssl_to_keys(r, 1024, priv, pub);

r1 讀取成功

?具體原因未知

作者:?playmud??時間:?2009-08-24?11:53:00
讓我們先來看一下pem.h頭文件中的定義:
?
#define?PEM_read_RSAPrivateKey(fp,x,cb,u)?(RSA?*)PEM_ASN1_read(?\
????????(char?*(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,fp,(char?**)x,cb,u)
#define?PEM_read_RSAPublicKey(fp,x,cb,u)?(RSA?*)PEM_ASN1_read(?\
????????(char?*(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,fp,(char?**)x,cb,u)
????????
#define?PEM_read_bio_RSAPrivateKey(bp,x,cb,u)?(RSA?*)PEM_ASN1_read_bio(?\
????????(char?*(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,bp,(char?**)x,cb,u)
#define?PEM_read_bio_RSAPublicKey(bp,x,cb,u)?(RSA?*)PEM_ASN1_read_bio(?\
????????(char?*(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,bp,(char?**)x,cb,u)?
?

?

對應的很工整是不是,你生成一個私鑰,然后用它生成一個公鑰。

openssl?genrsa?-out?private.pem?1024?
openssl?rsa?-in?priv.pem?-pubout?-out?public.pem?

用任何一種方法打開私鑰,讀取私鑰信息,得到RSA,查看RSA,ok,沒有問題,一切都還看起來比較正常。

然后用任何一種方法打開公鑰,讀取公鑰信息,問題出現(xiàn)了:RSA對象為空,你失敗了。

?

通過openssl的手冊和幫助,你會發(fā)現(xiàn)兩個函數(shù):

PEM_read_bio_RSA_PUBKEY()
PEM_read_RSA_PUBKEY()

他們才是你要找的對應的,而上面兩個函數(shù)是從任何.h里面找不到的,但是他們的確是真實存在的符號連接,在對應的.o文件中用objdump可以查看到他們的符號,很詭異!

現(xiàn)象描述完了,還未探其究竟。

附加讀取 PEM file 的code
????????BIO?*key?=?NULL;?
????????RSA?*r?=?NULL;?
????????key?=?BIO_new(BIO_s_file());?
????????BIO_read_filename(key,?"c:\\private.key");?
????????r?=?PEM_read_bio_RSAPrivateKey(key,?NULL,?NULL,?NULL);?
????????BIO_free_all(key);
????????
????????R_RSA_PRIVATE_KEY?priv;
????????R_RSA_PUBLIC_KEY??pub;
????????openssl_to_keys(r,?1024,?priv,?pub);

????????BIO?*key1=NULL;?
????????RSA?*r1=NULL;?
????????key1=BIO_new(BIO_s_file());?
????????if(BIO_read_filename(key1,"c:\\public.key")?
<=?0?)
????????{
????????????printf("error\n");
????????}?
????????
????????r1?
=?PEM_read_bio_RSA_PUBKEY(key1,?NULL,NULL,NULL);?
????????BIO_free_all(key1);
????????openssl_to_keys(r,?1024,?priv,?pub);


static?void?bn_to_bin(BIGNUM*?bn,?unsigned?char*?bin,?int?n)?{
????memset(bin,?
0,?n);
????
int?m?=?BN_num_bytes(bn);
????BN_bn2bin(bn,?bin
+n-m);
}

void?openssl_to_keys(
?????????????????????RSA
*?rp,?int?nbits,?R_RSA_PRIVATE_KEY&?priv,?R_RSA_PUBLIC_KEY&?pub
?????????????????????)?{
????pub.bits?
=?nbits;
????bn_to_bin(rp
->n,?pub.modulus,?sizeof(pub.modulus));
????bn_to_bin(rp
->e,?pub.exponent,?sizeof(pub.exponent));
????
????memset(
&priv,?0,?sizeof(priv));
????priv.bits?
=?nbits;
????bn_to_bin(rp
->n,?priv.modulus,?sizeof(priv.modulus));
????bn_to_bin(rp
->e,?priv.publicExponent,?sizeof(priv.publicExponent));
????bn_to_bin(rp
->d,?priv.exponent,?sizeof(priv.exponent));
????bn_to_bin(rp
->p,?priv.prime[0],?sizeof(priv.prime[0]));
????bn_to_bin(rp
->q,?priv.prime[1],?sizeof(priv.prime[1]));
????bn_to_bin(rp
->dmp1,?priv.primeExponent[0],?sizeof(priv.primeExponent[0]));
????bn_to_bin(rp
->dmq1,?priv.primeExponent[1],?sizeof(priv.primeExponent[1]));
????bn_to_bin(rp
->iqmp,?priv.coefficient,?sizeof(priv.coefficient));
}
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线视频免费播放| 亚洲自拍都市欧美小说| 在线观看成人av| 日韩午夜免费视频| 久久久噜噜噜久久久| 一本综合精品| 欧美成人中文字幕在线| 国内偷自视频区视频综合| 西西裸体人体做爰大胆久久久| 亚洲高清三级视频| 久久久久九九视频| 国产日韩精品在线| 欧美亚洲免费高清在线观看| 一区二区三区四区五区在线| 欧美寡妇偷汉性猛交| 久久久久久久综合狠狠综合| 国产精品一区二区三区乱码 | 欧美伦理91| 黑人操亚洲美女惩罚| 欧美中文字幕| 欧美三级午夜理伦三级中文幕 | 蜜臀91精品一区二区三区| 亚洲一区影音先锋| 国产精品国色综合久久| 亚洲一区久久| 亚洲与欧洲av电影| 国产日韩精品一区二区| 欧美日韩直播| 亚洲高清激情| 欧美主播一区二区三区| 伊人春色精品| 久久青草久久| 久久一区欧美| 亚洲理伦电影| 亚洲一区二区三区视频播放| 在线视频精品一| 国产精自产拍久久久久久| 久久久精品国产99久久精品芒果| 欧美在线观看一二区| 激情一区二区三区| 亚洲国产日韩精品| 欧美性猛交xxxx乱大交退制版| 午夜伦理片一区| 久久精品日产第一区二区三区| 欧美激情国产日韩精品一区18| 日韩天堂av| 国产精品v亚洲精品v日韩精品| 午夜欧美视频| 久久夜色精品国产噜噜av| 99精品视频一区二区三区| 亚洲女人小视频在线观看| 国内精品免费午夜毛片| 亚洲成人在线视频网站| 国产精品ⅴa在线观看h| 久久免费高清| 欧美激情视频免费观看| 午夜精品久久久久久久| 老司机免费视频久久| 亚洲一区二区三区四区中文| 久久精品一区蜜桃臀影院 | 亚洲一区二区黄色| 在线综合+亚洲+欧美中文字幕| 久久精彩视频| 久久人人97超碰国产公开结果| 99精品国产在热久久下载| 亚洲欧美国产精品va在线观看| 国产在线成人| 中文一区二区在线观看| 亚洲国产高潮在线观看| 亚洲主播在线| 一区二区三区四区蜜桃| 老司机成人在线视频| 欧美专区在线播放| 一二三四社区欧美黄| 在线亚洲精品| 亚洲国产人成综合网站| 性色av一区二区三区在线观看| 99av国产精品欲麻豆| 久久久久久亚洲精品不卡4k岛国| 午夜精品免费视频| 欧美精品一区二区三区在线看午夜 | 亚洲高清不卡在线观看| 一区二区三区日韩| 亚洲精选视频免费看| 久久国产直播| 日韩视频在线永久播放| 国模私拍一区二区三区| 99精品国产在热久久| 亚洲欧洲午夜| 久久午夜视频| 久久久精品网| 欧美伊人久久久久久久久影院| 中文在线不卡| 欧美电影美腿模特1979在线看 | 久久这里有精品15一区二区三区| 亚洲欧美日韩精品久久久| 欧美日韩在线一区二区三区| 亚洲人成免费| 91久久一区二区| 久久久久免费观看| 噜噜噜久久亚洲精品国产品小说| 亚洲一区美女视频在线观看免费| 国产日韩欧美综合| 亚洲欧美一区二区三区久久| 亚洲欧美日韩视频一区| 欧美午夜激情小视频| 99热在线精品观看| 午夜精品久久久久| 国产视频一区二区在线观看| 性欧美激情精品| 久久亚洲一区二区| 在线观看视频亚洲| 免费不卡视频| 亚洲高清不卡av| 宅男噜噜噜66国产日韩在线观看| 欧美日本免费| 99视频一区| 午夜视黄欧洲亚洲| 精品99一区二区三区| 欧美va日韩va| 99riav久久精品riav| 国产日韩欧美综合| 久久影视三级福利片| 91久久精品国产91久久| 亚洲一区在线观看视频| 国产亚洲精品久久久久婷婷瑜伽| 久久久xxx| 亚洲美女中出| 久久久久欧美| 亚洲免费av电影| 国产精品爽爽爽| 久久综合网络一区二区| 最新成人在线| 亚洲在线视频| 欧美在线影院在线视频| 亚洲大片免费看| 欧美无乱码久久久免费午夜一区| 亚洲欧美日韩一区在线| 免费成人在线观看视频| 一区二区三区四区国产精品| 国产精品美女主播在线观看纯欲| 久久久久久精| 一区二区欧美视频| 鲁鲁狠狠狠7777一区二区| 日韩视频免费大全中文字幕| 国产欧美日韩视频一区二区三区| 麻豆精品一区二区综合av| 亚洲私人影院在线观看| 欧美激情亚洲国产| 欧美伊久线香蕉线新在线| 亚洲伦理精品| 一区福利视频| 国产免费观看久久| 欧美日韩三级| 一本大道久久a久久精品综合 | 国产欧美亚洲精品| 美女日韩欧美| 亚洲综合日韩| 亚洲精品影视| 女女同性女同一区二区三区91| 亚洲午夜精品久久| 最近中文字幕mv在线一区二区三区四区 | 亚洲日本va午夜在线电影| 亚洲一区二区欧美日韩| 久久精品一区二区国产| 亚洲校园激情| 99日韩精品| 亚洲黄色免费| 狠狠色丁香久久婷婷综合丁香| 国产精品国产三级国产aⅴ浪潮| 欧美91视频| 美女网站在线免费欧美精品| 久久精品国亚洲| 欧美在线视频一区| 午夜精品久久久久久久男人的天堂 | 久久亚洲视频| 久久精品观看| 午夜激情一区| 亚洲女女做受ⅹxx高潮| 国产精品99久久久久久宅男 | 狠狠综合久久av一区二区小说| 国产精品你懂的在线欣赏| 欧美日韩精品伦理作品在线免费观看| 久久精品国产一区二区电影| 欧美一区二区三区视频免费播放| 亚洲自拍啪啪| 亚洲天堂av电影| 亚洲国产婷婷综合在线精品 | 亚洲电影免费在线观看| 国产亚洲欧美一区二区| 国产欧美日韩一区二区三区在线观看 | 国产精品私人影院| 国产精品video| 欧美日韩在线另类| 亚洲影院免费| 久久精品一区四区| 玖玖玖国产精品| 欧美黄色成人网| 亚洲狠狠丁香婷婷综合久久久| 亚洲国产精品久久|