S2I_ASN1_IA5STRING(3ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

πŸ’… S2I_ASN1_IA5STRING πŸ’…

okay bestie, welcome to the OpenSSL manual page S2I_ASN1_IA5STRING(3ossl) β€” yes that's the title, yes it's a mouthful, no we're not changing it πŸŽ€


✨ NAME ✨

i2s_ASN1_IA5STRING, s2i_ASN1_IA5STRING, i2s_ASN1_INTEGER, s2i_ASN1_INTEGER, i2s_ASN1_OCTET_STRING, s2i_ASN1_OCTET_STRING, i2s_ASN1_ENUMERATED, i2s_ASN1_ENUMERATED_TABLE, i2s_ASN1_UTF8STRING, s2i_ASN1_UTF8STRING β€” these iconic little functions convert objects from/to ASN.1/string representation πŸ¦‹


🌸 SYNOPSIS 🌸

#include <openssl/x509v3.h>

char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
                                  X509V3_CTX *ctx, const char *str);
char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *method, const ASN1_INTEGER *a);
ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *method, const char *value);
char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
                           const ASN1_OCTET_STRING *oct);
ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
                                        X509V3_CTX *ctx, const char *str);
char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *method, const ASN1_ENUMERATED *a);
char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *method,
                               const ASN1_ENUMERATED *e);

char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method,
                          ASN1_UTF8STRING *utf8);
ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method,
                                     X509V3_CTX *ctx, const char *str);

like, copy these exactly, bestie β€” the consts matter, the spacing is a vibe, don't touch it πŸ’…


🫢 DESCRIPTION 🫢

So what do these do? These functions convert OpenSSL objects to and from their ASN.1/string representation. And they're used for X509v3 extensions β€” iykyk πŸ‘‘


🧚 NOTES 🧚

The letters i and s in i2s and s2i stand for "internal" (that is, an internal C structure) and string respectively. So i2s_ASN1_IA5STRING() converts from internal to string. the way that naming scheme actually makes sense once someone tells you 😭

⚠️ It is the caller's responsibility to free the returned string. In the i2s_ASN1_IA5STRING() function the string is copied and the ownership of the original string remains with the caller.

no cap, do NOT forget the free. that's a memory leak and it's giving chaos πŸ’€


🌈 RETURN VALUES 🌈

okay so here's the vibe check on what each one hands back:

  • i2s_ASN1_IA5STRING() β€” returns the pointer to a IA5 string or NULL if an error occurs.
  • s2i_ASN1_IA5STRING() β€” return a valid ASN1_IA5STRING structure or NULL if an error occurs.
  • i2s_ASN1_INTEGER() β€” return a valid string or NULL if an error occurs.
  • s2i_ASN1_INTEGER() β€” returns the pointer to a ASN1_INTEGER structure or NULL if an error occurs.
  • i2s_ASN1_OCTET_STRING() β€” returns the pointer to a OCTET_STRING string or NULL if an error occurs.
  • s2i_ASN1_OCTET_STRING() β€” return a valid ASN1_OCTET_STRING structure or NULL if an error occurs.
  • i2s_ASN1_ENUMERATED() β€” return a valid string or NULL if an error occurs.
  • s2i_ASN1_ENUMERATED() β€” returns the pointer to a ASN1_ENUMERATED structure or NULL if an error occurs.
  • s2i_ASN1_UTF8STRING() β€” return a valid ASN1_UTF8STRING structure or NULL if an error occurs.
  • i2s_ASN1_UTF8STRING() β€” returns the pointer to a UTF-8 string or NULL if an error occurs.

lowkey every single one of them can hand you a NULL on error, so check it. always. periodt πŸ’–


⭐ HISTORY ⭐

i2s_ASN1_UTF8STRING() and s2i_ASN1_UTF8STRING() were made public in OpenSSL 3.0. a glow-up, honestly πŸ‘‘


Copyright 2020-2021 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>.


and that's the whole page, bestie πŸŽ€ this cutie was brought to you by version 3.5.6, dated 2026-04-07, filed under S2I_ASN1_IA5STRING(3ossl) β€” mwah, go free your strings πŸ’œπŸ¦‹βœ¨

πŸ“¦ where this page comes from