Skip to content

Commit

Permalink
New verify flag to return success if we have any certificate in the
Browse files Browse the repository at this point in the history
trusted store instead of the default which is to return an error if
we can't build the complete chain.
  • Loading branch information
snhenson committed Dec 13, 2012
1 parent 74cc3b5 commit 51e7a43
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apps/apps.c
Expand Up @@ -2527,6 +2527,8 @@ int args_verify(char ***pargs, int *pargc,
flags |= X509_V_FLAG_SUITEB_128_LOS;
else if (!strcmp(arg, "-suiteB_192"))
flags |= X509_V_FLAG_SUITEB_192_LOS;
else if (!strcmp(arg, "-partial_chain"))
flags |= X509_V_FLAG_PARTIAL_CHAIN;
else
return 0;

Expand Down
9 changes: 9 additions & 0 deletions crypto/x509/x509_vfy.c
Expand Up @@ -756,6 +756,15 @@ static int check_trust(X509_STORE_CTX *ctx)
return X509_TRUST_REJECTED;
}
}
/* If we accept partial chains and have at least one trusted
* certificate return success.
*/
if (ctx->param->flags & X509_V_FLAG_PARTIAL_CHAIN)
{
if (ctx->last_untrusted < sk_X509_num(ctx->chain))
return X509_TRUST_TRUSTED;
}

/* If no trusted certs in chain at all return untrusted and
* allow standard (no issuer cert) etc errors to be indicated.
*/
Expand Down
2 changes: 2 additions & 0 deletions crypto/x509/x509_vfy.h
Expand Up @@ -416,6 +416,8 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
#define X509_V_FLAG_SUITEB_192_LOS 0x20000
/* Suite B 128 bit mode allowing 192 bit algorithms */
#define X509_V_FLAG_SUITEB_128_LOS 0x30000
/* Allow partial chains if at least one certificate is in trusted store */
#define X509_V_FLAG_PARTIAL_CHAIN 0x80000


#define X509_VP_FLAG_DEFAULT 0x1
Expand Down

0 comments on commit 51e7a43

Please sign in to comment.