1*6be8eaa4Stb.\" $OpenBSD: d2i_ECPKParameters.3,v 1.13 2024/10/24 21:42:10 tb Exp $ 2ec69e6f4Sschwarze.\" OpenSSL 05ea606a May 20 20:52:46 2016 -0400 38974101aSjmc.\" 49b38278bSschwarze.\" This file is a derived work. 59b38278bSschwarze.\" The changes are covered by the following Copyright and license: 69b38278bSschwarze.\" 79b38278bSschwarze.\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org> 89b38278bSschwarze.\" 99b38278bSschwarze.\" Permission to use, copy, modify, and distribute this software for any 109b38278bSschwarze.\" purpose with or without fee is hereby granted, provided that the above 119b38278bSschwarze.\" copyright notice and this permission notice appear in all copies. 129b38278bSschwarze.\" 139b38278bSschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 149b38278bSschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 159b38278bSschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 169b38278bSschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 179b38278bSschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 189b38278bSschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 199b38278bSschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 209b38278bSschwarze.\" 219b38278bSschwarze.\" The original file was written by Matt Caswell <matt@openssl.org>. 22ec69e6f4Sschwarze.\" Copyright (c) 2013, 2015 The OpenSSL Project. All rights reserved. 23ec69e6f4Sschwarze.\" 24ec69e6f4Sschwarze.\" Redistribution and use in source and binary forms, with or without 25ec69e6f4Sschwarze.\" modification, are permitted provided that the following conditions 26ec69e6f4Sschwarze.\" are met: 27ec69e6f4Sschwarze.\" 28ec69e6f4Sschwarze.\" 1. Redistributions of source code must retain the above copyright 29ec69e6f4Sschwarze.\" notice, this list of conditions and the following disclaimer. 30ec69e6f4Sschwarze.\" 31ec69e6f4Sschwarze.\" 2. Redistributions in binary form must reproduce the above copyright 32ec69e6f4Sschwarze.\" notice, this list of conditions and the following disclaimer in 33ec69e6f4Sschwarze.\" the documentation and/or other materials provided with the 34ec69e6f4Sschwarze.\" distribution. 35ec69e6f4Sschwarze.\" 36ec69e6f4Sschwarze.\" 3. All advertising materials mentioning features or use of this 37ec69e6f4Sschwarze.\" software must display the following acknowledgment: 38ec69e6f4Sschwarze.\" "This product includes software developed by the OpenSSL Project 39ec69e6f4Sschwarze.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 40ec69e6f4Sschwarze.\" 41ec69e6f4Sschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 42ec69e6f4Sschwarze.\" endorse or promote products derived from this software without 43ec69e6f4Sschwarze.\" prior written permission. For written permission, please contact 44ec69e6f4Sschwarze.\" openssl-core@openssl.org. 45ec69e6f4Sschwarze.\" 46ec69e6f4Sschwarze.\" 5. Products derived from this software may not be called "OpenSSL" 47ec69e6f4Sschwarze.\" nor may "OpenSSL" appear in their names without prior written 48ec69e6f4Sschwarze.\" permission of the OpenSSL Project. 49ec69e6f4Sschwarze.\" 50ec69e6f4Sschwarze.\" 6. Redistributions of any form whatsoever must retain the following 51ec69e6f4Sschwarze.\" acknowledgment: 52ec69e6f4Sschwarze.\" "This product includes software developed by the OpenSSL Project 53ec69e6f4Sschwarze.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" 54ec69e6f4Sschwarze.\" 55ec69e6f4Sschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 56ec69e6f4Sschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 57ec69e6f4Sschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 58ec69e6f4Sschwarze.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 59ec69e6f4Sschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 60ec69e6f4Sschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 61ec69e6f4Sschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 62ec69e6f4Sschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 63ec69e6f4Sschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 64ec69e6f4Sschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 65ec69e6f4Sschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 66ec69e6f4Sschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE. 67ec69e6f4Sschwarze.\" 68*6be8eaa4Stb.Dd $Mdocdate: October 24 2024 $ 69f75054deSschwarze.Dt D2I_ECPKPARAMETERS 3 70f75054deSschwarze.Os 71f75054deSschwarze.Sh NAME 72f75054deSschwarze.Nm d2i_ECPKParameters , 73f75054deSschwarze.Nm i2d_ECPKParameters , 74f75054deSschwarze.Nm d2i_ECPKParameters_bio , 75f75054deSschwarze.Nm i2d_ECPKParameters_bio , 76f75054deSschwarze.Nm d2i_ECPKParameters_fp , 77f75054deSschwarze.Nm i2d_ECPKParameters_fp , 788e9bd067Sschwarze.Nm d2i_ECParameters , 798e9bd067Sschwarze.Nm i2d_ECParameters , 808e9bd067Sschwarze.Nm ECParameters_dup , 818e9bd067Sschwarze.Nm d2i_ECPrivateKey , 828e9bd067Sschwarze.Nm i2d_ECPrivateKey , 83edd2fa76Sschwarze.Nm d2i_ECPrivateKey_bio , 84edd2fa76Sschwarze.Nm i2d_ECPrivateKey_bio , 85edd2fa76Sschwarze.Nm d2i_ECPrivateKey_fp , 86edd2fa76Sschwarze.Nm i2d_ECPrivateKey_fp , 878e9bd067Sschwarze.Nm o2i_ECPublicKey , 888e9bd067Sschwarze.Nm i2o_ECPublicKey , 89f75054deSschwarze.Nm ECPKParameters_print , 908e9bd067Sschwarze.Nm ECPKParameters_print_fp , 918e9bd067Sschwarze.Nm ECParameters_print , 92edd2fa76Sschwarze.Nm ECParameters_print_fp , 93edd2fa76Sschwarze.Nm d2i_EC_PUBKEY , 94edd2fa76Sschwarze.Nm i2d_EC_PUBKEY , 95edd2fa76Sschwarze.Nm d2i_EC_PUBKEY_bio , 96edd2fa76Sschwarze.Nm i2d_EC_PUBKEY_bio , 97edd2fa76Sschwarze.Nm d2i_EC_PUBKEY_fp , 98edd2fa76Sschwarze.Nm i2d_EC_PUBKEY_fp 99f75054deSschwarze.Nd decode and encode ASN.1 representations of elliptic curve entities 100f75054deSschwarze.Sh SYNOPSIS 101f75054deSschwarze.In openssl/ec.h 102f75054deSschwarze.Ft EC_GROUP * 103f75054deSschwarze.Fo d2i_ECPKParameters 104edd2fa76Sschwarze.Fa "EC_GROUP **val_out" 105*6be8eaa4Stb.Fa "const unsigned char **der_in" 106edd2fa76Sschwarze.Fa "long length" 107f75054deSschwarze.Fc 108f75054deSschwarze.Ft int 109f75054deSschwarze.Fo i2d_ECPKParameters 110edd2fa76Sschwarze.Fa "const EC_GROUP *val_in" 111*6be8eaa4Stb.Fa "unsigned char **der_out" 112f75054deSschwarze.Fc 1138e9bd067Sschwarze.Ft EC_GROUP * 1148e9bd067Sschwarze.Fo d2i_ECPKParameters_bio 115edd2fa76Sschwarze.Fa "BIO *in_bio" 116edd2fa76Sschwarze.Fa "EC_GROUP **val_out" 1178e9bd067Sschwarze.Fc 1188e9bd067Sschwarze.Ft int 1198e9bd067Sschwarze.Fo i2d_ECPKParameters_bio 120edd2fa76Sschwarze.Fa "BIO *out_bio" 121edd2fa76Sschwarze.Fa "EC_GROUP *val_in" 1228e9bd067Sschwarze.Fc 1238e9bd067Sschwarze.Ft EC_GROUP * 1248e9bd067Sschwarze.Fo d2i_ECPKParameters_fp 125edd2fa76Sschwarze.Fa "FILE *in_fp" 126edd2fa76Sschwarze.Fa "EC_GROUP **val_out" 1278e9bd067Sschwarze.Fc 1288e9bd067Sschwarze.Ft int 1298e9bd067Sschwarze.Fo i2d_ECPKParameters_fp 130edd2fa76Sschwarze.Fa "FILE *out_fp" 131edd2fa76Sschwarze.Fa "EC_GROUP *val_in" 1328e9bd067Sschwarze.Fc 1338e9bd067Sschwarze.Ft EC_KEY * 1348e9bd067Sschwarze.Fo d2i_ECParameters 135edd2fa76Sschwarze.Fa "EC_KEY **val_out" 136*6be8eaa4Stb.Fa "const unsigned char **der_in" 137edd2fa76Sschwarze.Fa "long length" 1388e9bd067Sschwarze.Fc 1398e9bd067Sschwarze.Ft int 1408e9bd067Sschwarze.Fo i2d_ECParameters 141edd2fa76Sschwarze.Fa "EC_KEY *val_in" 142*6be8eaa4Stb.Fa "unsigned char **der_out" 1438e9bd067Sschwarze.Fc 1448e9bd067Sschwarze.Ft EC_KEY * 1458e9bd067Sschwarze.Fo ECParameters_dup 146edd2fa76Sschwarze.Fa "EC_KEY *val_in" 1478e9bd067Sschwarze.Fc 1488e9bd067Sschwarze.Ft EC_KEY * 1498e9bd067Sschwarze.Fo d2i_ECPrivateKey 150edd2fa76Sschwarze.Fa "EC_KEY **val_out" 151*6be8eaa4Stb.Fa "const unsigned char **der_in" 152edd2fa76Sschwarze.Fa "long length" 1538e9bd067Sschwarze.Fc 1548e9bd067Sschwarze.Ft int 1558e9bd067Sschwarze.Fo i2d_ECPrivateKey 156edd2fa76Sschwarze.Fa "EC_KEY *val_in" 157*6be8eaa4Stb.Fa "unsigned char **der_out" 158edd2fa76Sschwarze.Fc 159edd2fa76Sschwarze.Ft EC_KEY * 160edd2fa76Sschwarze.Fo d2i_ECPrivateKey_bio 161edd2fa76Sschwarze.Fa "BIO *in_bio" 162edd2fa76Sschwarze.Fa "EC_KEY **val_out" 163edd2fa76Sschwarze.Fc 164edd2fa76Sschwarze.Ft int 165edd2fa76Sschwarze.Fo i2d_ECPrivateKey_bio 166edd2fa76Sschwarze.Fa "BIO *out_bio" 167edd2fa76Sschwarze.Fa "EC_KEY *val_in" 168edd2fa76Sschwarze.Fc 169edd2fa76Sschwarze.Ft EC_KEY * 170edd2fa76Sschwarze.Fo d2i_ECPrivateKey_fp 171edd2fa76Sschwarze.Fa "FILE *in_fp" 172edd2fa76Sschwarze.Fa "EC_KEY **val_out" 173edd2fa76Sschwarze.Fc 174edd2fa76Sschwarze.Ft int 17530dcf770Sschwarze.Fo i2d_ECPrivateKey_fp 176edd2fa76Sschwarze.Fa "FILE *out_fp" 177edd2fa76Sschwarze.Fa "EC_KEY *val_in" 1788e9bd067Sschwarze.Fc 1798e9bd067Sschwarze.Ft EC_KEY * 1808e9bd067Sschwarze.Fo o2i_ECPublicKey 181edd2fa76Sschwarze.Fa "EC_KEY **val_out" 182*6be8eaa4Stb.Fa "const unsigned char **der_in" 183edd2fa76Sschwarze.Fa "long length" 1848e9bd067Sschwarze.Fc 1858e9bd067Sschwarze.Ft int 1868e9bd067Sschwarze.Fo i2o_ECPublicKey 18762ca6defSschwarze.Fa "const EC_KEY *val_in" 188*6be8eaa4Stb.Fa "unsigned char **der_out" 1898e9bd067Sschwarze.Fc 190f75054deSschwarze.Ft int 191f75054deSschwarze.Fo ECPKParameters_print 192edd2fa76Sschwarze.Fa "BIO *out_bio" 193edd2fa76Sschwarze.Fa "const EC_GROUP *val_in" 194edd2fa76Sschwarze.Fa "int indent" 195f75054deSschwarze.Fc 196f75054deSschwarze.Ft int 197f75054deSschwarze.Fo ECPKParameters_print_fp 198edd2fa76Sschwarze.Fa "FILE *out_fp" 199edd2fa76Sschwarze.Fa "const EC_GROUP *val_in" 200edd2fa76Sschwarze.Fa "int indent" 201f75054deSschwarze.Fc 2028e9bd067Sschwarze.Ft int 2038e9bd067Sschwarze.Fo ECParameters_print 204edd2fa76Sschwarze.Fa "BIO *out_bio" 205edd2fa76Sschwarze.Fa "const EC_KEY *val_in" 2068e9bd067Sschwarze.Fc 2078e9bd067Sschwarze.Ft int 2088e9bd067Sschwarze.Fo ECParameters_print_fp 209edd2fa76Sschwarze.Fa "FILE *out_fp" 210edd2fa76Sschwarze.Fa "const EC_KEY *val_in" 211edd2fa76Sschwarze.Fc 212edd2fa76Sschwarze.In openssl/x509.h 213edd2fa76Sschwarze.Ft EC_KEY * 214edd2fa76Sschwarze.Fo d2i_EC_PUBKEY 215edd2fa76Sschwarze.Fa "EC_KEY **val_out" 216*6be8eaa4Stb.Fa "const unsigned char **der_in" 217edd2fa76Sschwarze.Fa "long length" 218edd2fa76Sschwarze.Fc 219edd2fa76Sschwarze.Ft int 220edd2fa76Sschwarze.Fo i2d_EC_PUBKEY 221edd2fa76Sschwarze.Fa "EC_KEY *val_in" 222*6be8eaa4Stb.Fa "unsigned char **der_out" 223edd2fa76Sschwarze.Fc 224edd2fa76Sschwarze.Ft EC_KEY * 225edd2fa76Sschwarze.Fo d2i_EC_PUBKEY_bio 226edd2fa76Sschwarze.Fa "BIO *in_bio" 227edd2fa76Sschwarze.Fa "EC_KEY **val_out" 228edd2fa76Sschwarze.Fc 229edd2fa76Sschwarze.Ft int 230edd2fa76Sschwarze.Fo i2d_EC_PUBKEY_bio 231edd2fa76Sschwarze.Fa "BIO *out_bio" 232edd2fa76Sschwarze.Fa "EC_KEY *val_in" 233edd2fa76Sschwarze.Fc 234edd2fa76Sschwarze.Ft EC_KEY * 235edd2fa76Sschwarze.Fo d2i_EC_PUBKEY_fp 236edd2fa76Sschwarze.Fa "FILE *in_fp" 237edd2fa76Sschwarze.Fa "EC_KEY **val_out" 238edd2fa76Sschwarze.Fc 239edd2fa76Sschwarze.Ft int 24030dcf770Sschwarze.Fo i2d_EC_PUBKEY_fp 241edd2fa76Sschwarze.Fa "FILE *out_fp" 242edd2fa76Sschwarze.Fa "EC_KEY *val_in" 2438e9bd067Sschwarze.Fc 244f75054deSschwarze.Sh DESCRIPTION 245edd2fa76SschwarzeThese functions decode and encode elliptic curve keys and parameters. 246edd2fa76SschwarzeFor details about the semantics, examples, caveats, and bugs, see 247edd2fa76Sschwarze.Xr ASN1_item_d2i 3 . 248f75054deSschwarze.Pp 249edd2fa76Sschwarze.Fn d2i_ECPKParameters 250edd2fa76Sschwarzeand 251f75054deSschwarze.Fn i2d_ECPKParameters 252edd2fa76Sschwarzedecode and encode the parameters of an elliptic curve. 253edd2fa76Sschwarze.Fn d2i_ECPKParameters_bio , 254edd2fa76Sschwarze.Fn i2d_ECPKParameters_bio , 255edd2fa76Sschwarze.Fn d2i_ECPKParameters_fp , 256edd2fa76Sschwarzeand 257f75054deSschwarze.Fn i2d_ECPKParameters_fp 258edd2fa76Sschwarzeare similar except that they decode or encode using a 259f75054deSschwarze.Vt BIO 260edd2fa76Sschwarzeor 261edd2fa76Sschwarze.Vt FILE 262edd2fa76Sschwarzepointer. 2638e9bd067SschwarzeThese four functions are currently implemented as macros. 2648e9bd067Sschwarze.Pp 2658e9bd067Sschwarze.Fn d2i_ECParameters 2668e9bd067Sschwarzedoes the same parsing as 2678e9bd067Sschwarze.Fn d2i_ECPKParameters 2688e9bd067Sschwarzebut saves the result in the 2698e9bd067Sschwarze.Fa group 2708e9bd067Sschwarzefield of an 2718e9bd067Sschwarze.Vt EC_KEY 2728e9bd067Sschwarzestructure. 2738e9bd067Sschwarze.Pp 2748e9bd067Sschwarze.Fn i2d_ECParameters 2758e9bd067Sschwarzeproduces the same output as 2768e9bd067Sschwarze.Fn i2d_ECPKParameters 2778e9bd067Sschwarzebut uses 278edd2fa76Sschwarze.Fa val_in->group 2798e9bd067Sschwarzefor input instead of 280edd2fa76Sschwarze.Fa val_in . 2818e9bd067Sschwarze.Pp 2828e9bd067Sschwarze.Fn ECParameters_dup 2839b38278bSschwarzeallocates and initializes an empty 2849b38278bSschwarze.Vt EC_KEY 2859b38278bSschwarzeobject and copies the EC parameters from 286edd2fa76Sschwarze.Fa val_in 2879b38278bSschwarzeto it by calling 2888e9bd067Sschwarze.Fn i2d_ECParameters 2898e9bd067Sschwarzeand 2908e9bd067Sschwarze.Fn d2i_ECParameters . 2919b38278bSschwarzeIf a private or public key or any flags are present in 2929b38278bSschwarze.Fa val_in , 2939b38278bSschwarzethey are not copied. 2948e9bd067Sschwarze.Pp 2958e9bd067Sschwarze.Fn d2i_ECPrivateKey 296edd2fa76Sschwarzeand 2978e9bd067Sschwarze.Fn i2d_ECPrivateKey 2989b38278bSschwarzedecode and encode an EC private key using an ASN.1 2999b38278bSschwarze.Vt ECPrivateKey 3009b38278bSschwarzestructure defined in RFC 5915 section 3 and used for the privateKey 3019b38278bSschwarzefield of the ASN.1 3029b38278bSschwarze.Vt PrivateKeyInfo 3039b38278bSschwarzestructure defined in RFC 5208 section 5, see 3049b38278bSschwarze.Xr PKCS8_PRIV_KEY_INFO_new 3 . 305edd2fa76Sschwarze.Fn d2i_ECPrivateKey_bio , 306edd2fa76Sschwarze.Fn i2d_ECPrivateKey_bio , 307edd2fa76Sschwarze.Fn d2i_ECPrivateKey_fp , 308edd2fa76Sschwarzeand 309edd2fa76Sschwarze.Fn i2d_ECPrivateKey_fp 310edd2fa76Sschwarzeare similar except that they decode or encode using a 311edd2fa76Sschwarze.Vt BIO 312edd2fa76Sschwarzeor 313edd2fa76Sschwarze.Vt FILE 314edd2fa76Sschwarzepointer. 3158e9bd067Sschwarze.Pp 3168e9bd067Sschwarze.Fn o2i_ECPublicKey 317edd2fa76Sschwarzeand 3188e9bd067Sschwarze.Fn i2o_ECPublicKey 319edd2fa76Sschwarzedecode and encode an EC public key. 3209b38278bSschwarzeIn contrast to 3219b38278bSschwarze.Xr ASN1_item_d2i 3 , 322edd2fa76Sschwarze.Fn o2i_ECPublicKey 3239b38278bSschwarzerequires 3249b38278bSschwarze.Fa val_out , 3259b38278bSschwarze.Pf * Fa val_out , 3269b38278bSschwarzeand 3279b38278bSschwarze.Po Pf * Fa val_out Pc Ns -> Ns Fa group 3289b38278bSschwarzeto be 3299b38278bSschwarze.Pf non- Dv NULL . 330f75054deSschwarze.Pp 331f75054deSschwarze.Fn ECPKParameters_print 332f75054deSschwarzeand 333f75054deSschwarze.Fn ECPKParameters_print_fp 334edd2fa76Sschwarzeprint human-readable output of the public parameters of the 335f75054deSschwarze.Vt EC_GROUP 336f75054deSschwarzeto 337edd2fa76Sschwarze.Fa out_bio 338f75054deSschwarzeor 339edd2fa76Sschwarze.Fa out_fp . 340f75054deSschwarzeThe output lines are indented by 341edd2fa76Sschwarze.Fa indent 342f75054deSschwarzespaces. 3438e9bd067Sschwarze.Pp 3448e9bd067Sschwarze.Fn ECParameters_print 3458e9bd067Sschwarzeand 3468e9bd067Sschwarze.Fn ECParameters_print_fp 3478e9bd067Sschwarzeprint the parameter components of 348edd2fa76Sschwarze.Fa val_in 3498e9bd067Sschwarzeto 350edd2fa76Sschwarze.Fa out_bio 3518e9bd067Sschwarzeor 352edd2fa76Sschwarze.Fa out_fp . 353edd2fa76Sschwarze.Pp 354edd2fa76Sschwarze.Fn d2i_EC_PUBKEY 355edd2fa76Sschwarzeand 356edd2fa76Sschwarze.Fn i2d_EC_PUBKEY 3579b38278bSschwarzedecode and encode an EC public key using an ASN.1 3589b38278bSschwarze.Vt SubjectPublicKeyInfo 3599b38278bSschwarzestructure defined in RFC 5280 section 4.1 and documented in 3609b38278bSschwarze.Xr X509_PUBKEY_new 3 . 361edd2fa76Sschwarze.Fn d2i_EC_PUBKEY_bio , 362edd2fa76Sschwarze.Fn i2d_EC_PUBKEY_bio , 363edd2fa76Sschwarze.Fn d2i_EC_PUBKEY_fp , 364edd2fa76Sschwarzeand 365edd2fa76Sschwarze.Fn i2d_EC_PUBKEY_fp 366edd2fa76Sschwarzeare similar except that they decode or encode using a 367edd2fa76Sschwarze.Vt BIO 368edd2fa76Sschwarzeor 369edd2fa76Sschwarze.Vt FILE 370edd2fa76Sschwarzepointer. 371f75054deSschwarze.Sh RETURN VALUES 372f75054deSschwarze.Fn d2i_ECPKParameters , 373f75054deSschwarze.Fn d2i_ECPKParameters_bio , 374f75054deSschwarzeand 375f75054deSschwarze.Fn d2i_ECPKParameters_fp 376f75054deSschwarzereturn a valid 377f75054deSschwarze.Vt EC_GROUP 378f75054deSschwarzestructure or 379f75054deSschwarze.Dv NULL 380f75054deSschwarzeif an error occurs. 381f75054deSschwarze.Pp 3828e9bd067Sschwarze.Fn d2i_ECParameters , 3838e9bd067Sschwarze.Fn ECParameters_dup , 3848e9bd067Sschwarze.Fn d2i_ECPrivateKey , 385edd2fa76Sschwarze.Fn d2i_ECPrivateKey_bio , 386edd2fa76Sschwarze.Fn d2i_ECPrivateKey_fp , 387edd2fa76Sschwarze.Fn o2i_ECPublicKey , 388edd2fa76Sschwarze.Fn d2i_EC_PUBKEY , 389edd2fa76Sschwarze.Fn d2i_EC_PUBKEY_bio , 3908e9bd067Sschwarzeand 391edd2fa76Sschwarze.Fn d2i_EC_PUBKEY_fp 3928e9bd067Sschwarzereturn a valid 3938e9bd067Sschwarze.Vt EC_KEY 3948e9bd067Sschwarzestructure or 3958e9bd067Sschwarze.Dv NULL 3968e9bd067Sschwarzeif an error occurs. 3978e9bd067Sschwarze.Pp 3988e9bd067Sschwarze.Fn i2d_ECPKParameters , 3998e9bd067Sschwarze.Fn i2d_ECParameters , 4008e9bd067Sschwarze.Fn i2d_ECPrivateKey , 401edd2fa76Sschwarze.Fn i2o_ECPublicKey , 4028e9bd067Sschwarzeand 403edd2fa76Sschwarze.Fn i2d_EC_PUBKEY 4048e9bd067Sschwarzereturn the number of bytes successfully encoded or a negative value if 405f75054deSschwarzean error occurs. 406f75054deSschwarze.Pp 407f75054deSschwarze.Fn i2d_ECPKParameters_bio , 408f75054deSschwarze.Fn i2d_ECPKParameters_fp , 409edd2fa76Sschwarze.Fn i2d_ECPrivateKey_bio , 41030dcf770Sschwarze.Fn i2d_ECPrivateKey_fp , 411f75054deSschwarze.Fn ECPKParameters_print , 4128e9bd067Sschwarze.Fn ECPKParameters_print_fp , 4138e9bd067Sschwarze.Fn ECParameters_print , 414edd2fa76Sschwarze.Fn ECParameters_print_fp , 415edd2fa76Sschwarze.Fn i2d_EC_PUBKEY_bio , 416f75054deSschwarzeand 41730dcf770Sschwarze.Fn i2d_EC_PUBKEY_fp 418f75054deSschwarzereturn 1 for success or 0 if an error occurs. 419f75054deSschwarze.Sh SEE ALSO 420edd2fa76Sschwarze.Xr ASN1_item_d2i 3 , 421f75054deSschwarze.Xr EC_GROUP_copy 3 , 422f75054deSschwarze.Xr EC_GROUP_new 3 , 423f75054deSschwarze.Xr EC_KEY_new 3 , 4249b38278bSschwarze.Xr EVP_PKEY_set1_EC_KEY 3 , 4259b38278bSschwarze.Xr PEM_write_ECPrivateKey 3 , 4269b38278bSschwarze.Xr PKCS8_PRIV_KEY_INFO_new 3 , 4279b38278bSschwarze.Xr X509_PUBKEY_new 3 4289b38278bSschwarze.Sh STANDARDS 4299b38278bSschwarzeRFC 5915: Elliptic Curve Private Key Structure 4309b38278bSschwarze.Pp 4319b38278bSschwarzeRFC 5208: Public-Key Cryptography Standards (PKCS) #8: 4329b38278bSschwarzePrivate-Key Information Syntax Specification 4339b38278bSschwarze.Pp 4349b38278bSschwarzeRFC 5280: Internet X.509 Public Key Infrastructure Certificate and 4359b38278bSschwarzeCertificate Revocation List (CRL) Profile, 4369b38278bSschwarzesection 4.1: Basic Certificate Fields 4372c07bb3bSschwarze.Sh HISTORY 4382c07bb3bSschwarze.Fn d2i_ECPKParameters , 4392c07bb3bSschwarze.Fn i2d_ECPKParameters , 4402c07bb3bSschwarze.Fn d2i_ECPKParameters_bio , 4412c07bb3bSschwarze.Fn i2d_ECPKParameters_bio , 4422c07bb3bSschwarze.Fn d2i_ECPKParameters_fP , 4432c07bb3bSschwarze.Fn i2d_ECPKParameters_fp , 4442c07bb3bSschwarze.Fn d2i_ECParameters , 4452c07bb3bSschwarze.Fn i2d_ECParameters , 4462c07bb3bSschwarze.Fn ECParameters_dup , 4472c07bb3bSschwarze.Fn d2i_ECPrivateKey , 4482c07bb3bSschwarze.Fn i2d_ECPrivateKey , 4492c07bb3bSschwarze.Fn d2i_ECPrivateKey_bio , 4502c07bb3bSschwarze.Fn i2d_ECPrivateKey_bio , 4512c07bb3bSschwarze.Fn d2i_ECPrivateKey_fp , 4522c07bb3bSschwarze.Fn i2d_ECPrivateKey_fp , 4532c07bb3bSschwarze.Fn o2i_ECPublicKey , 4542c07bb3bSschwarze.Fn i2o_ECPublicKey , 4552c07bb3bSschwarze.Fn ECPKParameters_print , 4562c07bb3bSschwarze.Fn ECPKParameters_print_fp , 4572c07bb3bSschwarze.Fn ECParameters_print , 4582c07bb3bSschwarze.Fn ECParameters_print_fp , 4592c07bb3bSschwarze.Fn d2i_EC_PUBKEY , 4602c07bb3bSschwarze.Fn i2d_EC_PUBKEY , 4612c07bb3bSschwarze.Fn d2i_EC_PUBKEY_bio , 4622c07bb3bSschwarze.Fn i2d_EC_PUBKEY_bio , 4632c07bb3bSschwarze.Fn d2i_EC_PUBKEY_fp , 4642c07bb3bSschwarzeand 4652c07bb3bSschwarze.Fn i2d_EC_PUBKEY_fp 4662c07bb3bSschwarzefirst appeared in OpenSSL 0.9.8 and have been available since 4672c07bb3bSschwarze.Ox 4.5 . 468