diff options
| author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-02-06 01:01:34 +0100 |
|---|---|---|
| committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-02-06 01:01:34 +0100 |
| commit | 1df513a2a1683efa18655047946ef735479b2dfb (patch) | |
| tree | b672992cac3410416ab00a7b97cddbb6b96b303c | |
| parent | 03e6d3a0f06b1f1dc2b70bf7d236e8c96bbfa120 (diff) | |
| download | plan9front-1df513a2a1683efa18655047946ef735479b2dfb.tar.xz | |
libsec: need PKCS#9 "Extension Request" attribute (rsareq())
| -rw-r--r-- | sys/src/libsec/port/x509.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/src/libsec/port/x509.c b/sys/src/libsec/port/x509.c index 77361b266..8c2f28a83 100644 --- a/sys/src/libsec/port/x509.c +++ b/sys/src/libsec/port/x509.c @@ -2741,17 +2741,22 @@ mkextel(Elem e, Ints *oid, Elist *el) } static Ints15 oid_subjectAltName = {4, 2, 5, 29, 17 }; +static Ints15 oid_extensionRequest = { 7, 1, 2, 840, 113549, 1, 9, 14}; static Elist* -mkextensions(char *alts) +mkextensions(char *alts, int req) { Elist *sl, *xl; xl = nil; if((sl = mkaltnames(alts)) != nil) xl = mkextel(mkseq(sl), (Ints*)&oid_subjectAltName, xl); - if(xl != nil) + if(xl != nil){ + if(req) return mkel(mkcont(mkseq( + mkel(mkoid((Ints*)&oid_extensionRequest), + mkel(mkset(mkel(mkseq(xl), nil)), nil))), 0), nil); return mkel(mkcont(mkseq(xl), 3), nil); + } return nil; } @@ -2807,7 +2812,7 @@ X509rsagen(RSApriv *priv, char *subj, ulong valid[2], int *certlen) mkel(mkalg(ALG_rsaEncryption), mkel(mkbits(pkbytes->data, pkbytes->len), nil))), - mkextensions(alts))))))))); + mkextensions(alts, 0))))))))); freebytes(pkbytes); if(encode(e, &certinfobytes) != ASN_OK) goto errret; @@ -2875,7 +2880,7 @@ X509rsareq(RSApriv *priv, char *subj, int *certlen) mkel(mkalg(ALG_rsaEncryption), mkel(mkbits(pkbytes->data, pkbytes->len), nil))), - mkextensions(alts))))); + mkextensions(alts, 1))))); freebytes(pkbytes); if(encode(e, &certinfobytes) != ASN_OK) goto errret; |
