summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/a_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/a_object.c')
-rw-r--r--src/lib/libcrypto/asn1/a_object.c100
1 files changed, 50 insertions, 50 deletions
diff --git a/src/lib/libcrypto/asn1/a_object.c b/src/lib/libcrypto/asn1/a_object.c
index 9b3bae0442..cc4f5dd424 100644
--- a/src/lib/libcrypto/asn1/a_object.c
+++ b/src/lib/libcrypto/asn1/a_object.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: a_object.c,v 1.33 2021/12/03 16:58:11 jsing Exp $ */ 1/* $OpenBSD: a_object.c,v 1.34 2021/12/25 07:48:09 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -66,6 +66,55 @@
66#include <openssl/buffer.h> 66#include <openssl/buffer.h>
67#include <openssl/objects.h> 67#include <openssl/objects.h>
68 68
69ASN1_OBJECT *
70ASN1_OBJECT_new(void)
71{
72 ASN1_OBJECT *a;
73
74 if ((a = calloc(1, sizeof(ASN1_OBJECT))) == NULL) {
75 ASN1error(ERR_R_MALLOC_FAILURE);
76 return (NULL);
77 }
78 a->flags = ASN1_OBJECT_FLAG_DYNAMIC;
79
80 return a;
81}
82
83void
84ASN1_OBJECT_free(ASN1_OBJECT *a)
85{
86 if (a == NULL)
87 return;
88 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) {
89 free((void *)a->sn);
90 free((void *)a->ln);
91 a->sn = a->ln = NULL;
92 }
93 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
94 freezero((void *)a->data, a->length);
95 a->data = NULL;
96 a->length = 0;
97 }
98 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC)
99 free(a);
100}
101
102ASN1_OBJECT *
103ASN1_OBJECT_create(int nid, unsigned char *data, int len,
104 const char *sn, const char *ln)
105{
106 ASN1_OBJECT o;
107
108 o.sn = sn;
109 o.ln = ln;
110 o.data = data;
111 o.nid = nid;
112 o.length = len;
113 o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
114 ASN1_OBJECT_FLAG_DYNAMIC_DATA;
115 return (OBJ_dup(&o));
116}
117
69int 118int
70i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp) 119i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp)
71{ 120{
@@ -350,52 +399,3 @@ err:
350 ASN1_OBJECT_free(ret); 399 ASN1_OBJECT_free(ret);
351 return (NULL); 400 return (NULL);
352} 401}
353
354ASN1_OBJECT *
355ASN1_OBJECT_new(void)
356{
357 ASN1_OBJECT *a;
358
359 if ((a = calloc(1, sizeof(ASN1_OBJECT))) == NULL) {
360 ASN1error(ERR_R_MALLOC_FAILURE);
361 return (NULL);
362 }
363 a->flags = ASN1_OBJECT_FLAG_DYNAMIC;
364
365 return a;
366}
367
368void
369ASN1_OBJECT_free(ASN1_OBJECT *a)
370{
371 if (a == NULL)
372 return;
373 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_STRINGS) {
374 free((void *)a->sn);
375 free((void *)a->ln);
376 a->sn = a->ln = NULL;
377 }
378 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) {
379 freezero((void *)a->data, a->length);
380 a->data = NULL;
381 a->length = 0;
382 }
383 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC)
384 free(a);
385}
386
387ASN1_OBJECT *
388ASN1_OBJECT_create(int nid, unsigned char *data, int len,
389 const char *sn, const char *ln)
390{
391 ASN1_OBJECT o;
392
393 o.sn = sn;
394 o.ln = ln;
395 o.data = data;
396 o.nid = nid;
397 o.length = len;
398 o.flags = ASN1_OBJECT_FLAG_DYNAMIC | ASN1_OBJECT_FLAG_DYNAMIC_STRINGS |
399 ASN1_OBJECT_FLAG_DYNAMIC_DATA;
400 return (OBJ_dup(&o));
401}