Hex Artifact Content

Artifact f5e01f9b0296ed7e11cb5e94cfc21f91f597cc73:


0000: 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20  #! /usr/bin/env 
0010: 73 68 0a 0a 62 69 74 73 3d 27 32 30 34 38 27 0a  sh..bits='2048'.
0020: 0a 6f 70 65 6e 73 73 6c 5f 64 68 70 61 72 61 6d  .openssl_dhparam
0030: 28 29 20 7b 0a 09 69 66 20 5b 20 2d 78 20 22 60  () {..if [ -x "`
0040: 77 68 69 63 68 20 6f 70 65 6e 73 73 6c 20 32 3e  which openssl 2>
0050: 2f 64 65 76 2f 6e 75 6c 6c 60 22 20 5d 3b 20 74  /dev/null`" ]; t
0060: 68 65 6e 0a 09 09 6f 5f 6f 75 74 70 75 74 3d 22  hen...o_output="
0070: 60 6f 70 65 6e 73 73 6c 20 64 68 70 61 72 61 6d  `openssl dhparam
0080: 20 2d 43 20 22 24 40 22 20 32 3e 2f 64 65 76 2f   -C "$@" 2>/dev/
0090: 6e 75 6c 6c 60 22 20 7c 7c 20 72 65 74 75 72 6e  null`" || return
00a0: 20 31 0a 09 09 6f 5f 6f 75 74 70 75 74 3d 22 60   1...o_output="`
00b0: 65 63 68 6f 20 22 24 7b 6f 5f 6f 75 74 70 75 74  echo "${o_output
00c0: 7d 22 20 7c 20 73 65 64 20 27 2f 5e 2d 2d 2d 2d  }" | sed '/^----
00d0: 2d 42 45 47 49 4e 20 44 48 20 50 41 52 41 4d 45  -BEGIN DH PARAME
00e0: 54 45 52 53 2d 2d 2d 2d 2d 24 2f 2c 2f 5e 2d 2d  TERS-----$/,/^--
00f0: 2d 2d 2d 45 4e 44 20 44 48 20 50 41 52 41 4d 45  ---END DH PARAME
0100: 54 45 52 53 2d 2d 2d 2d 2d 24 2f 20 64 3b 2f 5e  TERS-----$/ d;/^
0110: 23 2f 20 64 27 60 22 20 7c 7c 20 72 65 74 75 72  #/ d'`" || retur
0120: 6e 20 31 0a 0a 09 09 65 63 68 6f 20 22 24 7b 6f  n 1....echo "${o
0130: 5f 6f 75 74 70 75 74 7d 22 0a 0a 09 09 72 65 74  _output}"....ret
0140: 75 72 6e 20 30 0a 09 66 69 0a 0a 09 72 65 74 75  urn 0..fi...retu
0150: 72 6e 20 31 0a 7d 0a 0a 67 65 6e 5f 64 68 5f 70  rn 1.}..gen_dh_p
0160: 61 72 61 6d 73 5f 6f 70 65 6e 73 73 6c 28 29 20  arams_openssl() 
0170: 7b 0a 09 6f 70 65 6e 73 73 6c 5f 64 68 70 61 72  {..openssl_dhpar
0180: 61 6d 20 22 24 7b 62 69 74 73 7d 22 20 3c 20 2f  am "${bits}" < /
0190: 64 65 76 2f 6e 75 6c 6c 20 7c 7c 20 72 65 74 75  dev/null || retu
01a0: 72 6e 20 31 0a 09 72 65 74 75 72 6e 20 30 0a 7d  rn 1..return 0.}
01b0: 0a 0a 67 65 6e 5f 64 68 5f 70 61 72 61 6d 73 5f  ..gen_dh_params_
01c0: 72 65 6d 6f 74 65 28 29 20 7b 0a 09 75 72 6c 3d  remote() {..url=
01d0: 22 68 74 74 70 73 3a 2f 2f 32 74 6f 6e 2e 63 6f  "https://2ton.co
01e0: 6d 2e 61 75 2f 64 68 70 61 72 61 6d 2f 24 7b 62  m.au/dhparam/${b
01f0: 69 74 73 7d 22 0a 0a 09 72 5f 69 6e 70 75 74 3d  its}"...r_input=
0200: 22 60 63 75 72 6c 20 2d 73 53 20 22 24 7b 75 72  "`curl -sS "${ur
0210: 6c 7d 22 60 22 20 7c 7c 20 5c 0a 09 09 72 5f 69  l}"`" || \...r_i
0220: 6e 70 75 74 3d 22 60 77 67 65 74 20 2d 4f 20 2d  nput="`wget -O -
0230: 20 2d 6f 20 2f 64 65 76 2f 6e 75 6c 6c 20 22 24   -o /dev/null "$
0240: 7b 75 72 6c 7d 22 60 22 20 7c 7c 20 72 65 74 75  {url}"`" || retu
0250: 72 6e 20 31 0a 0a 09 69 66 20 72 5f 6f 75 74 70  rn 1...if r_outp
0260: 75 74 3d 22 60 65 63 68 6f 20 22 24 7b 72 5f 69  ut="`echo "${r_i
0270: 6e 70 75 74 7d 22 20 7c 20 6f 70 65 6e 73 73 6c  nput}" | openssl
0280: 5f 64 68 70 61 72 61 6d 60 22 3b 20 74 68 65 6e  _dhparam`"; then
0290: 0a 09 09 65 63 68 6f 20 22 24 7b 72 5f 6f 75 74  ...echo "${r_out
02a0: 70 75 74 7d 22 0a 0a 09 09 72 65 74 75 72 6e 20  put}"....return 
02b0: 30 0a 09 66 69 0a 0a 09 72 65 74 75 72 6e 20 31  0..fi...return 1
02c0: 0a 7d 0a 0a 67 65 6e 5f 64 68 5f 70 61 72 61 6d  .}..gen_dh_param
02d0: 73 5f 66 61 6c 6c 62 61 63 6b 28 29 20 7b 0a 09  s_fallback() {..
02e0: 63 61 74 20 3c 3c 20 5c 5f 45 4f 46 5f 0a 44 48  cat << \_EOF_.DH
02f0: 20 2a 67 65 74 5f 64 68 32 30 34 38 28 29 0a 09   *get_dh2048()..
0300: 7b 0a 09 73 74 61 74 69 63 20 75 6e 73 69 67 6e  {..static unsign
0310: 65 64 20 63 68 61 72 20 64 68 70 5f 32 30 34 38  ed char dhp_2048
0320: 5b 5d 3d 7b 0a 09 09 30 78 43 31 2c 30 78 35 31  []={...0xC1,0x51
0330: 2c 30 78 35 38 2c 30 78 36 39 2c 30 78 46 42 2c  ,0x58,0x69,0xFB,
0340: 30 78 45 38 2c 30 78 36 43 2c 30 78 34 37 2c 30  0xE8,0x6C,0x47,0
0350: 78 32 42 2c 30 78 38 36 2c 30 78 36 31 2c 30 78  x2B,0x86,0x61,0x
0360: 34 46 2c 0a 09 09 30 78 32 30 2c 30 78 32 45 2c  4F,...0x20,0x2E,
0370: 30 78 44 33 2c 30 78 46 43 2c 30 78 31 39 2c 30  0xD3,0xFC,0x19,0
0380: 78 45 45 2c 30 78 42 38 2c 30 78 46 33 2c 30 78  xEE,0xB8,0xF3,0x
0390: 33 35 2c 30 78 37 44 2c 30 78 42 41 2c 30 78 38  35,0x7D,0xBA,0x8
03a0: 36 2c 0a 09 09 30 78 32 41 2c 30 78 43 33 2c 30  6,...0x2A,0xC3,0
03b0: 78 43 38 2c 30 78 36 45 2c 30 78 46 34 2c 30 78  xC8,0x6E,0xF4,0x
03c0: 39 39 2c 30 78 37 35 2c 30 78 36 35 2c 30 78 44  99,0x75,0x65,0xD
03d0: 33 2c 30 78 37 41 2c 30 78 39 45 2c 30 78 44 46  3,0x7A,0x9E,0xDF
03e0: 2c 0a 09 09 30 78 44 34 2c 30 78 31 46 2c 30 78  ,...0xD4,0x1F,0x
03f0: 38 38 2c 30 78 45 33 2c 30 78 31 37 2c 30 78 46  88,0xE3,0x17,0xF
0400: 43 2c 30 78 41 31 2c 30 78 45 44 2c 30 78 41 32  C,0xA1,0xED,0xA2
0410: 2c 30 78 42 36 2c 30 78 37 37 2c 30 78 38 34 2c  ,0xB6,0x77,0x84,
0420: 0a 09 09 30 78 41 41 2c 30 78 30 38 2c 30 78 46  ...0xAA,0x08,0xF
0430: 32 2c 30 78 39 37 2c 30 78 35 39 2c 30 78 37 41  2,0x97,0x59,0x7A
0440: 2c 30 78 41 30 2c 30 78 30 33 2c 30 78 30 44 2c  ,0xA0,0x03,0x0D,
0450: 30 78 33 45 2c 30 78 37 45 2c 30 78 36 44 2c 0a  0x3E,0x7E,0x6D,.
0460: 09 09 30 78 36 35 2c 30 78 36 41 2c 30 78 41 34  ..0x65,0x6A,0xA4
0470: 2c 30 78 45 41 2c 30 78 35 34 2c 30 78 41 39 2c  ,0xEA,0x54,0xA9,
0480: 30 78 35 32 2c 30 78 35 46 2c 30 78 36 33 2c 30  0x52,0x5F,0x63,0
0490: 78 42 34 2c 30 78 42 43 2c 30 78 39 38 2c 0a 09  xB4,0xBC,0x98,..
04a0: 09 30 78 34 45 2c 30 78 46 36 2c 30 78 45 31 2c  .0x4E,0xF6,0xE1,
04b0: 30 78 41 34 2c 30 78 45 45 2c 30 78 31 36 2c 30  0xA4,0xEE,0x16,0
04c0: 78 30 41 2c 30 78 42 30 2c 30 78 30 31 2c 30 78  x0A,0xB0,0x01,0x
04d0: 42 44 2c 30 78 39 46 2c 30 78 41 31 2c 0a 09 09  BD,0x9F,0xA1,...
04e0: 30 78 45 38 2c 30 78 32 33 2c 30 78 32 39 2c 30  0xE8,0x23,0x29,0
04f0: 78 35 36 2c 30 78 34 30 2c 30 78 39 35 2c 30 78  x56,0x40,0x95,0x
0500: 31 33 2c 30 78 45 42 2c 30 78 43 42 2c 30 78 44  13,0xEB,0xCB,0xD
0510: 35 2c 30 78 46 43 2c 30 78 37 36 2c 0a 09 09 30  5,0xFC,0x76,...0
0520: 78 31 41 2c 30 78 34 31 2c 30 78 32 36 2c 30 78  x1A,0x41,0x26,0x
0530: 43 45 2c 30 78 32 30 2c 30 78 45 42 2c 30 78 33  CE,0x20,0xEB,0x3
0540: 30 2c 30 78 31 30 2c 30 78 31 37 2c 30 78 30 37  0,0x10,0x17,0x07
0550: 2c 30 78 45 31 2c 30 78 38 43 2c 0a 09 09 30 78  ,0xE1,0x8C,...0x
0560: 41 43 2c 30 78 35 37 2c 30 78 33 37 2c 30 78 38  AC,0x57,0x37,0x8
0570: 42 2c 30 78 45 38 2c 30 78 30 31 2c 30 78 44 45  B,0xE8,0x01,0xDE
0580: 2c 30 78 41 39 2c 30 78 45 46 2c 30 78 41 34 2c  ,0xA9,0xEF,0xA4,
0590: 30 78 43 32 2c 30 78 41 34 2c 0a 09 09 30 78 36  0xC2,0xA4,...0x6
05a0: 45 2c 30 78 34 38 2c 30 78 32 35 2c 30 78 31 31  E,0x48,0x25,0x11
05b0: 2c 30 78 33 33 2c 30 78 31 31 2c 30 78 44 34 2c  ,0x33,0x11,0xD4,
05c0: 30 78 35 32 2c 30 78 37 39 2c 30 78 38 37 2c 30  0x52,0x79,0x87,0
05d0: 78 39 46 2c 30 78 37 35 2c 0a 09 09 30 78 36 31  x9F,0x75,...0x61
05e0: 2c 30 78 46 37 2c 30 78 39 43 2c 30 78 37 44 2c  ,0xF7,0x9C,0x7D,
05f0: 30 78 33 36 2c 30 78 34 31 2c 30 78 43 42 2c 30  0x36,0x41,0xCB,0
0600: 78 45 43 2c 30 78 38 46 2c 30 78 45 41 2c 30 78  xEC,0x8F,0xEA,0x
0610: 34 41 2c 30 78 34 37 2c 0a 09 09 30 78 36 41 2c  4A,0x47,...0x6A,
0620: 30 78 33 36 2c 30 78 33 37 2c 30 78 37 35 2c 30  0x36,0x37,0x75,0
0630: 78 42 39 2c 30 78 38 45 2c 30 78 46 35 2c 30 78  xB9,0x8E,0xF5,0x
0640: 35 46 2c 30 78 36 37 2c 30 78 43 46 2c 30 78 31  5F,0x67,0xCF,0x1
0650: 46 2c 30 78 44 38 2c 0a 09 09 30 78 43 41 2c 30  F,0xD8,...0xCA,0
0660: 78 37 30 2c 30 78 34 32 2c 30 78 43 37 2c 30 78  x70,0x42,0xC7,0x
0670: 41 32 2c 30 78 45 44 2c 30 78 30 46 2c 30 78 37  A2,0xED,0x0F,0x7
0680: 44 2c 30 78 42 45 2c 30 78 34 33 2c 30 78 30 38  D,0xBE,0x43,0x08
0690: 2c 30 78 32 38 2c 0a 09 09 30 78 36 36 2c 30 78  ,0x28,...0x66,0x
06a0: 33 44 2c 30 78 44 44 2c 30 78 38 37 2c 30 78 30  3D,0xDD,0x87,0x0
06b0: 44 2c 30 78 36 31 2c 30 78 36 45 2c 30 78 44 30  D,0x61,0x6E,0xD0
06c0: 2c 30 78 45 37 2c 30 78 34 39 2c 30 78 44 31 2c  ,0xE7,0x49,0xD1,
06d0: 30 78 37 30 2c 0a 09 09 30 78 41 39 2c 30 78 34  0x70,...0xA9,0x4
06e0: 44 2c 30 78 44 35 2c 30 78 46 44 2c 30 78 45 44  D,0xD5,0xFD,0xED
06f0: 2c 30 78 46 32 2c 30 78 36 44 2c 30 78 33 32 2c  ,0xF2,0x6D,0x32,
0700: 30 78 31 37 2c 30 78 39 37 2c 30 78 35 42 2c 30  0x17,0x97,0x5B,0
0710: 78 30 36 2c 0a 09 09 30 78 36 30 2c 30 78 39 43  x06,...0x60,0x9C
0720: 2c 30 78 35 46 2c 30 78 41 33 2c 30 78 35 44 2c  ,0x5F,0xA3,0x5D,
0730: 30 78 33 34 2c 30 78 31 34 2c 30 78 37 45 2c 30  0x34,0x14,0x7E,0
0740: 78 36 33 2c 30 78 35 34 2c 30 78 45 34 2c 30 78  x63,0x54,0xE4,0x
0750: 37 45 2c 0a 09 09 30 78 30 39 2c 30 78 38 46 2c  7E,...0x09,0x8F,
0760: 30 78 42 42 2c 30 78 38 45 2c 30 78 41 30 2c 30  0xBB,0x8E,0xA0,0
0770: 78 44 30 2c 30 78 39 36 2c 30 78 41 43 2c 30 78  xD0,0x96,0xAC,0x
0780: 33 30 2c 30 78 32 30 2c 30 78 33 39 2c 30 78 33  30,0x20,0x39,0x3
0790: 42 2c 0a 09 09 30 78 38 43 2c 30 78 39 32 2c 30  B,...0x8C,0x92,0
07a0: 78 36 35 2c 30 78 33 37 2c 30 78 30 41 2c 30 78  x65,0x37,0x0A,0x
07b0: 38 46 2c 30 78 45 43 2c 30 78 37 32 2c 30 78 38  8F,0xEC,0x72,0x8
07c0: 42 2c 30 78 36 31 2c 30 78 37 44 2c 30 78 36 32  B,0x61,0x7D,0x62
07d0: 2c 0a 09 09 30 78 32 34 2c 30 78 35 34 2c 30 78  ,...0x24,0x54,0x
07e0: 45 39 2c 30 78 31 44 2c 30 78 30 31 2c 30 78 36  E9,0x1D,0x01,0x6
07f0: 38 2c 30 78 38 39 2c 30 78 43 34 2c 30 78 37 42  8,0x89,0xC4,0x7B
0800: 2c 30 78 33 43 2c 30 78 34 38 2c 30 78 36 32 2c  ,0x3C,0x48,0x62,
0810: 0a 09 09 30 78 39 42 2c 30 78 38 33 2c 30 78 31  ...0x9B,0x83,0x1
0820: 31 2c 30 78 33 41 2c 30 78 30 42 2c 30 78 30 44  1,0x3A,0x0B,0x0D
0830: 2c 30 78 45 46 2c 30 78 35 41 2c 30 78 45 34 2c  ,0xEF,0x5A,0xE4,
0840: 30 78 37 41 2c 30 78 41 30 2c 30 78 36 39 2c 0a  0x7A,0xA0,0x69,.
0850: 09 09 30 78 46 34 2c 30 78 35 34 2c 30 78 42 35  ..0xF4,0x54,0xB5
0860: 2c 30 78 35 42 2c 0a 09 09 7d 3b 0a 09 73 74 61  ,0x5B,...};..sta
0870: 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 68 61  tic unsigned cha
0880: 72 20 64 68 67 5f 32 30 34 38 5b 5d 3d 7b 0a 09  r dhg_2048[]={..
0890: 09 30 78 30 32 2c 0a 09 09 7d 3b 0a 09 44 48 20  .0x02,...};..DH 
08a0: 2a 64 68 20 3d 20 44 48 5f 6e 65 77 28 29 3b 3b  *dh = DH_new();;
08b0: 0a 20 20 20 20 42 49 47 4e 55 4d 20 2a 64 68 70  .    BIGNUM *dhp
08c0: 5f 62 6e 2c 20 2a 64 68 67 5f 62 6e 3b 0a 0a 20  _bn, *dhg_bn;.. 
08d0: 20 20 20 69 66 20 28 64 68 20 3d 3d 20 4e 55 4c     if (dh == NUL
08e0: 4c 29 0a 20 20 20 20 20 20 20 20 72 65 74 75 72  L).        retur
08f0: 6e 20 4e 55 4c 4c 3b 0a 20 20 20 20 64 68 70 5f  n NULL;.    dhp_
0900: 62 6e 20 3d 20 42 4e 5f 62 69 6e 32 62 6e 28 64  bn = BN_bin2bn(d
0910: 68 70 5f 32 30 34 38 2c 20 73 69 7a 65 6f 66 20  hp_2048, sizeof 
0920: 28 64 68 70 5f 32 30 34 38 29 2c 20 4e 55 4c 4c  (dhp_2048), NULL
0930: 29 3b 0a 20 20 20 20 64 68 67 5f 62 6e 20 3d 20  );.    dhg_bn = 
0940: 42 4e 5f 62 69 6e 32 62 6e 28 64 68 67 5f 32 30  BN_bin2bn(dhg_20
0950: 34 38 2c 20 73 69 7a 65 6f 66 20 28 64 68 67 5f  48, sizeof (dhg_
0960: 32 30 34 38 29 2c 20 4e 55 4c 4c 29 3b 0a 20 20  2048), NULL);.  
0970: 20 20 69 66 20 28 64 68 70 5f 62 6e 20 3d 3d 20    if (dhp_bn == 
0980: 4e 55 4c 4c 20 7c 7c 20 64 68 67 5f 62 6e 20 3d  NULL || dhg_bn =
0990: 3d 20 4e 55 4c 4c 0a 20 20 20 20 20 20 20 20 20  = NULL.         
09a0: 20 20 20 7c 7c 20 21 44 48 5f 73 65 74 30 5f 70     || !DH_set0_p
09b0: 71 67 28 64 68 2c 20 64 68 70 5f 62 6e 2c 20 4e  qg(dh, dhp_bn, N
09c0: 55 4c 4c 2c 20 64 68 67 5f 62 6e 29 29 20 7b 0a  ULL, dhg_bn)) {.
09d0: 20 20 20 20 20 20 20 20 44 48 5f 66 72 65 65 28          DH_free(
09e0: 64 68 29 3b 0a 20 20 20 20 20 20 20 20 42 4e 5f  dh);.        BN_
09f0: 66 72 65 65 28 64 68 70 5f 62 6e 29 3b 0a 20 20  free(dhp_bn);.  
0a00: 20 20 20 20 20 20 42 4e 5f 66 72 65 65 28 64 68        BN_free(dh
0a10: 67 5f 62 6e 29 3b 0a 20 20 20 20 20 20 20 20 72  g_bn);.        r
0a20: 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 20 20  eturn NULL;.    
0a30: 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 64 68 3b  }.    return dh;
0a40: 0a 7d 0a 5f 45 4f 46 5f 0a 7d 0a 0a 23 20 45 6e  .}._EOF_.}..# En
0a50: 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72  able support for
0a60: 20 67 69 76 69 6e 67 20 74 68 65 20 73 61 6d 65   giving the same
0a70: 20 44 48 20 70 61 72 61 6d 73 20 65 61 63 68 20   DH params each 
0a80: 74 69 6d 65 0a 69 66 20 5b 20 22 24 31 22 20 3d  time.if [ "$1" =
0a90: 20 27 66 61 6c 6c 62 61 63 6b 27 20 5d 3b 20 74   'fallback' ]; t
0aa0: 68 65 6e 0a 09 67 65 6e 5f 64 68 5f 70 61 72 61  hen..gen_dh_para
0ab0: 6d 73 5f 66 61 6c 6c 62 61 63 6b 20 26 26 20 65  ms_fallback && e
0ac0: 78 69 74 20 30 0a 0a 09 65 78 69 74 20 31 0a 66  xit 0...exit 1.f
0ad0: 69 0a 0a 67 65 6e 5f 64 68 5f 70 61 72 61 6d 73  i..gen_dh_params
0ae0: 5f 6f 70 65 6e 73 73 6c 20 26 26 20 65 78 69 74  _openssl && exit
0af0: 20 30 0a 67 65 6e 5f 64 68 5f 70 61 72 61 6d 73   0.gen_dh_params
0b00: 5f 72 65 6d 6f 74 65 20 26 26 20 65 78 69 74 20  _remote && exit 
0b10: 30 0a 67 65 6e 5f 64 68 5f 70 61 72 61 6d 73 5f  0.gen_dh_params_
0b20: 66 61 6c 6c 62 61 63 6b 20 26 26 20 65 78 69 74  fallback && exit
0b30: 20 30 0a 0a 65 78 69 74 20 31 0a                  0..exit 1.