summaryrefslogtreecommitdiff
path: root/sys/src/libsec
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-02-10 21:36:19 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2017-02-10 21:36:19 +0100
commitfb2abc2a0483bc1ffa10f341b6d2f665a5e03bca (patch)
tree649ff0638156fe48839d9bdd6f582160ea4b1aae /sys/src/libsec
parent34a9d22ec6c680b2ed871defce357e5650aa0629 (diff)
libsec: make X509toECpub() return CN name like X509toRSApub()
Diffstat (limited to 'sys/src/libsec')
-rw-r--r--sys/src/libsec/port/tlshand.c2
-rw-r--r--sys/src/libsec/port/x509.c11
2 files changed, 9 insertions, 4 deletions
diff --git a/sys/src/libsec/port/tlshand.c b/sys/src/libsec/port/tlshand.c
index 9aec9fb63..a34a43106 100644
--- a/sys/src/libsec/port/tlshand.c
+++ b/sys/src/libsec/port/tlshand.c
@@ -2822,7 +2822,7 @@ verifyDHparams(TlsSec *sec, Bytes *par, Bytes *cert, Bytes *sig, int sigalg)
rsapubfree(rsapk);
break;
case 0x03:
- ecpk = X509toECpub(cert->data, cert->len, &dom);
+ ecpk = X509toECpub(cert->data, cert->len, nil, 0, &dom);
if(ecpk == nil)
return "bad certificate";
err = X509ecdsaverifydigest(sig->data, sig->len, digest, digestlen, &dom, ecpk);
diff --git a/sys/src/libsec/port/x509.c b/sys/src/libsec/port/x509.c
index da09b978d..a05d63159 100644
--- a/sys/src/libsec/port/x509.c
+++ b/sys/src/libsec/port/x509.c
@@ -2314,7 +2314,7 @@ end:
}
ECpub*
-X509toECpub(uchar *cert, int ncert, ECdomain *dom)
+X509toECpub(uchar *cert, int ncert, char *name, int nname, ECdomain *dom)
{
CertX509 *c;
ECpub *pub;
@@ -2325,6 +2325,12 @@ X509toECpub(uchar *cert, int ncert, ECdomain *dom)
freebytes(b);
if(c == nil)
return nil;
+ if(name != nil && c->subject != nil){
+ char *e = strchr(c->subject, ',');
+ if(e != nil)
+ *e = 0; /* take just CN part of Distinguished Name */
+ strncpy(name, c->subject, nname);
+ }
pub = nil;
if(c->publickey_alg == ALG_ecPublicKey){
ecdominit(dom, namedcurves[c->curve]);
@@ -2365,7 +2371,6 @@ X509ecdsaverify(uchar *cert, int ncert, ECdomain *dom, ECpub *pk)
RSApub*
X509toRSApub(uchar *cert, int ncert, char *name, int nname)
{
- char *e;
Bytes *b;
CertX509 *c;
RSApub *pub;
@@ -2379,7 +2384,7 @@ X509toRSApub(uchar *cert, int ncert, char *name, int nname)
if(c == nil)
return nil;
if(name != nil && c->subject != nil){
- e = strchr(c->subject, ',');
+ char *e = strchr(c->subject, ',');
if(e != nil)
*e = 0; /* take just CN part of Distinguished Name */
strncpy(name, c->subject, nname);