[Hash] tweak internal C API to have the hashlen
This commit is contained in:
parent
f51fdf23ca
commit
ad285be68c
@ -28,7 +28,7 @@ instance HashAlgorithm Keccak_224 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_keccak_init p 224
|
hashInternalInit p = c_keccak_init p 224
|
||||||
hashInternalUpdate = c_keccak_update
|
hashInternalUpdate = c_keccak_update
|
||||||
hashInternalFinalize = c_keccak_finalize
|
hashInternalFinalize p = c_keccak_finalize p 224
|
||||||
|
|
||||||
-- | Keccak (256 bits) cryptographic hash algorithm
|
-- | Keccak (256 bits) cryptographic hash algorithm
|
||||||
data Keccak_256 = Keccak_256
|
data Keccak_256 = Keccak_256
|
||||||
@ -40,7 +40,7 @@ instance HashAlgorithm Keccak_256 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_keccak_init p 256
|
hashInternalInit p = c_keccak_init p 256
|
||||||
hashInternalUpdate = c_keccak_update
|
hashInternalUpdate = c_keccak_update
|
||||||
hashInternalFinalize = c_keccak_finalize
|
hashInternalFinalize p = c_keccak_finalize p 256
|
||||||
|
|
||||||
-- | Keccak (384 bits) cryptographic hash algorithm
|
-- | Keccak (384 bits) cryptographic hash algorithm
|
||||||
data Keccak_384 = Keccak_384
|
data Keccak_384 = Keccak_384
|
||||||
@ -52,7 +52,7 @@ instance HashAlgorithm Keccak_384 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_keccak_init p 384
|
hashInternalInit p = c_keccak_init p 384
|
||||||
hashInternalUpdate = c_keccak_update
|
hashInternalUpdate = c_keccak_update
|
||||||
hashInternalFinalize = c_keccak_finalize
|
hashInternalFinalize p = c_keccak_finalize p 384
|
||||||
|
|
||||||
-- | Keccak (512 bits) cryptographic hash algorithm
|
-- | Keccak (512 bits) cryptographic hash algorithm
|
||||||
data Keccak_512 = Keccak_512
|
data Keccak_512 = Keccak_512
|
||||||
@ -64,7 +64,7 @@ instance HashAlgorithm Keccak_512 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_keccak_init p 512
|
hashInternalInit p = c_keccak_init p 512
|
||||||
hashInternalUpdate = c_keccak_update
|
hashInternalUpdate = c_keccak_update
|
||||||
hashInternalFinalize = c_keccak_finalize
|
hashInternalFinalize p = c_keccak_finalize p 512
|
||||||
|
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_keccak_init"
|
foreign import ccall unsafe "cryptonite_keccak_init"
|
||||||
@ -74,4 +74,4 @@ foreign import ccall "cryptonite_keccak_update"
|
|||||||
c_keccak_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_keccak_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_keccak_finalize"
|
foreign import ccall unsafe "cryptonite_keccak_finalize"
|
||||||
c_keccak_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_keccak_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
@ -28,7 +28,7 @@ instance HashAlgorithm SHA3_224 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_sha3_init p 224
|
hashInternalInit p = c_sha3_init p 224
|
||||||
hashInternalUpdate = c_sha3_update
|
hashInternalUpdate = c_sha3_update
|
||||||
hashInternalFinalize = c_sha3_finalize
|
hashInternalFinalize p = c_sha3_finalize p 224
|
||||||
|
|
||||||
-- | SHA3 (256 bits) cryptographic hash algorithm
|
-- | SHA3 (256 bits) cryptographic hash algorithm
|
||||||
data SHA3_256 = SHA3_256
|
data SHA3_256 = SHA3_256
|
||||||
@ -40,7 +40,7 @@ instance HashAlgorithm SHA3_256 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_sha3_init p 256
|
hashInternalInit p = c_sha3_init p 256
|
||||||
hashInternalUpdate = c_sha3_update
|
hashInternalUpdate = c_sha3_update
|
||||||
hashInternalFinalize = c_sha3_finalize
|
hashInternalFinalize p = c_sha3_finalize p 256
|
||||||
|
|
||||||
-- | SHA3 (384 bits) cryptographic hash algorithm
|
-- | SHA3 (384 bits) cryptographic hash algorithm
|
||||||
data SHA3_384 = SHA3_384
|
data SHA3_384 = SHA3_384
|
||||||
@ -52,7 +52,7 @@ instance HashAlgorithm SHA3_384 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_sha3_init p 384
|
hashInternalInit p = c_sha3_init p 384
|
||||||
hashInternalUpdate = c_sha3_update
|
hashInternalUpdate = c_sha3_update
|
||||||
hashInternalFinalize = c_sha3_finalize
|
hashInternalFinalize p = c_sha3_finalize p 384
|
||||||
|
|
||||||
-- | SHA3 (512 bits) cryptographic hash algorithm
|
-- | SHA3 (512 bits) cryptographic hash algorithm
|
||||||
data SHA3_512 = SHA3_512
|
data SHA3_512 = SHA3_512
|
||||||
@ -64,7 +64,7 @@ instance HashAlgorithm SHA3_512 where
|
|||||||
hashInternalContextSize _ = 360
|
hashInternalContextSize _ = 360
|
||||||
hashInternalInit p = c_sha3_init p 512
|
hashInternalInit p = c_sha3_init p 512
|
||||||
hashInternalUpdate = c_sha3_update
|
hashInternalUpdate = c_sha3_update
|
||||||
hashInternalFinalize = c_sha3_finalize
|
hashInternalFinalize p = c_sha3_finalize p 512
|
||||||
|
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_sha3_init"
|
foreign import ccall unsafe "cryptonite_sha3_init"
|
||||||
@ -74,4 +74,4 @@ foreign import ccall "cryptonite_sha3_update"
|
|||||||
c_sha3_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_sha3_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_sha3_finalize"
|
foreign import ccall unsafe "cryptonite_sha3_finalize"
|
||||||
c_sha3_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_sha3_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
@ -28,7 +28,7 @@ instance HashAlgorithm SHA512t_224 where
|
|||||||
hashInternalContextSize _ = 264
|
hashInternalContextSize _ = 264
|
||||||
hashInternalInit p = c_sha512t_init p 224
|
hashInternalInit p = c_sha512t_init p 224
|
||||||
hashInternalUpdate = c_sha512t_update
|
hashInternalUpdate = c_sha512t_update
|
||||||
hashInternalFinalize = c_sha512t_finalize
|
hashInternalFinalize p = c_sha512t_finalize p 224
|
||||||
|
|
||||||
-- | SHA512t (256 bits) cryptographic hash algorithm
|
-- | SHA512t (256 bits) cryptographic hash algorithm
|
||||||
data SHA512t_256 = SHA512t_256
|
data SHA512t_256 = SHA512t_256
|
||||||
@ -40,7 +40,7 @@ instance HashAlgorithm SHA512t_256 where
|
|||||||
hashInternalContextSize _ = 264
|
hashInternalContextSize _ = 264
|
||||||
hashInternalInit p = c_sha512t_init p 256
|
hashInternalInit p = c_sha512t_init p 256
|
||||||
hashInternalUpdate = c_sha512t_update
|
hashInternalUpdate = c_sha512t_update
|
||||||
hashInternalFinalize = c_sha512t_finalize
|
hashInternalFinalize p = c_sha512t_finalize p 256
|
||||||
|
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_sha512t_init"
|
foreign import ccall unsafe "cryptonite_sha512t_init"
|
||||||
@ -50,4 +50,4 @@ foreign import ccall "cryptonite_sha512t_update"
|
|||||||
c_sha512t_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_sha512t_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_sha512t_finalize"
|
foreign import ccall unsafe "cryptonite_sha512t_finalize"
|
||||||
c_sha512t_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_sha512t_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
@ -28,7 +28,7 @@ instance HashAlgorithm Skein256_224 where
|
|||||||
hashInternalContextSize _ = 96
|
hashInternalContextSize _ = 96
|
||||||
hashInternalInit p = c_skein256_init p 224
|
hashInternalInit p = c_skein256_init p 224
|
||||||
hashInternalUpdate = c_skein256_update
|
hashInternalUpdate = c_skein256_update
|
||||||
hashInternalFinalize = c_skein256_finalize
|
hashInternalFinalize p = c_skein256_finalize p 224
|
||||||
|
|
||||||
-- | Skein256 (256 bits) cryptographic hash algorithm
|
-- | Skein256 (256 bits) cryptographic hash algorithm
|
||||||
data Skein256_256 = Skein256_256
|
data Skein256_256 = Skein256_256
|
||||||
@ -40,7 +40,7 @@ instance HashAlgorithm Skein256_256 where
|
|||||||
hashInternalContextSize _ = 96
|
hashInternalContextSize _ = 96
|
||||||
hashInternalInit p = c_skein256_init p 256
|
hashInternalInit p = c_skein256_init p 256
|
||||||
hashInternalUpdate = c_skein256_update
|
hashInternalUpdate = c_skein256_update
|
||||||
hashInternalFinalize = c_skein256_finalize
|
hashInternalFinalize p = c_skein256_finalize p 256
|
||||||
|
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_skein256_init"
|
foreign import ccall unsafe "cryptonite_skein256_init"
|
||||||
@ -50,4 +50,4 @@ foreign import ccall "cryptonite_skein256_update"
|
|||||||
c_skein256_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_skein256_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_skein256_finalize"
|
foreign import ccall unsafe "cryptonite_skein256_finalize"
|
||||||
c_skein256_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_skein256_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
@ -28,7 +28,7 @@ instance HashAlgorithm Skein512_224 where
|
|||||||
hashInternalContextSize _ = 160
|
hashInternalContextSize _ = 160
|
||||||
hashInternalInit p = c_skein512_init p 224
|
hashInternalInit p = c_skein512_init p 224
|
||||||
hashInternalUpdate = c_skein512_update
|
hashInternalUpdate = c_skein512_update
|
||||||
hashInternalFinalize = c_skein512_finalize
|
hashInternalFinalize p = c_skein512_finalize p 224
|
||||||
|
|
||||||
-- | Skein512 (256 bits) cryptographic hash algorithm
|
-- | Skein512 (256 bits) cryptographic hash algorithm
|
||||||
data Skein512_256 = Skein512_256
|
data Skein512_256 = Skein512_256
|
||||||
@ -40,7 +40,7 @@ instance HashAlgorithm Skein512_256 where
|
|||||||
hashInternalContextSize _ = 160
|
hashInternalContextSize _ = 160
|
||||||
hashInternalInit p = c_skein512_init p 256
|
hashInternalInit p = c_skein512_init p 256
|
||||||
hashInternalUpdate = c_skein512_update
|
hashInternalUpdate = c_skein512_update
|
||||||
hashInternalFinalize = c_skein512_finalize
|
hashInternalFinalize p = c_skein512_finalize p 256
|
||||||
|
|
||||||
-- | Skein512 (384 bits) cryptographic hash algorithm
|
-- | Skein512 (384 bits) cryptographic hash algorithm
|
||||||
data Skein512_384 = Skein512_384
|
data Skein512_384 = Skein512_384
|
||||||
@ -52,7 +52,7 @@ instance HashAlgorithm Skein512_384 where
|
|||||||
hashInternalContextSize _ = 160
|
hashInternalContextSize _ = 160
|
||||||
hashInternalInit p = c_skein512_init p 384
|
hashInternalInit p = c_skein512_init p 384
|
||||||
hashInternalUpdate = c_skein512_update
|
hashInternalUpdate = c_skein512_update
|
||||||
hashInternalFinalize = c_skein512_finalize
|
hashInternalFinalize p = c_skein512_finalize p 384
|
||||||
|
|
||||||
-- | Skein512 (512 bits) cryptographic hash algorithm
|
-- | Skein512 (512 bits) cryptographic hash algorithm
|
||||||
data Skein512_512 = Skein512_512
|
data Skein512_512 = Skein512_512
|
||||||
@ -64,7 +64,7 @@ instance HashAlgorithm Skein512_512 where
|
|||||||
hashInternalContextSize _ = 160
|
hashInternalContextSize _ = 160
|
||||||
hashInternalInit p = c_skein512_init p 512
|
hashInternalInit p = c_skein512_init p 512
|
||||||
hashInternalUpdate = c_skein512_update
|
hashInternalUpdate = c_skein512_update
|
||||||
hashInternalFinalize = c_skein512_finalize
|
hashInternalFinalize p = c_skein512_finalize p 512
|
||||||
|
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_skein512_init"
|
foreign import ccall unsafe "cryptonite_skein512_init"
|
||||||
@ -74,4 +74,4 @@ foreign import ccall "cryptonite_skein512_update"
|
|||||||
c_skein512_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_skein512_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_skein512_finalize"
|
foreign import ccall unsafe "cryptonite_skein512_finalize"
|
||||||
c_skein512_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_skein512_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
@ -135,7 +135,7 @@ void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t le
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint8_t *out)
|
void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out)
|
||||||
{
|
{
|
||||||
uint64_t w[25];
|
uint64_t w[25];
|
||||||
|
|
||||||
|
|||||||
@ -40,6 +40,6 @@ struct keccak_ctx
|
|||||||
|
|
||||||
void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen);
|
void cryptonite_keccak_init(struct keccak_ctx *ctx, uint32_t hashlen);
|
||||||
void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len);
|
void cryptonite_keccak_update(struct keccak_ctx *ctx, uint8_t *data, uint32_t len);
|
||||||
void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint8_t *out);
|
void cryptonite_keccak_finalize(struct keccak_ctx *ctx, uint32_t hashlen, uint8_t *out);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -135,7 +135,7 @@ void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint8_t *out)
|
void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out)
|
||||||
{
|
{
|
||||||
uint64_t w[25];
|
uint64_t w[25];
|
||||||
|
|
||||||
@ -155,5 +155,5 @@ void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint8_t *out)
|
|||||||
|
|
||||||
/* output */
|
/* output */
|
||||||
cpu_to_le64_array(w, ctx->state, 25);
|
cpu_to_le64_array(w, ctx->state, 25);
|
||||||
memcpy(out, w, ctx->hashlen);
|
memcpy(out, w, hashlen / 8);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,6 @@ struct sha3_ctx
|
|||||||
|
|
||||||
void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen);
|
void cryptonite_sha3_init(struct sha3_ctx *ctx, uint32_t hashlen);
|
||||||
void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len);
|
void cryptonite_sha3_update(struct sha3_ctx *ctx, const uint8_t *data, uint32_t len);
|
||||||
void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint8_t *out);
|
void cryptonite_sha3_finalize(struct sha3_ctx *ctx, uint32_t hashlen, uint8_t *out);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -196,15 +196,15 @@ void cryptonite_sha512_finalize(struct sha512_ctx *ctx, uint8_t *out)
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void cryptonite_sha512t_init(struct sha512t_ctx *tctx, int t)
|
void cryptonite_sha512t_init(struct sha512t_ctx *tctx, uint32_t hashlen)
|
||||||
{
|
{
|
||||||
struct sha512_ctx *ctx = &tctx->ctx;
|
struct sha512_ctx *ctx = &tctx->ctx;
|
||||||
memset(ctx, 0, sizeof(*ctx));
|
memset(ctx, 0, sizeof(*ctx));
|
||||||
if (t >= 512)
|
if (hashlen >= 512)
|
||||||
return;
|
return;
|
||||||
tctx->t = t;
|
tctx->t = hashlen;
|
||||||
|
|
||||||
switch (t) {
|
switch (hashlen) {
|
||||||
case 224:
|
case 224:
|
||||||
ctx->h[0] = 0x8c3d37c819544da2ULL;
|
ctx->h[0] = 0x8c3d37c819544da2ULL;
|
||||||
ctx->h[1] = 0x73e1996689dcd4d6ULL;
|
ctx->h[1] = 0x73e1996689dcd4d6ULL;
|
||||||
@ -234,7 +234,7 @@ void cryptonite_sha512t_init(struct sha512t_ctx *tctx, int t)
|
|||||||
for (i = 0; i < 8; i++)
|
for (i = 0; i < 8; i++)
|
||||||
ctx->h[i] ^= 0xa5a5a5a5a5a5a5a5ULL;
|
ctx->h[i] ^= 0xa5a5a5a5a5a5a5a5ULL;
|
||||||
|
|
||||||
i = sprintf(buf, "SHA-512/%d", t);
|
i = sprintf(buf, "SHA-512/%d", hashlen);
|
||||||
cryptonite_sha512_update(ctx, (uint8_t *) buf, i);
|
cryptonite_sha512_update(ctx, (uint8_t *) buf, i);
|
||||||
cryptonite_sha512_finalize(ctx, out);
|
cryptonite_sha512_finalize(ctx, out);
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ void cryptonite_sha512t_update(struct sha512t_ctx *ctx, const uint8_t *data, uin
|
|||||||
return cryptonite_sha512_update(&ctx->ctx, data, len);
|
return cryptonite_sha512_update(&ctx->ctx, data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cryptonite_sha512t_finalize(struct sha512t_ctx *ctx, uint8_t *out)
|
void cryptonite_sha512t_finalize(struct sha512t_ctx *ctx, uint32_t hashlen, uint8_t *out)
|
||||||
{
|
{
|
||||||
uint8_t intermediate[SHA512_DIGEST_SIZE];
|
uint8_t intermediate[SHA512_DIGEST_SIZE];
|
||||||
|
|
||||||
|
|||||||
@ -58,8 +58,8 @@ void cryptonite_sha512_update(struct sha512_ctx *ctx, const uint8_t *data, uint3
|
|||||||
void cryptonite_sha512_finalize(struct sha512_ctx *ctx, uint8_t *out);
|
void cryptonite_sha512_finalize(struct sha512_ctx *ctx, uint8_t *out);
|
||||||
|
|
||||||
/* only multiples of 8 are supported as valid t values */
|
/* only multiples of 8 are supported as valid t values */
|
||||||
void cryptonite_sha512t_init(struct sha512t_ctx *ctx, int t);
|
void cryptonite_sha512t_init(struct sha512t_ctx *ctx, uint32_t hashlen);
|
||||||
void cryptonite_sha512t_update(struct sha512t_ctx *ctx, const uint8_t *data, uint32_t len);
|
void cryptonite_sha512t_update(struct sha512t_ctx *ctx, const uint8_t *data, uint32_t len);
|
||||||
void cryptonite_sha512t_finalize(struct sha512t_ctx *ctx, uint8_t *out);
|
void cryptonite_sha512t_finalize(struct sha512t_ctx *ctx, uint32_t hashlen, uint8_t *out);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -155,7 +155,7 @@ void cryptonite_skein256_update(struct skein256_ctx *ctx, const uint8_t *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cryptonite_skein256_finalize(struct skein256_ctx *ctx, uint8_t *out)
|
void cryptonite_skein256_finalize(struct skein256_ctx *ctx, uint32_t hashlen, uint8_t *out)
|
||||||
{
|
{
|
||||||
uint32_t outsize;
|
uint32_t outsize;
|
||||||
uint64_t *p = (uint64_t *) out;
|
uint64_t *p = (uint64_t *) out;
|
||||||
|
|||||||
@ -40,6 +40,6 @@ struct skein256_ctx
|
|||||||
|
|
||||||
void cryponite_skein256_init(struct skein256_ctx *ctx, uint32_t hashlen);
|
void cryponite_skein256_init(struct skein256_ctx *ctx, uint32_t hashlen);
|
||||||
void cryponite_skein256_update(struct skein256_ctx *ctx, const uint8_t *data, uint32_t len);
|
void cryponite_skein256_update(struct skein256_ctx *ctx, const uint8_t *data, uint32_t len);
|
||||||
void cryponite_skein256_finalize(struct skein256_ctx *ctx, uint8_t *out);
|
void cryponite_skein256_finalize(struct skein256_ctx *ctx, uint32_t hashlen, uint8_t *out);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -173,7 +173,7 @@ void cryptonite_skein512_update(struct skein512_ctx *ctx, const uint8_t *data, u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cryptonite_skein512_finalize(struct skein512_ctx *ctx, uint8_t *out)
|
void cryptonite_skein512_finalize(struct skein512_ctx *ctx, uint32_t hashlen, uint8_t *out)
|
||||||
{
|
{
|
||||||
uint32_t outsize;
|
uint32_t outsize;
|
||||||
uint64_t *p = (uint64_t *) out;
|
uint64_t *p = (uint64_t *) out;
|
||||||
|
|||||||
@ -40,6 +40,6 @@ struct skein512_ctx
|
|||||||
|
|
||||||
void cryponite_skein512_init(struct skein512_ctx *ctx, uint32_t hashlen);
|
void cryponite_skein512_init(struct skein512_ctx *ctx, uint32_t hashlen);
|
||||||
void cryponite_skein512_update(struct skein512_ctx *ctx, const uint8_t *data, uint32_t len);
|
void cryponite_skein512_update(struct skein512_ctx *ctx, const uint8_t *data, uint32_t len);
|
||||||
void cryponite_skein512_finalize(struct skein512_ctx *ctx, uint8_t *out);
|
void cryponite_skein512_finalize(struct skein512_ctx *ctx, uint32_t hashlen, uint8_t *out);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -28,7 +28,7 @@ instance HashAlgorithm %%MODULENAME%%_%%CUSTOM_BITSIZE%% where
|
|||||||
hashInternalContextSize _ = %%CTX_SIZE_BYTES%%
|
hashInternalContextSize _ = %%CTX_SIZE_BYTES%%
|
||||||
hashInternalInit p = c_%%HASHNAME%%_init p %%CUSTOM_BITSIZE%%
|
hashInternalInit p = c_%%HASHNAME%%_init p %%CUSTOM_BITSIZE%%
|
||||||
hashInternalUpdate = c_%%HASHNAME%%_update
|
hashInternalUpdate = c_%%HASHNAME%%_update
|
||||||
hashInternalFinalize = c_%%HASHNAME%%_finalize
|
hashInternalFinalize p = c_%%HASHNAME%%_finalize p %%CUSTOM_BITSIZE%%
|
||||||
%{CUSTOMIZABLE%}
|
%{CUSTOMIZABLE%}
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_%%HASHNAME%%_init"
|
foreign import ccall unsafe "cryptonite_%%HASHNAME%%_init"
|
||||||
@ -38,4 +38,4 @@ foreign import ccall "cryptonite_%%HASHNAME%%_update"
|
|||||||
c_%%HASHNAME%%_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
c_%%HASHNAME%%_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
||||||
|
|
||||||
foreign import ccall unsafe "cryptonite_%%HASHNAME%%_finalize"
|
foreign import ccall unsafe "cryptonite_%%HASHNAME%%_finalize"
|
||||||
c_%%HASHNAME%%_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|
c_%%HASHNAME%%_finalize :: Ptr (Context a) -> Word32 -> Ptr (Digest a) -> IO ()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user