Browse Source

added test for encoding and decoding

master
Michael Preisach 5 years ago
parent
commit
94cbddb97d
  1. 6
      common.c
  2. 4
      common.h
  3. 23
      daa-test.c
  4. BIN
      ecdaa_test

6
common.c

@ -48,7 +48,7 @@ void ecdaa_bintohex(const uint8_t *in_bin, char *out_hex, size_t inlen) {
}
}
void ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) {
int ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) {
int outlen = 4 * ((inlen + 2) / 3);
int i = 0;
int j = 0;
@ -73,9 +73,10 @@ void ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen) {
default:
break;
}
return j;
}
void ecdaa_decode(const uint8_t *in_enc, char *out_dec, size_t outlen) {
int ecdaa_decode(const char *in_enc, uint8_t *out_dec, size_t outlen) {
int inlen = 4 * ((outlen + 2) / 3);
int i = 0;
int j = 0;
@ -92,4 +93,5 @@ void ecdaa_decode(const uint8_t *in_enc, char *out_dec, size_t outlen) {
if (j < outlen) out_dec[j++] = (triple >> 8) & 0xFF;
if (j < outlen) out_dec[j++] = triple & 0xFF;
}
return i;
}

4
common.h

@ -31,4 +31,8 @@ void ecdaa_hextobin(const char *in_hex, uint8_t *out_bin, size_t outlen);
void ecdaa_bintohex(const uint8_t *in_bin, char *out_hex, size_t inlen);
int ecdaa_decode(const char *in_enc, uint8_t *out_dec, size_t outlen);
int ecdaa_encode(const uint8_t *in_dec, char *out_enc, size_t inlen);
#endif //ECDAA_ISSUER_COMMON_H

23
daa-test.c

@ -178,7 +178,7 @@ int test2() {
if(0 != ecdaa_signature_FP256BN_verify(&sig2, &ipk2.gpk, &revocations, msg, msg_len, bsn, bsn_len)) {
printf("verify message failed\n");
//return 1;
return 1;
}
strncpy(bsn, "test basename", 13);
@ -238,11 +238,26 @@ int test3() {
}
ecdaa_issuer_public_key_FP256BN_serialize(binbuf, &ipk);
ecdaa_bintohex(binbuf, current, ECDAA_ISSUER_PUBLIC_KEY_FP256BN_LENGTH);
int numbytes = ecdaa_encode(binbuf, current, ECDAA_ISSUER_PUBLIC_KEY_FP256BN_LENGTH);
current = &current[numbytes];
bzero(binbuf,MAX_BUFSIZE);
ecdaa_issuer_secret_key_FP256BN_serialize(binbuf, &isk);
numbytes += ecdaa_encode(binbuf, current, ECDAA_ISSUER_SECRET_KEY_FP256BN_LENGTH);
//current = &buffer[numbytes];
if(0 != ecdaa_issuer_public_key_FP256BN_deserialize_file(&ipk2, "ipktest.bin") ||
0 != ecdaa_issuer_secret_key_FP256BN_deserialize_file(&isk2, "isktest.bin")) {
printf("Encoded issuer key pair: %s\n%s\n", buffer, current);
current = buffer;
int numbytes2 = ecdaa_decode(current, binbuf, ECDAA_ISSUER_PUBLIC_KEY_FP256BN_LENGTH);
int ret = ecdaa_issuer_public_key_FP256BN_deserialize(&ipk2, binbuf);
current = &buffer[numbytes2];
bzero(binbuf,MAX_BUFSIZE);
numbytes2 += ecdaa_decode(current, binbuf, ECDAA_ISSUER_SECRET_KEY_FP256BN_LENGTH);
ret += ecdaa_issuer_secret_key_FP256BN_deserialize(&isk2, binbuf);
if(0 != ret) {
printf("numbytes = %i, numbytes2 = %i\n", numbytes, numbytes2);
printf("loading issuer key pair failed\n");
return 1;
}

BIN
ecdaa_test

Binary file not shown.
Loading…
Cancel
Save