view release on metacpan or search on metacpan
pqclean/crypto_sign/ml-dsa-44/aarch64/sign.c view on Meta::CPAN
int crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < DILITHIUM_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - DILITHIUM_CRYPTO_BYTES;
if (crypto_sign_verify_ctx(sm, DILITHIUM_CRYPTO_BYTES, sm + DILITHIUM_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[DILITHIUM_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-44/avx2/sign.c view on Meta::CPAN
* - size_t ctxlen: length of context string
* - const uint8_t *pk: pointer to bit-packed public key
*
* Returns 0 if signed message could be verified correctly and -1 otherwise
**************************************************/
int PQCLEAN_MLDSA44_AVX2_crypto_sign_open_ctx(uint8_t *m, size_t *mlen, const uint8_t *sm, size_t smlen,
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA44_AVX2_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA44_AVX2_CRYPTO_BYTES;
if (PQCLEAN_MLDSA44_AVX2_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA44_AVX2_CRYPTO_BYTES, sm + PQCLEAN_MLDSA44_AVX2_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA44_AVX2_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-44/clean/sign.c view on Meta::CPAN
int PQCLEAN_MLDSA44_CLEAN_crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES;
if (PQCLEAN_MLDSA44_CLEAN_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES, sm + PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA44_CLEAN_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-65/aarch64/sign.c view on Meta::CPAN
int crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < DILITHIUM_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - DILITHIUM_CRYPTO_BYTES;
if (crypto_sign_verify_ctx(sm, DILITHIUM_CRYPTO_BYTES, sm + DILITHIUM_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[DILITHIUM_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-65/avx2/sign.c view on Meta::CPAN
* - size_t ctxlen: length of context string
* - const uint8_t *pk: pointer to bit-packed public key
*
* Returns 0 if signed message could be verified correctly and -1 otherwise
**************************************************/
int PQCLEAN_MLDSA65_AVX2_crypto_sign_open_ctx(uint8_t *m, size_t *mlen, const uint8_t *sm, size_t smlen,
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA65_AVX2_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA65_AVX2_CRYPTO_BYTES;
if (PQCLEAN_MLDSA65_AVX2_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA65_AVX2_CRYPTO_BYTES, sm + PQCLEAN_MLDSA65_AVX2_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA65_AVX2_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-65/clean/sign.c view on Meta::CPAN
int PQCLEAN_MLDSA65_CLEAN_crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES;
if (PQCLEAN_MLDSA65_CLEAN_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES, sm + PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA65_CLEAN_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-87/aarch64/sign.c view on Meta::CPAN
int crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < DILITHIUM_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - DILITHIUM_CRYPTO_BYTES;
if (crypto_sign_verify_ctx(sm, DILITHIUM_CRYPTO_BYTES, sm + DILITHIUM_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[DILITHIUM_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-87/avx2/sign.c view on Meta::CPAN
* - size_t ctxlen: length of context string
* - const uint8_t *pk: pointer to bit-packed public key
*
* Returns 0 if signed message could be verified correctly and -1 otherwise
**************************************************/
int PQCLEAN_MLDSA87_AVX2_crypto_sign_open_ctx(uint8_t *m, size_t *mlen, const uint8_t *sm, size_t smlen,
const uint8_t *ctx, size_t ctxlen, const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA87_AVX2_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA87_AVX2_CRYPTO_BYTES;
if (PQCLEAN_MLDSA87_AVX2_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA87_AVX2_CRYPTO_BYTES, sm + PQCLEAN_MLDSA87_AVX2_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA87_AVX2_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}
pqclean/crypto_sign/ml-dsa-87/clean/sign.c view on Meta::CPAN
int PQCLEAN_MLDSA87_CLEAN_crypto_sign_open_ctx(uint8_t *m,
size_t *mlen,
const uint8_t *sm,
size_t smlen,
const uint8_t *ctx,
size_t ctxlen,
const uint8_t *pk) {
size_t i;
if (smlen < PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES) {
goto badsig;
}
*mlen = smlen - PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES;
if (PQCLEAN_MLDSA87_CLEAN_crypto_sign_verify_ctx(sm, PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES, sm + PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES, *mlen, ctx, ctxlen, pk)) {
goto badsig;
} else {
/* All good, copy msg, return 0 */
for (i = 0; i < *mlen; ++i) {
m[i] = sm[PQCLEAN_MLDSA87_CLEAN_CRYPTO_BYTES + i];
}
return 0;
}
badsig:
/* Signature verification failed */
*mlen = 0;
for (i = 0; i < smlen; ++i) {
m[i] = 0;
}
return -1;
}