1 1.1.1.3 christos /* 2 1.1.1.5 christos * Copyright 1998-2021 The OpenSSL Project Authors. All Rights Reserved. 3 1.1.1.3 christos * 4 1.1.1.5 christos * Licensed under the Apache License 2.0 (the "License"). You may not use 5 1.1.1.3 christos * this file except in compliance with the License. You can obtain a copy 6 1.1.1.3 christos * in the file LICENSE in the source distribution or at 7 1.1.1.3 christos * https://www.openssl.org/source/license.html 8 1.1.1.3 christos */ 9 1.1.1.3 christos 10 1.1.1.5 christos #include <openssl/param_build.h> 11 1.1.1.5 christos 12 1.1.1.3 christos /* used by speed.c */ 13 1.1.1.5 christos EVP_PKEY *get_dsa(int); 14 1.1.1.3 christos 15 1.1 christos static unsigned char dsa512_priv[] = { 16 1.1.1.2 spz 0x65, 0xe5, 0xc7, 0x38, 0x60, 0x24, 0xb5, 0x89, 0xd4, 0x9c, 0xeb, 0x4c, 17 1.1.1.2 spz 0x9c, 0x1d, 0x7a, 0x22, 0xbd, 0xd1, 0xc2, 0xd2, 18 1.1.1.2 spz }; 19 1.1.1.2 spz 20 1.1 christos static unsigned char dsa512_pub[] = { 21 1.1.1.2 spz 0x00, 0x95, 0xa7, 0x0d, 0xec, 0x93, 0x68, 0xba, 0x5f, 0xf7, 0x5f, 0x07, 22 1.1.1.2 spz 0xf2, 0x3b, 0xad, 0x6b, 0x01, 0xdc, 0xbe, 0xec, 0xde, 0x04, 0x7a, 0x3a, 23 1.1.1.2 spz 0x27, 0xb3, 0xec, 0x49, 0xfd, 0x08, 0x43, 0x3d, 0x7e, 0xa8, 0x2c, 0x5e, 24 1.1.1.2 spz 0x7b, 0xbb, 0xfc, 0xf4, 0x6e, 0xeb, 0x6c, 0xb0, 0x6e, 0xf8, 0x02, 0x12, 25 1.1.1.2 spz 0x8c, 0x38, 0x5d, 0x83, 0x56, 0x7d, 0xee, 0x53, 0x05, 0x3e, 0x24, 0x84, 26 1.1.1.2 spz 0xbe, 0xba, 0x0a, 0x6b, 0xc8, 27 1.1.1.2 spz }; 28 1.1.1.2 spz 29 1.1.1.2 spz static unsigned char dsa512_p[] = { 30 1.1.1.2 spz 0x9D, 0x1B, 0x69, 0x8E, 0x26, 0xDB, 0xF2, 0x2B, 0x11, 0x70, 0x19, 0x86, 31 1.1.1.2 spz 0xF6, 0x19, 0xC8, 0xF8, 0x19, 0xF2, 0x18, 0x53, 0x94, 0x46, 0x06, 0xD0, 32 1.1.1.2 spz 0x62, 0x50, 0x33, 0x4B, 0x02, 0x3C, 0x52, 0x30, 0x03, 0x8B, 0x3B, 0xF9, 33 1.1.1.2 spz 0x5F, 0xD1, 0x24, 0x06, 0x4F, 0x7B, 0x4C, 0xBA, 0xAA, 0x40, 0x9B, 0xFD, 34 1.1.1.2 spz 0x96, 0xE4, 0x37, 0x33, 0xBB, 0x2D, 0x5A, 0xD7, 0x5A, 0x11, 0x40, 0x66, 35 1.1.1.2 spz 0xA2, 0x76, 0x7D, 0x31, 36 1.1.1.2 spz }; 37 1.1.1.2 spz 38 1.1.1.2 spz static unsigned char dsa512_q[] = { 39 1.1.1.2 spz 0xFB, 0x53, 0xEF, 0x50, 0xB4, 0x40, 0x92, 0x31, 0x56, 0x86, 0x53, 0x7A, 40 1.1.1.2 spz 0xE8, 0x8B, 0x22, 0x9A, 0x49, 0xFB, 0x71, 0x8F, 41 1.1.1.2 spz }; 42 1.1.1.2 spz 43 1.1.1.2 spz static unsigned char dsa512_g[] = { 44 1.1.1.2 spz 0x83, 0x3E, 0x88, 0xE5, 0xC5, 0x89, 0x73, 0xCE, 0x3B, 0x6C, 0x01, 0x49, 45 1.1.1.2 spz 0xBF, 0xB3, 0xC7, 0x9F, 0x0A, 0xEA, 0x44, 0x91, 0xE5, 0x30, 0xAA, 0xD9, 46 1.1.1.2 spz 0xBE, 0x5B, 0x5F, 0xB7, 0x10, 0xD7, 0x89, 0xB7, 0x8E, 0x74, 0xFB, 0xCF, 47 1.1.1.2 spz 0x29, 0x1E, 0xEB, 0xA8, 0x2C, 0x54, 0x51, 0xB8, 0x10, 0xDE, 0xA0, 0xCE, 48 1.1.1.2 spz 0x2F, 0xCC, 0x24, 0x6B, 0x90, 0x77, 0xDE, 0xA2, 0x68, 0xA6, 0x52, 0x12, 49 1.1.1.2 spz 0xA2, 0x03, 0x9D, 0x20, 50 1.1.1.2 spz }; 51 1.1 christos 52 1.1.1.2 spz static unsigned char dsa1024_priv[] = { 53 1.1.1.2 spz 0x7d, 0x21, 0xda, 0xbb, 0x62, 0x15, 0x47, 0x36, 0x07, 0x67, 0x12, 0xe8, 54 1.1.1.2 spz 0x8c, 0xaa, 0x1c, 0xcd, 0x38, 0x12, 0x61, 0x18, 55 1.1.1.2 spz }; 56 1.1.1.2 spz 57 1.1.1.2 spz static unsigned char dsa1024_pub[] = { 58 1.1.1.2 spz 0x3c, 0x4e, 0x9c, 0x2a, 0x7f, 0x16, 0xc1, 0x25, 0xeb, 0xac, 0x78, 0x63, 59 1.1.1.2 spz 0x90, 0x14, 0x8c, 0x8b, 0xf4, 0x68, 0x43, 0x3c, 0x2d, 0xee, 0x65, 0x50, 60 1.1.1.2 spz 0x7d, 0x9c, 0x8f, 0x8c, 0x8a, 0x51, 0xd6, 0x11, 0x2b, 0x99, 0xaf, 0x1e, 61 1.1.1.2 spz 0x90, 0x97, 0xb5, 0xd3, 0xa6, 0x20, 0x25, 0xd6, 0xfe, 0x43, 0x02, 0xd5, 62 1.1.1.2 spz 0x91, 0x7d, 0xa7, 0x8c, 0xdb, 0xc9, 0x85, 0xa3, 0x36, 0x48, 0xf7, 0x68, 63 1.1.1.2 spz 0xaa, 0x60, 0xb1, 0xf7, 0x05, 0x68, 0x3a, 0xa3, 0x3f, 0xd3, 0x19, 0x82, 64 1.1.1.2 spz 0xd8, 0x82, 0x7a, 0x77, 0xfb, 0xef, 0xf4, 0x15, 0x0a, 0xeb, 0x06, 0x04, 65 1.1.1.2 spz 0x7f, 0x53, 0x07, 0x0c, 0xbc, 0xcb, 0x2d, 0x83, 0xdb, 0x3e, 0xd1, 0x28, 66 1.1.1.2 spz 0xa5, 0xa1, 0x31, 0xe0, 0x67, 0xfa, 0x50, 0xde, 0x9b, 0x07, 0x83, 0x7e, 67 1.1.1.2 spz 0x2c, 0x0b, 0xc3, 0x13, 0x50, 0x61, 0xe5, 0xad, 0xbd, 0x36, 0xb8, 0x97, 68 1.1.1.2 spz 0x4e, 0x40, 0x7d, 0xe8, 0x83, 0x0d, 0xbc, 0x4b 69 1.1.1.2 spz }; 70 1.1.1.2 spz 71 1.1.1.2 spz static unsigned char dsa1024_p[] = { 72 1.1.1.2 spz 0xA7, 0x3F, 0x6E, 0x85, 0xBF, 0x41, 0x6A, 0x29, 0x7D, 0xF0, 0x9F, 0x47, 73 1.1.1.2 spz 0x19, 0x30, 0x90, 0x9A, 0x09, 0x1D, 0xDA, 0x6A, 0x33, 0x1E, 0xC5, 0x3D, 74 1.1.1.2 spz 0x86, 0x96, 0xB3, 0x15, 0xE0, 0x53, 0x2E, 0x8F, 0xE0, 0x59, 0x82, 0x73, 75 1.1.1.2 spz 0x90, 0x3E, 0x75, 0x31, 0x99, 0x47, 0x7A, 0x52, 0xFB, 0x85, 0xE4, 0xD9, 76 1.1.1.2 spz 0xA6, 0x7B, 0x38, 0x9B, 0x68, 0x8A, 0x84, 0x9B, 0x87, 0xC6, 0x1E, 0xB5, 77 1.1.1.2 spz 0x7E, 0x86, 0x4B, 0x53, 0x5B, 0x59, 0xCF, 0x71, 0x65, 0x19, 0x88, 0x6E, 78 1.1.1.2 spz 0xCE, 0x66, 0xAE, 0x6B, 0x88, 0x36, 0xFB, 0xEC, 0x28, 0xDC, 0xC2, 0xD7, 79 1.1.1.2 spz 0xA5, 0xBB, 0xE5, 0x2C, 0x39, 0x26, 0x4B, 0xDA, 0x9A, 0x70, 0x18, 0x95, 80 1.1.1.2 spz 0x37, 0x95, 0x10, 0x56, 0x23, 0xF6, 0x15, 0xED, 0xBA, 0x04, 0x5E, 0xDE, 81 1.1.1.2 spz 0x39, 0x4F, 0xFD, 0xB7, 0x43, 0x1F, 0xB5, 0xA4, 0x65, 0x6F, 0xCD, 0x80, 82 1.1.1.2 spz 0x11, 0xE4, 0x70, 0x95, 0x5B, 0x50, 0xCD, 0x49, 83 1.1.1.2 spz }; 84 1.1.1.2 spz 85 1.1.1.2 spz static unsigned char dsa1024_q[] = { 86 1.1.1.2 spz 0xF7, 0x07, 0x31, 0xED, 0xFA, 0x6C, 0x06, 0x03, 0xD5, 0x85, 0x8A, 0x1C, 87 1.1.1.2 spz 0xAC, 0x9C, 0x65, 0xE7, 0x50, 0x66, 0x65, 0x6F, 88 1.1.1.2 spz }; 89 1.1.1.2 spz 90 1.1.1.2 spz static unsigned char dsa1024_g[] = { 91 1.1.1.2 spz 0x4D, 0xDF, 0x4C, 0x03, 0xA6, 0x91, 0x8A, 0xF5, 0x19, 0x6F, 0x50, 0x46, 92 1.1.1.2 spz 0x25, 0x99, 0xE5, 0x68, 0x6F, 0x30, 0xE3, 0x69, 0xE1, 0xE5, 0xB3, 0x5D, 93 1.1.1.2 spz 0x98, 0xBB, 0x28, 0x86, 0x48, 0xFC, 0xDE, 0x99, 0x04, 0x3F, 0x5F, 0x88, 94 1.1.1.2 spz 0x0C, 0x9C, 0x73, 0x24, 0x0D, 0x20, 0x5D, 0xB9, 0x2A, 0x9A, 0x3F, 0x18, 95 1.1.1.2 spz 0x96, 0x27, 0xE4, 0x62, 0x87, 0xC1, 0x7B, 0x74, 0x62, 0x53, 0xFC, 0x61, 96 1.1.1.2 spz 0x27, 0xA8, 0x7A, 0x91, 0x09, 0x9D, 0xB6, 0xF1, 0x4D, 0x9C, 0x54, 0x0F, 97 1.1.1.2 spz 0x58, 0x06, 0xEE, 0x49, 0x74, 0x07, 0xCE, 0x55, 0x7E, 0x23, 0xCE, 0x16, 98 1.1.1.2 spz 0xF6, 0xCA, 0xDC, 0x5A, 0x61, 0x01, 0x7E, 0xC9, 0x71, 0xB5, 0x4D, 0xF6, 99 1.1.1.2 spz 0xDC, 0x34, 0x29, 0x87, 0x68, 0xF6, 0x5E, 0x20, 0x93, 0xB3, 0xDB, 0xF5, 100 1.1.1.2 spz 0xE4, 0x09, 0x6C, 0x41, 0x17, 0x95, 0x92, 0xEB, 0x01, 0xB5, 0x73, 0xA5, 101 1.1.1.2 spz 0x6A, 0x7E, 0xD8, 0x32, 0xED, 0x0E, 0x02, 0xB8, 102 1.1.1.2 spz }; 103 1.1 christos 104 1.1.1.2 spz static unsigned char dsa2048_priv[] = { 105 1.1.1.2 spz 0x32, 0x67, 0x92, 0xf6, 0xc4, 0xe2, 0xe2, 0xe8, 0xa0, 0x8b, 0x6b, 0x45, 106 1.1.1.2 spz 0x0c, 0x8a, 0x76, 0xb0, 0xee, 0xcf, 0x91, 0xa7, 107 1.1.1.2 spz }; 108 1.1.1.2 spz 109 1.1.1.2 spz static unsigned char dsa2048_pub[] = { 110 1.1.1.2 spz 0x17, 0x8f, 0xa8, 0x11, 0x84, 0x92, 0xec, 0x83, 0x47, 0xc7, 0x6a, 0xb0, 111 1.1.1.2 spz 0x92, 0xaf, 0x5a, 0x20, 0x37, 0xa3, 0x64, 0x79, 0xd2, 0xd0, 0x3d, 0xcd, 112 1.1.1.2 spz 0xe0, 0x61, 0x88, 0x88, 0x21, 0xcc, 0x74, 0x5d, 0xce, 0x4c, 0x51, 0x47, 113 1.1.1.2 spz 0xf0, 0xc5, 0x5c, 0x4c, 0x82, 0x7a, 0xaf, 0x72, 0xad, 0xb9, 0xe0, 0x53, 114 1.1.1.2 spz 0xf2, 0x78, 0xb7, 0xf0, 0xb5, 0x48, 0x7f, 0x8a, 0x3a, 0x18, 0xd1, 0x9f, 115 1.1.1.2 spz 0x8b, 0x7d, 0xa5, 0x47, 0xb7, 0x95, 0xab, 0x98, 0xf8, 0x7b, 0x74, 0x50, 116 1.1.1.2 spz 0x56, 0x8e, 0x57, 0xf0, 0xee, 0xf5, 0xb7, 0xba, 0xab, 0x85, 0x86, 0xf9, 117 1.1.1.2 spz 0x2b, 0xef, 0x41, 0x56, 0xa0, 0xa4, 0x9f, 0xb7, 0x38, 0x00, 0x46, 0x0a, 118 1.1.1.2 spz 0xa6, 0xf1, 0xfc, 0x1f, 0xd8, 0x4e, 0x85, 0x44, 0x92, 0x43, 0x21, 0x5d, 119 1.1.1.2 spz 0x6e, 0xcc, 0xc2, 0xcb, 0x26, 0x31, 0x0d, 0x21, 0xc4, 0xbd, 0x8d, 0x24, 120 1.1.1.2 spz 0xbc, 0xd9, 0x18, 0x19, 0xd7, 0xdc, 0xf1, 0xe7, 0x93, 0x50, 0x48, 0x03, 121 1.1.1.2 spz 0x2c, 0xae, 0x2e, 0xe7, 0x49, 0x88, 0x5f, 0x93, 0x57, 0x27, 0x99, 0x36, 122 1.1.1.2 spz 0xb4, 0x20, 0xab, 0xfc, 0xa7, 0x2b, 0xf2, 0xd9, 0x98, 0xd7, 0xd4, 0x34, 123 1.1.1.2 spz 0x9d, 0x96, 0x50, 0x58, 0x9a, 0xea, 0x54, 0xf3, 0xee, 0xf5, 0x63, 0x14, 124 1.1.1.2 spz 0xee, 0x85, 0x83, 0x74, 0x76, 0xe1, 0x52, 0x95, 0xc3, 0xf7, 0xeb, 0x04, 125 1.1.1.2 spz 0x04, 0x7b, 0xa7, 0x28, 0x1b, 0xcc, 0xea, 0x4a, 0x4e, 0x84, 0xda, 0xd8, 126 1.1.1.2 spz 0x9c, 0x79, 0xd8, 0x9b, 0x66, 0x89, 0x2f, 0xcf, 0xac, 0xd7, 0x79, 0xf9, 127 1.1.1.2 spz 0xa9, 0xd8, 0x45, 0x13, 0x78, 0xb9, 0x00, 0x14, 0xc9, 0x7e, 0x22, 0x51, 128 1.1.1.2 spz 0x86, 0x67, 0xb0, 0x9f, 0x26, 0x11, 0x23, 0xc8, 0x38, 0xd7, 0x70, 0x1d, 129 1.1.1.2 spz 0x15, 0x8e, 0x4d, 0x4f, 0x95, 0x97, 0x40, 0xa1, 0xc2, 0x7e, 0x01, 0x18, 130 1.1.1.2 spz 0x72, 0xf4, 0x10, 0xe6, 0x8d, 0x52, 0x16, 0x7f, 0xf2, 0xc9, 0xf8, 0x33, 131 1.1.1.2 spz 0x8b, 0x33, 0xb7, 0xce, 132 1.1.1.2 spz }; 133 1.1.1.2 spz 134 1.1.1.2 spz static unsigned char dsa2048_p[] = { 135 1.1.1.2 spz 0xA0, 0x25, 0xFA, 0xAD, 0xF4, 0x8E, 0xB9, 0xE5, 0x99, 0xF3, 0x5D, 0x6F, 136 1.1.1.2 spz 0x4F, 0x83, 0x34, 0xE2, 0x7E, 0xCF, 0x6F, 0xBF, 0x30, 0xAF, 0x6F, 0x81, 137 1.1.1.2 spz 0xEB, 0xF8, 0xC4, 0x13, 0xD9, 0xA0, 0x5D, 0x8B, 0x5C, 0x8E, 0xDC, 0xC2, 138 1.1.1.2 spz 0x1D, 0x0B, 0x41, 0x32, 0xB0, 0x1F, 0xFE, 0xEF, 0x0C, 0xC2, 0xA2, 0x7E, 139 1.1.1.2 spz 0x68, 0x5C, 0x28, 0x21, 0xE9, 0xF5, 0xB1, 0x58, 0x12, 0x63, 0x4C, 0x19, 140 1.1.1.2 spz 0x4E, 0xFF, 0x02, 0x4B, 0x92, 0xED, 0xD2, 0x07, 0x11, 0x4D, 0x8C, 0x58, 141 1.1.1.2 spz 0x16, 0x5C, 0x55, 0x8E, 0xAD, 0xA3, 0x67, 0x7D, 0xB9, 0x86, 0x6E, 0x0B, 142 1.1.1.2 spz 0xE6, 0x54, 0x6F, 0x40, 0xAE, 0x0E, 0x67, 0x4C, 0xF9, 0x12, 0x5B, 0x3C, 143 1.1.1.2 spz 0x08, 0x7A, 0xF7, 0xFC, 0x67, 0x86, 0x69, 0xE7, 0x0A, 0x94, 0x40, 0xBF, 144 1.1.1.2 spz 0x8B, 0x76, 0xFE, 0x26, 0xD1, 0xF2, 0xA1, 0x1A, 0x84, 0xA1, 0x43, 0x56, 145 1.1.1.2 spz 0x28, 0xBC, 0x9A, 0x5F, 0xD7, 0x3B, 0x69, 0x89, 0x8A, 0x36, 0x2C, 0x51, 146 1.1.1.2 spz 0xDF, 0x12, 0x77, 0x2F, 0x57, 0x7B, 0xA0, 0xAA, 0xDD, 0x7F, 0xA1, 0x62, 147 1.1.1.2 spz 0x3B, 0x40, 0x7B, 0x68, 0x1A, 0x8F, 0x0D, 0x38, 0xBB, 0x21, 0x5D, 0x18, 148 1.1.1.2 spz 0xFC, 0x0F, 0x46, 0xF7, 0xA3, 0xB0, 0x1D, 0x23, 0xC3, 0xD2, 0xC7, 0x72, 149 1.1.1.2 spz 0x51, 0x18, 0xDF, 0x46, 0x95, 0x79, 0xD9, 0xBD, 0xB5, 0x19, 0x02, 0x2C, 150 1.1.1.2 spz 0x87, 0xDC, 0xE7, 0x57, 0x82, 0x7E, 0xF1, 0x8B, 0x06, 0x3D, 0x00, 0xA5, 151 1.1.1.2 spz 0x7B, 0x6B, 0x26, 0x27, 0x91, 0x0F, 0x6A, 0x77, 0xE4, 0xD5, 0x04, 0xE4, 152 1.1.1.2 spz 0x12, 0x2C, 0x42, 0xFF, 0xD2, 0x88, 0xBB, 0xD3, 0x92, 0xA0, 0xF9, 0xC8, 153 1.1.1.2 spz 0x51, 0x64, 0x14, 0x5C, 0xD8, 0xF9, 0x6C, 0x47, 0x82, 0xB4, 0x1C, 0x7F, 154 1.1.1.2 spz 0x09, 0xB8, 0xF0, 0x25, 0x83, 0x1D, 0x3F, 0x3F, 0x05, 0xB3, 0x21, 0x0A, 155 1.1.1.2 spz 0x5D, 0xA7, 0xD8, 0x54, 0xC3, 0x65, 0x7D, 0xC3, 0xB0, 0x1D, 0xBF, 0xAE, 156 1.1.1.2 spz 0xF8, 0x68, 0xCF, 0x9B, 157 1.1.1.2 spz }; 158 1.1.1.2 spz 159 1.1.1.2 spz static unsigned char dsa2048_q[] = { 160 1.1.1.2 spz 0x97, 0xE7, 0x33, 0x4D, 0xD3, 0x94, 0x3E, 0x0B, 0xDB, 0x62, 0x74, 0xC6, 161 1.1.1.2 spz 0xA1, 0x08, 0xDD, 0x19, 0xA3, 0x75, 0x17, 0x1B, 162 1.1.1.2 spz }; 163 1.1.1.2 spz 164 1.1.1.2 spz static unsigned char dsa2048_g[] = { 165 1.1.1.2 spz 0x2C, 0x78, 0x16, 0x59, 0x34, 0x63, 0xF4, 0xF3, 0x92, 0xFC, 0xB5, 0xA5, 166 1.1.1.2 spz 0x4F, 0x13, 0xDE, 0x2F, 0x1C, 0xA4, 0x3C, 0xAE, 0xAD, 0x38, 0x3F, 0x7E, 167 1.1.1.2 spz 0x90, 0xBF, 0x96, 0xA6, 0xAE, 0x25, 0x90, 0x72, 0xF5, 0x8E, 0x80, 0x0C, 168 1.1.1.2 spz 0x39, 0x1C, 0xD9, 0xEC, 0xBA, 0x90, 0x5B, 0x3A, 0xE8, 0x58, 0x6C, 0x9E, 169 1.1.1.2 spz 0x30, 0x42, 0x37, 0x02, 0x31, 0x82, 0xBC, 0x6A, 0xDF, 0x6A, 0x09, 0x29, 170 1.1.1.2 spz 0xE3, 0xC0, 0x46, 0xD1, 0xCB, 0x85, 0xEC, 0x0C, 0x30, 0x5E, 0xEA, 0xC8, 171 1.1.1.2 spz 0x39, 0x8E, 0x22, 0x9F, 0x22, 0x10, 0xD2, 0x34, 0x61, 0x68, 0x37, 0x3D, 172 1.1.1.2 spz 0x2E, 0x4A, 0x5B, 0x9A, 0xF5, 0xC1, 0x48, 0xC6, 0xF6, 0xDC, 0x63, 0x1A, 173 1.1.1.2 spz 0xD3, 0x96, 0x64, 0xBA, 0x34, 0xC9, 0xD1, 0xA0, 0xD1, 0xAE, 0x6C, 0x2F, 174 1.1.1.2 spz 0x48, 0x17, 0x93, 0x14, 0x43, 0xED, 0xF0, 0x21, 0x30, 0x19, 0xC3, 0x1B, 175 1.1.1.2 spz 0x5F, 0xDE, 0xA3, 0xF0, 0x70, 0x78, 0x18, 0xE1, 0xA8, 0xE4, 0xEE, 0x2E, 176 1.1.1.2 spz 0x00, 0xA5, 0xE4, 0xB3, 0x17, 0xC8, 0x0C, 0x7D, 0x6E, 0x42, 0xDC, 0xB7, 177 1.1.1.2 spz 0x46, 0x00, 0x36, 0x4D, 0xD4, 0x46, 0xAA, 0x3D, 0x3C, 0x46, 0x89, 0x40, 178 1.1.1.2 spz 0xBF, 0x1D, 0x84, 0x77, 0x0A, 0x75, 0xF3, 0x87, 0x1D, 0x08, 0x4C, 0xA6, 179 1.1.1.2 spz 0xD1, 0xA9, 0x1C, 0x1E, 0x12, 0x1E, 0xE1, 0xC7, 0x30, 0x28, 0x76, 0xA5, 180 1.1.1.2 spz 0x7F, 0x6C, 0x85, 0x96, 0x2B, 0x6F, 0xDB, 0x80, 0x66, 0x26, 0xAE, 0xF5, 181 1.1.1.2 spz 0x93, 0xC7, 0x8E, 0xAE, 0x9A, 0xED, 0xE4, 0xCA, 0x04, 0xEA, 0x3B, 0x72, 182 1.1.1.2 spz 0xEF, 0xDC, 0x87, 0xED, 0x0D, 0xA5, 0x4C, 0x4A, 0xDD, 0x71, 0x22, 0x64, 183 1.1.1.2 spz 0x59, 0x69, 0x4E, 0x8E, 0xBF, 0x43, 0xDC, 0xAB, 0x8E, 0x66, 0xBB, 0x01, 184 1.1.1.2 spz 0xB6, 0xF4, 0xE7, 0xFD, 0xD2, 0xAD, 0x9F, 0x36, 0xC1, 0xA0, 0x29, 0x99, 185 1.1.1.2 spz 0xD1, 0x96, 0x70, 0x59, 0x06, 0x78, 0x35, 0xBD, 0x65, 0x55, 0x52, 0x9E, 186 1.1.1.2 spz 0xF8, 0xB2, 0xE5, 0x38, 187 1.1.1.2 spz }; 188 1.1 christos 189 1.1.1.4 christos typedef struct testdsa_st { 190 1.1.1.4 christos unsigned char *priv; 191 1.1.1.4 christos unsigned char *pub; 192 1.1.1.4 christos unsigned char *p; 193 1.1.1.4 christos unsigned char *g; 194 1.1.1.4 christos unsigned char *q; 195 1.1.1.4 christos int priv_l; 196 1.1.1.4 christos int pub_l; 197 1.1.1.4 christos int p_l; 198 1.1.1.4 christos int g_l; 199 1.1.1.4 christos int q_l; 200 1.1.1.4 christos } testdsa; 201 1.1.1.4 christos 202 1.1.1.4 christos #define set_dsa_ptr(st, bits) \ 203 1.1.1.4 christos do { \ 204 1.1.1.4 christos st.priv = dsa##bits##_priv; \ 205 1.1.1.4 christos st.pub = dsa##bits##_pub; \ 206 1.1.1.4 christos st.p = dsa##bits##_p; \ 207 1.1.1.4 christos st.g = dsa##bits##_g; \ 208 1.1.1.4 christos st.q = dsa##bits##_q; \ 209 1.1.1.4 christos st.priv_l = sizeof(dsa##bits##_priv); \ 210 1.1.1.4 christos st.pub_l = sizeof(dsa##bits##_pub); \ 211 1.1.1.4 christos st.p_l = sizeof(dsa##bits##_p); \ 212 1.1.1.4 christos st.g_l = sizeof(dsa##bits##_g); \ 213 1.1.1.4 christos st.q_l = sizeof(dsa##bits##_q); \ 214 1.1.1.4 christos } while (0) 215 1.1.1.4 christos 216 1.1.1.5 christos EVP_PKEY *get_dsa(int dsa_bits) 217 1.1.1.2 spz { 218 1.1.1.5 christos EVP_PKEY *pkey = NULL; 219 1.1.1.3 christos BIGNUM *priv_key, *pub_key, *p, *q, *g; 220 1.1.1.5 christos EVP_PKEY_CTX *pctx; 221 1.1.1.4 christos testdsa dsa_t; 222 1.1.1.5 christos OSSL_PARAM_BLD *tmpl = NULL; 223 1.1.1.5 christos OSSL_PARAM *params = NULL; 224 1.1.1.4 christos 225 1.1.1.4 christos switch (dsa_bits) { 226 1.1.1.4 christos case 512: 227 1.1.1.4 christos set_dsa_ptr(dsa_t, 512); 228 1.1.1.4 christos break; 229 1.1.1.4 christos case 1024: 230 1.1.1.4 christos set_dsa_ptr(dsa_t, 1024); 231 1.1.1.4 christos break; 232 1.1.1.4 christos case 2048: 233 1.1.1.4 christos set_dsa_ptr(dsa_t, 2048); 234 1.1.1.4 christos break; 235 1.1.1.4 christos default: 236 1.1.1.4 christos return NULL; 237 1.1.1.4 christos } 238 1.1.1.2 spz 239 1.1.1.5 christos if ((pctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL)) == NULL) 240 1.1.1.4 christos return NULL; 241 1.1.1.5 christos 242 1.1.1.4 christos priv_key = BN_bin2bn(dsa_t.priv, dsa_t.priv_l, NULL); 243 1.1.1.4 christos pub_key = BN_bin2bn(dsa_t.pub, dsa_t.pub_l, NULL); 244 1.1.1.4 christos p = BN_bin2bn(dsa_t.p, dsa_t.p_l, NULL); 245 1.1.1.4 christos q = BN_bin2bn(dsa_t.q, dsa_t.q_l, NULL); 246 1.1.1.4 christos g = BN_bin2bn(dsa_t.g, dsa_t.g_l, NULL); 247 1.1.1.5 christos if (priv_key == NULL || pub_key == NULL || p == NULL || q == NULL 248 1.1.1.5 christos || g == NULL) { 249 1.1.1.3 christos goto err; 250 1.1.1.3 christos } 251 1.1.1.5 christos if ((tmpl = OSSL_PARAM_BLD_new()) == NULL 252 1.1.1.5 christos || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_P, 253 1.1.1.5 christos p) 254 1.1.1.5 christos || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_Q, 255 1.1.1.5 christos q) 256 1.1.1.5 christos || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_FFC_G, 257 1.1.1.5 christos g) 258 1.1.1.5 christos || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PRIV_KEY, 259 1.1.1.5 christos priv_key) 260 1.1.1.5 christos || !OSSL_PARAM_BLD_push_BN(tmpl, OSSL_PKEY_PARAM_PUB_KEY, 261 1.1.1.5 christos pub_key) 262 1.1.1.5 christos || (params = OSSL_PARAM_BLD_to_param(tmpl)) == NULL) 263 1.1.1.3 christos goto err; 264 1.1.1.3 christos 265 1.1.1.5 christos if (EVP_PKEY_fromdata_init(pctx) <= 0 266 1.1.1.5 christos || EVP_PKEY_fromdata(pctx, &pkey, EVP_PKEY_KEYPAIR, 267 1.1.1.5 christos params) <= 0) 268 1.1.1.5 christos pkey = NULL; 269 1.1.1.5 christos err: 270 1.1.1.5 christos OSSL_PARAM_free(params); 271 1.1.1.5 christos OSSL_PARAM_BLD_free(tmpl); 272 1.1.1.3 christos BN_free(priv_key); 273 1.1.1.3 christos BN_free(pub_key); 274 1.1.1.3 christos BN_free(p); 275 1.1.1.3 christos BN_free(q); 276 1.1.1.3 christos BN_free(g); 277 1.1.1.5 christos EVP_PKEY_CTX_free(pctx); 278 1.1.1.5 christos return pkey; 279 1.1.1.2 spz } 280