summaryrefslogtreecommitdiff
path: root/src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c')
-rw-r--r--src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c b/src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c
index ee54e48f..bd593916 100644
--- a/src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c
+++ b/src/ltc/pk/asn1/der/printable_string/der_encode_printable_string.c
@@ -47,23 +47,11 @@ int der_encode_printable_string(const unsigned char *in, unsigned long inlen,
/* encode the header+len */
x = 0;
out[x++] = 0x13;
- if (inlen < 128) {
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 256) {
- out[x++] = 0x81;
- out[x++] = (unsigned char)inlen;
- } else if (inlen < 65536UL) {
- out[x++] = 0x82;
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else if (inlen < 16777216UL) {
- out[x++] = 0x83;
- out[x++] = (unsigned char)((inlen>>16)&255);
- out[x++] = (unsigned char)((inlen>>8)&255);
- out[x++] = (unsigned char)(inlen&255);
- } else {
- return CRYPT_INVALID_ARG;
+ len = *outlen - x;
+ if ((err = der_encode_asn1_length(inlen, out + x, &len)) != CRYPT_OK) {
+ return err;
}
+ x += len;
/* store octets */
for (y = 0; y < inlen; y++) {