Comment copyediting.
This commit is contained in:
		
							parent
							
								
									b4d17da903
								
							
						
					
					
						commit
						269d422703
					
				| @ -229,7 +229,7 @@ SECP256K1_API void secp256k1_context_set_illegal_callback( | |||||||
|  *  crashing. |  *  crashing. | ||||||
|  * |  * | ||||||
|  *  Args: ctx:  an existing context object (cannot be NULL) |  *  Args: ctx:  an existing context object (cannot be NULL) | ||||||
|  *  In:   fun:  a pointer to a function to call when an interal error occurs, |  *  In:   fun:  a pointer to a function to call when an internal error occurs, | ||||||
|  *              taking a message and an opaque pointer (NULL restores a default |  *              taking a message and an opaque pointer (NULL restores a default | ||||||
|  *              handler that calls abort). |  *              handler that calls abort). | ||||||
|  *        data: the opaque pointer to pass to fun above. |  *        data: the opaque pointer to pass to fun above. | ||||||
|  | |||||||
| @ -92,7 +92,7 @@ SECP256K1_API int secp256k1_ecdsa_sign_recoverable( | |||||||
|  *  Returns: 1: public key successfully recovered (which guarantees a correct signature). |  *  Returns: 1: public key successfully recovered (which guarantees a correct signature). | ||||||
|  *           0: otherwise. |  *           0: otherwise. | ||||||
|  *  Args:    ctx:        pointer to a context object, initialized for verification (cannot be NULL) |  *  Args:    ctx:        pointer to a context object, initialized for verification (cannot be NULL) | ||||||
|  *  Out:     pubkey:     pointer to the recoved public key (cannot be NULL) |  *  Out:     pubkey:     pointer to the recovered public key (cannot be NULL) | ||||||
|  *  In:      sig:        pointer to initialized signature that supports pubkey recovery (cannot be NULL) |  *  In:      sig:        pointer to initialized signature that supports pubkey recovery (cannot be NULL) | ||||||
|  *           msg32:      the 32-byte message hash assumed to be signed (cannot be NULL) |  *           msg32:      the 32-byte message hash assumed to be signed (cannot be NULL) | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -99,7 +99,7 @@ SECP256K1_API int secp256k1_schnorr_generate_nonce_pair( | |||||||
| /** Produce a partial Schnorr signature, which can be combined using
 | /** Produce a partial Schnorr signature, which can be combined using
 | ||||||
|  *  secp256k1_schnorr_partial_combine, to end up with a full signature that is |  *  secp256k1_schnorr_partial_combine, to end up with a full signature that is | ||||||
|  *  verifiable using secp256k1_schnorr_verify. |  *  verifiable using secp256k1_schnorr_verify. | ||||||
|  *  Returns: 1: signature created succesfully. |  *  Returns: 1: signature created successfully. | ||||||
|  *           0: no valid signature exists with this combination of keys, nonces |  *           0: no valid signature exists with this combination of keys, nonces | ||||||
|  *              and message (chance around 1 in 2^128) |  *              and message (chance around 1 in 2^128) | ||||||
|  *          -1: invalid private key, nonce, or public nonces. |  *          -1: invalid private key, nonce, or public nonces. | ||||||
| @ -148,7 +148,7 @@ SECP256K1_API SECP256K1_WARN_UNUSED_RESULT int secp256k1_schnorr_partial_sign( | |||||||
| ) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5) SECP256K1_ARG_NONNULL(6); | ) SECP256K1_ARG_NONNULL(1) SECP256K1_ARG_NONNULL(2) SECP256K1_ARG_NONNULL(3) SECP256K1_ARG_NONNULL(4) SECP256K1_ARG_NONNULL(5) SECP256K1_ARG_NONNULL(6); | ||||||
| 
 | 
 | ||||||
| /** Combine multiple Schnorr partial signatures.
 | /** Combine multiple Schnorr partial signatures.
 | ||||||
|  * Returns: 1: the passed signatures were succesfully combined. |  * Returns: 1: the passed signatures were successfully combined. | ||||||
|  *          0: the resulting signature is not valid (chance of 1 in 2^256) |  *          0: the resulting signature is not valid (chance of 1 in 2^256) | ||||||
|  *         -1: some inputs were invalid, or the signatures were not created |  *         -1: some inputs were invalid, or the signatures were not created | ||||||
|  *             using the same set of nonces |  *             using the same set of nonces | ||||||
|  | |||||||
| @ -75,8 +75,9 @@ static int secp256k1_der_read_len(const unsigned char **sigp, const unsigned cha | |||||||
|         return -1; |         return -1; | ||||||
|     } |     } | ||||||
|     if ((size_t)lenleft > sizeof(size_t)) { |     if ((size_t)lenleft > sizeof(size_t)) { | ||||||
|         /* The resulthing length would exceed the range of a size_t, so
 |         /* The resulting length would exceed the range of a size_t, so
 | ||||||
|            certainly longer than the passed array size. */ |          * certainly longer than the passed array size. | ||||||
|  |          */ | ||||||
|         return -1; |         return -1; | ||||||
|     } |     } | ||||||
|     while (lenleft > 0) { |     while (lenleft > 0) { | ||||||
| @ -267,13 +268,17 @@ static int secp256k1_ecdsa_sig_sign(const secp256k1_ecmult_gen_context *ctx, sec | |||||||
|     secp256k1_fe_get_b32(b, &r.x); |     secp256k1_fe_get_b32(b, &r.x); | ||||||
|     secp256k1_scalar_set_b32(sigr, b, &overflow); |     secp256k1_scalar_set_b32(sigr, b, &overflow); | ||||||
|     if (secp256k1_scalar_is_zero(sigr)) { |     if (secp256k1_scalar_is_zero(sigr)) { | ||||||
|         /* P.x = order is on the curve, so technically sig->r could end up zero, which would be an invalid signature. */ |         /* P.x = order is on the curve, so technically sig->r could end up zero, which would be an invalid signature.
 | ||||||
|         /* This branch is cryptographically unreachable as hitting it requires finding the discrete log of P.x = N. */ |          * This branch is cryptographically unreachable as hitting it requires finding the discrete log of P.x = N. | ||||||
|  |          */ | ||||||
|         secp256k1_gej_clear(&rp); |         secp256k1_gej_clear(&rp); | ||||||
|         secp256k1_ge_clear(&r); |         secp256k1_ge_clear(&r); | ||||||
|         return 0; |         return 0; | ||||||
|     } |     } | ||||||
|     if (recid) { |     if (recid) { | ||||||
|  |         /* The overflow condition is cryptographically unreachable as hitting it requires finding the discrete log
 | ||||||
|  |          * of some P where P.x >= order, and only 1 in about 2^127 points meet this criteria. | ||||||
|  |          */ | ||||||
|         *recid = (overflow ? 2 : 0) | (secp256k1_fe_is_odd(&r.y) ? 1 : 0); |         *recid = (overflow ? 2 : 0) | (secp256k1_fe_is_odd(&r.y) ? 1 : 0); | ||||||
|     } |     } | ||||||
|     secp256k1_scalar_mul(&n, sigr, seckey); |     secp256k1_scalar_mul(&n, sigr, seckey); | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ | |||||||
| /** Field element module.
 | /** Field element module.
 | ||||||
|  * |  * | ||||||
|  *  Field elements can be represented in several ways, but code accessing |  *  Field elements can be represented in several ways, but code accessing | ||||||
|  *  it (and implementations) need to take certain properaties into account: |  *  it (and implementations) need to take certain properties into account: | ||||||
|  *  - Each field element can be normalized or not. |  *  - Each field element can be normalized or not. | ||||||
|  *  - Each field element has a magnitude, which represents how far away |  *  - Each field element has a magnitude, which represents how far away | ||||||
|  *    its representation is away from normalization. Normalized elements |  *    its representation is away from normalization. Normalized elements | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								src/tests.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/tests.c
									
									
									
									
									
								
							| @ -594,7 +594,7 @@ void scalar_test(void) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     { |     { | ||||||
|         /* Test that multipying the scalars is equal to multiplying their numbers modulo the order. */ |         /* Test that multiplying the scalars is equal to multiplying their numbers modulo the order. */ | ||||||
|         secp256k1_scalar r; |         secp256k1_scalar r; | ||||||
|         secp256k1_num r2num; |         secp256k1_num r2num; | ||||||
|         secp256k1_num rnum; |         secp256k1_num rnum; | ||||||
| @ -840,7 +840,7 @@ void run_scalar_tests(void) { | |||||||
| 
 | 
 | ||||||
|     { |     { | ||||||
|         /* Static test vectors.
 |         /* Static test vectors.
 | ||||||
|          * These were reduced from ~10^12 random vectors based on comparision-decision |          * These were reduced from ~10^12 random vectors based on comparison-decision | ||||||
|          *  and edge-case coverage on 32-bit and 64-bit implementations. |          *  and edge-case coverage on 32-bit and 64-bit implementations. | ||||||
|          * The responses were generated with Sage 5.9. |          * The responses were generated with Sage 5.9. | ||||||
|          */ |          */ | ||||||
| @ -1737,7 +1737,7 @@ void test_ge(void) { | |||||||
|     /* Points: (infinity, p1, p1, -p1, -p1, p2, p2, -p2, -p2, p3, p3, -p3, -p3, p4, p4, -p4, -p4).
 |     /* Points: (infinity, p1, p1, -p1, -p1, p2, p2, -p2, -p2, p3, p3, -p3, -p3, p4, p4, -p4, -p4).
 | ||||||
|      * The second in each pair of identical points uses a random Z coordinate in the Jacobian form. |      * The second in each pair of identical points uses a random Z coordinate in the Jacobian form. | ||||||
|      * All magnitudes are randomized. |      * All magnitudes are randomized. | ||||||
|      * All 17*17 combinations of points are added to eachother, using all applicable methods. |      * All 17*17 combinations of points are added to each other, using all applicable methods. | ||||||
|      * |      * | ||||||
|      * When the endomorphism code is compiled in, p5 = lambda*p1 and p6 = lambda^2*p1 are added as well. |      * When the endomorphism code is compiled in, p5 = lambda*p1 and p6 = lambda^2*p1 are added as well. | ||||||
|      */ |      */ | ||||||
| @ -2420,7 +2420,7 @@ void run_ecmult_constants(void) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void test_ecmult_gen_blind(void) { | void test_ecmult_gen_blind(void) { | ||||||
|     /* Test ecmult_gen() blinding and confirm that the blinding changes, the affline points match, and the z's don't match. */ |     /* Test ecmult_gen() blinding and confirm that the blinding changes, the affine points match, and the z's don't match. */ | ||||||
|     secp256k1_scalar key; |     secp256k1_scalar key; | ||||||
|     secp256k1_scalar b; |     secp256k1_scalar b; | ||||||
|     unsigned char seed32[32]; |     unsigned char seed32[32]; | ||||||
| @ -3139,7 +3139,7 @@ static int nonce_function_test_retry(unsigned char *nonce32, const unsigned char | |||||||
|        } |        } | ||||||
|        return 1; |        return 1; | ||||||
|    } |    } | ||||||
|    /* Retry rate of 6979 is negligible esp. as we only call this in determinstic tests. */ |    /* Retry rate of 6979 is negligible esp. as we only call this in deterministic tests. */ | ||||||
|    /* If someone does fine a case where it retries for secp256k1, we'd like to know. */ |    /* If someone does fine a case where it retries for secp256k1, we'd like to know. */ | ||||||
|    if (counter > 5) { |    if (counter > 5) { | ||||||
|        return 0; |        return 0; | ||||||
| @ -3966,7 +3966,7 @@ void test_ecdsa_edge_cases(void) { | |||||||
|         CHECK(secp256k1_ecdsa_sign(ctx, &sig2, msg, key, nonce_function_rfc6979, extra) == 1); |         CHECK(secp256k1_ecdsa_sign(ctx, &sig2, msg, key, nonce_function_rfc6979, extra) == 1); | ||||||
|         CHECK(!is_empty_signature(&sig2)); |         CHECK(!is_empty_signature(&sig2)); | ||||||
|         CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); |         CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); | ||||||
|         /* The default nonce function is determinstic. */ |         /* The default nonce function is deterministic. */ | ||||||
|         CHECK(secp256k1_ecdsa_sign(ctx, &sig2, msg, key, NULL, extra) == 1); |         CHECK(secp256k1_ecdsa_sign(ctx, &sig2, msg, key, NULL, extra) == 1); | ||||||
|         CHECK(!is_empty_signature(&sig2)); |         CHECK(!is_empty_signature(&sig2)); | ||||||
|         CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); |         CHECK(memcmp(&sig, &sig2, sizeof(sig)) == 0); | ||||||
| @ -3998,7 +3998,7 @@ void test_ecdsa_edge_cases(void) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     { |     { | ||||||
|         /* Check that optional nonce arguments do not have equivilent effect. */ |         /* Check that optional nonce arguments do not have equivalent effect. */ | ||||||
|         const unsigned char zeros[32] = {0}; |         const unsigned char zeros[32] = {0}; | ||||||
|         unsigned char nonce[32]; |         unsigned char nonce[32]; | ||||||
|         unsigned char nonce2[32]; |         unsigned char nonce2[32]; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user