1*96098f01SJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
2*96098f01SJens Wiklander /*
3*96098f01SJens Wiklander * Copyright (c) 2014-2019, Linaro Limited
4*96098f01SJens Wiklander */
5*96098f01SJens Wiklander
get_des2_key(const uint8_t ** key,size_t * key_len,uint8_t * tmp)6*96098f01SJens Wiklander static inline void get_des2_key(const uint8_t **key, size_t *key_len,
7*96098f01SJens Wiklander uint8_t *tmp)
8*96098f01SJens Wiklander {
9*96098f01SJens Wiklander if (*key_len == 16) {
10*96098f01SJens Wiklander /*
11*96098f01SJens Wiklander * This corresponds to a 2DES key. The 2DES encryption
12*96098f01SJens Wiklander * algorithm is similar to 3DES. Both perform and
13*96098f01SJens Wiklander * encryption step, then a decryption step, followed
14*96098f01SJens Wiklander * by another encryption step (EDE). However 2DES uses
15*96098f01SJens Wiklander * the same key for both of the encryption (E) steps.
16*96098f01SJens Wiklander */
17*96098f01SJens Wiklander memcpy(tmp, *key, 16);
18*96098f01SJens Wiklander memcpy(tmp + 16, *key, 8);
19*96098f01SJens Wiklander *key = tmp;
20*96098f01SJens Wiklander *key_len = 24;
21*96098f01SJens Wiklander }
22*96098f01SJens Wiklander }
23