changeset 159:77b3c6d62119

Added VIFF 0.7 API doc.
author Martin Geisler <mg@daimi.au.dk>
date Sun, 21 Sep 2008 13:19:25 +0200
parents c767e8337300
children 48c883f778ea
files api/0.7/api-objects.txt api/0.7/class-tree.html api/0.7/class_hierarchy_for_activerunt.gif api/0.7/class_hierarchy_for_activetoft.gif api/0.7/class_hierarchy_for_activetoft_2.gif api/0.7/class_hierarchy_for_basicactiv.gif api/0.7/class_hierarchy_for_basicrunti.gif api/0.7/class_hierarchy_for_comparison.gif api/0.7/class_hierarchy_for_comparison_2.gif api/0.7/class_hierarchy_for_fieldeleme.gif api/0.7/class_hierarchy_for_gf256.gif api/0.7/class_hierarchy_for_matrix.gif api/0.7/class_hierarchy_for_paillierru.gif api/0.7/class_hierarchy_for_prf.gif api/0.7/class_hierarchy_for_runtime.gif api/0.7/class_hierarchy_for_share.gif api/0.7/class_hierarchy_for_shareexcha.gif api/0.7/class_hierarchy_for_shareexcha_2.gif api/0.7/class_hierarchy_for_sharelist.gif api/0.7/class_hierarchy_for_toft05runt.gif api/0.7/class_hierarchy_for_toft07runt.gif api/0.7/class_hierarchy_for_triplesprs.gif api/0.7/crarr.png api/0.7/epydoc-log.html api/0.7/epydoc.css api/0.7/epydoc.js api/0.7/frames.html api/0.7/help.html api/0.7/identifier-index.html api/0.7/index.html api/0.7/module-tree.html api/0.7/redirect.html api/0.7/toc-everything.html api/0.7/toc-viff-module.html api/0.7/toc-viff.active-module.html api/0.7/toc-viff.comparison-module.html api/0.7/toc-viff.config-module.html api/0.7/toc-viff.equality-module.html api/0.7/toc-viff.field-module.html api/0.7/toc-viff.matrix-module.html api/0.7/toc-viff.paillier-module.html api/0.7/toc-viff.prss-module.html api/0.7/toc-viff.runtime-module.html api/0.7/toc-viff.shamir-module.html api/0.7/toc-viff.util-module.html api/0.7/toc.html api/0.7/viff-module.html api/0.7/viff-pysrc.html api/0.7/viff.active-module.html api/0.7/viff.active-pysrc.html api/0.7/viff.active.ActiveRuntime-class.html api/0.7/viff.active.BasicActiveRuntime-class.html api/0.7/viff.active.BrachaBroadcastMixin-class.html api/0.7/viff.active.TriplesHyperinvertibleMatricesMixin-class.html api/0.7/viff.active.TriplesPRSSMixin-class.html api/0.7/viff.comparison-module.html api/0.7/viff.comparison-pysrc.html api/0.7/viff.comparison.ActiveToft05Runtime-class.html api/0.7/viff.comparison.ActiveToft07Runtime-class.html api/0.7/viff.comparison.ComparisonToft05Mixin-class.html api/0.7/viff.comparison.ComparisonToft07Mixin-class.html api/0.7/viff.comparison.Toft05Runtime-class.html api/0.7/viff.comparison.Toft07Runtime-class.html api/0.7/viff.config-module.html api/0.7/viff.config-pysrc.html api/0.7/viff.config.Player-class.html api/0.7/viff.equality-module.html api/0.7/viff.equality-pysrc.html api/0.7/viff.equality.ProbabilisticEqualityMixin-class.html api/0.7/viff.field-module.html api/0.7/viff.field-pysrc.html api/0.7/viff.field.FieldElement-class.html api/0.7/viff.field.GF256-class.html api/0.7/viff.matrix-module.html api/0.7/viff.matrix-pysrc.html api/0.7/viff.matrix.Matrix-class.html api/0.7/viff.paillier-module.html api/0.7/viff.paillier-pysrc.html api/0.7/viff.paillier.PaillierRuntime-class.html api/0.7/viff.prss-module.html api/0.7/viff.prss-pysrc.html api/0.7/viff.prss.PRF-class.html api/0.7/viff.runtime-module.html api/0.7/viff.runtime-pysrc.html api/0.7/viff.runtime.BasicRuntime-class.html api/0.7/viff.runtime.Runtime-class.html api/0.7/viff.runtime.Share-class.html api/0.7/viff.runtime.ShareExchanger-class.html api/0.7/viff.runtime.ShareExchangerFactory-class.html api/0.7/viff.runtime.ShareList-class.html api/0.7/viff.shamir-module.html api/0.7/viff.shamir-pysrc.html api/0.7/viff.util-module.html api/0.7/viff.util-pysrc.html
diffstat 94 files changed, 23200 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/api-objects.txt	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,495 @@
+viff	viff-module.html
+viff.release	viff-module.html#release
+viff.active	viff.active-module.html
+viff.active.hyper	viff.matrix-module.html#hyper
+viff.active.increment_pc	viff.runtime-module.html#increment_pc
+viff.active.preprocess	viff.runtime-module.html#preprocess
+viff.active.gather_shares	viff.runtime-module.html#gather_shares
+viff.comparison	viff.comparison-module.html
+viff.comparison.increment_pc	viff.runtime-module.html#increment_pc
+viff.comparison.gather_shares	viff.runtime-module.html#gather_shares
+viff.config	viff.config-module.html
+viff.config.generate_subsets	viff.prss-module.html#generate_subsets
+viff.config.generate_configs	viff.config-module.html#generate_configs
+viff.config.load_config	viff.config-module.html#load_config
+viff.equality	viff.equality-module.html
+viff.equality.legendre_mod_p	viff.equality-module.html#legendre_mod_p
+viff.equality.increment_pc	viff.runtime-module.html#increment_pc
+viff.field	viff.field-module.html
+viff.field._generate_tables	viff.field-module.html#_generate_tables
+viff.field._mul_table	viff.field-module.html#_mul_table
+viff.field.GF	viff.field-module.html#GF
+viff.field._field_cache	viff.field-module.html#_field_cache
+viff.field._inv_table	viff.field-module.html#_inv_table
+viff.matrix	viff.matrix-module.html
+viff.matrix.hyper	viff.matrix-module.html#hyper
+viff.paillier	viff.paillier-module.html
+viff.paillier.generate_keys	viff.paillier-module.html#generate_keys
+viff.paillier.encrypt	viff.paillier-module.html#encrypt
+viff.paillier.decrypt	viff.paillier-module.html#decrypt
+viff.paillier.L	viff.paillier-module.html#L
+viff.paillier.increment_pc	viff.runtime-module.html#increment_pc
+viff.paillier.find_random_prime	viff.util-module.html#find_random_prime
+viff.paillier.gather_shares	viff.runtime-module.html#gather_shares
+viff.prss	viff.prss-module.html
+viff.prss.random_replicated_sharing	viff.prss-module.html#random_replicated_sharing
+viff.prss.prss_lsb	viff.prss-module.html#prss_lsb
+viff.prss.generate_subsets	viff.prss-module.html#generate_subsets
+viff.prss.prss	viff.prss-module.html#prss
+viff.prss.convert_replicated_shamir	viff.prss-module.html#convert_replicated_shamir
+viff.prss.prss_zero	viff.prss-module.html#prss_zero
+viff.runtime	viff.runtime-module.html
+viff.runtime.preprocess	viff.runtime-module.html#preprocess
+viff.runtime.prss	viff.prss-module.html#prss
+viff.runtime.prss_lsb	viff.prss-module.html#prss_lsb
+viff.runtime.wrapper	viff.util-module.html#wrapper
+viff.runtime.make_runtime_class	viff.runtime-module.html#make_runtime_class
+viff.runtime.increment_pc	viff.runtime-module.html#increment_pc
+viff.runtime.prss_zero	viff.prss-module.html#prss_zero
+viff.runtime.create_runtime	viff.runtime-module.html#create_runtime
+viff.runtime.gather_shares	viff.runtime-module.html#gather_shares
+viff.shamir	viff.shamir-module.html
+viff.shamir.share	viff.shamir-module.html#share
+viff.shamir._recombination_vectors	viff.shamir-module.html#_recombination_vectors
+viff.shamir.recombine	viff.shamir-module.html#recombine
+viff.shamir.verify_sharing	viff.shamir-module.html#verify_sharing
+viff.util	viff.util-module.html
+viff.util.deprecation	viff.util-module.html#deprecation
+viff.util.dlift	viff.util-module.html#dlift
+viff.util.rand	viff.util-module.html#rand
+viff.util.find_prime	viff.util-module.html#find_prime
+viff.util.wrapper	viff.util-module.html#wrapper
+viff.util.dprint	viff.util-module.html#dprint
+viff.util._seed	viff.util-module.html#_seed
+viff.util.find_random_prime	viff.util-module.html#find_random_prime
+viff.util.clone_deferred	viff.util-module.html#clone_deferred
+viff.active.ActiveRuntime	viff.active.ActiveRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.active.TriplesPRSSMixin.get_triple	viff.active.TriplesPRSSMixin-class.html#get_triple
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.active.TriplesPRSSMixin.generate_triples	viff.active.TriplesPRSSMixin-class.html#generate_triples
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.active.BasicActiveRuntime.mul	viff.active.BasicActiveRuntime-class.html#mul
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.active.BasicActiveRuntime	viff.active.BasicActiveRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.active.BasicActiveRuntime.mul	viff.active.BasicActiveRuntime-class.html#mul
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.active.BrachaBroadcastMixin	viff.active.BrachaBroadcastMixin-class.html
+viff.active.BrachaBroadcastMixin.broadcast	viff.active.BrachaBroadcastMixin-class.html#broadcast
+viff.active.BrachaBroadcastMixin._broadcast	viff.active.BrachaBroadcastMixin-class.html#_broadcast
+viff.active.TriplesHyperinvertibleMatricesMixin	viff.active.TriplesHyperinvertibleMatricesMixin-class.html
+viff.active.TriplesHyperinvertibleMatricesMixin.double_share_random	viff.active.TriplesHyperinvertibleMatricesMixin-class.html#double_share_random
+viff.active.TriplesHyperinvertibleMatricesMixin.get_triple	viff.active.TriplesHyperinvertibleMatricesMixin-class.html#get_triple
+viff.active.TriplesHyperinvertibleMatricesMixin.generate_triples	viff.active.TriplesHyperinvertibleMatricesMixin-class.html#generate_triples
+viff.active.TriplesHyperinvertibleMatricesMixin._hyper	viff.active.TriplesHyperinvertibleMatricesMixin-class.html#_hyper
+viff.active.TriplesHyperinvertibleMatricesMixin.single_share_random	viff.active.TriplesHyperinvertibleMatricesMixin-class.html#single_share_random
+viff.active.TriplesPRSSMixin	viff.active.TriplesPRSSMixin-class.html
+viff.active.TriplesPRSSMixin.get_triple	viff.active.TriplesPRSSMixin-class.html#get_triple
+viff.active.TriplesPRSSMixin.generate_triples	viff.active.TriplesPRSSMixin-class.html#generate_triples
+viff.comparison.ActiveToft05Runtime	viff.comparison.ActiveToft05Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.active.TriplesPRSSMixin.get_triple	viff.active.TriplesPRSSMixin-class.html#get_triple
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft05Mixin.greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.active.TriplesPRSSMixin.generate_triples	viff.active.TriplesPRSSMixin-class.html#generate_triples
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.active.BasicActiveRuntime.mul	viff.active.BasicActiveRuntime-class.html#mul
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft05Mixin.convert_bit_share	viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.comparison.ComparisonToft05Mixin._diamond	viff.comparison.ComparisonToft05Mixin-class.html#_diamond
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.comparison.ActiveToft07Runtime	viff.comparison.ActiveToft07Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.active.TriplesPRSSMixin.get_triple	viff.active.TriplesPRSSMixin-class.html#get_triple
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_online	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft07Mixin.greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.active.TriplesPRSSMixin.generate_triples	viff.active.TriplesPRSSMixin-class.html#generate_triples
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft07Mixin.convert_bit_share	viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.active.BasicActiveRuntime.mul	viff.active.BasicActiveRuntime-class.html#mul
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.comparison.ComparisonToft05Mixin	viff.comparison.ComparisonToft05Mixin-class.html
+viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal
+viff.comparison.ComparisonToft05Mixin.greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal
+viff.comparison.ComparisonToft05Mixin.convert_bit_share	viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share
+viff.comparison.ComparisonToft05Mixin._diamond	viff.comparison.ComparisonToft05Mixin-class.html#_diamond
+viff.comparison.ComparisonToft07Mixin	viff.comparison.ComparisonToft07Mixin-class.html
+viff.comparison.ComparisonToft07Mixin.convert_bit_share	viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal
+viff.comparison.ComparisonToft07Mixin.greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_online	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc
+viff.comparison.Toft05Runtime	viff.comparison.Toft05Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft05Mixin.greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft05Mixin.convert_bit_share	viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.comparison.ComparisonToft05Mixin._diamond	viff.comparison.ComparisonToft05Mixin-class.html#_diamond
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.comparison.Toft07Runtime	viff.comparison.Toft07Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_online	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft07Mixin.greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft07Mixin.convert_bit_share	viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.config.Player	viff.config.Player-class.html
+viff.config.Player.__init__	viff.config.Player-class.html#__init__
+viff.config.Player.__repr__	viff.config.Player-class.html#__repr__
+viff.config.Player.dealer_prfs	viff.config.Player-class.html#dealer_prfs
+viff.config.Player.prfs	viff.config.Player-class.html#prfs
+viff.equality.ProbabilisticEqualityMixin	viff.equality.ProbabilisticEqualityMixin-class.html
+viff.equality.ProbabilisticEqualityMixin.equal	viff.equality.ProbabilisticEqualityMixin-class.html#equal
+viff.field.FieldElement	viff.field.FieldElement-class.html
+viff.field.GF256	viff.field.GF256-class.html
+viff.field.GF256.__rtruediv__	viff.field.GF256-class.html#__rtruediv__
+viff.field.GF256.__str__	viff.field.GF256-class.html#__str__
+viff.field.GF256.__radd__	viff.field.GF256-class.html#__radd__
+viff.field.GF256.__truediv__	viff.field.GF256-class.html#__truediv__
+viff.field.GF256.__rsub__	viff.field.GF256-class.html#__rsub__
+viff.field.GF256.__rdiv__	viff.field.GF256-class.html#__rdiv__
+viff.field.GF256.__rmul__	viff.field.GF256-class.html#__rmul__
+viff.field.GF256.__init__	viff.field.GF256-class.html#__init__
+viff.field.GF256.field	viff.field.GF256-class.html
+viff.field.GF256.__rfloordiv__	viff.field.GF256-class.html#__rfloordiv__
+viff.field.GF256.modulus	viff.field.GF256-class.html#modulus
+viff.field.GF256.__neg__	viff.field.GF256-class.html#__neg__
+viff.field.GF256.__ne__	viff.field.GF256-class.html#__ne__
+viff.field.GF256.__invert__	viff.field.GF256-class.html#__invert__
+viff.field.GF256.__pow__	viff.field.GF256-class.html#__pow__
+viff.field.GF256.__add__	viff.field.GF256-class.html#__add__
+viff.field.GF256.__eq__	viff.field.GF256-class.html#__eq__
+viff.field.GF256.__rxor__	viff.field.GF256-class.html#__rxor__
+viff.field.GF256.__nonzero__	viff.field.GF256-class.html#__nonzero__
+viff.field.GF256.__xor__	viff.field.GF256-class.html#__xor__
+viff.field.GF256.__div__	viff.field.GF256-class.html#__div__
+viff.field.GF256.__mul__	viff.field.GF256-class.html#__mul__
+viff.field.GF256.__repr__	viff.field.GF256-class.html#__repr__
+viff.field.GF256.__floordiv__	viff.field.GF256-class.html#__floordiv__
+viff.field.GF256.__hash__	viff.field.GF256-class.html#__hash__
+viff.field.GF256.__sub__	viff.field.GF256-class.html#__sub__
+viff.matrix.Matrix	viff.matrix.Matrix-class.html
+viff.matrix.Matrix.determinant	viff.matrix.Matrix-class.html#determinant
+viff.matrix.Matrix.__add__	viff.matrix.Matrix-class.html#__add__
+viff.matrix.Matrix.__getitem__	viff.matrix.Matrix-class.html#__getitem__
+viff.matrix.Matrix.__str__	viff.matrix.Matrix-class.html#__str__
+viff.matrix.Matrix.transpose	viff.matrix.Matrix-class.html#transpose
+viff.matrix.Matrix.__radd__	viff.matrix.Matrix-class.html#__radd__
+viff.matrix.Matrix.__setitem__	viff.matrix.Matrix-class.html#__setitem__
+viff.matrix.Matrix._init_set	viff.matrix.Matrix-class.html#_init_set
+viff.matrix.Matrix._init_zeros	viff.matrix.Matrix-class.html#_init_zeros
+viff.matrix.Matrix.__rmul__	viff.matrix.Matrix-class.html#__rmul__
+viff.matrix.Matrix.__init__	viff.matrix.Matrix-class.html#__init__
+viff.matrix.Matrix.__mul__	viff.matrix.Matrix-class.html#__mul__
+viff.paillier.PaillierRuntime	viff.paillier.PaillierRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.paillier.PaillierRuntime.add_player	viff.paillier.PaillierRuntime-class.html#add_player
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.paillier.PaillierRuntime.share	viff.paillier.PaillierRuntime-class.html#share
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.paillier.PaillierRuntime.open	viff.paillier.PaillierRuntime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.BasicRuntime.__init__	viff.runtime.BasicRuntime-class.html#__init__
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.paillier.PaillierRuntime.add	viff.paillier.PaillierRuntime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.paillier.PaillierRuntime.mul	viff.paillier.PaillierRuntime-class.html#mul
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.paillier.PaillierRuntime.prss_share_random	viff.paillier.PaillierRuntime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.prss.PRF	viff.prss.PRF-class.html
+viff.prss.PRF.__call__	viff.prss.PRF-class.html#__call__
+viff.prss.PRF.__init__	viff.prss.PRF-class.html#__init__
+viff.runtime.BasicRuntime	viff.runtime.BasicRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.BasicRuntime.__init__	viff.runtime.BasicRuntime-class.html#__init__
+viff.runtime.Runtime	viff.runtime.Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.Runtime.prss_share_zero	viff.runtime.Runtime-class.html#prss_share_zero
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.Runtime.prss_share_bit_double	viff.runtime.Runtime-class.html#prss_share_bit_double
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.prss_double_share	viff.runtime.Runtime-class.html#prss_double_share
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.Runtime.prss_shamir_share_bit_double	viff.runtime.Runtime-class.html#prss_shamir_share_bit_double
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.runtime.Share	viff.runtime.Share-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.Share.__init__	viff.runtime.Share-class.html#__init__
+viff.runtime.Share.__neq__	viff.runtime.Share-class.html#__neq__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__eq__	viff.runtime.Share-class.html#__eq__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
+viff.runtime.ShareExchanger	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchanger.sendShare	viff.runtime.ShareExchanger-class.html#sendShare
+viff.runtime.ShareExchanger.sendData	viff.runtime.ShareExchanger-class.html#sendData
+viff.runtime.ShareExchanger.stringReceived	viff.runtime.ShareExchanger-class.html#stringReceived
+viff.runtime.ShareExchanger.__init__	viff.runtime.ShareExchanger-class.html#__init__
+viff.runtime.ShareExchanger.connectionMade	viff.runtime.ShareExchanger-class.html#connectionMade
+viff.runtime.ShareExchanger.incoming_data	viff.runtime.ShareExchanger-class.html#incoming_data
+viff.runtime.ShareExchanger.connectionLost	viff.runtime.ShareExchanger-class.html#connectionLost
+viff.runtime.ShareExchanger.loseConnection	viff.runtime.ShareExchanger-class.html#loseConnection
+viff.runtime.ShareExchangerFactory	viff.runtime.ShareExchangerFactory-class.html
+viff.runtime.ShareExchangerFactory.protocol	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchangerFactory.__init__	viff.runtime.ShareExchangerFactory-class.html#__init__
+viff.runtime.ShareExchangerFactory.identify_peer	viff.runtime.ShareExchangerFactory-class.html#identify_peer
+viff.runtime.ShareExchangerFactory.clientConnectionLost	viff.runtime.ShareExchangerFactory-class.html#clientConnectionLost
+viff.runtime.ShareList	viff.runtime.ShareList-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.ShareList.__init__	viff.runtime.ShareList-class.html#__init__
+viff.runtime.Share.__neq__	viff.runtime.Share-class.html#__neq__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__eq__	viff.runtime.Share-class.html#__eq__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.ShareList._callback_fired	viff.runtime.ShareList-class.html#_callback_fired
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/class-tree.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="class-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">twisted.internet.protocol.BaseProtocol</strong>:
+      <em class="summary">This is the abstract superclass of all protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.Protocol</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.IntNStringReceiver</strong>:
+      <em class="summary">Generic class for length prefixed protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime.BasicRuntime-class.html">viff.runtime.BasicRuntime</a></strong>:
+      <em class="summary">Basic VIFF runtime with no crypto.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.paillier.PaillierRuntime-class.html">viff.paillier.PaillierRuntime</a></strong>:
+      <em class="summary">Two-player runtime based on the Paillier crypto system.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime.Runtime-class.html">viff.runtime.Runtime</a></strong>:
+      <em class="summary">The VIFF runtime.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.active.BasicActiveRuntime-class.html">viff.active.BasicActiveRuntime</a></strong>:
+      <em class="summary">Basic runtime secure against active adversaries.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.active.ActiveRuntime-class.html">viff.active.ActiveRuntime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-docutils literal"><span class="pre">BasicActiveRuntime</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">TriplesPRSSMixin</span></tt>.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft05Runtime-class.html">viff.comparison.ActiveToft05Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-docutils literal"><span class="pre">ComparisonToft05Mixin</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft07Runtime-class.html">viff.comparison.ActiveToft07Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-docutils literal"><span class="pre">ComparisonToft07Mixin</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft05Runtime-class.html">viff.comparison.Toft05Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-docutils literal"><span class="pre">ComparisonToft05Mixin</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">Runtime</span> <span class="pre">&lt;viff.runtime.Runtime&gt;</span></tt>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft07Runtime-class.html">viff.comparison.Toft07Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-docutils literal"><span class="pre">ComparisonToft07Mixin</span></tt> and
+<tt class="rst-docutils literal"><span class="pre">Runtime</span> <span class="pre">&lt;viff.runtime.Runtime&gt;</span></tt>.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.active.BrachaBroadcastMixin-class.html">viff.active.BrachaBroadcastMixin</a></strong>:
+      <em class="summary">Bracha broadcast mixin class.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ComparisonToft05Mixin-class.html">viff.comparison.ComparisonToft05Mixin</a></strong>:
+      <em class="summary">Comparison by Tomas Toft, 2005.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft05Runtime-class.html">viff.comparison.ActiveToft05Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft05Mixin</span></tt> and
+<tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft05Runtime-class.html">viff.comparison.Toft05Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft05Mixin</span></tt> and
+<tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">Runtime</span> <span class="pre">&lt;viff.runtime.Runtime&gt;</span></tt>.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ComparisonToft07Mixin-class.html">viff.comparison.ComparisonToft07Mixin</a></strong>:
+      <em class="summary">Efficient comparison by Tomas Toft 2007.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft07Runtime-class.html">viff.comparison.ActiveToft07Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft07Mixin</span></tt> and
+<tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft07Runtime-class.html">viff.comparison.Toft07Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft07Mixin</span></tt> and
+<tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">Runtime</span> <span class="pre">&lt;viff.runtime.Runtime&gt;</span></tt>.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.Factory</strong>:
+      <em class="summary">This is a factory which produces protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.ClientFactory</strong>:
+      <em class="summary">A Protocol factory for clients.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.ReconnectingClientFactory</strong>:
+      <em class="summary">My clients auto-reconnect with an exponential back-off.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.ServerFactory</strong>:
+      <em class="summary">Subclass this to indicate that your protocol.Factory is only usable
+        for servers.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.config.Player-class.html">viff.config.Player</a></strong>:
+      <em class="summary">Wrapper for information about a player in the protocol.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.equality.ProbabilisticEqualityMixin-class.html">viff.equality.ProbabilisticEqualityMixin</a></strong>:
+      <em class="summary">This class implements probabilistic constant-round secure 
+        equality-testing of secret shared numbers.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">viff.active.TriplesHyperinvertibleMatricesMixin</a></strong>:
+      <em class="summary">Mixin class which generates multiplication triples using
+hyperinvertible matrices.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.active.TriplesPRSSMixin-class.html">viff.active.TriplesPRSSMixin</a></strong>:
+      <em class="summary">Mixin class for generating multiplication triples using PRSS.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.active.ActiveRuntime-class.html">viff.active.ActiveRuntime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">BasicActiveRuntime</span></tt> and
+<tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">TriplesPRSSMixin</span></tt>.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft05Runtime-class.html">viff.comparison.ActiveToft05Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft05Mixin</span></tt> and
+<tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ActiveToft07Runtime-class.html">viff.comparison.ActiveToft07Runtime</a></strong>:
+      <em class="summary">Default mix of <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">ComparisonToft07Mixin</span></tt> and
+<tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">ActiveRuntime</span> <span class="pre">&lt;viff.runtime.ActiveRuntime&gt;</span></tt>.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.protocols.basic._PauseableMixin</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.IntNStringReceiver</strong>:
+      <em class="summary">Generic class for length prefixed protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.defer.Deferred</strong>:
+      <em class="summary">This is a callback which will be put off until later.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.Share-class.html">viff.runtime.Share</a></strong>:
+      <em class="summary">A shared number.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareList-class.html">viff.runtime.ShareList</a></strong>:
+      <em class="summary">Create a share that waits on a number of other shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.field.FieldElement-class.html">viff.field.FieldElement</a></strong>:
+      <em class="summary">Common base class for elements.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field.GF256-class.html">viff.field.GF256</a></strong>:
+      <em class="summary">Models an element of the GF(2^8) field.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix.Matrix-class.html">viff.matrix.Matrix</a></strong>:
+      <em class="summary">A matrix.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.prss.PRF-class.html">viff.prss.PRF</a></strong>:
+      <em class="summary">Models a pseudo random function (a PRF).</em>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
Binary file api/0.7/class_hierarchy_for_activerunt.gif has changed
Binary file api/0.7/class_hierarchy_for_activetoft.gif has changed
Binary file api/0.7/class_hierarchy_for_activetoft_2.gif has changed
Binary file api/0.7/class_hierarchy_for_basicactiv.gif has changed
Binary file api/0.7/class_hierarchy_for_basicrunti.gif has changed
Binary file api/0.7/class_hierarchy_for_comparison.gif has changed
Binary file api/0.7/class_hierarchy_for_comparison_2.gif has changed
Binary file api/0.7/class_hierarchy_for_fieldeleme.gif has changed
Binary file api/0.7/class_hierarchy_for_gf256.gif has changed
Binary file api/0.7/class_hierarchy_for_matrix.gif has changed
Binary file api/0.7/class_hierarchy_for_paillierru.gif has changed
Binary file api/0.7/class_hierarchy_for_prf.gif has changed
Binary file api/0.7/class_hierarchy_for_runtime.gif has changed
Binary file api/0.7/class_hierarchy_for_share.gif has changed
Binary file api/0.7/class_hierarchy_for_shareexcha.gif has changed
Binary file api/0.7/class_hierarchy_for_shareexcha_2.gif has changed
Binary file api/0.7/class_hierarchy_for_sharelist.gif has changed
Binary file api/0.7/class_hierarchy_for_toft05runt.gif has changed
Binary file api/0.7/class_hierarchy_for_toft07runt.gif has changed
Binary file api/0.7/class_hierarchy_for_triplesprs.gif has changed
Binary file api/0.7/crarr.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/epydoc-log.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Epydoc Log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="epydoc">Epydoc Log</h1>
+<p class="log">Epydoc started at Sun Sep 21 13:15:35 2008</p><div class="log-block"><h2 class="log-hdr">In /home/mg/src/viff/viff/test/__init__.py:
+No documentation available!</h2></div><div class="log-info">No warnings or errors!</div><div class="log-block"><h2 class="log-hdr">Epydoc Options</h2><div class="log-info">
+<table border="0" cellpadding="0" cellspacing="0">
+<tr valign="top" class="opt-changed"><td valign="top">configfiles</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['epydoc.conf']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">include_log</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">names</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['viff']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_name</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'VIFF: Virtual Ideal Functionality Framework'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_url</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'http://viff.dk/'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">target</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'doc/api'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbose</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbosity</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">action</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'html'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">css</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">debug</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">docformat</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'epytext'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">dotpath</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['test']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['mod', 'func', 'data', 'const', 'class', 'exc', 'meth', 'attr', 'exc', 'file', 'envvar']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_root</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">fail_on</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font_size</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graphs</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['classtree']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">help_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">include_source_code</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">inheritance</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'listed'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">list_classes_separately</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">load_pickle</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">prj_link</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">profile</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">pstat_files</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">quiet</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>0</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">redundant_details</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_frames</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_imports</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_private</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">simple_term</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">src_code_tab_width</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>8</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">top_page</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr></table>
+</div>
+</div><p class="log">Epydoc finished at Sun Sep 21 13:15:46 2008</p>
+<p class="log">(Elapsed time: 11 seconds)</p></body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/epydoc.css	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/epydoc.js	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,293 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide&nbsp;private":"show&nbsp;private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+          else if (elts[i].className == "public") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+          }
+        }
+        // Update all table rows containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+        }
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+    s += "</tt>";
+    s += "&nbsp;&nbsp;<tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/frames.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/help.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="help.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for VIFF: Virtual Ideal Functionality Framework.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/identifier-index.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,803 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="identifier-index.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+  N
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+ <a href="#W">W</a>
+ <a href="#X">X</a>
+  Y
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.active-module.html">active</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ActiveToft07Runtime-class.html">ActiveToft07Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.active.ActiveRuntime-class.html">ActiveRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active-module.html">viff.active</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#add">add()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#add_player">add_player()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.ActiveToft05Runtime-class.html">ActiveToft05Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#add">add()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.active.BasicActiveRuntime-class.html">BasicActiveRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active-module.html">viff.active</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.BrachaBroadcastMixin-class.html">BrachaBroadcastMixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active-module.html">viff.active</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.BrachaBroadcastMixin-class.html#broadcast">broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.BrachaBroadcastMixin-class.html">BrachaBroadcastMixin</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#clientConnectionLost">clientConnectionLost()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share">convert_bit_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#clone">clone()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config-module.html">config</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#convert_replicated_shamir">convert_replicated_shamir()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#clone_deferred">clone_deferred()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#connectionLost">connectionLost()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#create_runtime">create_runtime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison-module.html">comparison</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#connectionMade">connectionMade()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share">convert_bit_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#dealer_prfs">dealer_prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#determinant">determinant()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dprint">dprint()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier-module.html#decrypt">decrypt()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier-module.html">viff.paillier</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dlift">dlift()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#deprecation">deprecation()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#double_share_random">double_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier-module.html#encrypt">encrypt()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier-module.html">viff.paillier</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.equality.ProbabilisticEqualityMixin-class.html#equal">equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.equality.ProbabilisticEqualityMixin-class.html">ProbabilisticEqualityMixin</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.equality-module.html">equality</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field-module.html">field</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#find_prime">find_prime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.FieldElement-class.html">FieldElement</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#find_random_prime">find_random_prime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#gather_shares">gather_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesPRSSMixin-class.html#generate_triples">generate_triples()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesPRSSMixin-class.html">TriplesPRSSMixin</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal">greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config-module.html#generate_configs">generate_configs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#get_triple">get_triple()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal">greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier-module.html#generate_keys">generate_keys()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier-module.html">viff.paillier</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesPRSSMixin-class.html#get_triple">get_triple()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesPRSSMixin-class.html">TriplesPRSSMixin</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online">greater_than_equal_online()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#generate_subsets">generate_subsets()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#GF">GF()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc">greater_than_equal_preproc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#generate_triples">generate_triples()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html">GF256</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html#hyper">hyper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#identify_peer">identify_peer()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#increment_pc">increment_pc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier-module.html#L">L()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier-module.html">viff.paillier</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config-module.html#load_config">load_config()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.equality-module.html#legendre_mod_p">legendre_mod_p()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.equality-module.html">viff.equality</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#loseConnection">loseConnection()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#make_runtime_class">make_runtime_class()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#modulus">modulus</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html">matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.BasicActiveRuntime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.BasicActiveRuntime-class.html">BasicActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html">Matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#open">open()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#open">open()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier-module.html">paillier</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.equality.ProbabilisticEqualityMixin-class.html">ProbabilisticEqualityMixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.equality-module.html">viff.equality</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share_bit_double">prss_share_bit_double()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier-module.html">viff.paillier</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html">prss</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#prss_share_random">prss_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html">Player</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#prss">prss()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_double_share">prss_double_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share_zero">prss_share_zero()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#preprocess">preprocess()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#prss_lsb">prss_lsb()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#prss_zero">prss_zero()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html">PRF</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_shamir_share_bit_double">prss_shamir_share_bit_double()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#prfs">prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share">prss_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#rand">rand</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#recombine">recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html">runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#random_replicated_sharing">random_replicated_sharing()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff-module.html#release">release()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html">Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.paillier.PaillierRuntime-class.html#share">share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.paillier.PaillierRuntime-class.html">PaillierRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#single_share_random">single_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendData">sendData()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#share">share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#stringReceived">stringReceived()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendShare">sendShare()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#sub">sub()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html">shamir</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html">ShareList</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html">Share</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.Toft05Runtime-class.html">Toft05Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#transpose">transpose()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesPRSSMixin-class.html">TriplesPRSSMixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active-module.html">viff.active</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.Toft07Runtime-class.html">Toft07Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active-module.html">viff.active</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html">util</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#verify_sharing">verify_sharing()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff-module.html">viff</a></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#wrapper">wrapper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#xor">xor()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__le__">__le__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__sub__">__sub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__lt__">__lt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__xor__">__xor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.BrachaBroadcastMixin-class.html#_broadcast">_broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.BrachaBroadcastMixin-class.html">BrachaBroadcastMixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__call__">__call__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#_callback_fired">_callback_fired()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__div__">__div__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_diamond">_diamond()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__ne__">__ne__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares">_exchange_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__neg__">__neg__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_expect_data">_expect_data()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__ge__">__ge__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__neq__">__neq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_expect_share">_expect_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__nonzero__">__nonzero__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_field_cache">_field_cache</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__gt__">__gt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__pow__">__pow__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_generate_tables">_generate_tables()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__rdiv__">__rdiv__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#_hyper">_hyper</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_set">_init_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_zeros">_init_zeros()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_inv_table">_inv_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_mul_table">_mul_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rsub__">__rsub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#_recombination_vectors">_recombination_vectors</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rxor__">__rxor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_recombine">_recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#_seed">_seed</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_shamir_share">_shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__invert__">__invert__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/index.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/module-tree.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="module-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="viff-module.html">viff</a></strong>: <em class="summary">Virtual Ideal Functionality Framework.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.active-module.html">viff.active</a></strong>: <em class="summary">Actively secure protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison-module.html">viff.comparison</a></strong>: <em class="summary">Comparison protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.equality-module.html">viff.equality</a></strong>: <em class="summary">Equality protocol.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Matrix operations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.paillier-module.html">viff.paillier</a></strong>: <em class="summary">Paillier crypto system and two-party runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/redirect.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["viff.active.TriplesHyperinvertibleMatricesMixin-c", "viff.equality.ProbabilisticEqualityMixin-c", "viff.comparison.ComparisonToft05Mixin-c", "viff.comparison.ComparisonToft07Mixin-c", "viff.comparison.ActiveToft05Runtime-c", "viff.comparison.ActiveToft07Runtime-c", "viff.runtime.ShareExchangerFactory-c", "viff.active.BrachaBroadcastMixin-c", "viff.active.BasicActiveRuntime-c", "viff.comparison.Toft05Runtime-c", "viff.comparison.Toft07Runtime-c", "viff.paillier.PaillierRuntime-c", "viff.active.TriplesPRSSMixin-c", "viff.runtime.ShareExchanger-c", "viff.active.ActiveRuntime-c", "viff.runtime.BasicRuntime-c", "viff.field.FieldElement-c", "viff.runtime.ShareList-c", "viff.runtime.Runtime-c", "viff.config.Player-c", "viff.matrix.Matrix-c", "viff.runtime.Share-c", "viff.field.GF256-c", "viff.comparison-m", "viff.equality-m", "viff.paillier-m", "viff.prss.PRF-c", "viff.runtime-m", "viff.active-m", "viff.config-m", "viff.matrix-m", "viff.shamir-m", "viff.field-m", "viff.prss-m", "viff.util-m", "viff-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-everything.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="viff.active.ActiveRuntime-class.html"
+     >viff.active.ActiveRuntime</a><br />    <a target="mainFrame" href="viff.active.BasicActiveRuntime-class.html"
+     >viff.active.BasicActiveRuntime</a><br />    <a target="mainFrame" href="viff.active.BrachaBroadcastMixin-class.html"
+     >viff.active.BrachaBroadcastMixin</a><br />    <a target="mainFrame" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html"
+     >viff.active.TriplesHyperinvertibleMatricesMixin</a><br />    <a target="mainFrame" href="viff.active.TriplesPRSSMixin-class.html"
+     >viff.active.TriplesPRSSMixin</a><br />    <a target="mainFrame" href="viff.comparison.ActiveToft05Runtime-class.html"
+     >viff.comparison.ActiveToft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.ActiveToft07Runtime-class.html"
+     >viff.comparison.ActiveToft07Runtime</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft05Mixin-class.html"
+     >viff.comparison.ComparisonToft05Mixin</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft07Mixin-class.html"
+     >viff.comparison.ComparisonToft07Mixin</a><br />    <a target="mainFrame" href="viff.comparison.Toft05Runtime-class.html"
+     >viff.comparison.Toft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.Toft07Runtime-class.html"
+     >viff.comparison.Toft07Runtime</a><br />    <a target="mainFrame" href="viff.config.Player-class.html"
+     >viff.config.Player</a><br />    <a target="mainFrame" href="viff.equality.ProbabilisticEqualityMixin-class.html"
+     >viff.equality.ProbabilisticEqualityMixin</a><br />    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >viff.field.FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >viff.field.GF256</a><br />    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >viff.matrix.Matrix</a><br />    <a target="mainFrame" href="viff.paillier.PaillierRuntime-class.html"
+     >viff.paillier.PaillierRuntime</a><br />    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >viff.prss.PRF</a><br />    <a target="mainFrame" href="viff.runtime.BasicRuntime-class.html"
+     >viff.runtime.BasicRuntime</a><br />    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >viff.runtime.Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >viff.runtime.Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >viff.runtime.ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >viff.runtime.ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >viff.runtime.ShareList</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >viff.config.generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >viff.config.load_config</a><br />    <a target="mainFrame" href="viff.equality-module.html#legendre_mod_p"
+     >viff.equality.legendre_mod_p</a><br />    <a target="mainFrame" href="viff.field-module.html#GF"
+     >viff.field.GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >viff.field._generate_tables</a><br />  </div>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >viff.matrix.hyper</a><br />    <a target="mainFrame" href="viff.paillier-module.html#L"
+     >viff.paillier.L</a><br />    <a target="mainFrame" href="viff.paillier-module.html#decrypt"
+     >viff.paillier.decrypt</a><br />    <a target="mainFrame" href="viff.paillier-module.html#encrypt"
+     >viff.paillier.encrypt</a><br />    <a target="mainFrame" href="viff.paillier-module.html#generate_keys"
+     >viff.paillier.generate_keys</a><br />    <a target="mainFrame" href="viff.prss-module.html#convert_replicated_shamir"
+     >viff.prss.convert_replicated_shamir</a><br />    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >viff.prss.generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >viff.prss.prss</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss_lsb"
+     >viff.prss.prss_lsb</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss_zero"
+     >viff.prss.prss_zero</a><br />    <a target="mainFrame" href="viff.prss-module.html#random_replicated_sharing"
+     >viff.prss.random_replicated_sharing</a><br />    <a target="mainFrame" href="viff-module.html#release"
+     >viff.release</a><br />    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >viff.runtime.create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >viff.runtime.gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >viff.runtime.increment_pc</a><br />    <a target="mainFrame" href="viff.runtime-module.html#make_runtime_class"
+     >viff.runtime.make_runtime_class</a><br />    <a target="mainFrame" href="viff.runtime-module.html#preprocess"
+     >viff.runtime.preprocess</a><br />    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >viff.shamir.recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >viff.shamir.share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >viff.shamir.verify_sharing</a><br />    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >viff.util.clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >viff.util.deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >viff.util.dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >viff.util.dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >viff.util.find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#find_random_prime"
+     >viff.util.find_random_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >viff.util.wrapper</a><br />  <h2 class="toc">All Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >viff.field._field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >viff.field._inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_mul_table"
+     >viff.field._mul_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >viff.shamir._recombination_vectors</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >viff.util._seed</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >viff.util.rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module viff</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff-module.html#release"
+     >release</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.active-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>active</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module active</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.active.ActiveRuntime-class.html"
+     >ActiveRuntime</a><br />    <a target="mainFrame" href="viff.active.BasicActiveRuntime-class.html"
+     >BasicActiveRuntime</a><br />    <a target="mainFrame" href="viff.active.BrachaBroadcastMixin-class.html"
+     >BrachaBroadcastMixin</a><br />    <a target="mainFrame" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html"
+     >TriplesHyperinvertibleMatricesMixin</a><br />    <a target="mainFrame" href="viff.active.TriplesPRSSMixin-class.html"
+     >TriplesPRSSMixin</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.comparison-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>comparison</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module comparison</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.comparison.ActiveToft05Runtime-class.html"
+     >ActiveToft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.ActiveToft07Runtime-class.html"
+     >ActiveToft07Runtime</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft05Mixin-class.html"
+     >ComparisonToft05Mixin</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft07Mixin-class.html"
+     >ComparisonToft07Mixin</a><br />    <a target="mainFrame" href="viff.comparison.Toft05Runtime-class.html"
+     >Toft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.Toft07Runtime-class.html"
+     >Toft07Runtime</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.config-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module config</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.config.Player-class.html"
+     >Player</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >load_config</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.equality-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>equality</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module equality</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.equality.ProbabilisticEqualityMixin-class.html"
+     >ProbabilisticEqualityMixin</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.equality-module.html#legendre_mod_p"
+     >legendre_mod_p</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.field-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module field</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >GF256</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.field-module.html#GF"
+     >GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >_generate_tables</a><br />  </div>
+  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >_field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >_inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_mul_table"
+     >_mul_table</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.matrix-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>matrix</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module matrix</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >Matrix</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >hyper</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.paillier-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>paillier</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module paillier</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.paillier.PaillierRuntime-class.html"
+     >PaillierRuntime</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.paillier-module.html#L"
+     >L</a><br />    <a target="mainFrame" href="viff.paillier-module.html#decrypt"
+     >decrypt</a><br />    <a target="mainFrame" href="viff.paillier-module.html#encrypt"
+     >encrypt</a><br />    <a target="mainFrame" href="viff.paillier-module.html#generate_keys"
+     >generate_keys</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.prss-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>prss</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module prss</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >PRF</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.prss-module.html#convert_replicated_shamir"
+     >convert_replicated_shamir</a><br />    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >prss</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss_lsb"
+     >prss_lsb</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss_zero"
+     >prss_zero</a><br />    <a target="mainFrame" href="viff.prss-module.html#random_replicated_sharing"
+     >random_replicated_sharing</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.runtime-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>runtime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module runtime</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.runtime.BasicRuntime-class.html"
+     >BasicRuntime</a><br />    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >ShareList</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >increment_pc</a><br />    <a target="mainFrame" href="viff.runtime-module.html#make_runtime_class"
+     >make_runtime_class</a><br />    <a target="mainFrame" href="viff.runtime-module.html#preprocess"
+     >preprocess</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.shamir-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>shamir</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module shamir</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >verify_sharing</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >_recombination_vectors</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc-viff.util-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module util</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#find_random_prime"
+     >find_random_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >wrapper</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >_seed</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/toc.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-viff-module.html"
+     onclick="setFrame('toc-viff-module.html','viff-module.html');"     >viff</a><br />    <a target="moduleFrame" href="toc-viff.active-module.html"
+     onclick="setFrame('toc-viff.active-module.html','viff.active-module.html');"     >viff.active</a><br />    <a target="moduleFrame" href="toc-viff.comparison-module.html"
+     onclick="setFrame('toc-viff.comparison-module.html','viff.comparison-module.html');"     >viff.comparison</a><br />    <a target="moduleFrame" href="toc-viff.config-module.html"
+     onclick="setFrame('toc-viff.config-module.html','viff.config-module.html');"     >viff.config</a><br />    <a target="moduleFrame" href="toc-viff.equality-module.html"
+     onclick="setFrame('toc-viff.equality-module.html','viff.equality-module.html');"     >viff.equality</a><br />    <a target="moduleFrame" href="toc-viff.field-module.html"
+     onclick="setFrame('toc-viff.field-module.html','viff.field-module.html');"     >viff.field</a><br />    <a target="moduleFrame" href="toc-viff.matrix-module.html"
+     onclick="setFrame('toc-viff.matrix-module.html','viff.matrix-module.html');"     >viff.matrix</a><br />    <a target="moduleFrame" href="toc-viff.paillier-module.html"
+     onclick="setFrame('toc-viff.paillier-module.html','viff.paillier-module.html');"     >viff.paillier</a><br />    <a target="moduleFrame" href="toc-viff.prss-module.html"
+     onclick="setFrame('toc-viff.prss-module.html','viff.prss-module.html');"     >viff.prss</a><br />    <a target="moduleFrame" href="toc-viff.runtime-module.html"
+     onclick="setFrame('toc-viff.runtime-module.html','viff.runtime-module.html');"     >viff.runtime</a><br />    <a target="moduleFrame" href="toc-viff.shamir-module.html"
+     onclick="setFrame('toc-viff.shamir-module.html','viff.shamir-module.html');"     >viff.shamir</a><br />    <a target="moduleFrame" href="toc-viff.util-module.html"
+     onclick="setFrame('toc-viff.util-module.html','viff.util-module.html');"     >viff.util</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package viff</h1><p class="nomargin-top"><span class="codelink"><a href="viff-pysrc.html">source&nbsp;code</a></span></p>
+<p>Virtual Ideal Functionality Framework.</p>
+  <p>VIFF is a Python framework for writing multi-party computations (MPC) 
+  in an easy, efficient, and secure way.</p>
+  <h1 class="heading">Overview</h1>
+    <p>VIFF allows you to write a program which will interact with other 
+    programs in order to execute a joint computation. This is called a 
+    multi-party computation, MPC for short.</p>
+    <p>The programs will implement what we call a virtual ideal 
+    functionality (IF). The idea is that the behavior of the programs 
+    should be indistinguishable from the behavior of programs interacting 
+    with a so-called ideal functionality. An ideal functionality is a 
+    player that cannot be corrupted, also known as a trusted third party 
+    (TTP).</p>
+    <p>Interacting with an IF is easy: all players give their inputs to the
+    IF, which computes the results. The results are then distributed to the
+    correct players. The inputs and the results are sent over secure 
+    channels, and since the IF cannot be corrupted, this ideal protocol 
+    must be secure.</p>
+    <p>In the real world there is no IF, but VIFF allows you to implement a
+    virtual ideal functionality. The behavior of a bunch of programs using 
+    VIFF is indistinguishable from program running in the ideal world. It 
+    is indistinguishable in the sense that everything that can happen in 
+    the real world protocol could happen in the ideal world too. And since 
+    no attacks can occur in the ideal world, no attacks can occur in the 
+    real world as well. Such a multi-party computation (MPC) is called a 
+    secure multi-party computation (SMPC).</p>
+    <h2 class="heading">Security Assumptions</h2>
+      <p>Please note that like all cryptographic systems, VIFF is only 
+      secure as long as certain assumptions are fulfilled. These 
+      assumptions include:</p>
+      <ul>
+        <li>
+          The adversary can only corrupt up to a certain threshold of the 
+          total number of players. The threshold will normally be 1/2 of 
+          the players, so for three players, at most one player may be 
+          corrupted (there must be an honest majority).
+        </li>
+        <li>
+          The adversary is computationally bounded. The protocols used by 
+          VIFF rely on certain computational hardness assumptions, and 
+          therefore only polynomial time adversaries are allowed.
+        </li>
+        <li>
+          The adversary is passive. Being passive means that the adversary 
+          only monitors the network traffic, but still follows the 
+          protocol. We plan to add support for active (Byzantine) 
+          adversaries in a future version.
+        </li>
+      </ul>
+      <p>The precise assumptions for each protocol will eventually be 
+      included in the documentation for the corresponding method, but this 
+      has not yet been done.</p>
+  <h1 class="heading">Architecture</h1>
+    <p>VIFF consists of several modules. The <a 
+    href="viff.runtime-module.html" class="link">runtime</a> module 
+    contains the <a href="viff.runtime.Runtime-class.html" 
+    class="link">Runtime</a> and <a href="viff.runtime.Share-class.html" 
+    class="link">Share</a> classes, in which the main functionality is 
+    implemented. The <a href="viff.field-module.html" 
+    class="link">field</a> module contains implementations of finite fields
+    --- these are the values inside the shares. Other modules provide 
+    support functions.</p>
+    <h2 class="heading">Layers</h2>
+      <p>The main functionality in VIFF is implemented in the <a 
+      href="viff.runtime.Runtime-class.html" class="link">Runtime</a> 
+      class. This class offers methods to do addition, multiplication, etc.
+      These methods operate on <a href="viff.runtime.Share-class.html" 
+      class="link">Share</a> instances.</p>
+      <p>Shares hold either <a href="viff.field-module.html#GF" 
+      class="link">field.GF</a> or <a href="viff.field.GF256-class.html" 
+      class="link">GF256</a> elements and are created from the 
+      <code>shamir_share</code> or <code>prss_share</code> Runtime methods.
+      Shares overload the standard arithmetic operators, so you can write 
+      <code>a + b - c * d</code> with four shares, and it will be 
+      translated correctly into the appropriate method calls on the Runtime
+      instance associated with the shares.</p>
+      <p>A field element contain the concrete value on which we do 
+      calculations. This is just a normal Python (long) integer. The value 
+      is wrapped in an object that will keep track of doing modulo 
+      reductions as appropriate.</p>
+      <p>So in a nutshell, VIFF has these layers:</p>
+      <ul>
+        <li>
+          Top-level layer for application programs: There you manipulate 
+          Python integers or <a href="viff.runtime.Share-class.html" 
+          class="link">Share</a> instances.
+        </li>
+        <li>
+          Runtime layer: The runtime deals with Python integers or shares.
+        </li>
+        <li>
+          Field elements: Deals with arithmetic over Python integers, but 
+          with modulo reductions as needed.
+        </li>
+      </ul>
+  <h1 class="heading">Getting into VIFF</h1>
+    <p>As explained above, the main functionality in VIFF is the <a 
+    href="viff.runtime.Runtime-class.html" class="link">Runtime</a> class, 
+    so please start there. Also, be sure to checkout the example 
+    applications distributed in the <code>apps</code> directory.</p>
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        <a href="mailto:viff-devel@viff.dk" target="_top">VIFF Development 
+        Team</a>
+      </p>
+      <p><strong>See Also:</strong>
+        <a href="http://viff.dk/" target="_top">http://viff.dk/</a>
+      </p>
+      <p><strong>Version:</strong>
+        0.7
+      </p>
+      <p><strong>License:</strong>
+        GNU LGPL
+      </p>
+</div><!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="viff.active-module.html">viff.active</a></strong>: <em class="summary">Actively secure protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison-module.html">viff.comparison</a></strong>: <em class="summary">Comparison protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.equality-module.html">viff.equality</a></strong>: <em class="summary">Equality protocol.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Matrix operations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.paillier-module.html">viff.paillier</a></strong>: <em class="summary">Paillier crypto system and two-party runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff-module.html#release" class="summary-sig-name">release</a>()</span><br />
+      Get the full release number.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff-pysrc.html#release">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="release"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">release</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff-pysrc.html#release">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Get the full release number.</p>
+  <p>If Mercurial is available, &quot;hg identify&quot; will be used to 
+  determine the state of the repository and a string of the form 
+  ``x.y-hash`` is returned where ``hash`` is the changeset ID or tag. If 
+  the tag is the same as ``__version__``, then ``__version__`` is simply 
+  returned.</p>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff-pysrc.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff-module.html">Package viff</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software: you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU Lesser General Public License (LGPL) as</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation, either version 3 of the</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License, or (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but WITHOUT</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License along with VIFF. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is a Python framework for writing multi-party computations (MPC)</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">in an easy, efficient, and secure way.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">Overview</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">========</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">VIFF allows you to write a program which will interact with other</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">programs in order to execute a joint computation. This is called a</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">multi-party computation, MPC for short.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">The programs will implement what we call a virtual ideal functionality</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">(IF). The idea is that the behavior of the programs should be</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">indistinguishable from the behavior of programs interacting with a</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">so-called ideal functionality. An ideal functionality is a player that</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">cannot be corrupted, also known as a trusted third party (TTP).</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">Interacting with an IF is easy: all players give their inputs to the</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">IF, which computes the results. The results are then distributed to</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">the correct players. The inputs and the results are sent over secure</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">channels, and since the IF cannot be corrupted, this ideal protocol</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">must be secure.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">In the real world there is no IF, but VIFF allows you to implement a</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">virtual ideal functionality. The behavior of a bunch of programs using</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is indistinguishable from program running in the ideal world. It</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">is indistinguishable in the sense that everything that can happen in</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">the real world protocol could happen in the ideal world too. And since</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">no attacks can occur in the ideal world, no attacks can occur in the</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">real world as well. Such a multi-party computation (MPC) is called a</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">secure multi-party computation (SMPC).</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">Security Assumptions</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">--------------------</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">Please note that like all cryptographic systems, VIFF is only secure</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">as long as certain assumptions are fulfilled. These assumptions</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">include:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary can only corrupt up to a certain threshold of the</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    total number of players. The threshold will normally be 1/2 of the</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    players, so for three players, at most one player may be</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    corrupted (there must be an honest majority).</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is computationally bounded. The protocols used by</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">    VIFF rely on certain computational hardness assumptions, and</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">    therefore only polynomial time adversaries are allowed.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is passive. Being passive means that the adversary</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    only monitors the network traffic, but still follows the protocol.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    We plan to add support for active (Byzantine) adversaries in a</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    future version.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">The precise assumptions for each protocol will eventually be included</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">in the documentation for the corresponding method, but this has not</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">yet been done.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">Architecture</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">VIFF consists of several modules. The L{runtime} module contains the</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">L{Runtime} and L{Share} classes, in which the main functionality is</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">implemented. The L{field} module contains implementations of finite</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">fields --- these are the values inside the shares. Other modules</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">provide support functions.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">Layers</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">------</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">The main functionality in VIFF is implemented in the L{Runtime} class.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">This class offers methods to do addition, multiplication, etc. These</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">methods operate on L{Share} instances.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">Shares hold either L{field.GF} or L{GF256} elements and are created</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">from the C{shamir_share} or C{prss_share} Runtime methods. Shares</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">overload the standard arithmetic operators, so you can write C{a + b -</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">c * d} with four shares, and it will be translated correctly into the</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">appropriate method calls on the Runtime instance associated with the</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">shares.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">A field element contain the concrete value on which we do</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">calculations. This is just a normal Python (long) integer. The value</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">is wrapped in an object that will keep track of doing modulo</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">reductions as appropriate.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">So in a nutshell, VIFF has these layers:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">  - Top-level layer for application programs: There you manipulate</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">    Python integers or L{Share} instances.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">  - Runtime layer: The runtime deals with Python integers or shares.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">  - Field elements: Deals with arithmetic over Python integers, but</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">    with modulo reductions as needed.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">Getting into VIFF</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">=================</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">As explained above, the main functionality in VIFF is the L{Runtime}</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">class, so please start there. Also, be sure to checkout the example</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">applications distributed in the C{apps} directory.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">@authors: U{VIFF Development Team &lt;mailto:viff-devel@viff.dk&gt;}</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">@see: U{http://viff.dk/}</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">'0.7'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> <tt class="py-string">'GNU LGPL'</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="release"></a><div id="release-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="release-toggle" onclick="return toggle('release');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff-module.html#release">release</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="release-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="release-expanded"><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt class="py-docstring">"""Get the full release number.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring">    If Mercurial is available, "hg identify" will be used to determine</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">    the state of the repository and a string of the form ``x.y-hash``</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">    is returned where ``hash`` is the changeset ID or tag. If the tag</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">    is the same as ``__version__``, then ``__version__`` is simply</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring">    returned.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-keyword">from</tt> <tt class="py-name">subprocess</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Popen</tt><tt class="py-op">,</tt> <tt class="py-name">PIPE</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"hg"</tt><tt class="py-op">,</tt> <tt class="py-string">"identify"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">communicate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">returncode</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">            <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-string">"unknown"</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">            <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">"tip"</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">                <tt class="py-comment"># No tag for this changeset or only "tip".</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">extra</tt> <tt class="py-op">=</tt> <tt class="py-string">"unknown"</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">extra</tt> <tt class="py-op">==</tt> <tt class="py-name">__version__</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">__version__</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"%s-%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">__version__</tt><tt class="py-op">,</tt> <tt class="py-name">extra</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:45 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff.active-module.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.active</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;active
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.active-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module active</h1><p class="nomargin-top"><span class="codelink"><a href="viff.active-pysrc.html">source&nbsp;code</a></span></p>
+Actively secure protocols.
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.active.BrachaBroadcastMixin-class.html" class="summary-name">BrachaBroadcastMixin</a><br />
+      Bracha broadcast mixin class.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html" class="summary-name">TriplesHyperinvertibleMatricesMixin</a><br />
+      Mixin class which generates multiplication triples using
+hyperinvertible matrices.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.active.TriplesPRSSMixin-class.html" class="summary-name">TriplesPRSSMixin</a><br />
+      Mixin class for generating multiplication triples using PRSS.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.active.BasicActiveRuntime-class.html" class="summary-name">BasicActiveRuntime</a><br />
+      Basic runtime secure against active adversaries.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.active.ActiveRuntime-class.html" class="summary-name">ActiveRuntime</a><br />
+      Default mix of <tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">BasicActiveRuntime</span></tt> and
+<tt class="rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">TriplesPRSSMixin</span></tt>.
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:39 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff.active-pysrc.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,645 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.active</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;active
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.active-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff.active-module.html">Module viff.active</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software: you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU Lesser General Public License (LGPL) as</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation, either version 3 of the</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License, or (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but WITHOUT</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License along with VIFF. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">"""Actively secure protocols."""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-name">__docformat__</tt> <tt class="py-op">=</tt> <tt class="py-string">"restructuredtext"</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">math</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ceil</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">twisted</tt><tt class="py-op">.</tt><tt class="py-name">internet</tt><tt class="py-op">.</tt><tt class="py-name">defer</tt> <tt class="py-keyword">import</tt> <tt class="py-name">gatherResults</tt><tt class="py-op">,</tt> <tt class="py-name">Deferred</tt><tt class="py-op">,</tt> <tt class="py-name">succeed</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package viff=viff-module.html"><a title="viff" class="py-name" href="#" onclick="return doclink('link-0', 'viff', 'link-0');">viff</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module viff.shamir=viff.shamir-module.html"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-1', 'shamir', 'link-1');">shamir</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-2', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module viff.util=viff.util-module.html"><a title="viff.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Variable viff.util.rand=viff.util-module.html#rand"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-4', 'rand', 'link-4');">rand</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-5', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module viff.matrix=viff.matrix-module.html"><a title="viff.matrix" class="py-name" href="#" onclick="return doclink('link-6', 'matrix', 'link-6');">matrix</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Class viff.matrix.Matrix=viff.matrix.Matrix-class.html"><a title="viff.matrix.Matrix" class="py-name" href="#" onclick="return doclink('link-7', 'Matrix', 'link-7');">Matrix</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Function viff.matrix.hyper()=viff.matrix-module.html#hyper"><a title="viff.matrix.hyper" class="py-name" href="#" onclick="return doclink('link-8', 'hyper', 'link-8');">hyper</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-9', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module viff.runtime=viff.runtime-module.html"><a title="viff.runtime" class="py-name" href="#" onclick="return doclink('link-10', 'runtime', 'link-10');">runtime</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Class viff.runtime.Runtime=viff.runtime.Runtime-class.html"><a title="viff.runtime.Runtime" class="py-name" href="#" onclick="return doclink('link-11', 'Runtime', 'link-11');">Runtime</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Class viff.runtime.Share=viff.runtime.Share-class.html"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-12', 'Share', 'link-12');">Share</a></tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Function viff.runtime.increment_pc()=viff.runtime-module.html#increment_pc"><a title="viff.runtime.increment_pc" class="py-name" href="#" onclick="return doclink('link-13', 'increment_pc', 'link-13');">increment_pc</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Method viff.runtime.BasicRuntime.preprocess()=viff.runtime.BasicRuntime-class.html#preprocess,Function viff.runtime.preprocess()=viff.runtime-module.html#preprocess"><a title="viff.runtime.BasicRuntime.preprocess
+viff.runtime.preprocess" class="py-name" href="#" onclick="return doclink('link-14', 'preprocess', 'link-14');">preprocess</a></tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name" targets="Function viff.runtime.gather_shares()=viff.runtime-module.html#gather_shares"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-15', 'gather_shares', 'link-15');">gather_shares</a></tt> </tt>
+<a name="BrachaBroadcastMixin"></a><div id="BrachaBroadcastMixin-def"><a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="BrachaBroadcastMixin-toggle" onclick="return toggle('BrachaBroadcastMixin');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.active.BrachaBroadcastMixin-class.html">BrachaBroadcastMixin</a><tt class="py-op">:</tt> </tt>
+</div><div id="BrachaBroadcastMixin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BrachaBroadcastMixin-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-docstring">"""Bracha broadcast mixin class. This mixin class adds a</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">    :meth:`broadcast` method which can be used for a reliable</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">    broadcast.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="BrachaBroadcastMixin._broadcast"></a><div id="BrachaBroadcastMixin._broadcast-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="BrachaBroadcastMixin._broadcast-toggle" onclick="return toggle('BrachaBroadcastMixin._broadcast');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.BrachaBroadcastMixin-class.html#_broadcast">_broadcast</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">sender</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BrachaBroadcastMixin._broadcast-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BrachaBroadcastMixin._broadcast-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-docstring">"""Perform a Bracha broadcast.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">        A Bracha broadcast is reliable against an active adversary</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">        corrupting up to t &lt; n/3 of the players. For more details, see</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">        the paper "An asynchronous [(n-1)/3]-resilient consensus</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">        protocol" by G. Bracha in Proc. 3rd ACM Symposium on</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">        Principles of Distributed Computing, 1984, pages 154-162.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">Deferred</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">pc</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">program_counter</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">threshold</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-comment"># For each distinct message (and program counter) we save a</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># dictionary for each of the following variables. The reason</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># is that we need to count for each distinct message how many</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># echo and ready messages we have received.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">bracha_echo</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">bracha_ready</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">bracha_sent_ready</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">bracha_delivered</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">         </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">unsafe_broadcast</tt><tt class="py-op">(</tt><tt class="py-param">data_type</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">            <tt class="py-comment"># Performs a regular broadcast without any guarantees. In</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># other words, it sends the message to each player except</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># for this one.</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">protocol</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocols</tt><tt class="py-op">.</tt><tt class="py-name">itervalues</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">                <tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method viff.runtime.ShareExchanger.sendData()=viff.runtime.ShareExchanger-class.html#sendData"><a title="viff.runtime.ShareExchanger.sendData" class="py-name" href="#" onclick="return doclink('link-16', 'sendData', 'link-16');">sendData</a></tt><tt class="py-op">(</tt><tt class="py-name">pc</tt><tt class="py-op">,</tt> <tt class="py-name">data_type</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">echo_received</tt><tt class="py-op">(</tt><tt class="py-param">message</tt><tt class="py-op">,</tt> <tt class="py-param">peer_id</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">            <tt class="py-comment"># This is called when we receive an echo message. It</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># updates the echo count for the message and enters the</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># ready state if the count is high enough.</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">ids</tt> <tt class="py-op">=</tt> <tt class="py-name">bracha_echo</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt class="py-name">ready</tt> <tt class="py-op">=</tt> <tt class="py-name">bracha_sent_ready</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">peer_id</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ids</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">                <tt class="py-name">ids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ids</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;=</tt> <tt class="py-name">ceil</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">+</tt><tt class="py-name">t</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ready</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">                    <tt class="py-name">bracha_sent_ready</tt><tt class="py-op">[</tt><tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">                    <tt class="py-name">unsafe_broadcast</tt><tt class="py-op">(</tt><tt class="py-string">"ready"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">                    <tt class="py-name">ready_received</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">ready_received</tt><tt class="py-op">(</tt><tt class="py-param">message</tt><tt class="py-op">,</tt> <tt class="py-param">peer_id</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">            <tt class="py-comment"># This is called when we receive a ready message. It</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># updates the ready count for the message. Depending on</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the count, we may either stay in the same state or enter</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the ready or delivered state.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">ids</tt> <tt class="py-op">=</tt> <tt class="py-name">bracha_ready</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">            <tt class="py-name">ready</tt> <tt class="py-op">=</tt> <tt class="py-name">bracha_sent_ready</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">            <tt class="py-name">delivered</tt> <tt class="py-op">=</tt> <tt class="py-name">bracha_delivered</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">peer_id</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">ids</tt><tt class="py-op">:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-name">ids</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ids</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">t</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ready</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                    <tt class="py-name">bracha_sent_ready</tt><tt class="py-op">[</tt><tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                    <tt class="py-name">unsafe_broadcast</tt><tt class="py-op">(</tt><tt class="py-string">"ready"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                    <tt class="py-name">ready_received</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ids</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">t</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">delivered</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                    <tt class="py-name">bracha_delivered</tt><tt class="py-op">[</tt><tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                    <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">send_received</tt><tt class="py-op">(</tt><tt class="py-param">message</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">            <tt class="py-comment"># This is called when we receive a send message. We react</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># by sending an echo message to each player. Since the</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># unsafe broadcast doesn't send a message to this player,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># we simulate it by calling the echo_received function.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">unsafe_broadcast</tt><tt class="py-op">(</tt><tt class="py-string">"echo"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-name">echo_received</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-comment"># In the following we prepare to handle a send message from</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the sender and at most one echo and one ready message from</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># each player.</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">d_send</tt> <tt class="py-op">=</tt> <tt class="py-name">Deferred</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-name">send_received</tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method viff.runtime.BasicRuntime._expect_data()=viff.runtime.BasicRuntime-class.html#_expect_data"><a title="viff.runtime.BasicRuntime._expect_data" class="py-name" href="#" onclick="return doclink('link-17', '_expect_data', 'link-17');">_expect_data</a></tt><tt class="py-op">(</tt><tt class="py-name">sender</tt><tt class="py-op">,</tt> <tt class="py-string">"send"</tt><tt class="py-op">,</tt> <tt class="py-name">d_send</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">peer_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">players</tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">peer_id</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                <tt class="py-name">d_echo</tt> <tt class="py-op">=</tt> <tt class="py-name">Deferred</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-name">echo_received</tt><tt class="py-op">,</tt> <tt class="py-name">peer_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="viff.runtime.BasicRuntime._expect_data" class="py-name" href="#" onclick="return doclink('link-18', '_expect_data', 'link-17');">_expect_data</a></tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">,</tt> <tt class="py-string">"echo"</tt><tt class="py-op">,</tt> <tt class="py-name">d_echo</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">                <tt class="py-name">d_ready</tt> <tt class="py-op">=</tt> <tt class="py-name">Deferred</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-name">ready_received</tt><tt class="py-op">,</tt> <tt class="py-name">peer_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="viff.runtime.BasicRuntime._expect_data" class="py-name" href="#" onclick="return doclink('link-19', '_expect_data', 'link-17');">_expect_data</a></tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">,</tt> <tt class="py-string">"ready"</tt><tt class="py-op">,</tt> <tt class="py-name">d_ready</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-comment"># If this player is the sender, we transmit a send message to</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># each player. We send one to this player by calling the</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># send_received function.</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">==</tt> <tt class="py-name">sender</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">            <tt class="py-name">unsafe_broadcast</tt><tt class="py-op">(</tt><tt class="py-string">"send"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">            <tt class="py-name">send_received</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="BrachaBroadcastMixin.broadcast"></a><div id="BrachaBroadcastMixin.broadcast-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="BrachaBroadcastMixin.broadcast-toggle" onclick="return toggle('BrachaBroadcastMixin.broadcast');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.BrachaBroadcastMixin-class.html#broadcast">broadcast</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">senders</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BrachaBroadcastMixin.broadcast-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BrachaBroadcastMixin.broadcast-expanded"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-docstring">"""Perform one or more Bracha broadcast(s).</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">        The list of *senders* given will determine the subset of players</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">        who wish to broadcast a message. If this player wishes to</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">        broadcast, its ID must be in the list of senders and the</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">        optional *message* parameter must be used.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">        If the list of senders consists only of a single sender, the</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">        result will be a single element, otherwise it will be a list.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">        A Bracha broadcast is reliable against an active adversary</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">        corrupting up to t &lt; n/3 of the players. For more details, see</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">        the paper "An asynchronous [(n-1)/3]-resilient consensus</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">        protocol" by G. Bracha in Proc. 3rd ACM Symposium on</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">        Principles of Distributed Computing, 1984, pages 154-162.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">senders</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">sender</tt> <tt class="py-keyword">in</tt> <tt class="py-name">senders</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sender</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method viff.active.BrachaBroadcastMixin._broadcast()=viff.active.BrachaBroadcastMixin-class.html#_broadcast"><a title="viff.active.BrachaBroadcastMixin._broadcast" class="py-name" href="#" onclick="return doclink('link-20', '_broadcast', 'link-20');">_broadcast</a></tt><tt class="py-op">(</tt><tt class="py-name">sender</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="viff.active.BrachaBroadcastMixin._broadcast" class="py-name" href="#" onclick="return doclink('link-21', '_broadcast', 'link-20');">_broadcast</a></tt><tt class="py-op">(</tt><tt class="py-name">sender</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div></div><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"> </tt>
+<a name="TriplesHyperinvertibleMatricesMixin"></a><div id="TriplesHyperinvertibleMatricesMixin-def"><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <a class="py-toggle" href="#" id="TriplesHyperinvertibleMatricesMixin-toggle" onclick="return toggle('TriplesHyperinvertibleMatricesMixin');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html">TriplesHyperinvertibleMatricesMixin</a><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesHyperinvertibleMatricesMixin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TriplesHyperinvertibleMatricesMixin-expanded"><a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-docstring">"""Mixin class which generates multiplication triples using</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">    hyperinvertible matrices."""</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-comment">#: A hyper-invertible matrix.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: It should be suitable for :attr:`num_players` players, but</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: since we don't know the total number of players yet, we set it</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#: to :const:`None` here and update it as necessary.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-22" class="py-name" targets="Variable viff.active.TriplesHyperinvertibleMatricesMixin._hyper=viff.active.TriplesHyperinvertibleMatricesMixin-class.html#_hyper"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-22', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="TriplesHyperinvertibleMatricesMixin.single_share_random"></a><div id="TriplesHyperinvertibleMatricesMixin.single_share_random-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="TriplesHyperinvertibleMatricesMixin.single_share_random-toggle" onclick="return toggle('TriplesHyperinvertibleMatricesMixin.single_share_random');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#single_share_random">single_share_random</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">T</tt><tt class="py-op">,</tt> <tt class="py-param">degree</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesHyperinvertibleMatricesMixin.single_share_random-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesHyperinvertibleMatricesMixin.single_share_random-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-docstring">"""Share a random secret.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">        The guarantee is that a number of shares are made and out of</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">        those, the *T* that are returned by this method will be</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">        correct sharings of a random number using *degree* as the</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">        polynomial degree.</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: Move common code between single_share and</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># double_share_random out to their own methods.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">inputters</tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-23', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-24', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="viff.matrix.hyper" class="py-name" href="#" onclick="return doclink('link-25', 'hyper', 'link-8');">hyper</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name" targets="Module viff.field=viff.field-module.html"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-26', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-comment"># Generate a random element.</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">si</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-27', 'rand', 'link-4');">rand</a></tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-28" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-28', 'field', 'link-26');">field</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Variable viff.field.GF256.modulus=viff.field.GF256-class.html#modulus"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-29', 'modulus', 'link-29');">modulus</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-comment"># Every player shares the random value with two thresholds.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method viff.runtime.Runtime.shamir_share()=viff.runtime.Runtime-class.html#shamir_share"><a title="viff.runtime.Runtime.shamir_share" class="py-name" href="#" onclick="return doclink('link-30', 'shamir_share', 'link-30');">shamir_share</a></tt><tt class="py-op">(</tt><tt class="py-name">inputters</tt><tt class="py-op">,</tt> <tt id="link-31" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-31', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">si</tt><tt class="py-op">,</tt> <tt class="py-name">degree</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-comment"># Turn the shares into a column vector.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">svec</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="viff.matrix.Matrix" class="py-name" href="#" onclick="return doclink('link-32', 'Matrix', 'link-7');">Matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">shares</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method viff.matrix.Matrix.transpose()=viff.matrix.Matrix-class.html#transpose"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-33', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-comment"># Apply the hyper-invertible matrix to svec1 and svec2.</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">rvec</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-34', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">*</tt> <tt class="py-name">svec</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-comment"># Get back to normal lists of shares.</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">svec</tt> <tt class="py-op">=</tt> <tt class="py-name">svec</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-35', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-name">rvec</tt> <tt class="py-op">=</tt> <tt class="py-name">rvec</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-36', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">verify</tt><tt class="py-op">(</tt><tt class="py-param">shares</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-docstring">"""Verify shares.</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring">            It is checked that they correspond to polynomial of the</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">            expected degree.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">            If the verification succeeds, the T shares are returned,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">            otherwise the errback is called.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">            <tt class="py-comment"># TODO: This is necessary since shamir.recombine expects</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to receive a list of *pairs* of field elements.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">shares</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-37', 'field', 'link-26');">field</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">shares</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">            <tt class="py-comment"># Verify the sharings. If any of the assertions fail and</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># raise an exception, the errbacks will be called on the</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># share returned by single_share_random.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">assert</tt> <tt id="link-38" class="py-name"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-38', 'shamir', 'link-1');">shamir</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Function viff.shamir.verify_sharing()=viff.shamir-module.html#verify_sharing"><a title="viff.shamir.verify_sharing" class="py-name" href="#" onclick="return doclink('link-39', 'verify_sharing', 'link-39');">verify_sharing</a></tt><tt class="py-op">(</tt><tt class="py-name">shares</tt><tt class="py-op">,</tt> <tt class="py-name">degree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> \ </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">                   <tt class="py-string">"Could not verify %s, degree %d"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">shares</tt><tt class="py-op">,</tt> <tt class="py-name">degree</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">            <tt class="py-comment"># If we reach this point the n - T shares were verified</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># and we can safely return the first T shares.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-name">rvec</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">exchange</tt><tt class="py-op">(</tt><tt class="py-param">svec</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">            <tt class="py-docstring">"""Exchange and (if possible) verify shares."""</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-name">pc</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">program_counter</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-comment"># We send our shares to the verifying players.</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name" targets="Method viff.paillier.PaillierRuntime.share()=viff.paillier.PaillierRuntime-class.html#share,Function viff.shamir.share()=viff.shamir-module.html#share"><a title="viff.paillier.PaillierRuntime.share
+viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-40', 'share', 'link-40');">share</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">svec</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">T</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">:</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocols</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method viff.runtime.ShareExchanger.sendShare()=viff.runtime.ShareExchanger-class.html#sendShare"><a title="viff.runtime.ShareExchanger.sendShare" class="py-name" href="#" onclick="return doclink('link-41', 'sendShare', 'link-41');">sendShare</a></tt><tt class="py-op">(</tt><tt class="py-name">pc</tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="viff.paillier.PaillierRuntime.share
+viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-42', 'share', 'link-40');">share</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">T</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">                <tt class="py-comment"># The other players will send us their shares of si_1</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># and si_2 and we will verify it.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">si</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">peer_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">inputters</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">==</tt> <tt class="py-name">peer_id</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">                        <tt class="py-name">si</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-43', 'Share', 'link-12');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-44" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-44', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">svec</tt><tt class="py-op">[</tt><tt class="py-name">peer_id</tt> <tt class="py-op">-</tt> <tt class="py-name">T</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">                        <tt class="py-name">si</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method viff.runtime.BasicRuntime._expect_share()=viff.runtime.BasicRuntime-class.html#_expect_share"><a title="viff.runtime.BasicRuntime._expect_share" class="py-name" href="#" onclick="return doclink('link-45', '_expect_share', 'link-45');">_expect_share</a></tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-46', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">gatherResults</tt><tt class="py-op">(</tt><tt class="py-name">si</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method viff.runtime.BasicRuntime.schedule_callback()=viff.runtime.BasicRuntime-class.html#schedule_callback"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-47', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">verify</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">                <tt class="py-comment"># We cannot verify anything, so we just return the</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># first T shares.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt class="py-name">rvec</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-48', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-name">svec</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-49', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">exchange</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="TriplesHyperinvertibleMatricesMixin.double_share_random"></a><div id="TriplesHyperinvertibleMatricesMixin.double_share_random-def"><a name="L266"></a><tt class="py-lineno">266</tt> <a class="py-toggle" href="#" id="TriplesHyperinvertibleMatricesMixin.double_share_random-toggle" onclick="return toggle('TriplesHyperinvertibleMatricesMixin.double_share_random');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#double_share_random">double_share_random</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">T</tt><tt class="py-op">,</tt> <tt class="py-param">d1</tt><tt class="py-op">,</tt> <tt class="py-param">d2</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesHyperinvertibleMatricesMixin.double_share_random-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesHyperinvertibleMatricesMixin.double_share_random-expanded"><a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-docstring">"""Double-share a random secret using two polynomials.</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">        The guarantee is that a number of shares are made and out of</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">        those, the *T* that are returned by this method will be correct</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">        double-sharings of a random number using *d1* and *d2* as the</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">        polynomial degrees.</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-name">inputters</tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-50', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-51', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="viff.matrix.hyper" class="py-name" href="#" onclick="return doclink('link-52', 'hyper', 'link-8');">hyper</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-53', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">        <tt class="py-comment"># Generate a random element.</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">si</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-54', 'rand', 'link-4');">rand</a></tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-55', 'field', 'link-26');">field</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-56', 'modulus', 'link-29');">modulus</a></tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-comment"># Every player shares the random value with two thresholds.</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">d1_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="viff.runtime.Runtime.shamir_share" class="py-name" href="#" onclick="return doclink('link-57', 'shamir_share', 'link-30');">shamir_share</a></tt><tt class="py-op">(</tt><tt class="py-name">inputters</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-58', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">si</tt><tt class="py-op">,</tt> <tt class="py-name">d1</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-name">d2_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="viff.runtime.Runtime.shamir_share" class="py-name" href="#" onclick="return doclink('link-59', 'shamir_share', 'link-30');">shamir_share</a></tt><tt class="py-op">(</tt><tt class="py-name">inputters</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-60', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">si</tt><tt class="py-op">,</tt> <tt class="py-name">d2</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">        <tt class="py-comment"># Turn the shares into a column vector.</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">svec1</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="viff.matrix.Matrix" class="py-name" href="#" onclick="return doclink('link-61', 'Matrix', 'link-7');">Matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">d1_shares</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-62', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-name">svec2</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="viff.matrix.Matrix" class="py-name" href="#" onclick="return doclink('link-63', 'Matrix', 'link-7');">Matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">d2_shares</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-64', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">        <tt class="py-comment"># Apply the hyper-invertible matrix to svec1 and svec2.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">rvec1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-65', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">*</tt> <tt class="py-name">svec1</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">        <tt class="py-name">rvec2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin._hyper" class="py-name" href="#" onclick="return doclink('link-66', '_hyper', 'link-22');">_hyper</a></tt> <tt class="py-op">*</tt> <tt class="py-name">svec2</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-comment"># Get back to normal lists of shares.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">svec1</tt> <tt class="py-op">=</tt> <tt class="py-name">svec1</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-67', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-name">svec2</tt> <tt class="py-op">=</tt> <tt class="py-name">svec2</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-68', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">        <tt class="py-name">rvec1</tt> <tt class="py-op">=</tt> <tt class="py-name">rvec1</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-69', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-name">rvec2</tt> <tt class="py-op">=</tt> <tt class="py-name">rvec2</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="viff.matrix.Matrix.transpose" class="py-name" href="#" onclick="return doclink('link-70', 'transpose', 'link-33');">transpose</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">rows</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">verify</tt><tt class="py-op">(</tt><tt class="py-param">shares</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">            <tt class="py-docstring">"""Verify shares.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-docstring">            It is checked that they correspond to polynomial of the</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-docstring">            expected degrees and that they can be recombined to the</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-docstring">            same value.</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-docstring">            If the verification succeeds, the T double shares are</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-docstring">            returned, otherwise the errback is called.</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-docstring">            """</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">            <tt class="py-name">si_1</tt><tt class="py-op">,</tt> <tt class="py-name">si_2</tt> <tt class="py-op">=</tt> <tt class="py-name">shares</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">            <tt class="py-comment"># TODO: This is necessary since shamir.recombine expects</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to receive a list of *pairs* of field elements.</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">si_1</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-71" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-71', 'field', 'link-26');">field</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">si_1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt class="py-name">si_2</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-72', 'field', 'link-26');">field</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">si_2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">            <tt class="py-comment"># Verify the sharings. If any of the assertions fail and</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># raise an exception, the errbacks will be called on the</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># double share returned by double_share_random.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">assert</tt> <tt id="link-73" class="py-name"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-73', 'shamir', 'link-1');">shamir</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="viff.shamir.verify_sharing" class="py-name" href="#" onclick="return doclink('link-74', 'verify_sharing', 'link-39');">verify_sharing</a></tt><tt class="py-op">(</tt><tt class="py-name">si_1</tt><tt class="py-op">,</tt> <tt class="py-name">d1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> \ </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">                   <tt class="py-string">"Could not verify %s, degree %d"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">si_1</tt><tt class="py-op">,</tt> <tt class="py-name">d1</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt id="link-75" class="py-name"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-75', 'shamir', 'link-1');">shamir</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="viff.shamir.verify_sharing" class="py-name" href="#" onclick="return doclink('link-76', 'verify_sharing', 'link-39');">verify_sharing</a></tt><tt class="py-op">(</tt><tt class="py-name">si_2</tt><tt class="py-op">,</tt> <tt class="py-name">d2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> \ </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">                   <tt class="py-string">"Could not verify %s, degree %d"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">si_2</tt><tt class="py-op">,</tt> <tt class="py-name">d2</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt> <tt id="link-77" class="py-name"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-77', 'shamir', 'link-1');">shamir</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Function viff.shamir.recombine()=viff.shamir-module.html#recombine"><a title="viff.shamir.recombine" class="py-name" href="#" onclick="return doclink('link-78', 'recombine', 'link-78');">recombine</a></tt><tt class="py-op">(</tt><tt class="py-name">si_1</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">d1</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-79" class="py-name"><a title="viff.shamir" class="py-name" href="#" onclick="return doclink('link-79', 'shamir', 'link-1');">shamir</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="viff.shamir.recombine" class="py-name" href="#" onclick="return doclink('link-80', 'recombine', 'link-78');">recombine</a></tt><tt class="py-op">(</tt><tt class="py-name">si_2</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">d2</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> \ </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">                <tt class="py-string">"Shares do not recombine to the same value"</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">            <tt class="py-comment"># If we reach this point the n - T shares were verified</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># and we can safely return the first T shares.</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">rvec1</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">rvec2</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">exchange</tt><tt class="py-op">(</tt><tt class="py-param">shares</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-docstring">"""Exchange and (if possible) verify shares."""</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">            <tt class="py-name">svec1</tt><tt class="py-op">,</tt> <tt class="py-name">svec2</tt> <tt class="py-op">=</tt> <tt class="py-name">shares</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">            <tt class="py-name">pc</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">program_counter</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">            <tt class="py-comment"># We send our shares to the verifying players.</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">offset</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">s1</tt><tt class="py-op">,</tt> <tt class="py-name">s2</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">svec1</tt><tt class="py-op">,</tt> <tt class="py-name">svec2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">T</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocols</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="viff.runtime.ShareExchanger.sendShare" class="py-name" href="#" onclick="return doclink('link-81', 'sendShare', 'link-41');">sendShare</a></tt><tt class="py-op">(</tt><tt class="py-name">pc</tt><tt class="py-op">,</tt> <tt class="py-name">s1</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">protocols</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">+</tt><tt class="py-name">offset</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="viff.runtime.ShareExchanger.sendShare" class="py-name" href="#" onclick="return doclink('link-82', 'sendShare', 'link-41');">sendShare</a></tt><tt class="py-op">(</tt><tt class="py-name">pc</tt><tt class="py-op">,</tt> <tt class="py-name">s2</tt><tt class="py-op">)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">T</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                <tt class="py-comment"># The other players will send us their shares of si_1</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># and si_2 and we will verify it.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">si_1</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                <tt class="py-name">si_2</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">peer_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">inputters</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">==</tt> <tt class="py-name">peer_id</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">                        <tt class="py-name">si_1</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-83', 'Share', 'link-12');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-84', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">svec1</tt><tt class="py-op">[</tt><tt class="py-name">peer_id</tt> <tt class="py-op">-</tt> <tt class="py-name">T</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                        <tt class="py-name">si_2</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-85', 'Share', 'link-12');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-86', 'field', 'link-26');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">svec2</tt><tt class="py-op">[</tt><tt class="py-name">peer_id</tt> <tt class="py-op">-</tt> <tt class="py-name">T</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">                        <tt class="py-name">si_1</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="viff.runtime.BasicRuntime._expect_share" class="py-name" href="#" onclick="return doclink('link-87', '_expect_share', 'link-45');">_expect_share</a></tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">,</tt> <tt id="link-88" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-88', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">                        <tt class="py-name">si_2</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="viff.runtime.BasicRuntime._expect_share" class="py-name" href="#" onclick="return doclink('link-89', '_expect_share', 'link-45');">_expect_share</a></tt><tt class="py-op">(</tt><tt class="py-name">peer_id</tt><tt class="py-op">,</tt> <tt id="link-90" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-90', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">                <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">gatherResults</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">gatherResults</tt><tt class="py-op">(</tt><tt class="py-name">si_1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">gatherResults</tt><tt class="py-op">(</tt><tt class="py-name">si_2</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-91', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">verify</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                <tt class="py-comment"># We cannot verify anything, so we just return the</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># first T shares.</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">rvec1</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">rvec2</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">T</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-92', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-93" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-93', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-name">svec1</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-94" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-94', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-name">svec2</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-95', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">exchange</tt><tt class="py-op">)</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">preprocess</tt><tt class="py-op">(</tt><tt class="py-string">"generate_triples"</tt><tt class="py-op">)</tt> </tt>
+<a name="TriplesHyperinvertibleMatricesMixin.get_triple"></a><div id="TriplesHyperinvertibleMatricesMixin.get_triple-def"><a name="L367"></a><tt class="py-lineno">367</tt> <a class="py-toggle" href="#" id="TriplesHyperinvertibleMatricesMixin.get_triple-toggle" onclick="return toggle('TriplesHyperinvertibleMatricesMixin.get_triple');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#get_triple">get_triple</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesHyperinvertibleMatricesMixin.get_triple-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesHyperinvertibleMatricesMixin.get_triple-expanded"><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">        <tt class="py-comment"># This is a waste, but this function is only called if there</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># are no pre-processed triples left.</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">count</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method viff.active.TriplesHyperinvertibleMatricesMixin.generate_triples()=viff.active.TriplesHyperinvertibleMatricesMixin-class.html#generate_triples,Method viff.active.TriplesPRSSMixin.generate_triples()=viff.active.TriplesPRSSMixin-class.html#generate_triples"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.generate_triples
+viff.active.TriplesPRSSMixin.generate_triples" class="py-name" href="#" onclick="return doclink('link-96', 'generate_triples', 'link-96');">generate_triples</a></tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-97', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">        <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">triples</tt><tt class="py-op">:</tt> <tt class="py-name">triples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line"> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="TriplesHyperinvertibleMatricesMixin.generate_triples"></a><div id="TriplesHyperinvertibleMatricesMixin.generate_triples-def"><a name="L375"></a><tt class="py-lineno">375</tt> <a class="py-toggle" href="#" id="TriplesHyperinvertibleMatricesMixin.generate_triples-toggle" onclick="return toggle('TriplesHyperinvertibleMatricesMixin.generate_triples');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesHyperinvertibleMatricesMixin-class.html#generate_triples">generate_triples</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesHyperinvertibleMatricesMixin.generate_triples-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesHyperinvertibleMatricesMixin.generate_triples-expanded"><a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">        <tt class="py-docstring">"""Generate multiplication triples.</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-docstring">        These are random numbers *a*, *b*, and *c* such that ``c =</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-docstring">        ab``. This function can be used in pre-processing.</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-docstring">        Returns a tuple with the number of triples generated and a</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"><tt class="py-docstring">        Deferred which will yield a list of 3-tuples.</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">threshold</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-name">T</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">t</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">make_triple</tt><tt class="py-op">(</tt><tt class="py-param">shares</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">            <tt class="py-name">a_t</tt><tt class="py-op">,</tt> <tt class="py-name">b_t</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">r_t</tt><tt class="py-op">,</tt> <tt class="py-name">r_2t</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">shares</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">            <tt class="py-name">c_2t</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">                <tt class="py-comment"># Multiply a[i] and b[i] without resharing.</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">ci</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-98', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">a_t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">b_t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">                <tt class="py-name">ci</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">ai</tt><tt class="py-op">,</tt> <tt class="py-name">bi</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">ai</tt> <tt class="py-op">*</tt> <tt class="py-name">bi</tt><tt class="py-op">)</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">                <tt class="py-name">c_2t</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">ci</tt><tt class="py-op">)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">            <tt class="py-name">d_2t</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">c_2t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">r_2t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method viff.paillier.PaillierRuntime.open()=viff.paillier.PaillierRuntime-class.html#open,Method viff.runtime.Runtime.open()=viff.runtime.Runtime-class.html#open"><a title="viff.paillier.PaillierRuntime.open
+viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-99', 'open', 'link-99');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">d_2t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">threshold</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">            <tt class="py-name">c_t</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">r_t</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">a_t</tt><tt class="py-op">,</tt> <tt class="py-name">b_t</tt><tt class="py-op">,</tt> <tt class="py-name">c_t</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt class="py-name">single_a</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method viff.active.TriplesHyperinvertibleMatricesMixin.single_share_random()=viff.active.TriplesHyperinvertibleMatricesMixin-class.html#single_share_random"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.single_share_random" class="py-name" href="#" onclick="return doclink('link-100', 'single_share_random', 'link-100');">single_share_random</a></tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt id="link-101" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-101', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-name">single_b</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.single_share_random" class="py-name" href="#" onclick="return doclink('link-102', 'single_share_random', 'link-100');">single_share_random</a></tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt id="link-103" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-103', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">        <tt class="py-name">double_c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method viff.active.TriplesHyperinvertibleMatricesMixin.double_share_random()=viff.active.TriplesHyperinvertibleMatricesMixin-class.html#double_share_random"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.double_share_random" class="py-name" href="#" onclick="return doclink('link-104', 'double_share_random', 'link-104');">double_share_random</a></tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">,</tt> <tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-105', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line"> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">gatherResults</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">single_a</tt><tt class="py-op">,</tt> <tt class="py-name">single_b</tt><tt class="py-op">,</tt> <tt class="py-name">double_c</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-106', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">make_triple</tt><tt class="py-op">)</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">T</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt> </tt>
+</div></div><a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"> </tt>
+<a name="TriplesPRSSMixin"></a><div id="TriplesPRSSMixin-def"><a name="L411"></a><tt class="py-lineno">411</tt> <a class="py-toggle" href="#" id="TriplesPRSSMixin-toggle" onclick="return toggle('TriplesPRSSMixin');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.active.TriplesPRSSMixin-class.html">TriplesPRSSMixin</a><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesPRSSMixin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TriplesPRSSMixin-expanded"><a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">    <tt class="py-docstring">"""Mixin class for generating multiplication triples using PRSS."""</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line"> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">preprocess</tt><tt class="py-op">(</tt><tt class="py-string">"generate_triples"</tt><tt class="py-op">)</tt> </tt>
+<a name="TriplesPRSSMixin.get_triple"></a><div id="TriplesPRSSMixin.get_triple-def"><a name="L416"></a><tt class="py-lineno">416</tt> <a class="py-toggle" href="#" id="TriplesPRSSMixin.get_triple-toggle" onclick="return toggle('TriplesPRSSMixin.get_triple');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesPRSSMixin-class.html#get_triple">get_triple</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesPRSSMixin.get_triple-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesPRSSMixin.get_triple-expanded"><a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">        <tt class="py-name">count</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.generate_triples
+viff.active.TriplesPRSSMixin.generate_triples" class="py-name" href="#" onclick="return doclink('link-107', 'generate_triples', 'link-96');">generate_triples</a></tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-108', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">        <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">triples</tt><tt class="py-op">:</tt> <tt class="py-name">triples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="TriplesPRSSMixin.generate_triples"></a><div id="TriplesPRSSMixin.generate_triples-def"><a name="L422"></a><tt class="py-lineno">422</tt> <a class="py-toggle" href="#" id="TriplesPRSSMixin.generate_triples-toggle" onclick="return toggle('TriplesPRSSMixin.generate_triples');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.TriplesPRSSMixin-class.html#generate_triples">generate_triples</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TriplesPRSSMixin.generate_triples-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TriplesPRSSMixin.generate_triples-expanded"><a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-docstring">"""Generate a multiplication triple using PRSS.</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line"><tt class="py-docstring">        These are random numbers *a*, *b*, and *c* such that ``c =</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line"><tt class="py-docstring">        ab``. This function can be used in pre-processing.</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"><tt class="py-docstring">        Returns a tuple with the number of triples generated (1) and a</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line"><tt class="py-docstring">        Deferred which will yield a singleton-list with a 3-tuple.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">        <tt class="py-name">a_t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method viff.paillier.PaillierRuntime.prss_share_random()=viff.paillier.PaillierRuntime-class.html#prss_share_random,Method viff.runtime.Runtime.prss_share_random()=viff.runtime.Runtime-class.html#prss_share_random"><a title="viff.paillier.PaillierRuntime.prss_share_random
+viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-109', 'prss_share_random', 'link-109');">prss_share_random</a></tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-110', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-name">b_t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="viff.paillier.PaillierRuntime.prss_share_random
+viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-111', 'prss_share_random', 'link-109');">prss_share_random</a></tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-112', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">        <tt class="py-name">r_t</tt><tt class="py-op">,</tt> <tt class="py-name">r_2t</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method viff.runtime.Runtime.prss_double_share()=viff.runtime.Runtime-class.html#prss_double_share"><a title="viff.runtime.Runtime.prss_double_share" class="py-name" href="#" onclick="return doclink('link-113', 'prss_double_share', 'link-113');">prss_double_share</a></tt><tt class="py-op">(</tt><tt id="link-114" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-114', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-comment"># Multiply a and b without resharing.</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">c_2t</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-115', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">a_t</tt><tt class="py-op">,</tt> <tt class="py-name">b_t</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-name">c_2t</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">a</tt> <tt class="py-op">*</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">        <tt class="py-name">d_2t</tt> <tt class="py-op">=</tt> <tt class="py-name">c_2t</tt> <tt class="py-op">-</tt> <tt class="py-name">r_2t</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="viff.paillier.PaillierRuntime.open
+viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-116', 'open', 'link-99');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">d_2t</tt><tt class="py-op">,</tt> <tt class="py-name">threshold</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">threshold</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">        <tt class="py-name">c_t</tt> <tt class="py-op">=</tt> <tt class="py-name">r_t</tt> <tt class="py-op">+</tt> <tt class="py-name">d</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">succeed</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">a_t</tt><tt class="py-op">,</tt> <tt class="py-name">b_t</tt><tt class="py-op">,</tt> <tt class="py-name">c_t</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"> </tt>
+<a name="BasicActiveRuntime"></a><div id="BasicActiveRuntime-def"><a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <a class="py-toggle" href="#" id="BasicActiveRuntime-toggle" onclick="return toggle('BasicActiveRuntime');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.active.BasicActiveRuntime-class.html">BasicActiveRuntime</a><tt class="py-op">(</tt><tt class="py-base-class">Runtime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BasicActiveRuntime-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BasicActiveRuntime-expanded"><a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">    <tt class="py-docstring">"""Basic runtime secure against active adversaries.</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line"><tt class="py-docstring">    This class depends on either</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"><tt class="py-docstring">    :class:`TriplesHyperinvertibleMatricesMixin` or</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-docstring">    :class:`TriplesPRSSMixin` to provide a :meth:`get_triple` method.</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"><tt class="py-docstring">    Instead of using this class directly, one should probably use</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"><tt class="py-docstring">    :class:`ActiveRuntime` instead.</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="BasicActiveRuntime.mul"></a><div id="BasicActiveRuntime.mul-def"><a name="L457"></a><tt class="py-lineno">457</tt> <a class="py-toggle" href="#" id="BasicActiveRuntime.mul-toggle" onclick="return toggle('BasicActiveRuntime.mul');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.active.BasicActiveRuntime-class.html#mul">mul</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share_x</tt><tt class="py-op">,</tt> <tt class="py-param">share_y</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BasicActiveRuntime.mul-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BasicActiveRuntime.mul-expanded"><a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-docstring">"""Multiplication of shares.</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-docstring">        Preprocessing: 1 multiplication triple.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"><tt class="py-docstring">        Communication: 2 openings.</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_x</tt><tt class="py-op">,</tt> <tt id="link-117" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-117', 'Share', 'link-12');">Share</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_y</tt><tt class="py-op">,</tt> <tt id="link-118" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-118', 'Share', 'link-12');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> \ </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">            <tt class="py-string">"At least one of share_x and share_y must be a Share."</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_x</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-119', 'Share', 'link-12');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">            <tt class="py-comment"># Then share_y must be a Share =&gt; local multiplication. We</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># clone first to avoid changing share_y.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">share_y</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method viff.runtime.Share.clone()=viff.runtime.Share-class.html#clone"><a title="viff.runtime.Share.clone" class="py-name" href="#" onclick="return doclink('link-120', 'clone', 'link-120');">clone</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">y</tt><tt class="py-op">:</tt> <tt class="py-name">share_x</tt> <tt class="py-op">*</tt> <tt class="py-name">y</tt><tt class="py-op">)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_y</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-121', 'Share', 'link-12');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">            <tt class="py-comment"># Likewise when share_y is a constant.</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">share_x</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="viff.runtime.Share.clone" class="py-name" href="#" onclick="return doclink('link-122', 'clone', 'link-120');">clone</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt> <tt class="py-op">*</tt> <tt class="py-name">share_y</tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-comment"># At this point both share_x and share_y must be Share</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># objects. We multiply them via a multiplication triple.</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">def</tt> <tt class="py-def-name">finish_mul</tt><tt class="py-op">(</tt><tt class="py-param">triple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">triple</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="viff.paillier.PaillierRuntime.open
+viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-123', 'open', 'link-99');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">share_x</tt> <tt class="py-op">-</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">            <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="viff.paillier.PaillierRuntime.open
+viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-124', 'open', 'link-99');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">share_y</tt> <tt class="py-op">-</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line"> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">            <tt class="py-comment"># TODO: We ought to be able to simply do</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#   return d*e + d*y + e*x + c</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># but that leads to infinite recursion since d and e are</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Shares, not FieldElements. So we have to do a bit more</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># work... The following callback also leads to recursion, but</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># only one level since d and e are FieldElements now, which</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># means that we return in the above if statements.</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-125', 'gather_shares', 'link-15');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">d</tt><tt class="py-op">*</tt><tt class="py-name">e</tt> <tt class="py-op">+</tt> <tt class="py-name">d</tt><tt class="py-op">*</tt><tt class="py-name">b</tt> <tt class="py-op">+</tt> <tt class="py-name">e</tt><tt class="py-op">*</tt><tt class="py-name">a</tt> <tt class="py-op">+</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">        <tt class="py-comment"># This will be the result, a Share object.</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-126', 'Share', 'link-12');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">share_x</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-127', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-comment"># This is the Deferred we will do processing on.</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">triple</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method viff.active.TriplesHyperinvertibleMatricesMixin.get_triple()=viff.active.TriplesHyperinvertibleMatricesMixin-class.html#get_triple,Method viff.active.TriplesPRSSMixin.get_triple()=viff.active.TriplesPRSSMixin-class.html#get_triple"><a title="viff.active.TriplesHyperinvertibleMatricesMixin.get_triple
+viff.active.TriplesPRSSMixin.get_triple" class="py-name" href="#" onclick="return doclink('link-128', 'get_triple', 'link-128');">get_triple</a></tt><tt class="py-op">(</tt><tt class="py-name">share_x</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-129', 'field', 'link-26');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-130', 'schedule_callback', 'link-47');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">triple</tt><tt class="py-op">,</tt> <tt class="py-name">finish_mul</tt><tt class="py-op">)</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-comment"># We add the result to the chains in triple.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">triple</tt><tt class="py-op">.</tt><tt class="py-name">chainDeferred</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div></div><a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line"> </tt>
+<a name="ActiveRuntime"></a><div id="ActiveRuntime-def"><a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line"> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <a class="py-toggle" href="#" id="ActiveRuntime-toggle" onclick="return toggle('ActiveRuntime');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.active.ActiveRuntime-class.html">ActiveRuntime</a><tt class="py-op">(</tt><tt class="py-base-class">BasicActiveRuntime</tt><tt class="py-op">,</tt> <tt class="py-base-class">TriplesPRSSMixin</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ActiveRuntime-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ActiveRuntime-expanded"><a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">    <tt class="py-docstring">"""Default mix of :class:`BasicActiveRuntime` and</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line"><tt class="py-docstring">    :class:`TriplesPRSSMixin`."""</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:46 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff.active.ActiveRuntime-class.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.active.ActiveRuntime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.active-module.html">Module&nbsp;active</a> ::
+        Class&nbsp;ActiveRuntime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.active.ActiveRuntime-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ActiveRuntime</h1><p class="nomargin-top"><span class="codelink"><a href="viff.active-pysrc.html#ActiveRuntime">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_activerunt" name="class_hierarchy_for_activerunt">
+<area shape="rect" href="viff.active.ActiveRuntime-class.html" title="ActiveRuntime" alt="" coords="173,173,277,200"/>
+<area shape="rect" href="viff.comparison.ActiveToft05Runtime-class.html" title="comparison.ActiveToft05Runtime" alt="" coords="5,229,213,256"/>
+<area shape="rect" href="viff.comparison.ActiveToft07Runtime-class.html" title="comparison.ActiveToft07Runtime" alt="" coords="237,229,445,256"/>
+<area shape="rect" href="viff.active.BasicActiveRuntime-class.html" title="BasicActiveRuntime" alt="" coords="80,117,216,144"/>
+<area shape="rect" href="viff.active.TriplesPRSSMixin-class.html" title="TriplesPRSSMixin" alt="" coords="240,117,365,144"/>
+<area shape="rect" href="viff.runtime.BasicRuntime-class.html" title="runtime.BasicRuntime" alt="" coords="73,5,223,32"/>
+<area shape="rect" href="viff.runtime.Runtime-class.html" title="runtime.Runtime" alt="" coords="91,61,205,88"/>
+</map>
+  <img src="class_hierarchy_for_activerunt.gif" alt='' usemap="#class_hierarchy_for_activerunt" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+Default mix of <tt class="rst-rst-rst-rst-docutils literal rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">BasicActiveRuntime</span></tt> and
+<tt class="rst-rst-rst-rst-docutils literal rst-rst-rst-docutils literal rst-rst-docutils literal rst-docutils literal"><span class="pre">TriplesPRSSMixin</span></tt>.
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.active.BasicActiveRuntime-class.html">BasicActiveRuntime</a></code></b>:
+      <code><a href="viff.active.BasicActiveRuntime-class.html#mul">mul</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b>:
+      <code><a href="viff.runtime.Runtime-class.html#__init__">__init__</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#add">add</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#open">open</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_double_share">prss_double_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_shamir_share_bit_double">prss_shamir_share_bit_double</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share">prss_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_bit_double">prss_share_bit_double</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_zero">prss_share_zero</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#sub">sub</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#xor">xor</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b> (private):
+      <code><a href="viff.runtime.Runtime-class.html#_recombine" onclick="show_private();">_recombine</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#_shamir_share" onclick="show_private();">_shamir_share</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares" onclick="show_private();">_exchange_shares</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_data" onclick="show_private();">_expect_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_share" onclick="show_private();">_expect_share</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.active.TriplesPRSSMixin-class.html">TriplesPRSSMixin</a></code></b>:
+      <code><a href="viff.active.TriplesPRSSMixin-class.html#generate_triples">generate_triples</a></code>,
+      <code><a href="viff.active.TriplesPRSSMixin-class.html#get_triple">get_triple</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Static Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-StaticMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#id">id</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#num_players">num_players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#players">players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#program_counter">program_counter</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#protocols">protocols</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#threshold">threshold</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_needed_data" onclick="show_private();">_needed_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_pool" onclick="show_private();">_pool</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:40 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff.active.BasicActiveRuntime-class.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.active.BasicActiveRuntime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.active-module.html">Module&nbsp;active</a> ::
+        Class&nbsp;BasicActiveRuntime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.active.BasicActiveRuntime-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BasicActiveRuntime</h1><p class="nomargin-top"><span class="codelink"><a href="viff.active-pysrc.html#BasicActiveRuntime">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_basicactiv" name="class_hierarchy_for_basicactiv">
+<area shape="rect" href="viff.active.ActiveRuntime-class.html" title="ActiveRuntime" alt="" coords="173,173,277,200"/>
+<area shape="rect" href="viff.comparison.ActiveToft05Runtime-class.html" title="comparison.ActiveToft05Runtime" alt="" coords="5,229,213,256"/>
+<area shape="rect" href="viff.comparison.ActiveToft07Runtime-class.html" title="comparison.ActiveToft07Runtime" alt="" coords="237,229,445,256"/>
+<area shape="rect" href="viff.active.BasicActiveRuntime-class.html" title="BasicActiveRuntime" alt="" coords="157,117,293,144"/>
+<area shape="rect" href="viff.runtime.BasicRuntime-class.html" title="runtime.BasicRuntime" alt="" coords="151,5,300,32"/>
+<area shape="rect" href="viff.runtime.Runtime-class.html" title="runtime.Runtime" alt="" coords="168,61,283,88"/>
+</map>
+  <img src="class_hierarchy_for_basicactiv.gif" alt='' usemap="#class_hierarchy_for_basicactiv" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Basic runtime secure against active adversaries.</p>
+<p>This class depends on either
+<tt class="rst-docutils literal"><span class="pre">TriplesHyperinvertibleMatricesMixin</span></tt> or
+<tt class="rst-docutils literal"><span class="pre">TriplesPRSSMixin</span></tt> to provide a <tt class="rst-docutils literal"><span class="pre">get_triple</span></tt> method.</p>
+<p>Instead of using this class directly, one should probably use
+<tt class="rst-docutils literal"><span class="pre">ActiveRuntime</span></tt> instead.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.active.BasicActiveRuntime-class.html#mul" class="summary-sig-name">mul</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share_x</span>,
+        <span class="summary-sig-arg">share_y</span>)</span><br />
+      Multiplication of shares.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.active-pysrc.html#BasicActiveRuntime.mul">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b>:
+      <code><a href="viff.runtime.Runtime-class.html#__init__">__init__</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#add">add</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#open">open</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_double_share">prss_double_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_shamir_share_bit_double">prss_shamir_share_bit_double</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share">prss_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_bit_double">prss_share_bit_double</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_zero">prss_share_zero</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#sub">sub</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#xor">xor</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b> (private):
+      <code><a href="viff.runtime.Runtime-class.html#_recombine" onclick="show_private();">_recombine</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#_shamir_share" onclick="show_private();">_shamir_share</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares" onclick="show_private();">_exchange_shares</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_data" onclick="show_private();">_expect_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_share" onclick="show_private();">_expect_share</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Static Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-StaticMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#id">id</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#num_players">num_players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#players">players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#program_counter">program_counter</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#protocols">protocols</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#threshold">threshold</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_needed_data" onclick="show_private();">_needed_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_pool" onclick="show_private();">_pool</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="mul"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">mul</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share_x</span>,
+        <span class="sig-arg">share_y</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.active-pysrc.html#BasicActiveRuntime.mul">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Multiplication of shares.</p>
+<p>Preprocessing: 1 multiplication triple.
+Communication: 2 openings.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+    <dt>Overrides:
+        <a href="viff.runtime.Runtime-class.html#mul">runtime.Runtime.mul</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Sun Sep 21 13:15:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.7/viff.active.BrachaBroadcastMixin-class.html	Sun Sep 21 13:19:25 2008 +0200
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.active.BrachaBroadcastMixin</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.active-module.html">Module&nbsp;active</a> ::
+        Class&nbsp;BrachaBroadcastMixin
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.active.BrachaBroadcastMixin-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BrachaBroadcastMixin</h1><p class="nomargin-top"><span class="codelink"><a href=