From 6db915b5a98710b5f07cf3f02bf1ca685b0a13c7 Mon Sep 17 00:00:00 2001
From: Paul Bakker
Date: Mon, 26 Aug 2013 12:05:02 +0200
Subject: [PATCH] Added asn1_write_raw_buffer()
---
include/polarssl/asn1write.h | 2 ++
library/asn1write.c | 17 ++++++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/include/polarssl/asn1write.h b/include/polarssl/asn1write.h
index 6e4a25798e..9b98afe2e3 100644
--- a/include/polarssl/asn1write.h
+++ b/include/polarssl/asn1write.h
@@ -52,6 +52,8 @@ int asn1_write_bitstring( unsigned char **p, unsigned char *start,
const unsigned char *buf, size_t bits );
int asn1_write_octet_string( unsigned char **p, unsigned char *start,
const unsigned char *buf, size_t size );
+int asn1_write_raw_buffer( unsigned char **p, unsigned char *start,
+ const unsigned char *buf, size_t size );
#ifdef __cplusplus
}
diff --git a/library/asn1write.c b/library/asn1write.c
index fc85bf9903..f08e105d21 100644
--- a/library/asn1write.c
+++ b/library/asn1write.c
@@ -272,7 +272,7 @@ int asn1_write_octet_string( unsigned char **p, unsigned char *start,
int ret;
size_t len = 0;
- if( *p - start < (int) size + 1 )
+ if( *p - start < (int) size )
return( POLARSSL_ERR_ASN1_BUF_TOO_SMALL );
len = size;
@@ -285,4 +285,19 @@ int asn1_write_octet_string( unsigned char **p, unsigned char *start,
return( len );
}
+int asn1_write_raw_buffer( unsigned char **p, unsigned char *start,
+ const unsigned char *buf, size_t size )
+{
+ size_t len = 0;
+
+ if( *p - start < (int) size )
+ return( POLARSSL_ERR_ASN1_BUF_TOO_SMALL );
+
+ len = size;
+ (*p) -= len;
+ memcpy( *p, buf, len );
+
+ return( len );
+}
+
#endif