Place hex_to_string and string_to_hex in separate source file to avoid
authorDr. Stephen Henson <steve@openssl.org>
Tue, 20 Jun 2006 18:06:40 +0000 (18:06 +0000)
committerDr. Stephen Henson <steve@openssl.org>
Tue, 20 Jun 2006 18:06:40 +0000 (18:06 +0000)
dragging in extra dependencies when just these functions are used.

crypto/x509v3/Makefile
crypto/x509v3/v3_hex.c [new file with mode: 0644]
crypto/x509v3/v3_utl.c

index 49423f39f754cd9265004ef5e34da04fb0d22eee..6a0d2695aebc2a2c06281bf259e32dc1d67b3c1a 100644 (file)
@@ -25,11 +25,11 @@ LIB=$(TOP)/libcrypto.a
 LIBSRC=        v3_bcons.c v3_bitst.c v3_conf.c v3_extku.c v3_ia5.c v3_lib.c \
 v3_prn.c v3_utl.c v3err.c v3_genn.c v3_alt.c v3_skey.c v3_akey.c v3_pku.c \
 v3_int.c v3_enum.c v3_sxnet.c v3_cpols.c v3_crld.c v3_purp.c v3_info.c \
-v3_ocsp.c v3_akeya.c v3_pcia.c v3_pci.c
+v3_ocsp.c v3_akeya.c v3_pcia.c v3_pci.c v3_hex.c
 LIBOBJ= v3_bcons.o v3_bitst.o v3_conf.o v3_extku.o v3_ia5.o v3_lib.o \
 v3_prn.o v3_utl.o v3err.o v3_genn.o v3_alt.o v3_skey.o v3_akey.o v3_pku.o \
 v3_int.o v3_enum.o v3_sxnet.o v3_cpols.o v3_crld.o v3_purp.o v3_info.o \
-v3_ocsp.o v3_akeya.o v3_pcia.o v3_pci.o
+v3_ocsp.o v3_akeya.o v3_pcia.o v3_pci.o v3_hex.o
 
 SRC= $(LIBSRC)
 
diff --git a/crypto/x509v3/v3_hex.c b/crypto/x509v3/v3_hex.c
new file mode 100644 (file)
index 0000000..7b810f7
--- /dev/null
@@ -0,0 +1,153 @@
+/* v3_utl.c */
+/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
+ * project 1999.
+ */
+/* ====================================================================
+ * Copyright (c) 1999 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    licensing@OpenSSL.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT 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.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+#include "cryptlib.h"
+#include <openssl/conf.h>
+#include <openssl/x509v3.h>
+
+/* hex string utilities */
+
+/* Given a buffer of length 'len' return a OPENSSL_malloc'ed string with its
+ * hex representation
+ * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines)
+ */
+
+char *hex_to_string(unsigned char *buffer, long len)
+{
+       char *tmp, *q;
+       unsigned char *p;
+       int i;
+       static char hexdig[] = "0123456789ABCDEF";
+       if(!buffer || !len) return NULL;
+       if(!(tmp = OPENSSL_malloc(len * 3 + 1))) {
+               X509V3err(X509V3_F_HEX_TO_STRING,ERR_R_MALLOC_FAILURE);
+               return NULL;
+       }
+       q = tmp;
+       for(i = 0, p = buffer; i < len; i++,p++) {
+               *q++ = hexdig[(*p >> 4) & 0xf];
+               *q++ = hexdig[*p & 0xf];
+               *q++ = ':';
+       }
+       q[-1] = 0;
+#ifdef CHARSET_EBCDIC
+       ebcdic2ascii(tmp, tmp, q - tmp - 1);
+#endif
+
+       return tmp;
+}
+
+/* Give a string of hex digits convert to
+ * a buffer
+ */
+
+unsigned char *string_to_hex(char *str, long *len)
+{
+       unsigned char *hexbuf, *q;
+       unsigned char ch, cl, *p;
+       if(!str) {
+               X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_INVALID_NULL_ARGUMENT);
+               return NULL;
+       }
+       if(!(hexbuf = OPENSSL_malloc(strlen(str) >> 1))) goto err;
+       for(p = (unsigned char *)str, q = hexbuf; *p;) {
+               ch = *p++;
+#ifdef CHARSET_EBCDIC
+               ch = os_toebcdic[ch];
+#endif
+               if(ch == ':') continue;
+               cl = *p++;
+#ifdef CHARSET_EBCDIC
+               cl = os_toebcdic[cl];
+#endif
+               if(!cl) {
+                       X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_ODD_NUMBER_OF_DIGITS);
+                       OPENSSL_free(hexbuf);
+                       return NULL;
+               }
+               if(isupper(ch)) ch = tolower(ch);
+               if(isupper(cl)) cl = tolower(cl);
+
+               if((ch >= '0') && (ch <= '9')) ch -= '0';
+               else if ((ch >= 'a') && (ch <= 'f')) ch -= 'a' - 10;
+               else goto badhex;
+
+               if((cl >= '0') && (cl <= '9')) cl -= '0';
+               else if ((cl >= 'a') && (cl <= 'f')) cl -= 'a' - 10;
+               else goto badhex;
+
+               *q++ = (ch << 4) | cl;
+       }
+
+       if(len) *len = q - hexbuf;
+
+       return hexbuf;
+
+       err:
+       if(hexbuf) OPENSSL_free(hexbuf);
+       X509V3err(X509V3_F_STRING_TO_HEX,ERR_R_MALLOC_FAILURE);
+       return NULL;
+
+       badhex:
+       OPENSSL_free(hexbuf);
+       X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_ILLEGAL_HEX_DIGIT);
+       return NULL;
+
+}
index 34ac2998defe5c661148a6bfa883a6622def35c4..fd3dd8bdda2dd4aea7319c2aefda1d6ee59e3366 100644 (file)
@@ -346,96 +346,6 @@ static char *strip_spaces(char *name)
        return p;
 }
 
