"""
+
from ctypes import CDLL,c_char_p
def config(filename=None):
"""
libcrypto.OPENSSL_config(filename)
+__all__ = ['bio','cipher','cms','config','digest','ec','engine','exception','oid','pbkdf2','pkey','rand','x509']
+
libcrypto = CDLL("libcrypto.so.1.0.0")
libcrypto.OPENSSL_config.argtypes=(c_char_p,)
libcrypto.OPENSSL_add_all_algorithms_conf()
Resets the read-only bio to start and discards all data from writable bio
"""
libcrypto.BIO_ctrl(self.bio,1,0,None)
+
+__all__ = ['Membio']
libcrypto.BIO_s_mem.restype=c_void_p
libcrypto.BIO_new.restype=c_void_p
libcrypto.BIO_new.argtypes=(c_void_p,)
#
+__all__ = ['CipherError','new','Cipher','CipherType']
+
class CipherError(LibCryptoError):
pass
raise CMSError("decrypt data")
return str(b)
-
+__all__=['CMS','CMSError','Flags','SignedData','EnvelopedData','EncryptedData']
libcrypto.CMS_verify.restype=c_int
libcrypto.CMS_verify.argtypes=(c_void_p,c_void_p,c_void_p,c_void_p,c_void_p,c_int)
from ctypescrypto.oid import Oid\r
DIGEST_ALGORITHMS = ("MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512")\r
\r
+__all__ = ['DigestError','Digest','DigestType','new']\r
\r
class DigestError(LibCryptoError):\r
pass\r
from ctypes import c_void_p,c_char_p,c_int,byref
from ctypescrypto import libcrypto
+__all__ = [ 'create']
+
def create(curve,data):
"""
Creates EC keypair from the just secret key and curve name
from ctypes import *
from ctypescrypto import libcrypto
from ctypescrypto.exception import LibCryptoError
+
+__all__=['default','set_default']
+
default=None
def set_default(engine):
from ctypes import *
from ctypescrypto import libcrypto
strings_loaded=False
+
+__all__ = ['LibCryptoError','clear_err_stack']
+
class LibCryptoError(Exception):
"""
Exception for libcrypto errors. Adds all the info, which can be
"""
from ctypescrypto import libcrypto
from ctypes import c_char_p, c_void_p, c_int, create_string_buffer
+
+__all__ = ['Oid','create','cleanup']
+
class Oid:
"""
Represents an OID. It can be consturucted by textual
from ctypescrypto import libcrypto
from ctypescrypto.digest import DigestType
+__all__ = ['pbkdf2']
+
def pbkdf2(password,salt,outlen,digesttype="sha1",iterations=2000):
"""
Interface to PKCS5_PBKDF2_HMAC function
from ctypescrypto.exception import LibCryptoError,clear_err_stack
from ctypescrypto.bio import Membio
import sys
+
+__all__ = ['PKeyError','password_callback','PKey']
class PKeyError(LibCryptoError):
pass
from ctypescrypto import libcrypto
from ctypescrypto.exception import LibCryptoError
+__all__ = ['RandError','bytes','pseudo_bytes','seed','status']
+
class RandError(LibCryptoError):
pass
+"""
+Implements interface to openssl X509 and X509Store structures,
+I.e allows to load, analyze and verify certificates.
+
+X509Store objects are also used to verify other signed documets,
+such as CMS, OCSP and timestamps.
+"""
+
+
+
from ctypes import c_void_p,create_string_buffer,c_long,c_int,POINTER,c_char_p
from ctypescrypto.bio import Membio
from ctypescrypto.pkey import PKey
from ctypescrypto.oid import Oid
from ctypescrypto.exception import LibCryptoError
from ctypescrypto import libcrypto
+
+__all__ = ['X509Error','X509Name','X509Store','StackOfX509']
+# X509_extlist is not exported yet, because is not implemented
class X509Error(LibCryptoError):
"""
Exception, generated when some openssl function fail
"""
Class which represents X.509 distinguished name - typically
a certificate subject name or an issuer name.
+
+ Now used only to represent information, extracted from the
+ certificate. Potentially can be also used to build DN when creating
+ certificate signing request
"""
# XN_FLAG_SEP_COMMA_PLUS & ASN1_STRFLG_UTF8_CONVERT
PRINT_FLAG=0x10010
@param chain - list of X509 objects to add into verification
context.These objects are untrusted, but can be used to
build certificate chain up to trusted object in the store
- @param key - PKey object
- parameters stora and key are mutually exclusive. If neither is specified, attempts to verify
+ @param key - PKey object with open key to validate signature
- itself as self-signed certificate
+ parameters store and key are mutually exclusive. If neither
+ is specified, attempts to verify self as self-signed certificate
"""
if store is not None and key is not None:
raise X509Error("key and store cannot be specified simultaneously")
return libcrypto.X509_check_ca(self.cert)>0
class X509Store:
"""
- Represents trusted certificate store. Can be used to lookup CA certificates to verify
+ Represents trusted certificate store. Can be used to lookup CA
+ certificates to verify
- @param file - file with several certificates and crls to load into store
+ @param file - file with several certificates and crls
+ to load into store
@param dir - hashed directory with certificates and crls
- @param default - if true, default verify location (directory) is installed
+ @param default - if true, default verify location (directory)
+ is installed
"""
def __init__(self,file=None,dir=None,default=False):