Loading crypto/asn1/x_bignum.c +39 −30 Original line number Diff line number Diff line Loading @@ -99,29 +99,39 @@ ASN1_ITEM_end(CBIGNUM) static int bn_new(ASN1_VALUE **pval, const ASN1_ITEM *it) { *pval = (ASN1_VALUE *)BN_new(); if(*pval) return 1; else return 0; if (*pval) return 1; else return 0; } static void bn_free(ASN1_VALUE **pval, const ASN1_ITEM *it) { if(!*pval) return; if(it->size & BN_SENSITIVE) BN_clear_free((BIGNUM *)*pval); else BN_free((BIGNUM *)*pval); if (!*pval) return; if (it->size & BN_SENSITIVE) BN_clear_free((BIGNUM *)*pval); else BN_free((BIGNUM *)*pval); *pval = NULL; } static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) { BIGNUM *bn; int pad; if(!*pval) return -1; if (!*pval) return -1; bn = (BIGNUM *)*pval; /* If MSB set in an octet we need a padding byte */ if(BN_num_bits(bn) & 0x7) pad = 0; else pad = 1; if (BN_num_bits(bn) & 0x7) pad = 0; else pad = 1; if (cont) { if(pad) *cont++ = 0; if (pad) *cont++ = 0; BN_bn2bin(bn, cont); } return pad + BN_num_bytes(bn); Loading @@ -131,7 +141,8 @@ static int bn_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it) { BIGNUM *bn; if(!*pval) bn_new(pval, it); if (!*pval) bn_new(pval, it); bn = (BIGNUM *)*pval; if (!BN_bin2bn(cont, len, bn)) { bn_free(pval, it); Loading @@ -139,5 +150,3 @@ static int bn_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, } return 1; } crypto/asn1/x_long.c +81 −68 Original line number Diff line number Diff line Loading @@ -106,7 +106,8 @@ static void long_free(ASN1_VALUE **pval, const ASN1_ITEM *it) *(long *)pval = it->size; } static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) { long ltmp; unsigned long utmp; Loading @@ -117,26 +118,34 @@ static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const A /* use memcpy, because we may not be long aligned */ memcpy(<mp, cp, sizeof(long)); if(ltmp == it->size) return -1; /* Convert the long to positive: we subtract one if negative so * we can cleanly handle the padding if only the MSB of the leading * octet is set. if (ltmp == it->size) return -1; /* * Convert the long to positive: we subtract one if negative so we can * cleanly handle the padding if only the MSB of the leading octet is * set. */ if(ltmp < 0) utmp = -ltmp - 1; else utmp = ltmp; if (ltmp < 0) utmp = -ltmp - 1; else utmp = ltmp; clen = BN_num_bits_word(utmp); /* If MSB of leading octet set we need to pad */ if(!(clen & 0x7)) pad = 1; else pad = 0; if (!(clen & 0x7)) pad = 1; else pad = 0; /* Convert number of bits to number of octets */ clen = (clen + 7) >> 3; if (cont) { if(pad) *cont++ = (ltmp < 0) ? 0xff : 0; if (pad) *cont++ = (ltmp < 0) ? 0xff : 0; for (i = clen - 1; i >= 0; i--) { cont[i] = (unsigned char)(utmp & 0xff); if(ltmp < 0) cont[i] ^= 0xff; if (ltmp < 0) cont[i] ^= 0xff; utmp >>= 8; } } Loading @@ -155,13 +164,17 @@ static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, return 0; } /* Is it negative? */ if(len && (cont[0] & 0x80)) neg = 1; else neg = 0; if (len && (cont[0] & 0x80)) neg = 1; else neg = 0; utmp = 0; for (i = 0; i < len; i++) { utmp <<= 8; if(neg) utmp |= cont[i] ^ 0xff; else utmp |= cont[i]; if (neg) utmp |= cont[i] ^ 0xff; else utmp |= cont[i]; } ltmp = (long)utmp; if (neg) { Loading util/openssl-format-source +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ do -e 's/^((DECLARE|IMPLEMENT)_(EXTERN_ASN1|ASN1|ADB|STACK_OF|PKCS12_STACK_OF).*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^([ \t]*(make_dh|make_dh_bn|make_rfc5114_td)\(.*\)[ \t,]*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^(ASN1_ADB_TEMPLATE\(.*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^((ASN1|ADB)_.*_END\(.*[\){=,;]+[ \t]*)$/$1\n\/**INDENT-ON**\//;' \ -e 's/^((ASN1|ADB)_.*_(end|END)\(.*[\){=,;]+[ \t]*)$/$1\n\/**INDENT-ON**\//;' \ -e '/ASN1_(ITEM_ref|ITEM_ptr|ITEM_rptr|PCTX)/ || s/^((ASN1|ADB)_[^\*]*[){=,]+[ \t]*)$/\/**INDENT-OFF**\/\n$1/;' \ -e 's/^(} (ASN1|ADB)_[^\*]*[\){=,;]+)$/$1\n\/**INDENT-ON**\//;' \ | \ Loading Loading
crypto/asn1/x_bignum.c +39 −30 Original line number Diff line number Diff line Loading @@ -99,29 +99,39 @@ ASN1_ITEM_end(CBIGNUM) static int bn_new(ASN1_VALUE **pval, const ASN1_ITEM *it) { *pval = (ASN1_VALUE *)BN_new(); if(*pval) return 1; else return 0; if (*pval) return 1; else return 0; } static void bn_free(ASN1_VALUE **pval, const ASN1_ITEM *it) { if(!*pval) return; if(it->size & BN_SENSITIVE) BN_clear_free((BIGNUM *)*pval); else BN_free((BIGNUM *)*pval); if (!*pval) return; if (it->size & BN_SENSITIVE) BN_clear_free((BIGNUM *)*pval); else BN_free((BIGNUM *)*pval); *pval = NULL; } static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) static int bn_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) { BIGNUM *bn; int pad; if(!*pval) return -1; if (!*pval) return -1; bn = (BIGNUM *)*pval; /* If MSB set in an octet we need a padding byte */ if(BN_num_bits(bn) & 0x7) pad = 0; else pad = 1; if (BN_num_bits(bn) & 0x7) pad = 0; else pad = 1; if (cont) { if(pad) *cont++ = 0; if (pad) *cont++ = 0; BN_bn2bin(bn, cont); } return pad + BN_num_bytes(bn); Loading @@ -131,7 +141,8 @@ static int bn_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it) { BIGNUM *bn; if(!*pval) bn_new(pval, it); if (!*pval) bn_new(pval, it); bn = (BIGNUM *)*pval; if (!BN_bin2bn(cont, len, bn)) { bn_free(pval, it); Loading @@ -139,5 +150,3 @@ static int bn_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, } return 1; }
crypto/asn1/x_long.c +81 −68 Original line number Diff line number Diff line Loading @@ -106,7 +106,8 @@ static void long_free(ASN1_VALUE **pval, const ASN1_ITEM *it) *(long *)pval = it->size; } static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it) { long ltmp; unsigned long utmp; Loading @@ -117,26 +118,34 @@ static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const A /* use memcpy, because we may not be long aligned */ memcpy(<mp, cp, sizeof(long)); if(ltmp == it->size) return -1; /* Convert the long to positive: we subtract one if negative so * we can cleanly handle the padding if only the MSB of the leading * octet is set. if (ltmp == it->size) return -1; /* * Convert the long to positive: we subtract one if negative so we can * cleanly handle the padding if only the MSB of the leading octet is * set. */ if(ltmp < 0) utmp = -ltmp - 1; else utmp = ltmp; if (ltmp < 0) utmp = -ltmp - 1; else utmp = ltmp; clen = BN_num_bits_word(utmp); /* If MSB of leading octet set we need to pad */ if(!(clen & 0x7)) pad = 1; else pad = 0; if (!(clen & 0x7)) pad = 1; else pad = 0; /* Convert number of bits to number of octets */ clen = (clen + 7) >> 3; if (cont) { if(pad) *cont++ = (ltmp < 0) ? 0xff : 0; if (pad) *cont++ = (ltmp < 0) ? 0xff : 0; for (i = clen - 1; i >= 0; i--) { cont[i] = (unsigned char)(utmp & 0xff); if(ltmp < 0) cont[i] ^= 0xff; if (ltmp < 0) cont[i] ^= 0xff; utmp >>= 8; } } Loading @@ -155,13 +164,17 @@ static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, return 0; } /* Is it negative? */ if(len && (cont[0] & 0x80)) neg = 1; else neg = 0; if (len && (cont[0] & 0x80)) neg = 1; else neg = 0; utmp = 0; for (i = 0; i < len; i++) { utmp <<= 8; if(neg) utmp |= cont[i] ^ 0xff; else utmp |= cont[i]; if (neg) utmp |= cont[i] ^ 0xff; else utmp |= cont[i]; } ltmp = (long)utmp; if (neg) { Loading
util/openssl-format-source +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ do -e 's/^((DECLARE|IMPLEMENT)_(EXTERN_ASN1|ASN1|ADB|STACK_OF|PKCS12_STACK_OF).*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^([ \t]*(make_dh|make_dh_bn|make_rfc5114_td)\(.*\)[ \t,]*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^(ASN1_ADB_TEMPLATE\(.*)$/\/**INDENT-OFF**\/\n$1\n\/**INDENT-ON**\//;' \ -e 's/^((ASN1|ADB)_.*_END\(.*[\){=,;]+[ \t]*)$/$1\n\/**INDENT-ON**\//;' \ -e 's/^((ASN1|ADB)_.*_(end|END)\(.*[\){=,;]+[ \t]*)$/$1\n\/**INDENT-ON**\//;' \ -e '/ASN1_(ITEM_ref|ITEM_ptr|ITEM_rptr|PCTX)/ || s/^((ASN1|ADB)_[^\*]*[){=,]+[ \t]*)$/\/**INDENT-OFF**\/\n$1/;' \ -e 's/^(} (ASN1|ADB)_[^\*]*[\){=,;]+)$/$1\n\/**INDENT-ON**\//;' \ | \ Loading