akcipher-gcrypt.c.inc (2417cbd5916d043e0c56408221fbe9935d0bc8da) akcipher-gcrypt.c.inc (5f4059ef33e927ce9f72cb60000efa156566cd5c)
1/*
2 * QEMU Crypto akcipher algorithms
3 *
4 * Copyright (c) 2022 Bytedance
5 * Author: lei he <helei.sig11@bytedance.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 71 unchanged lines hidden (view full) ---

80 akcipher->max_signature_len = key_size;
81}
82
83static int qcrypto_gcrypt_parse_rsa_private_key(
84 QCryptoGcryptRSA *rsa,
85 const uint8_t *key, size_t keylen, Error **errp)
86{
87 g_autoptr(QCryptoAkCipherRSAKey) rsa_key = qcrypto_akcipher_rsakey_parse(
1/*
2 * QEMU Crypto akcipher algorithms
3 *
4 * Copyright (c) 2022 Bytedance
5 * Author: lei he <helei.sig11@bytedance.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 71 unchanged lines hidden (view full) ---

80 akcipher->max_signature_len = key_size;
81}
82
83static int qcrypto_gcrypt_parse_rsa_private_key(
84 QCryptoGcryptRSA *rsa,
85 const uint8_t *key, size_t keylen, Error **errp)
86{
87 g_autoptr(QCryptoAkCipherRSAKey) rsa_key = qcrypto_akcipher_rsakey_parse(
88 QCRYPTO_AKCIPHER_KEY_TYPE_PRIVATE, key, keylen, errp);
88 QCRYPTO_AK_CIPHER_KEY_TYPE_PRIVATE, key, keylen, errp);
89 gcry_mpi_t n = NULL, e = NULL, d = NULL, p = NULL, q = NULL, u = NULL;
90 bool compute_mul_inv = false;
91 int ret = -1;
92 gcry_error_t err;
93
94 if (!rsa_key) {
95 return ret;
96 }

--- 76 unchanged lines hidden (view full) ---

173
174static int qcrypto_gcrypt_parse_rsa_public_key(QCryptoGcryptRSA *rsa,
175 const uint8_t *key,
176 size_t keylen,
177 Error **errp)
178{
179
180 g_autoptr(QCryptoAkCipherRSAKey) rsa_key = qcrypto_akcipher_rsakey_parse(
89 gcry_mpi_t n = NULL, e = NULL, d = NULL, p = NULL, q = NULL, u = NULL;
90 bool compute_mul_inv = false;
91 int ret = -1;
92 gcry_error_t err;
93
94 if (!rsa_key) {
95 return ret;
96 }

--- 76 unchanged lines hidden (view full) ---

173
174static int qcrypto_gcrypt_parse_rsa_public_key(QCryptoGcryptRSA *rsa,
175 const uint8_t *key,
176 size_t keylen,
177 Error **errp)
178{
179
180 g_autoptr(QCryptoAkCipherRSAKey) rsa_key = qcrypto_akcipher_rsakey_parse(
181 QCRYPTO_AKCIPHER_KEY_TYPE_PUBLIC, key, keylen, errp);
181 QCRYPTO_AK_CIPHER_KEY_TYPE_PUBLIC, key, keylen, errp);
182 gcry_mpi_t n = NULL, e = NULL;
183 int ret = -1;
184 gcry_error_t err;
185
186 if (!rsa_key) {
187 return ret;
188 }
189

--- 345 unchanged lines hidden (view full) ---

535 Error **errp)
536{
537 QCryptoGcryptRSA *rsa = g_new0(QCryptoGcryptRSA, 1);
538 rsa->padding_alg = opt->padding_alg;
539 rsa->hash_alg = opt->hash_alg;
540 rsa->akcipher.driver = &gcrypt_rsa;
541
542 switch (type) {
182 gcry_mpi_t n = NULL, e = NULL;
183 int ret = -1;
184 gcry_error_t err;
185
186 if (!rsa_key) {
187 return ret;
188 }
189

--- 345 unchanged lines hidden (view full) ---

535 Error **errp)
536{
537 QCryptoGcryptRSA *rsa = g_new0(QCryptoGcryptRSA, 1);
538 rsa->padding_alg = opt->padding_alg;
539 rsa->hash_alg = opt->hash_alg;
540 rsa->akcipher.driver = &gcrypt_rsa;
541
542 switch (type) {
543 case QCRYPTO_AKCIPHER_KEY_TYPE_PRIVATE:
543 case QCRYPTO_AK_CIPHER_KEY_TYPE_PRIVATE:
544 if (qcrypto_gcrypt_parse_rsa_private_key(rsa, key, keylen, errp) != 0) {
545 goto error;
546 }
547 break;
548
544 if (qcrypto_gcrypt_parse_rsa_private_key(rsa, key, keylen, errp) != 0) {
545 goto error;
546 }
547 break;
548
549 case QCRYPTO_AKCIPHER_KEY_TYPE_PUBLIC:
549 case QCRYPTO_AK_CIPHER_KEY_TYPE_PUBLIC:
550 if (qcrypto_gcrypt_parse_rsa_public_key(rsa, key, keylen, errp) != 0) {
551 goto error;
552 }
553 break;
554
555 default:
556 error_setg(errp, "Unknown akcipher key type %d", type);
557 goto error;

--- 38 unchanged lines hidden ---
550 if (qcrypto_gcrypt_parse_rsa_public_key(rsa, key, keylen, errp) != 0) {
551 goto error;
552 }
553 break;
554
555 default:
556 error_setg(errp, "Unknown akcipher key type %d", type);
557 goto error;

--- 38 unchanged lines hidden ---