Files
yggm/libs/edsign.cu
rcxpony ab6061f5bf owo
2025-08-21 13:05:05 +05:00

20 lines
791 B
Plaintext

#include <ed25519.cuh>
#include <edsign.cuh>
#include <sha512.cuh>
__device__ __forceinline__ void expand_key(unsigned char* __restrict__ expanded, const unsigned char* __restrict__ secret) {
struct sha512_state s;
memcpy(&s, &sha512_initial_state, sizeof(s));
sha512_final(&s, secret);
sha512_get(&s, expanded);
expanded[0] &= 0xf8;
expanded[31] = (expanded[31] & 0x7F) | 0x40;
}
__device__ void ed25519_create_keypair(unsigned char* __restrict__ private_key, unsigned char* __restrict__ public_key, unsigned char* __restrict__ seed) {
unsigned char expanded[64];
expand_key(expanded, seed);
ge_p3 A;
ge_scalarmult_base(A, expanded);
ge_p3_tobytes(public_key, A);
memcpy(private_key, seed, 32);
memcpy(private_key + 32, public_key, 32);
}