.\" $OpenBSD: PKCS7_set_type.3,v 1.2 2020/05/20 11:40:26 schwarze Exp $ .\" .\" Copyright (c) 2020 Ingo Schwarze .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd $Mdocdate: May 20 2020 $ .Dt PKCS7_SET_TYPE 3 .Os .Sh NAME .Nm PKCS7_set_type , .Nm PKCS7_set0_type_other .Nd initialize type of PKCS#7 ContentInfo .Sh SYNOPSIS .In openssl/pkcs7.h .Ft int .Fo PKCS7_set_type .Fa "PKCS7 *p7" .Fa "int type" .Fc .Ft int .Fo PKCS7_set0_type_other .Fa "PKCS7 *p7" .Fa "int type" .Fa "ASN1_TYPE *content" .Fc .Sh DESCRIPTION These functions set the .Fa type of an unused .Vt ContentInfo structure .Fa p7 . .Pp The function .Fn PKCS7_set_type also allocates and initializes an empty child object in .Fa p7 . The .Fa type argument can be any of these NIDs, creating a child object of the indicated data type: .Pp .Bl -column NID_pkcs7_signedAndEnveloped PKCS7_SIGN_ENVELOPE n.a. -compact .It Fa type No argument Ta data type of child Ta version .It Dv NID_pkcs7_data Ta Vt ASN1_OCTET_STRING Ta n.a. .It Dv NID_pkcs7_digest Ta Vt PKCS7_DIGEST Ta 0 .It Dv NID_pkcs7_encrypted Ta Vt PKCS7_ENCRYPT Ta 0 .It Dv NID_pkcs7_enveloped Ta Vt PKCS7_ENVELOPE Ta 0 .It Dv NID_pkcs7_signed Ta Vt PKCS7_SIGNED Ta 1 .It Dv NID_pkcs7_signedAndEnveloped Ta Vt PKCS7_SIGN_ENVELOPE Ta 1 .El .Pp If the provided .Fa type is invalid, .Fa p7 remains unchanged and .Fn PKCS7_set_type fails. .Pp If memory allocation fails, .Fn PKCS7_set_type fails and .Fa p7 may remain in an inconsistent state. .Pp The function .Fn PKCS7_set0_type_other accepts an arbitrary NID as the .Fa type and also sets the .Fa content , neither checking it in any way nor copying it. .Pp For both functions, the rest of the internal state of .Fa p7 remains unchanged. .Sh RETURN VALUES The function .Fn PKCS7_set_type returns 1 on success or 0 on failure. .Pp The function .Fn PKCS7_set0_type_other does no error handling at all and always returns 1. .Sh SEE ALSO .Xr ASN1_OCTET_STRING_new 3 , .Xr ASN1_TYPE_new 3 , .Xr PKCS7_encrypt 3 , .Xr PKCS7_new 3 , .Xr PKCS7_set_content 3 , .Xr PKCS7_sign 3 .Sh HISTORY The function .Fn PKCS7_set_type first appeared in SSLeay 0.8.1 and .Fn PKCS7_set0_type_other in OpenSSL 0.9.8. Both have been available since .Ox 2.4 . .Sh CAVEATS If .Fa p7 has already been in use before being passed to one of these functions, it will report success even though it leaks memory. Later on, if other functions try to use .Fa p7 in its former role, they are likely to misbehave.