main: cleaned up
This commit is contained in:
parent
d96be65940
commit
3af8bc98fb
241
src/main.cpp
241
src/main.cpp
|
@ -16,249 +16,8 @@
|
|||
* along with Codecrypt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "prng.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "ios.h"
|
||||
|
||||
#include <iomanip>
|
||||
using namespace std;
|
||||
|
||||
class primitiverng : public prng
|
||||
{
|
||||
public:
|
||||
uint random (uint n) {
|
||||
return rand() % n;
|
||||
}
|
||||
|
||||
void seed (uint n) {
|
||||
srand (time (NULL) + n);
|
||||
}
|
||||
};
|
||||
|
||||
#include "hash.h"
|
||||
#include "sha2.h"
|
||||
#include <stdint.h>
|
||||
|
||||
class sha2hash : public hash_func
|
||||
{
|
||||
public:
|
||||
uint size() {
|
||||
//return 4;
|
||||
return SHA256_DIGEST_LENGTH;
|
||||
}
|
||||
|
||||
vector<byte> operator() (const vector<byte>&a) {
|
||||
SHA256_CTX ctx;
|
||||
SHA256_Init (&ctx);
|
||||
SHA256_Update (&ctx, (const uint8_t*) & (a[0]), a.size() );
|
||||
vector<byte> r;
|
||||
r.resize (size() );
|
||||
//r.resize (SHA256_DIGEST_LENGTH);
|
||||
SHA256_Final ( (uint8_t*) & (r[0]), &ctx);
|
||||
//r.resize(size());
|
||||
return r;
|
||||
}
|
||||
};
|
||||
|
||||
#include "fmtseq.h"
|
||||
#include "arcfour.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
primitiverng r;
|
||||
r.seed (0);
|
||||
sha2hash sha2;
|
||||
fmtseq::privkey priv;
|
||||
fmtseq::pubkey pub;
|
||||
|
||||
cout << fmtseq::generate (pub, priv, r, sha2, 128, 3, 3) << endl;
|
||||
bvector h, sig;
|
||||
h.resize (priv.hash_size(), 0);
|
||||
h[0] = 1;
|
||||
h[1] = 1;
|
||||
//for (uint i = 0; i < 10; ++i) h[2 * i] = 1;
|
||||
|
||||
cout << "HASH " << h;
|
||||
|
||||
while (priv.sigs_remaining() ) {
|
||||
h[r.random (h.size() )] = r.random (2);
|
||||
|
||||
priv.sign (h, sig, sha2);
|
||||
//cout << i << "-th SIG " << sig;
|
||||
cout << "VERIFY ERROR: " << pub.verify (sig, h, sha2) << " sigs left: " << priv.sigs_remaining() << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#if 0
|
||||
arcfour<unsigned short> c;
|
||||
if (!c.init (10) ) {
|
||||
cout << "haha." << endl;
|
||||
return 1;
|
||||
}
|
||||
std::vector<unsigned short> k;
|
||||
k.push_back ('K');
|
||||
k.push_back ('e');
|
||||
k.push_back ('y');
|
||||
k.push_back ('l');
|
||||
k.push_back ('o');
|
||||
k.push_back ('l');
|
||||
c.load_key (k);
|
||||
|
||||
for (int i = 0; i < 20; ++i)
|
||||
cout << hex << (int) c.gen() << endl;
|
||||
|
||||
return 0;
|
||||
|
||||
primitiverng r;
|
||||
r.seed (0);
|
||||
|
||||
mce::pubkey pub, pub2;
|
||||
mce::privkey priv, priv2;
|
||||
mce::generate (pub, priv, r, 6, 2);
|
||||
|
||||
sencode *s;
|
||||
std::cout << priv.Pinv;
|
||||
s = priv.serialize();
|
||||
std::cout << s->encode();
|
||||
if (priv.unserialize (s) )
|
||||
std::cout << priv.Pinv;
|
||||
|
||||
sencode_destroy (s);
|
||||
return 0;
|
||||
sencode_list*x = new sencode_list;
|
||||
x->items.push_back (new sencode_int (1) );
|
||||
x->items.push_back (new sencode_bytes ("ahoj") );
|
||||
std::string tmp = x->encode();
|
||||
std::cout << tmp << std::endl;
|
||||
sencode_destroy (x);
|
||||
sencode*s;
|
||||
sencode_decode (tmp, &s);
|
||||
std::cout << s->encode() << std::endl;
|
||||
sencode_destroy (s);
|
||||
bvector b;
|
||||
b.resize (9);
|
||||
b[0] = 1;
|
||||
b[5] = 1;
|
||||
b[8] = 1;
|
||||
s = b.serialize();
|
||||
b[6] = 1;
|
||||
std::cout << s->encode() << std::endl;
|
||||
if (b.unserialize (s) ) {
|
||||
std::cout << b ;
|
||||
}
|
||||
sencode_destroy (s);
|
||||
return 0;
|
||||
/* this is just a test, don't mind it */
|
||||
primitiverng r;
|
||||
r.seed (0);
|
||||
|
||||
/*
|
||||
mce::privkey priv;
|
||||
mce::pubkey pub;
|
||||
mce::generate(pub,priv,r,8,7);
|
||||
|
||||
bvector a,b;
|
||||
|
||||
a.resize(priv.hash_size(),0);
|
||||
|
||||
a[0]=1;
|
||||
a[2]=1;
|
||||
a[4]=1;
|
||||
a[5]=1;
|
||||
a[6]=1;
|
||||
a[7]=1;
|
||||
a[10]=1;
|
||||
a[12]=1;
|
||||
a[16]=1;
|
||||
a[20]=1;
|
||||
a[22]=1;
|
||||
a[24]=1;
|
||||
a[25]=1;
|
||||
a[26]=1;
|
||||
a[27]=1;
|
||||
a[110]=1;
|
||||
a[112]=1;
|
||||
a[116]=1;
|
||||
priv.prepare();
|
||||
priv.sign(a,b,3,10000,r);
|
||||
std::cout << a << b << pub.verify(b,a,3) << std::endl;
|
||||
*/
|
||||
cfs_qd::privkey priv;
|
||||
cfs_qd::pubkey pub;
|
||||
cfs_qd::generate (pub, priv, r, 7, 3, 7, 1);
|
||||
|
||||
cout << "hash size: " << priv.hash_size() << ' ' << pub.hash_size() << endl;
|
||||
cout << "signature size: " << priv.signature_size() << ' ' << pub.signature_size() << endl;
|
||||
|
||||
cout << "sig weight: " << priv.signature_weight() << ' ' << pub.signature_weight() << endl;
|
||||
|
||||
priv.prepare();
|
||||
|
||||
bvector hash;
|
||||
hash.resize (priv.hash_size(), 0);
|
||||
hash[0] = 1;
|
||||
hash[2] = 1;
|
||||
hash[4] = 1;
|
||||
hash[5] = 1;
|
||||
hash[6] = 1;
|
||||
hash[7] = 1;
|
||||
hash[10] = 1;
|
||||
hash[12] = 1;
|
||||
hash[16] = 1;
|
||||
hash[20] = 1;
|
||||
hash[22] = 1;
|
||||
hash[24] = 1;
|
||||
hash[25] = 1;
|
||||
hash[26] = 1;
|
||||
hash[27] = 1;
|
||||
hash[110] = 1;
|
||||
hash[112] = 1;
|
||||
hash[116] = 1;
|
||||
|
||||
cout << "HASH " << endl;
|
||||
cout << hash;
|
||||
|
||||
bvector sig;
|
||||
if (priv.sign (hash, sig, 3, 10000, r) ) {
|
||||
cout << "failed" << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
cout << "SIGNATURE " << sig;
|
||||
|
||||
if (pub.verify (sig, hash, 3) )
|
||||
cout << "verify failed" << endl;
|
||||
else cout << "verify okay" << endl;
|
||||
|
||||
#endif
|
||||
#if 0
|
||||
bvector plain;
|
||||
plain.resize (pub.plain_size(), 0);
|
||||
plain[0] = 1;
|
||||
plain[1] = 1;
|
||||
plain[2] = 1;
|
||||
|
||||
cout << "PLAINTEXT" << endl;
|
||||
cout << plain;
|
||||
|
||||
bvector cipher;
|
||||
pub.encrypt (plain, cipher, r);
|
||||
|
||||
cout << "CIPHERTEXT" << endl;
|
||||
cout << cipher;
|
||||
|
||||
bvector decrypted;
|
||||
priv.decrypt (cipher, decrypted);
|
||||
|
||||
cout << "DECRYPTED" << endl;
|
||||
cout << decrypted;
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue