Blame doc/man3/ASN1_STRING_length.pod

Packit c4476c
=pod
Packit c4476c
Packit c4476c
=head1 NAME
Packit c4476c
Packit c4476c
ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length,
Packit c4476c
ASN1_STRING_type, ASN1_STRING_get0_data, ASN1_STRING_data,
Packit c4476c
ASN1_STRING_to_UTF8 - ASN1_STRING utility functions
Packit c4476c
Packit c4476c
=head1 SYNOPSIS
Packit c4476c
Packit c4476c
 #include <openssl/asn1.h>
Packit c4476c
Packit c4476c
 int ASN1_STRING_length(ASN1_STRING *x);
Packit c4476c
 const unsigned char * ASN1_STRING_get0_data(const ASN1_STRING *x);
Packit c4476c
 unsigned char * ASN1_STRING_data(ASN1_STRING *x);
Packit c4476c
Packit c4476c
 ASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a);
Packit c4476c
Packit c4476c
 int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);
Packit c4476c
Packit c4476c
 int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
Packit c4476c
Packit c4476c
 int ASN1_STRING_type(const ASN1_STRING *x);
Packit c4476c
Packit c4476c
 int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in);
Packit c4476c
Packit c4476c
=head1 DESCRIPTION
Packit c4476c
Packit c4476c
These functions allow an B<ASN1_STRING> structure to be manipulated.
Packit c4476c
Packit c4476c
ASN1_STRING_length() returns the length of the content of B<x>.
Packit c4476c
Packit c4476c
ASN1_STRING_get0_data() returns an internal pointer to the data of B<x>.
Packit c4476c
Since this is an internal pointer it should B<not> be freed or
Packit c4476c
modified in any way.
Packit c4476c
Packit c4476c
ASN1_STRING_data() is similar to ASN1_STRING_get0_data() except the
Packit c4476c
returned value is not constant. This function is deprecated:
Packit c4476c
applications should use ASN1_STRING_get0_data() instead.
Packit c4476c
Packit c4476c
ASN1_STRING_dup() returns a copy of the structure B.
Packit c4476c
Packit c4476c
ASN1_STRING_cmp() compares B and B returning 0 if the two
Packit c4476c
are identical. The string types and content are compared.
Packit c4476c
Packit c4476c
ASN1_STRING_set() sets the data of string B<str> to the buffer
Packit c4476c
B<data> or length B<len>. The supplied data is copied. If B<len>
Packit c4476c
is -1 then the length is determined by strlen(data).
Packit c4476c
Packit c4476c
ASN1_STRING_type() returns the type of B<x>, using standard constants
Packit c4476c
such as B<V_ASN1_OCTET_STRING>.
Packit c4476c
Packit c4476c
ASN1_STRING_to_UTF8() converts the string B<in> to UTF8 format, the
Packit c4476c
converted data is allocated in a buffer in B<*out>. The length of
Packit c4476c
B<out> is returned or a negative error code. The buffer B<*out>
Packit c4476c
should be freed using OPENSSL_free().
Packit c4476c
Packit c4476c
=head1 NOTES
Packit c4476c
Packit c4476c
Almost all ASN1 types in OpenSSL are represented as an B<ASN1_STRING>
Packit c4476c
structure. Other types such as B<ASN1_OCTET_STRING> are simply typedef'ed
Packit c4476c
to B<ASN1_STRING> and the functions call the B<ASN1_STRING> equivalents.
Packit c4476c
B<ASN1_STRING> is also used for some B<CHOICE> types which consist
Packit c4476c
entirely of primitive string types such as B<DirectoryString> and
Packit c4476c
B<Time>.
Packit c4476c
Packit c4476c
These functions should B<not> be used to examine or modify B<ASN1_INTEGER>
Packit c4476c
or B<ASN1_ENUMERATED> types: the relevant B<INTEGER> or B<ENUMERATED>
Packit c4476c
utility functions should be used instead.
Packit c4476c
Packit c4476c
In general it cannot be assumed that the data returned by ASN1_STRING_data()
Packit c4476c
is null terminated or does not contain embedded nulls. The actual format
Packit c4476c
of the data will depend on the actual string type itself: for example
Packit c4476c
for an IA5String the data will be ASCII, for a BMPString two bytes per
Packit c4476c
character in big endian format, and for an UTF8String it will be in UTF8 format.
Packit c4476c
Packit c4476c
Similar care should be take to ensure the data is in the correct format
Packit c4476c
when calling ASN1_STRING_set().
Packit c4476c
Packit c4476c
=head1 RETURN VALUES
Packit c4476c
Packit c4476c
ASN1_STRING_length() returns the length of the content of B<x>.
Packit c4476c
Packit c4476c
ASN1_STRING_get0_data() and ASN1_STRING_data() return an internal pointer to
Packit c4476c
the data of B<x>.
Packit c4476c
Packit c4476c
ASN1_STRING_dup() returns a valid B<ASN1_STRING> structure or B<NULL> if an
Packit c4476c
error occurred.
Packit c4476c
Packit c4476c
ASN1_STRING_cmp() returns an integer greater than, equal to, or less than 0,
Packit c4476c
according to whether B is greater than, equal to, or less than B.
Packit c4476c
Packit c4476c
ASN1_STRING_set() returns 1 on success or 0 on error.
Packit c4476c
Packit c4476c
ASN1_STRING_type() returns the type of B<x>.
Packit c4476c
Packit c4476c
ASN1_STRING_to_UTF8() returns the number of bytes in output string B<out> or a
Packit c4476c
negative value if an error occurred.
Packit c4476c
Packit c4476c
=head1 SEE ALSO
Packit c4476c
Packit c4476c
L<ERR_get_error(3)>
Packit c4476c
Packit c4476c
=head1 COPYRIGHT
Packit c4476c
Packit c4476c
Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
Packit c4476c
Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
this file except in compliance with the License.  You can obtain a copy
Packit c4476c
in the file LICENSE in the source distribution or at
Packit c4476c
L<https://www.openssl.org/source/license.html>.
Packit c4476c
Packit c4476c
=cut