/* Get the r and s components of a signature from the X.509 certificate. */ staticint ecdsa_get_signature_rs(u64 *dest, size_t hdrlen, unsignedchar tag, constvoid *value, size_t vlen, unsignedint ndigits)
{
size_t bufsize = ndigits * sizeof(u64); constchar *d = value;
/* * vlen may be 1 byte larger than bufsize due to a leading zero byte * (necessary if the most significant bit of the integer is set).
*/ if (vlen > bufsize) { /* skip over leading zeros that make 'value' a positive int */ if (*d == 0) {
vlen -= 1;
d++;
} else { return -EINVAL;
}
}
/* * Verify takes ECDSA-Sig-Value (described in RFC 5480) as input, * which is actually 2 'key_size'-bit integers encoded in ASN.1. * Account for the ASN.1 encoding overhead here. * * NIST P192/256/384 may prepend a '0' to a coordinate to indicate * a positive integer. NIST P521 never needs it.
*/ if (strcmp(alg->base.cra_name, "ecdsa-nist-p521") != 0)
slen += 1;
/* Length of encoding the x & y coordinates */
slen = 2 * (slen + 2);
/* * If coordinate encoding takes at least 128 bytes then an * additional byte for length encoding is needed.
*/ return 1 + (slen >= 128) + 1 + slen;
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.