/* * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */#include <stdio.h>#include "internal/cryptlib.h"#include <openssl/evp.h>#include <openssl/x509.h>#include "crypto/asn1.h"#include "crypto/evp.h"inti2d_PrivateKey(EVP_PKEY*a,unsignedchar**pp){if(a->ameth&&a->ameth->old_priv_encode){returna->ameth->old_priv_encode(a,pp);}if(a->ameth&&a->ameth->priv_encode){PKCS8_PRIV_KEY_INFO*p8=EVP_PKEY2PKCS8(a);intret=0;if(p8!=NULL){ret=i2d_PKCS8_PRIV_KEY_INFO(p8,pp);PKCS8_PRIV_KEY_INFO_free(p8);}returnret;}ASN1err(ASN1_F_I2D_PRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);return-1;}