Пример #1
0
def build_params( args, conf ) :
  log_m = random.randint( int( conf.get( 'log_m_min', 'aes_padding' ) ),
                          int( conf.get( 'log_m_max', 'aes_padding' ) ) )

  log_k_enc = 128 ; log_b_enc = 128 ; log_k_mac = 128

  k_enc = util.bytes_rand( log_k_enc / 8 )
  k_mac = util.bytes_rand( log_k_mac / 8 )

  iv    = util.bytes_rand( int( math.ceil( log_b_enc / 8 ) ) )
  m     = util.bytes_rand( int( math.ceil( log_m     / 8 ) ) )

  if   ( conf.get( 'challenge', 'aes_padding' ) == 'uid_hash' ) :
    m = bytearray( ( SHA.new( data = args.uid ) ).digest() ) + m
  elif ( conf.get( 'challenge', 'aes_padding' ) == 'uid_text' ) :
    m = bytearray(                   args.uid              ) + m

  tau = bytearray( HMAC.new( str( k_mac ), digestmod = SHA, msg = str( m ) ).digest() )
  rho = util.padding( m + tau, log_b_enc / 8 )

  c   = bytearray( AES.new( str( k_enc ), AES.MODE_CBC, IV = str( iv ) ).encrypt( str( m + tau + rho ) ) )

  return [ ( 'k_enc', k_enc, False ),
           ( 'k_mac', k_mac, False ),
           (   'tau',   tau, False ),
           (   'rho',   rho, False ),
           (    'iv',    iv,  True ),
           (     'm',     m, False ),
           (     'c',     c,  True ) ]
Пример #2
0
def build_params( args, conf ) :
  len_P = random.randint( int( conf.get( 'len_P_min', 'demo' ) ),
                          int( conf.get( 'len_P_max', 'demo' ) ) )

  if   ( conf.get( 'alphabet', 'demo' ) == 'binary' ) :
    P = util.bytes_rand( len_P                                 ) + '\x00'
  elif ( conf.get( 'alphabet', 'demo' ) == 'ascii'  ) :
    P = util.bytes_rand( len_P, bytes = string.ascii_lowercase ) + '\x00'

  return [ ( 'P', P, False ) ]
Пример #3
0
def build_params(args, conf):
    log_N = random.randint(int(conf.get('log_N_min', 'rsa_padding')),
                           int(conf.get('log_N_max', 'rsa_padding')))
    log_m = random.randint(int(conf.get('log_m_min', 'rsa_padding')),
                           int(conf.get('log_m_max', 'rsa_padding')))
    log_L = random.randint(int(conf.get('log_L_min', 'rsa_padding')),
                           int(conf.get('log_L_max', 'rsa_padding')))

    k = int(math.ceil(log_N / 8))
    B = 2**(8 * (k - 1))

    while (True):
        p, q, N, e, d = util.keygen_rsa(log_N)

        if ((int(math.ceil(math.log(N, 2**8))) == k) and ((2 * B) < N)):
            break

    m = util.bytes_rand(int(math.ceil(log_m / 8)))
    L = util.bytes_rand(int(math.ceil(log_L / 8)))

    if (conf.get('challenge', 'rsa_padding') == 'user_hash'):
        m = bytearray((SHA.new(data=args.user)).digest()) + m
    elif (conf.get('challenge', 'rsa_padding') == 'user_text'):
        m = bytearray(args.user) + m

    if (conf.get('hash', 'rsa_padding') == 'sha1'):
        H = SHA
    elif (conf.get('hash', 'rsa_padding') == 'sha256'):
        H = SHA256
    elif (conf.get('hash', 'rsa_padding') == 'sha384'):
        H = SHA384
    elif (conf.get('hash', 'rsa_padding') == 'sha512'):
        H = SHA512

    c = bytearray(
        OAEP.new(RSA.construct((N, e, d)), label=L,
                 hashAlgo=H).encrypt(str(m)).zfill(k))

    return [('p', p, False), ('q', q, False), ('N', N, True), ('e', e, True),
            ('d', d, False), ('L', L, True), ('m', m, False), ('c', c, True)]
Пример #4
0
def build_params( args, conf ) :
  if   ( conf.get( 'curve', 'ecc_invalid' ) == 'nist-p-192' ) :
    log_k = 192
  elif ( conf.get( 'curve', 'ecc_invalid' ) == 'nist-p-224' ) :
    log_k = 224
  elif ( conf.get( 'curve', 'ecc_invalid' ) == 'nist-p-256' ) :
    log_k = 256
  elif ( conf.get( 'curve', 'ecc_invalid' ) == 'nist-p-384' ) :
    log_k = 384
  elif ( conf.get( 'curve', 'ecc_invalid' ) == 'nist-p-521' ) :
    log_k = 521

  return [ ( 'k', util.bytes_rand( log_k / 8 ), False ) ]
Пример #5
0
def build_params( args, conf ) :
  return [ ( 'k', util.bytes_rand( 128 / 8 ), False ) ]