diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/restricted/aws/s2n/crypto/s2n_sequence.c | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/restricted/aws/s2n/crypto/s2n_sequence.c')
-rw-r--r-- | contrib/restricted/aws/s2n/crypto/s2n_sequence.c | 116 |
1 files changed, 58 insertions, 58 deletions
diff --git a/contrib/restricted/aws/s2n/crypto/s2n_sequence.c b/contrib/restricted/aws/s2n/crypto/s2n_sequence.c index 2211653817..1deac1b522 100644 --- a/contrib/restricted/aws/s2n/crypto/s2n_sequence.c +++ b/contrib/restricted/aws/s2n/crypto/s2n_sequence.c @@ -1,58 +1,58 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ - -#include "crypto/s2n_sequence.h" - -#include "tls/s2n_crypto.h" - -#include "error/s2n_errno.h" - -#include "utils/s2n_blob.h" - -#define SEQUENCE_NUMBER_POWER 8 - -int s2n_increment_sequence_number(struct s2n_blob *sequence_number) -{ - for (int i = sequence_number->size - 1; i >= 0; i--) { - sequence_number->data[i] += 1; - if (sequence_number->data[i]) { - break; - } - - /* RFC 5246 6.1: If a TLS implementation would need to wrap a sequence number, it must - * renegotiate instead. We don't support renegotiation. Caller needs to create a new session. - * This condition is very unlikely. It requires 2^64 - 1 records to be sent. - */ - S2N_ERROR_IF(i == 0, S2N_ERR_RECORD_LIMIT); - - /* seq[i] wrapped, so let it carry */ - } - - return 0; -} - -int s2n_sequence_number_to_uint64(struct s2n_blob *sequence_number, uint64_t *output) -{ - notnull_check(sequence_number); - - uint8_t shift = 0; - *output = 0; - - for (int i = sequence_number->size - 1; i >= 0; i--) { - *output += ((uint64_t) sequence_number->data[i]) << shift; - shift += SEQUENCE_NUMBER_POWER; - } - return S2N_SUCCESS; -} +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +#include "crypto/s2n_sequence.h" + +#include "tls/s2n_crypto.h" + +#include "error/s2n_errno.h" + +#include "utils/s2n_blob.h" + +#define SEQUENCE_NUMBER_POWER 8 + +int s2n_increment_sequence_number(struct s2n_blob *sequence_number) +{ + for (int i = sequence_number->size - 1; i >= 0; i--) { + sequence_number->data[i] += 1; + if (sequence_number->data[i]) { + break; + } + + /* RFC 5246 6.1: If a TLS implementation would need to wrap a sequence number, it must + * renegotiate instead. We don't support renegotiation. Caller needs to create a new session. + * This condition is very unlikely. It requires 2^64 - 1 records to be sent. + */ + S2N_ERROR_IF(i == 0, S2N_ERR_RECORD_LIMIT); + + /* seq[i] wrapped, so let it carry */ + } + + return 0; +} + +int s2n_sequence_number_to_uint64(struct s2n_blob *sequence_number, uint64_t *output) +{ + notnull_check(sequence_number); + + uint8_t shift = 0; + *output = 0; + + for (int i = sequence_number->size - 1; i >= 0; i--) { + *output += ((uint64_t) sequence_number->data[i]) << shift; + shift += SEQUENCE_NUMBER_POWER; + } + return S2N_SUCCESS; +} |