RustCrypto / RSA

RSA implementation in pure Rust
Apache License 2.0
536 stars 146 forks source link

XML parsing of public and private keys #442

Closed mingtianquan closed 2 months ago

mingtianquan commented 2 months ago
let xml = r#"
    <RSAKeyValue>
        <Modulus>hbDJqJti17U0QnYcaha/Oe0JfMIfgmLnQqiQdioYo0lDu6tkJBVVj4vdsm2nlxNNPAcauvDDcxzA57pwTQwFhzpRuoo8aq5vg/LF3gRmartGmAPnM9d6N6TDXomHoFlcSC+rPJd35ef/0ZZDveJcNUkkr3NBC8/QsVxyNOn4r4c=</Modulus>
        <Exponent>AQAB</Exponent>
        <P>upR+Ztvfl0VXJQoMKuisrsyZZfYGQ5h3Q5ESOUv9mSmVyI7KQ/eiMgfOevqeKmBn1aoGiB+W7gZOKo0dLEwdCQ==</P>
        <Q>t26j9IZ1xiw+O5pZf8kCmHHbxhJFhwNu2fL2JDL6SDE6+P8pOirklBZti+Y/NQm96mKH8zz9y5BnbFtf9yYcDw==</Q>
        <DP>gz0EFDHAelTp0UHaASycmm+Lzu5YxZ8u9LXMTcUn4l4f32yg1WIQEoTvNg2mx0P8hYwNAB7IOTDyNnf/9zKqkQ==</DP>
        <DQ>JOO/XWHdNamYKmx0K1rFhtr/E+qAyRJLrNFL5yPJadNcxM6r/+K4bX/FMClx9Lys0QJXzPcrI1E7O3N07UNgyQ==</DQ>
        <InverseQ>h72M67gC5S3SL0Gz5zxV3lZB9/lur9DS12d6XdDRV3icL0ZTA/R13+iFVDk8QCYV+dW+eSeuClLgNvcngLCFew==</InverseQ>
        <D>LKXZAy05um5y0Itfe/Ky1GacV4UBPutG7pUbAcuXRNkP/NoFbKOPWoxMcu16HdM9ZQG+ZJZJv+Tna7xxCtor8fzuepaTELFmzMkS0n2rBTuACBrt/7Nkf/faKC42igTiAH/O2f3S7B2FmAw16mLw8k1HuKLxMvBCVxomnzB28ZE=</D>
    </RSAKeyValue>
"#;

Please help, I need to convert the XML into both public and private keys

For example, parsing the XML string above -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCFsMmom2LXtTRCdhxqFr857Ql8 wh+CYudCqJB2KhijSUO7q2QkFVWPi92ybaeXE008Bxq68MNzHMDnunBNDAWHOlG6 ijxqrm+D8sXeBGZqu0aYA+cz13o3pMNeiYegWVxIL6s8l3fl5//RlkO94lw1SSSv c0ELz9CxXHI06fivhwIDAQAB -----END PUBLIC KEY-----

-----BEGIN PRIVATE KEY----- MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIWwyaibYte1NEJ2 HGoWvzntCXzCH4Ji50KokHYqGKNJQ7urZCQVVY+L3bJtp5cTTTwHGrrww3McwOe6 cE0MBYc6UbqKPGqub4Pyxd4EZmq7RpgD5zPXejekw16Jh6BZXEgvqzyXd+Xn/9GW Q73iXDVJJK9zQQvP0LFccjTp+K+HAgMBAAECgYAspdkDLTm6bnLQi1978rLUZpxX hQE+60bulRsBy5dE2Q/82gVso49ajExy7Xod0z1lAb5klkm/5OdrvHEK2ivx/O56 lpMQsWbMyRLSfasFO4AIGu3/s2R/99ooLjaKBOIAf87Z/dLsHYWYDDXqYvDyTUe4 ovEy8EJXGiafMHbxkQJBALqUfmbb35dFVyUKDCrorK7MmWX2BkOYd0OREjlL/Zkp lciOykP3ojIHznr6nipgZ9WqBogflu4GTiqNHSxMHQkCQQC3bqP0hnXGLD47mll/ yQKYcdvGEkWHA27Z8vYkMvpIMTr4/yk6KuSUFm2L5j81Cb3qYofzPP3LkGdsW1/3 JhwPAkEAgz0EFDHAelTp0UHaASycmm+Lzu5YxZ8u9LXMTcUn4l4f32yg1WIQEoTv Ng2mx0P8hYwNAB7IOTDyNnf/9zKqkQJAJOO/XWHdNamYKmx0K1rFhtr/E+qAyRJL rNFL5yPJadNcxM6r/+K4bX/FMClx9Lys0QJXzPcrI1E7O3N07UNgyQJBAIe9jOu4 AuUt0i9Bs+c8Vd5WQff5bq/Q0tdnel3Q0Vd4nC9GUwP0dd/ohVQ5PEAmFfnVvnkn rgpS4Db3J4CwhXs= -----END PRIVATE KEY-----

tarcieri commented 2 months ago

I have no idea what format that is. I've never seen an RSA key represented as XML before.

The formats we support are PKCS#1 and PKCS#8 (DER or PEM encoding).

mingtianquan commented 2 months ago

It has been resolved, thank you