diff options
author | Jakub Jelen <jjelen@redhat.com> | 2021-11-26 11:45:19 +0100 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2021-11-30 18:52:50 +0900 |
commit | 3d38968f4b751c5561679040c055c34a690bed75 (patch) | |
tree | dad7c5aebfccfcca873601c001cd8571a8fb60d3 /src/fips.c | |
parent | 40ab39966650489449bee3e2a68f43a9d38c4dd4 (diff) | |
download | libgcrypt-3d38968f4b751c5561679040c055c34a690bed75.tar.gz |
Implement explicit FIPS indicators for cipher modes
* src/fips.c (_gcry_fips_indicator): New.
* src/g10lib.h (_gcry_fips_indicator): New declaration.
* src/gcrypt.h.in (gcry_ctl_cmds): New GCRYCTL_FIPS_SERVICE_INDICATOR
* src/global.c (_gcry_vcontrol): Handle GCRYCTL_FIPS_SERVICE_INDICATOR
* tests/basic.c (do_check_ocb_cipher): Check excplicit FIPS indicator
(check_ocb_cipher_largebuf_split): Ditto.
(check_ocb_cipher_checksum): Ditto.
(check_ocb_cipher_splitaad): Ditto.
(check_bulk_cipher_modes): Ditto.
--
Add GCRYCTL_FIPS_SERVICE_INDICATOR to handle explicit FIPS indicators
for cipher modes.
GnuPG-bug-id: 5512
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Diffstat (limited to 'src/fips.c')
-rw-r--r-- | src/fips.c | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -312,6 +312,38 @@ _gcry_fips_test_operational (void) return result; } +int +_gcry_fips_indicator (va_list arg_ptr) +{ + enum gcry_cipher_algos alg = va_arg (arg_ptr, enum gcry_cipher_algos); + enum gcry_cipher_modes mode; + + switch (alg) + { + case GCRY_CIPHER_AES: + case GCRY_CIPHER_AES192: + case GCRY_CIPHER_AES256: + mode = va_arg (arg_ptr, enum gcry_cipher_modes); + switch (mode) + { + case GCRY_CIPHER_MODE_ECB: + case GCRY_CIPHER_MODE_CBC: + case GCRY_CIPHER_MODE_CFB: + case GCRY_CIPHER_MODE_CFB8: + case GCRY_CIPHER_MODE_OFB: + case GCRY_CIPHER_MODE_CTR: + case GCRY_CIPHER_MODE_CCM: + case GCRY_CIPHER_MODE_GCM: + case GCRY_CIPHER_MODE_XTS: + return GPG_ERR_NO_ERROR; + default: + return GPG_ERR_NOT_SUPPORTED; + } + default: + return GPG_ERR_NOT_SUPPORTED; + } +} + /* This is a test on whether the library is in the error or operational state. */ |