libsec: clarify the code by declaring constant for DirectoryString and handle conversion in mkstring()

This commit is contained in:
cinap_lenrek 2015-10-09 18:52:32 +02:00
parent 6bb63f7832
commit 9ec1a07af2

View file

@ -2357,11 +2357,31 @@ mkbigint(mpint *p)
return e; 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 static Elem
mkstring(char *s, int t) mkstring(char *s, int t)
{ {
Elem e; Elem e;
if(t == DirectoryString)
t = printable(s) ? PrintableString : UTF8String;
e.tag.class = Universal; e.tag.class = Universal;
e.tag.num = t; e.tag.num = t;
e.val.tag = VString; e.val.tag = VString;
@ -2451,22 +2471,6 @@ mkalg(int alg)
return mkseq(mkel(mkoid(alg_oid_tab[alg]), mkel(Null(), nil))); 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 { typedef struct Ints7pref {
int len; int len;
int data[7]; int data[7];
@ -2475,11 +2479,11 @@ typedef struct Ints7pref {
} Ints7pref; } Ints7pref;
Ints7pref DN_oid[] = { Ints7pref DN_oid[] = {
{4, 2, 5, 4, 6, 0, 0, 0, "C=", PrintableString}, {4, 2, 5, 4, 6, 0, 0, 0, "C=", PrintableString},
{4, 2, 5, 4, 8, 0, 0, 0, "ST=" }, {4, 2, 5, 4, 8, 0, 0, 0, "ST=",DirectoryString},
{4, 2, 5, 4, 7, 0, 0, 0, "L=" }, {4, 2, 5, 4, 7, 0, 0, 0, "L=", DirectoryString},
{4, 2, 5, 4, 10, 0, 0, 0, "O=" }, {4, 2, 5, 4, 10, 0, 0, 0, "O=", DirectoryString},
{4, 2, 5, 4, 11, 0, 0, 0, "OU=" }, {4, 2, 5, 4, 11, 0, 0, 0, "OU=",DirectoryString},
{4, 2, 5, 4, 3, 0, 0, 0, "CN=" }, {4, 2, 5, 4, 3, 0, 0, 0, "CN=",DirectoryString},
{7, 1,2,840,113549,1,9,1, "E=", IA5String}, {7, 1,2,840,113549,1,9,1, "E=", IA5String},
{7, 0,9,2342,19200300,100,1,25, "DC=",IA5String}, {7, 0,9,2342,19200300,100,1,25, "DC=",IA5String},
}; };
@ -2487,8 +2491,7 @@ Ints7pref DN_oid[] = {
static Elem static Elem
mkname(Ints7pref *oid, char *subj) 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, oid->stype), nil))), nil));
return mkset(mkel(mkseq(mkel(mkoid((Ints*)oid), mkel(mkstring(subj, stype), nil))), nil));
} }
static Elem static Elem