LCOV - code coverage report
Current view: top level - plugins/unittest/crypto - rfc4231.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 29 29 100.0 %
Date: 2023-07-05 22:20:52 Functions: 29 29 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2019 Cisco and/or its affiliates.
       3             :  * Licensed under the Apache License, Version 2.0 (the "License");
       4             :  * you may not use this file except in compliance with the License.
       5             :  * You may obtain a copy of the License at:
       6             :  *
       7             :  *     http://www.apache.org/licenses/LICENSE-2.0
       8             :  *
       9             :  * Unless required by applicable law or agreed to in writing, software
      10             :  * distributed under the License is distributed on an "AS IS" BASIS,
      11             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             :  * See the License for the specific language governing permissions and
      13             :  * limitations under the License.
      14             :  */
      15             : 
      16             : /* Test vectors published in RFC4231 */
      17             : 
      18             : #include <vppinfra/clib.h>
      19             : #include <vnet/crypto/crypto.h>
      20             : #include <unittest/crypto/crypto.h>
      21             : 
      22             : static u8 tc1_key[] = {
      23             :   0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
      24             :   0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
      25             :   0x0b, 0x0b, 0x0b, 0x0b
      26             : };
      27             : 
      28             : static char tc1_data[8] = "Hi There";
      29             : 
      30             : static u8 tc1_digest_sha224[] = {
      31             :   0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19,
      32             :   0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f,
      33             :   0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f,
      34             :   0x53, 0x68, 0x4b, 0x22
      35             : };
      36             : 
      37             : static u8 tc1_digest_sha256[] = {
      38             :   0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53,
      39             :   0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b,
      40             :   0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7,
      41             :   0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7,
      42             : };
      43             : 
      44             : static u8 tc1_digest_sha384[] = {
      45             :   0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62,
      46             :   0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f,
      47             :   0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6,
      48             :   0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c,
      49             :   0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f,
      50             :   0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6
      51             : };
      52             : 
      53             : static u8 tc1_digest_sha512[] = {
      54             :   0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d,
      55             :   0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0,
      56             :   0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78,
      57             :   0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde,
      58             :   0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
      59             :   0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4,
      60             :   0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70,
      61             :   0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54
      62             : };
      63             : 
      64             : /* *INDENT-OFF* */
      65         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha224) = {
      66             :   .name = "RFC4231 TC1",
      67             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
      68             :   .key = TEST_DATA (tc1_key),
      69             :   .plaintext = TEST_DATA (tc1_data),
      70             :   .digest = TEST_DATA (tc1_digest_sha224),
      71             : };
      72             : 
      73         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha256) = {
      74             :   .name = "RFC4231 TC1",
      75             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
      76             :   .key = TEST_DATA (tc1_key),
      77             :   .plaintext = TEST_DATA (tc1_data),
      78             :   .digest = TEST_DATA (tc1_digest_sha256),
      79             : };
      80             : 
      81         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha384) = {
      82             :   .name = "RFC4231 TC1",
      83             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
      84             :   .key = TEST_DATA (tc1_key),
      85             :   .plaintext = TEST_DATA (tc1_data),
      86             :   .digest = TEST_DATA (tc1_digest_sha384),
      87             : };
      88             : 
      89         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha512) = {
      90             :   .name = "RFC4231 TC1",
      91             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
      92             :   .key = TEST_DATA (tc1_key),
      93             :   .plaintext = TEST_DATA (tc1_data),
      94             :   .digest = TEST_DATA (tc1_digest_sha512),
      95             : };
      96             : /* *INDENT-ON* */
      97             : 
      98             : static char tc2_key[4] = "Jefe";
      99             : 
     100             : static char tc2_data[28] = "what do ya want for nothing?";
     101             : 
     102             : static u8 tc2_digest_sha224[] = {
     103             :   0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf,
     104             :   0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f,
     105             :   0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00,
     106             :   0x8f, 0xd0, 0x5e, 0x44
     107             : };
     108             : 
     109             : static u8 tc2_digest_sha256[] = {
     110             :   0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
     111             :   0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
     112             :   0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
     113             :   0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43,
     114             : };
     115             : 
     116             : static u8 tc2_digest_sha384[] = {
     117             :   0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31,
     118             :   0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b,
     119             :   0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47,
     120             :   0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e,
     121             :   0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7,
     122             :   0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49,
     123             : };
     124             : 
     125             : static u8 tc2_digest_sha512[] = {
     126             :   0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2,
     127             :   0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3,
     128             :   0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6,
     129             :   0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54,
     130             :   0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
     131             :   0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd,
     132             :   0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b,
     133             :   0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37,
     134             : };
     135             : 
     136             : /* *INDENT-OFF* */
     137         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha224) = {
     138             :   .name = "RFC4231 TC2",
     139             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     140             :   .key = TEST_DATA (tc2_key),
     141             :   .plaintext = TEST_DATA (tc2_data),
     142             :   .digest = TEST_DATA (tc2_digest_sha224),
     143             : };
     144             : 
     145         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha256) = {
     146             :   .name = "RFC4231 TC2",
     147             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     148             :   .key = TEST_DATA (tc2_key),
     149             :   .plaintext = TEST_DATA (tc2_data),
     150             :   .digest = TEST_DATA (tc2_digest_sha256),
     151             : };
     152             : 
     153         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha384) = {
     154             :   .name = "RFC4231 TC2",
     155             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     156             :   .key = TEST_DATA (tc2_key),
     157             :   .plaintext = TEST_DATA (tc2_data),
     158             :   .digest = TEST_DATA (tc2_digest_sha384),
     159             : };
     160             : 
     161         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha512) = {
     162             :   .name = "RFC4231 TC2",
     163             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     164             :   .key = TEST_DATA (tc2_key),
     165             :   .plaintext = TEST_DATA (tc2_data),
     166             :   .digest = TEST_DATA (tc2_digest_sha512),
     167             : };
     168             : /* *INDENT-ON* */
     169             : 
     170             : static u8 tc3_key[20] = {
     171             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     172             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     173             :   0xaa, 0xaa, 0xaa, 0xaa
     174             : };
     175             : 
     176             : static u8 tc3_data[50] = {
     177             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     178             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     179             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     180             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     181             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     182             :   0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
     183             :   0xdd, 0xdd,
     184             : };
     185             : 
     186             : static u8 tc3_digest_sha224[] = {
     187             :   0x7f, 0xb3, 0xcb, 0x35, 0x88, 0xc6, 0xc1, 0xf6,
     188             :   0xff, 0xa9, 0x69, 0x4d, 0x7d, 0x6a, 0xd2, 0x64,
     189             :   0x93, 0x65, 0xb0, 0xc1, 0xf6, 0x5d, 0x69, 0xd1,
     190             :   0xec, 0x83, 0x33, 0xea
     191             : };
     192             : 
     193             : static u8 tc3_digest_sha256[] = {
     194             :   0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46,
     195             :   0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7,
     196             :   0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22,
     197             :   0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe
     198             : };
     199             : 
     200             : static u8 tc3_digest_sha384[] = {
     201             :   0x88, 0x06, 0x26, 0x08, 0xd3, 0xe6, 0xad, 0x8a,
     202             :   0x0a, 0xa2, 0xac, 0xe0, 0x14, 0xc8, 0xa8, 0x6f,
     203             :   0x0a, 0xa6, 0x35, 0xd9, 0x47, 0xac, 0x9f, 0xeb,
     204             :   0xe8, 0x3e, 0xf4, 0xe5, 0x59, 0x66, 0x14, 0x4b,
     205             :   0x2a, 0x5a, 0xb3, 0x9d, 0xc1, 0x38, 0x14, 0xb9,
     206             :   0x4e, 0x3a, 0xb6, 0xe1, 0x01, 0xa3, 0x4f, 0x27
     207             : };
     208             : 
     209             : static u8 tc3_digest_sha512[] = {
     210             :   0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84,
     211             :   0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9,
     212             :   0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36,
     213             :   0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39,
     214             :   0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8,
     215             :   0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07,
     216             :   0xb9, 0x46, 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26,
     217             :   0x74, 0x27, 0x88, 0x59, 0xe1, 0x32, 0x92, 0xfb
     218             : };
     219             : 
     220             : /* *INDENT-OFF* */
     221         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha224) = {
     222             :   .name = "RFC4231 TC3",
     223             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     224             :   .key = TEST_DATA (tc3_key),
     225             :   .plaintext = TEST_DATA (tc3_data),
     226             :   .digest = TEST_DATA (tc3_digest_sha224),
     227             : };
     228             : 
     229         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha256) = {
     230             :   .name = "RFC4231 TC3",
     231             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     232             :   .key = TEST_DATA (tc3_key),
     233             :   .plaintext = TEST_DATA (tc3_data),
     234             :   .digest = TEST_DATA (tc3_digest_sha256),
     235             : };
     236             : 
     237         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha384) = {
     238             :   .name = "RFC4231 TC3",
     239             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     240             :   .key = TEST_DATA (tc3_key),
     241             :   .plaintext = TEST_DATA (tc3_data),
     242             :   .digest = TEST_DATA (tc3_digest_sha384),
     243             : };
     244             : 
     245         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha512) = {
     246             :   .name = "RFC4231 TC3",
     247             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     248             :   .key = TEST_DATA (tc3_key),
     249             :   .plaintext = TEST_DATA (tc3_data),
     250             :   .digest = TEST_DATA (tc3_digest_sha512),
     251             : };
     252             : /* *INDENT-ON* */
     253             : 
     254             : static u8 tc4_key[25] = {
     255             :   0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
     256             :   0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
     257             :   0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
     258             :   0x19
     259             : };
     260             : 
     261             : static u8 tc4_data[50] = {
     262             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     263             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     264             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     265             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     266             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     267             :   0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
     268             :   0xcd, 0xcd
     269             : };
     270             : 
     271             : static u8 tc4_digest_sha224[] = {
     272             :   0x6c, 0x11, 0x50, 0x68, 0x74, 0x01, 0x3c, 0xac,
     273             :   0x6a, 0x2a, 0xbc, 0x1b, 0xb3, 0x82, 0x62, 0x7c,
     274             :   0xec, 0x6a, 0x90, 0xd8, 0x6e, 0xfc, 0x01, 0x2d,
     275             :   0xe7, 0xaf, 0xec, 0x5a
     276             : };
     277             : 
     278             : static u8 tc4_digest_sha256[] = {
     279             :   0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e,
     280             :   0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a,
     281             :   0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07,
     282             :   0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b
     283             : };
     284             : 
     285             : static u8 tc4_digest_sha384[] = {
     286             :   0x3e, 0x8a, 0x69, 0xb7, 0x78, 0x3c, 0x25, 0x85,
     287             :   0x19, 0x33, 0xab, 0x62, 0x90, 0xaf, 0x6c, 0xa7,
     288             :   0x7a, 0x99, 0x81, 0x48, 0x08, 0x50, 0x00, 0x9c,
     289             :   0xc5, 0x57, 0x7c, 0x6e, 0x1f, 0x57, 0x3b, 0x4e,
     290             :   0x68, 0x01, 0xdd, 0x23, 0xc4, 0xa7, 0xd6, 0x79,
     291             :   0xcc, 0xf8, 0xa3, 0x86, 0xc6, 0x74, 0xcf, 0xfb
     292             : };
     293             : 
     294             : static u8 tc4_digest_sha512[] = {
     295             :   0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69,
     296             :   0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7,
     297             :   0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d,
     298             :   0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb,
     299             :   0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4,
     300             :   0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63,
     301             :   0xa5, 0xf1, 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d,
     302             :   0xe2, 0xad, 0xeb, 0xeb, 0x10, 0xa2, 0x98, 0xdd
     303             : };
     304             : 
     305             : /* *INDENT-OFF* */
     306         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha224) = {
     307             :   .name = "RFC4231 TC4",
     308             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     309             :   .key = TEST_DATA (tc4_key),
     310             :   .plaintext = TEST_DATA (tc4_data),
     311             :   .digest = TEST_DATA (tc4_digest_sha224),
     312             : };
     313             : 
     314         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha256) = {
     315             :   .name = "RFC4231 TC4",
     316             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     317             :   .key = TEST_DATA (tc4_key),
     318             :   .plaintext = TEST_DATA (tc4_data),
     319             :   .digest = TEST_DATA (tc4_digest_sha256),
     320             : };
     321             : 
     322         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha384) = {
     323             :   .name = "RFC4231 TC4",
     324             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     325             :   .key = TEST_DATA (tc4_key),
     326             :   .plaintext = TEST_DATA (tc4_data),
     327             :   .digest = TEST_DATA (tc4_digest_sha384),
     328             : };
     329             : 
     330         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha512) = {
     331             :   .name = "RFC4231 TC4",
     332             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     333             :   .key = TEST_DATA (tc4_key),
     334             :   .plaintext = TEST_DATA (tc4_data),
     335             :   .digest = TEST_DATA (tc4_digest_sha512),
     336             : };
     337             : /* *INDENT-ON* */
     338             : 
     339             : static u8 tc5_key[20] = {
     340             :   0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
     341             :   0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
     342             :   0x0c, 0x0c, 0x0c, 0x0c
     343             : };
     344             : 
     345             : static u8 tc5_data[] = {
     346             :   0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74,
     347             :   0x68, 0x20, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61,
     348             :   0x74, 0x69, 0x6f, 0x6e
     349             : };
     350             : 
     351             : static u8 tc5_digest_sha224[16] = {
     352             :   0x0e, 0x2a, 0xea, 0x68, 0xa9, 0x0c, 0x8d, 0x37,
     353             :   0xc9, 0x88, 0xbc, 0xdb, 0x9f, 0xca, 0x6f, 0xa8
     354             : };
     355             : 
     356             : static u8 tc5_digest_sha256[16] = {
     357             :   0xa3, 0xb6, 0x16, 0x74, 0x73, 0x10, 0x0e, 0xe0,
     358             :   0x6e, 0x0c, 0x79, 0x6c, 0x29, 0x55, 0x55, 0x2b
     359             : };
     360             : 
     361             : static u8 tc5_digest_sha384[16] = {
     362             :   0x3a, 0xbf, 0x34, 0xc3, 0x50, 0x3b, 0x2a, 0x23,
     363             :   0xa4, 0x6e, 0xfc, 0x61, 0x9b, 0xae, 0xf8, 0x97
     364             : };
     365             : 
     366             : static u8 tc5_digest_sha512[16] = {
     367             :   0x41, 0x5f, 0xad, 0x62, 0x71, 0x58, 0x0a, 0x53,
     368             :   0x1d, 0x41, 0x79, 0xbc, 0x89, 0x1d, 0x87, 0xa6
     369             : };
     370             : 
     371             : /* *INDENT-OFF* */
     372         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha224) = {
     373             :   .name = "RFC4231 TC5",
     374             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     375             :   .key = TEST_DATA (tc5_key),
     376             :   .plaintext = TEST_DATA (tc5_data),
     377             :   .digest = TEST_DATA (tc5_digest_sha224),
     378             : };
     379             : 
     380         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha256) = {
     381             :   .name = "RFC4231 TC5",
     382             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     383             :   .key = TEST_DATA (tc5_key),
     384             :   .plaintext = TEST_DATA (tc5_data),
     385             :   .digest = TEST_DATA (tc5_digest_sha256),
     386             : };
     387             : 
     388         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha384) = {
     389             :   .name = "RFC4231 TC5",
     390             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     391             :   .key = TEST_DATA (tc5_key),
     392             :   .plaintext = TEST_DATA (tc5_data),
     393             :   .digest = TEST_DATA (tc5_digest_sha384),
     394             : };
     395             : 
     396         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha512) = {
     397             :   .name = "RFC4231 TC5",
     398             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     399             :   .key = TEST_DATA (tc5_key),
     400             :   .plaintext = TEST_DATA (tc5_data),
     401             :   .digest = TEST_DATA (tc5_digest_sha512),
     402             : };
     403             : /* *INDENT-ON* */
     404             : 
     405             : static u8 tc6_key[131] = {
     406             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     407             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     408             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     409             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     410             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     411             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     412             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     413             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     414             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     415             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     416             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     417             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     418             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     419             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     420             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     421             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     422             :   0xaa, 0xaa, 0xaa
     423             : };
     424             : 
     425             : static char tc6_data[54] =
     426             :   "Test Using Larger Than Block-Size Key - Hash Key First";
     427             : 
     428             : static u8 tc6_digest_sha224[] = {
     429             :   0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad,
     430             :   0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2,
     431             :   0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27,
     432             :   0x3f, 0xa6, 0x87, 0x0e
     433             : };
     434             : 
     435             : static u8 tc6_digest_sha256[] = {
     436             :   0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f,
     437             :   0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f,
     438             :   0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14,
     439             :   0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54
     440             : };
     441             : 
     442             : static u8 tc6_digest_sha384[] = {
     443             :   0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90,
     444             :   0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4,
     445             :   0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f,
     446             :   0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6,
     447             :   0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82,
     448             :   0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52
     449             : };
     450             : 
     451             : static u8 tc6_digest_sha512[] = {
     452             :   0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb,
     453             :   0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4,
     454             :   0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1,
     455             :   0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52,
     456             :   0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
     457             :   0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52,
     458             :   0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec,
     459             :   0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98
     460             : };
     461             : 
     462             : /* *INDENT-OFF* */
     463         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha224) = {
     464             :   .name = "RFC4231 TC6",
     465             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     466             :   .key = TEST_DATA (tc6_key),
     467             :   .plaintext = TEST_DATA (tc6_data),
     468             :   .digest = TEST_DATA (tc6_digest_sha224),
     469             : };
     470             : 
     471         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha256) = {
     472             :   .name = "RFC4231 TC6",
     473             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     474             :   .key = TEST_DATA (tc6_key),
     475             :   .plaintext = TEST_DATA (tc6_data),
     476             :   .digest = TEST_DATA (tc6_digest_sha256),
     477             : };
     478             : 
     479         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha384) = {
     480             :   .name = "RFC4231 TC6",
     481             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     482             :   .key = TEST_DATA (tc6_key),
     483             :   .plaintext = TEST_DATA (tc6_data),
     484             :   .digest = TEST_DATA (tc6_digest_sha384),
     485             : };
     486             : 
     487         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha512) = {
     488             :   .name = "RFC4231 TC6",
     489             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     490             :   .key = TEST_DATA (tc6_key),
     491             :   .plaintext = TEST_DATA (tc6_data),
     492             :   .digest = TEST_DATA (tc6_digest_sha512),
     493             : };
     494             : /* *INDENT-ON* */
     495             : 
     496             : static u8 tc7_key[131] = {
     497             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     498             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     499             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     500             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     501             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     502             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     503             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     504             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     505             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     506             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     507             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     508             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     509             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     510             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     511             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     512             :   0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
     513             :   0xaa, 0xaa, 0xaa
     514             : };
     515             : 
     516             : static char tc7_data[152] =
     517             :   "This is a test using a larger than block-size key and a larger than "
     518             :   "block-size data. The key needs to be hashed before being used by the "
     519             :   "HMAC algorithm.";
     520             : 
     521             : static u8 tc7_digest_sha224[] = {
     522             :   0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02,
     523             :   0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd,
     524             :   0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9,
     525             :   0xf6, 0xf5, 0x65, 0xd1
     526             : };
     527             : 
     528             : static u8 tc7_digest_sha256[] = {
     529             :   0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb,
     530             :   0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44,
     531             :   0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93,
     532             :   0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2
     533             : };
     534             : 
     535             : static u8 tc7_digest_sha384[] = {
     536             :   0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d,
     537             :   0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c,
     538             :   0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a,
     539             :   0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5,
     540             :   0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d,
     541             :   0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e
     542             : };
     543             : 
     544             : static u8 tc7_digest_sha512[] = {
     545             :   0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba,
     546             :   0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd,
     547             :   0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86,
     548             :   0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44,
     549             :   0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
     550             :   0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15,
     551             :   0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60,
     552             :   0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58
     553             : };
     554             : 
     555             : /* *INDENT-OFF* */
     556         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha224) = {
     557             :   .name = "RFC4231 TC7",
     558             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA224,
     559             :   .key = TEST_DATA (tc7_key),
     560             :   .plaintext = TEST_DATA (tc7_data),
     561             :   .digest = TEST_DATA (tc7_digest_sha224),
     562             : };
     563             : 
     564         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha256) = {
     565             :   .name = "RFC4231 TC7",
     566             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA256,
     567             :   .key = TEST_DATA (tc7_key),
     568             :   .plaintext = TEST_DATA (tc7_data),
     569             :   .digest = TEST_DATA (tc7_digest_sha256),
     570             : };
     571             : 
     572         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha384) = {
     573             :   .name = "RFC4231 TC7",
     574             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA384,
     575             :   .key = TEST_DATA (tc7_key),
     576             :   .plaintext = TEST_DATA (tc7_data),
     577             :   .digest = TEST_DATA (tc7_digest_sha384),
     578             : };
     579             : 
     580         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha512) = {
     581             :   .name = "RFC4231 TC7",
     582             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     583             :   .key = TEST_DATA (tc7_key),
     584             :   .plaintext = TEST_DATA (tc7_data),
     585             :   .digest = TEST_DATA (tc7_digest_sha512),
     586             : };
     587             : 
     588         559 : UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha512_chain) = {
     589             :   .name = "RFC4231 TC7 [chained]",
     590             :   .alg = VNET_CRYPTO_ALG_HMAC_SHA512,
     591             :   .key = TEST_DATA (tc7_key),
     592             :   .digest = TEST_DATA (tc7_digest_sha512),
     593             :   .is_chained = 1,
     594             :   .pt_chunks = {
     595             :     TEST_DATA_CHUNK (tc7_data, 0, 50),
     596             :     TEST_DATA_CHUNK (tc7_data, 50, 50),
     597             :     TEST_DATA_CHUNK (tc7_data, 100, 50),
     598             :     TEST_DATA_CHUNK (tc7_data, 150, 2),
     599             :   },
     600             : };
     601             : /* *INDENT-ON* */
     602             : 
     603             : /*
     604             :  * fd.io coding-style-patch-verification: ON
     605             :  *
     606             :  * Local Variables:
     607             :  * eval: (c-set-style "gnu")
     608             :  * End:
     609             :  */

Generated by: LCOV version 1.14