Added asn1_write_bool()
diff --git a/include/polarssl/asn1write.h b/include/polarssl/asn1write.h
index 4659b24..808bf3a 100644
--- a/include/polarssl/asn1write.h
+++ b/include/polarssl/asn1write.h
@@ -125,6 +125,18 @@
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
* Note: function works backwards in data buffer
*
diff --git a/library/asn1write.c b/library/asn1write.c
index 463c730..893841f 100644
--- a/library/asn1write.c
+++ b/library/asn1write.c
@@ -173,6 +173,23 @@
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 ret;