xref: /qemu/crypto/sm4.c (revision cb6c406e26e3cbe394f244d8ac42fd6497eaf129)
1c29da5a7SWeiwei Li /*
2c29da5a7SWeiwei Li  * QEMU crypto sm4 support
3c29da5a7SWeiwei Li  *
4c29da5a7SWeiwei Li  * Copyright (C) 2013 - 2018 Linaro Ltd <ard.biesheuvel@linaro.org>
5c29da5a7SWeiwei Li  *
6c29da5a7SWeiwei Li  * This library is free software; you can redistribute it and/or
7c29da5a7SWeiwei Li  * modify it under the terms of the GNU Lesser General Public
8c29da5a7SWeiwei Li  * License as published by the Free Software Foundation; either
9c29da5a7SWeiwei Li  * version 2.1 of the License, or (at your option) any later version.
10c29da5a7SWeiwei Li  */
11c29da5a7SWeiwei Li 
12c29da5a7SWeiwei Li #include "qemu/osdep.h"
13c29da5a7SWeiwei Li #include "crypto/sm4.h"
14c29da5a7SWeiwei Li 
15c29da5a7SWeiwei Li uint8_t const sm4_sbox[] = {
16c29da5a7SWeiwei Li     0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7,
17c29da5a7SWeiwei Li     0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05,
18c29da5a7SWeiwei Li     0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3,
19c29da5a7SWeiwei Li     0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99,
20c29da5a7SWeiwei Li     0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a,
21c29da5a7SWeiwei Li     0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62,
22c29da5a7SWeiwei Li     0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95,
23c29da5a7SWeiwei Li     0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6,
24c29da5a7SWeiwei Li     0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba,
25c29da5a7SWeiwei Li     0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8,
26c29da5a7SWeiwei Li     0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b,
27c29da5a7SWeiwei Li     0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35,
28c29da5a7SWeiwei Li     0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2,
29c29da5a7SWeiwei Li     0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87,
30c29da5a7SWeiwei Li     0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52,
31c29da5a7SWeiwei Li     0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e,
32c29da5a7SWeiwei Li     0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5,
33c29da5a7SWeiwei Li     0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1,
34c29da5a7SWeiwei Li     0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55,
35c29da5a7SWeiwei Li     0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3,
36c29da5a7SWeiwei Li     0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60,
37c29da5a7SWeiwei Li     0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f,
38c29da5a7SWeiwei Li     0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f,
39c29da5a7SWeiwei Li     0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51,
40c29da5a7SWeiwei Li     0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f,
41c29da5a7SWeiwei Li     0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8,
42c29da5a7SWeiwei Li     0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd,
43c29da5a7SWeiwei Li     0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0,
44c29da5a7SWeiwei Li     0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e,
45c29da5a7SWeiwei Li     0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84,
46c29da5a7SWeiwei Li     0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20,
47c29da5a7SWeiwei Li     0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48,
48c29da5a7SWeiwei Li };
49c29da5a7SWeiwei Li 
50*f5f3a915SMax Chou uint32_t const sm4_ck[] = {
51*f5f3a915SMax Chou     0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269,
52*f5f3a915SMax Chou     0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,
53*f5f3a915SMax Chou     0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249,
54*f5f3a915SMax Chou     0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9,
55*f5f3a915SMax Chou     0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229,
56*f5f3a915SMax Chou     0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299,
57*f5f3a915SMax Chou     0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209,
58*f5f3a915SMax Chou     0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279
59*f5f3a915SMax Chou };
60