if len(key) != cipher_type.key_length():
if (cipher_type.flags() & 8) != 0:
# Variable key length cipher.
- result = libcrypto.EVP_CipherInit_ex(self.ctx,cipher_type.cipher,None,None,None,c_int(enc))
+ result = libcrypto.EVP_CipherInit_ex(self.ctx, cipher_type.cipher, None, key_ptr, iv_ptr, c_int(enc))
result=libcrypto.EVP_CIPHER_CTX_set_key_length(self.ctx,len(key))
if result == 0:
self._clean_ctx()
raise CipherError, "Cipher operation is already completed"
outbuf=create_string_buffer(self.block_size)
self.cipher_finalized = True
- outlen=c_int()
+ outlen=c_int(0)
result = libcrypto.EVP_CipherFinal_ex(self.ctx,outbuf , byref(outlen))
if result == 0:
self._clean_ctx()
from ctypes import c_void_p
from ctypescrypto.bio import Membio
from ctypescrypto.pkey import Pkey
+from ctypescrypto.oid import oid
from ctypescrypto.exception import LibCryptoError
from crypescrypto import libcrypto
return libcrypto.X509_NAME_entry_count(self.ptr)
def __getattr__(self,key):
+ if isinstatce(key,Oid):
+ # Return list of strings
- def __setattr__(self,key,val):
+ elif isinstance(key,int):
+ # Return OID, sting tuple
+ else:
+ raise TypeError("X509 name can be indexed with oids and numbers only")
+ def __setattr__(self,key,val):
+ pass
class X509_extlist:
def __init__(self,ptr):
self.ptr=ptr
b=Membio()
if libcrypto.i2d_X509_bio(b.bio,self.cert)==0:
raise X509Error("error serializing certificate")
+ @property
def pubkey(self):
- """ Returns EVP PKEy object of certificate public key"""
+ """EVP PKEy object of certificate public key"""
return PKey(ptr=libcrypto.X509_get_pubkey(self.cert,False))
def verify(self,key):
""" Verify self on given issuer key """
-
+ @property
def subject(self):
+ """ X509Name for certificate subject name """
return X509Name(libcrypto.X509_get_subject_name(self.cert))
+ @property
def issuer(self):
+ """ X509Name for certificate issuer name """
return X509Name(libcrypto.X509_get_issuer_name(self.cert))
+ @property
def serial(self):
+ """ Serial number of certificate as integer """
return
-
+ @property
def startDate(self):
-
+ """ Certificate validity period start date """
+ @property
def endDate(self);
+ """ Certificate validity period end date """
def extensions(self):