All pastes #142760 Raw Edit

Anonymous

public text v1 · immutable
#142760 ·published 2006-08-21 17:45 UTC
rendered paste body
from Crypto.Util.number import inverse as i

from Crypto.PublicKey import RSA
from ncrypt import rsa as nc_RSA

import cPickle
import zlib


fpath = './xc4-keys/'
files = [fpath + 'this.key', fpath + 'that.key']


pickle_load = lambda pickle_file : cPickle.loads(zlib.decompress(open(pickle_file, 'rb').read()))
pickle_dump = lambda pickle_data, pickle_file : open(pickle_file, 'wb').write(zlib.compress(cPickle.dumps(pickle_data), zlib.DEFLATED))


def kpc2knc(kpc):

    print kpc.size()

    knc = nc_RSA.RSAKey()

    n = kpc.n
    e = kpc.e

    if (kpc.has_private()):

        d = kpc.d
        p = kpc.p
        q = kpc.q

        dmp1 = (d % (p - 1))
        dmq1 = (d % (q - 1))

        iqmp = i(q, p)

        knc.loadPrivateKey((n, e, d, p, q, dmp1, dmq1, iqmp))

    else:

        knc.loadPublicKey((n, e))

    return(knc)


for filename in files:
    pkey = kpc2knc(pickle_load(filename))
    if pkey.hasPrivateKey():
        pickle_dump(pkey.getPrivateKey(), filename)
    else:
        pickle_dump(pkey.getPublicKey(), filename)