ref: b96dc1adf9a3d44bce0a668b8b14d647d6dc302e
parent: b01707c3208f0ca310afe5509010351254f602f5
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri Oct 9 14:52:32 EDT 2015
libsec: clarify the code by declaring constant for DirectoryString and handle conversion in mkstring()
--- a/sys/src/libsec/port/x509.c
+++ b/sys/src/libsec/port/x509.c
@@ -2357,11 +2357,31 @@
return e;
}
+static int
+printable(char *s)
+{+ int c;
+
+ while((c = (uchar)*s++) != 0){+ if((c >= 'a' && c <= 'z')
+ || (c >= 'A' && c <= 'Z')
+ || (c >= '0' && c <= '9')
+ || strchr("'=()+,-./:? ", c) != nil)+ continue;
+ return 0;
+ }
+ return 1;
+}
+
+#define DirectoryString 0
+
static Elem
mkstring(char *s, int t)
{Elem e;
+ if(t == DirectoryString)
+ t = printable(s) ? PrintableString : UTF8String;
e.tag.class = Universal;
e.tag.num = t;
e.val.tag = VString;
@@ -2451,22 +2471,6 @@
return mkseq(mkel(mkoid(alg_oid_tab[alg]), mkel(Null(), nil)));
}
-static int
-printable(char *s)
-{- int c;
-
- while((c = (uchar)*s++) != 0){- if((c >= 'a' && c <= 'z')
- || (c >= 'A' && c <= 'Z')
- || (c >= '0' && c <= '9')
- || strchr("'=()+,-./:? ", c) != nil)- continue;
- return 0;
- }
- return 1;
-}
-
typedef struct Ints7pref {int len;
int data[7];
@@ -2475,11 +2479,11 @@
} Ints7pref;
Ints7pref DN_oid[] = { {4, 2, 5, 4, 6, 0, 0, 0, "C=", PrintableString},- {4, 2, 5, 4, 8, 0, 0, 0, "ST=" },- {4, 2, 5, 4, 7, 0, 0, 0, "L=" },- {4, 2, 5, 4, 10, 0, 0, 0, "O=" },- {4, 2, 5, 4, 11, 0, 0, 0, "OU=" },- {4, 2, 5, 4, 3, 0, 0, 0, "CN=" },+ {4, 2, 5, 4, 8, 0, 0, 0, "ST=",DirectoryString},+ {4, 2, 5, 4, 7, 0, 0, 0, "L=", DirectoryString},+ {4, 2, 5, 4, 10, 0, 0, 0, "O=", DirectoryString},+ {4, 2, 5, 4, 11, 0, 0, 0, "OU=",DirectoryString},+ {4, 2, 5, 4, 3, 0, 0, 0, "CN=",DirectoryString}, {7, 1,2,840,113549,1,9,1, "E=", IA5String}, {7, 0,9,2342,19200300,100,1,25, "DC=",IA5String},};
@@ -2487,8 +2491,7 @@
static Elem
mkname(Ints7pref *oid, char *subj)
{- int stype = oid->stype ? oid->stype : (printable(subj) ? PrintableString : UTF8String);
- return mkset(mkel(mkseq(mkel(mkoid((Ints*)oid), mkel(mkstring(subj, stype), nil))), nil));
+ return mkset(mkel(mkseq(mkel(mkoid((Ints*)oid), mkel(mkstring(subj, oid->stype), nil))), nil));
}
static Elem
--
⑨