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/>.
|
* 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()
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue