mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-26 10:16:24 +08:00
Update Tools
This commit is contained in:
@@ -306,40 +306,18 @@ extern void sm3_compress_blocks(uint32_t digest[8], const uint8_t *data, size_t
|
||||
|
||||
int sm2_compute_z(uint8_t z[32], const SM2_POINT *pub, const char *id, size_t idlen)
|
||||
{
|
||||
uint8_t zin[] = {
|
||||
SM3_CTX ctx;
|
||||
uint8_t zin[18 + 32 * 6] = {
|
||||
0x00, 0x80,
|
||||
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
|
||||
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
|
||||
0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||
0x28, 0xE9, 0xFA, 0x9E, 0x9D, 0x9F, 0x5E, 0x34,
|
||||
0x4D, 0x5A, 0x9E, 0x4B, 0xCF, 0x65, 0x09, 0xA7,
|
||||
0xF3, 0x97, 0x89, 0xF5, 0x15, 0xAB, 0x8F, 0x92,
|
||||
0xDD, 0xBC, 0xBD, 0x41, 0x4D, 0x94, 0x0E, 0x93,
|
||||
0x32, 0xC4, 0xAE, 0x2C, 0x1F, 0x19, 0x81, 0x19,
|
||||
0x5F, 0x99, 0x04, 0x46, 0x6A, 0x39, 0xC9, 0x94,
|
||||
0x8F, 0xE3, 0x0B, 0xBF, 0xF2, 0x66, 0x0B, 0xE1,
|
||||
0x71, 0x5A, 0x45, 0x89, 0x33, 0x4C, 0x74, 0xC7,
|
||||
0xBC, 0x37, 0x36, 0xA2, 0xF4, 0xF6, 0x77, 0x9C,
|
||||
0x59, 0xBD, 0xCE, 0xE3, 0x6B, 0x69, 0x21, 0x53,
|
||||
0xD0, 0xA9, 0x87, 0x7C, 0xC6, 0x2A, 0x47, 0x40,
|
||||
0x02, 0xDF, 0x32, 0xE5, 0x21, 0x39, 0xF0, 0xA0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x90,
|
||||
0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,
|
||||
0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
||||
0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,
|
||||
0x28,0xE9,0xFA,0x9E,0x9D,0x9F,0x5E,0x34,0x4D,0x5A,0x9E,0x4B,0xCF,0x65,0x09,0xA7,
|
||||
0xF3,0x97,0x89,0xF5,0x15,0xAB,0x8F,0x92,0xDD,0xBC,0xBD,0x41,0x4D,0x94,0x0E,0x93,
|
||||
0x32,0xC4,0xAE,0x2C,0x1F,0x19,0x81,0x19,0x5F,0x99,0x04,0x46,0x6A,0x39,0xC9,0x94,
|
||||
0x8F,0xE3,0x0B,0xBF,0xF2,0x66,0x0B,0xE1,0x71,0x5A,0x45,0x89,0x33,0x4C,0x74,0xC7,
|
||||
0xBC,0x37,0x36,0xA2,0xF4,0xF6,0x77,0x9C,0x59,0xBD,0xCE,0xE3,0x6B,0x69,0x21,0x53,
|
||||
0xD0,0xA9,0x87,0x7C,0xC6,0x2A,0x47,0x40,0x02,0xDF,0x32,0xE5,0x21,0x39,0xF0,0xA0,
|
||||
};
|
||||
|
||||
if (!z || !pub || !id) {
|
||||
@@ -347,40 +325,21 @@ int sm2_compute_z(uint8_t z[32], const SM2_POINT *pub, const char *id, size_t id
|
||||
return -1;
|
||||
}
|
||||
|
||||
memcpy(&zin[18 + 32 * 4], pub->x, 32);
|
||||
memcpy(&zin[18 + 32 * 5], pub->y, 32);
|
||||
|
||||
if (strcmp(id, "1234567812345678") == 0) {
|
||||
uint32_t digest[8] = {
|
||||
0xadadedb5U, 0x0446043fU, 0x08a87aceU, 0xe86d2243U,
|
||||
0x8e232383U, 0xbfc81fe2U, 0xcf9117c8U, 0x4707011dU,
|
||||
};
|
||||
memcpy(&zin[128], pub->x, 32);
|
||||
memcpy(&zin[160], pub->y, 32);
|
||||
sm3_compress_blocks(digest, zin, 2);
|
||||
PUTU32(z , digest[0]);
|
||||
PUTU32(z + 4, digest[1]);
|
||||
PUTU32(z + 8, digest[2]);
|
||||
PUTU32(z + 12, digest[3]);
|
||||
PUTU32(z + 16, digest[4]);
|
||||
PUTU32(z + 20, digest[5]);
|
||||
PUTU32(z + 24, digest[6]);
|
||||
PUTU32(z + 28, digest[7]);
|
||||
|
||||
sm3_init(&ctx);
|
||||
if (strcmp(id, SM2_DEFAULT_ID) == 0) {
|
||||
sm3_update(&ctx, zin, sizeof(zin));
|
||||
} else {
|
||||
SM3_CTX ctx;
|
||||
uint8_t idbits[2];
|
||||
|
||||
idbits[0] = (uint8_t)(idlen >> 5);
|
||||
idbits[1] = (uint8_t)(idlen << 3);
|
||||
|
||||
sm3_init(&ctx);
|
||||
sm3_update(&ctx, idbits, 2);
|
||||
sm3_update(&ctx, (uint8_t *)id, idlen);
|
||||
sm3_update(&ctx, zin + 18, 128);
|
||||
sm3_update(&ctx, pub->x, 32);
|
||||
sm3_update(&ctx, pub->y, 32);
|
||||
sm3_finish(&ctx, z);
|
||||
sm3_update(&ctx, zin + 18, 32 * 6);
|
||||
}
|
||||
|
||||
sm3_finish(&ctx, z);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -492,11 +451,6 @@ int sm2_kdf(const uint8_t *in, size_t inlen, size_t outlen, uint8_t *out)
|
||||
uint32_t counter = 1;
|
||||
size_t len;
|
||||
|
||||
/*
|
||||
size_t i; fprintf(stderr, "kdf input : ");
|
||||
for (i = 0; i < inlen; i++) fprintf(stderr, "%02x", in[i]); fprintf(stderr, "\n");
|
||||
*/
|
||||
|
||||
while (outlen) {
|
||||
PUTU32(counter_be, counter);
|
||||
counter++;
|
||||
|
||||
Reference in New Issue
Block a user