@@ -170,7 +170,7 @@ LIBCOMPONENTS += $$(BUILD_OBJ)/$(1)/decaf.o $$(BUILD_OBJ)/$(1)/elligator.o $$(BU | |||||
PER_OBJ_DIRS += $$(BUILD_OBJ)/$(1) | PER_OBJ_DIRS += $$(BUILD_OBJ)/$(1) | ||||
GLOBAL_HEADERS_OF_$(1) = $(BUILD_INC)/decaf/decaf_$(3).h $(BUILD_INC)/decaf/decaf_$(3).hxx \ | GLOBAL_HEADERS_OF_$(1) = $(BUILD_INC)/decaf/decaf_$(3).h $(BUILD_INC)/decaf/decaf_$(3).hxx \ | ||||
$(BUILD_INC)/decaf/crypto_$(3).h $(BUILD_INC)/decaf/crypto_$(3).hxx \ | $(BUILD_INC)/decaf/crypto_$(3).h $(BUILD_INC)/decaf/crypto_$(3).hxx \ | ||||
$(BUILD_INC)/decaf/eddsa_$(3).h $(BUILD_INC)/decaf/eddsa_$(3).hxx | |||||
$(BUILD_INC)/decaf/ed$(3).h $(BUILD_INC)/decaf/ed$(3).hxx | |||||
HEADERS_OF_$(1) = $$(HEADERS_OF_$(2)) $$(GLOBAL_HEADERS_OF_$(1)) | HEADERS_OF_$(1) = $$(HEADERS_OF_$(2)) $$(GLOBAL_HEADERS_OF_$(1)) | ||||
HEADERS += $$(GLOBAL_HEADERS_OF_$(1)) | HEADERS += $$(GLOBAL_HEADERS_OF_$(1)) | ||||
@@ -183,7 +183,7 @@ $$(BUILD_H)/$(1)/%.h: src/per_curve/%.tmpl.h src/gen_headers/* $$(HEADERS_OF_$(2 | |||||
$$(BUILD_INC)/decaf/decaf_$(3).%: src/per_curve/decaf.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | $$(BUILD_INC)/decaf/decaf_$(3).%: src/per_curve/decaf.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | ||||
python -B src/gen_headers/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$< | python -B src/gen_headers/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$< | ||||
$$(BUILD_INC)/decaf/eddsa_$(3).%: src/per_curve/eddsa.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | |||||
$$(BUILD_INC)/decaf/ed$(3).%: src/per_curve/eddsa.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | |||||
python -B src/gen_headers/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$< | python -B src/gen_headers/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$< | ||||
$$(BUILD_INC)/decaf/elligator_$(3).%: src/per_curve/elligator.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | $$(BUILD_INC)/decaf/elligator_$(3).%: src/per_curve/elligator.tmpl.% src/gen_headers/* $$(HEADERS_OF_$(2)) | ||||
@@ -5,7 +5,7 @@ | |||||
#include "field.h" | #include "field.h" | ||||
#include <decaf.h> | #include <decaf.h> | ||||
#include <decaf/eddsa_$(gf_bits).h> | |||||
#include <decaf/ed$(gf_bits).h> | |||||
/* Template stuff */ | /* Template stuff */ | ||||
#define API_NS(_id) $(c_ns)_##_id | #define API_NS(_id) $(c_ns)_##_id | ||||
@@ -1239,7 +1239,7 @@ decaf_error_t API_NS(point_decode_like_eddsa) ( | |||||
return decaf_succeed_if(succ); | return decaf_succeed_if(succ); | ||||
} | } | ||||
decaf_error_t decaf_x$(gf_shortname)_direct_scalarmul ( | |||||
decaf_error_t decaf_x$(gf_shortname) ( | |||||
uint8_t out[X_PUBLIC_BYTES], | uint8_t out[X_PUBLIC_BYTES], | ||||
const uint8_t base[X_PUBLIC_BYTES], | const uint8_t base[X_PUBLIC_BYTES], | ||||
const uint8_t scalar[X_PRIVATE_BYTES] | const uint8_t scalar[X_PRIVATE_BYTES] | ||||
@@ -1310,7 +1310,7 @@ decaf_error_t decaf_x$(gf_shortname)_direct_scalarmul ( | |||||
return decaf_succeed_if(mask_to_bool(nz)); | return decaf_succeed_if(mask_to_bool(nz)); | ||||
} | } | ||||
void decaf_x$(gf_shortname)_base_scalarmul ( | |||||
void decaf_x$(gf_shortname)_generate_key ( | |||||
uint8_t out[X_PUBLIC_BYTES], | uint8_t out[X_PUBLIC_BYTES], | ||||
const uint8_t scalar[X_PRIVATE_BYTES] | const uint8_t scalar[X_PRIVATE_BYTES] | ||||
) { | ) { | ||||
@@ -383,7 +383,7 @@ decaf_error_t $(c_ns)_direct_scalarmul ( | |||||
* @retval DECAF_FAILURE The scalarmul didn't succeed, because the base | * @retval DECAF_FAILURE The scalarmul didn't succeed, because the base | ||||
* point is in a small subgroup. | * point is in a small subgroup. | ||||
*/ | */ | ||||
decaf_error_t decaf_x$(gf_shortname)_direct_scalarmul ( | |||||
decaf_error_t decaf_x$(gf_shortname) ( | |||||
uint8_t out[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | uint8_t out[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t base[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | const uint8_t base[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t scalar[DECAF_X$(gf_shortname)_PRIVATE_BYTES] | const uint8_t scalar[DECAF_X$(gf_shortname)_PRIVATE_BYTES] | ||||
@@ -399,7 +399,7 @@ extern const uint8_t decaf_x$(gf_shortname)_base_point[DECAF_X$(gf_shortname)_PU | |||||
* @param [out] scaled The scaled point base*scalar | * @param [out] scaled The scaled point base*scalar | ||||
* @param [in] scalar The scalar to multiply by. | * @param [in] scalar The scalar to multiply by. | ||||
*/ | */ | ||||
void decaf_x$(gf_shortname)_base_scalarmul ( | |||||
void decaf_x$(gf_shortname)_generate_key ( | |||||
uint8_t out[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | uint8_t out[DECAF_X$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t scalar[DECAF_X$(gf_shortname)_PRIVATE_BYTES] | const uint8_t scalar[DECAF_X$(gf_shortname)_PRIVATE_BYTES] | ||||
) API_VIS NONNULL NOINLINE; | ) API_VIS NONNULL NOINLINE; | ||||
@@ -21,7 +21,7 @@ | |||||
#include <string.h> /* for memcpy */ | #include <string.h> /* for memcpy */ | ||||
#include <decaf/decaf_$(gf_bits).h> | #include <decaf/decaf_$(gf_bits).h> | ||||
#include <decaf/eddsa_$(gf_bits).h> | |||||
#include <decaf/ed$(gf_bits).h> | |||||
#include <decaf/secure_buffer.hxx> | #include <decaf/secure_buffer.hxx> | ||||
#include <string> | #include <string> | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
@@ -640,7 +640,7 @@ public: | |||||
const FixedBlock<PRIVATE_BYTES> &scalar | const FixedBlock<PRIVATE_BYTES> &scalar | ||||
) throw(std::bad_alloc,CryptoException) { | ) throw(std::bad_alloc,CryptoException) { | ||||
SecureBuffer out(PUBLIC_BYTES); | SecureBuffer out(PUBLIC_BYTES); | ||||
if (DECAF_SUCCESS != decaf_x$(gf_shortname)_direct_scalarmul(out.data(), pk.data(), scalar.data())) { | |||||
if (DECAF_SUCCESS != decaf_x$(gf_shortname)(out.data(), pk.data(), scalar.data())) { | |||||
throw CryptoException(); | throw CryptoException(); | ||||
} | } | ||||
return out; | return out; | ||||
@@ -653,7 +653,7 @@ public: | |||||
const FixedBlock<PUBLIC_BYTES> &pk, | const FixedBlock<PUBLIC_BYTES> &pk, | ||||
const FixedBlock<PRIVATE_BYTES> &scalar | const FixedBlock<PRIVATE_BYTES> &scalar | ||||
) NOEXCEPT { | ) NOEXCEPT { | ||||
return decaf_x$(gf_shortname)_direct_scalarmul(out.data(), pk.data(), scalar.data()); | |||||
return decaf_x$(gf_shortname)(out.data(), pk.data(), scalar.data()); | |||||
} | } | ||||
/** Generate and return a public key; equivalent to shared_secret(base_point(),scalar) | /** Generate and return a public key; equivalent to shared_secret(base_point(),scalar) | ||||
@@ -663,7 +663,7 @@ public: | |||||
const FixedBlock<PRIVATE_BYTES> &scalar | const FixedBlock<PRIVATE_BYTES> &scalar | ||||
) throw(std::bad_alloc) { | ) throw(std::bad_alloc) { | ||||
SecureBuffer out(PUBLIC_BYTES); | SecureBuffer out(PUBLIC_BYTES); | ||||
decaf_x$(gf_shortname)_base_scalarmul(out.data(), scalar.data()); | |||||
decaf_x$(gf_shortname)_generate_key(out.data(), scalar.data()); | |||||
return out; | return out; | ||||
} | } | ||||
@@ -675,7 +675,7 @@ public: | |||||
FixedBuffer<PUBLIC_BYTES> &out, | FixedBuffer<PUBLIC_BYTES> &out, | ||||
const FixedBlock<PRIVATE_BYTES> &scalar | const FixedBlock<PRIVATE_BYTES> &scalar | ||||
) NOEXCEPT { | ) NOEXCEPT { | ||||
decaf_x$(gf_shortname)_base_scalarmul(out.data(), scalar.data()); | |||||
decaf_x$(gf_shortname)_generate_key(out.data(), scalar.data()); | |||||
} | } | ||||
}; | }; | ||||
@@ -4,7 +4,7 @@ | |||||
*/ | */ | ||||
#include "word.h" | #include "word.h" | ||||
#include <decaf/eddsa_$(gf_bits).h> | |||||
#include <decaf/ed$(gf_bits).h> | |||||
#include <decaf/shake.h> | #include <decaf/shake.h> | ||||
#include <decaf/sha512.h> | #include <decaf/sha512.h> | ||||
#include <string.h> | #include <string.h> | ||||
@@ -67,7 +67,7 @@ static void hash_init_with_dom( | |||||
#endif | #endif | ||||
} | } | ||||
void decaf_eddsa_$(gf_shortname)_derive_public_key ( | |||||
void decaf_ed$(gf_shortname)_derive_public_key ( | |||||
uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES] | const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES] | ||||
) { | ) { | ||||
@@ -101,7 +101,7 @@ void decaf_eddsa_$(gf_shortname)_derive_public_key ( | |||||
decaf_bzero(secret_scalar_ser, sizeof(secret_scalar_ser)); | decaf_bzero(secret_scalar_ser, sizeof(secret_scalar_ser)); | ||||
} | } | ||||
void decaf_eddsa_$(gf_shortname)_sign ( | |||||
void decaf_ed$(gf_shortname)_sign ( | |||||
uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | ||||
const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES], | const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES], | ||||
const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
@@ -193,7 +193,7 @@ void decaf_eddsa_$(gf_shortname)_sign ( | |||||
} | } | ||||
decaf_error_t decaf_eddsa_$(gf_shortname)_verify ( | |||||
decaf_error_t decaf_ed$(gf_shortname)_verify ( | |||||
const uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | const uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | ||||
const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t *message, | const uint8_t *message, | ||||
@@ -25,7 +25,7 @@ extern "C" { | |||||
* @param [out] pubkey The public key. | * @param [out] pubkey The public key. | ||||
* @param [in] privkey The private key. | * @param [in] privkey The private key. | ||||
*/ | */ | ||||
void decaf_eddsa_$(gf_shortname)_derive_public_key ( | |||||
void decaf_ed$(gf_shortname)_derive_public_key ( | |||||
uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES] | const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES] | ||||
) API_VIS NONNULL NOINLINE; | ) API_VIS NONNULL NOINLINE; | ||||
@@ -42,7 +42,7 @@ void decaf_eddsa_$(gf_shortname)_derive_public_key ( | |||||
* @param [in] message_len The length of the message. | * @param [in] message_len The length of the message. | ||||
* @param [in] prehashed Nonzero if the message is actually the hash of something you want to sign. | * @param [in] prehashed Nonzero if the message is actually the hash of something you want to sign. | ||||
*/ | */ | ||||
void decaf_eddsa_$(gf_shortname)_sign ( | |||||
void decaf_ed$(gf_shortname)_sign ( | |||||
uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | ||||
const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES], | const uint8_t privkey[DECAF_EDDSA_$(gf_shortname)_PRIVATE_BYTES], | ||||
const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
@@ -68,7 +68,7 @@ void decaf_eddsa_$(gf_shortname)_sign ( | |||||
* @param [in] message_len The length of the message. | * @param [in] message_len The length of the message. | ||||
* @param [in] prehashed Nonzero if the message is actually the hash of something you want to verify. | * @param [in] prehashed Nonzero if the message is actually the hash of something you want to verify. | ||||
*/ | */ | ||||
decaf_error_t decaf_eddsa_$(gf_shortname)_verify ( | |||||
decaf_error_t decaf_ed$(gf_shortname)_verify ( | |||||
const uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | const uint8_t signature[DECAF_EDDSA_$(gf_shortname)_SIGNATURE_BYTES], | ||||
const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | const uint8_t pubkey[DECAF_EDDSA_$(gf_shortname)_PUBLIC_BYTES], | ||||
const uint8_t *message, | const uint8_t *message, | ||||
@@ -9,7 +9,7 @@ | |||||
#include <decaf/eddsa.hxx> | #include <decaf/eddsa.hxx> | ||||
#include <decaf/decaf_$(gf_bits).hxx> | #include <decaf/decaf_$(gf_bits).hxx> | ||||
#include <decaf/eddsa_$(gf_bits).h> | |||||
#include <decaf/ed$(gf_bits).h> | |||||
#include <decaf/shake.hxx> | #include <decaf/shake.hxx> | ||||
#include <decaf/sha512.hxx> | #include <decaf/sha512.hxx> | ||||
@@ -113,7 +113,7 @@ public: | |||||
SecureBuffer out(CRTP::SIG_BYTES); | SecureBuffer out(CRTP::SIG_BYTES); | ||||
FixedArrayBuffer<Prehash::OUTPUT_BYTES> tmp; | FixedArrayBuffer<Prehash::OUTPUT_BYTES> tmp; | ||||
ph.final(tmp); | ph.final(tmp); | ||||
decaf_eddsa_$(gf_shortname)_sign ( | |||||
decaf_ed$(gf_shortname)_sign ( | |||||
out.data(), | out.data(), | ||||
((const CRTP*)this)->priv_.data(), | ((const CRTP*)this)->priv_.data(), | ||||
((const CRTP*)this)->pub_.data(), | ((const CRTP*)this)->pub_.data(), | ||||
@@ -162,7 +162,7 @@ public: | |||||
} | } | ||||
SecureBuffer out(CRTP::SIG_BYTES); | SecureBuffer out(CRTP::SIG_BYTES); | ||||
decaf_eddsa_$(gf_shortname)_sign ( | |||||
decaf_ed$(gf_shortname)_sign ( | |||||
out.data(), | out.data(), | ||||
((const CRTP*)this)->priv_.data(), | ((const CRTP*)this)->priv_.data(), | ||||
((const CRTP*)this)->pub_.data(), | ((const CRTP*)this)->pub_.data(), | ||||
@@ -235,13 +235,13 @@ public: | |||||
/** Create at random */ | /** Create at random */ | ||||
inline explicit PrivateKeyBase(Rng &r) NOEXCEPT : priv_(r) { | inline explicit PrivateKeyBase(Rng &r) NOEXCEPT : priv_(r) { | ||||
decaf_eddsa_$(gf_shortname)_derive_public_key(pub_.data(), priv_.data()); | |||||
decaf_ed$(gf_shortname)_derive_public_key(pub_.data(), priv_.data()); | |||||
} | } | ||||
/** Assignment from string */ | /** Assignment from string */ | ||||
inline PrivateKeyBase &operator=(const FixedBlock<SER_BYTES> &b) NOEXCEPT { | inline PrivateKeyBase &operator=(const FixedBlock<SER_BYTES> &b) NOEXCEPT { | ||||
memcpy(priv_.data(),b.data(),b.size()); | memcpy(priv_.data(),b.data(),b.size()); | ||||
decaf_eddsa_$(gf_shortname)_derive_public_key(pub_.data(), priv_.data()); | |||||
decaf_ed$(gf_shortname)_derive_public_key(pub_.data(), priv_.data()); | |||||
return *this; | return *this; | ||||
} | } | ||||
@@ -283,7 +283,7 @@ public: | |||||
return DECAF_FAILURE; | return DECAF_FAILURE; | ||||
} | } | ||||
return decaf_eddsa_$(gf_shortname)_verify ( | |||||
return decaf_ed$(gf_shortname)_verify ( | |||||
sig.data(), | sig.data(), | ||||
((const CRTP*)this)->pub_.data(), | ((const CRTP*)this)->pub_.data(), | ||||
message.data(), | message.data(), | ||||
@@ -331,7 +331,7 @@ public: | |||||
) const /*NOEXCEPT*/ { | ) const /*NOEXCEPT*/ { | ||||
FixedArrayBuffer<Prehash::OUTPUT_BYTES> m; | FixedArrayBuffer<Prehash::OUTPUT_BYTES> m; | ||||
ph.final(m); | ph.final(m); | ||||
return decaf_eddsa_$(gf_shortname)_verify ( | |||||
return decaf_ed$(gf_shortname)_verify ( | |||||
sig.data(), | sig.data(), | ||||
((const CRTP*)this)->pub_.data(), | ((const CRTP*)this)->pub_.data(), | ||||
m.data(), | m.data(), | ||||
@@ -351,7 +351,7 @@ public: | |||||
) const /*throw(CryptoException)*/ { | ) const /*throw(CryptoException)*/ { | ||||
FixedArrayBuffer<Prehash::OUTPUT_BYTES> m; | FixedArrayBuffer<Prehash::OUTPUT_BYTES> m; | ||||
ph.final(m); | ph.final(m); | ||||
if (DECAF_SUCCESS != decaf_eddsa_$(gf_shortname)_verify ( | |||||
if (DECAF_SUCCESS != decaf_ed$(gf_shortname)_verify ( | |||||
sig.data(), | sig.data(), | ||||
((const CRTP*)this)->pub_.data(), | ((const CRTP*)this)->pub_.data(), | ||||
m.data(), | m.data(), | ||||
@@ -4,5 +4,5 @@ | |||||
namespace decaf { enum Prehashed { PURE, PREHASHED }; } | namespace decaf { enum Prehashed { PURE, PREHASHED }; } | ||||
$("\n".join([ | $("\n".join([ | ||||
"#include <decaf/eddsa_%s.hxx>" % g for g in sorted([c["bits"] for _,c in curve.iteritems()]) | |||||
"#include <decaf/ed%s.hxx>" % g for g in sorted([c["bits"] for _,c in curve.iteritems()]) | |||||
])) | ])) |