Abstract base class for generators of polynomial systems¶
AUTHOR:
Martin Albrecht <malb@informatik.uni-bremen.de>
- class sage.crypto.mq.mpolynomialsystemgenerator.MPolynomialSystemGenerator[source]¶
- Bases: - SageObject- Abstract base class for generators of polynomial systems. - block_order()[source]¶
- Return a block term ordering for the equation systems generated by - self.- EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.block_order() Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.block_order() Traceback (most recent call last): ... NotImplementedError 
 - polynomial_system(P=None, K=None)[source]¶
- Return a tuple F,s for plaintext P and key K where F is an polynomial system and s a dictionary which maps key variables to their solutions. - INPUT: - P– plaintext (vector, list)
- K– key (vector, list)
 - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.polynomial_system() Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.polynomial_system() Traceback (most recent call last): ... NotImplementedError 
 - random_element()[source]¶
- Return random element. Usually this is a list of elements in the base field of length ‘blocksize’. - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.random_element() Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.random_element() Traceback (most recent call last): ... NotImplementedError 
 - ring()[source]¶
- Return the ring in which the system is defined. - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.ring() Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.ring() Traceback (most recent call last): ... NotImplementedError 
 - sbox()[source]¶
- Return SBox object for - self.- EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.sbox() Traceback (most recent call last): ... AttributeError: '<class 'sage.crypto.mq.mpolynomialsystemgenerator.MPolynomialSystemGenerator'>' object has no attribute '_sbox'... - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.sbox() Traceback (most recent call last): ... AttributeError: '<class 'sage.crypto.mq.mpolynomialsystemgenerator.MPolynomialSystemGenerator'>' object has no attribute '_sbox'... 
 - varformatstr(name)[source]¶
- Return format string for a given name ‘name’ which is understood by print et al. - Such a format string is used to construct variable names. Typically those format strings are somewhat like ‘name%02d%02d’ such that rounds and offset in a block can be encoded. - INPUT: - name– string
 - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.varformatstr('K') Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.varformatstr('K') Traceback (most recent call last): ... NotImplementedError 
 - vars(name, round)[source]¶
- Return a list of variables given a name ‘name’ and an index ‘round’. - INPUT: - name– string
- round– integer index
 - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.vars('K',0) Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.vars('K',Integer(0)) Traceback (most recent call last): ... NotImplementedError 
 - varstrs(name, round)[source]¶
- Return a list of variable names given a name ‘name’ and an index ‘round’. - This function is typically used by self._vars. - INPUT: - name– string
- round– integer index
 - EXAMPLES: - sage: from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator sage: msg = MPolynomialSystemGenerator() sage: msg.varstrs('K', i) # needs sage.all Traceback (most recent call last): ... NotImplementedError - >>> from sage.all import * >>> from sage.crypto.mq.mpolynomialsystemgenerator import MPolynomialSystemGenerator >>> msg = MPolynomialSystemGenerator() >>> msg.varstrs('K', i) # needs sage.all Traceback (most recent call last): ... NotImplementedError