diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_bitstr.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_bitstr.c | 53 |
1 files changed, 1 insertions, 52 deletions
diff --git a/src/lib/libcrypto/asn1/a_bitstr.c b/src/lib/libcrypto/asn1/a_bitstr.c index 7013a407ad..c36817c1ee 100644 --- a/src/lib/libcrypto/asn1/a_bitstr.c +++ b/src/lib/libcrypto/asn1/a_bitstr.c | |||
@@ -60,27 +60,9 @@ | |||
60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
61 | #include <openssl/asn1.h> | 61 | #include <openssl/asn1.h> |
62 | 62 | ||
63 | ASN1_BIT_STRING *ASN1_BIT_STRING_new(void) | ||
64 | { return M_ASN1_BIT_STRING_new(); } | ||
65 | |||
66 | void ASN1_BIT_STRING_free(ASN1_BIT_STRING *x) | ||
67 | { M_ASN1_BIT_STRING_free(x); } | ||
68 | |||
69 | int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len) | 63 | int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len) |
70 | { return M_ASN1_BIT_STRING_set(x, d, len); } | 64 | { return M_ASN1_BIT_STRING_set(x, d, len); } |
71 | 65 | ||
72 | int i2d_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp) | ||
73 | { | ||
74 | int len, ret; | ||
75 | len = i2c_ASN1_BIT_STRING(a, NULL); | ||
76 | ret=ASN1_object_size(0,len,V_ASN1_BIT_STRING); | ||
77 | if(pp) { | ||
78 | ASN1_put_object(pp,0,len,V_ASN1_BIT_STRING,V_ASN1_UNIVERSAL); | ||
79 | i2c_ASN1_BIT_STRING(a, pp); | ||
80 | } | ||
81 | return ret; | ||
82 | } | ||
83 | |||
84 | int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp) | 66 | int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp) |
85 | { | 67 | { |
86 | int ret,j,bits,len; | 68 | int ret,j,bits,len; |
@@ -129,40 +111,6 @@ int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp) | |||
129 | return(ret); | 111 | return(ret); |
130 | } | 112 | } |
131 | 113 | ||
132 | |||
133 | /* Convert DER encoded ASN1 BIT_STRING to ASN1_BIT_STRING structure */ | ||
134 | ASN1_BIT_STRING *d2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, unsigned char **pp, | ||
135 | long length) | ||
136 | { | ||
137 | unsigned char *p; | ||
138 | long len; | ||
139 | int i; | ||
140 | int inf,tag,xclass; | ||
141 | ASN1_BIT_STRING *ret; | ||
142 | |||
143 | p= *pp; | ||
144 | inf=ASN1_get_object(&p,&len,&tag,&xclass,length); | ||
145 | if (inf & 0x80) | ||
146 | { | ||
147 | i=ASN1_R_BAD_OBJECT_HEADER; | ||
148 | goto err; | ||
149 | } | ||
150 | |||
151 | if (tag != V_ASN1_BIT_STRING) | ||
152 | { | ||
153 | i=ASN1_R_EXPECTING_A_BIT_STRING; | ||
154 | goto err; | ||
155 | } | ||
156 | if (len < 1) { i=ASN1_R_STRING_TOO_SHORT; goto err; } | ||
157 | ret = c2i_ASN1_BIT_STRING(a, &p, len); | ||
158 | if(ret) *pp = p; | ||
159 | return ret; | ||
160 | err: | ||
161 | ASN1err(ASN1_F_D2I_ASN1_BIT_STRING,i); | ||
162 | return(NULL); | ||
163 | |||
164 | } | ||
165 | |||
166 | ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, unsigned char **pp, | 114 | ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a, unsigned char **pp, |
167 | long len) | 115 | long len) |
168 | { | 116 | { |
@@ -224,6 +172,7 @@ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value) | |||
224 | w=n/8; | 172 | w=n/8; |
225 | v=1<<(7-(n&0x07)); | 173 | v=1<<(7-(n&0x07)); |
226 | iv= ~v; | 174 | iv= ~v; |
175 | if (!value) v=0; | ||
227 | 176 | ||
228 | a->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07); /* clear, set on write */ | 177 | a->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07); /* clear, set on write */ |
229 | 178 | ||