[OpenBSD]

Manual Page Search Parameters

D2I_DSAPUBLICKEY(3) Library Functions Manual D2I_DSAPUBLICKEY(3)

d2i_DSAPublicKey, i2d_DSAPublicKey, d2i_DSA_PUBKEY, i2d_DSA_PUBKEY, d2i_DSA_PUBKEY_bio, d2i_DSA_PUBKEY_fp, i2d_DSA_PUBKEY_bio, i2d_DSA_PUBKEY_fp, d2i_DSAPrivateKey, i2d_DSAPrivateKey, d2i_DSAPrivateKey_bio, d2i_DSAPrivateKey_fp, i2d_DSAPrivateKey_bio, i2d_DSAPrivateKey_fp, d2i_DSAparams, i2d_DSAparams, d2i_DSAparams_bio, i2d_DSAparams_bio, d2i_DSAparams_fp, i2d_DSAparams_fp, DSAparams_dup, d2i_DSA_SIG, i2d_DSA_SIG
decode and encode DSA keys

#include <openssl/dsa.h>

DSA *
d2i_DSAPublicKey(DSA **val_out, const unsigned char **der_in, long length);

int
i2d_DSAPublicKey(const DSA *val_in, unsigned char **der_out);

#include <openssl/x509.h>

DSA *
d2i_DSA_PUBKEY(DSA **val_out, const unsigned char **der_in, long length);

int
i2d_DSA_PUBKEY(const DSA *val_in, unsigned char **der_out);

DSA *
d2i_DSA_PUBKEY_bio(BIO *in_bio, DSA **val_out);

DSA *
d2i_DSA_PUBKEY_fp(FILE *in_fp, DSA **val_out);

int
i2d_DSA_PUBKEY_bio(BIO *out_bio, DSA *val_in);

int
i2d_DSA_PUBKEY_fp(FILE *out_fp, DSA *val_in);

#include <openssl/dsa.h>

DSA *
d2i_DSAPrivateKey(DSA **val_out, const unsigned char **der_in, long length);

int
i2d_DSAPrivateKey(const DSA *val_in, unsigned char **der_out);

#include <openssl/x509.h>

DSA *
d2i_DSAPrivateKey_bio(BIO *in_bio, DSA **val_out);

DSA *
d2i_DSAPrivateKey_fp(FILE *in_fp, DSA **val_out);

int
i2d_DSAPrivateKey_bio(BIO *out_bio, DSA *val_in);

int
i2d_DSAPrivateKey_fp(FILE *out_fp, DSA *val_in);

#include <openssl/dsa.h>

DSA *
d2i_DSAparams(DSA **val_out, const unsigned char **der_in, long length);

int
i2d_DSAparams(const DSA *val_in, unsigned char **der_out);

DSA *
d2i_DSAparams_bio(BIO *in_bio, DSA **val_out);

int
i2d_DSAparams_bio(BIO *out_bio, DSA *val_in);

DSA *
d2i_DSAparams_fp(FILE *in_fp, DSA **val_out);

int
i2d_DSAparams_fp(FILE, *out_fp, DSA *val_in);

DSA *
DSAparams_dup(DSA *val_in);

DSA_SIG *
d2i_DSA_SIG(DSA_SIG **val_out, const unsigned char **der_in, long length);

int
i2d_DSA_SIG(const DSA_SIG *val_in, unsigned char **der_out);

These functions decode and encode DSA keys and parameters. For details about the semantics, examples, caveats, and bugs, see ASN1_item_d2i(3).

d2i_DSAPublicKey() and i2d_DSAPublicKey() decode and encode the DSA public key components using a non-standard format, so consider using d2i_DSA_PUBKEY() and i2d_DSA_PUBKEY() instead. The actual data encoded depends on the value of val_in->write_params. If val_in->write_params is zero, only the val_in->pub_key field is encoded as an ASN.1 INTEGER. If val_in->write_params is 1, then a SEQUENCE consisting of the val_in->p, val_in->q, val_in->g, and val_in->pub_key fields is encoded.

