mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 09:36:46 +00:00
ldns base 1.6.9 from tarball
This commit is contained in:
536
libs/ldns/contrib/python/ldns_key.i
Normal file
536
libs/ldns/contrib/python/ldns_key.i
Normal file
@@ -0,0 +1,536 @@
|
||||
/******************************************************************************
|
||||
* ldns_key.i: LDNS key class
|
||||
*
|
||||
* Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz)
|
||||
* Karel Slany (slany AT fit.vutbr.cz)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the organization nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
******************************************************************************/
|
||||
%typemap(in,numinputs=0,noblock=1) (ldns_key **)
|
||||
{
|
||||
ldns_key *$1_key;
|
||||
$1 = &$1_key;
|
||||
}
|
||||
|
||||
/* result generation */
|
||||
%typemap(argout,noblock=1) (ldns_key **)
|
||||
{
|
||||
$result = SWIG_Python_AppendOutput($result, SWIG_NewPointerObj(SWIG_as_voidptr($1_key), SWIGTYPE_p_ldns_struct_key, SWIG_POINTER_OWN | 0 ));
|
||||
}
|
||||
|
||||
%exception ldns_key_set_pubkey_owner(ldns_key *k, ldns_rdf *r) %{ $action Py_INCREF(obj1); %}
|
||||
|
||||
%nodefaultctor ldns_struct_key; //no default constructor & destructor
|
||||
%nodefaultdtor ldns_struct_key;
|
||||
|
||||
%delobject ldns_key_free;
|
||||
%delobject ldns_key_deep_free;
|
||||
%newobject ldns_key_list_pop_key;
|
||||
%newobject ldns_key2rr;
|
||||
%newobject ldns_key_new_frm_algorithm;
|
||||
%newobject ldns_key_new_frm_fp;
|
||||
%newobject ldns_key_new_frm_fp_l;
|
||||
%newobject ldns_key_new_frm_engine;
|
||||
|
||||
%rename(ldns_key) ldns_struct_key;
|
||||
|
||||
#ifdef LDNS_DEBUG
|
||||
%rename(__ldns_key_free) ldns_key_free;
|
||||
%inline %{
|
||||
void _ldns_key_free (ldns_key* k) {
|
||||
printf("******** LDNS_KEY free 0x%lX ************\n", (long unsigned int)k);
|
||||
ldns_key_deep_free(k);
|
||||
}
|
||||
%}
|
||||
#else
|
||||
%rename(_ldns_key_free) ldns_key_deep_free;
|
||||
%rename(__ldns_key_free) ldns_key_free;
|
||||
#endif
|
||||
|
||||
%feature("docstring") ldns_struct_key "Key class
|
||||
|
||||
This class can contains all types of keys that are used in DNSSEC. Mostly used to store private keys, since public keys can also be stored in a ldns_rr with type LDNS_RR_TYPE_DNSKEY. This class can also store some variables that influence the signatures generated by signing with this key, for instance the inception date.
|
||||
|
||||
**Usage**
|
||||
|
||||
>>> import ldns
|
||||
>>> ldns.ldns_init_random(open(\"/dev/random\",\"rb\"), 512/8)
|
||||
>>> key = ldns.ldns_key.new_frm_algorithm(ldns.LDNS_SIGN_DSA, 512) #generate new DSA key
|
||||
>>> print key
|
||||
Private-key-format: v1.2
|
||||
Algorithm: 3 (DSA)
|
||||
Prime(p): XXXXXXXXHRQBGRflHZQriSAoLI2g+LGvZz8BlEesO+ZQg65wrFGs9IC441y/mn3nFnXfCdtX6zbN5bQuabPdlQ==
|
||||
Subprime(q): XXXXXdnWs/cWsGDglhEyZRLEVA8=
|
||||
Base(g): XXXXXXXqrd+dm2bcxDBdCsZRzkXQ22FxCk2ycnjgevr+s2HfA57BPk3xwqCrHUwuOBVg3Fvq4bpldrCe0sT6Og==
|
||||
Private_value(x): XXXXXcVubZF33pj04z4ZoETsQW1Y=
|
||||
Public_value(y): XXXXXX8t6zfOxJHoy57qteIw9sOZ/Zu0yFiPO083sPm11NlFx3b4m7TJ2k41gYicHXHLUQK1p0xXFToeZEkPGQ==
|
||||
>>> fw = open(\"key.priv\", \"wb\")
|
||||
>>> key.print_to_file(fw) #write priv key to file
|
||||
"
|
||||
|
||||
%extend ldns_struct_key {
|
||||
|
||||
%pythoncode %{
|
||||
def __init__(self):
|
||||
self.this = _ldns.ldns_key_new()
|
||||
if not self.this:
|
||||
raise Exception("Can't create instance of this class")
|
||||
|
||||
__swig_destroy__ = _ldns._ldns_key_free
|
||||
|
||||
def __str__(self):
|
||||
"""converts the data to presentation format"""
|
||||
return _ldns.ldns_key2str(self)
|
||||
|
||||
|
||||
def key_to_rr(self):
|
||||
"""converts a ldns_key to a public key rr
|
||||
|
||||
:returns: (ldns_rr \*) ldns_rr representation of the key
|
||||
"""
|
||||
return _ldns.ldns_key2rr(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: ldns_rr *
|
||||
|
||||
def print_to_file(self, file):
|
||||
"""print a private key to the file ouput
|
||||
|
||||
:param file: output file pointer
|
||||
"""
|
||||
_ldns.ldns_key_print(file, self)
|
||||
#parameters: FILE *, const ldns_key *,
|
||||
#retvals:
|
||||
|
||||
#LDNS_KEY_CONSTRUCTORS_#
|
||||
@staticmethod
|
||||
def new_frm_fp(file, raiseException=True):
|
||||
"""Creates a new priv key based on the contents of the file pointed by fp.
|
||||
|
||||
:param file: a file object
|
||||
:param raiseException: if True, an exception occurs in case a key instance can't be created
|
||||
:returns: key instance or None. If the object can't be created and raiseException is True, an exception occurs.
|
||||
"""
|
||||
status, key = _ldns.ldns_key_new_frm_fp(file)
|
||||
if status != LDNS_STATUS_OK:
|
||||
if (raiseException): raise Exception("Can't create key, error: %s (%d)" % (_ldns.ldns_get_errorstr_by_id(status),status))
|
||||
return None
|
||||
return key
|
||||
|
||||
@staticmethod
|
||||
def new_frm_fp_l(file, raiseException=True):
|
||||
"""Creates a new private key based on the contents of the file pointed by fp.
|
||||
|
||||
:param file: a file object
|
||||
:param raiseException: if True, an exception occurs in case a key instance can't be created
|
||||
:returns:
|
||||
* key - key instance or None. If an instance can't be created and raiseException is True, an exception occurs.
|
||||
|
||||
* line - the line number (for debugging)
|
||||
"""
|
||||
status, key, line = _ldns.ldns_key_new_frm_fp_l(file)
|
||||
if status != LDNS_STATUS_OK:
|
||||
if (raiseException): raise Exception("Can't create key, error: %d" % status)
|
||||
return None
|
||||
return key, line
|
||||
|
||||
@staticmethod
|
||||
def new_frm_algorithm(algorithm, size, raiseException=True):
|
||||
"""Creates a new key based on the algorithm.
|
||||
|
||||
:param algorithm: the algorithm to use
|
||||
:param size: the number of bytes for the keysize
|
||||
:param raiseException: if True, an exception occurs in case a key instance can't be created
|
||||
:returns: key instance or None. If the object can't be created and raiseException is True, an exception occurs.
|
||||
|
||||
**Algorithms**
|
||||
LDNS_SIGN_RSAMD5, LDNS_SIGN_RSASHA1, LDNS_SIGN_DSA, LDNS_SIGN_RSASHA1_NSEC3, LDNS_SIGN_RSASHA256, LDNS_SIGN_RSASHA256_NSEC3, LDNS_SIGN_RSASHA512, LDNS_SIGN_RSASHA512_NSEC3, LDNS_SIGN_DSA_NSEC3, LDNS_SIGN_HMACMD5, LDNS_SIGN_HMACSHA1, LDNS_SIGN_HMACSHA256
|
||||
"""
|
||||
key = _ldns.ldns_key_new_frm_algorithm(algorithm, size)
|
||||
if (not key) and (raiseException): raise Exception("Can't create key, error: %d" % status)
|
||||
return key
|
||||
#_LDNS_KEY_CONSTRUCTORS#
|
||||
|
||||
#LDNS_KEY_METHODS_#
|
||||
def algorithm(self):
|
||||
"""return the signing alg of the key
|
||||
|
||||
:returns: (ldns_signing_algorithm) the algorithm
|
||||
"""
|
||||
return _ldns.ldns_key_algorithm(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: ldns_signing_algorithm
|
||||
|
||||
def dsa_key(self):
|
||||
"""returns the (openssl) DSA struct contained in the key
|
||||
|
||||
:returns: (DSA \*)
|
||||
"""
|
||||
return _ldns.ldns_key_dsa_key(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: DSA *
|
||||
|
||||
def evp_key(self):
|
||||
"""returns the (openssl) EVP struct contained in the key
|
||||
|
||||
:returns: (EVP_PKEY \*) the RSA * structure in the key
|
||||
"""
|
||||
return _ldns.ldns_key_evp_key(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: EVP_PKEY *
|
||||
|
||||
def expiration(self):
|
||||
"""return the key's expiration date
|
||||
|
||||
:returns: (uint32_t) the experiration date
|
||||
"""
|
||||
return _ldns.ldns_key_expiration(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: uint32_t
|
||||
|
||||
def flags(self):
|
||||
"""return the flag of the key
|
||||
|
||||
:returns: (uint16_t) the flag
|
||||
"""
|
||||
return _ldns.ldns_key_flags(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: uint16_t
|
||||
|
||||
def hmac_key(self):
|
||||
"""return the hmac key data
|
||||
|
||||
:returns: (unsigned char \*) the hmac key data
|
||||
"""
|
||||
return _ldns.ldns_key_hmac_key(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: unsigned char *
|
||||
|
||||
def hmac_size(self):
|
||||
"""return the hmac key size
|
||||
|
||||
:returns: (size_t) the hmac key size
|
||||
"""
|
||||
return _ldns.ldns_key_hmac_size(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: size_t
|
||||
|
||||
def inception(self):
|
||||
"""return the key's inception date
|
||||
|
||||
:returns: (uint32_t) the inception date
|
||||
"""
|
||||
return _ldns.ldns_key_inception(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: uint32_t
|
||||
|
||||
def keytag(self):
|
||||
"""return the keytag
|
||||
|
||||
:returns: (uint16_t) the keytag
|
||||
"""
|
||||
return _ldns.ldns_key_keytag(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: uint16_t
|
||||
|
||||
def origttl(self):
|
||||
"""return the original ttl of the key
|
||||
|
||||
:returns: (uint32_t) the original ttl
|
||||
"""
|
||||
return _ldns.ldns_key_origttl(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: uint32_t
|
||||
|
||||
def pubkey_owner(self):
|
||||
"""return the public key's owner
|
||||
|
||||
:returns: (ldns_rdf \*) the owner
|
||||
"""
|
||||
return _ldns.ldns_key_pubkey_owner(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: ldns_rdf *
|
||||
|
||||
def rsa_key(self):
|
||||
"""returns the (openssl) RSA struct contained in the key
|
||||
|
||||
:returns: (RSA \*) the RSA * structure in the key
|
||||
"""
|
||||
return _ldns.ldns_key_rsa_key(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: RSA *
|
||||
|
||||
def set_algorithm(self,l):
|
||||
"""Set the key's algorithm.
|
||||
|
||||
:param l:
|
||||
the algorithm
|
||||
"""
|
||||
_ldns.ldns_key_set_algorithm(self,l)
|
||||
#parameters: ldns_key *,ldns_signing_algorithm,
|
||||
#retvals:
|
||||
|
||||
def set_dsa_key(self,d):
|
||||
"""Set the key's dsa data.
|
||||
|
||||
:param d:
|
||||
the dsa data
|
||||
"""
|
||||
_ldns.ldns_key_set_dsa_key(self,d)
|
||||
#parameters: ldns_key *,DSA *,
|
||||
#retvals:
|
||||
|
||||
def set_evp_key(self,e):
|
||||
"""Set the key's evp key.
|
||||
|
||||
:param e:
|
||||
the evp key
|
||||
"""
|
||||
_ldns.ldns_key_set_evp_key(self,e)
|
||||
#parameters: ldns_key *,EVP_PKEY *,
|
||||
#retvals:
|
||||
|
||||
def set_expiration(self,e):
|
||||
"""Set the key's expiration date (seconds after epoch).
|
||||
|
||||
:param e:
|
||||
the expiration
|
||||
"""
|
||||
_ldns.ldns_key_set_expiration(self,e)
|
||||
#parameters: ldns_key *,uint32_t,
|
||||
#retvals:
|
||||
|
||||
def set_flags(self,flags):
|
||||
"""Set the key's flags.
|
||||
|
||||
:param flags:
|
||||
the flags
|
||||
"""
|
||||
_ldns.ldns_key_set_flags(self,flags)
|
||||
#parameters: ldns_key *,uint16_t,
|
||||
#retvals:
|
||||
|
||||
def set_hmac_key(self,hmac):
|
||||
"""Set the key's hmac data.
|
||||
|
||||
:param hmac:
|
||||
the raw key data
|
||||
"""
|
||||
_ldns.ldns_key_set_hmac_key(self,hmac)
|
||||
#parameters: ldns_key *,unsigned char *,
|
||||
#retvals:
|
||||
|
||||
def set_hmac_size(self,hmac_size):
|
||||
"""Set the key's hmac size.
|
||||
|
||||
:param hmac_size:
|
||||
the size of the hmac data
|
||||
"""
|
||||
_ldns.ldns_key_set_hmac_size(self,hmac_size)
|
||||
#parameters: ldns_key *,size_t,
|
||||
#retvals:
|
||||
|
||||
def set_inception(self,i):
|
||||
"""Set the key's inception date (seconds after epoch).
|
||||
|
||||
:param i:
|
||||
the inception
|
||||
"""
|
||||
_ldns.ldns_key_set_inception(self,i)
|
||||
#parameters: ldns_key *,uint32_t,
|
||||
#retvals:
|
||||
|
||||
def set_keytag(self,tag):
|
||||
"""Set the key's key tag.
|
||||
|
||||
:param tag:
|
||||
the keytag
|
||||
"""
|
||||
_ldns.ldns_key_set_keytag(self,tag)
|
||||
#parameters: ldns_key *,uint16_t,
|
||||
#retvals:
|
||||
|
||||
def set_origttl(self,t):
|
||||
"""Set the key's original ttl.
|
||||
|
||||
:param t:
|
||||
the ttl
|
||||
"""
|
||||
_ldns.ldns_key_set_origttl(self,t)
|
||||
#parameters: ldns_key *,uint32_t,
|
||||
#retvals:
|
||||
|
||||
def set_pubkey_owner(self,r):
|
||||
"""Set the key's pubkey owner.
|
||||
|
||||
:param r:
|
||||
the owner
|
||||
"""
|
||||
_ldns.ldns_key_set_pubkey_owner(self,r)
|
||||
#parameters: ldns_key *,ldns_rdf *,
|
||||
#retvals:
|
||||
|
||||
def set_rsa_key(self,r):
|
||||
"""Set the key's rsa data.
|
||||
|
||||
:param r:
|
||||
the rsa data
|
||||
"""
|
||||
_ldns.ldns_key_set_rsa_key(self,r)
|
||||
#parameters: ldns_key *,RSA *,
|
||||
#retvals:
|
||||
|
||||
def set_use(self,v):
|
||||
"""set the use flag
|
||||
|
||||
:param v:
|
||||
the boolean value to set the _use field to
|
||||
"""
|
||||
_ldns.ldns_key_set_use(self,v)
|
||||
#parameters: ldns_key *,bool,
|
||||
#retvals:
|
||||
|
||||
def use(self):
|
||||
"""return the use flag
|
||||
|
||||
:returns: (bool) the boolean value of the _use field
|
||||
"""
|
||||
return _ldns.ldns_key_use(self)
|
||||
#parameters: const ldns_key *,
|
||||
#retvals: bool
|
||||
#_LDNS_KEY_METHODS#
|
||||
%}
|
||||
}
|
||||
|
||||
%nodefaultctor ldns_struct_key_list; //no default constructor & destructor
|
||||
%nodefaultdtor ldns_struct_key_list;
|
||||
|
||||
%newobject ldns_key_list_new;
|
||||
%newobject ldns_key_list_pop_key;
|
||||
%delobject ldns_key_list_free;
|
||||
%delobject ldns_key_list_push_key;
|
||||
|
||||
%rename(ldns_key_list) ldns_struct_key_list;
|
||||
|
||||
#ifdef LDNS_DEBUG
|
||||
%rename(__ldns_key_list_free) ldns_key_list_free;
|
||||
%inline %{
|
||||
void _ldns_key_list_free (ldns_key_list* k) {
|
||||
printf("******** LDNS_KEY_LIST free 0x%lX ************\n", (long unsigned int)k);
|
||||
ldns_key_list_free(k);
|
||||
}
|
||||
%}
|
||||
#else
|
||||
%rename(_ldns_key_list_free) ldns_key_list_free;
|
||||
#endif
|
||||
|
||||
%extend ldns_struct_key_list {
|
||||
|
||||
%pythoncode %{
|
||||
def __init__(self):
|
||||
self.this = _ldns.ldns_key_list_new()
|
||||
if not self.this:
|
||||
raise Exception("Can't create class")
|
||||
|
||||
__swig_destroy__ = _ldns._ldns_key_list_free
|
||||
|
||||
def keys(self):
|
||||
"""Key list iterator"""
|
||||
for i in range(0, self.key_count()):
|
||||
yield self.key(i)
|
||||
|
||||
def __str__(self):
|
||||
i = 0
|
||||
s = ""
|
||||
for k in self.keys():
|
||||
i += 1
|
||||
s += "key %d:\n %s\n" % (i, str(k).replace("\n","\n "))
|
||||
return s
|
||||
|
||||
#LDNS_KEY_LIST_METHODS_#
|
||||
def key(self,nr):
|
||||
"""returns a pointer to the key in the list at the given position
|
||||
|
||||
:param nr:
|
||||
the position in the list
|
||||
:returns: (ldns_key \*) the key
|
||||
"""
|
||||
return _ldns.ldns_key_list_key(self,nr)
|
||||
#parameters: const ldns_key_list *,size_t,
|
||||
#retvals: ldns_key *
|
||||
|
||||
def key_count(self):
|
||||
"""returns the number of keys in the key list
|
||||
|
||||
:returns: (size_t) the numbers of keys in the list
|
||||
"""
|
||||
return _ldns.ldns_key_list_key_count(self)
|
||||
#parameters: const ldns_key_list *,
|
||||
#retvals: size_t
|
||||
|
||||
def pop_key(self):
|
||||
"""pops the last rr from a keylist
|
||||
|
||||
:returns: (ldns_key \*) NULL if nothing to pop. Otherwise the popped RR
|
||||
"""
|
||||
return _ldns.ldns_key_list_pop_key(self)
|
||||
#parameters: ldns_key_list *,
|
||||
#retvals: ldns_key *
|
||||
|
||||
def push_key(self,key):
|
||||
"""pushes a key to a keylist
|
||||
|
||||
:param key:
|
||||
the key to push
|
||||
:returns: (bool) false on error, otherwise true
|
||||
"""
|
||||
return _ldns.ldns_key_list_push_key(self,key)
|
||||
#parameters: ldns_key_list *,ldns_key *,
|
||||
#retvals: bool
|
||||
|
||||
def set_key_count(self,count):
|
||||
"""Set the keylist's key count to count.
|
||||
|
||||
:param count:
|
||||
the cuont
|
||||
"""
|
||||
_ldns.ldns_key_list_set_key_count(self,count)
|
||||
#parameters: ldns_key_list *,size_t,
|
||||
#retvals:
|
||||
|
||||
def set_use(self,v):
|
||||
"""Set the 'use' flag for all keys in the list.
|
||||
|
||||
:param v:
|
||||
The value to set the use flags to
|
||||
"""
|
||||
_ldns.ldns_key_list_set_use(self,v)
|
||||
#parameters: ldns_key_list *,bool,
|
||||
#retvals:
|
||||
|
||||
#_LDNS_KEY_LIST_METHODS#
|
||||
%}
|
||||
}
|
||||
|
Reference in New Issue
Block a user