diff options
author | Lei He <helei.sig11@bytedance.com> | 2022-10-08 16:50:29 +0800 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2022-11-02 06:56:32 -0400 |
commit | 58660863ba5ca4f74fa70671da2899b264dc5f34 (patch) | |
tree | d6907865e91667bf5457f1fba9869b9cd30f507b /crypto/akcipher.c | |
parent | 3b34ccad6695f3fd3e48555d895d450f750c00e6 (diff) | |
download | qemu-58660863ba5ca4f74fa70671da2899b264dc5f34.zip qemu-58660863ba5ca4f74fa70671da2899b264dc5f34.tar.gz qemu-58660863ba5ca4f74fa70671da2899b264dc5f34.tar.bz2 |
crypto: Support export akcipher to pkcs8
crypto: support export RSA private keys with PKCS#8 standard.
So that users can upload this private key to linux kernel.
Signed-off-by: lei he <helei.sig11@bytedance.com>
Message-Id: <20221008085030.70212-4-helei.sig11@bytedance.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'crypto/akcipher.c')
-rw-r--r-- | crypto/akcipher.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crypto/akcipher.c b/crypto/akcipher.c index ad88379..e4bbc6e 100644 --- a/crypto/akcipher.c +++ b/crypto/akcipher.c @@ -22,6 +22,8 @@ #include "qemu/osdep.h" #include "crypto/akcipher.h" #include "akcipherpriv.h" +#include "der.h" +#include "rsakey.h" #if defined(CONFIG_GCRYPT) #include "akcipher-gcrypt.c.inc" @@ -106,3 +108,19 @@ void qcrypto_akcipher_free(QCryptoAkCipher *akcipher) drv->free(akcipher); } + +int qcrypto_akcipher_export_p8info(const QCryptoAkCipherOptions *opts, + uint8_t *key, size_t keylen, + uint8_t **dst, size_t *dst_len, + Error **errp) +{ + switch (opts->alg) { + case QCRYPTO_AKCIPHER_ALG_RSA: + qcrypto_akcipher_rsakey_export_p8info(key, keylen, dst, dst_len); + return 0; + + default: + error_setg(errp, "Unsupported algorithm: %u", opts->alg); + return -1; + } +} |