Annotation of embedaddon/strongswan/src/libstrongswan/plugins/bliss/bliss_param_set.c, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2014 Andreas Steffen
! 3: * HSR Hochschule fuer Technik Rapperswil
! 4: *
! 5: * This program is free software; you can redistribute it and/or modify it
! 6: * under the terms of the GNU General Public License as published by the
! 7: * Free Software Foundation; either version 2 of the License, or (at your
! 8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
! 9: *
! 10: * This program is distributed in the hope that it will be useful, but
! 11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! 12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
! 13: * for more details.
! 14: */
! 15:
! 16: #include "bliss_param_set.h"
! 17:
! 18: #include <asn1/oid.h>
! 19:
! 20: ENUM(bliss_param_set_id_names, BLISS_I, BLISS_B_IV,
! 21: "BLISS-I",
! 22: "BLISS-II",
! 23: "BLISS-III",
! 24: "BLISS-IV",
! 25: "BLISS-B-I",
! 26: "BLISS-B-II",
! 27: "BLISS-B-III",
! 28: "BLISS-B-IV"
! 29: );
! 30:
! 31: /**
! 32: * sigma = 215, k_sigma = ceiling[ sqrt(2*ln 2) * sigma ] = 254
! 33: *
! 34: * c[i] = exp(-2^i/f), i = 0..20, with f = k_sigma^2 / ln 2 = 93'076.9
! 35: */
! 36: static const uint8_t c_bliss_i[] = {
! 37: 255, 255, 75, 191, 247, 94, 30, 51, 147, 246, 89, 59, 99, 248, 26, 128,
! 38: 255, 254, 151, 128, 109, 166, 88, 143, 30, 175, 149, 20, 240, 81, 138, 111,
! 39: 255, 253, 47, 2, 214, 243, 188, 76, 236, 235, 40, 62, 54, 35, 33, 205,
! 40: 255, 250, 94, 13, 156, 120, 121, 216, 255, 120, 90, 11, 39, 232, 120, 111,
! 41: 255, 244, 188, 58, 242, 219, 157, 174, 6, 31, 131, 75, 88, 109, 112, 107,
! 42: 255, 233, 120, 244, 202, 151, 25, 10, 197, 109, 113, 255, 157, 89, 182, 141,
! 43: 255, 210, 243, 229, 18, 88, 50, 239, 130, 192, 12, 167, 62, 254, 211, 202,
! 44: 255, 165, 239, 183, 102, 186, 123, 249, 251, 59, 116, 143, 50, 174, 125, 198,
! 45: 255, 75, 255, 30, 65, 137, 228, 148, 14, 17, 113, 251, 81, 177, 151, 168,
! 46: 254, 152, 124, 205, 192, 136, 102, 79, 5, 62, 214, 95, 36, 223, 7, 20,
! 47: 253, 50, 242, 124, 187, 59, 68, 224, 90, 156, 53, 202, 9, 44, 191, 226,
! 48: 250, 109, 189, 110, 40, 124, 88, 12, 83, 78, 176, 86, 12, 102, 13, 41,
! 49: 244, 250, 133, 6, 3, 13, 45, 9, 120, 121, 150, 237, 69, 190, 62, 16,
! 50: 234, 110, 130, 187, 138, 174, 82, 229, 217, 154, 88, 138, 228, 153, 230, 13,
! 51: 214, 174, 54, 179, 117, 116, 223, 152, 97, 84, 31, 99, 68, 150, 122, 244,
! 52: 180, 7, 186, 2, 112, 3, 68, 13, 123, 133, 244, 184, 232, 216, 133, 18,
! 53: 126, 154, 221, 207, 32, 206, 66, 171, 94, 100, 164, 194, 117, 191, 1, 209,
! 54: 62, 156, 208, 7, 129, 173, 200, 3, 23, 248, 140, 60, 69, 217, 195, 235,
! 55: 15, 80, 84, 209, 213, 2, 107, 160, 1, 152, 43, 130, 93, 95, 241, 218,
! 56: 0, 234, 131, 37, 182, 53, 201, 231, 26, 2, 151, 161, 13, 214, 150, 145,
! 57: 0, 0, 214, 212, 4, 32, 184, 94, 84, 90, 244, 139, 48, 69, 33, 38
! 58: };
! 59:
! 60: /**
! 61: * sigma = 250, k_sigma = ceiling[ sqrt(2*ln 2) * sigma ] = 295
! 62: *
! 63: * c[i] = exp(-2^i/f), i = 0..20, with f = k_sigma^2 / ln 2 = 125'550.5
! 64: */
! 65: static const uint8_t c_bliss_iii[] = {
! 66: 255, 255, 122, 95, 16, 128, 14, 195, 60, 90, 166, 191, 205, 26, 144, 204,
! 67: 255, 254, 244, 190, 102, 192, 187, 141, 169, 92, 33, 30, 170, 141, 184, 56,
! 68: 255, 253, 233, 125, 228, 131, 93, 148, 121, 92, 52, 122, 149, 96, 29, 66,
! 69: 255, 251, 211, 0, 37, 9, 199, 244, 213, 217, 122, 205, 171, 200, 198, 5,
! 70: 255, 247, 166, 17, 185, 251, 90, 150, 1, 28, 7, 205, 125, 46, 84, 201,
! 71: 255, 239, 76, 105, 50, 114, 159, 235, 215, 165, 204, 182, 125, 143, 228, 222,
! 72: 255, 222, 153, 233, 85, 187, 45, 204, 236, 229, 38, 180, 20, 161, 7, 167,
! 73: 255, 189, 56, 46, 38, 4, 83, 8, 151, 137, 136, 1, 9, 180, 58, 204,
! 74: 255, 122, 129, 199, 240, 52, 248, 193, 76, 26, 160, 32, 195, 250, 217, 25,
! 75: 254, 245, 73, 44, 68, 229, 150, 74, 228, 74, 124, 249, 123, 94, 108, 127,
! 76: 253, 235, 168, 56, 252, 93, 188, 160, 249, 137, 236, 65, 62, 182, 153, 63,
! 77: 251, 219, 163, 110, 233, 251, 114, 216, 230, 35, 59, 210, 107, 100, 184, 16,
! 78: 247, 200, 110, 236, 134, 237, 213, 111, 240, 149, 109, 22, 216, 213, 237, 145,
! 79: 239, 212, 98, 249, 238, 1, 227, 248, 242, 51, 211, 134, 154, 115, 189, 83,
! 80: 224, 174, 65, 2, 190, 158, 9, 6, 184, 13, 130, 104, 247, 102, 38, 160,
! 81: 197, 49, 104, 97, 61, 210, 19, 115, 208, 54, 91, 27, 209, 227, 33, 26,
! 82: 151, 229, 20, 46, 200, 238, 35, 134, 72, 183, 253, 160, 193, 155, 117, 103,
! 83: 90, 32, 10, 204, 78, 83, 191, 230, 0, 221, 219, 6, 43, 252, 185, 95,
! 84: 31, 186, 139, 154, 90, 155, 17, 9, 42, 139, 40, 111, 246, 175, 4, 15,
! 85: 3, 238, 181, 190, 138, 94, 50, 234, 128, 193, 95, 36, 65, 236, 170, 208,
! 86: 0, 15, 118, 216, 230, 142, 121, 211, 13, 168, 207, 126, 145, 176, 24, 201
! 87: };
! 88:
! 89: /**
! 90: * sigma = 271, k_sigma = ceiling[ sqrt(2*ln 2) * sigma ] = 320
! 91: *
! 92: * c[i] = exp(-2^i/f), i = 0..21, with f = k_sigma^2 / ln 2 = 147'732.0
! 93: */
! 94: static const uint8_t c_bliss_iv[] = {
! 95: 255, 255, 142, 111, 102, 2, 141, 87, 150, 42, 18, 70, 6, 224, 18, 70,
! 96: 255, 255, 28, 222, 254, 102, 20, 78, 133, 78, 189, 107, 29, 7, 23, 193,
! 97: 255, 254, 57, 190, 198, 79, 181, 181, 108, 75, 142, 145, 45, 238, 193, 29,
! 98: 255, 252, 115, 128, 178, 170, 212, 166, 120, 157, 85, 96, 209, 180, 211, 83,
! 99: 255, 248, 231, 13, 253, 108, 245, 46, 238, 155, 30, 99, 141, 228, 149, 239,
! 100: 255, 241, 206, 78, 90, 132, 83, 172, 228, 179, 119, 115, 240, 51, 216, 6,
! 101: 255, 227, 157, 102, 46, 28, 61, 128, 58, 114, 174, 136, 8, 224, 133, 84,
! 102: 255, 199, 61, 242, 19, 216, 133, 241, 240, 22, 146, 43, 92, 57, 82, 248,
! 103: 255, 142, 136, 121, 160, 225, 119, 214, 241, 44, 159, 34, 133, 118, 96, 60,
! 104: 255, 29, 67, 61, 254, 49, 27, 152, 48, 124, 184, 87, 66, 214, 63, 133,
! 105: 254, 59, 79, 77, 206, 26, 238, 42, 69, 81, 191, 149, 146, 76, 255, 232,
! 106: 252, 121, 191, 28, 11, 107, 141, 223, 234, 42, 226, 50, 138, 102, 16, 97,
! 107: 248, 255, 234, 37, 109, 169, 103, 25, 240, 109, 93, 165, 177, 22, 133, 100,
! 108: 242, 48, 213, 124, 209, 49, 33, 48, 57, 237, 202, 62, 102, 132, 219, 48,
! 109: 229, 32, 92, 240, 188, 88, 70, 34, 179, 94, 244, 70, 25, 123, 76, 140,
! 110: 205, 18, 234, 94, 14, 226, 237, 76, 192, 18, 240, 50, 79, 63, 34, 96,
! 111: 164, 71, 76, 192, 111, 161, 157, 188, 19, 189, 133, 246, 67, 127, 6, 28,
! 112: 105, 107, 110, 50, 56, 199, 208, 174, 16, 95, 153, 106, 217, 198, 194, 179,
! 113: 43, 105, 77, 122, 127, 254, 146, 221, 44, 235, 61, 22, 179, 9, 113, 118,
! 114: 7, 92, 139, 87, 204, 239, 111, 200, 41, 129, 122, 49, 69, 113, 122, 239,
! 115: 0, 54, 49, 19, 64, 40, 218, 222, 60, 82, 186, 246, 64, 155, 184, 47,
! 116: 0, 0, 11, 120, 189, 135, 113, 62, 143, 175, 118, 239, 190, 120, 189, 250
! 117: };
! 118:
! 119: /**
! 120: * BLISS signature parameter set definitions
! 121: */
! 122: static const bliss_param_set_t bliss_param_sets[] = {
! 123:
! 124: /* BLISS-I scheme */
! 125: {
! 126: .id = BLISS_I,
! 127: .oid = OID_BLISS_I,
! 128: .strength = 128,
! 129: .q = 12289,
! 130: .q_bits = 14,
! 131: .q2_inv = 6145,
! 132: .n = 512,
! 133: .n_bits = 9,
! 134: .fft_params = &ntt_fft_12289_512,
! 135: .non_zero1 = 154,
! 136: .non_zero2 = 0,
! 137: .kappa = 23,
! 138: .nks_max = 46479,
! 139: .p_max = 0, /* not needed */
! 140: .sigma = 215,
! 141: .k_sigma = 254,
! 142: .k_sigma_bits = 8,
! 143: .c = c_bliss_i,
! 144: .c_cols = 16,
! 145: .c_rows = 21,
! 146: .z1_bits = 12,
! 147: .d = 10,
! 148: .p = 24,
! 149: .M = 46539, /* with alpha = 1.000 */
! 150: .B_inf = 2047, /* reduced from 2100 due to 12 bit z1 encoding */
! 151: .B_l2 = 12872 * 12872
! 152: },
! 153:
! 154: /* BLISS-III scheme */
! 155: {
! 156: .id = BLISS_III,
! 157: .oid = OID_BLISS_III,
! 158: .strength = 160,
! 159: .q = 12289,
! 160: .q_bits = 14,
! 161: .q2_inv = 6145,
! 162: .n = 512,
! 163: .n_bits = 9,
! 164: .fft_params = &ntt_fft_12289_512,
! 165: .non_zero1 = 216,
! 166: .non_zero2 = 16,
! 167: .kappa = 30,
! 168: .nks_max = 128626,
! 169: .p_max = 0, /* not needed */
! 170: .sigma = 250,
! 171: .k_sigma = 295,
! 172: .k_sigma_bits = 9,
! 173: .c = c_bliss_iii,
! 174: .c_cols = 16,
! 175: .c_rows = 21,
! 176: .z1_bits = 12,
! 177: .d = 9,
! 178: .p = 48,
! 179: .M = 128113, /* with alpha = 0.700 */
! 180: .B_inf = 1760,
! 181: .B_l2 = 10206 * 10206
! 182: },
! 183:
! 184: /* BLISS-IV scheme */
! 185: {
! 186: .id = BLISS_IV,
! 187: .oid = OID_BLISS_IV,
! 188: .strength = 192,
! 189: .q = 12289,
! 190: .q_bits = 14,
! 191: .q2_inv = 6145,
! 192: .n = 512,
! 193: .n_bits = 9,
! 194: .fft_params = &ntt_fft_12289_512,
! 195: .non_zero1 = 231,
! 196: .non_zero2 = 31,
! 197: .kappa = 39,
! 198: .nks_max = 244669,
! 199: .p_max = 0, /* not needed */
! 200: .sigma = 271,
! 201: .k_sigma = 320,
! 202: .k_sigma_bits = 9,
! 203: .c = c_bliss_iv,
! 204: .c_cols = 16,
! 205: .c_rows = 22,
! 206: .z1_bits = 12,
! 207: .d = 8,
! 208: .p = 96,
! 209: .M = 244186, /* with alpha = 0.550 */
! 210: .B_inf = 1613,
! 211: .B_l2 = 9901 * 9901
! 212: },
! 213:
! 214: /* BLISS-B-I scheme */
! 215: {
! 216: .id = BLISS_B_I,
! 217: .oid = OID_BLISS_B_I,
! 218: .strength = 128,
! 219: .q = 12289,
! 220: .q_bits = 14,
! 221: .q2_inv = 6145,
! 222: .n = 512,
! 223: .n_bits = 9,
! 224: .fft_params = &ntt_fft_12289_512,
! 225: .non_zero1 = 154,
! 226: .non_zero2 = 0,
! 227: .kappa = 23,
! 228: .nks_max = 0, /* not needed */
! 229: .p_max = 17825,
! 230: .sigma = 215,
! 231: .k_sigma = 254,
! 232: .k_sigma_bits = 8,
! 233: .c = c_bliss_i,
! 234: .c_cols = 16,
! 235: .c_rows = 21,
! 236: .z1_bits = 12,
! 237: .d = 10,
! 238: .p = 24,
! 239: .M = 17954, /* with alpha = 1.610 */
! 240: .B_inf = 2047, /* reduced from 2100 due to 12 bit z1 encoding */
! 241: .B_l2 = 12872 * 12872
! 242: },
! 243:
! 244: /* BLISS-B-III scheme */
! 245: {
! 246: .id = BLISS_B_III,
! 247: .oid = OID_BLISS_B_III,
! 248: .strength = 160,
! 249: .q = 12289,
! 250: .q_bits = 14,
! 251: .q2_inv = 6145,
! 252: .n = 512,
! 253: .n_bits = 9,
! 254: .fft_params = &ntt_fft_12289_512,
! 255: .non_zero1 = 216,
! 256: .non_zero2 = 16,
! 257: .kappa = 30,
! 258: .nks_max = 0, /* not needed */
! 259: .p_max = 42270,
! 260: .sigma = 250,
! 261: .k_sigma = 295,
! 262: .k_sigma_bits = 9,
! 263: .c = c_bliss_iii,
! 264: .c_cols = 16,
! 265: .c_rows = 21,
! 266: .z1_bits = 12,
! 267: .d = 9,
! 268: .p = 48,
! 269: .M = 42455, /* with alpha = 1.216 */
! 270: .B_inf = 1760,
! 271: .B_l2 = 10206 * 10206
! 272: },
! 273:
! 274: /* BLISS-B-IV scheme */
! 275: {
! 276: .id = BLISS_B_IV,
! 277: .oid = OID_BLISS_B_IV,
! 278: .strength = 192,
! 279: .q = 12289,
! 280: .q_bits = 14,
! 281: .q2_inv = 6145,
! 282: .n = 512,
! 283: .n_bits = 9,
! 284: .fft_params = &ntt_fft_12289_512,
! 285: .non_zero1 = 231,
! 286: .non_zero2 = 31,
! 287: .kappa = 39,
! 288: .nks_max = 0, /* not needed */
! 289: .p_max = 69576,
! 290: .sigma = 271,
! 291: .k_sigma = 320,
! 292: .k_sigma_bits = 9,
! 293: .c = c_bliss_iv,
! 294: .c_cols = 16,
! 295: .c_rows = 22,
! 296: .z1_bits = 12,
! 297: .d = 8,
! 298: .p = 96,
! 299: .M = 70034, /* with alpha = 1.027 */
! 300: .B_inf = 1613,
! 301: .B_l2 = 9901 * 9901
! 302: }
! 303:
! 304: };
! 305:
! 306: /**
! 307: * See header.
! 308: */
! 309: const bliss_param_set_t* bliss_param_set_get_by_id(bliss_param_set_id_t id)
! 310: {
! 311: int i;
! 312:
! 313: for (i = 0; i < countof(bliss_param_sets); i++)
! 314: {
! 315: if (bliss_param_sets[i].id == id)
! 316: {
! 317: return &bliss_param_sets[i];
! 318: }
! 319: }
! 320: return NULL;
! 321: }
! 322:
! 323:
! 324: /**
! 325: * See header.
! 326: */
! 327: const bliss_param_set_t* bliss_param_set_get_by_oid(int oid)
! 328: {
! 329: int i;
! 330:
! 331: for (i = 0; i < countof(bliss_param_sets); i++)
! 332: {
! 333: if (bliss_param_sets[i].oid == oid)
! 334: {
! 335: return &bliss_param_sets[i];
! 336: }
! 337: }
! 338: return NULL;
! 339: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>