]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
gnutls_x509_crt_get_pk_* are based on gnutls_pubkey_export_*
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 15 Apr 2015 08:47:39 +0000 (11:47 +0300)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 15 Apr 2015 08:47:39 +0000 (11:47 +0300)
lib/x509/x509.c

index b0dff5a80e473d26c917e8f7238ab9e7c3bc184d..575cd791ade1a40e6cc140b1617b68b7d4b6057e 100644 (file)
@@ -3033,42 +3033,31 @@ gnutls_x509_crt_get_pk_rsa_raw(gnutls_x509_crt_t crt,
                               gnutls_datum_t * m, gnutls_datum_t * e)
 {
        int ret;
-       gnutls_pk_params_st params;
+       gnutls_pubkey_t pubkey;
 
        if (crt == NULL) {
                gnutls_assert();
                return GNUTLS_E_INVALID_REQUEST;
        }
 
-       ret = gnutls_x509_crt_get_pk_algorithm(crt, NULL);
-       if (ret != GNUTLS_PK_RSA) {
-               gnutls_assert();
-               return GNUTLS_E_INVALID_REQUEST;
-       }
-
-       ret = _gnutls_x509_crt_get_mpis(crt, &params);
-       if (ret < 0) {
-               gnutls_assert();
-               return ret;
-       }
+       ret = gnutls_pubkey_init(&pubkey);
+       if (ret < 0)
+               return gnutls_assert_val(ret);
 
-       ret = _gnutls_mpi_dprint_lz(params.params[0], m);
-       if (ret < 0) {
+       ret = gnutls_pubkey_import_x509(pubkey, crt, 0);
+       if (ret < 0) {  
                gnutls_assert();
                goto cleanup;
        }
 
-       ret = _gnutls_mpi_dprint_lz(params.params[1], e);
-       if (ret < 0) {
+       ret = gnutls_pubkey_export_rsa_raw(pubkey, m, e);
+       if (ret < 0) {  
                gnutls_assert();
-               _gnutls_free_datum(m);
                goto cleanup;
        }
 
-       ret = 0;
-
-      cleanup:
-       gnutls_pk_params_release(&params);
+ cleanup:
+       gnutls_pubkey_deinit(pubkey);
        return ret;
 }
 
@@ -3139,68 +3128,32 @@ gnutls_x509_crt_get_pk_dsa_raw(gnutls_x509_crt_t crt,
                               gnutls_datum_t * g, gnutls_datum_t * y)
 {
        int ret;
-       gnutls_pk_params_st params;
+       gnutls_pubkey_t pubkey;
 
        if (crt == NULL) {
                gnutls_assert();
                return GNUTLS_E_INVALID_REQUEST;
        }
 
-       ret = gnutls_x509_crt_get_pk_algorithm(crt, NULL);
-       if (ret != GNUTLS_PK_DSA) {
-               gnutls_assert();
-               return GNUTLS_E_INVALID_REQUEST;
-       }
-
-       ret = _gnutls_x509_crt_get_mpis(crt, &params);
-       if (ret < 0) {
-               gnutls_assert();
-               return ret;
-       }
-
-
-       /* P */
-       ret = _gnutls_mpi_dprint_lz(params.params[0], p);
-       if (ret < 0) {
-               gnutls_assert();
-               goto cleanup;
-       }
-
-       /* Q */
-       ret = _gnutls_mpi_dprint_lz(params.params[1], q);
-       if (ret < 0) {
-               gnutls_assert();
-               _gnutls_free_datum(p);
-               goto cleanup;
-       }
-
+       ret = gnutls_pubkey_init(&pubkey);
+       if (ret < 0)
+               return gnutls_assert_val(ret);
 
-       /* G */
-       ret = _gnutls_mpi_dprint_lz(params.params[2], g);
-       if (ret < 0) {
+       ret = gnutls_pubkey_import_x509(pubkey, crt, 0);
+       if (ret < 0) {  
                gnutls_assert();
-               _gnutls_free_datum(p);
-               _gnutls_free_datum(q);
                goto cleanup;
        }
 
-
-       /* Y */
-       ret = _gnutls_mpi_dprint_lz(params.params[3], y);
-       if (ret < 0) {
+       ret = gnutls_pubkey_export_dsa_raw(pubkey, p, q, g, y);
+       if (ret < 0) {  
                gnutls_assert();
-               _gnutls_free_datum(p);
-               _gnutls_free_datum(g);
-               _gnutls_free_datum(q);
                goto cleanup;
        }
 
-       ret = 0;
-
-      cleanup:
-       gnutls_pk_params_release(&params);
+ cleanup:
+       gnutls_pubkey_deinit(pubkey);
        return ret;
-
 }
 
 /**