Net-LDNS

 view release on metacpan or  search on metacpan

src/ldns/host2str.c  view on Meta::CPAN

				if (dsa->priv_key) {
					i = (uint16_t)BN_bn2bin(dsa->priv_key, bignum);
					if (i > LDNS_MAX_KEYLEN) {
						goto error;
					}
					b64_bignum =  ldns_rdf_new_frm_data(LDNS_RDF_TYPE_B64, i, bignum);
					if (ldns_rdf2buffer_str(output, b64_bignum) != LDNS_STATUS_OK) {
						ldns_rdf_deep_free(b64_bignum);
						goto error;
					}
					ldns_rdf_deep_free(b64_bignum);
					ldns_buffer_printf(output, "\n");
				} else {
					printf("(Not available)\n");
				}

				ldns_buffer_printf(output, "Public_value(y): ");
				if (dsa->pub_key) {
					i = (uint16_t)BN_bn2bin(dsa->pub_key, bignum);
					if (i > LDNS_MAX_KEYLEN) {
						goto error;
					}
					b64_bignum =  ldns_rdf_new_frm_data(LDNS_RDF_TYPE_B64, i, bignum);
					if (ldns_rdf2buffer_str(output, b64_bignum) != LDNS_STATUS_OK) {
						ldns_rdf_deep_free(b64_bignum);
						goto error;
					}
					ldns_rdf_deep_free(b64_bignum);
					ldns_buffer_printf(output, "\n");
				} else {
					printf("(Not available)\n");
				}
#endif /* splint */
				break;
			case LDNS_SIGN_ECC_GOST:
				/* no format defined, use blob */
#if defined(HAVE_SSL) && defined(USE_GOST)
				ldns_buffer_printf(output, "Private-key-format: v1.2\n");
				ldns_buffer_printf(output, "Algorithm: %d (ECC-GOST)\n", LDNS_SIGN_ECC_GOST);
				status = ldns_gost_key2buffer_str(output, 
#ifndef S_SPLINT_S
					k->_key.key
#else
					NULL
#endif
				);
#else
				goto error;
#endif /* GOST */
				break;
			case LDNS_SIGN_ECDSAP256SHA256:
			case LDNS_SIGN_ECDSAP384SHA384:
#ifdef USE_ECDSA
                                ldns_buffer_printf(output, "Private-key-format: v1.2\n");
				ldns_buffer_printf(output, "Algorithm: %d (", ldns_key_algorithm(k));
                                status=ldns_algorithm2buffer_str(output, (ldns_algorithm)ldns_key_algorithm(k));
#ifndef S_SPLINT_S
				ldns_buffer_printf(output, ")\n");
                                if(k->_key.key) {
                                        EC_KEY* ec = EVP_PKEY_get1_EC_KEY(k->_key.key);
                                        const BIGNUM* b = EC_KEY_get0_private_key(ec);
                                        ldns_buffer_printf(output, "PrivateKey: ");
                                        i = (uint16_t)BN_bn2bin(b, bignum);
                                        if (i > LDNS_MAX_KEYLEN) {
                                                goto error;
                                        }
                                        b64_bignum =  ldns_rdf_new_frm_data(LDNS_RDF_TYPE_B64, i, bignum);
                                        if (ldns_rdf2buffer_str(output, b64_bignum) != LDNS_STATUS_OK) {
						ldns_rdf_deep_free(b64_bignum);
                                                goto error;
                                        }
                                        ldns_rdf_deep_free(b64_bignum);
				        ldns_buffer_printf(output, "\n");
                                        /* down reference count in EC_KEY
                                         * its still assigned to the PKEY */
                                        EC_KEY_free(ec);
                                }
#endif /* splint */
#else
				goto error;
#endif /* ECDSA */
                                break;
			case LDNS_SIGN_HMACMD5:
				/* there's not much of a format defined for TSIG */
				/* It's just a binary blob, Same for all algorithms */
                ldns_buffer_printf(output, "Private-key-format: v1.2\n");
                ldns_buffer_printf(output, "Algorithm: 157 (HMAC_MD5)\n");
				status = ldns_hmac_key2buffer_str(output, k);
				break;
			case LDNS_SIGN_HMACSHA1:
		        ldns_buffer_printf(output, "Private-key-format: v1.2\n");
		        ldns_buffer_printf(output, "Algorithm: 158 (HMAC_SHA1)\n");
				status = ldns_hmac_key2buffer_str(output, k);
				break;
			case LDNS_SIGN_HMACSHA256:
		        ldns_buffer_printf(output, "Private-key-format: v1.2\n");
		        ldns_buffer_printf(output, "Algorithm: 159 (HMAC_SHA256)\n");
				status = ldns_hmac_key2buffer_str(output, k);
				break;
		}
#endif /* HAVE_SSL */
	} else {
		LDNS_FREE(bignum);
		return ldns_buffer_status(output);
	}
	LDNS_FREE(bignum);
	return status;

#ifdef HAVE_SSL
	/* compiles warn the label isn't used */
error:
	LDNS_FREE(bignum);
	return LDNS_STATUS_ERR;
#endif /* HAVE_SSL */

}

/*
 * Zero terminate the buffer and copy data.
 */
char *



( run in 1.590 second using v1.01-cache-2.11-cpan-39bf76dae61 )