-/* hex string utilities */
-
-/* Given a buffer of length 'len' return a OPENSSL_malloc'ed string with its
- * hex representation
- * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines)
- */
-
-char *hex_to_string(unsigned char *buffer, long len)
-{
-       char *tmp, *q;
-       unsigned char *p;
-       int i;
-       static char hexdig[] = "0123456789ABCDEF";
-       if(!buffer || !len) return NULL;
-       if(!(tmp = OPENSSL_malloc(len * 3 + 1))) {
-               X509V3err(X509V3_F_HEX_TO_STRING,ERR_R_MALLOC_FAILURE);
-               return NULL;
-       }
-       q = tmp;
-       for(i = 0, p = buffer; i < len; i++,p++) {
-               *q++ = hexdig[(*p >> 4) & 0xf];
-               *q++ = hexdig[*p & 0xf];
-               *q++ = ':';
-       }
-       q[-1] = 0;
-#ifdef CHARSET_EBCDIC
-       ebcdic2ascii(tmp, tmp, q - tmp - 1);
-#endif
-
-       return tmp;
-}
-
-/* Give a string of hex digits convert to
- * a buffer
- */
-
-unsigned char *string_to_hex(char *str, long *len)
-{
-       unsigned char *hexbuf, *q;
-       unsigned char ch, cl, *p;
-       if(!str) {
-               X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_INVALID_NULL_ARGUMENT);
-               return NULL;
-       }
-       if(!(hexbuf = OPENSSL_malloc(strlen(str) >> 1))) goto err;
-       for(p = (unsigned char *)str, q = hexbuf; *p;) {
-               ch = *p++;
-#ifdef CHARSET_EBCDIC
-               ch = os_toebcdic[ch];
-#endif
-               if(ch == ':') continue;
-               cl = *p++;
-#ifdef CHARSET_EBCDIC
-               cl = os_toebcdic[cl];
-#endif
-               if(!cl) {
-                       X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_ODD_NUMBER_OF_DIGITS);
-                       OPENSSL_free(hexbuf);
-                       return NULL;
-               }
-               if(isupper(ch)) ch = tolower(ch);
-               if(isupper(cl)) cl = tolower(cl);
-
-               if((ch >= '0') && (ch <= '9')) ch -= '0';
-               else if ((ch >= 'a') && (ch <= 'f')) ch -= 'a' - 10;
-               else goto badhex;
-
-               if((cl >= '0') && (cl <= '9')) cl -= '0';
-               else if ((cl >= 'a') && (cl <= 'f')) cl -= 'a' - 10;
-               else goto badhex;
-
-               *q++ = (ch << 4) | cl;
-       }
-
-       if(len) *len = q - hexbuf;
-
-       return hexbuf;
-
-       err:
-       if(hexbuf) OPENSSL_free(hexbuf);
-       X509V3err(X509V3_F_STRING_TO_HEX,ERR_R_MALLOC_FAILURE);
-       return NULL;
-
-       badhex:
-       OPENSSL_free(hexbuf);
-       X509V3err(X509V3_F_STRING_TO_HEX,X509V3_R_ILLEGAL_HEX_DIGIT);
-       return NULL;
-
-}
-
 /* V2I name comparison function: returns zero if 'name' matches
  * cmp or cmp.*
  */