Improve types and indentation, fix typo
This commit is contained in:
parent
1e57f41e1d
commit
4926cbb143
@ -48,6 +48,7 @@ instance Cipher AES256 where
|
||||
cipherKeySize _ = KeySizeFixed 32
|
||||
cipherInit k = AES256 <$> (initAES =<< validateKeySize (undefined :: AES256) k)
|
||||
|
||||
|
||||
#define INSTANCE_BLOCKCIPHER(CSTR) \
|
||||
instance BlockCipher CSTR where \
|
||||
{ blockSize _ = 16 \
|
||||
|
||||
@ -101,7 +101,7 @@ ocbMode aes = AEADModeImpl
|
||||
, aeadImplFinalize = ocbFinish aes
|
||||
}
|
||||
|
||||
-- | Create an AES AEAD implementation for GCM
|
||||
-- | Create an AES AEAD implementation for CCM
|
||||
ccmMode :: AES -> AEADModeImpl AESCCM
|
||||
ccmMode aes = AEADModeImpl
|
||||
{ aeadImplAppendHeader = ccmAppendAAD aes
|
||||
@ -110,6 +110,7 @@ ccmMode aes = AEADModeImpl
|
||||
, aeadImplFinalize = ccmFinish aes
|
||||
}
|
||||
|
||||
|
||||
-- | AES Context (pre-processed key)
|
||||
newtype AES = AES ScrubbedBytes
|
||||
deriving (NFData)
|
||||
|
||||
@ -437,18 +437,18 @@ void cryptonite_aes_gcm_finish(uint8_t *tag, aes_gcm *gcm, aes_key *key)
|
||||
}
|
||||
}
|
||||
|
||||
static inline int ccm_b0_flags(int has_adata, int m, int l)
|
||||
static inline uint8_t ccm_b0_flags(uint32_t has_adata, uint32_t m, uint32_t l)
|
||||
{
|
||||
return 8*m + l + (has_adata? 64: 0);
|
||||
}
|
||||
|
||||
/* depends on input size */
|
||||
static void ccm_encode_b0(block128* output, aes_ccm* ccm, int has_adata)
|
||||
static void ccm_encode_b0(block128* output, aes_ccm* ccm, uint32_t has_adata)
|
||||
{
|
||||
int last = 15;
|
||||
int m = ccm->length_M;
|
||||
int l = ccm->length_L;
|
||||
unsigned msg_len = ccm->length_input;
|
||||
uint32_t m = ccm->length_M;
|
||||
uint32_t l = ccm->length_L;
|
||||
uint32_t msg_len = ccm->length_input;
|
||||
|
||||
block128_zero(output);
|
||||
block128_copy(output, &ccm->nonce);
|
||||
@ -530,7 +530,7 @@ void cryptonite_aes_ccm_aad(aes_ccm *ccm, aes_key *key, uint8_t *input, uint32_t
|
||||
block128 tmp;
|
||||
|
||||
if (ccm->length_aad != 0) return;
|
||||
|
||||
|
||||
ccm->length_aad = length;
|
||||
int len_len;
|
||||
|
||||
@ -940,7 +940,7 @@ void cryptonite_aes_generic_ccm_decrypt(uint8_t *output, aes_ccm *ccm, aes_key *
|
||||
if (length != ccm->length_input) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* when aad is absent, reset b0 block */
|
||||
if (ccm->length_aad == 0) {
|
||||
ccm_encode_b0(&ccm->b0, ccm, 0); /* assume aad is present */
|
||||
|
||||
@ -55,7 +55,7 @@ typedef struct {
|
||||
uint64_t length_input;
|
||||
} aes_gcm;
|
||||
|
||||
/* size = 80 */
|
||||
/* size = 4*16+4*4= 80 */
|
||||
typedef struct {
|
||||
aes_block xi;
|
||||
aes_block header_cbcmac;
|
||||
@ -63,8 +63,8 @@ typedef struct {
|
||||
aes_block nonce;
|
||||
uint32_t length_aad;
|
||||
uint32_t length_input;
|
||||
uint32_t length_M;
|
||||
uint32_t length_L;
|
||||
uint32_t length_M;
|
||||
uint32_t length_L;
|
||||
} aes_ccm;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@ -220,7 +220,7 @@ testKATs kats cipher = testGroup "KAT"
|
||||
aeadInitNoErr mode ct iv =
|
||||
case aeadInit mode ct iv of
|
||||
CryptoPassed a -> a
|
||||
CryptoFailed _ -> error $ "cipher does'nt support aead mode: " ++ show mode
|
||||
CryptoFailed _ -> error $ "cipher doesn't support aead mode: " ++ show mode
|
||||
------------------------------------------------------------------------
|
||||
-- Properties
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@ -7,6 +7,7 @@ import Data.Maybe
|
||||
import Crypto.Cipher.Types
|
||||
import qualified Crypto.Cipher.AES as AES
|
||||
import qualified Data.ByteString as B
|
||||
|
||||
import qualified KAT_AES.KATECB as KATECB
|
||||
import qualified KAT_AES.KATCBC as KATCBC
|
||||
import qualified KAT_AES.KATXTS as KATXTS
|
||||
@ -49,8 +50,10 @@ toKatCCM (k,iv,h,i,o,m) =
|
||||
, aeadTaglen = m
|
||||
, aeadTag = at
|
||||
}
|
||||
where ccmMVal x = fromMaybe CCM_M16 (lookup x [ (4, CCM_M4), (6, CCM_M6), (8, CCM_M8), (10, CCM_M10),
|
||||
(12, CCM_M12), (14, CCM_M14), (16, CCM_M16) ])
|
||||
where ccmMVal x = fromMaybe (error $ "unsupported CCM tag length: " ++ show x) $
|
||||
lookup x [ (4, CCM_M4), (6, CCM_M6), (8, CCM_M8), (10, CCM_M10)
|
||||
, (12, CCM_M12), (14, CCM_M14), (16, CCM_M16)
|
||||
]
|
||||
ctWithTag = B.drop (B.length h) o
|
||||
(ct, at) = B.splitAt (B.length ctWithTag - m) ctWithTag
|
||||
|
||||
|
||||
@ -7,8 +7,8 @@ import qualified Data.ByteString as B
|
||||
type KATCCM = (B.ByteString, B.ByteString, B.ByteString, B.ByteString, B.ByteString, Int)
|
||||
|
||||
vectors_aes128_enc :: [KATCCM]
|
||||
vectors_aes128_enc = [
|
||||
( {- key = -} "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
|
||||
vectors_aes128_enc =
|
||||
[ ( {- key = -} "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
|
||||
, {- iv = -} "\x00\x00\x00\x03\x02\x01\x00\xa0\xa1\xa2\xa3\xa4\xa5"
|
||||
, {- hdr = -} "\x00\x01\x02\x03\x04\x05\x06\x07"
|
||||
, {- in = -} "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e"
|
||||
@ -151,4 +151,5 @@ vectors_aes128_enc = [
|
||||
, {- hdr = -} "\x6e\x37\xa6\xef\x54\x6d\x95\x5d\x34\xab\x60\x59"
|
||||
, {- in = -} "\xab\xf2\x1c\x0b\x02\xfe\xb8\x8f\x85\x6d\xf4\xa3\x73\x81\xbc\xe3\xcc\x12\x85\x17\xd4"
|
||||
, {- out = -} "\x6e\x37\xa6\xef\x54\x6d\x95\x5d\x34\xab\x60\x59\xf3\x29\x05\xb8\x8a\x64\x1b\x04\xb9\xc9\xff\xb5\x8c\xc3\x90\x90\x0f\x3d\xa1\x2a\xb1\x6d\xce\x9e\x82\xef\xa1\x6d\xa6\x20\x59"
|
||||
, {- M = -} 10) ]
|
||||
, {- M = -} 10)
|
||||
]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user