mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-22 16:25:43 +01:00
Fix extraction of signature-type from PK context instance
This commit is contained in:
parent
418a62242b
commit
fc77144802
@ -313,9 +313,15 @@ int mbedtls_x509write_crt_der( mbedtls_x509write_cert *ctx, unsigned char *buf,
|
|||||||
c = tmp_buf + sizeof( tmp_buf );
|
c = tmp_buf + sizeof( tmp_buf );
|
||||||
|
|
||||||
/* Signature algorithm needed in TBS, and later for actual signature */
|
/* Signature algorithm needed in TBS, and later for actual signature */
|
||||||
pk_alg = mbedtls_pk_get_type( ctx->issuer_key );
|
|
||||||
if( pk_alg == MBEDTLS_PK_ECKEY )
|
/* There's no direct way of extracting a signature algorithm
|
||||||
|
* (represented as an element of mbedtls_pk_type_t) from a PK instance. */
|
||||||
|
if( mbedtls_pk_can_do( ctx->issuer_key, MBEDTLS_PK_RSA ) )
|
||||||
|
pk_alg = MBEDTLS_PK_RSA;
|
||||||
|
else if( mbedtls_pk_can_do( ctx->issuer_key, MBEDTLS_PK_ECDSA ) )
|
||||||
pk_alg = MBEDTLS_PK_ECDSA;
|
pk_alg = MBEDTLS_PK_ECDSA;
|
||||||
|
else
|
||||||
|
pk_alg = MBEDTLS_PK_NONE;
|
||||||
|
|
||||||
if( ( ret = mbedtls_oid_get_oid_by_sig_alg( pk_alg, ctx->md_alg,
|
if( ( ret = mbedtls_oid_get_oid_by_sig_alg( pk_alg, ctx->md_alg,
|
||||||
&sig_oid, &sig_oid_len ) ) != 0 )
|
&sig_oid, &sig_oid_len ) ) != 0 )
|
||||||
|
@ -194,14 +194,21 @@ int mbedtls_x509write_csr_der( mbedtls_x509write_csr *ctx, unsigned char *buf, s
|
|||||||
*/
|
*/
|
||||||
mbedtls_md( mbedtls_md_info_from_type( ctx->md_alg ), c, len, hash );
|
mbedtls_md( mbedtls_md_info_from_type( ctx->md_alg ), c, len, hash );
|
||||||
|
|
||||||
pk_alg = mbedtls_pk_get_type( ctx->key );
|
|
||||||
if( pk_alg == MBEDTLS_PK_ECKEY )
|
|
||||||
pk_alg = MBEDTLS_PK_ECDSA;
|
|
||||||
|
|
||||||
if( ( ret = mbedtls_pk_sign( ctx->key, ctx->md_alg, hash, 0, sig, &sig_len,
|
if( ( ret = mbedtls_pk_sign( ctx->key, ctx->md_alg, hash, 0, sig, &sig_len,
|
||||||
f_rng, p_rng ) ) != 0 ||
|
f_rng, p_rng ) ) != 0 )
|
||||||
( ret = mbedtls_oid_get_oid_by_sig_alg( pk_alg, ctx->md_alg,
|
{
|
||||||
&sig_oid, &sig_oid_len ) ) != 0 )
|
return( ret );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( mbedtls_pk_can_do( ctx->key, MBEDTLS_PK_RSA ) )
|
||||||
|
pk_alg = MBEDTLS_PK_RSA;
|
||||||
|
else if( mbedtls_pk_can_do( ctx->key, MBEDTLS_PK_ECDSA ) )
|
||||||
|
pk_alg = MBEDTLS_PK_ECDSA;
|
||||||
|
else
|
||||||
|
pk_alg = MBEDTLS_PK_NONE;
|
||||||
|
|
||||||
|
if( ( ret = mbedtls_oid_get_oid_by_sig_alg( pk_alg, ctx->md_alg,
|
||||||
|
&sig_oid, &sig_oid_len ) ) != 0 )
|
||||||
{
|
{
|
||||||
return( ret );
|
return( ret );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user