d2i_DSA_PUBKEY() and i2d_DSA_PUBKEY() decode and encode a DSA public key using an ASN.1 SubjectPublicKeyInfo structure defined in RFC 5280 section 4.1 and documented in X509_PUBKEY_new(3). d2i_DSA_PUBKEY_bio(), d2i_DSA_PUBKEY_fp(), i2d_DSA_PUBKEY_bio(), and i2d_DSA_PUBKEY_fp() are similar except that they decode or encode using a BIO or FILE pointer.

d2i_DSAPrivateKey() and i2d_DSAPrivateKey() decode and encode the DSA private key components. The DSA object passed to the private key encoding functions should have all the private key components present. These functions use a non-standard structure consisting of a SEQUENCE containing the val_in->p, val_in->q, val_in->g, val_in->pub_key, and val_in->priv_key fields. This data format is unencrypted. For private key security when writing private keys to files, consider using PEM_write_DSAPrivateKey(3) instead. d2i_DSAPrivateKey_bio(), d2i_DSAPrivateKey_fp(), i2d_DSAPrivateKey_bio(), and i2d_DSAPrivateKey_fp() are similar except that they decode or encode using a BIO or FILE pointer.

d2i_DSAparams() and i2d_DSAparams() decode and encode the DSA parameters using an ASN.1 Dss-Parms structure defined in RFC 3279 section 2.3.2 and used for the parameters field of the ASN.1 AlgorithmIdentifier structure defined in RFC 5280 section 4.1.1.2. d2i_DSAparams_bio(), i2d_DSAparams_bio(), d2i_DSAparams_fp(), i2d_DSAparams_fp() are similar except that they decode or encode using a BIO or FILE pointer.

DSAparams_dup() allocates and initializes an empty DSA object and copies the DSA parameters from val_in to it by calling i2d_DSAparams() and d2i_DSAparams(). If a private or public key are present in val_in, they are not copied.

d2i_DSA_SIG() and i2d_DSA_SIG() decode and encode a DSA signature using an ASN.1 Dss-Sig-Value structure as defined in RFC 3279 section 2.2.2 and used for the signatureValue field of the ASN.1 Certificate structure described in RFC 5280 sections 4.1.1.3 and 5.1.1.3.

d2i_DSAPublicKey(), d2i_DSA_PUBKEY(), d2i_DSA_PUBKEY_bio(), d2i_DSA_PUBKEY_fp(), d2i_DSAPrivateKey(), d2i_DSAPrivateKey_bio(), d2i_DSAPrivateKey_fp(), d2i_DSAparams(), d2i_DSAparams_bio(), d2i_DSAparams_fp(), and DSAparams_dup() return a valid DSA object or NULL if an error occurs.

d2i_DSA_SIG() returns a valid DSA_SIG object or NULL if an error occurs.

ASN1_item_d2i(3), DSA_new(3), DSA_SIG_new(3), EVP_PKEY_set1_DSA(3), PEM_write_DSAPrivateKey(3), X509_PUBKEY_new(3)

RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, section 4.1: Basic Certificate Fields

RFC 3279: Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile:

d2i_DSAPublicKey(), i2d_DSAPublicKey(), d2i_DSAPrivateKey(), and i2d_DSAPrivateKey() first appeared in SSLeay 0.6.0. d2i_DSAPrivateKey_bio(), d2i_DSAPrivateKey_fp(), i2d_DSAPrivateKey_bio(), i2d_DSAPrivateKey_fp(), d2i_DSAparams(), i2d_DSAparams(), d2i_DSAparams_bio(), i2d_DSAparams_bio(), d2i_DSAparams_fp(), i2d_DSAparams_fp(), and DSAparams_dup() first appeared in SSLeay 0.8.0. These functions have been available since OpenBSD 2.4.

d2i_DSA_SIG() and i2d_DSA_SIG() first appeared in OpenSSL 0.9.3 and have been available since OpenBSD 2.6.

d2i_DSA_PUBKEY(), i2d_DSA_PUBKEY(), d2i_DSA_PUBKEY_bio(), d2i_DSA_PUBKEY_fp(), i2d_DSA_PUBKEY_bio(), and i2d_DSA_PUBKEY_fp() first appeared in OpenSSL 0.9.5 and have been available since OpenBSD 2.7.

August 26, 2018 OpenBSD-current