mirror of
				https://github.com/yuzu-emu/mbedtls.git
				synced 2025-11-04 14:45:08 +00:00 
			
		
		
		
	Implement PSA_ALG_SELECT_RAW
This commit is contained in:
		
							parent
							
								
									cce18aec4c
								
							
						
					
					
						commit
						751d965dfc
					
				| 
						 | 
					@ -3241,6 +3241,16 @@ psa_status_t psa_generator_abort( psa_crypto_generator_t *generator )
 | 
				
			||||||
         * nothing to do. */
 | 
					         * nothing to do. */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
 | 
					    if( generator->alg == PSA_ALG_SELECT_RAW )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if( generator->ctx.buffer.data != NULL )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            mbedtls_zeroize( generator->ctx.buffer.data,
 | 
				
			||||||
 | 
					                             generator->ctx.buffer.size );
 | 
				
			||||||
 | 
					            mbedtls_free( generator->ctx.buffer.data );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
#if defined(MBEDTLS_MD_C)
 | 
					#if defined(MBEDTLS_MD_C)
 | 
				
			||||||
    if( PSA_ALG_IS_HKDF( generator->alg ) )
 | 
					    if( PSA_ALG_IS_HKDF( generator->alg ) )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -3358,6 +3368,14 @@ psa_status_t psa_generator_read( psa_crypto_generator_t *generator,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    generator->capacity -= output_length;
 | 
					    generator->capacity -= output_length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( generator->alg == PSA_ALG_SELECT_RAW )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        size_t offset =
 | 
				
			||||||
 | 
					            generator->ctx.buffer.size - generator->capacity - output_length;
 | 
				
			||||||
 | 
					        memcpy( output, generator->ctx.buffer.data + offset, output_length );
 | 
				
			||||||
 | 
					        status = PSA_SUCCESS;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
#if defined(MBEDTLS_MD_C)
 | 
					#if defined(MBEDTLS_MD_C)
 | 
				
			||||||
    if( PSA_ALG_IS_HKDF( generator->alg ) )
 | 
					    if( PSA_ALG_IS_HKDF( generator->alg ) )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -3481,6 +3499,21 @@ static psa_status_t psa_key_derivation_internal(
 | 
				
			||||||
    /* Set generator->alg even on failure so that abort knows what to do. */
 | 
					    /* Set generator->alg even on failure so that abort knows what to do. */
 | 
				
			||||||
    generator->alg = alg;
 | 
					    generator->alg = alg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( alg == PSA_ALG_SELECT_RAW )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if( salt_length != 0 )
 | 
				
			||||||
 | 
					            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
				
			||||||
 | 
					        if( label_length != 0 )
 | 
				
			||||||
 | 
					            return( PSA_ERROR_INVALID_ARGUMENT );
 | 
				
			||||||
 | 
					        generator->ctx.buffer.data = mbedtls_calloc( 1, secret_length );
 | 
				
			||||||
 | 
					        if( generator->ctx.buffer.data == NULL )
 | 
				
			||||||
 | 
					            return( PSA_ERROR_INSUFFICIENT_MEMORY );
 | 
				
			||||||
 | 
					        memcpy( generator->ctx.buffer.data, secret, secret_length );
 | 
				
			||||||
 | 
					        generator->ctx.buffer.size = secret_length;
 | 
				
			||||||
 | 
					        max_capacity = secret_length;
 | 
				
			||||||
 | 
					        status = PSA_SUCCESS;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
#if defined(MBEDTLS_MD_C)
 | 
					#if defined(MBEDTLS_MD_C)
 | 
				
			||||||
    if( PSA_ALG_IS_HKDF( alg ) )
 | 
					    if( PSA_ALG_IS_HKDF( alg ) )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue