| =pod |
| |
| =head1 NAME |
| |
| OSSL_CMP_ATAV, |
| OSSL_CMP_ATAV_create, |
| OSSL_CMP_ATAV_set0, |
| OSSL_CMP_ATAV_get0_type, |
| OSSL_CMP_ATAV_get0_value, |
| OSSL_CMP_ATAV_new_algId, |
| OSSL_CMP_ATAV_get0_algId, |
| OSSL_CMP_ATAV_new_rsaKeyLen, |
| OSSL_CMP_ATAV_get_rsaKeyLen, |
| OSSL_CMP_ATAVS, |
| OSSL_CMP_ATAV_push1, |
| OSSL_CMP_ATAV_free |
| - OSSL_CMP_ATAV utility functions |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/cmp.h> |
| |
| typedef OSSL_CRMF_ATTRIBUTETYPEANDVALUE OSSL_CMP_ATAV; |
| OSSL_CMP_ATAV *OSSL_CMP_ATAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); |
| void OSSL_CMP_ATAV_set0(OSSL_CMP_ATAV *atav, ASN1_OBJECT *type, |
| ASN1_TYPE *value); |
| ASN1_OBJECT *OSSL_CMP_ATAV_get0_type(const OSSL_CMP_ATAV *atav); |
| ASN1_TYPE *OSSL_CMP_ATAV_get0_value(const OSSL_CMP_ATAV *atav); |
| |
| OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_algId(const X509_ALGOR *alg); |
| X509_ALGOR *OSSL_CMP_ATAV_get0_algId(const OSSL_CMP_ATAV *atav); |
| OSSL_CMP_ATAV *OSSL_CMP_ATAV_new_rsaKeyLen(int len); |
| int OSSL_CMP_ATAV_get_rsaKeyLen(const OSSL_CMP_ATAV *atav); |
| |
| typedef STACK_OF(OSSL_CRMF_ATTRIBUTETYPEANDVALUE) OSSL_CMP_ATAVS; |
| int OSSL_CMP_ATAV_push1(OSSL_CMP_ATAVS **sk_p, const OSSL_CMP_ATAV *atav); |
| void OSSL_CMP_ATAV_free(OSSL_CMP_ATAV *atav); |
| |
| =head1 DESCRIPTION |
| |
| B<OSSL_CMP_ATAV> is a short hand of B<OSSL_CRMF_ATTRIBUTETYPEANDVALUE>, |
| defined in RFC 4211 Appendix B. |
| It is typically used in CertRequest structures, |
| but also in CertReqTemplateContent structures for key specifications. |
| |
| OSSL_CMP_ATAV_create() creates a new B<OSSL_CMP_ATAV> structure and fills it in. |
| It combines OSSL_CMP_ATAV_new() and OSSL_CMP_ATAV_set0(). |
| |
| OSSL_CMP_ATAV_set0() sets the I<atav> with an infoType of I<type> and an |
| infoValue of I<value>. |
| The pointers I<type> and I<value> may be NULL, otherwise |
| they must B<not> be freed up after the call because their ownership |
| is transferred to I<atav>. The I<itav> pointer must not be NULL. |
| |
| OSSL_CMP_ATAV_get0_type() returns a direct pointer to the infoType |
| in the I<atav> unless it is NULL. |
| |
| OSSL_CMP_ATAV_get0_value() returns a direct pointer to the infoValue |
| in the I<atav> as generic B<ASN1_TYPE> pointer unless I<atav> is NULL. |
| |
| OSSL_CMP_ATAV_new_algId() creates a new B<OSSL_CMP_ATAV> structure of type |
| B<algId> and fills it in with a copy of the given I<alg>. |
| |
| OSSL_CMP_ATAV_get0_algId() returns |
| a direct pointer to the algId infoValue in the I<atav> of type B<X509_ALGOR> |
| or NULL if I<atav> is NULL or does not contain an algId. |
| |
| OSSL_CMP_ATAV_new_rsaKeyLen() creates a new B<OSSL_CMP_ATAV> structure of type |
| B<rsaKeyLen> and fills it in with the given I<len>, which must be positive. |
| |
| OSSL_CMP_ATAV_get_rsaKeyLen() returns |
| the RSA key length in rsaKeyLen infoValue in the I<atav>, |
| -1 if I<atav> is NULL or does not contain an rsaKeyLen or cannot be parsed, |
| or -2 if the value is less than 1 or is greater than INT_MAX. |
| |
| OSSL_CMP_ATAV_push1() pushes a copy of I<atav> to the stack of B<OSSL_CMP_ATAV> |
| pointed to by I<*sk_p>. It creates a new stack if I<*sk_p> points to NULL. |
| |
| OSSL_CMP_ATAV_free() deallocates I<atav>. It is defined as a macro. |
| |
| =head1 NOTES |
| |
| CMP is defined in RFC 9810. CRMF is defined in RFC 4211. |
| |
| =head1 RETURN VALUES |
| |
| OSSL_CMP_ATAV_create(), |
| OSSL_CMP_ATAV_new_algId(), and OSSL_CMP_ATAV_new_rsaKeyLen() |
| return a pointer to the ATAV structure on success, or NULL on error. |
| |
| OSSL_CMP_ATAV_set0() and OSSL_CMP_ATAV_free() do not return a value. |
| |
| OSSL_CMP_ATAV_get0_type(), OSSL_CMP_ATAV_get0_value(), and |
| OSSL_CMP_ATAV_get0_algId() |
| return the respective pointer or NULL if their input is NULL. |
| |
| OSSL_CMP_ATAV_get_rsaKeyLen() return a key length in bits or < 0 on error. |
| |
| OSSL_CMP_ATAV_push1() returns 1 on success, 0 on error. |
| |
| =head1 SEE ALSO |
| |
| L<OSSL_CMP_ITAV_new0_certReqTemplate(3)>, L<ASN1_TYPE_set(3)> |
| |
| =head1 HISTORY |
| |
| The B<OSSL_CMP_ATAV> type and related functions were added in OpenSSL 3.4. |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2022-2024 The OpenSSL Project Authors. All Rights Reserved. |
| |
| Licensed under the Apache License 2.0 (the "License"). You may not use |
| this file except in compliance with the License. You can obtain a copy |
| in the file LICENSE in the source distribution or at |
| L<https://www.openssl.org/source/license.html>. |
| |
| =cut |