ASN1_STRING_LENGTH(3ossl)
π NAME π
okay bestie, welcome to the OpenSSL manual page ASN1_STRING_LENGTH(3ossl) β yes, thatβs the title, and itβs giving βutility functions for ASN1_STRINGβ energy. This page covers ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length, ASN1_STRING_type, ASN1_STRING_get0_data, ASN1_STRING_data, and ASN1_STRING_to_UTF8 β all the ASN1_STRING utility functions, no cap.
β¨ SYNOPSIS β¨
#include <openssl/asn1.h>
int ASN1_STRING_length(ASN1_STRING *x);
const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x);
unsigned char *ASN1_STRING_data(ASN1_STRING *x);
ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);
int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);
int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
int ASN1_STRING_type(const ASN1_STRING *x);
int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in);
π¦ DESCRIPTION π¦
These functions let you manipulate an ASN1_STRING structure, bestie. Think of it as the main-character struct for a whole bunch of ASN.1 string types.
int ASN1_STRING_length(ASN1_STRING *x);β returns the length of the content ofx.xMUST NOT beNULL, like literally do not do that. πconst unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x);β returns an internal pointer to the data ofx. since this is an internal pointer, it should not be freed or modified in any way.xMUST NOT beNULL. periodt.unsigned char *ASN1_STRING_data(ASN1_STRING *x);β similar toASN1_STRING_get0_data()except the returned value is not constant. this function is deprecated: applications should useASN1_STRING_get0_data()instead. like, itβs not the vibe anymore.ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);β returns a copy of the structurea. clone era. π«Άint ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);β comparesaandb, returning0if the two are identical. the string types and content are compared.int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);β sets the data of stringstrto the bufferdataor lengthlen. the supplied data is copied. iflenis-1then the length is determined bystrlen(data).int ASN1_STRING_type(const ASN1_STRING *x);β returns the type ofx, using standard constants such asV_ASN1_OCTET_STRING.int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in);β converts the stringinto UTF8 format. the converted data is allocated in a buffer in*out. the length ofoutis returned or a negative error code. the buffer*outshould be freed usingOPENSSL_free().
πΈ NOTES πΈ
Almost all ASN1 types in OpenSSL are represented as an ASN1_STRING structure. other types such as ASN1_OCTET_STRING are simply typedefβed to ASN1_STRING and the functions call the ASN1_STRING equivalents. ASN1_STRING is also used for some CHOICE types which consist entirely of primitive string types such as DirectoryString and Time.
important bestie: these functions should not be used to examine or modifyASN1_INTEGERorASN1_ENUMERATEDtypes. the relevant INTEGER or ENUMERATED utility functions should be used instead. iykyk.
In general it cannot be assumed that the data returned by ASN1_STRING_data() is null terminated or does not contain embedded nulls. the actual format of the data will depend on the actual string type itself: for example for an IA5String the data will be ASCII, for a BMPString two bytes per character in big endian format, and for a UTF8String it will be in UTF8 format.
Similar care should be taken to ensure the data is in the correct format when calling ASN1_STRING_set().
π RETURN VALUES π
ASN1_STRING_length()β returns the length of the content ofx.ASN1_STRING_get0_data()andASN1_STRING_data()β return an internal pointer to the data ofx.ASN1_STRING_dup()β returns a validASN1_STRINGstructure orNULLif an error occurred.ASN1_STRING_cmp()β returns an integer greater than, equal to, or less than0, according to whetherais greater than, equal to, or less thanb.ASN1_STRING_set()β returns1on success or0on error.ASN1_STRING_type()β returns the type ofx.ASN1_STRING_to_UTF8()β returns the number of bytes in output stringoutor a negative value if an error occurred.
π SEE ALSO π
π COPYRIGHT π
Copyright 2002-2020 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 https://www.openssl.org/source/license.html.
okay thatβs the whole page, bestie π
β sign-off from OpenSSL version 3.5.6, dated 2026-04-07, same manual energy, facts fully intact, vibe immaculate. π§π
π¦ where this page comes from
- freebsd 15.1: base 15.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms