Added asn1_write_bool()

This commit is contained in:
Paul Bakker 2013-09-06 16:34:38 +02:00
parent 9397dcb0e8
commit 329def30c5
2 changed files with 29 additions and 0 deletions

View File

@ -124,6 +124,18 @@ int asn1_write_oid( unsigned char **p, unsigned char *start, const char *oid );
int asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start, int asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start,
const char *oid ); const char *oid );
/**
* \brief Write a boolean tag (ASN1_BOOLEAN) and value in ASN.1 format
* Note: function works backwards in data buffer
*
* \param p reference to current position pointer
* \param start start of the buffer (for bounds-checking)
* \param boolean 0 or 1
*
* \return the length written or a negative error code
*/
int asn1_write_bool( unsigned char **p, unsigned char *start, int boolean );
/** /**
* \brief Write an int tag (ASN1_INTEGER) and value in ASN.1 format * \brief Write an int tag (ASN1_INTEGER) and value in ASN.1 format
* Note: function works backwards in data buffer * Note: function works backwards in data buffer

View File

@ -173,6 +173,23 @@ int asn1_write_algorithm_identifier( unsigned char **p, unsigned char *start,
return( len ); return( len );
} }
int asn1_write_bool( unsigned char **p, unsigned char *start, int boolean )
{
int ret;
size_t len = 0;
if( *p - start < 1 )
return( POLARSSL_ERR_ASN1_BUF_TOO_SMALL );
*--(*p) = (boolean) ? 1 : 0;
len++;
ASN1_CHK_ADD( len, asn1_write_len( p, start, len ) );
ASN1_CHK_ADD( len, asn1_write_tag( p, start, ASN1_BOOLEAN ) );
return( len );
}
int asn1_write_int( unsigned char **p, unsigned char *start, int val ) int asn1_write_int( unsigned char **p, unsigned char *start, int val )
{ {
int ret; int ret;