00001 // Copyright (C) 2005 Alexander Ushakov 00002 // Contents: Definition of class ShftConjKeyInstance. 00003 // This a version for Dehornoy's authentification protocol which works with Garside normal forms. 00004 // Personally, I believe that it produces more interesting instances. 00005 // 00006 // Principal Authors: Alexander Ushakov 00007 // 00008 // Revision History: 00009 // 00010 00011 #ifndef _ShftConjKeyGeneration_h_ 00012 #define _ShftConjKeyGeneration_h_ 00013 00014 #include "Word.h" 00015 #include "ThRightNormalForm.h" 00016 00017 #include <vector> 00018 using namespace std; 00019 00020 00021 //---------------------------------------------------------------------------// 00022 //-------------------------- ShftConjKeyInstance ----------------------------// 00023 //---------------------------------------------------------------------------// 00024 00025 00027 00031 class ShftConjKeyInstanceGarside 00032 { 00033 00035 // // 00036 // Constructors: // 00037 // // 00039 00040 public: 00041 00043 00046 ShftConjKeyInstanceGarside( int braid_rank , ThRightNormalForm publicKeyA , ThRightNormalForm privateKey ); 00047 00048 00050 // // 00051 // Accessors: // 00052 // // 00054 00055 public: 00056 00058 00063 static ShftConjKeyInstanceGarside random( int braid_rank , int baseLenth , int keyLength ); 00064 00066 int getBraidRank ( ) const { return theRank; } 00068 ThRightNormalForm getPrivateKey( ) const { return thePrivateKey; } 00070 pair< ThRightNormalForm , ThRightNormalForm > getPublicKey ( ) const { return thePublicKey; } 00071 00072 00074 // // 00075 // Data members: // 00076 // // 00078 00079 private: 00080 00082 int theRank; 00083 00085 ThRightNormalForm thePrivateKey; 00086 00088 pair< ThRightNormalForm , ThRightNormalForm > thePublicKey; 00089 00090 }; 00091 00092 00093 //---------------------------------------------------------------------------// 00094 //------------------------------- Algorithms --------------------------------// 00095 //---------------------------------------------------------------------------// 00096 00097 00098 ThRightNormalForm shiftedConjugation( const ThRightNormalForm& w , const ThRightNormalForm& c ); 00099 00100 00101 #endif