1.\" $OpenBSD: d2i_TS_REQ.3,v 1.2 2018/03/23 04:34:23 schwarze Exp $ 2.\" 3.\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org> 4.\" 5.\" Permission to use, copy, modify, and distribute this software for any 6.\" purpose with or without fee is hereby granted, provided that the above 7.\" copyright notice and this permission notice appear in all copies. 8.\" 9.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16.\" 17.Dd $Mdocdate: March 23 2018 $ 18.Dt D2I_TS_REQ 3 19.Os 20.Sh NAME 21.Nm d2i_TS_REQ , 22.Nm i2d_TS_REQ , 23.Nm d2i_TS_REQ_bio , 24.Nm i2d_TS_REQ_bio , 25.Nm d2i_TS_REQ_fp , 26.Nm i2d_TS_REQ_fp , 27.Nm d2i_TS_RESP , 28.Nm i2d_TS_RESP , 29.Nm d2i_TS_RESP_bio , 30.Nm i2d_TS_RESP_bio , 31.Nm d2i_TS_RESP_fp , 32.Nm i2d_TS_RESP_fp , 33.Nm d2i_TS_STATUS_INFO , 34.Nm i2d_TS_STATUS_INFO , 35.Nm d2i_TS_TST_INFO , 36.Nm i2d_TS_TST_INFO , 37.Nm d2i_TS_TST_INFO_bio , 38.Nm i2d_TS_TST_INFO_bio , 39.Nm d2i_TS_TST_INFO_fp , 40.Nm i2d_TS_TST_INFO_fp , 41.Nm d2i_TS_ACCURACY , 42.Nm i2d_TS_ACCURACY , 43.Nm d2i_TS_MSG_IMPRINT , 44.Nm i2d_TS_MSG_IMPRINT , 45.Nm d2i_TS_MSG_IMPRINT_bio , 46.Nm i2d_TS_MSG_IMPRINT_bio , 47.Nm d2i_TS_MSG_IMPRINT_fp , 48.Nm i2d_TS_MSG_IMPRINT_fp 49.Nd decode and encode X.509 time-stamp protocol structures 50.Sh SYNOPSIS 51.In openssl/ts.h 52.Ft TS_REQ * 53.Fo d2i_TS_REQ 54.Fa "TS_REQ **val_out" 55.Fa "const unsigned char **der_in" 56.Fa "long length" 57.Fc 58.Ft int 59.Fo i2d_TS_REQ 60.Fa "const TS_REQ *val_in" 61.Fa "unsigned char **der_out" 62.Fc 63.Ft TS_REQ * 64.Fo d2i_TS_REQ_bio 65.Fa "BIO *in_bio" 66.Fa "TS_REQ **val_out" 67.Fc 68.Ft int 69.Fo i2d_TS_REQ_bio 70.Fa "BIO *out_bio" 71.Fa "TS_REQ *val_in" 72.Fc 73.Ft TS_REQ * 74.Fo d2i_TS_REQ_fp 75.Fa "FILE *in_fp" 76.Fa "TS_REQ **val_out" 77.Fc 78.Ft int 79.Fo i2d_TS_REQ_fp 80.Fa "FILE *out_fp" 81.Fa "TS_REQ *val_in" 82.Fc 83.Ft TS_RESP * 84.Fo d2i_TS_RESP 85.Fa "TS_RESP **val_out" 86.Fa "const unsigned char **der_in" 87.Fa "long length" 88.Fc 89.Ft int 90.Fo i2d_TS_RESP 91.Fa "const TS_RESP *val_in" 92.Fa "unsigned char **der_out" 93.Fc 94.Ft TS_RESP * 95.Fo d2i_TS_RESP_bio 96.Fa "BIO *in_bio" 97.Fa "TS_RESP **val_out" 98.Fc 99.Ft int 100.Fo i2d_TS_RESP_bio 101.Fa "BIO *out_bio" 102.Fa "TS_RESP *val_in" 103.Fc 104.Ft TS_RESP * 105.Fo d2i_TS_RESP_fp 106.Fa "FILE *in_fp" 107.Fa "TS_RESP **val_out" 108.Fc 109.Ft int 110.Fo i2d_TS_RESP_fp 111.Fa "FILE *out_fp" 112.Fa "TS_RESP *val_in" 113.Fc 114.Ft TS_STATUS_INFO * 115.Fo d2i_TS_STATUS_INFO 116.Fa "TS_STATUS_INFO **val_out" 117.Fa "const unsigned char **der_in" 118.Fa "long length" 119.Fc 120.Ft int 121.Fo i2d_TS_STATUS_INFO 122.Fa "const TS_STATUS_INFO *val_in" 123.Fa "unsigned char **der_out" 124.Fc 125.Ft TS_TST_INFO * 126.Fo d2i_TS_TST_INFO 127.Fa "TS_TST_INFO **val_out" 128.Fa "const unsigned char **der_in" 129.Fa "long length" 130.Fc 131.Ft int 132.Fo i2d_TS_TST_INFO 133.Fa "const TS_TST_INFO *val_in" 134.Fa "unsigned char **der_out" 135.Fc 136.Ft TS_TST_INFO * 137.Fo d2i_TS_TST_INFO_bio 138.Fa "BIO *in_bio" 139.Fa "TS_TST_INFO **val_out" 140.Fc 141.Ft int 142.Fo i2d_TS_TST_INFO_bio 143.Fa "BIO *out_bio" 144.Fa "TS_TST_INFO *val_in" 145.Fc 146.Ft TS_TST_INFO * 147.Fo d2i_TS_TST_INFO_fp 148.Fa "FILE *in_fp" 149.Fa "TS_TST_INFO **val_out" 150.Fc 151.Ft int 152.Fo i2d_TS_TST_INFO_fp 153.Fa "FILE *out_fp" 154.Fa "TS_TST_INFO *val_in" 155.Fc 156.Ft TS_ACCURACY * 157.Fo d2i_TS_ACCURACY 158.Fa "TS_ACCURACY **val_out" 159.Fa "const unsigned char **der_in" 160.Fa "long length" 161.Fc 162.Ft int 163.Fo i2d_TS_ACCURACY 164.Fa "const TS_ACCURACY *val_in" 165.Fa "unsigned char **der_out" 166.Fc 167.Ft TS_MSG_IMPRINT * 168.Fo d2i_TS_MSG_IMPRINT 169.Fa "TS_MSG_IMPRINT **val_out" 170.Fa "const unsigned char **der_in" 171.Fa "long length" 172.Fc 173.Ft int 174.Fo i2d_TS_MSG_IMPRINT 175.Fa "const TS_MSG_IMPRINT *val_in" 176.Fa "unsigned char **der_out" 177.Fc 178.Ft TS_MSG_IMPRINT * 179.Fo d2i_TS_MSG_IMPRINT_bio 180.Fa "BIO *in_bio" 181.Fa "TS_MSG_IMPRINT **val_out" 182.Fc 183.Ft int 184.Fo i2d_TS_MSG_IMPRINT_bio 185.Fa "BIO *out_bio" 186.Fa "TS_MSG_IMPRINT *val_in" 187.Fc 188.Ft TS_MSG_IMPRINT * 189.Fo d2i_TS_MSG_IMPRINT_fp 190.Fa "FILE *in_fp" 191.Fa "TS_MSG_IMPRINT **val_out" 192.Fc 193.Ft int 194.Fo i2d_TS_MSG_IMPRINT_fp 195.Fa "FILE *out_fp" 196.Fa "TS_MSG_IMPRINT *val_in" 197.Fc 198.Sh DESCRIPTION 199These functions decode and encode X.509 structures used for the 200time-stamp protocol. 201For details about the semantics, examples, caveats, and bugs, see 202.Xr ASN1_item_d2i 3 . 203.Pp 204.Fn d2i_TS_REQ 205and 206.Fn i2d_TS_REQ 207decode and encode an ASN.1 208.Vt TimeStampReq 209structure defined in RFC 3161 section 2.4.1. 210.Fn d2i_TS_REQ_bio , 211.Fn i2d_TS_REQ_bio , 212.Fn d2i_TS_REQ_fp , 213and 214.Fn i2d_TS_REQ_fp 215are similar except that they decode or encode using a 216.Vt BIO 217or 218.Vt FILE 219pointer. 220.Pp 221.Fn d2i_TS_RESP 222and 223.Fn i2d_TS_RESP 224decode and encode an ASN.1 225.Vt TimeStampResp 226structure defined in RFC 3161 section 2.4.2. 227.Fn d2i_TS_RESP_bio , 228.Fn i2d_TS_RESP_bio , 229.Fn d2i_TS_RESP_fp , 230and 231.Fn i2d_TS_RESP_fp 232are similar except that they decode or encode using a 233.Vt BIO 234or 235.Vt FILE 236pointer. 237.Pp 238.Fn d2i_TS_STATUS_INFO 239and 240.Fn i2d_TS_STATUS_INFO 241decode and encode an ASN.1 242.Vt PKIStatusInfo 243structure defined in RFC 3161 section 2.4.2. 244.Pp 245.Fn d2i_TS_TST_INFO 246and 247.Fn i2d_TS_TST_INFO 248decode and encode an ASN.1 249.Vt TSTInfo 250structure defined in RFC 3161 section 2.4.2. 251.Fn d2i_TS_TST_INFO_bio , 252.Fn i2d_TS_TST_INFO_bio , 253.Fn d2i_TS_TST_INFO_fp , 254and 255.Fn i2d_TS_TST_INFO_fp 256are similar except that they decode or encode using a 257.Vt BIO 258or 259.Vt FILE 260pointer. 261.Pp 262.Fn d2i_TS_ACCURACY 263and 264.Fn i2d_TS_ACCURACY 265decode and encode an ASN.1 266.Vt Accuracy 267structure defined in RFC 3161 section 2.4.2. 268.Pp 269.Fn d2i_TS_MSG_IMPRINT 270and 271.Fn i2d_TS_MSG_IMPRINT 272decode and encode an ASN.1 273.Vt MessageImprint 274structure defined in RFC 3161 section 2.4.1. 275.Fn d2i_TS_MSG_IMPRINT_bio , 276.Fn i2d_TS_MSG_IMPRINT_bio , 277.Fn d2i_TS_MSG_IMPRINT_fp , 278and 279.Fn i2d_TS_MSG_IMPRINT_fp 280are similar except that they decode or encode using a 281.Vt BIO 282or 283.Vt FILE 284pointer. 285.Sh RETURN VALUES 286.Fn d2i_TS_REQ , 287.Fn d2i_TS_REQ_bio , 288.Fn d2i_TS_REQ_fp , 289.Fn d2i_TS_RESP , 290.Fn d2i_TS_RESP_bio , 291.Fn d2i_TS_RESP_fp , 292.Fn d2i_TS_STATUS_INFO , 293.Fn d2i_TS_TST_INFO , 294.Fn d2i_TS_TST_INFO_bio , 295.Fn d2i_TS_TST_INFO_fp , 296.Fn d2i_TS_ACCURACY , 297.Fn d2i_TS_MSG_IMPRINT , 298.Fn d2i_TS_MSG_IMPRINT_bio , 299and 300.Fn d2i_TS_MSG_IMPRINT_fp 301return an object of the respective type or 302.Dv NULL 303if an error occurs. 304.Pp 305.Fn i2d_TS_REQ , 306.Fn i2d_TS_RESP , 307.Fn i2d_TS_STATUS_INFO , 308.Fn i2d_TS_TST_INFO , 309.Fn i2d_TS_ACCURACY , 310and 311.Fn i2d_TS_MSG_IMPRINT 312return the number of bytes successfully encoded or a negative value 313if an error occurs. 314.Pp 315.Fn i2d_TS_REQ_bio , 316.Fn i2d_TS_REQ_fp , 317.Fn i2d_TS_RESP_bio , 318.Fn i2d_TS_RESP_fp , 319.Fn i2d_TS_TST_INFO_bio , 320.Fn i2d_TS_TST_INFO_fp , 321.Fn i2d_TS_MSG_IMPRINT_bio , 322and 323.Fn i2d_TS_MSG_IMPRINT_fp 324return 1 for success or 0 if an error occurs. 325.Sh SEE ALSO 326.Xr ASN1_item_d2i 3 , 327.Xr TS_REQ_new 3 328.Sh STANDARDS 329RFC 3161: Internet X.509 Public Key Infrastructure Time-Stamp Protocol 330.Sh HISTORY 331These functions first appeared in OpenSSL 1.0.0 332and have been available since 333.Ox 4.9 . 334