libressl-ASN1_BIT_STRING_set3
Asn.1 bit string accessors
Usage
Crypto Library (libcrypto, -lcrypto)
#include <openssl/asn1.h>
int
ASN1_BIT_STRING_set(ASN1_BIT_STRING *bitstr, unsigned char *data, int len);
int
ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *bitstr, int bitnumber, int set);
int
ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *bitstr, int bitnumber);
Overview
ASN1_BIT_STRING_set() sets the length attribute of bitstr to len and copies that number of bytes from data into bitstr, overwriting any previous data, by merely calling ASN1_STRING_set(3). This function does no validation whatsoever. In particular, it neither checks that bitstr is actually of the type V_ASN1_BIT_STRING nor, even if it is, that the data and len arguments make sense for this particular bit string.
If the set argument is non-zero, ASN1_BIT_STRING_set_bit() sets the bit with the given bitnumber in the bitstr; otherwise, it clears that bit. A bitnumber of 0 addresses the most significant bit in the first data byte of bitstr, 7 the least significant bit in the same byte, 8 the most significant bit in the second data byte, and so on.
If setting a bit is requested beyond the last existing data byte, additional bytes are added to the bitstr as needed. After clearing a bit, any trailing NUL bytes are removed from the bitstr.
ASN1_BIT_STRING_get_bit() checks that the bit with the given bitnumber is set in bitstr.
Return values
ASN1_BIT_STRING_set() returns 1 on success or 0 if memory allocation fails or if data is NULL and len is -1 in the same call.
ASN1_BIT_STRING_set_bit() returns 1 on success or 0 if bitstr is NULL or if memory allocation fails.
ASN1_BIT_STRING_get_bit() returns 1 if the bit with the given bitnumber is set in the bitstr or 0 if bitstr is NULL, if bitnumber points beyond the last data byte in bitstr, or if the requested bit is not set.