コード例 #1
0
ファイル: algs.py プロジェクト: itamarjp/helios-server-242
    def validate_pk_params(self):
        # check primality of p
        if not number.isPrime(self.p):
            raise Exception("p is not prime.")

        # check length of p
        if not (number.size(self.p) >= 2048):
            raise Exception(
                "p of insufficient length. Should be 2048 bits or greater.")

        # check primality of q
        if not number.isPrime(self.q):
            raise Exception("q is not prime.")

        # check length of q
        if not (number.size(self.q) >= 256):
            raise Exception(
                "q of insufficient length. Should be 256 bits or greater.")

        if (pow(self.g, self.q, self.p) != 1):
            raise Exception("g does not generate subgroup of order q.")

        if not (1 < self.g < self.p - 1):
            raise Exception("g out of range.")

        if not (1 < self.y < self.p - 1):
            raise Exception("y out of range.")

        if (pow(self.y, self.q, self.p) != 1):
            raise Exception("g does not generate proper group.")
コード例 #2
0
    def validate_pk_params(self):
      # check primality of p
      if not number.isPrime(self.p):
        raise Exception("p is not prime.")

      # check length of p
      if not (number.size(self.p) >= 2048):
        raise Exception("p of insufficient length. Should be 2048 bits or greater.")

      # check primality of q
      if not number.isPrime(self.q):
        raise Exception("q is not prime.")

      # check length of q
      if not (number.size(self.q) >= 256):
        raise Exception("q of insufficient length. Should be 256 bits or greater.")

      if (pow(self.g,self.q,self.p)!=1):
        raise Exception("g does not generate subgroup of order q.")

      if not (1 < self.g < self.p-1):
        raise Exception("g out of range.")

      if not (1 < self.y < self.p-1):
        raise Exception("y out of range.")

      if (pow(self.y,self.q,self.p)!=1):
        raise Exception("g does not generate proper group.")
コード例 #3
0
ファイル: RSA.py プロジェクト: andrewdyates/rsa_x509_pem
def generate_c(bits, randfunc, progress_func = None):
    # Generate the prime factors of n
    if progress_func:
        progress_func('p,q\n')

    p = q = 1L
    while number.size(p*q) < bits:
        p = pubkey.getPrime(bits/2, randfunc)
        q = pubkey.getPrime(bits/2, randfunc)

    # p shall be smaller than q (for calc of u)
    if p > q:
        (p, q)=(q, p)
    if progress_func:
        progress_func('u\n')
    u=pubkey.inverse(p, q)
    n=p*q

    e = 65537L
    if progress_func:
        progress_func('d\n')
    d=pubkey.inverse(e, (p-1)*(q-1))
    key = _fastmath.rsa_construct(n,e,d,p,q,u)
    obj = RSAobj_c(key)

##    print p
##    print q
##    print number.size(p), number.size(q), number.size(q*p),
##    print obj.size(), bits
    assert bits <= 1+obj.size(), "Generated key is too small"
    return obj
コード例 #4
0
ファイル: RSA.py プロジェクト: andrewdyates/rsa_x509_pem
def generate(bits, randfunc, progress_func=None):
    """generate(bits:int, randfunc:callable, progress_func:callable)

    Generate an RSA key of length 'bits', using 'randfunc' to get
    random data and 'progress_func', if present, to display
    the progress of the key generation.
    """
    obj=RSAobj()

    # Generate the prime factors of n
    if progress_func:
        progress_func('p,q\n')
    p = q = 1L
    while number.size(p*q) < bits:
        p = pubkey.getPrime(bits/2, randfunc)
        q = pubkey.getPrime(bits/2, randfunc)

    # p shall be smaller than q (for calc of u)
    if p > q:
        (p, q)=(q, p)
    obj.p = p
    obj.q = q

    if progress_func:
        progress_func('u\n')
    obj.u = pubkey.inverse(obj.p, obj.q)
    obj.n = obj.p*obj.q

    obj.e = 65537L
    if progress_func:
        progress_func('d\n')
    obj.d=pubkey.inverse(obj.e, (obj.p-1)*(obj.q-1))

    assert bits <= 1+obj.size(), "Generated key is too small"

    return obj
コード例 #5
0
ファイル: RSA.py プロジェクト: andrewdyates/rsa_x509_pem
 def size(self):
     """size() : int
     Return the maximum number of bits that can be handled by this key.
     """
     return number.size(self.n) - 1