mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-16 11:21:18 +03:00
Merge branch upstream into axtls-upgrade
This commit is contained in:
97
ssl/x509.c
97
ssl/x509.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2007, Cameron Rich
|
||||
* Copyright (c) 2007-2015, Cameron Rich
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -126,33 +126,63 @@ int x509_new(const uint8_t *cert, int *len, X509_CTX **ctx)
|
||||
SHA1_Final(x509_ctx->fingerprint, &sha_fp_ctx);
|
||||
|
||||
#ifdef CONFIG_SSL_CERT_VERIFICATION /* only care if doing verification */
|
||||
/* use the appropriate signature algorithm (SHA1/MD5/MD2) */
|
||||
if (x509_ctx->sig_type == SIG_TYPE_MD5)
|
||||
/* use the appropriate signature algorithm */
|
||||
switch (x509_ctx->sig_type)
|
||||
{
|
||||
MD5_CTX md5_ctx;
|
||||
uint8_t md5_dgst[MD5_SIZE];
|
||||
MD5_Init(&md5_ctx);
|
||||
MD5_Update(&md5_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
MD5_Final(md5_dgst, &md5_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, md5_dgst, MD5_SIZE);
|
||||
}
|
||||
else if (x509_ctx->sig_type == SIG_TYPE_SHA1)
|
||||
{
|
||||
SHA1_CTX sha_ctx;
|
||||
uint8_t sha_dgst[SHA1_SIZE];
|
||||
SHA1_Init(&sha_ctx);
|
||||
SHA1_Update(&sha_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
SHA1_Final(sha_dgst, &sha_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, sha_dgst, SHA1_SIZE);
|
||||
}
|
||||
else if (x509_ctx->sig_type == SIG_TYPE_MD2)
|
||||
{
|
||||
MD2_CTX md2_ctx;
|
||||
uint8_t md2_dgst[MD2_SIZE];
|
||||
MD2_Init(&md2_ctx);
|
||||
MD2_Update(&md2_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
MD2_Final(md2_dgst, &md2_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, md2_dgst, MD2_SIZE);
|
||||
case SIG_TYPE_MD5:
|
||||
{
|
||||
MD5_CTX md5_ctx;
|
||||
uint8_t md5_dgst[MD5_SIZE];
|
||||
MD5_Init(&md5_ctx);
|
||||
MD5_Update(&md5_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
MD5_Final(md5_dgst, &md5_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, md5_dgst, MD5_SIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case SIG_TYPE_SHA1:
|
||||
{
|
||||
SHA1_CTX sha_ctx;
|
||||
uint8_t sha_dgst[SHA1_SIZE];
|
||||
SHA1_Init(&sha_ctx);
|
||||
SHA1_Update(&sha_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
SHA1_Final(sha_dgst, &sha_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, sha_dgst, SHA1_SIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case SIG_TYPE_SHA256:
|
||||
{
|
||||
SHA256_CTX sha256_ctx;
|
||||
uint8_t sha256_dgst[SHA256_SIZE];
|
||||
SHA256_Init(&sha256_ctx);
|
||||
SHA256_Update(&sha256_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
SHA256_Final(sha256_dgst, &sha256_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, sha256_dgst, SHA256_SIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case SIG_TYPE_SHA384:
|
||||
{
|
||||
SHA384_CTX sha384_ctx;
|
||||
uint8_t sha384_dgst[SHA384_SIZE];
|
||||
SHA384_Init(&sha384_ctx);
|
||||
SHA384_Update(&sha384_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
SHA384_Final(sha384_dgst, &sha384_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, sha384_dgst, SHA384_SIZE);
|
||||
}
|
||||
break;
|
||||
|
||||
case SIG_TYPE_SHA512:
|
||||
{
|
||||
SHA512_CTX sha512_ctx;
|
||||
uint8_t sha512_dgst[SHA512_SIZE];
|
||||
SHA512_Init(&sha512_ctx);
|
||||
SHA512_Update(&sha512_ctx, &cert[begin_tbs], end_tbs-begin_tbs);
|
||||
SHA512_Final(sha512_dgst, &sha512_ctx);
|
||||
x509_ctx->digest = bi_import(bi_ctx, sha512_dgst, SHA512_SIZE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (cert[offset] == ASN1_V3_DATA)
|
||||
@ -494,14 +524,23 @@ void x509_print(const X509_CTX *cert, CA_CERT_CTX *ca_cert_ctx)
|
||||
printf("Sig Type:\t\t\t");
|
||||
switch (cert->sig_type)
|
||||
{
|
||||
case SIG_TYPE_MD2:
|
||||
printf("MD2\n");
|
||||
break;
|
||||
case SIG_TYPE_MD5:
|
||||
printf("MD5\n");
|
||||
break;
|
||||
case SIG_TYPE_SHA1:
|
||||
printf("SHA1\n");
|
||||
break;
|
||||
case SIG_TYPE_MD2:
|
||||
printf("MD2\n");
|
||||
case SIG_TYPE_SHA256:
|
||||
printf("SHA256\n");
|
||||
break;
|
||||
case SIG_TYPE_SHA384:
|
||||
printf("SHA384\n");
|
||||
break;
|
||||
case SIG_TYPE_SHA512:
|
||||
printf("SHA512\n");
|
||||
break;
|
||||
default:
|
||||
printf("Unrecognized: %d\n", cert->sig_type);
|
||||
|
Reference in New Issue
Block a user