* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/asn1.h>
#include "asn1_locl.h"
-EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
{
EVP_PKEY *ret;
if ((a == NULL) || (*a == NULL)) {
- if ((ret=EVP_PKEY_new()) == NULL) {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_EVP_LIB);
- return(NULL);
+ if ((ret = EVP_PKEY_new()) == NULL) {
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_EVP_LIB);
+ return (NULL);
}
} else {
- ret= *a;
+ ret = *a;
#ifndef OPENSSL_NO_ENGINE
if (ret->engine) {
ENGINE_finish(ret->engine);
}
if (!EVP_PKEY_set_type(ret, type)) {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
goto err;
}
if (!ret->ameth->old_priv_decode ||
- !ret->ameth->old_priv_decode(ret, pp, length)) {
+ !ret->ameth->old_priv_decode(ret, pp, length)) {
if (ret->ameth->priv_decode) {
- PKCS8_PRIV_KEY_INFO *p8=NULL;
- p8=d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
- if (!p8) goto err;
+ PKCS8_PRIV_KEY_INFO *p8 = NULL;
+ p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, pp, length);
+ if (!p8)
+ goto err;
EVP_PKEY_free(ret);
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
-
} else {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
goto err;
}
- }
- if (a != NULL) (*a)=ret;
- return(ret);
+ }
+ if (a != NULL)
+ (*a) = ret;
+ return (ret);
+
err:
- if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);
- return(NULL);
+ if ((ret != NULL) && ((a == NULL) || (*a != ret)))
+ EVP_PKEY_free(ret);
+ return (NULL);
}
/* This works like d2i_PrivateKey() except it automatically works out the type */
-EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, long length)
{
STACK_OF(ASN1_TYPE) *inkey;
const unsigned char *p;
int keytype;
+
p = *pp;
/* Dirty trick: read in the ASN1 data into a STACK_OF(ASN1_TYPE):
* by analyzing it we can determine the passed structure: this
/* Since we only need to discern "traditional format" RSA and DSA
* keys we can just count the elements.
*/
- if(sk_ASN1_TYPE_num(inkey) == 6)
+ if (sk_ASN1_TYPE_num(inkey) == 6)
keytype = EVP_PKEY_DSA;
else if (sk_ASN1_TYPE_num(inkey) == 4)
keytype = EVP_PKEY_EC;
else if (sk_ASN1_TYPE_num(inkey) == 3) {
/* This seems to be PKCS8, not traditional format */
- PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
+ PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(
+ NULL, pp, length);
EVP_PKEY *ret;
sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free);
if (!p8) {
- ASN1err(ASN1_F_D2I_AUTOPRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_AUTOPRIVATEKEY,
+ ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
return NULL;
}
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
if (a) {
*a = ret;
- }
+ }
return ret;
} else
keytype = EVP_PKEY_RSA;
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/ec.h>
#endif
-EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
{
EVP_PKEY *ret;
if ((a == NULL) || (*a == NULL)) {
- if ((ret=EVP_PKEY_new()) == NULL) {
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
- return(NULL);
+ if ((ret = EVP_PKEY_new()) == NULL) {
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB);
+ return (NULL);
}
- }
- else ret= *a;
+ } else
+ ret = *a;
if (!EVP_PKEY_set_type(ret, type)) {
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB);
goto err;
}
switch (EVP_PKEY_id(ret)) {
#ifndef OPENSSL_NO_RSA
case EVP_PKEY_RSA:
- if ((ret->pkey.rsa=d2i_RSAPublicKey(NULL,
- (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
+ if ((ret->pkey.rsa = d2i_RSAPublicKey(NULL,
+ (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
{
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
break;
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:
if (!d2i_DSAPublicKey(&(ret->pkey.dsa),
- (const unsigned char **)pp,length)) /* TMP UGLY CAST */
+ (const unsigned char **)pp,length)) /* TMP UGLY CAST */
{
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
break;
#ifndef OPENSSL_NO_EC
case EVP_PKEY_EC:
if (!o2i_ECPublicKey(&(ret->pkey.ec),
- (const unsigned char **)pp, length))
- {
+ (const unsigned char **)pp, length)) {
ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
- break;
+ break;
#endif
default:
- ASN1err(ASN1_F_D2I_PUBLICKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
goto err;
/* break; */
}
- if (a != NULL) (*a)=ret;
- return(ret);
+ if (a != NULL)
+ (*a) = ret;
+ return (ret);
+
err:
- if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);
- return(NULL);
+ if ((ret != NULL) && ((a == NULL) || (*a != ret)))
+ EVP_PKEY_free(ret);
+ return (NULL);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/asn1.h>
#include <openssl/asn1_mac.h>
-int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
+int
+ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
{
ASN1_STRING *os;
- if ((os=M_ASN1_OCTET_STRING_new()) == NULL) return(0);
- if (!M_ASN1_OCTET_STRING_set(os,data,len)) return(0);
- ASN1_TYPE_set(a,V_ASN1_OCTET_STRING,os);
- return(1);
+ if ((os = M_ASN1_OCTET_STRING_new()) == NULL)
+ return (0);
+ if (!M_ASN1_OCTET_STRING_set(os, data, len))
+ return (0);
+ ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os);
+ return (1);
}
/* int max_len: for returned value */
-int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data,
- int max_len)
+int
+ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len)
{
- int ret,num;
+ int ret, num;
unsigned char *p;
- if ((a->type != V_ASN1_OCTET_STRING) || (a->value.octet_string == NULL)) {
- ASN1err(ASN1_F_ASN1_TYPE_GET_OCTETSTRING,ASN1_R_DATA_IS_WRONG);
- return(-1);
+ if ((a->type != V_ASN1_OCTET_STRING) ||
+ (a->value.octet_string == NULL)) {
+ ASN1err(ASN1_F_ASN1_TYPE_GET_OCTETSTRING, ASN1_R_DATA_IS_WRONG);
+ return (-1);
}
- p=M_ASN1_STRING_data(a->value.octet_string);
- ret=M_ASN1_STRING_length(a->value.octet_string);
+ p = M_ASN1_STRING_data(a->value.octet_string);
+ ret = M_ASN1_STRING_length(a->value.octet_string);
if (ret < max_len)
- num=ret;
+ num = ret;
else
- num=max_len;
- memcpy(data,p,num);
- return(ret);
+ num = max_len;
+ memcpy(data, p, num);
+ return (ret);
}
-int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
- int len)
+int
+ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
+ int len)
{
- int n,size;
- ASN1_OCTET_STRING os,*osp;
+ int n, size;
+ ASN1_OCTET_STRING os, *osp;
ASN1_INTEGER in;
unsigned char *p;
- unsigned char buf[32]; /* when they have 256bit longs,
+ unsigned char buf[32]; /* when they have 256bit longs,
* I'll be in trouble */
- in.data=buf;
- in.length=32;
- os.data=data;
- os.type=V_ASN1_OCTET_STRING;
- os.length=len;
- ASN1_INTEGER_set(&in,num);
- n = i2d_ASN1_INTEGER(&in,NULL);
- n+=M_i2d_ASN1_OCTET_STRING(&os,NULL);
-
- size=ASN1_object_size(1,n,V_ASN1_SEQUENCE);
-
- if ((osp=ASN1_STRING_new()) == NULL) return(0);
+ in.data = buf;
+ in.length = 32;
+ os.data = data;
+ os.type = V_ASN1_OCTET_STRING;
+ os.length = len;
+ ASN1_INTEGER_set(&in, num);
+ n = i2d_ASN1_INTEGER(&in, NULL);
+ n += M_i2d_ASN1_OCTET_STRING(&os, NULL);
+
+ size = ASN1_object_size(1, n, V_ASN1_SEQUENCE);
+
+ if ((osp = ASN1_STRING_new()) == NULL)
+ return (0);
/* Grow the 'string' */
- if (!ASN1_STRING_set(osp,NULL,size)) {
+ if (!ASN1_STRING_set(osp, NULL, size)) {
ASN1_STRING_free(osp);
- return(0);
+ return (0);
}
M_ASN1_STRING_length_set(osp, size);
- p=M_ASN1_STRING_data(osp);
+ p = M_ASN1_STRING_data(osp);
- ASN1_put_object(&p,1,n,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
- i2d_ASN1_INTEGER(&in,&p);
- M_i2d_ASN1_OCTET_STRING(&os,&p);
+ ASN1_put_object(&p, 1,n, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL);
+ i2d_ASN1_INTEGER(&in, &p);
+ M_i2d_ASN1_OCTET_STRING(&os, &p);
- ASN1_TYPE_set(a,V_ASN1_SEQUENCE,osp);
- return(1);
+ ASN1_TYPE_set(a, V_ASN1_SEQUENCE, osp);
+ return (1);
}
/* we return the actual length..., num may be missing, in which
* case, set it to zero */
/* int max_len: for returned value */
-int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, unsigned char *data,
- int max_len)
+int
+ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, unsigned char *data,
+ int max_len)
{
- int ret= -1,n;
- ASN1_INTEGER *ai=NULL;
- ASN1_OCTET_STRING *os=NULL;
+ int ret = -1, n;
+ ASN1_INTEGER *ai = NULL;
+ ASN1_OCTET_STRING *os = NULL;
const unsigned char *p;
long length;
ASN1_const_CTX c;
if ((a->type != V_ASN1_SEQUENCE) || (a->value.sequence == NULL)) {
goto err;
}
- p=M_ASN1_STRING_data(a->value.sequence);
- length=M_ASN1_STRING_length(a->value.sequence);
+ p = M_ASN1_STRING_data(a->value.sequence);
+ length = M_ASN1_STRING_length(a->value.sequence);
- c.pp= &p;
- c.p=p;
- c.max=p+length;
- c.error=ASN1_R_DATA_IS_WRONG;
+ c.pp = &p;
+ c.p = p;
+ c.max = p + length;
+ c.error = ASN1_R_DATA_IS_WRONG;
M_ASN1_D2I_start_sequence();
- c.q=c.p;
- if ((ai=d2i_ASN1_INTEGER(NULL,&c.p,c.slen)) == NULL) goto err;
- c.slen-=(c.p-c.q);
- c.q=c.p;
- if ((os=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) goto err;
- c.slen-=(c.p-c.q);
- if (!M_ASN1_D2I_end_sequence()) goto err;
+ c.q = c.p;
+ if ((ai = d2i_ASN1_INTEGER(NULL, &c.p, c.slen)) == NULL)
+ goto err;
+ c.slen -= (c.p - c.q);
+ c.q = c.p;
+ if ((os = d2i_ASN1_OCTET_STRING(NULL, &c.p, c.slen)) == NULL)
+ goto err;
+ c.slen -= (c.p - c.q);
+ if (!M_ASN1_D2I_end_sequence())
+ goto err;
if (num != NULL)
- *num=ASN1_INTEGER_get(ai);
+ *num = ASN1_INTEGER_get(ai);
- ret=M_ASN1_STRING_length(os);
+ ret = M_ASN1_STRING_length(os);
if (max_len > ret)
- n=ret;
+ n = ret;
else
- n=max_len;
+ n = max_len;
if (data != NULL)
- memcpy(data,M_ASN1_STRING_data(os),n);
+ memcpy(data, M_ASN1_STRING_data(os), n);
if (0) {
err:
- ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,ASN1_R_DATA_IS_WRONG);
+ ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,
+ ASN1_R_DATA_IS_WRONG);
}
- if (os != NULL) M_ASN1_OCTET_STRING_free(os);
- if (ai != NULL) M_ASN1_INTEGER_free(ai);
- return(ret);
+ if (os != NULL)
+ M_ASN1_OCTET_STRING_free(os);
+ if (ai != NULL)
+ M_ASN1_INTEGER_free(ai);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
/* Based on a_int.c: equivalent ENUMERATED functions */
-int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
+int
+i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->length == 0) {
- if (BIO_write(bp,"00",2) != 2) goto err;
- n=2;
+ if (BIO_write(bp, "00", 2) != 2)
+ goto err;
+ n = 2;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
+int
+a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j,k, m,n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bs->type=V_ASN1_ENUMERATED;
+ bs->type = V_ASN1_ENUMERATED;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
- if (bufsize < 1) goto err_sl;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ if (bufsize < 1)
+ goto err_sl;
+ i = bufsize;
+ if (buf[i-1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i-1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=0; j<i; j++) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = 0; j < i; j++) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
if (first) {
- first=0;
+ first = 0;
if ((bufp[0] == '0') && (buf[1] == '0')) {
- bufp+=2;
- i-=2;
+ bufp += 2;
+ i -= 2;
}
}
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=(unsigned char *)realloc(s,
- (unsigned int)num+i*2);
+ sp = (unsigned char *)realloc(s,
+ (unsigned int)num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/buffer.h>
#include <openssl/asn1.h>
-int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a)
+int
+i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->type & V_ASN1_NEG) {
- if (BIO_write(bp, "-", 1) != 1) goto err;
+ if (BIO_write(bp, "-", 1) != 1)
+ goto err;
n = 1;
}
if (a->length == 0) {
- if (BIO_write(bp,"00",2) != 2) goto err;
+ if (BIO_write(bp, "00", 2) != 2)
+ goto err;
n += 2;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
+int
+a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j,k, m,n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bs->type=V_ASN1_INTEGER;
+ bs->type = V_ASN1_INTEGER;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
- if (bufsize < 1) goto err_sl;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ if (bufsize < 1)
+ goto err_sl;
+ i = bufsize;
+ if (buf[i - 1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i - 1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=0; j<i; j++) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = 0; j < i; j++) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
if (first) {
- first=0;
+ first = 0;
if ((bufp[0] == '0') && (buf[1] == '0')) {
- bufp+=2;
- i-=2;
+ bufp += 2;
+ i -= 2;
}
}
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=OPENSSL_realloc_clean(s,slen,num+i*2);
+ sp = OPENSSL_realloc_clean(s, slen,
+ num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/buffer.h>
#include <openssl/asn1.h>
-int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type)
+int
+i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->length == 0) {
- if (BIO_write(bp,"0",1) != 1) goto err;
- n=1;
+ if (BIO_write(bp, "0", 1) != 1)
+ goto err;
+ n = 1;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+int
+a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j, k, m, n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
if (bufsize < 1) {
if (first)
else
goto err_sl;
}
- first=0;
+ first = 0;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ i = bufsize;
+ if (buf[i-1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i-1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=i-1; j>0; j--) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = i - 1; j > 0; j--) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=(unsigned char *)realloc(s,
- (unsigned int)num+i*2);
+ sp = (unsigned char *)realloc(s,
+ (unsigned int)num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/asn1.h>
#include "asn1_locl.h"
-EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
{
EVP_PKEY *ret;
if ((a == NULL) || (*a == NULL)) {
- if ((ret=EVP_PKEY_new()) == NULL) {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_EVP_LIB);
- return(NULL);
+ if ((ret = EVP_PKEY_new()) == NULL) {
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_EVP_LIB);
+ return (NULL);
}
} else {
- ret= *a;
+ ret = *a;
#ifndef OPENSSL_NO_ENGINE
if (ret->engine) {
ENGINE_finish(ret->engine);
}
if (!EVP_PKEY_set_type(ret, type)) {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
goto err;
}
if (!ret->ameth->old_priv_decode ||
- !ret->ameth->old_priv_decode(ret, pp, length)) {
+ !ret->ameth->old_priv_decode(ret, pp, length)) {
if (ret->ameth->priv_decode) {
- PKCS8_PRIV_KEY_INFO *p8=NULL;
- p8=d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
- if (!p8) goto err;
+ PKCS8_PRIV_KEY_INFO *p8 = NULL;
+ p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL, pp, length);
+ if (!p8)
+ goto err;
EVP_PKEY_free(ret);
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
-
} else {
- ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
goto err;
}
- }
- if (a != NULL) (*a)=ret;
- return(ret);
+ }
+ if (a != NULL)
+ (*a) = ret;
+ return (ret);
+
err:
- if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);
- return(NULL);
+ if ((ret != NULL) && ((a == NULL) || (*a != ret)))
+ EVP_PKEY_free(ret);
+ return (NULL);
}
/* This works like d2i_PrivateKey() except it automatically works out the type */
-EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, long length)
{
STACK_OF(ASN1_TYPE) *inkey;
const unsigned char *p;
int keytype;
+
p = *pp;
/* Dirty trick: read in the ASN1 data into a STACK_OF(ASN1_TYPE):
* by analyzing it we can determine the passed structure: this
/* Since we only need to discern "traditional format" RSA and DSA
* keys we can just count the elements.
*/
- if(sk_ASN1_TYPE_num(inkey) == 6)
+ if (sk_ASN1_TYPE_num(inkey) == 6)
keytype = EVP_PKEY_DSA;
else if (sk_ASN1_TYPE_num(inkey) == 4)
keytype = EVP_PKEY_EC;
else if (sk_ASN1_TYPE_num(inkey) == 3) {
/* This seems to be PKCS8, not traditional format */
- PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
+ PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(
+ NULL, pp, length);
EVP_PKEY *ret;
sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free);
if (!p8) {
- ASN1err(ASN1_F_D2I_AUTOPRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_AUTOPRIVATEKEY,
+ ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
return NULL;
}
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
if (a) {
*a = ret;
- }
+ }
return ret;
} else
keytype = EVP_PKEY_RSA;
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/ec.h>
#endif
-EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
- long length)
+EVP_PKEY *
+d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, long length)
{
EVP_PKEY *ret;
if ((a == NULL) || (*a == NULL)) {
- if ((ret=EVP_PKEY_new()) == NULL) {
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
- return(NULL);
+ if ((ret = EVP_PKEY_new()) == NULL) {
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB);
+ return (NULL);
}
- }
- else ret= *a;
+ } else
+ ret = *a;
if (!EVP_PKEY_set_type(ret, type)) {
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_EVP_LIB);
goto err;
}
switch (EVP_PKEY_id(ret)) {
#ifndef OPENSSL_NO_RSA
case EVP_PKEY_RSA:
- if ((ret->pkey.rsa=d2i_RSAPublicKey(NULL,
- (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
+ if ((ret->pkey.rsa = d2i_RSAPublicKey(NULL,
+ (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
{
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
break;
#ifndef OPENSSL_NO_DSA
case EVP_PKEY_DSA:
if (!d2i_DSAPublicKey(&(ret->pkey.dsa),
- (const unsigned char **)pp,length)) /* TMP UGLY CAST */
+ (const unsigned char **)pp,length)) /* TMP UGLY CAST */
{
- ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_ASN1_LIB);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
break;
#ifndef OPENSSL_NO_EC
case EVP_PKEY_EC:
if (!o2i_ECPublicKey(&(ret->pkey.ec),
- (const unsigned char **)pp, length))
- {
+ (const unsigned char **)pp, length)) {
ASN1err(ASN1_F_D2I_PUBLICKEY, ERR_R_ASN1_LIB);
goto err;
}
- break;
+ break;
#endif
default:
- ASN1err(ASN1_F_D2I_PUBLICKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
+ ASN1err(ASN1_F_D2I_PUBLICKEY, ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
goto err;
/* break; */
}
- if (a != NULL) (*a)=ret;
- return(ret);
+ if (a != NULL)
+ (*a) = ret;
+ return (ret);
+
err:
- if ((ret != NULL) && ((a == NULL) || (*a != ret))) EVP_PKEY_free(ret);
- return(NULL);
+ if ((ret != NULL) && ((a == NULL) || (*a != ret)))
+ EVP_PKEY_free(ret);
+ return (NULL);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/asn1.h>
#include <openssl/asn1_mac.h>
-int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
+int
+ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len)
{
ASN1_STRING *os;
- if ((os=M_ASN1_OCTET_STRING_new()) == NULL) return(0);
- if (!M_ASN1_OCTET_STRING_set(os,data,len)) return(0);
- ASN1_TYPE_set(a,V_ASN1_OCTET_STRING,os);
- return(1);
+ if ((os = M_ASN1_OCTET_STRING_new()) == NULL)
+ return (0);
+ if (!M_ASN1_OCTET_STRING_set(os, data, len))
+ return (0);
+ ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os);
+ return (1);
}
/* int max_len: for returned value */
-int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data,
- int max_len)
+int
+ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len)
{
- int ret,num;
+ int ret, num;
unsigned char *p;
- if ((a->type != V_ASN1_OCTET_STRING) || (a->value.octet_string == NULL)) {
- ASN1err(ASN1_F_ASN1_TYPE_GET_OCTETSTRING,ASN1_R_DATA_IS_WRONG);
- return(-1);
+ if ((a->type != V_ASN1_OCTET_STRING) ||
+ (a->value.octet_string == NULL)) {
+ ASN1err(ASN1_F_ASN1_TYPE_GET_OCTETSTRING, ASN1_R_DATA_IS_WRONG);
+ return (-1);
}
- p=M_ASN1_STRING_data(a->value.octet_string);
- ret=M_ASN1_STRING_length(a->value.octet_string);
+ p = M_ASN1_STRING_data(a->value.octet_string);
+ ret = M_ASN1_STRING_length(a->value.octet_string);
if (ret < max_len)
- num=ret;
+ num = ret;
else
- num=max_len;
- memcpy(data,p,num);
- return(ret);
+ num = max_len;
+ memcpy(data, p, num);
+ return (ret);
}
-int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
- int len)
+int
+ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, unsigned char *data,
+ int len)
{
- int n,size;
- ASN1_OCTET_STRING os,*osp;
+ int n, size;
+ ASN1_OCTET_STRING os, *osp;
ASN1_INTEGER in;
unsigned char *p;
- unsigned char buf[32]; /* when they have 256bit longs,
+ unsigned char buf[32]; /* when they have 256bit longs,
* I'll be in trouble */
- in.data=buf;
- in.length=32;
- os.data=data;
- os.type=V_ASN1_OCTET_STRING;
- os.length=len;
- ASN1_INTEGER_set(&in,num);
- n = i2d_ASN1_INTEGER(&in,NULL);
- n+=M_i2d_ASN1_OCTET_STRING(&os,NULL);
-
- size=ASN1_object_size(1,n,V_ASN1_SEQUENCE);
-
- if ((osp=ASN1_STRING_new()) == NULL) return(0);
+ in.data = buf;
+ in.length = 32;
+ os.data = data;
+ os.type = V_ASN1_OCTET_STRING;
+ os.length = len;
+ ASN1_INTEGER_set(&in, num);
+ n = i2d_ASN1_INTEGER(&in, NULL);
+ n += M_i2d_ASN1_OCTET_STRING(&os, NULL);
+
+ size = ASN1_object_size(1, n, V_ASN1_SEQUENCE);
+
+ if ((osp = ASN1_STRING_new()) == NULL)
+ return (0);
/* Grow the 'string' */
- if (!ASN1_STRING_set(osp,NULL,size)) {
+ if (!ASN1_STRING_set(osp, NULL, size)) {
ASN1_STRING_free(osp);
- return(0);
+ return (0);
}
M_ASN1_STRING_length_set(osp, size);
- p=M_ASN1_STRING_data(osp);
+ p = M_ASN1_STRING_data(osp);
- ASN1_put_object(&p,1,n,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL);
- i2d_ASN1_INTEGER(&in,&p);
- M_i2d_ASN1_OCTET_STRING(&os,&p);
+ ASN1_put_object(&p, 1,n, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL);
+ i2d_ASN1_INTEGER(&in, &p);
+ M_i2d_ASN1_OCTET_STRING(&os, &p);
- ASN1_TYPE_set(a,V_ASN1_SEQUENCE,osp);
- return(1);
+ ASN1_TYPE_set(a, V_ASN1_SEQUENCE, osp);
+ return (1);
}
/* we return the actual length..., num may be missing, in which
* case, set it to zero */
/* int max_len: for returned value */
-int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, unsigned char *data,
- int max_len)
+int
+ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num, unsigned char *data,
+ int max_len)
{
- int ret= -1,n;
- ASN1_INTEGER *ai=NULL;
- ASN1_OCTET_STRING *os=NULL;
+ int ret = -1, n;
+ ASN1_INTEGER *ai = NULL;
+ ASN1_OCTET_STRING *os = NULL;
const unsigned char *p;
long length;
ASN1_const_CTX c;
if ((a->type != V_ASN1_SEQUENCE) || (a->value.sequence == NULL)) {
goto err;
}
- p=M_ASN1_STRING_data(a->value.sequence);
- length=M_ASN1_STRING_length(a->value.sequence);
+ p = M_ASN1_STRING_data(a->value.sequence);
+ length = M_ASN1_STRING_length(a->value.sequence);
- c.pp= &p;
- c.p=p;
- c.max=p+length;
- c.error=ASN1_R_DATA_IS_WRONG;
+ c.pp = &p;
+ c.p = p;
+ c.max = p + length;
+ c.error = ASN1_R_DATA_IS_WRONG;
M_ASN1_D2I_start_sequence();
- c.q=c.p;
- if ((ai=d2i_ASN1_INTEGER(NULL,&c.p,c.slen)) == NULL) goto err;
- c.slen-=(c.p-c.q);
- c.q=c.p;
- if ((os=d2i_ASN1_OCTET_STRING(NULL,&c.p,c.slen)) == NULL) goto err;
- c.slen-=(c.p-c.q);
- if (!M_ASN1_D2I_end_sequence()) goto err;
+ c.q = c.p;
+ if ((ai = d2i_ASN1_INTEGER(NULL, &c.p, c.slen)) == NULL)
+ goto err;
+ c.slen -= (c.p - c.q);
+ c.q = c.p;
+ if ((os = d2i_ASN1_OCTET_STRING(NULL, &c.p, c.slen)) == NULL)
+ goto err;
+ c.slen -= (c.p - c.q);
+ if (!M_ASN1_D2I_end_sequence())
+ goto err;
if (num != NULL)
- *num=ASN1_INTEGER_get(ai);
+ *num = ASN1_INTEGER_get(ai);
- ret=M_ASN1_STRING_length(os);
+ ret = M_ASN1_STRING_length(os);
if (max_len > ret)
- n=ret;
+ n = ret;
else
- n=max_len;
+ n = max_len;
if (data != NULL)
- memcpy(data,M_ASN1_STRING_data(os),n);
+ memcpy(data, M_ASN1_STRING_data(os), n);
if (0) {
err:
- ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,ASN1_R_DATA_IS_WRONG);
+ ASN1err(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING,
+ ASN1_R_DATA_IS_WRONG);
}
- if (os != NULL) M_ASN1_OCTET_STRING_free(os);
- if (ai != NULL) M_ASN1_INTEGER_free(ai);
- return(ret);
+ if (os != NULL)
+ M_ASN1_OCTET_STRING_free(os);
+ if (ai != NULL)
+ M_ASN1_INTEGER_free(ai);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
/* Based on a_int.c: equivalent ENUMERATED functions */
-int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
+int
+i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->length == 0) {
- if (BIO_write(bp,"00",2) != 2) goto err;
- n=2;
+ if (BIO_write(bp, "00", 2) != 2)
+ goto err;
+ n = 2;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
+int
+a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j,k, m,n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bs->type=V_ASN1_ENUMERATED;
+ bs->type = V_ASN1_ENUMERATED;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
- if (bufsize < 1) goto err_sl;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ if (bufsize < 1)
+ goto err_sl;
+ i = bufsize;
+ if (buf[i-1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i-1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=0; j<i; j++) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = 0; j < i; j++) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
if (first) {
- first=0;
+ first = 0;
if ((bufp[0] == '0') && (buf[1] == '0')) {
- bufp+=2;
- i-=2;
+ bufp += 2;
+ i -= 2;
}
}
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=(unsigned char *)realloc(s,
- (unsigned int)num+i*2);
+ sp = (unsigned char *)realloc(s,
+ (unsigned int)num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_ENUMERATED,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_ENUMERATED, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/buffer.h>
#include <openssl/asn1.h>
-int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a)
+int
+i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->type & V_ASN1_NEG) {
- if (BIO_write(bp, "-", 1) != 1) goto err;
+ if (BIO_write(bp, "-", 1) != 1)
+ goto err;
n = 1;
}
if (a->length == 0) {
- if (BIO_write(bp,"00",2) != 2) goto err;
+ if (BIO_write(bp, "00", 2) != 2)
+ goto err;
n += 2;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
+int
+a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j,k, m,n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bs->type=V_ASN1_INTEGER;
+ bs->type = V_ASN1_INTEGER;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
- if (bufsize < 1) goto err_sl;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ if (bufsize < 1)
+ goto err_sl;
+ i = bufsize;
+ if (buf[i - 1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i - 1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=0; j<i; j++) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = 0; j < i; j++) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
if (first) {
- first=0;
+ first = 0;
if ((bufp[0] == '0') && (buf[1] == '0')) {
- bufp+=2;
- i-=2;
+ bufp += 2;
+ i -= 2;
}
}
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=OPENSSL_realloc_clean(s,slen,num+i*2);
+ sp = OPENSSL_realloc_clean(s, slen,
+ num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_INTEGER,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_INTEGER, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
- *
+ *
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
+ *
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
+ * 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
+ *
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
+ *
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
#include <openssl/buffer.h>
#include <openssl/asn1.h>
-int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type)
+int
+i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type)
{
- int i,n=0;
- static const char *h="0123456789ABCDEF";
+ int i, n = 0;
+ static const char *h = "0123456789ABCDEF";
char buf[2];
- if (a == NULL) return(0);
+ if (a == NULL)
+ return (0);
if (a->length == 0) {
- if (BIO_write(bp,"0",1) != 1) goto err;
- n=1;
+ if (BIO_write(bp, "0", 1) != 1)
+ goto err;
+ n = 1;
} else {
- for (i=0; i<a->length; i++) {
- if ((i != 0) && (i%35 == 0)) {
- if (BIO_write(bp,"\\\n",2) != 2) goto err;
- n+=2;
+ for (i = 0; i < a->length; i++) {
+ if ((i != 0) && (i % 35 == 0)) {
+ if (BIO_write(bp, "\\\n", 2) != 2)
+ goto err;
+ n += 2;
}
- buf[0]=h[((unsigned char)a->data[i]>>4)&0x0f];
- buf[1]=h[((unsigned char)a->data[i] )&0x0f];
- if (BIO_write(bp,buf,2) != 2) goto err;
- n+=2;
+ buf[0] = h[((unsigned char)a->data[i] >> 4) & 0x0f];
+ buf[1] = h[((unsigned char)a->data[i]) & 0x0f];
+ if (BIO_write(bp, buf, 2) != 2)
+ goto err;
+ n += 2;
}
}
- return(n);
+ return (n);
+
err:
- return(-1);
+ return (-1);
}
-int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
+int
+a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size)
{
- int ret=0;
- int i,j,k,m,n,again,bufsize;
- unsigned char *s=NULL,*sp;
+ int ret = 0;
+ int i, j, k, m, n, again, bufsize;
+ unsigned char *s = NULL, *sp;
unsigned char *bufp;
- int num=0,slen=0,first=1;
+ int num = 0, slen = 0, first = 1;
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
for (;;) {
if (bufsize < 1) {
if (first)
else
goto err_sl;
}
- first=0;
+ first = 0;
- i=bufsize;
- if (buf[i-1] == '\n') buf[--i]='\0';
- if (i == 0) goto err_sl;
- if (buf[i-1] == '\r') buf[--i]='\0';
- if (i == 0) goto err_sl;
- again=(buf[i-1] == '\\');
+ i = bufsize;
+ if (buf[i-1] == '\n')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ if (buf[i-1] == '\r')
+ buf[--i] = '\0';
+ if (i == 0)
+ goto err_sl;
+ again = (buf[i - 1] == '\\');
- for (j=i-1; j>0; j--) {
- if (!( ((buf[j] >= '0') && (buf[j] <= '9')) ||
- ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
- ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
- i=j;
+ for (j = i - 1; j > 0; j--) {
+ if (!(((buf[j] >= '0') && (buf[j] <= '9')) ||
+ ((buf[j] >= 'a') && (buf[j] <= 'f')) ||
+ ((buf[j] >= 'A') && (buf[j] <= 'F')))) {
+ i = j;
break;
}
}
- buf[i]='\0';
+ buf[i] = '\0';
/* We have now cleared all the crap off the end of the
* line */
- if (i < 2) goto err_sl;
+ if (i < 2)
+ goto err_sl;
- bufp=(unsigned char *)buf;
+ bufp = (unsigned char *)buf;
- k=0;
- i-=again;
- if (i%2 != 0) {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_ODD_NUMBER_OF_CHARS);
+ k = 0;
+ i -= again;
+ if (i % 2 != 0) {
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ASN1_R_ODD_NUMBER_OF_CHARS);
goto err;
}
- i/=2;
- if (num+i > slen) {
+ i /= 2;
+ if (num + i > slen) {
if (s == NULL)
- sp=(unsigned char *)malloc(
- (unsigned int)num+i*2);
+ sp = (unsigned char *)malloc(
+ (unsigned int)num + i * 2);
else
- sp=(unsigned char *)realloc(s,
- (unsigned int)num+i*2);
+ sp = (unsigned char *)realloc(s,
+ (unsigned int)num + i * 2);
if (sp == NULL) {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ERR_R_MALLOC_FAILURE);
- if (s != NULL) free(s);
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ERR_R_MALLOC_FAILURE);
+ if (s != NULL)
+ free(s);
goto err;
}
- s=sp;
- slen=num+i*2;
+ s = sp;
+ slen = num + i * 2;
}
- for (j=0; j<i; j++,k+=2) {
- for (n=0; n<2; n++) {
- m=bufp[k+n];
+ for (j = 0; j < i; j++, k += 2) {
+ for (n = 0; n < 2; n++) {
+ m = bufp[k + n];
if ((m >= '0') && (m <= '9'))
- m-='0';
+ m -= '0';
else if ((m >= 'a') && (m <= 'f'))
- m=m-'a'+10;
+ m = m - 'a' + 10;
else if ((m >= 'A') && (m <= 'F'))
- m=m-'A'+10;
+ m = m - 'A' + 10;
else {
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_NON_HEX_CHARACTERS);
+ ASN1err(ASN1_F_A2I_ASN1_STRING,
+ ASN1_R_NON_HEX_CHARACTERS);
goto err;
}
- s[num+j]<<=4;
- s[num+j]|=m;
+ s[num + j] <<= 4;
+ s[num + j] |= m;
}
}
- num+=i;
+ num += i;
if (again)
- bufsize=BIO_gets(bp,buf,size);
+ bufsize = BIO_gets(bp, buf, size);
else
break;
}
- bs->length=num;
- bs->data=s;
- ret=1;
+ bs->length = num;
+ bs->data = s;
+ ret = 1;
+
err:
if (0) {
err_sl:
- ASN1err(ASN1_F_A2I_ASN1_STRING,ASN1_R_SHORT_LINE);
+ ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_SHORT_LINE);
}
- return(ret);
+ return (ret);
}
-