-module(ssl_srp_primes).

-export([get_srp_params/1, check_srp_params/2]).

-define(PRIME_1024, <<16#EE, 16#AF, 16#0A, 16#B9, 16#AD, 16#B3, 16#8D,
		      16#D6, 16#9C, 16#33, 16#F8, 16#0A, 16#FA, 16#8F,
		      16#C5, 16#E8, 16#60, 16#72, 16#61, 16#87, 16#75,
		      16#FF, 16#3C, 16#0B, 16#9E, 16#A2, 16#31, 16#4C,
		      16#9C, 16#25, 16#65, 16#76, 16#D6, 16#74, 16#DF,
		      16#74, 16#96, 16#EA, 16#81, 16#D3, 16#38, 16#3B,
		      16#48, 16#13, 16#D6, 16#92, 16#C6, 16#E0, 16#E0,
		      16#D5, 16#D8, 16#E2, 16#50, 16#B9, 16#8B, 16#E4,
		      16#8E, 16#49, 16#5C, 16#1D, 16#60, 16#89, 16#DA,
		      16#D1, 16#5D, 16#C7, 16#D7, 16#B4, 16#61, 16#54,
		      16#D6, 16#B6, 16#CE, 16#8E, 16#F4, 16#AD, 16#69,
		      16#B1, 16#5D, 16#49, 16#82, 16#55, 16#9B, 16#29,
		      16#7B, 16#CF, 16#18, 16#85, 16#C5, 16#29, 16#F5,
		      16#66, 16#66, 16#0E, 16#57, 16#EC, 16#68, 16#ED,
		      16#BC, 16#3C, 16#05, 16#72, 16#6C, 16#C0, 16#2F,
		      16#D4, 16#CB, 16#F4, 16#97, 16#6E, 16#AA, 16#9A,
		      16#FD, 16#51, 16#38, 16#FE, 16#83, 16#76, 16#43,
		      16#5B, 16#9F, 16#C6, 16#1D, 16#2F, 16#C0, 16#EB,
		      16#06, 16#E3>>).
-define(GENERATOR_1024, <<2>>).


-define(PRIME_1536, <<16#9D, 16#EF, 16#3C, 16#AF, 16#B9, 16#39, 16#27,
		      16#7A, 16#B1, 16#F1, 16#2A, 16#86, 16#17, 16#A4,
		      16#7B, 16#BB, 16#DB, 16#A5, 16#1D, 16#F4, 16#99,
		      16#AC, 16#4C, 16#80, 16#BE, 16#EE, 16#A9, 16#61,
		      16#4B, 16#19, 16#CC, 16#4D, 16#5F, 16#4F, 16#5F,
		      16#55, 16#6E, 16#27, 16#CB, 16#DE, 16#51, 16#C6,
		      16#A9, 16#4B, 16#E4, 16#60, 16#7A, 16#29, 16#15,
		      16#58, 16#90, 16#3B, 16#A0, 16#D0, 16#F8, 16#43,
		      16#80, 16#B6, 16#55, 16#BB, 16#9A, 16#22, 16#E8,
		      16#DC, 16#DF, 16#02, 16#8A, 16#7C, 16#EC, 16#67,
		      16#F0, 16#D0, 16#81, 16#34, 16#B1, 16#C8, 16#B9,
		      16#79, 16#89, 16#14, 16#9B, 16#60, 16#9E, 16#0B,
		      16#E3, 16#BA, 16#B6, 16#3D, 16#47, 16#54, 16#83,
		      16#81, 16#DB, 16#C5, 16#B1, 16#FC, 16#76, 16#4E,
		      16#3F, 16#4B, 16#53, 16#DD, 16#9D, 16#A1, 16#15,
		      16#8B, 16#FD, 16#3E, 16#2B, 16#9C, 16#8C, 16#F5,
		      16#6E, 16#DF, 16#01, 16#95, 16#39, 16#34, 16#96,
		      16#27, 16#DB, 16#2F, 16#D5, 16#3D, 16#24, 16#B7,
		      16#C4, 16#86, 16#65, 16#77, 16#2E, 16#43, 16#7D,
		      16#6C, 16#7F, 16#8C, 16#E4, 16#42, 16#73, 16#4A,
		      16#F7, 16#CC, 16#B7, 16#AE, 16#83, 16#7C, 16#26,
		      16#4A, 16#E3, 16#A9, 16#BE, 16#B8, 16#7F, 16#8A,
		      16#2F, 16#E9, 16#B8, 16#B5, 16#29, 16#2E, 16#5A,
		      16#02, 16#1F, 16#FF, 16#5E, 16#91, 16#47, 16#9E,
		      16#8C, 16#E7, 16#A2, 16#8C, 16#24, 16#42, 16#C6,
		      16#F3, 16#15, 16#18, 16#0F, 16#93, 16#49, 16#9A,
		      16#23, 16#4D, 16#CF, 16#76, 16#E3, 16#FE, 16#D1,
		      16#35, 16#F9, 16#BB>>).
-define(GENERATOR_1536, <<2>>).

-define(PRIME_2048, <<16#AC, 16#6B, 16#DB, 16#41, 16#32, 16#4A, 16#9A,
		      16#9B, 16#F1, 16#66, 16#DE, 16#5E, 16#13, 16#89,
		      16#58, 16#2F, 16#AF, 16#72, 16#B6, 16#65, 16#19,
		      16#87, 16#EE, 16#07, 16#FC, 16#31, 16#92, 16#94,
		      16#3D, 16#B5, 16#60, 16#50, 16#A3, 16#73, 16#29,
		      16#CB, 16#B4, 16#A0, 16#99, 16#ED, 16#81, 16#93,
		      16#E0, 16#75, 16#77, 16#67, 16#A1, 16#3D, 16#D5,
		      16#23, 16#12, 16#AB, 16#4B, 16#03, 16#31, 16#0D,
		      16#CD, 16#7F, 16#48, 16#A9, 16#DA, 16#04, 16#FD,
		      16#50, 16#E8, 16#08, 16#39, 16#69, 16#ED, 16#B7,
		      16#67, 16#B0, 16#CF, 16#60, 16#95, 16#17, 16#9A,
		      16#16, 16#3A, 16#B3, 16#66, 16#1A, 16#05, 16#FB,
		      16#D5, 16#FA, 16#AA, 16#E8, 16#29, 16#18, 16#A9,
		      16#96, 16#2F, 16#0B, 16#93, 16#B8, 16#55, 16#F9,
		      16#79, 16#93, 16#EC, 16#97, 16#5E, 16#EA, 16#A8,
		      16#0D, 16#74, 16#0A, 16#DB, 16#F4, 16#FF, 16#74,
		      16#73, 16#59, 16#D0, 16#41, 16#D5, 16#C3, 16#3E,
		      16#A7, 16#1D, 16#28, 16#1E, 16#44, 16#6B, 16#14,
		      16#77, 16#3B, 16#CA, 16#97, 16#B4, 16#3A, 16#23,
		      16#FB, 16#80, 16#16, 16#76, 16#BD, 16#20, 16#7A,
		      16#43, 16#6C, 16#64, 16#81, 16#F1, 16#D2, 16#B9,
		      16#07, 16#87, 16#17, 16#46, 16#1A, 16#5B, 16#9D,
		      16#32, 16#E6, 16#88, 16#F8, 16#77, 16#48, 16#54,
		      16#45, 16#23, 16#B5, 16#24, 16#B0, 16#D5, 16#7D,
		      16#5E, 16#A7, 16#7A, 16#27, 16#75, 16#D2, 16#EC,
		      16#FA, 16#03, 16#2C, 16#FB, 16#DB, 16#F5, 16#2F,
		      16#B3, 16#78, 16#61, 16#60, 16#27, 16#90, 16#04,
		      16#E5, 16#7A, 16#E6, 16#AF, 16#87, 16#4E, 16#73,
		      16#03, 16#CE, 16#53, 16#29, 16#9C, 16#CC, 16#04,
		      16#1C, 16#7B, 16#C3, 16#08, 16#D8, 16#2A, 16#56,
		      16#98, 16#F3, 16#A8, 16#D0, 16#C3, 16#82, 16#71,
		      16#AE, 16#35, 16#F8, 16#E9, 16#DB, 16#FB, 16#B6,
		      16#94, 16#B5, 16#C8, 16#03, 16#D8, 16#9F, 16#7A,
		      16#E4, 16#35, 16#DE, 16#23, 16#6D, 16#52, 16#5F,
		      16#54, 16#75, 16#9B, 16#65, 16#E3, 16#72, 16#FC,
		      16#D6, 16#8E, 16#F2, 16#0F, 16#A7, 16#11, 16#1F,
		      16#9E, 16#4A, 16#FF, 16#73>>).
-define(GENERATOR_2048, <<2>>).

-define(PRIME_3072, <<16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#C9, 16#0F, 16#DA, 16#A2, 16#21, 16#68,
		      16#C2, 16#34, 16#C4, 16#C6, 16#62, 16#8B, 16#80,
		      16#DC, 16#1C, 16#D1, 16#29, 16#02, 16#4E, 16#08,
		      16#8A, 16#67, 16#CC, 16#74, 16#02, 16#0B, 16#BE,
		      16#A6, 16#3B, 16#13, 16#9B, 16#22, 16#51, 16#4A,
		      16#08, 16#79, 16#8E, 16#34, 16#04, 16#DD, 16#EF,
		      16#95, 16#19, 16#B3, 16#CD, 16#3A, 16#43, 16#1B,
		      16#30, 16#2B, 16#0A, 16#6D, 16#F2, 16#5F, 16#14,
		      16#37, 16#4F, 16#E1, 16#35, 16#6D, 16#6D, 16#51,
		      16#C2, 16#45, 16#E4, 16#85, 16#B5, 16#76, 16#62,
		      16#5E, 16#7E, 16#C6, 16#F4, 16#4C, 16#42, 16#E9,
		      16#A6, 16#37, 16#ED, 16#6B, 16#0B, 16#FF, 16#5C,
		      16#B6, 16#F4, 16#06, 16#B7, 16#ED, 16#EE, 16#38,
		      16#6B, 16#FB, 16#5A, 16#89, 16#9F, 16#A5, 16#AE,
		      16#9F, 16#24, 16#11, 16#7C, 16#4B, 16#1F, 16#E6,
		      16#49, 16#28, 16#66, 16#51, 16#EC, 16#E4, 16#5B,
		      16#3D, 16#C2, 16#00, 16#7C, 16#B8, 16#A1, 16#63,
		      16#BF, 16#05, 16#98, 16#DA, 16#48, 16#36, 16#1C,
		      16#55, 16#D3, 16#9A, 16#69, 16#16, 16#3F, 16#A8,
		      16#FD, 16#24, 16#CF, 16#5F, 16#83, 16#65, 16#5D,
		      16#23, 16#DC, 16#A3, 16#AD, 16#96, 16#1C, 16#62,
		      16#F3, 16#56, 16#20, 16#85, 16#52, 16#BB, 16#9E,
		      16#D5, 16#29, 16#07, 16#70, 16#96, 16#96, 16#6D,
		      16#67, 16#0C, 16#35, 16#4E, 16#4A, 16#BC, 16#98,
		      16#04, 16#F1, 16#74, 16#6C, 16#08, 16#CA, 16#18,
		      16#21, 16#7C, 16#32, 16#90, 16#5E, 16#46, 16#2E,
		      16#36, 16#CE, 16#3B, 16#E3, 16#9E, 16#77, 16#2C,
		      16#18, 16#0E, 16#86, 16#03, 16#9B, 16#27, 16#83,
		      16#A2, 16#EC, 16#07, 16#A2, 16#8F, 16#B5, 16#C5,
		      16#5D, 16#F0, 16#6F, 16#4C, 16#52, 16#C9, 16#DE,
		      16#2B, 16#CB, 16#F6, 16#95, 16#58, 16#17, 16#18,
		      16#39, 16#95, 16#49, 16#7C, 16#EA, 16#95, 16#6A,
		      16#E5, 16#15, 16#D2, 16#26, 16#18, 16#98, 16#FA,
		      16#05, 16#10, 16#15, 16#72, 16#8E, 16#5A, 16#8A,
		      16#AA, 16#C4, 16#2D, 16#AD, 16#33, 16#17, 16#0D,
		      16#04, 16#50, 16#7A, 16#33, 16#A8, 16#55, 16#21,
		      16#AB, 16#DF, 16#1C, 16#BA, 16#64, 16#EC, 16#FB,
		      16#85, 16#04, 16#58, 16#DB, 16#EF, 16#0A, 16#8A,
		      16#EA, 16#71, 16#57, 16#5D, 16#06, 16#0C, 16#7D,
		      16#B3, 16#97, 16#0F, 16#85, 16#A6, 16#E1, 16#E4,
		      16#C7, 16#AB, 16#F5, 16#AE, 16#8C, 16#DB, 16#09,
		      16#33, 16#D7, 16#1E, 16#8C, 16#94, 16#E0, 16#4A,
		      16#25, 16#61, 16#9D, 16#CE, 16#E3, 16#D2, 16#26,
		      16#1A, 16#D2, 16#EE, 16#6B, 16#F1, 16#2F, 16#FA,
		      16#06, 16#D9, 16#8A, 16#08, 16#64, 16#D8, 16#76,
		      16#02, 16#73, 16#3E, 16#C8, 16#6A, 16#64, 16#52,
		      16#1F, 16#2B, 16#18, 16#17, 16#7B, 16#20, 16#0C,
		      16#BB, 16#E1, 16#17, 16#57, 16#7A, 16#61, 16#5D,
		      16#6C, 16#77, 16#09, 16#88, 16#C0, 16#BA, 16#D9,
		      16#46, 16#E2, 16#08, 16#E2, 16#4F, 16#A0, 16#74,
		      16#E5, 16#AB, 16#31, 16#43, 16#DB, 16#5B, 16#FC,
		      16#E0, 16#FD, 16#10, 16#8E, 16#4B, 16#82, 16#D1,
		      16#20, 16#A9, 16#3A, 16#D2, 16#CA, 16#FF, 16#FF,
		      16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF>>).
-define(GENERATOR_3072, <<5>>).

-define(PRIME_4096, <<16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#C9, 16#0F, 16#DA, 16#A2, 16#21, 16#68,
		      16#C2, 16#34, 16#C4, 16#C6, 16#62, 16#8B, 16#80,
		      16#DC, 16#1C, 16#D1, 16#29, 16#02, 16#4E, 16#08,
		      16#8A, 16#67, 16#CC, 16#74, 16#02, 16#0B, 16#BE,
		      16#A6, 16#3B, 16#13, 16#9B, 16#22, 16#51, 16#4A,
		      16#08, 16#79, 16#8E, 16#34, 16#04, 16#DD, 16#EF,
		      16#95, 16#19, 16#B3, 16#CD, 16#3A, 16#43, 16#1B,
		      16#30, 16#2B, 16#0A, 16#6D, 16#F2, 16#5F, 16#14,
		      16#37, 16#4F, 16#E1, 16#35, 16#6D, 16#6D, 16#51,
		      16#C2, 16#45, 16#E4, 16#85, 16#B5, 16#76, 16#62,
		      16#5E, 16#7E, 16#C6, 16#F4, 16#4C, 16#42, 16#E9,
		      16#A6, 16#37, 16#ED, 16#6B, 16#0B, 16#FF, 16#5C,
		      16#B6, 16#F4, 16#06, 16#B7, 16#ED, 16#EE, 16#38,
		      16#6B, 16#FB, 16#5A, 16#89, 16#9F, 16#A5, 16#AE,
		      16#9F, 16#24, 16#11, 16#7C, 16#4B, 16#1F, 16#E6,
		      16#49, 16#28, 16#66, 16#51, 16#EC, 16#E4, 16#5B,
		      16#3D, 16#C2, 16#00, 16#7C, 16#B8, 16#A1, 16#63,
		      16#BF, 16#05, 16#98, 16#DA, 16#48, 16#36, 16#1C,
		      16#55, 16#D3, 16#9A, 16#69, 16#16, 16#3F, 16#A8,
		      16#FD, 16#24, 16#CF, 16#5F, 16#83, 16#65, 16#5D,
		      16#23, 16#DC, 16#A3, 16#AD, 16#96, 16#1C, 16#62,
		      16#F3, 16#56, 16#20, 16#85, 16#52, 16#BB, 16#9E,
		      16#D5, 16#29, 16#07, 16#70, 16#96, 16#96, 16#6D,
		      16#67, 16#0C, 16#35, 16#4E, 16#4A, 16#BC, 16#98,
		      16#04, 16#F1, 16#74, 16#6C, 16#08, 16#CA, 16#18,
		      16#21, 16#7C, 16#32, 16#90, 16#5E, 16#46, 16#2E,
		      16#36, 16#CE, 16#3B, 16#E3, 16#9E, 16#77, 16#2C,
		      16#18, 16#0E, 16#86, 16#03, 16#9B, 16#27, 16#83,
		      16#A2, 16#EC, 16#07, 16#A2, 16#8F, 16#B5, 16#C5,
		      16#5D, 16#F0, 16#6F, 16#4C, 16#52, 16#C9, 16#DE,
		      16#2B, 16#CB, 16#F6, 16#95, 16#58, 16#17, 16#18,
		      16#39, 16#95, 16#49, 16#7C, 16#EA, 16#95, 16#6A,
		      16#E5, 16#15, 16#D2, 16#26, 16#18, 16#98, 16#FA,
		      16#05, 16#10, 16#15, 16#72, 16#8E, 16#5A, 16#8A,
		      16#AA, 16#C4, 16#2D, 16#AD, 16#33, 16#17, 16#0D,
		      16#04, 16#50, 16#7A, 16#33, 16#A8, 16#55, 16#21,
		      16#AB, 16#DF, 16#1C, 16#BA, 16#64, 16#EC, 16#FB,
		      16#85, 16#04, 16#58, 16#DB, 16#EF, 16#0A, 16#8A,
		      16#EA, 16#71, 16#57, 16#5D, 16#06, 16#0C, 16#7D,
		      16#B3, 16#97, 16#0F, 16#85, 16#A6, 16#E1, 16#E4,
		      16#C7, 16#AB, 16#F5, 16#AE, 16#8C, 16#DB, 16#09,
		      16#33, 16#D7, 16#1E, 16#8C, 16#94, 16#E0, 16#4A,
		      16#25, 16#61, 16#9D, 16#CE, 16#E3, 16#D2, 16#26,
		      16#1A, 16#D2, 16#EE, 16#6B, 16#F1, 16#2F, 16#FA,
		      16#06, 16#D9, 16#8A, 16#08, 16#64, 16#D8, 16#76,
		      16#02, 16#73, 16#3E, 16#C8, 16#6A, 16#64, 16#52,
		      16#1F, 16#2B, 16#18, 16#17, 16#7B, 16#20, 16#0C,
		      16#BB, 16#E1, 16#17, 16#57, 16#7A, 16#61, 16#5D,
		      16#6C, 16#77, 16#09, 16#88, 16#C0, 16#BA, 16#D9,
		      16#46, 16#E2, 16#08, 16#E2, 16#4F, 16#A0, 16#74,
		      16#E5, 16#AB, 16#31, 16#43, 16#DB, 16#5B, 16#FC,
		      16#E0, 16#FD, 16#10, 16#8E, 16#4B, 16#82, 16#D1,
		      16#20, 16#A9, 16#21, 16#08, 16#01, 16#1A, 16#72,
		      16#3C, 16#12, 16#A7, 16#87, 16#E6, 16#D7, 16#88,
		      16#71, 16#9A, 16#10, 16#BD, 16#BA, 16#5B, 16#26,
		      16#99, 16#C3, 16#27, 16#18, 16#6A, 16#F4, 16#E2,
		      16#3C, 16#1A, 16#94, 16#68, 16#34, 16#B6, 16#15,
		      16#0B, 16#DA, 16#25, 16#83, 16#E9, 16#CA, 16#2A,
		      16#D4, 16#4C, 16#E8, 16#DB, 16#BB, 16#C2, 16#DB,
		      16#04, 16#DE, 16#8E, 16#F9, 16#2E, 16#8E, 16#FC,
		      16#14, 16#1F, 16#BE, 16#CA, 16#A6, 16#28, 16#7C,
		      16#59, 16#47, 16#4E, 16#6B, 16#C0, 16#5D, 16#99,
		      16#B2, 16#96, 16#4F, 16#A0, 16#90, 16#C3, 16#A2,
		      16#23, 16#3B, 16#A1, 16#86, 16#51, 16#5B, 16#E7,
		      16#ED, 16#1F, 16#61, 16#29, 16#70, 16#CE, 16#E2,
		      16#D7, 16#AF, 16#B8, 16#1B, 16#DD, 16#76, 16#21,
		      16#70, 16#48, 16#1C, 16#D0, 16#06, 16#91, 16#27,
		      16#D5, 16#B0, 16#5A, 16#A9, 16#93, 16#B4, 16#EA,
		      16#98, 16#8D, 16#8F, 16#DD, 16#C1, 16#86, 16#FF,
		      16#B7, 16#DC, 16#90, 16#A6, 16#C0, 16#8F, 16#4D,
		      16#F4, 16#35, 16#C9, 16#34, 16#06, 16#31, 16#99,
		      16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF>>).
-define(GENERATOR_4096, <<5>>).

-define(PRIME_6144, <<16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#C9, 16#0F, 16#DA, 16#A2, 16#21, 16#68,
		      16#C2, 16#34, 16#C4, 16#C6, 16#62, 16#8B, 16#80,
		      16#DC, 16#1C, 16#D1, 16#29, 16#02, 16#4E, 16#08,
		      16#8A, 16#67, 16#CC, 16#74, 16#02, 16#0B, 16#BE,
		      16#A6, 16#3B, 16#13, 16#9B, 16#22, 16#51, 16#4A,
		      16#08, 16#79, 16#8E, 16#34, 16#04, 16#DD, 16#EF,
		      16#95, 16#19, 16#B3, 16#CD, 16#3A, 16#43, 16#1B,
		      16#30, 16#2B, 16#0A, 16#6D, 16#F2, 16#5F, 16#14,
		      16#37, 16#4F, 16#E1, 16#35, 16#6D, 16#6D, 16#51,
		      16#C2, 16#45, 16#E4, 16#85, 16#B5, 16#76, 16#62,
		      16#5E, 16#7E, 16#C6, 16#F4, 16#4C, 16#42, 16#E9,
		      16#A6, 16#37, 16#ED, 16#6B, 16#0B, 16#FF, 16#5C,
		      16#B6, 16#F4, 16#06, 16#B7, 16#ED, 16#EE, 16#38,
		      16#6B, 16#FB, 16#5A, 16#89, 16#9F, 16#A5, 16#AE,
		      16#9F, 16#24, 16#11, 16#7C, 16#4B, 16#1F, 16#E6,
		      16#49, 16#28, 16#66, 16#51, 16#EC, 16#E4, 16#5B,
		      16#3D, 16#C2, 16#00, 16#7C, 16#B8, 16#A1, 16#63,
		      16#BF, 16#05, 16#98, 16#DA, 16#48, 16#36, 16#1C,
		      16#55, 16#D3, 16#9A, 16#69, 16#16, 16#3F, 16#A8,
		      16#FD, 16#24, 16#CF, 16#5F, 16#83, 16#65, 16#5D,
		      16#23, 16#DC, 16#A3, 16#AD, 16#96, 16#1C, 16#62,
		      16#F3, 16#56, 16#20, 16#85, 16#52, 16#BB, 16#9E,
		      16#D5, 16#29, 16#07, 16#70, 16#96, 16#96, 16#6D,
		      16#67, 16#0C, 16#35, 16#4E, 16#4A, 16#BC, 16#98,
		      16#04, 16#F1, 16#74, 16#6C, 16#08, 16#CA, 16#18,
		      16#21, 16#7C, 16#32, 16#90, 16#5E, 16#46, 16#2E,
		      16#36, 16#CE, 16#3B, 16#E3, 16#9E, 16#77, 16#2C,
		      16#18, 16#0E, 16#86, 16#03, 16#9B, 16#27, 16#83,
		      16#A2, 16#EC, 16#07, 16#A2, 16#8F, 16#B5, 16#C5,
		      16#5D, 16#F0, 16#6F, 16#4C, 16#52, 16#C9, 16#DE,
		      16#2B, 16#CB, 16#F6, 16#95, 16#58, 16#17, 16#18,
		      16#39, 16#95, 16#49, 16#7C, 16#EA, 16#95, 16#6A,
		      16#E5, 16#15, 16#D2, 16#26, 16#18, 16#98, 16#FA,
		      16#05, 16#10, 16#15, 16#72, 16#8E, 16#5A, 16#8A,
		      16#AA, 16#C4, 16#2D, 16#AD, 16#33, 16#17, 16#0D,
		      16#04, 16#50, 16#7A, 16#33, 16#A8, 16#55, 16#21,
		      16#AB, 16#DF, 16#1C, 16#BA, 16#64, 16#EC, 16#FB,
		      16#85, 16#04, 16#58, 16#DB, 16#EF, 16#0A, 16#8A,
		      16#EA, 16#71, 16#57, 16#5D, 16#06, 16#0C, 16#7D,
		      16#B3, 16#97, 16#0F, 16#85, 16#A6, 16#E1, 16#E4,
		      16#C7, 16#AB, 16#F5, 16#AE, 16#8C, 16#DB, 16#09,
		      16#33, 16#D7, 16#1E, 16#8C, 16#94, 16#E0, 16#4A,
		      16#25, 16#61, 16#9D, 16#CE, 16#E3, 16#D2, 16#26,
		      16#1A, 16#D2, 16#EE, 16#6B, 16#F1, 16#2F, 16#FA,
		      16#06, 16#D9, 16#8A, 16#08, 16#64, 16#D8, 16#76,
		      16#02, 16#73, 16#3E, 16#C8, 16#6A, 16#64, 16#52,
		      16#1F, 16#2B, 16#18, 16#17, 16#7B, 16#20, 16#0C,
		      16#BB, 16#E1, 16#17, 16#57, 16#7A, 16#61, 16#5D,
		      16#6C, 16#77, 16#09, 16#88, 16#C0, 16#BA, 16#D9,
		      16#46, 16#E2, 16#08, 16#E2, 16#4F, 16#A0, 16#74,
		      16#E5, 16#AB, 16#31, 16#43, 16#DB, 16#5B, 16#FC,
		      16#E0, 16#FD, 16#10, 16#8E, 16#4B, 16#82, 16#D1,
		      16#20, 16#A9, 16#21, 16#08, 16#01, 16#1A, 16#72,
		      16#3C, 16#12, 16#A7, 16#87, 16#E6, 16#D7, 16#88,
		      16#71, 16#9A, 16#10, 16#BD, 16#BA, 16#5B, 16#26,
		      16#99, 16#C3, 16#27, 16#18, 16#6A, 16#F4, 16#E2,
		      16#3C, 16#1A, 16#94, 16#68, 16#34, 16#B6, 16#15,
		      16#0B, 16#DA, 16#25, 16#83, 16#E9, 16#CA, 16#2A,
		      16#D4, 16#4C, 16#E8, 16#DB, 16#BB, 16#C2, 16#DB,
		      16#04, 16#DE, 16#8E, 16#F9, 16#2E, 16#8E, 16#FC,
		      16#14, 16#1F, 16#BE, 16#CA, 16#A6, 16#28, 16#7C,
		      16#59, 16#47, 16#4E, 16#6B, 16#C0, 16#5D, 16#99,
		      16#B2, 16#96, 16#4F, 16#A0, 16#90, 16#C3, 16#A2,
		      16#23, 16#3B, 16#A1, 16#86, 16#51, 16#5B, 16#E7,
		      16#ED, 16#1F, 16#61, 16#29, 16#70, 16#CE, 16#E2,
		      16#D7, 16#AF, 16#B8, 16#1B, 16#DD, 16#76, 16#21,
		      16#70, 16#48, 16#1C, 16#D0, 16#06, 16#91, 16#27,
		      16#D5, 16#B0, 16#5A, 16#A9, 16#93, 16#B4, 16#EA,
		      16#98, 16#8D, 16#8F, 16#DD, 16#C1, 16#86, 16#FF,
		      16#B7, 16#DC, 16#90, 16#A6, 16#C0, 16#8F, 16#4D,
		      16#F4, 16#35, 16#C9, 16#34, 16#02, 16#84, 16#92,
		      16#36, 16#C3, 16#FA, 16#B4, 16#D2, 16#7C, 16#70,
		      16#26, 16#C1, 16#D4, 16#DC, 16#B2, 16#60, 16#26,
		      16#46, 16#DE, 16#C9, 16#75, 16#1E, 16#76, 16#3D,
		      16#BA, 16#37, 16#BD, 16#F8, 16#FF, 16#94, 16#06,
		      16#AD, 16#9E, 16#53, 16#0E, 16#E5, 16#DB, 16#38,
		      16#2F, 16#41, 16#30, 16#01, 16#AE, 16#B0, 16#6A,
		      16#53, 16#ED, 16#90, 16#27, 16#D8, 16#31, 16#17,
		      16#97, 16#27, 16#B0, 16#86, 16#5A, 16#89, 16#18,
		      16#DA, 16#3E, 16#DB, 16#EB, 16#CF, 16#9B, 16#14,
		      16#ED, 16#44, 16#CE, 16#6C, 16#BA, 16#CE, 16#D4,
		      16#BB, 16#1B, 16#DB, 16#7F, 16#14, 16#47, 16#E6,
		      16#CC, 16#25, 16#4B, 16#33, 16#20, 16#51, 16#51,
		      16#2B, 16#D7, 16#AF, 16#42, 16#6F, 16#B8, 16#F4,
		      16#01, 16#37, 16#8C, 16#D2, 16#BF, 16#59, 16#83,
		      16#CA, 16#01, 16#C6, 16#4B, 16#92, 16#EC, 16#F0,
		      16#32, 16#EA, 16#15, 16#D1, 16#72, 16#1D, 16#03,
		      16#F4, 16#82, 16#D7, 16#CE, 16#6E, 16#74, 16#FE,
		      16#F6, 16#D5, 16#5E, 16#70, 16#2F, 16#46, 16#98,
		      16#0C, 16#82, 16#B5, 16#A8, 16#40, 16#31, 16#90,
		      16#0B, 16#1C, 16#9E, 16#59, 16#E7, 16#C9, 16#7F,
		      16#BE, 16#C7, 16#E8, 16#F3, 16#23, 16#A9, 16#7A,
		      16#7E, 16#36, 16#CC, 16#88, 16#BE, 16#0F, 16#1D,
		      16#45, 16#B7, 16#FF, 16#58, 16#5A, 16#C5, 16#4B,
		      16#D4, 16#07, 16#B2, 16#2B, 16#41, 16#54, 16#AA,
		      16#CC, 16#8F, 16#6D, 16#7E, 16#BF, 16#48, 16#E1,
		      16#D8, 16#14, 16#CC, 16#5E, 16#D2, 16#0F, 16#80,
		      16#37, 16#E0, 16#A7, 16#97, 16#15, 16#EE, 16#F2,
		      16#9B, 16#E3, 16#28, 16#06, 16#A1, 16#D5, 16#8B,
		      16#B7, 16#C5, 16#DA, 16#76, 16#F5, 16#50, 16#AA,
		      16#3D, 16#8A, 16#1F, 16#BF, 16#F0, 16#EB, 16#19,
		      16#CC, 16#B1, 16#A3, 16#13, 16#D5, 16#5C, 16#DA,
		      16#56, 16#C9, 16#EC, 16#2E, 16#F2, 16#96, 16#32,
		      16#38, 16#7F, 16#E8, 16#D7, 16#6E, 16#3C, 16#04,
		      16#68, 16#04, 16#3E, 16#8F, 16#66, 16#3F, 16#48,
		      16#60, 16#EE, 16#12, 16#BF, 16#2D, 16#5B, 16#0B,
		      16#74, 16#74, 16#D6, 16#E6, 16#94, 16#F9, 16#1E,
		      16#6D, 16#CC, 16#40, 16#24, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#FF, 16#FF, 16#FF, 16#FF>>).
-define(GENERATOR_6144, <<5>>).

-define(PRIME_8192, <<16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#C9, 16#0F, 16#DA, 16#A2, 16#21, 16#68,
		      16#C2, 16#34, 16#C4, 16#C6, 16#62, 16#8B, 16#80,
		      16#DC, 16#1C, 16#D1, 16#29, 16#02, 16#4E, 16#08,
		      16#8A, 16#67, 16#CC, 16#74, 16#02, 16#0B, 16#BE,
		      16#A6, 16#3B, 16#13, 16#9B, 16#22, 16#51, 16#4A,
		      16#08, 16#79, 16#8E, 16#34, 16#04, 16#DD, 16#EF,
		      16#95, 16#19, 16#B3, 16#CD, 16#3A, 16#43, 16#1B,
		      16#30, 16#2B, 16#0A, 16#6D, 16#F2, 16#5F, 16#14,
		      16#37, 16#4F, 16#E1, 16#35, 16#6D, 16#6D, 16#51,
		      16#C2, 16#45, 16#E4, 16#85, 16#B5, 16#76, 16#62,
		      16#5E, 16#7E, 16#C6, 16#F4, 16#4C, 16#42, 16#E9,
		      16#A6, 16#37, 16#ED, 16#6B, 16#0B, 16#FF, 16#5C,
		      16#B6, 16#F4, 16#06, 16#B7, 16#ED, 16#EE, 16#38,
		      16#6B, 16#FB, 16#5A, 16#89, 16#9F, 16#A5, 16#AE,
		      16#9F, 16#24, 16#11, 16#7C, 16#4B, 16#1F, 16#E6,
		      16#49, 16#28, 16#66, 16#51, 16#EC, 16#E4, 16#5B,
		      16#3D, 16#C2, 16#00, 16#7C, 16#B8, 16#A1, 16#63,
		      16#BF, 16#05, 16#98, 16#DA, 16#48, 16#36, 16#1C,
		      16#55, 16#D3, 16#9A, 16#69, 16#16, 16#3F, 16#A8,
		      16#FD, 16#24, 16#CF, 16#5F, 16#83, 16#65, 16#5D,
		      16#23, 16#DC, 16#A3, 16#AD, 16#96, 16#1C, 16#62,
		      16#F3, 16#56, 16#20, 16#85, 16#52, 16#BB, 16#9E,
		      16#D5, 16#29, 16#07, 16#70, 16#96, 16#96, 16#6D,
		      16#67, 16#0C, 16#35, 16#4E, 16#4A, 16#BC, 16#98,
		      16#04, 16#F1, 16#74, 16#6C, 16#08, 16#CA, 16#18,
		      16#21, 16#7C, 16#32, 16#90, 16#5E, 16#46, 16#2E,
		      16#36, 16#CE, 16#3B, 16#E3, 16#9E, 16#77, 16#2C,
		      16#18, 16#0E, 16#86, 16#03, 16#9B, 16#27, 16#83,
		      16#A2, 16#EC, 16#07, 16#A2, 16#8F, 16#B5, 16#C5,
		      16#5D, 16#F0, 16#6F, 16#4C, 16#52, 16#C9, 16#DE,
		      16#2B, 16#CB, 16#F6, 16#95, 16#58, 16#17, 16#18,
		      16#39, 16#95, 16#49, 16#7C, 16#EA, 16#95, 16#6A,
		      16#E5, 16#15, 16#D2, 16#26, 16#18, 16#98, 16#FA,
		      16#05, 16#10, 16#15, 16#72, 16#8E, 16#5A, 16#8A,
		      16#AA, 16#C4, 16#2D, 16#AD, 16#33, 16#17, 16#0D,
		      16#04, 16#50, 16#7A, 16#33, 16#A8, 16#55, 16#21,
		      16#AB, 16#DF, 16#1C, 16#BA, 16#64, 16#EC, 16#FB,
		      16#85, 16#04, 16#58, 16#DB, 16#EF, 16#0A, 16#8A,
		      16#EA, 16#71, 16#57, 16#5D, 16#06, 16#0C, 16#7D,
		      16#B3, 16#97, 16#0F, 16#85, 16#A6, 16#E1, 16#E4,
		      16#C7, 16#AB, 16#F5, 16#AE, 16#8C, 16#DB, 16#09,
		      16#33, 16#D7, 16#1E, 16#8C, 16#94, 16#E0, 16#4A,
		      16#25, 16#61, 16#9D, 16#CE, 16#E3, 16#D2, 16#26,
		      16#1A, 16#D2, 16#EE, 16#6B, 16#F1, 16#2F, 16#FA,
		      16#06, 16#D9, 16#8A, 16#08, 16#64, 16#D8, 16#76,
		      16#02, 16#73, 16#3E, 16#C8, 16#6A, 16#64, 16#52,
		      16#1F, 16#2B, 16#18, 16#17, 16#7B, 16#20, 16#0C,
		      16#BB, 16#E1, 16#17, 16#57, 16#7A, 16#61, 16#5D,
		      16#6C, 16#77, 16#09, 16#88, 16#C0, 16#BA, 16#D9,
		      16#46, 16#E2, 16#08, 16#E2, 16#4F, 16#A0, 16#74,
		      16#E5, 16#AB, 16#31, 16#43, 16#DB, 16#5B, 16#FC,
		      16#E0, 16#FD, 16#10, 16#8E, 16#4B, 16#82, 16#D1,
		      16#20, 16#A9, 16#21, 16#08, 16#01, 16#1A, 16#72,
		      16#3C, 16#12, 16#A7, 16#87, 16#E6, 16#D7, 16#88,
		      16#71, 16#9A, 16#10, 16#BD, 16#BA, 16#5B, 16#26,
		      16#99, 16#C3, 16#27, 16#18, 16#6A, 16#F4, 16#E2,
		      16#3C, 16#1A, 16#94, 16#68, 16#34, 16#B6, 16#15,
		      16#0B, 16#DA, 16#25, 16#83, 16#E9, 16#CA, 16#2A,
		      16#D4, 16#4C, 16#E8, 16#DB, 16#BB, 16#C2, 16#DB,
		      16#04, 16#DE, 16#8E, 16#F9, 16#2E, 16#8E, 16#FC,
		      16#14, 16#1F, 16#BE, 16#CA, 16#A6, 16#28, 16#7C,
		      16#59, 16#47, 16#4E, 16#6B, 16#C0, 16#5D, 16#99,
		      16#B2, 16#96, 16#4F, 16#A0, 16#90, 16#C3, 16#A2,
		      16#23, 16#3B, 16#A1, 16#86, 16#51, 16#5B, 16#E7,
		      16#ED, 16#1F, 16#61, 16#29, 16#70, 16#CE, 16#E2,
		      16#D7, 16#AF, 16#B8, 16#1B, 16#DD, 16#76, 16#21,
		      16#70, 16#48, 16#1C, 16#D0, 16#06, 16#91, 16#27,
		      16#D5, 16#B0, 16#5A, 16#A9, 16#93, 16#B4, 16#EA,
		      16#98, 16#8D, 16#8F, 16#DD, 16#C1, 16#86, 16#FF,
		      16#B7, 16#DC, 16#90, 16#A6, 16#C0, 16#8F, 16#4D,
		      16#F4, 16#35, 16#C9, 16#34, 16#02, 16#84, 16#92,
		      16#36, 16#C3, 16#FA, 16#B4, 16#D2, 16#7C, 16#70,
		      16#26, 16#C1, 16#D4, 16#DC, 16#B2, 16#60, 16#26,
		      16#46, 16#DE, 16#C9, 16#75, 16#1E, 16#76, 16#3D,
		      16#BA, 16#37, 16#BD, 16#F8, 16#FF, 16#94, 16#06,
		      16#AD, 16#9E, 16#53, 16#0E, 16#E5, 16#DB, 16#38,
		      16#2F, 16#41, 16#30, 16#01, 16#AE, 16#B0, 16#6A,
		      16#53, 16#ED, 16#90, 16#27, 16#D8, 16#31, 16#17,
		      16#97, 16#27, 16#B0, 16#86, 16#5A, 16#89, 16#18,
		      16#DA, 16#3E, 16#DB, 16#EB, 16#CF, 16#9B, 16#14,
		      16#ED, 16#44, 16#CE, 16#6C, 16#BA, 16#CE, 16#D4,
		      16#BB, 16#1B, 16#DB, 16#7F, 16#14, 16#47, 16#E6,
		      16#CC, 16#25, 16#4B, 16#33, 16#20, 16#51, 16#51,
		      16#2B, 16#D7, 16#AF, 16#42, 16#6F, 16#B8, 16#F4,
		      16#01, 16#37, 16#8C, 16#D2, 16#BF, 16#59, 16#83,
		      16#CA, 16#01, 16#C6, 16#4B, 16#92, 16#EC, 16#F0,
		      16#32, 16#EA, 16#15, 16#D1, 16#72, 16#1D, 16#03,
		      16#F4, 16#82, 16#D7, 16#CE, 16#6E, 16#74, 16#FE,
		      16#F6, 16#D5, 16#5E, 16#70, 16#2F, 16#46, 16#98,
		      16#0C, 16#82, 16#B5, 16#A8, 16#40, 16#31, 16#90,
		      16#0B, 16#1C, 16#9E, 16#59, 16#E7, 16#C9, 16#7F,
		      16#BE, 16#C7, 16#E8, 16#F3, 16#23, 16#A9, 16#7A,
		      16#7E, 16#36, 16#CC, 16#88, 16#BE, 16#0F, 16#1D,
		      16#45, 16#B7, 16#FF, 16#58, 16#5A, 16#C5, 16#4B,
		      16#D4, 16#07, 16#B2, 16#2B, 16#41, 16#54, 16#AA,
		      16#CC, 16#8F, 16#6D, 16#7E, 16#BF, 16#48, 16#E1,
		      16#D8, 16#14, 16#CC, 16#5E, 16#D2, 16#0F, 16#80,
		      16#37, 16#E0, 16#A7, 16#97, 16#15, 16#EE, 16#F2,
		      16#9B, 16#E3, 16#28, 16#06, 16#A1, 16#D5, 16#8B,
		      16#B7, 16#C5, 16#DA, 16#76, 16#F5, 16#50, 16#AA,
		      16#3D, 16#8A, 16#1F, 16#BF, 16#F0, 16#EB, 16#19,
		      16#CC, 16#B1, 16#A3, 16#13, 16#D5, 16#5C, 16#DA,
		      16#56, 16#C9, 16#EC, 16#2E, 16#F2, 16#96, 16#32,
		      16#38, 16#7F, 16#E8, 16#D7, 16#6E, 16#3C, 16#04,
		      16#68, 16#04, 16#3E, 16#8F, 16#66, 16#3F, 16#48,
		      16#60, 16#EE, 16#12, 16#BF, 16#2D, 16#5B, 16#0B,
		      16#74, 16#74, 16#D6, 16#E6, 16#94, 16#F9, 16#1E,
		      16#6D, 16#BE, 16#11, 16#59, 16#74, 16#A3, 16#92,
		      16#6F, 16#12, 16#FE, 16#E5, 16#E4, 16#38, 16#77,
		      16#7C, 16#B6, 16#A9, 16#32, 16#DF, 16#8C, 16#D8,
		      16#BE, 16#C4, 16#D0, 16#73, 16#B9, 16#31, 16#BA,
		      16#3B, 16#C8, 16#32, 16#B6, 16#8D, 16#9D, 16#D3,
		      16#00, 16#74, 16#1F, 16#A7, 16#BF, 16#8A, 16#FC,
		      16#47, 16#ED, 16#25, 16#76, 16#F6, 16#93, 16#6B,
		      16#A4, 16#24, 16#66, 16#3A, 16#AB, 16#63, 16#9C,
		      16#5A, 16#E4, 16#F5, 16#68, 16#34, 16#23, 16#B4,
		      16#74, 16#2B, 16#F1, 16#C9, 16#78, 16#23, 16#8F,
		      16#16, 16#CB, 16#E3, 16#9D, 16#65, 16#2D, 16#E3,
		      16#FD, 16#B8, 16#BE, 16#FC, 16#84, 16#8A, 16#D9,
		      16#22, 16#22, 16#2E, 16#04, 16#A4, 16#03, 16#7C,
		      16#07, 16#13, 16#EB, 16#57, 16#A8, 16#1A, 16#23,
		      16#F0, 16#C7, 16#34, 16#73, 16#FC, 16#64, 16#6C,
		      16#EA, 16#30, 16#6B, 16#4B, 16#CB, 16#C8, 16#86,
		      16#2F, 16#83, 16#85, 16#DD, 16#FA, 16#9D, 16#4B,
		      16#7F, 16#A2, 16#C0, 16#87, 16#E8, 16#79, 16#68,
		      16#33, 16#03, 16#ED, 16#5B, 16#DD, 16#3A, 16#06,
		      16#2B, 16#3C, 16#F5, 16#B3, 16#A2, 16#78, 16#A6,
		      16#6D, 16#2A, 16#13, 16#F8, 16#3F, 16#44, 16#F8,
		      16#2D, 16#DF, 16#31, 16#0E, 16#E0, 16#74, 16#AB,
		      16#6A, 16#36, 16#45, 16#97, 16#E8, 16#99, 16#A0,
		      16#25, 16#5D, 16#C1, 16#64, 16#F3, 16#1C, 16#C5,
		      16#08, 16#46, 16#85, 16#1D, 16#F9, 16#AB, 16#48,
		      16#19, 16#5D, 16#ED, 16#7E, 16#A1, 16#B1, 16#D5,
		      16#10, 16#BD, 16#7E, 16#E7, 16#4D, 16#73, 16#FA,
		      16#F3, 16#6B, 16#C3, 16#1E, 16#CF, 16#A2, 16#68,
		      16#35, 16#90, 16#46, 16#F4, 16#EB, 16#87, 16#9F,
		      16#92, 16#40, 16#09, 16#43, 16#8B, 16#48, 16#1C,
		      16#6C, 16#D7, 16#88, 16#9A, 16#00, 16#2E, 16#D5,
		      16#EE, 16#38, 16#2B, 16#C9, 16#19, 16#0D, 16#A6,
		      16#FC, 16#02, 16#6E, 16#47, 16#95, 16#58, 16#E4,
		      16#47, 16#56, 16#77, 16#E9, 16#AA, 16#9E, 16#30,
		      16#50, 16#E2, 16#76, 16#56, 16#94, 16#DF, 16#C8,
		      16#1F, 16#56, 16#E8, 16#80, 16#B9, 16#6E, 16#71,
		      16#60, 16#C9, 16#80, 16#DD, 16#98, 16#ED, 16#D3,
		      16#DF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF, 16#FF,
		      16#FF, 16#FF>>).
-define(GENERATOR_8192, <<19>>).

get_srp_params(srp_1024) -> {?GENERATOR_1024, ?PRIME_1024};
get_srp_params(srp_1536) -> {?GENERATOR_1536, ?PRIME_1536};
get_srp_params(srp_2048) -> {?GENERATOR_2048, ?PRIME_2048};
get_srp_params(srp_3072) -> {?GENERATOR_3072, ?PRIME_3072};
get_srp_params(srp_4096) -> {?GENERATOR_4096, ?PRIME_4096};
get_srp_params(srp_6144) -> {?GENERATOR_6144, ?PRIME_6144};
get_srp_params(srp_8192) -> {?GENERATOR_8192, ?PRIME_8192}.

check_srp_params(?GENERATOR_1024, ?PRIME_1024) -> ok;
check_srp_params(?GENERATOR_1536, ?PRIME_1536) -> ok;
check_srp_params(?GENERATOR_2048, ?PRIME_2048) -> ok;
check_srp_params(?GENERATOR_3072, ?PRIME_3072) -> ok;
check_srp_params(?GENERATOR_4096, ?PRIME_4096) -> ok;
check_srp_params(?GENERATOR_6144, ?PRIME_6144) -> ok;
check_srp_params(?GENERATOR_8192, ?PRIME_8192) -> ok;
check_srp_params(_Generator, _Prime) ->
    not_accepted.