Commit 39147079 authored by Pauli's avatar Pauli
Browse files

Structure alignment macro.



Introduce a macro that allows all structure alignment tricks to be rolled up
into a single place.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8845)
parent a39eb840
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include <assert.h>
#include <openssl/aes.h>
#include "internal/evp_int.h"
#include "internal/cryptlib.h"
#include "modes_lcl.h"
#include <openssl/rand.h>
#include <openssl/cmac.h>
@@ -22,7 +23,7 @@

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ks;
    block128_f block;
@@ -34,7 +35,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ks;                       /* AES key schedule to use */
    int key_set;                /* Set if key initialised */
@@ -52,7 +53,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ks1, ks2;                 /* AES key schedules to use */
    XTS128_CONTEXT xts;
@@ -64,7 +65,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ks;                       /* AES key schedule to use */
    int key_set;                /* Set if key initialised */
@@ -80,11 +81,11 @@ typedef struct {
#ifndef OPENSSL_NO_OCB
typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ksenc;                    /* AES key schedule to use for encryption */
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ksdec;                    /* AES key schedule to use for decryption */
    int key_set;                /* Set if key initialised */
@@ -1008,7 +1009,7 @@ const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        /*-
         * KM-AES parameter block - begin
         * (see z/Architecture Principles of Operation >= SA22-7832-06)
@@ -1023,7 +1024,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        /*-
         * KMO-AES parameter block - begin
         * (see z/Architecture Principles of Operation >= SA22-7832-08)
@@ -1041,7 +1042,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        /*-
         * KMF-AES parameter block - begin
         * (see z/Architecture Principles of Operation >= SA22-7832-08)
@@ -1059,7 +1060,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        /*-
         * KMA-GCM-AES parameter block - begin
         * (see z/Architecture Principles of Operation >= SA22-7832-11)
@@ -1108,7 +1109,7 @@ typedef struct {

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        /*-
         * Padding is chosen so that ccm.kmac_param.k overlaps with key.k and
         * ccm.fc with key.k.rounds. Remember that on s390x, an AES_KEY's
@@ -3853,7 +3854,7 @@ BLOCK_CIPHER_custom(NID_aes, 128, 1, 12, ccm, CCM,

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        AES_KEY ks;
    } ks;
    /* Indicates if IV has been set */
+3 −3
Original line number Diff line number Diff line
/*
 * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2017, Oracle and/or its affiliates.  All rights reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -27,7 +27,7 @@ typedef struct {
/* ARIA GCM context */
typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        ARIA_KEY ks;
    } ks;                       /* ARIA subkey to use */
    int key_set;                /* Set if key initialised */
@@ -43,7 +43,7 @@ typedef struct {
/* ARIA CCM context */
typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        ARIA_KEY ks;
    } ks;                       /* ARIA key schedule to use */
    int key_set;                /* Set if key initialised */
+2 −2
Original line number Diff line number Diff line
/*
 * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
@@ -20,7 +20,7 @@

typedef struct {
    union {
        double align;   /* this ensures even sizeof(EVP_CHACHA_KEY)%8==0 */
        OSSL_UNION_ALIGN;  /* this ensures even sizeof(EVP_CHACHA_KEY)%8==0 */
        unsigned int d[CHACHA_KEY_SIZE / 4];
    } key;
    unsigned int  counter[CHACHA_CTR_SIZE / 4];
+2 −2
Original line number Diff line number Diff line
/*
 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
@@ -18,7 +18,7 @@

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        DES_key_schedule ks;
    } ks;
    union {
+2 −2
Original line number Diff line number Diff line
/*
 * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
@@ -19,7 +19,7 @@

typedef struct {
    union {
        double align;
        OSSL_UNION_ALIGN;
        DES_key_schedule ks[3];
    } ks;
    union {
Loading