Exemplo n.º 1
0
	def dump_unencrypted(pkey):
		keytype = pkey.__module__.rsplit('.',1)[-1]
		if keytype == 'RSA':
			algoId = OID_PKCS_RSAPKEY
			algoParms = None
			vals = [0, pkey.n, pkey.e, pkey.d, pkey.p, pkey.q,
					pkey.d % (pkey.p - 1), pkey.d % (pkey.q - 1),
					inverse(pkey.q, pkey.p)]
			pkeyData = asn1.dumps(vals)
		elif keytype == 'DSA':
			algoId = OID_PKCS_DSAPKEY
			algoParms = (pkey.p, pkey.q, pkey.g)
			pkeyData = asn1.dumps(pkey.x)
		elif keytype == 'ElGamal':
			algoId = OID_PKCS_DHPKEY
			algoParms = (pkey.p, pkey.g)
			pkeyData = asn1.dumps(pkey.x)
		else:
			raise TypeError('unknown private key implementation')
		pkeyAlgo = (algoId, algoParms)
		return (0, pkeyAlgo, pkeyData)
Exemplo n.º 2
0
	def dump_encrypted(pkey, cipher):
		pkeyInfo = dump_unencrypted(pkey)
		pkeyData = asn1.dumps(pkeyInfo)
		encrAlgo = _pbecipher_toAlgoInfo(cipher)
		encrData = cipher.encrypt(pkeyData)
		return (encrAlgo, encrData)