Highly unclear

This commit is contained in:
Imbus 2024-04-12 00:27:56 +02:00
parent 419970d6cd
commit dc9638998f
2 changed files with 28 additions and 0 deletions

View file

@ -20,6 +20,7 @@ CFLAGS += -Wno-unused-result
CFLAGS += -Wno-unused-local-typedefs
CFLAGS += -Wno-unused-const-variable
CFLAGS += -Wno-unused-macros
CFLAGS += -lsodium
CFLAGS += -O3
CFLAGS += -g

View file

@ -1,8 +1,16 @@
#include <iostream>
#include <memory>
#include <sodium.h>
#include "point.hpp"
unsigned char ed25519_pk[crypto_sign_PUBLICKEYBYTES];
unsigned char ed25519_sk[crypto_sign_SECRETKEYBYTES];
unsigned char ed25519_seed[crypto_sign_SEEDBYTES];
unsigned char edwards25519_pk[crypto_scalarmult_ed25519_BYTES];
unsigned char edwards25519_sk[crypto_scalarmult_ed25519_SCALARBYTES];
unsigned char h[crypto_hash_sha512_BYTES];
template <typename T> struct Option {
private:
T value;
@ -11,6 +19,12 @@ template <typename T> struct Option {
public:
Option() : is_some(false) {}
Option(T value) : value(value), is_some(true) {}
T unwrap() {
if (!is_some)
throw std::runtime_error("Option is empty");
return value;
}
};
// Templated alias for unique_ptr
@ -21,6 +35,16 @@ template <typename T, typename... Args> Box<T> Enbox(Args &&...args) {
}
int main(int argc, char *argv[]) {
if (sodium_init() < 0) {
return 1;
}
// create an Ed25519 keypair
crypto_sign_keypair(ed25519_pk, ed25519_sk);
// Extract the seed from the Ed25519 secret key
crypto_sign_ed25519_sk_to_seed(ed25519_seed, ed25519_sk);
Point p = Point(10, 5);
std::cout << p << std::endl;
p.move(5, 5);
@ -33,6 +57,9 @@ int main(int argc, char *argv[]) {
Box<Point> p_box = std::make_unique<Point>(10, 5);
Box<Point> p_box2 = Enbox<Point>(10, 5);
Box<Option<Point>> p_box3 = Enbox<Option<Point>>(Point(10, 5));
p_box3->unwrap().move(5, 5);
std::cout << p << std::endl;
std::cout << *p_box << std::endl;