aboutsummaryrefslogtreecommitdiffstats
path: root/libs/bigint/BigIntegerAlgorithms.hh
blob: b1dd9432274b77856efaf35706f39dced49f3663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef BIGINTEGERALGORITHMS_H
#define BIGINTEGERALGORITHMS_H

#include "BigInteger.hh"

/* Some mathematical algorithms for big integers.
 * This code is new and, as such, experimental. */

// Returns the greatest common divisor of a and b.
BigUnsigned gcd(BigUnsigned a, BigUnsigned b);

/* Extended Euclidean algorithm.
 * Given m and n, finds gcd g and numbers r, s such that r*m + s*n == g. */
void extendedEuclidean(BigInteger m, BigInteger n,
		BigInteger &g, BigInteger &r, BigInteger &s);

/* Returns the multiplicative inverse of x modulo n, or throws an exception if
 * they have a common factor. */
BigUnsigned modinv(const BigInteger &x, const BigUnsigned &n);

// Returns (base ^ exponent) % modulus.
BigUnsigned modexp(const BigInteger &base, const BigUnsigned &exponent,
		const BigUnsigned &modulus);

#endif
s been submitted to a Certificate Transparency Log, and that it will be part of the public log within some time period, this is called the "maximum merge delay" (MMD) and each log specifies its own. .. attribute:: version :type: :class:`~cryptography.x509.certificate_transparency.Version` The SCT version as an enumeration. Currently only one version has been specified. .. attribute:: log_id :type: bytes An opaque identifier, indicating which log this SCT is from. This is the SHA256 hash of the log's public key. .. attribute:: timestamp :type: :class:`datetime.datetime` A naïve datetime representing the time in UTC at which the log asserts the certificate had been submitted to it. .. attribute:: entry_type :type: :class:`~cryptography.x509.certificate_transparency.LogEntryType` The type of submission to the log that this SCT is for. Log submissions can either be certificates themselves or "pre-certificates" which indicate a binding-intent to issue a certificate for the same data, with SCTs embedded in it. .. class:: Version .. versionadded:: 2.0 An enumeration for SignedCertificateTimestamp versions. .. attribute:: v1 For version 1 SignedCertificateTimestamps. .. class:: LogEntryType .. versionadded:: 2.0 An enumeration for SignedCertificateTimestamp log entry types. .. attribute:: X509_CERTIFICATE For SCTs corresponding to X.509 certificates. .. attribute:: PRE_CERTIFICATE For SCTs corresponding to pre-certificates. .. _`Certificate Transparency`: https://www.certificate-transparency.org/