1*b077aed3SPierre Pronchery=pod 2*b077aed3SPierre Pronchery 3*b077aed3SPierre Pronchery=head1 NAME 4*b077aed3SPierre Pronchery 5*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_IR, 6*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_IP, 7*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CR, 8*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CP, 9*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_P10CR, 10*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_POPDECC, 11*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_POPDECR, 12*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_KUR, 13*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_KUP, 14*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_KRR, 15*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_KRP, 16*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_RR, 17*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_RP, 18*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CCR, 19*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CCP, 20*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CKUANN, 21*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CANN, 22*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_RANN, 23*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CRLANN, 24*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_PKICONF, 25*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_NESTED, 26*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_GENM, 27*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_GENP, 28*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_ERROR, 29*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_CERTCONF, 30*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_POLLREQ, 31*b077aed3SPierre ProncheryOSSL_CMP_PKIBODY_POLLREP, 32*b077aed3SPierre Proncheryossl_cmp_bodytype_to_string, 33*b077aed3SPierre Proncheryossl_cmp_msg_get_bodytype, 34*b077aed3SPierre Proncheryossl_cmp_msg_set_bodytype, 35*b077aed3SPierre Proncheryossl_cmp_msg_create, 36*b077aed3SPierre Proncheryossl_cmp_msg_gen_ITAV_push0, 37*b077aed3SPierre Proncheryossl_cmp_msg_gen_ITAVs_push1 38*b077aed3SPierre Pronchery- functions handling CMP messages 39*b077aed3SPierre Pronchery 40*b077aed3SPierre Pronchery=head1 SYNOPSIS 41*b077aed3SPierre Pronchery 42*b077aed3SPierre Pronchery #include "cmp_local.h" 43*b077aed3SPierre Pronchery 44*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_IR 0 45*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_IP 1 46*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CR 2 47*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CP 3 48*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_P10CR 4 49*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_POPDECC 5 50*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_POPDECR 6 51*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_KUR 7 52*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_KUP 8 53*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_KRR 9 54*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_KRP 10 55*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_RR 11 56*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_RP 12 57*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CCR 13 58*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CCP 14 59*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CKUANN 15 60*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CANN 16 61*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_RANN 17 62*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CRLANN 18 63*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_PKICONF 19 64*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_NESTED 20 65*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_GENM 21 66*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_GENP 22 67*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_ERROR 23 68*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_CERTCONF 24 69*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_POLLREQ 25 70*b077aed3SPierre Pronchery #define OSSL_CMP_PKIBODY_POLLREP 26 71*b077aed3SPierre Pronchery 72*b077aed3SPierre Pronchery const char *ossl_cmp_bodytype_to_string(int type); 73*b077aed3SPierre Pronchery int ossl_cmp_msg_get_bodytype(const OSSL_CMP_MSG *msg); 74*b077aed3SPierre Pronchery int ossl_cmp_msg_set_bodytype( OSSL_CMP_MSG *msg, int type); 75*b077aed3SPierre Pronchery OSSL_CMP_MSG *ossl_cmp_msg_create(OSSL_CMP_CTX *ctx, int bodytype); 76*b077aed3SPierre Pronchery int ossl_cmp_msg_gen_ITAV_push0(OSSL_CMP_MSG *msg, OSSL_CMP_ITAV *itav); 77*b077aed3SPierre Pronchery int ossl_cmp_msg_gen_ITAVs_push1(OSSL_CMP_MSG *msg, 78*b077aed3SPierre Pronchery STACK_OF(OSSL_CMP_ITAV) *itavs); 79*b077aed3SPierre Pronchery 80*b077aed3SPierre Pronchery=head1 DESCRIPTION 81*b077aed3SPierre Pronchery 82*b077aed3SPierre Proncheryossl_cmp_bodytype_to_string() returns the name of the given body type as string, 83*b077aed3SPierre Proncheryor "illegal body type" on error. 84*b077aed3SPierre Pronchery 85*b077aed3SPierre Proncheryossl_cmp_msg_get_bodytype() returns the body type of the given PKIMessage, 86*b077aed3SPierre Proncheryor -1 on error. 87*b077aed3SPierre Pronchery 88*b077aed3SPierre Proncheryossl_cmp_msg_set_bodytype() sets the type of the message contained in 89*b077aed3SPierre Proncherythe PKIMessage body field. 90*b077aed3SPierre ProncheryReturns 1 on success, 0 on error. 91*b077aed3SPierre Pronchery 92*b077aed3SPierre Proncheryossl_cmp_msg_create() creates and initializes an B<OSSL_CMP_MSG> structure, 93*b077aed3SPierre Proncheryusing fields of B<ctx> for the header and B<bodytype> for the body. 94*b077aed3SPierre ProncheryIf the current B<transactionID> field in I<ctx> indicates that there is no 95*b077aed3SPierre Proncherycurrent transaction, it creates and stores a random one with 128 bits length. 96*b077aed3SPierre ProncheryThus, the I<ctx> may be modified by this and related ossl_cmp_*_new() functions. 97*b077aed3SPierre ProncheryReturns pointer to created B<OSSL_CMP_MSG> on success, NULL on error. 98*b077aed3SPierre Pronchery 99*b077aed3SPierre Proncheryossl_cmp_msg_gen_ITAV_push0() pushes the B<itav> to the body of the 100*b077aed3SPierre ProncheryPKIMessage B<msg> of GenMsg or GenRep type. Consumes the B<itavs> pointer. 101*b077aed3SPierre ProncheryReturns 1 on success, 0 on error. 102*b077aed3SPierre Pronchery 103*b077aed3SPierre Proncheryossl_cmp_msg_gen_ITAVs_push1() adds a copy of the B<itavs> stack to the body 104*b077aed3SPierre Proncheryof the PKIMessage B<msg> of GenMsg or GenRep type. 105*b077aed3SPierre ProncheryDoes not consume the B<itavs> pointer nor its elements. 106*b077aed3SPierre ProncheryReturns 1 on success, 0 on error. 107*b077aed3SPierre Pronchery 108*b077aed3SPierre Pronchery=head1 NOTES 109*b077aed3SPierre Pronchery 110*b077aed3SPierre ProncheryCMP is defined in RFC 4210 (and CRMF in RFC 4211). 111*b077aed3SPierre Pronchery 112*b077aed3SPierre Pronchery=head1 RETURN VALUES 113*b077aed3SPierre Pronchery 114*b077aed3SPierre ProncherySee the individual functions above. 115*b077aed3SPierre Pronchery 116*b077aed3SPierre Pronchery=head1 SEE ALSO 117*b077aed3SPierre Pronchery 118*b077aed3SPierre ProncheryL<ossl_cmp_hdr_init(3)>, 119*b077aed3SPierre ProncheryL<OSSL_CMP_CTX_new(3)>, L<OSSL_CMP_exec_certreq(3)> 120*b077aed3SPierre Pronchery 121*b077aed3SPierre Pronchery=head1 HISTORY 122*b077aed3SPierre Pronchery 123*b077aed3SPierre ProncheryThe OpenSSL CMP support was added in OpenSSL 3.0. 124*b077aed3SPierre Pronchery 125*b077aed3SPierre Pronchery=head1 COPYRIGHT 126*b077aed3SPierre Pronchery 127*b077aed3SPierre ProncheryCopyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. 128*b077aed3SPierre Pronchery 129*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 130*b077aed3SPierre Proncherythis file except in compliance with the License. You can obtain a copy 131*b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at 132*b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>. 133*b077aed3SPierre Pronchery 134*b077aed3SPierre Pronchery=cut 135