The following structures are used by the PEM library.
This is a subfield of the PEM_CTX structure:
typedef struct pem_recip_st { char *name; X509_NAME *dn; int cipher; int key_enc; char iv[8]; } PEM_USER;
typedef struct pem_ctx_st { int type; /* what type of object */ struct { int version; int mode; } proc_type; char *domain; struct { int cipher; unsigned char iv[8]; } DEK_info; PEM_USER *originator; int num_recipient; PEM_USER **recipient; #ifdef HEADER_STACK_H STACK *x509_chain; /* certificate chain */ #else char *x509_chain; /* certificate chain */ #endif EVP_MD *md; /* signature type */ int md_enc; /* is the md encrypted or not? */ int md_len; /* length of md_data */ char *md_data; /* message digest, could be pkey encrypted */ EVP_CIPHER *dec; /* date encryption cipher */ int key_len; /* key length */ unsigned char *key; /* key */ unsigned char iv[8]; /* the iv */ int data_enc; /* is the data encrypted */ int data_len; unsigned char *data; } PEM_CTX;
typedef struct PEM_Encode_Seal_st { EVP_ENCODE_CTX encode; EVP_MD_CTX md; EVP_CIPHER_CTX cipher; } PEM_ENCODE_SEAL_CTX;