+ case 0x449:
+ // public key, private ID, data -> signed data
+ databufsize_out = databufsize_in + 8192;
+ databuf_out = malloc(databufsize_out);
+ CHECK(d0_blind_id_sign_with_private_id_sign(ctx, 1, 0, databuf_in, databufsize_in, databuf_out, &databufsize_out));
+ buf2file(outfile, databuf_out, databufsize_out);
+ break;
+ case 0x489:
+ // public key, private ID, data -> signature
+ databufsize_out = databufsize_in + 8192;
+ databuf_out = malloc(databufsize_out);
+ CHECK(d0_blind_id_sign_with_private_id_sign_detached(ctx, 1, 0, databuf_in, databufsize_in, databuf_out, &databufsize_out));
+ buf2file(outfile2, databuf_out, databufsize_out);
+ break;
+ case 0x841:
+ case 0x8C1:
+ // public key, signed data -> data, optional public ID
+ {
+ D0_BOOL status;
+ databufsize_out = databufsize_sig;
+ databuf_out = malloc(databufsize_out);
+ CHECK(d0_blind_id_sign_with_private_id_verify(ctx, 1, 0, databuf_sig, databufsize_sig, databuf_out, &databufsize_out, &status));
+ CHECK(d0_blind_id_fingerprint64_public_id(ctx, fp64, &fp64size));
+ printf("%d\n", (int)status);
+ printf("%.*s\n", (int)fp64size, fp64);
+ buf2file(outfile, databuf_out, databufsize_out);
+
+ if(outfile2)
+ {
+ lumps[0] = lumps_w0;
+ lumpsize[0] = sizeof(lumps_w0);
+ lumps[1] = lumps_w1;
+ lumpsize[1] = sizeof(lumps_w1);
+ CHECK(d0_blind_id_write_public_key(ctx, lumps_w0, &lumpsize[0]));
+ CHECK(d0_blind_id_write_private_id_modulus(ctx, lumps_w1, &lumpsize[1]));
+ lumps2file(outfile2, FOURCC_D0PK, lumps, lumpsize, 2, 0);
+ }
+ }
+ break;
+ case 0xC01:
+ case 0xC81:
+ // public key, signature, signed data -> optional public ID
+ {
+ D0_BOOL status;
+ CHECK(d0_blind_id_sign_with_private_id_verify_detached(ctx, 1, 0, databuf_sig, databufsize_sig, databuf_in, databufsize_in, &status));
+ CHECK(d0_blind_id_fingerprint64_public_id(ctx, fp64, &fp64size));
+ printf("%d\n", (int)status);
+ printf("%.*s\n", (int)fp64size, fp64);
+
+ if(outfile2)
+ {
+ lumps[0] = lumps_w0;
+ lumpsize[0] = sizeof(lumps_w0);
+ lumps[1] = lumps_w1;
+ lumpsize[1] = sizeof(lumps_w1);
+ CHECK(d0_blind_id_write_public_key(ctx, lumps_w0, &lumpsize[0]));
+ CHECK(d0_blind_id_write_private_id_modulus(ctx, lumps_w1, &lumpsize[1]));
+ lumps2file(outfile2, FOURCC_D0PK, lumps, lumpsize, 2, 0);
+ }
+ }
+ break;