You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-26 15:46:23 +00:00
mbedtls: Update to upstream version 2.28.3
Rediff patch from PR 1453, lstrlenW is no longer used upstream so
that part of the patch was dropped.
(cherry picked from commit 1fde2092d0)
This commit is contained in:
76
thirdparty/mbedtls/library/padlock.c
vendored
76
thirdparty/mbedtls/library/padlock.c
vendored
@@ -31,23 +31,24 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
#ifndef asm
|
||||
#define asm __asm
|
||||
#endif
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#if defined(MBEDTLS_HAVE_X86)
|
||||
|
||||
/*
|
||||
* PadLock detection routine
|
||||
*/
|
||||
int mbedtls_padlock_has_support( int feature )
|
||||
int mbedtls_padlock_has_support(int feature)
|
||||
{
|
||||
static int flags = -1;
|
||||
int ebx = 0, edx = 0;
|
||||
|
||||
if( flags == -1 )
|
||||
{
|
||||
asm( "movl %%ebx, %0 \n\t"
|
||||
if (flags == -1) {
|
||||
asm ("movl %%ebx, %0 \n\t"
|
||||
"movl $0xC0000000, %%eax \n\t"
|
||||
"cpuid \n\t"
|
||||
"cmpl $0xC0000001, %%eax \n\t"
|
||||
@@ -60,21 +61,21 @@ int mbedtls_padlock_has_support( int feature )
|
||||
"movl %2, %%ebx \n\t"
|
||||
: "=m" (ebx), "=m" (edx)
|
||||
: "m" (ebx)
|
||||
: "eax", "ecx", "edx" );
|
||||
: "eax", "ecx", "edx");
|
||||
|
||||
flags = edx;
|
||||
}
|
||||
|
||||
return( flags & feature );
|
||||
return flags & feature;
|
||||
}
|
||||
|
||||
/*
|
||||
* PadLock AES-ECB block en(de)cryption
|
||||
*/
|
||||
int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16] )
|
||||
int mbedtls_padlock_xcryptecb(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
const unsigned char input[16],
|
||||
unsigned char output[16])
|
||||
{
|
||||
int ebx = 0;
|
||||
uint32_t *rk;
|
||||
@@ -83,13 +84,13 @@ int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx,
|
||||
unsigned char buf[256];
|
||||
|
||||
rk = ctx->rk;
|
||||
blk = MBEDTLS_PADLOCK_ALIGN16( buf );
|
||||
memcpy( blk, input, 16 );
|
||||
blk = MBEDTLS_PADLOCK_ALIGN16(buf);
|
||||
memcpy(blk, input, 16);
|
||||
|
||||
ctrl = blk + 4;
|
||||
*ctrl = 0x80 | ctx->nr | ( ( ctx->nr + ( mode^1 ) - 10 ) << 9 );
|
||||
ctrl = blk + 4;
|
||||
*ctrl = 0x80 | ctx->nr | ((ctx->nr + (mode^1) - 10) << 9);
|
||||
|
||||
asm( "pushfl \n\t"
|
||||
asm ("pushfl \n\t"
|
||||
"popfl \n\t"
|
||||
"movl %%ebx, %0 \n\t"
|
||||
"movl $1, %%ecx \n\t"
|
||||
@@ -101,22 +102,22 @@ int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx,
|
||||
"movl %1, %%ebx \n\t"
|
||||
: "=m" (ebx)
|
||||
: "m" (ebx), "m" (ctrl), "m" (rk), "m" (blk)
|
||||
: "memory", "ecx", "edx", "esi", "edi" );
|
||||
: "memory", "ecx", "edx", "esi", "edi");
|
||||
|
||||
memcpy( output, blk, 16 );
|
||||
memcpy(output, blk, 16);
|
||||
|
||||
return( 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* PadLock AES-CBC buffer en(de)cryption
|
||||
*/
|
||||
int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
size_t length,
|
||||
unsigned char iv[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output )
|
||||
int mbedtls_padlock_xcryptcbc(mbedtls_aes_context *ctx,
|
||||
int mode,
|
||||
size_t length,
|
||||
unsigned char iv[16],
|
||||
const unsigned char *input,
|
||||
unsigned char *output)
|
||||
{
|
||||
int ebx = 0;
|
||||
size_t count;
|
||||
@@ -125,20 +126,21 @@ int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx,
|
||||
uint32_t *ctrl;
|
||||
unsigned char buf[256];
|
||||
|
||||
if( ( (long) input & 15 ) != 0 ||
|
||||
( (long) output & 15 ) != 0 )
|
||||
return( MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED );
|
||||
if (((long) input & 15) != 0 ||
|
||||
((long) output & 15) != 0) {
|
||||
return MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED;
|
||||
}
|
||||
|
||||
rk = ctx->rk;
|
||||
iw = MBEDTLS_PADLOCK_ALIGN16( buf );
|
||||
memcpy( iw, iv, 16 );
|
||||
iw = MBEDTLS_PADLOCK_ALIGN16(buf);
|
||||
memcpy(iw, iv, 16);
|
||||
|
||||
ctrl = iw + 4;
|
||||
*ctrl = 0x80 | ctx->nr | ( ( ctx->nr + ( mode ^ 1 ) - 10 ) << 9 );
|
||||
ctrl = iw + 4;
|
||||
*ctrl = 0x80 | ctx->nr | ((ctx->nr + (mode ^ 1) - 10) << 9);
|
||||
|
||||
count = ( length + 15 ) >> 4;
|
||||
count = (length + 15) >> 4;
|
||||
|
||||
asm( "pushfl \n\t"
|
||||
asm ("pushfl \n\t"
|
||||
"popfl \n\t"
|
||||
"movl %%ebx, %0 \n\t"
|
||||
"movl %2, %%ecx \n\t"
|
||||
@@ -151,12 +153,12 @@ int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx,
|
||||
"movl %1, %%ebx \n\t"
|
||||
: "=m" (ebx)
|
||||
: "m" (ebx), "m" (count), "m" (ctrl),
|
||||
"m" (rk), "m" (input), "m" (output), "m" (iw)
|
||||
: "memory", "eax", "ecx", "edx", "esi", "edi" );
|
||||
"m" (rk), "m" (input), "m" (output), "m" (iw)
|
||||
: "memory", "eax", "ecx", "edx", "esi", "edi");
|
||||
|
||||
memcpy( iv, iw, 16 );
|
||||
memcpy(iv, iw, 16);
|
||||
|
||||
return( 0 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* MBEDTLS_HAVE_X86 */
|
||||
|
||||
Reference in New Issue
Block a user