Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
lwc
/
compare
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a4ced852
authored
Jul 23, 2019
by
Enrico Pozzobon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
changes to mbed aes gcm to make it compilable on esp
parent
ad01fbde
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
1 additions
and
1345 deletions
+1
-1345
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/aes.c
+0
-749
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/aes.h
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher.c
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher.h
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher_internal.h
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher_wrap.c
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/config.h
+1
-0
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/gcm.c
+0
-479
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/gcm.h
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/platform_util.c
+0
-4
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/platform_util.h
+0
-89
No files found.
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/aes.c
View file @
a4ced852
...
...
@@ -25,12 +25,8 @@
* http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
*/
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#include "platform_util.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#if defined(MBEDTLS_AES_C)
...
...
@@ -44,14 +40,6 @@
#include "mbedtls/aesni.h"
#endif
#if defined(MBEDTLS_SELF_TEST)
#if defined(MBEDTLS_PLATFORM_C)
#else
#include <stdio.h>
#define mbedtls_printf printf
#endif
/* MBEDTLS_PLATFORM_C */
#endif
/* MBEDTLS_SELF_TEST */
#if !defined(MBEDTLS_AES_ALT)
/* Parameter validation macros based on platform_util.h */
...
...
@@ -1467,741 +1455,4 @@ int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx,
#endif
/* !MBEDTLS_AES_ALT */
#if defined(MBEDTLS_SELF_TEST)
/*
* AES test vectors from:
*
* http://csrc.nist.gov/archive/aes/rijndael/rijndael-vals.zip
*/
static
const
unsigned
char
aes_test_ecb_dec
[
3
][
16
]
=
{
{
0x44
,
0x41
,
0x6A
,
0xC2
,
0xD1
,
0xF5
,
0x3C
,
0x58
,
0x33
,
0x03
,
0x91
,
0x7E
,
0x6B
,
0xE9
,
0xEB
,
0xE0
},
{
0x48
,
0xE3
,
0x1E
,
0x9E
,
0x25
,
0x67
,
0x18
,
0xF2
,
0x92
,
0x29
,
0x31
,
0x9C
,
0x19
,
0xF1
,
0x5B
,
0xA4
},
{
0x05
,
0x8C
,
0xCF
,
0xFD
,
0xBB
,
0xCB
,
0x38
,
0x2D
,
0x1F
,
0x6F
,
0x56
,
0x58
,
0x5D
,
0x8A
,
0x4A
,
0xDE
}
};
static
const
unsigned
char
aes_test_ecb_enc
[
3
][
16
]
=
{
{
0xC3
,
0x4C
,
0x05
,
0x2C
,
0xC0
,
0xDA
,
0x8D
,
0x73
,
0x45
,
0x1A
,
0xFE
,
0x5F
,
0x03
,
0xBE
,
0x29
,
0x7F
},
{
0xF3
,
0xF6
,
0x75
,
0x2A
,
0xE8
,
0xD7
,
0x83
,
0x11
,
0x38
,
0xF0
,
0x41
,
0x56
,
0x06
,
0x31
,
0xB1
,
0x14
},
{
0x8B
,
0x79
,
0xEE
,
0xCC
,
0x93
,
0xA0
,
0xEE
,
0x5D
,
0xFF
,
0x30
,
0xB4
,
0xEA
,
0x21
,
0x63
,
0x6D
,
0xA4
}
};
#if defined(MBEDTLS_CIPHER_MODE_CBC)
static
const
unsigned
char
aes_test_cbc_dec
[
3
][
16
]
=
{
{
0xFA
,
0xCA
,
0x37
,
0xE0
,
0xB0
,
0xC8
,
0x53
,
0x73
,
0xDF
,
0x70
,
0x6E
,
0x73
,
0xF7
,
0xC9
,
0xAF
,
0x86
},
{
0x5D
,
0xF6
,
0x78
,
0xDD
,
0x17
,
0xBA
,
0x4E
,
0x75
,
0xB6
,
0x17
,
0x68
,
0xC6
,
0xAD
,
0xEF
,
0x7C
,
0x7B
},
{
0x48
,
0x04
,
0xE1
,
0x81
,
0x8F
,
0xE6
,
0x29
,
0x75
,
0x19
,
0xA3
,
0xE8
,
0x8C
,
0x57
,
0x31
,
0x04
,
0x13
}
};
static
const
unsigned
char
aes_test_cbc_enc
[
3
][
16
]
=
{
{
0x8A
,
0x05
,
0xFC
,
0x5E
,
0x09
,
0x5A
,
0xF4
,
0x84
,
0x8A
,
0x08
,
0xD3
,
0x28
,
0xD3
,
0x68
,
0x8E
,
0x3D
},
{
0x7B
,
0xD9
,
0x66
,
0xD5
,
0x3A
,
0xD8
,
0xC1
,
0xBB
,
0x85
,
0xD2
,
0xAD
,
0xFA
,
0xE8
,
0x7B
,
0xB1
,
0x04
},
{
0xFE
,
0x3C
,
0x53
,
0x65
,
0x3E
,
0x2F
,
0x45
,
0xB5
,
0x6F
,
0xCD
,
0x88
,
0xB2
,
0xCC
,
0x89
,
0x8F
,
0xF0
}
};
#endif
/* MBEDTLS_CIPHER_MODE_CBC */
#if defined(MBEDTLS_CIPHER_MODE_CFB)
/*
* AES-CFB128 test vectors from:
*
* http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf
*/
static
const
unsigned
char
aes_test_cfb128_key
[
3
][
32
]
=
{
{
0x2B
,
0x7E
,
0x15
,
0x16
,
0x28
,
0xAE
,
0xD2
,
0xA6
,
0xAB
,
0xF7
,
0x15
,
0x88
,
0x09
,
0xCF
,
0x4F
,
0x3C
},
{
0x8E
,
0x73
,
0xB0
,
0xF7
,
0xDA
,
0x0E
,
0x64
,
0x52
,
0xC8
,
0x10
,
0xF3
,
0x2B
,
0x80
,
0x90
,
0x79
,
0xE5
,
0x62
,
0xF8
,
0xEA
,
0xD2
,
0x52
,
0x2C
,
0x6B
,
0x7B
},
{
0x60
,
0x3D
,
0xEB
,
0x10
,
0x15
,
0xCA
,
0x71
,
0xBE
,
0x2B
,
0x73
,
0xAE
,
0xF0
,
0x85
,
0x7D
,
0x77
,
0x81
,
0x1F
,
0x35
,
0x2C
,
0x07
,
0x3B
,
0x61
,
0x08
,
0xD7
,
0x2D
,
0x98
,
0x10
,
0xA3
,
0x09
,
0x14
,
0xDF
,
0xF4
}
};
static
const
unsigned
char
aes_test_cfb128_iv
[
16
]
=
{
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0A
,
0x0B
,
0x0C
,
0x0D
,
0x0E
,
0x0F
};
static
const
unsigned
char
aes_test_cfb128_pt
[
64
]
=
{
0x6B
,
0xC1
,
0xBE
,
0xE2
,
0x2E
,
0x40
,
0x9F
,
0x96
,
0xE9
,
0x3D
,
0x7E
,
0x11
,
0x73
,
0x93
,
0x17
,
0x2A
,
0xAE
,
0x2D
,
0x8A
,
0x57
,
0x1E
,
0x03
,
0xAC
,
0x9C
,
0x9E
,
0xB7
,
0x6F
,
0xAC
,
0x45
,
0xAF
,
0x8E
,
0x51
,
0x30
,
0xC8
,
0x1C
,
0x46
,
0xA3
,
0x5C
,
0xE4
,
0x11
,
0xE5
,
0xFB
,
0xC1
,
0x19
,
0x1A
,
0x0A
,
0x52
,
0xEF
,
0xF6
,
0x9F
,
0x24
,
0x45
,
0xDF
,
0x4F
,
0x9B
,
0x17
,
0xAD
,
0x2B
,
0x41
,
0x7B
,
0xE6
,
0x6C
,
0x37
,
0x10
};
static
const
unsigned
char
aes_test_cfb128_ct
[
3
][
64
]
=
{
{
0x3B
,
0x3F
,
0xD9
,
0x2E
,
0xB7
,
0x2D
,
0xAD
,
0x20
,
0x33
,
0x34
,
0x49
,
0xF8
,
0xE8
,
0x3C
,
0xFB
,
0x4A
,
0xC8
,
0xA6
,
0x45
,
0x37
,
0xA0
,
0xB3
,
0xA9
,
0x3F
,
0xCD
,
0xE3
,
0xCD
,
0xAD
,
0x9F
,
0x1C
,
0xE5
,
0x8B
,
0x26
,
0x75
,
0x1F
,
0x67
,
0xA3
,
0xCB
,
0xB1
,
0x40
,
0xB1
,
0x80
,
0x8C
,
0xF1
,
0x87
,
0xA4
,
0xF4
,
0xDF
,
0xC0
,
0x4B
,
0x05
,
0x35
,
0x7C
,
0x5D
,
0x1C
,
0x0E
,
0xEA
,
0xC4
,
0xC6
,
0x6F
,
0x9F
,
0xF7
,
0xF2
,
0xE6
},
{
0xCD
,
0xC8
,
0x0D
,
0x6F
,
0xDD
,
0xF1
,
0x8C
,
0xAB
,
0x34
,
0xC2
,
0x59
,
0x09
,
0xC9
,
0x9A
,
0x41
,
0x74
,
0x67
,
0xCE
,
0x7F
,
0x7F
,
0x81
,
0x17
,
0x36
,
0x21
,
0x96
,
0x1A
,
0x2B
,
0x70
,
0x17
,
0x1D
,
0x3D
,
0x7A
,
0x2E
,
0x1E
,
0x8A
,
0x1D
,
0xD5
,
0x9B
,
0x88
,
0xB1
,
0xC8
,
0xE6
,
0x0F
,
0xED
,
0x1E
,
0xFA
,
0xC4
,
0xC9
,
0xC0
,
0x5F
,
0x9F
,
0x9C
,
0xA9
,
0x83
,
0x4F
,
0xA0
,
0x42
,
0xAE
,
0x8F
,
0xBA
,
0x58
,
0x4B
,
0x09
,
0xFF
},
{
0xDC
,
0x7E
,
0x84
,
0xBF
,
0xDA
,
0x79
,
0x16
,
0x4B
,
0x7E
,
0xCD
,
0x84
,
0x86
,
0x98
,
0x5D
,
0x38
,
0x60
,
0x39
,
0xFF
,
0xED
,
0x14
,
0x3B
,
0x28
,
0xB1
,
0xC8
,
0x32
,
0x11
,
0x3C
,
0x63
,
0x31
,
0xE5
,
0x40
,
0x7B
,
0xDF
,
0x10
,
0x13
,
0x24
,
0x15
,
0xE5
,
0x4B
,
0x92
,
0xA1
,
0x3E
,
0xD0
,
0xA8
,
0x26
,
0x7A
,
0xE2
,
0xF9
,
0x75
,
0xA3
,
0x85
,
0x74
,
0x1A
,
0xB9
,
0xCE
,
0xF8
,
0x20
,
0x31
,
0x62
,
0x3D
,
0x55
,
0xB1
,
0xE4
,
0x71
}
};
#endif
/* MBEDTLS_CIPHER_MODE_CFB */
#if defined(MBEDTLS_CIPHER_MODE_OFB)
/*
* AES-OFB test vectors from:
*
* https://csrc.nist.gov/publications/detail/sp/800-38a/final
*/
static
const
unsigned
char
aes_test_ofb_key
[
3
][
32
]
=
{
{
0x2B
,
0x7E
,
0x15
,
0x16
,
0x28
,
0xAE
,
0xD2
,
0xA6
,
0xAB
,
0xF7
,
0x15
,
0x88
,
0x09
,
0xCF
,
0x4F
,
0x3C
},
{
0x8E
,
0x73
,
0xB0
,
0xF7
,
0xDA
,
0x0E
,
0x64
,
0x52
,
0xC8
,
0x10
,
0xF3
,
0x2B
,
0x80
,
0x90
,
0x79
,
0xE5
,
0x62
,
0xF8
,
0xEA
,
0xD2
,
0x52
,
0x2C
,
0x6B
,
0x7B
},
{
0x60
,
0x3D
,
0xEB
,
0x10
,
0x15
,
0xCA
,
0x71
,
0xBE
,
0x2B
,
0x73
,
0xAE
,
0xF0
,
0x85
,
0x7D
,
0x77
,
0x81
,
0x1F
,
0x35
,
0x2C
,
0x07
,
0x3B
,
0x61
,
0x08
,
0xD7
,
0x2D
,
0x98
,
0x10
,
0xA3
,
0x09
,
0x14
,
0xDF
,
0xF4
}
};
static
const
unsigned
char
aes_test_ofb_iv
[
16
]
=
{
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0A
,
0x0B
,
0x0C
,
0x0D
,
0x0E
,
0x0F
};
static
const
unsigned
char
aes_test_ofb_pt
[
64
]
=
{
0x6B
,
0xC1
,
0xBE
,
0xE2
,
0x2E
,
0x40
,
0x9F
,
0x96
,
0xE9
,
0x3D
,
0x7E
,
0x11
,
0x73
,
0x93
,
0x17
,
0x2A
,
0xAE
,
0x2D
,
0x8A
,
0x57
,
0x1E
,
0x03
,
0xAC
,
0x9C
,
0x9E
,
0xB7
,
0x6F
,
0xAC
,
0x45
,
0xAF
,
0x8E
,
0x51
,
0x30
,
0xC8
,
0x1C
,
0x46
,
0xA3
,
0x5C
,
0xE4
,
0x11
,
0xE5
,
0xFB
,
0xC1
,
0x19
,
0x1A
,
0x0A
,
0x52
,
0xEF
,
0xF6
,
0x9F
,
0x24
,
0x45
,
0xDF
,
0x4F
,
0x9B
,
0x17
,
0xAD
,
0x2B
,
0x41
,
0x7B
,
0xE6
,
0x6C
,
0x37
,
0x10
};
static
const
unsigned
char
aes_test_ofb_ct
[
3
][
64
]
=
{
{
0x3B
,
0x3F
,
0xD9
,
0x2E
,
0xB7
,
0x2D
,
0xAD
,
0x20
,
0x33
,
0x34
,
0x49
,
0xF8
,
0xE8
,
0x3C
,
0xFB
,
0x4A
,
0x77
,
0x89
,
0x50
,
0x8d
,
0x16
,
0x91
,
0x8f
,
0x03
,
0xf5
,
0x3c
,
0x52
,
0xda
,
0xc5
,
0x4e
,
0xd8
,
0x25
,
0x97
,
0x40
,
0x05
,
0x1e
,
0x9c
,
0x5f
,
0xec
,
0xf6
,
0x43
,
0x44
,
0xf7
,
0xa8
,
0x22
,
0x60
,
0xed
,
0xcc
,
0x30
,
0x4c
,
0x65
,
0x28
,
0xf6
,
0x59
,
0xc7
,
0x78
,
0x66
,
0xa5
,
0x10
,
0xd9
,
0xc1
,
0xd6
,
0xae
,
0x5e
},
{
0xCD
,
0xC8
,
0x0D
,
0x6F
,
0xDD
,
0xF1
,
0x8C
,
0xAB
,
0x34
,
0xC2
,
0x59
,
0x09
,
0xC9
,
0x9A
,
0x41
,
0x74
,
0xfc
,
0xc2
,
0x8b
,
0x8d
,
0x4c
,
0x63
,
0x83
,
0x7c
,
0x09
,
0xe8
,
0x17
,
0x00
,
0xc1
,
0x10
,
0x04
,
0x01
,
0x8d
,
0x9a
,
0x9a
,
0xea
,
0xc0
,
0xf6
,
0x59
,
0x6f
,
0x55
,
0x9c
,
0x6d
,
0x4d
,
0xaf
,
0x59
,
0xa5
,
0xf2
,
0x6d
,
0x9f
,
0x20
,
0x08
,
0x57
,
0xca
,
0x6c
,
0x3e
,
0x9c
,
0xac
,
0x52
,
0x4b
,
0xd9
,
0xac
,
0xc9
,
0x2a
},
{
0xDC
,
0x7E
,
0x84
,
0xBF
,
0xDA
,
0x79
,
0x16
,
0x4B
,
0x7E
,
0xCD
,
0x84
,
0x86
,
0x98
,
0x5D
,
0x38
,
0x60
,
0x4f
,
0xeb
,
0xdc
,
0x67
,
0x40
,
0xd2
,
0x0b
,
0x3a
,
0xc8
,
0x8f
,
0x6a
,
0xd8
,
0x2a
,
0x4f
,
0xb0
,
0x8d
,
0x71
,
0xab
,
0x47
,
0xa0
,
0x86
,
0xe8
,
0x6e
,
0xed
,
0xf3
,
0x9d
,
0x1c
,
0x5b
,
0xba
,
0x97
,
0xc4
,
0x08
,
0x01
,
0x26
,
0x14
,
0x1d
,
0x67
,
0xf3
,
0x7b
,
0xe8
,
0x53
,
0x8f
,
0x5a
,
0x8b
,
0xe7
,
0x40
,
0xe4
,
0x84
}
};
#endif
/* MBEDTLS_CIPHER_MODE_OFB */
#if defined(MBEDTLS_CIPHER_MODE_CTR)
/*
* AES-CTR test vectors from:
*
* http://www.faqs.org/rfcs/rfc3686.html
*/
static
const
unsigned
char
aes_test_ctr_key
[
3
][
16
]
=
{
{
0xAE
,
0x68
,
0x52
,
0xF8
,
0x12
,
0x10
,
0x67
,
0xCC
,
0x4B
,
0xF7
,
0xA5
,
0x76
,
0x55
,
0x77
,
0xF3
,
0x9E
},
{
0x7E
,
0x24
,
0x06
,
0x78
,
0x17
,
0xFA
,
0xE0
,
0xD7
,
0x43
,
0xD6
,
0xCE
,
0x1F
,
0x32
,
0x53
,
0x91
,
0x63
},
{
0x76
,
0x91
,
0xBE
,
0x03
,
0x5E
,
0x50
,
0x20
,
0xA8
,
0xAC
,
0x6E
,
0x61
,
0x85
,
0x29
,
0xF9
,
0xA0
,
0xDC
}
};
static
const
unsigned
char
aes_test_ctr_nonce_counter
[
3
][
16
]
=
{
{
0x00
,
0x00
,
0x00
,
0x30
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
},
{
0x00
,
0x6C
,
0xB6
,
0xDB
,
0xC0
,
0x54
,
0x3B
,
0x59
,
0xDA
,
0x48
,
0xD9
,
0x0B
,
0x00
,
0x00
,
0x00
,
0x01
},
{
0x00
,
0xE0
,
0x01
,
0x7B
,
0x27
,
0x77
,
0x7F
,
0x3F
,
0x4A
,
0x17
,
0x86
,
0xF0
,
0x00
,
0x00
,
0x00
,
0x01
}
};
static
const
unsigned
char
aes_test_ctr_pt
[
3
][
48
]
=
{
{
0x53
,
0x69
,
0x6E
,
0x67
,
0x6C
,
0x65
,
0x20
,
0x62
,
0x6C
,
0x6F
,
0x63
,
0x6B
,
0x20
,
0x6D
,
0x73
,
0x67
},
{
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0A
,
0x0B
,
0x0C
,
0x0D
,
0x0E
,
0x0F
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1A
,
0x1B
,
0x1C
,
0x1D
,
0x1E
,
0x1F
},
{
0x00
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x09
,
0x0A
,
0x0B
,
0x0C
,
0x0D
,
0x0E
,
0x0F
,
0x10
,
0x11
,
0x12
,
0x13
,
0x14
,
0x15
,
0x16
,
0x17
,
0x18
,
0x19
,
0x1A
,
0x1B
,
0x1C
,
0x1D
,
0x1E
,
0x1F
,
0x20
,
0x21
,
0x22
,
0x23
}
};
static
const
unsigned
char
aes_test_ctr_ct
[
3
][
48
]
=
{
{
0xE4
,
0x09
,
0x5D
,
0x4F
,
0xB7
,
0xA7
,
0xB3
,
0x79
,
0x2D
,
0x61
,
0x75
,
0xA3
,
0x26
,
0x13
,
0x11
,
0xB8
},
{
0x51
,
0x04
,
0xA1
,
0x06
,
0x16
,
0x8A
,
0x72
,
0xD9
,
0x79
,
0x0D
,
0x41
,
0xEE
,
0x8E
,
0xDA
,
0xD3
,
0x88
,
0xEB
,
0x2E
,
0x1E
,
0xFC
,
0x46
,
0xDA
,
0x57
,
0xC8
,
0xFC
,
0xE6
,
0x30
,
0xDF
,
0x91
,
0x41
,
0xBE
,
0x28
},
{
0xC1
,
0xCF
,
0x48
,
0xA8
,
0x9F
,
0x2F
,
0xFD
,
0xD9
,
0xCF
,
0x46
,
0x52
,
0xE9
,
0xEF
,
0xDB
,
0x72
,
0xD7
,
0x45
,
0x40
,
0xA4
,
0x2B
,
0xDE
,
0x6D
,
0x78
,
0x36
,
0xD5
,
0x9A
,
0x5C
,
0xEA
,
0xAE
,
0xF3
,
0x10
,
0x53
,
0x25
,
0xB2
,
0x07
,
0x2F
}
};
static
const
int
aes_test_ctr_len
[
3
]
=
{
16
,
32
,
36
};
#endif
/* MBEDTLS_CIPHER_MODE_CTR */
#if defined(MBEDTLS_CIPHER_MODE_XTS)
/*
* AES-XTS test vectors from:
*
* IEEE P1619/D16 Annex B
* https://web.archive.org/web/20150629024421/http://grouper.ieee.org/groups/1619/email/pdf00086.pdf
* (Archived from original at http://grouper.ieee.org/groups/1619/email/pdf00086.pdf)
*/
static
const
unsigned
char
aes_test_xts_key
[][
32
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x11
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
},
{
0xff
,
0xfe
,
0xfd
,
0xfc
,
0xfb
,
0xfa
,
0xf9
,
0xf8
,
0xf7
,
0xf6
,
0xf5
,
0xf4
,
0xf3
,
0xf2
,
0xf1
,
0xf0
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
,
0x22
},
};
static
const
unsigned
char
aes_test_xts_pt32
[][
32
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
},
{
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
,
0x44
},
};
static
const
unsigned
char
aes_test_xts_ct32
[][
32
]
=
{
{
0x91
,
0x7c
,
0xf6
,
0x9e
,
0xbd
,
0x68
,
0xb2
,
0xec
,
0x9b
,
0x9f
,
0xe9
,
0xa3
,
0xea
,
0xdd
,
0xa6
,
0x92
,
0xcd
,
0x43
,
0xd2
,
0xf5
,
0x95
,
0x98
,
0xed
,
0x85
,
0x8c
,
0x02
,
0xc2
,
0x65
,
0x2f
,
0xbf
,
0x92
,
0x2e
},
{
0xc4
,
0x54
,
0x18
,
0x5e
,
0x6a
,
0x16
,
0x93
,
0x6e
,
0x39
,
0x33
,
0x40
,
0x38
,
0xac
,
0xef
,
0x83
,
0x8b
,
0xfb
,
0x18
,
0x6f
,
0xff
,
0x74
,
0x80
,
0xad
,
0xc4
,
0x28
,
0x93
,
0x82
,
0xec
,
0xd6
,
0xd3
,
0x94
,
0xf0
},
{
0xaf
,
0x85
,
0x33
,
0x6b
,
0x59
,
0x7a
,
0xfc
,
0x1a
,
0x90
,
0x0b
,
0x2e
,
0xb2
,
0x1e
,
0xc9
,
0x49
,
0xd2
,
0x92
,
0xdf
,
0x4c
,
0x04
,
0x7e
,
0x0b
,
0x21
,
0x53
,
0x21
,
0x86
,
0xa5
,
0x97
,
0x1a
,
0x22
,
0x7a
,
0x89
},
};
static
const
unsigned
char
aes_test_xts_data_unit
[][
16
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x33
,
0x33
,
0x33
,
0x33
,
0x33
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x33
,
0x33
,
0x33
,
0x33
,
0x33
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
};
#endif
/* MBEDTLS_CIPHER_MODE_XTS */
/*
* Checkup routine
*/
int
mbedtls_aes_self_test
(
int
verbose
)
{
int
ret
=
0
,
i
,
j
,
u
,
mode
;
unsigned
int
keybits
;
unsigned
char
key
[
32
];
unsigned
char
buf
[
64
];
const
unsigned
char
*
aes_tests
;
#if defined(MBEDTLS_CIPHER_MODE_CBC) || defined(MBEDTLS_CIPHER_MODE_CFB)
unsigned
char
iv
[
16
];
#endif
#if defined(MBEDTLS_CIPHER_MODE_CBC)
unsigned
char
prv
[
16
];
#endif
#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_CFB) || \
defined(MBEDTLS_CIPHER_MODE_OFB)
size_t
offset
;
#endif
#if defined(MBEDTLS_CIPHER_MODE_CTR) || defined(MBEDTLS_CIPHER_MODE_XTS)
int
len
;
#endif
#if defined(MBEDTLS_CIPHER_MODE_CTR)
unsigned
char
nonce_counter
[
16
];
unsigned
char
stream_block
[
16
];
#endif
mbedtls_aes_context
ctx
;
memset
(
key
,
0
,
32
);
mbedtls_aes_init
(
&
ctx
);
/*
* ECB mode
*/
for
(
i
=
0
;
i
<
6
;
i
++
)
{
u
=
i
>>
1
;
keybits
=
128
+
u
*
64
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-ECB-%3d (%s): "
,
keybits
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memset
(
buf
,
0
,
16
);
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
ret
=
mbedtls_aes_setkey_dec
(
&
ctx
,
key
,
keybits
);
aes_tests
=
aes_test_ecb_dec
[
u
];
}
else
{
ret
=
mbedtls_aes_setkey_enc
(
&
ctx
,
key
,
keybits
);
aes_tests
=
aes_test_ecb_enc
[
u
];
}
/*
* AES-192 is an optional feature that may be unavailable when
* there is an alternative underlying implementation i.e. when
* MBEDTLS_AES_ALT is defined.
*/
if
(
ret
==
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
&&
keybits
==
192
)
{
mbedtls_printf
(
"skipped
\n
"
);
continue
;
}
else
if
(
ret
!=
0
)
{
goto
exit
;
}
for
(
j
=
0
;
j
<
10000
;
j
++
)
{
ret
=
mbedtls_aes_crypt_ecb
(
&
ctx
,
mode
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
}
if
(
memcmp
(
buf
,
aes_tests
,
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
#if defined(MBEDTLS_CIPHER_MODE_CBC)
/*
* CBC mode
*/
for
(
i
=
0
;
i
<
6
;
i
++
)
{
u
=
i
>>
1
;
keybits
=
128
+
u
*
64
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-CBC-%3d (%s): "
,
keybits
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memset
(
iv
,
0
,
16
);
memset
(
prv
,
0
,
16
);
memset
(
buf
,
0
,
16
);
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
ret
=
mbedtls_aes_setkey_dec
(
&
ctx
,
key
,
keybits
);
aes_tests
=
aes_test_cbc_dec
[
u
];
}
else
{
ret
=
mbedtls_aes_setkey_enc
(
&
ctx
,
key
,
keybits
);
aes_tests
=
aes_test_cbc_enc
[
u
];
}
/*
* AES-192 is an optional feature that may be unavailable when
* there is an alternative underlying implementation i.e. when
* MBEDTLS_AES_ALT is defined.
*/
if
(
ret
==
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
&&
keybits
==
192
)
{
mbedtls_printf
(
"skipped
\n
"
);
continue
;
}
else
if
(
ret
!=
0
)
{
goto
exit
;
}
for
(
j
=
0
;
j
<
10000
;
j
++
)
{
if
(
mode
==
MBEDTLS_AES_ENCRYPT
)
{
unsigned
char
tmp
[
16
];
memcpy
(
tmp
,
prv
,
16
);
memcpy
(
prv
,
buf
,
16
);
memcpy
(
buf
,
tmp
,
16
);
}
ret
=
mbedtls_aes_crypt_cbc
(
&
ctx
,
mode
,
16
,
iv
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
}
if
(
memcmp
(
buf
,
aes_tests
,
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
#endif
/* MBEDTLS_CIPHER_MODE_CBC */
#if defined(MBEDTLS_CIPHER_MODE_CFB)
/*
* CFB128 mode
*/
for
(
i
=
0
;
i
<
6
;
i
++
)
{
u
=
i
>>
1
;
keybits
=
128
+
u
*
64
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-CFB128-%3d (%s): "
,
keybits
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memcpy
(
iv
,
aes_test_cfb128_iv
,
16
);
memcpy
(
key
,
aes_test_cfb128_key
[
u
],
keybits
/
8
);
offset
=
0
;
ret
=
mbedtls_aes_setkey_enc
(
&
ctx
,
key
,
keybits
);
/*
* AES-192 is an optional feature that may be unavailable when
* there is an alternative underlying implementation i.e. when
* MBEDTLS_AES_ALT is defined.
*/
if
(
ret
==
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
&&
keybits
==
192
)
{
mbedtls_printf
(
"skipped
\n
"
);
continue
;
}
else
if
(
ret
!=
0
)
{
goto
exit
;
}
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
memcpy
(
buf
,
aes_test_cfb128_ct
[
u
],
64
);
aes_tests
=
aes_test_cfb128_pt
;
}
else
{
memcpy
(
buf
,
aes_test_cfb128_pt
,
64
);
aes_tests
=
aes_test_cfb128_ct
[
u
];
}
ret
=
mbedtls_aes_crypt_cfb128
(
&
ctx
,
mode
,
64
,
&
offset
,
iv
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
aes_tests
,
64
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
#endif
/* MBEDTLS_CIPHER_MODE_CFB */
#if defined(MBEDTLS_CIPHER_MODE_OFB)
/*
* OFB mode
*/
for
(
i
=
0
;
i
<
6
;
i
++
)
{
u
=
i
>>
1
;
keybits
=
128
+
u
*
64
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-OFB-%3d (%s): "
,
keybits
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memcpy
(
iv
,
aes_test_ofb_iv
,
16
);
memcpy
(
key
,
aes_test_ofb_key
[
u
],
keybits
/
8
);
offset
=
0
;
ret
=
mbedtls_aes_setkey_enc
(
&
ctx
,
key
,
keybits
);
/*
* AES-192 is an optional feature that may be unavailable when
* there is an alternative underlying implementation i.e. when
* MBEDTLS_AES_ALT is defined.
*/
if
(
ret
==
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
&&
keybits
==
192
)
{
mbedtls_printf
(
"skipped
\n
"
);
continue
;
}
else
if
(
ret
!=
0
)
{
goto
exit
;
}
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
memcpy
(
buf
,
aes_test_ofb_ct
[
u
],
64
);
aes_tests
=
aes_test_ofb_pt
;
}
else
{
memcpy
(
buf
,
aes_test_ofb_pt
,
64
);
aes_tests
=
aes_test_ofb_ct
[
u
];
}
ret
=
mbedtls_aes_crypt_ofb
(
&
ctx
,
64
,
&
offset
,
iv
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
aes_tests
,
64
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
#endif
/* MBEDTLS_CIPHER_MODE_OFB */
#if defined(MBEDTLS_CIPHER_MODE_CTR)
/*
* CTR mode
*/
for
(
i
=
0
;
i
<
6
;
i
++
)
{
u
=
i
>>
1
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-CTR-128 (%s): "
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memcpy
(
nonce_counter
,
aes_test_ctr_nonce_counter
[
u
],
16
);
memcpy
(
key
,
aes_test_ctr_key
[
u
],
16
);
offset
=
0
;
if
(
(
ret
=
mbedtls_aes_setkey_enc
(
&
ctx
,
key
,
128
)
)
!=
0
)
goto
exit
;
len
=
aes_test_ctr_len
[
u
];
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
memcpy
(
buf
,
aes_test_ctr_ct
[
u
],
len
);
aes_tests
=
aes_test_ctr_pt
[
u
];
}
else
{
memcpy
(
buf
,
aes_test_ctr_pt
[
u
],
len
);
aes_tests
=
aes_test_ctr_ct
[
u
];
}
ret
=
mbedtls_aes_crypt_ctr
(
&
ctx
,
len
,
&
offset
,
nonce_counter
,
stream_block
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
aes_tests
,
len
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
#endif
/* MBEDTLS_CIPHER_MODE_CTR */
#if defined(MBEDTLS_CIPHER_MODE_XTS)
{
static
const
int
num_tests
=
sizeof
(
aes_test_xts_key
)
/
sizeof
(
*
aes_test_xts_key
);
mbedtls_aes_xts_context
ctx_xts
;
/*
* XTS mode
*/
mbedtls_aes_xts_init
(
&
ctx_xts
);
for
(
i
=
0
;
i
<
num_tests
<<
1
;
i
++
)
{
const
unsigned
char
*
data_unit
;
u
=
i
>>
1
;
mode
=
i
&
1
;
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-XTS-128 (%s): "
,
(
mode
==
MBEDTLS_AES_DECRYPT
)
?
"dec"
:
"enc"
);
memset
(
key
,
0
,
sizeof
(
key
)
);
memcpy
(
key
,
aes_test_xts_key
[
u
],
32
);
data_unit
=
aes_test_xts_data_unit
[
u
];
len
=
sizeof
(
*
aes_test_xts_ct32
);
if
(
mode
==
MBEDTLS_AES_DECRYPT
)
{
ret
=
mbedtls_aes_xts_setkey_dec
(
&
ctx_xts
,
key
,
256
);
if
(
ret
!=
0
)
goto
exit
;
memcpy
(
buf
,
aes_test_xts_ct32
[
u
],
len
);
aes_tests
=
aes_test_xts_pt32
[
u
];
}
else
{
ret
=
mbedtls_aes_xts_setkey_enc
(
&
ctx_xts
,
key
,
256
);
if
(
ret
!=
0
)
goto
exit
;
memcpy
(
buf
,
aes_test_xts_pt32
[
u
],
len
);
aes_tests
=
aes_test_xts_ct32
[
u
];
}
ret
=
mbedtls_aes_crypt_xts
(
&
ctx_xts
,
mode
,
len
,
data_unit
,
buf
,
buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
aes_tests
,
len
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
mbedtls_aes_xts_free
(
&
ctx_xts
);
}
#endif
/* MBEDTLS_CIPHER_MODE_XTS */
ret
=
0
;
exit:
if
(
ret
!=
0
&&
verbose
!=
0
)
mbedtls_printf
(
"failed
\n
"
);
mbedtls_aes_free
(
&
ctx
);
return
(
ret
);
}
#endif
/* MBEDTLS_SELF_TEST */
#endif
/* MBEDTLS_AES_C */
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/aes.h
View file @
a4ced852
...
...
@@ -41,11 +41,7 @@
#ifndef MBEDTLS_AES_H
#define MBEDTLS_AES_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include <stddef.h>
#include <stdint.h>
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher.c
View file @
a4ced852
...
...
@@ -23,12 +23,8 @@
* This file is part of mbed TLS (https://tls.mbed.org)
*/
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#include "platform_util.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#if defined(MBEDTLS_CIPHER_C)
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher.h
View file @
a4ced852
...
...
@@ -29,12 +29,8 @@
#ifndef MBEDTLS_CIPHER_H
#define MBEDTLS_CIPHER_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#include "platform_util.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include <stddef.h>
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher_internal.h
View file @
a4ced852
...
...
@@ -26,11 +26,7 @@
#ifndef MBEDTLS_CIPHER_WRAP_H
#define MBEDTLS_CIPHER_WRAP_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include "cipher.h"
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/cipher_wrap.c
View file @
a4ced852
...
...
@@ -23,11 +23,7 @@
* This file is part of mbed TLS (https://tls.mbed.org)
*/
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#if defined(MBEDTLS_CIPHER_C)
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/config.h
View file @
a4ced852
#pragma once
#undef MBEDTLS_SELF_TEST
#define MBEDTLS_GCM_C
#define MBEDTLS_CIPHER_C
#define MBEDTLS_AES_C
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/gcm.c
View file @
a4ced852
...
...
@@ -29,12 +29,8 @@
* [MGV] 4.1, pp. 12-13, to enhance speed without using too much memory.
*/
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#include "platform_util.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#if defined(MBEDTLS_GCM_C)
...
...
@@ -48,14 +44,6 @@
#include "mbedtls/aesni.h"
#endif
#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
#include "aes.h"
#if !defined(MBEDTLS_PLATFORM_C)
#include <stdio.h>
#define mbedtls_printf printf
#endif
/* MBEDTLS_PLATFORM_C */
#endif
/* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */
#if !defined(MBEDTLS_GCM_ALT)
/* Parameter validation macros */
...
...
@@ -608,471 +596,4 @@ void mbedtls_gcm_free( mbedtls_gcm_context *ctx )
#endif
/* !MBEDTLS_GCM_ALT */
#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C)
/*
* AES-GCM test vectors from:
*
* http://csrc.nist.gov/groups/STM/cavp/documents/mac/gcmtestvectors.zip
*/
#define MAX_TESTS 6
static
const
int
key_index_test_data
[
MAX_TESTS
]
=
{
0
,
0
,
1
,
1
,
1
,
1
};
static
const
unsigned
char
key_test_data
[
MAX_TESTS
][
32
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0xfe
,
0xff
,
0xe9
,
0x92
,
0x86
,
0x65
,
0x73
,
0x1c
,
0x6d
,
0x6a
,
0x8f
,
0x94
,
0x67
,
0x30
,
0x83
,
0x08
,
0xfe
,
0xff
,
0xe9
,
0x92
,
0x86
,
0x65
,
0x73
,
0x1c
,
0x6d
,
0x6a
,
0x8f
,
0x94
,
0x67
,
0x30
,
0x83
,
0x08
},
};
static
const
size_t
iv_len_test_data
[
MAX_TESTS
]
=
{
12
,
12
,
12
,
12
,
8
,
60
};
static
const
int
iv_index_test_data
[
MAX_TESTS
]
=
{
0
,
0
,
1
,
1
,
1
,
2
};
static
const
unsigned
char
iv_test_data
[
MAX_TESTS
][
64
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0xca
,
0xfe
,
0xba
,
0xbe
,
0xfa
,
0xce
,
0xdb
,
0xad
,
0xde
,
0xca
,
0xf8
,
0x88
},
{
0x93
,
0x13
,
0x22
,
0x5d
,
0xf8
,
0x84
,
0x06
,
0xe5
,
0x55
,
0x90
,
0x9c
,
0x5a
,
0xff
,
0x52
,
0x69
,
0xaa
,
0x6a
,
0x7a
,
0x95
,
0x38
,
0x53
,
0x4f
,
0x7d
,
0xa1
,
0xe4
,
0xc3
,
0x03
,
0xd2
,
0xa3
,
0x18
,
0xa7
,
0x28
,
0xc3
,
0xc0
,
0xc9
,
0x51
,
0x56
,
0x80
,
0x95
,
0x39
,
0xfc
,
0xf0
,
0xe2
,
0x42
,
0x9a
,
0x6b
,
0x52
,
0x54
,
0x16
,
0xae
,
0xdb
,
0xf5
,
0xa0
,
0xde
,
0x6a
,
0x57
,
0xa6
,
0x37
,
0xb3
,
0x9b
},
};
static
const
size_t
add_len_test_data
[
MAX_TESTS
]
=
{
0
,
0
,
0
,
20
,
20
,
20
};
static
const
int
add_index_test_data
[
MAX_TESTS
]
=
{
0
,
0
,
0
,
1
,
1
,
1
};
static
const
unsigned
char
additional_test_data
[
MAX_TESTS
][
64
]
=
{
{
0x00
},
{
0xfe
,
0xed
,
0xfa
,
0xce
,
0xde
,
0xad
,
0xbe
,
0xef
,
0xfe
,
0xed
,
0xfa
,
0xce
,
0xde
,
0xad
,
0xbe
,
0xef
,
0xab
,
0xad
,
0xda
,
0xd2
},
};
static
const
size_t
pt_len_test_data
[
MAX_TESTS
]
=
{
0
,
16
,
64
,
60
,
60
,
60
};
static
const
int
pt_index_test_data
[
MAX_TESTS
]
=
{
0
,
0
,
1
,
1
,
1
,
1
};
static
const
unsigned
char
pt_test_data
[
MAX_TESTS
][
64
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0xd9
,
0x31
,
0x32
,
0x25
,
0xf8
,
0x84
,
0x06
,
0xe5
,
0xa5
,
0x59
,
0x09
,
0xc5
,
0xaf
,
0xf5
,
0x26
,
0x9a
,
0x86
,
0xa7
,
0xa9
,
0x53
,
0x15
,
0x34
,
0xf7
,
0xda
,
0x2e
,
0x4c
,
0x30
,
0x3d
,
0x8a
,
0x31
,
0x8a
,
0x72
,
0x1c
,
0x3c
,
0x0c
,
0x95
,
0x95
,
0x68
,
0x09
,
0x53
,
0x2f
,
0xcf
,
0x0e
,
0x24
,
0x49
,
0xa6
,
0xb5
,
0x25
,
0xb1
,
0x6a
,
0xed
,
0xf5
,
0xaa
,
0x0d
,
0xe6
,
0x57
,
0xba
,
0x63
,
0x7b
,
0x39
,
0x1a
,
0xaf
,
0xd2
,
0x55
},
};
static
const
unsigned
char
ct_test_data
[
MAX_TESTS
*
3
][
64
]
=
{
{
0x00
},
{
0x03
,
0x88
,
0xda
,
0xce
,
0x60
,
0xb6
,
0xa3
,
0x92
,
0xf3
,
0x28
,
0xc2
,
0xb9
,
0x71
,
0xb2
,
0xfe
,
0x78
},
{
0x42
,
0x83
,
0x1e
,
0xc2
,
0x21
,
0x77
,
0x74
,
0x24
,
0x4b
,
0x72
,
0x21
,
0xb7
,
0x84
,
0xd0
,
0xd4
,
0x9c
,
0xe3
,
0xaa
,
0x21
,
0x2f
,
0x2c
,
0x02
,
0xa4
,
0xe0
,
0x35
,
0xc1
,
0x7e
,
0x23
,
0x29
,
0xac
,
0xa1
,
0x2e
,
0x21
,
0xd5
,
0x14
,
0xb2
,
0x54
,
0x66
,
0x93
,
0x1c
,
0x7d
,
0x8f
,
0x6a
,
0x5a
,
0xac
,
0x84
,
0xaa
,
0x05
,
0x1b
,
0xa3
,
0x0b
,
0x39
,
0x6a
,
0x0a
,
0xac
,
0x97
,
0x3d
,
0x58
,
0xe0
,
0x91
,
0x47
,
0x3f
,
0x59
,
0x85
},
{
0x42
,
0x83
,
0x1e
,
0xc2
,
0x21
,
0x77
,
0x74
,
0x24
,
0x4b
,
0x72
,
0x21
,
0xb7
,
0x84
,
0xd0
,
0xd4
,
0x9c
,
0xe3
,
0xaa
,
0x21
,
0x2f
,
0x2c
,
0x02
,
0xa4
,
0xe0
,
0x35
,
0xc1
,
0x7e
,
0x23
,
0x29
,
0xac
,
0xa1
,
0x2e
,
0x21
,
0xd5
,
0x14
,
0xb2
,
0x54
,
0x66
,
0x93
,
0x1c
,
0x7d
,
0x8f
,
0x6a
,
0x5a
,
0xac
,
0x84
,
0xaa
,
0x05
,
0x1b
,
0xa3
,
0x0b
,
0x39
,
0x6a
,
0x0a
,
0xac
,
0x97
,
0x3d
,
0x58
,
0xe0
,
0x91
},
{
0x61
,
0x35
,
0x3b
,
0x4c
,
0x28
,
0x06
,
0x93
,
0x4a
,
0x77
,
0x7f
,
0xf5
,
0x1f
,
0xa2
,
0x2a
,
0x47
,
0x55
,
0x69
,
0x9b
,
0x2a
,
0x71
,
0x4f
,
0xcd
,
0xc6
,
0xf8
,
0x37
,
0x66
,
0xe5
,
0xf9
,
0x7b
,
0x6c
,
0x74
,
0x23
,
0x73
,
0x80
,
0x69
,
0x00
,
0xe4
,
0x9f
,
0x24
,
0xb2
,
0x2b
,
0x09
,
0x75
,
0x44
,
0xd4
,
0x89
,
0x6b
,
0x42
,
0x49
,
0x89
,
0xb5
,
0xe1
,
0xeb
,
0xac
,
0x0f
,
0x07
,
0xc2
,
0x3f
,
0x45
,
0x98
},
{
0x8c
,
0xe2
,
0x49
,
0x98
,
0x62
,
0x56
,
0x15
,
0xb6
,
0x03
,
0xa0
,
0x33
,
0xac
,
0xa1
,
0x3f
,
0xb8
,
0x94
,
0xbe
,
0x91
,
0x12
,
0xa5
,
0xc3
,
0xa2
,
0x11
,
0xa8
,
0xba
,
0x26
,
0x2a
,
0x3c
,
0xca
,
0x7e
,
0x2c
,
0xa7
,
0x01
,
0xe4
,
0xa9
,
0xa4
,
0xfb
,
0xa4
,
0x3c
,
0x90
,
0xcc
,
0xdc
,
0xb2
,
0x81
,
0xd4
,
0x8c
,
0x7c
,
0x6f
,
0xd6
,
0x28
,
0x75
,
0xd2
,
0xac
,
0xa4
,
0x17
,
0x03
,
0x4c
,
0x34
,
0xae
,
0xe5
},
{
0x00
},
{
0x98
,
0xe7
,
0x24
,
0x7c
,
0x07
,
0xf0
,
0xfe
,
0x41
,
0x1c
,
0x26
,
0x7e
,
0x43
,
0x84
,
0xb0
,
0xf6
,
0x00
},
{
0x39
,
0x80
,
0xca
,
0x0b
,
0x3c
,
0x00
,
0xe8
,
0x41
,
0xeb
,
0x06
,
0xfa
,
0xc4
,
0x87
,
0x2a
,
0x27
,
0x57
,
0x85
,
0x9e
,
0x1c
,
0xea
,
0xa6
,
0xef
,
0xd9
,
0x84
,
0x62
,
0x85
,
0x93
,
0xb4
,
0x0c
,
0xa1
,
0xe1
,
0x9c
,
0x7d
,
0x77
,
0x3d
,
0x00
,
0xc1
,
0x44
,
0xc5
,
0x25
,
0xac
,
0x61
,
0x9d
,
0x18
,
0xc8
,
0x4a
,
0x3f
,
0x47
,
0x18
,
0xe2
,
0x44
,
0x8b
,
0x2f
,
0xe3
,
0x24
,
0xd9
,
0xcc
,
0xda
,
0x27
,
0x10
,
0xac
,
0xad
,
0xe2
,
0x56
},
{
0x39
,
0x80
,
0xca
,
0x0b
,
0x3c
,
0x00
,
0xe8
,
0x41
,
0xeb
,
0x06
,
0xfa
,
0xc4
,
0x87
,
0x2a
,
0x27
,
0x57
,
0x85
,
0x9e
,
0x1c
,
0xea
,
0xa6
,
0xef
,
0xd9
,
0x84
,
0x62
,
0x85
,
0x93
,
0xb4
,
0x0c
,
0xa1
,
0xe1
,
0x9c
,
0x7d
,
0x77
,
0x3d
,
0x00
,
0xc1
,
0x44
,
0xc5
,
0x25
,
0xac
,
0x61
,
0x9d
,
0x18
,
0xc8
,
0x4a
,
0x3f
,
0x47
,
0x18
,
0xe2
,
0x44
,
0x8b
,
0x2f
,
0xe3
,
0x24
,
0xd9
,
0xcc
,
0xda
,
0x27
,
0x10
},
{
0x0f
,
0x10
,
0xf5
,
0x99
,
0xae
,
0x14
,
0xa1
,
0x54
,
0xed
,
0x24
,
0xb3
,
0x6e
,
0x25
,
0x32
,
0x4d
,
0xb8
,
0xc5
,
0x66
,
0x63
,
0x2e
,
0xf2
,
0xbb
,
0xb3
,
0x4f
,
0x83
,
0x47
,
0x28
,
0x0f
,
0xc4
,
0x50
,
0x70
,
0x57
,
0xfd
,
0xdc
,
0x29
,
0xdf
,
0x9a
,
0x47
,
0x1f
,
0x75
,
0xc6
,
0x65
,
0x41
,
0xd4
,
0xd4
,
0xda
,
0xd1
,
0xc9
,
0xe9
,
0x3a
,
0x19
,
0xa5
,
0x8e
,
0x8b
,
0x47
,
0x3f
,
0xa0
,
0xf0
,
0x62
,
0xf7
},
{
0xd2
,
0x7e
,
0x88
,
0x68
,
0x1c
,
0xe3
,
0x24
,
0x3c
,
0x48
,
0x30
,
0x16
,
0x5a
,
0x8f
,
0xdc
,
0xf9
,
0xff
,
0x1d
,
0xe9
,
0xa1
,
0xd8
,
0xe6
,
0xb4
,
0x47
,
0xef
,
0x6e
,
0xf7
,
0xb7
,
0x98
,
0x28
,
0x66
,
0x6e
,
0x45
,
0x81
,
0xe7
,
0x90
,
0x12
,
0xaf
,
0x34
,
0xdd
,
0xd9
,
0xe2
,
0xf0
,
0x37
,
0x58
,
0x9b
,
0x29
,
0x2d
,
0xb3
,
0xe6
,
0x7c
,
0x03
,
0x67
,
0x45
,
0xfa
,
0x22
,
0xe7
,
0xe9
,
0xb7
,
0x37
,
0x3b
},
{
0x00
},
{
0xce
,
0xa7
,
0x40
,
0x3d
,
0x4d
,
0x60
,
0x6b
,
0x6e
,
0x07
,
0x4e
,
0xc5
,
0xd3
,
0xba
,
0xf3
,
0x9d
,
0x18
},
{
0x52
,
0x2d
,
0xc1
,
0xf0
,
0x99
,
0x56
,
0x7d
,
0x07
,
0xf4
,
0x7f
,
0x37
,
0xa3
,
0x2a
,
0x84
,
0x42
,
0x7d
,
0x64
,
0x3a
,
0x8c
,
0xdc
,
0xbf
,
0xe5
,
0xc0
,
0xc9
,
0x75
,
0x98
,
0xa2
,
0xbd
,
0x25
,
0x55
,
0xd1
,
0xaa
,
0x8c
,
0xb0
,
0x8e
,
0x48
,
0x59
,
0x0d
,
0xbb
,
0x3d
,
0xa7
,
0xb0
,
0x8b
,
0x10
,
0x56
,
0x82
,
0x88
,
0x38
,
0xc5
,
0xf6
,
0x1e
,
0x63
,
0x93
,
0xba
,
0x7a
,
0x0a
,
0xbc
,
0xc9
,
0xf6
,
0x62
,
0x89
,
0x80
,
0x15
,
0xad
},
{
0x52
,
0x2d
,
0xc1
,
0xf0
,
0x99
,
0x56
,
0x7d
,
0x07
,
0xf4
,
0x7f
,
0x37
,
0xa3
,
0x2a
,
0x84
,
0x42
,
0x7d
,
0x64
,
0x3a
,
0x8c
,
0xdc
,
0xbf
,
0xe5
,
0xc0
,
0xc9
,
0x75
,
0x98
,
0xa2
,
0xbd
,
0x25
,
0x55
,
0xd1
,
0xaa
,
0x8c
,
0xb0
,
0x8e
,
0x48
,
0x59
,
0x0d
,
0xbb
,
0x3d
,
0xa7
,
0xb0
,
0x8b
,
0x10
,
0x56
,
0x82
,
0x88
,
0x38
,
0xc5
,
0xf6
,
0x1e
,
0x63
,
0x93
,
0xba
,
0x7a
,
0x0a
,
0xbc
,
0xc9
,
0xf6
,
0x62
},
{
0xc3
,
0x76
,
0x2d
,
0xf1
,
0xca
,
0x78
,
0x7d
,
0x32
,
0xae
,
0x47
,
0xc1
,
0x3b
,
0xf1
,
0x98
,
0x44
,
0xcb
,
0xaf
,
0x1a
,
0xe1
,
0x4d
,
0x0b
,
0x97
,
0x6a
,
0xfa
,
0xc5
,
0x2f
,
0xf7
,
0xd7
,
0x9b
,
0xba
,
0x9d
,
0xe0
,
0xfe
,
0xb5
,
0x82
,
0xd3
,
0x39
,
0x34
,
0xa4
,
0xf0
,
0x95
,
0x4c
,
0xc2
,
0x36
,
0x3b
,
0xc7
,
0x3f
,
0x78
,
0x62
,
0xac
,
0x43
,
0x0e
,
0x64
,
0xab
,
0xe4
,
0x99
,
0xf4
,
0x7c
,
0x9b
,
0x1f
},
{
0x5a
,
0x8d
,
0xef
,
0x2f
,
0x0c
,
0x9e
,
0x53
,
0xf1
,
0xf7
,
0x5d
,
0x78
,
0x53
,
0x65
,
0x9e
,
0x2a
,
0x20
,
0xee
,
0xb2
,
0xb2
,
0x2a
,
0xaf
,
0xde
,
0x64
,
0x19
,
0xa0
,
0x58
,
0xab
,
0x4f
,
0x6f
,
0x74
,
0x6b
,
0xf4
,
0x0f
,
0xc0
,
0xc3
,
0xb7
,
0x80
,
0xf2
,
0x44
,
0x45
,
0x2d
,
0xa3
,
0xeb
,
0xf1
,
0xc5
,
0xd8
,
0x2c
,
0xde
,
0xa2
,
0x41
,
0x89
,
0x97
,
0x20
,
0x0e
,
0xf8
,
0x2e
,
0x44
,
0xae
,
0x7e
,
0x3f
},
};
static
const
unsigned
char
tag_test_data
[
MAX_TESTS
*
3
][
16
]
=
{
{
0x58
,
0xe2
,
0xfc
,
0xce
,
0xfa
,
0x7e
,
0x30
,
0x61
,
0x36
,
0x7f
,
0x1d
,
0x57
,
0xa4
,
0xe7
,
0x45
,
0x5a
},
{
0xab
,
0x6e
,
0x47
,
0xd4
,
0x2c
,
0xec
,
0x13
,
0xbd
,
0xf5
,
0x3a
,
0x67
,
0xb2
,
0x12
,
0x57
,
0xbd
,
0xdf
},
{
0x4d
,
0x5c
,
0x2a
,
0xf3
,
0x27
,
0xcd
,
0x64
,
0xa6
,
0x2c
,
0xf3
,
0x5a
,
0xbd
,
0x2b
,
0xa6
,
0xfa
,
0xb4
},
{
0x5b
,
0xc9
,
0x4f
,
0xbc
,
0x32
,
0x21
,
0xa5
,
0xdb
,
0x94
,
0xfa
,
0xe9
,
0x5a
,
0xe7
,
0x12
,
0x1a
,
0x47
},
{
0x36
,
0x12
,
0xd2
,
0xe7
,
0x9e
,
0x3b
,
0x07
,
0x85
,
0x56
,
0x1b
,
0xe1
,
0x4a
,
0xac
,
0xa2
,
0xfc
,
0xcb
},
{
0x61
,
0x9c
,
0xc5
,
0xae
,
0xff
,
0xfe
,
0x0b
,
0xfa
,
0x46
,
0x2a
,
0xf4
,
0x3c
,
0x16
,
0x99
,
0xd0
,
0x50
},
{
0xcd
,
0x33
,
0xb2
,
0x8a
,
0xc7
,
0x73
,
0xf7
,
0x4b
,
0xa0
,
0x0e
,
0xd1
,
0xf3
,
0x12
,
0x57
,
0x24
,
0x35
},
{
0x2f
,
0xf5
,
0x8d
,
0x80
,
0x03
,
0x39
,
0x27
,
0xab
,
0x8e
,
0xf4
,
0xd4
,
0x58
,
0x75
,
0x14
,
0xf0
,
0xfb
},
{
0x99
,
0x24
,
0xa7
,
0xc8
,
0x58
,
0x73
,
0x36
,
0xbf
,
0xb1
,
0x18
,
0x02
,
0x4d
,
0xb8
,
0x67
,
0x4a
,
0x14
},
{
0x25
,
0x19
,
0x49
,
0x8e
,
0x80
,
0xf1
,
0x47
,
0x8f
,
0x37
,
0xba
,
0x55
,
0xbd
,
0x6d
,
0x27
,
0x61
,
0x8c
},
{
0x65
,
0xdc
,
0xc5
,
0x7f
,
0xcf
,
0x62
,
0x3a
,
0x24
,
0x09
,
0x4f
,
0xcc
,
0xa4
,
0x0d
,
0x35
,
0x33
,
0xf8
},
{
0xdc
,
0xf5
,
0x66
,
0xff
,
0x29
,
0x1c
,
0x25
,
0xbb
,
0xb8
,
0x56
,
0x8f
,
0xc3
,
0xd3
,
0x76
,
0xa6
,
0xd9
},
{
0x53
,
0x0f
,
0x8a
,
0xfb
,
0xc7
,
0x45
,
0x36
,
0xb9
,
0xa9
,
0x63
,
0xb4
,
0xf1
,
0xc4
,
0xcb
,
0x73
,
0x8b
},
{
0xd0
,
0xd1
,
0xc8
,
0xa7
,
0x99
,
0x99
,
0x6b
,
0xf0
,
0x26
,
0x5b
,
0x98
,
0xb5
,
0xd4
,
0x8a
,
0xb9
,
0x19
},
{
0xb0
,
0x94
,
0xda
,
0xc5
,
0xd9
,
0x34
,
0x71
,
0xbd
,
0xec
,
0x1a
,
0x50
,
0x22
,
0x70
,
0xe3
,
0xcc
,
0x6c
},
{
0x76
,
0xfc
,
0x6e
,
0xce
,
0x0f
,
0x4e
,
0x17
,
0x68
,
0xcd
,
0xdf
,
0x88
,
0x53
,
0xbb
,
0x2d
,
0x55
,
0x1b
},
{
0x3a
,
0x33
,
0x7d
,
0xbf
,
0x46
,
0xa7
,
0x92
,
0xc4
,
0x5e
,
0x45
,
0x49
,
0x13
,
0xfe
,
0x2e
,
0xa8
,
0xf2
},
{
0xa4
,
0x4a
,
0x82
,
0x66
,
0xee
,
0x1c
,
0x8e
,
0xb0
,
0xc8
,
0xb5
,
0xd4
,
0xcf
,
0x5a
,
0xe9
,
0xf1
,
0x9a
},
};
int
mbedtls_gcm_self_test
(
int
verbose
)
{
mbedtls_gcm_context
ctx
;
unsigned
char
buf
[
64
];
unsigned
char
tag_buf
[
CRYPTO_ABYTES
];
int
i
,
j
,
ret
;
mbedtls_cipher_id_t
cipher
=
MBEDTLS_CIPHER_ID_AES
;
for
(
j
=
0
;
j
<
3
;
j
++
)
{
int
key_len
=
128
+
64
*
j
;
for
(
i
=
0
;
i
<
MAX_TESTS
;
i
++
)
{
mbedtls_gcm_init
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-GCM-%3d #%d (%s): "
,
key_len
,
i
,
"enc"
);
ret
=
mbedtls_gcm_setkey
(
&
ctx
,
cipher
,
key_test_data
[
key_index_test_data
[
i
]],
key_len
);
/*
* AES-192 is an optional feature that may be unavailable when
* there is an alternative underlying implementation i.e. when
* MBEDTLS_AES_ALT is defined.
*/
if
(
ret
==
MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED
&&
key_len
==
192
)
{
mbedtls_printf
(
"skipped
\n
"
);
break
;
}
else
if
(
ret
!=
0
)
{
goto
exit
;
}
ret
=
mbedtls_gcm_crypt_and_tag
(
&
ctx
,
MBEDTLS_GCM_ENCRYPT
,
pt_len_test_data
[
i
],
iv_test_data
[
iv_index_test_data
[
i
]],
iv_len_test_data
[
i
],
additional_test_data
[
add_index_test_data
[
i
]],
add_len_test_data
[
i
],
pt_test_data
[
pt_index_test_data
[
i
]],
buf
,
16
,
tag_buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
ct_test_data
[
j
*
6
+
i
],
pt_len_test_data
[
i
]
)
!=
0
||
memcmp
(
tag_buf
,
tag_test_data
[
j
*
6
+
i
],
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
mbedtls_gcm_free
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
mbedtls_gcm_init
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-GCM-%3d #%d (%s): "
,
key_len
,
i
,
"dec"
);
ret
=
mbedtls_gcm_setkey
(
&
ctx
,
cipher
,
key_test_data
[
key_index_test_data
[
i
]],
key_len
);
if
(
ret
!=
0
)
goto
exit
;
ret
=
mbedtls_gcm_crypt_and_tag
(
&
ctx
,
MBEDTLS_GCM_DECRYPT
,
pt_len_test_data
[
i
],
iv_test_data
[
iv_index_test_data
[
i
]],
iv_len_test_data
[
i
],
additional_test_data
[
add_index_test_data
[
i
]],
add_len_test_data
[
i
],
ct_test_data
[
j
*
6
+
i
],
buf
,
16
,
tag_buf
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
pt_test_data
[
pt_index_test_data
[
i
]],
pt_len_test_data
[
i
]
)
!=
0
||
memcmp
(
tag_buf
,
tag_test_data
[
j
*
6
+
i
],
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
mbedtls_gcm_free
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
mbedtls_gcm_init
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-GCM-%3d #%d split (%s): "
,
key_len
,
i
,
"enc"
);
ret
=
mbedtls_gcm_setkey
(
&
ctx
,
cipher
,
key_test_data
[
key_index_test_data
[
i
]],
key_len
);
if
(
ret
!=
0
)
goto
exit
;
ret
=
mbedtls_gcm_starts
(
&
ctx
,
MBEDTLS_GCM_ENCRYPT
,
iv_test_data
[
iv_index_test_data
[
i
]],
iv_len_test_data
[
i
],
additional_test_data
[
add_index_test_data
[
i
]],
add_len_test_data
[
i
]
);
if
(
ret
!=
0
)
goto
exit
;
if
(
pt_len_test_data
[
i
]
>
32
)
{
size_t
rest_len
=
pt_len_test_data
[
i
]
-
32
;
ret
=
mbedtls_gcm_update
(
&
ctx
,
32
,
pt_test_data
[
pt_index_test_data
[
i
]],
buf
);
if
(
ret
!=
0
)
goto
exit
;
ret
=
mbedtls_gcm_update
(
&
ctx
,
rest_len
,
pt_test_data
[
pt_index_test_data
[
i
]]
+
32
,
buf
+
32
);
if
(
ret
!=
0
)
goto
exit
;
}
else
{
ret
=
mbedtls_gcm_update
(
&
ctx
,
pt_len_test_data
[
i
],
pt_test_data
[
pt_index_test_data
[
i
]],
buf
);
if
(
ret
!=
0
)
goto
exit
;
}
ret
=
mbedtls_gcm_finish
(
&
ctx
,
tag_buf
,
16
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
ct_test_data
[
j
*
6
+
i
],
pt_len_test_data
[
i
]
)
!=
0
||
memcmp
(
tag_buf
,
tag_test_data
[
j
*
6
+
i
],
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
mbedtls_gcm_free
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
mbedtls_gcm_init
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
" AES-GCM-%3d #%d split (%s): "
,
key_len
,
i
,
"dec"
);
ret
=
mbedtls_gcm_setkey
(
&
ctx
,
cipher
,
key_test_data
[
key_index_test_data
[
i
]],
key_len
);
if
(
ret
!=
0
)
goto
exit
;
ret
=
mbedtls_gcm_starts
(
&
ctx
,
MBEDTLS_GCM_DECRYPT
,
iv_test_data
[
iv_index_test_data
[
i
]],
iv_len_test_data
[
i
],
additional_test_data
[
add_index_test_data
[
i
]],
add_len_test_data
[
i
]
);
if
(
ret
!=
0
)
goto
exit
;
if
(
pt_len_test_data
[
i
]
>
32
)
{
size_t
rest_len
=
pt_len_test_data
[
i
]
-
32
;
ret
=
mbedtls_gcm_update
(
&
ctx
,
32
,
ct_test_data
[
j
*
6
+
i
],
buf
);
if
(
ret
!=
0
)
goto
exit
;
ret
=
mbedtls_gcm_update
(
&
ctx
,
rest_len
,
ct_test_data
[
j
*
6
+
i
]
+
32
,
buf
+
32
);
if
(
ret
!=
0
)
goto
exit
;
}
else
{
ret
=
mbedtls_gcm_update
(
&
ctx
,
pt_len_test_data
[
i
],
ct_test_data
[
j
*
6
+
i
],
buf
);
if
(
ret
!=
0
)
goto
exit
;
}
ret
=
mbedtls_gcm_finish
(
&
ctx
,
tag_buf
,
16
);
if
(
ret
!=
0
)
goto
exit
;
if
(
memcmp
(
buf
,
pt_test_data
[
pt_index_test_data
[
i
]],
pt_len_test_data
[
i
]
)
!=
0
||
memcmp
(
tag_buf
,
tag_test_data
[
j
*
6
+
i
],
16
)
!=
0
)
{
ret
=
1
;
goto
exit
;
}
mbedtls_gcm_free
(
&
ctx
);
if
(
verbose
!=
0
)
mbedtls_printf
(
"passed
\n
"
);
}
}
if
(
verbose
!=
0
)
mbedtls_printf
(
"
\n
"
);
ret
=
0
;
exit:
if
(
ret
!=
0
)
{
if
(
verbose
!=
0
)
mbedtls_printf
(
"failed
\n
"
);
mbedtls_gcm_free
(
&
ctx
);
}
return
(
ret
);
}
#endif
/* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */
#endif
/* MBEDTLS_GCM_C */
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/gcm.h
View file @
a4ced852
...
...
@@ -33,11 +33,7 @@
#ifndef MBEDTLS_GCM_H
#define MBEDTLS_GCM_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include "cipher.h"
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/platform_util.c
View file @
a4ced852
...
...
@@ -28,11 +28,7 @@
#define _POSIX_C_SOURCE 200112L
#endif
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include "platform_util.h"
...
...
mbed_aes_gcm/Implementations/crypto_aead/aes128k96n/ref/platform_util.h
View file @
a4ced852
...
...
@@ -25,11 +25,7 @@
#ifndef MBEDTLS_PLATFORM_UTIL_H
#define MBEDTLS_PLATFORM_UTIL_H
#if !defined(MBEDTLS_CONFIG_FILE)
#include "config.h"
#else
#include MBEDTLS_CONFIG_FILE
#endif
#include <stddef.h>
...
...
@@ -37,99 +33,14 @@
extern
"C"
{
#endif
#if defined(MBEDTLS_CHECK_PARAMS)
#if defined(MBEDTLS_CHECK_PARAMS_ASSERT)
/* Allow the user to define MBEDTLS_PARAM_FAILED to something like assert
* (which is what our config.h suggests). */
#include <assert.h>
#endif
/* MBEDTLS_CHECK_PARAMS_ASSERT */
#if defined(MBEDTLS_PARAM_FAILED)
/** An alternative definition of MBEDTLS_PARAM_FAILED has been set in config.h.
*
* This flag can be used to check whether it is safe to assume that
* MBEDTLS_PARAM_FAILED() will expand to a call to mbedtls_param_failed().
*/
#define MBEDTLS_PARAM_FAILED_ALT
#elif defined(MBEDTLS_CHECK_PARAMS_ASSERT)
#define MBEDTLS_PARAM_FAILED( cond ) assert( cond )
#define MBEDTLS_PARAM_FAILED_ALT
#else
/* MBEDTLS_PARAM_FAILED */
#define MBEDTLS_PARAM_FAILED( cond ) \
mbedtls_param_failed( #cond, __FILE__, __LINE__ )
/**
* \brief User supplied callback function for parameter validation failure.
* See #MBEDTLS_CHECK_PARAMS for context.
*
* This function will be called unless an alternative treatement
* is defined through the #MBEDTLS_PARAM_FAILED macro.
*
* This function can return, and the operation will be aborted, or
* alternatively, through use of setjmp()/longjmp() can resume
* execution in the application code.
*
* \param failure_condition The assertion that didn't hold.
* \param file The file where the assertion failed.
* \param line The line in the file where the assertion failed.
*/
void
mbedtls_param_failed
(
const
char
*
failure_condition
,
const
char
*
file
,
int
line
);
#endif
/* MBEDTLS_PARAM_FAILED */
/* Internal macro meant to be called only from within the library. */
#define MBEDTLS_INTERNAL_VALIDATE_RET( cond, ret ) \
do { \
if( !(cond) ) \
{ \
MBEDTLS_PARAM_FAILED( cond ); \
return( ret ); \
} \
} while( 0 )
/* Internal macro meant to be called only from within the library. */
#define MBEDTLS_INTERNAL_VALIDATE( cond ) \
do { \
if( !(cond) ) \
{ \
MBEDTLS_PARAM_FAILED( cond ); \
return; \
} \
} while( 0 )
#else
/* MBEDTLS_CHECK_PARAMS */
/* Internal macros meant to be called only from within the library. */
#define MBEDTLS_INTERNAL_VALIDATE_RET( cond, ret ) do { } while( 0 )
#define MBEDTLS_INTERNAL_VALIDATE( cond ) do { } while( 0 )
#endif
/* MBEDTLS_CHECK_PARAMS */
/* Internal helper macros for deprecating API constants. */
#if !defined(MBEDTLS_DEPRECATED_REMOVED)
#if defined(MBEDTLS_DEPRECATED_WARNING)
/* Deliberately don't (yet) export MBEDTLS_DEPRECATED here
* to avoid conflict with other headers which define and use
* it, too. We might want to move all these definitions here at
* some point for uniformity. */
#define MBEDTLS_DEPRECATED __attribute__((deprecated))
MBEDTLS_DEPRECATED
typedef
char
const
*
mbedtls_deprecated_string_constant_t
;
#define MBEDTLS_DEPRECATED_STRING_CONSTANT( VAL ) \
( (mbedtls_deprecated_string_constant_t) ( VAL ) )
MBEDTLS_DEPRECATED
typedef
int
mbedtls_deprecated_numeric_constant_t
;
#define MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( VAL ) \
( (mbedtls_deprecated_numeric_constant_t) ( VAL ) )
#undef MBEDTLS_DEPRECATED
#else
/* MBEDTLS_DEPRECATED_WARNING */
#define MBEDTLS_DEPRECATED_STRING_CONSTANT( VAL ) VAL
#define MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( VAL ) VAL
#endif
/* MBEDTLS_DEPRECATED_WARNING */
#endif
/* MBEDTLS_DEPRECATED_REMOVED */
/**
* \brief Securely zeroize a buffer
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment