2012-04-24 16 views
0

RSA公開鍵と秘密鍵のXMLファイル形式で作業したい。 は、今私は、私は、XML形式のRSAキーを使用して文字列を持っていると私はEVP_PKEYまたはRSAのOpenSSLにそれらをロードする必要がOpenSSL(C++)経由でRSA公開鍵と秘密鍵をXML(w3c)形式で保存する

をPEMにこれらのキーを保存する方法を発見し、バイナリ(DER)フォーマット(例えば、PEM_write_RSAPrivateKey())構造。

XML形式は、このようなものです:

<RSAKeyPair> 
    <Modulus>...</Modulus> 
    <Exponent>...</Exponent> 
    <P>...</P> 
    <Q>...</Q> 
    <DP>...</DP> 
    <DQ>...</DQ> 
    <InverseQ> 
    ... 
    </InverseQ> 
    <D>...</D> 
</RSAKeyPair> 

ありがとう!

答えて

2
//just a code for demo,not for actually use 
int len; 
RSA *rsa; 
BIO *bio; 
unsigned char *data; 
bio = BIO_new(BIO_s_meme()); 
BIO *b64; 
b64 = BIO_new(BIO_f_base64()); 
BIO_write(bio, "<RSAKeyPair>\n",strlen("<RSAKeyPair>\n")); 
//write Modulus 
len=BN_num_bytes(rsa->n); 
data=(unsigned char *)OPENSSL_malloc(len); 
if(data) { 
    BIO_write(bio," <Modulus>",strlen(" <Modulus>")); 
    BN_bn2bin(rsa->n,data); 
    bio = BIO_push(b64, bio); 
    BIO_write(bio, data, len); 
    (void)BIO_flush(bio); 
    BIO_pop(bio); 
    BIO_reset(b64); 
    BIO_write(bio,"</Modulus>",strlen("</Modulus>")); 
} 
//write Exp 
... 
//write the bignum in rsa structure you want 
BIO_write(bio, "</RSAKeyPair>\n",strlen("</RSAKeyPair>")); 
+0

ありがとうございます。私は、XML_write_RSAPrivateKey()のような単純な関数があることを期待していました... – egoroveo

関連する問題