From 7170cb1e67d42df59377601ddad426a18438c002 Mon Sep 17 00:00:00 2001
From: ID Bot The group environment G specifies an elliptic curve group (also denoted G for convenience) and associated constants
-and functions as detailed below. In this document we use multiplicative notation for the group operation.¶
5.2. Group environment G
G.calculate_generator(H,PRS,CI,sid) denotes a function that outputs a representation of a generator (referred to as "generator" from now on) of the group @@ -1817,8 +1817,7 @@
G.scalar_mult(y,g) is a function operating on a scalar -y and a group element g. It returns an octet string representation of the group element Y = g^y. (We use the function name scalar_mult and not scalar_pow for -maintaining consistency with the additive group notation used in [AHH21] for the CPace function names.)¶
+y and a group element g. It returns an octet string representation of the group element Y = g * y.¶G.I denotes a unique octet string representation of the neutral element of the group. G.I is used for detecting and signaling certain error conditions.¶
@@ -1826,7 +1825,7 @@G.scalar_mult_vfy(y,g) is a function operating on a scalar y and a group element g. It returns an octet string -representation of the group element g^y. Additionally, scalar_mult_vfy specifies validity conditions for y,g and g^y and outputs G.I in case they are not met.¶
+representation of the group element g * y. Additionally, scalar_mult_vfy specifies validity conditions for y,g and (g * y) and outputs G.I in case they are not met.¶G.DSI denotes a domain-separation identifier octet string which SHALL be uniquely identifying the group environment G.¶
@@ -1904,7 +1903,7 @@We use multiplicative notation for the group, i.e., X^2 denotes the element that is obtained by computing X*X, for group element X and group operation *.¶
+We use additive notation for the group, i.e., X * 2 denotes the element that is obtained by computing X+X, for group element X and group operation +.¶
@@ -2159,13 +2158,13 @@G.scalar_mult(y,_g) SHALL operate on a scalar y and a group element _g in the internal representation of the group abstraction environment. It returns the value Y = encode((_g)^y), i.e. it returns a value using the public encoding.¶
+G.scalar_mult(y,_g) SHALL operate on a scalar y and a group element _g in the internal representation of the group abstraction environment. It returns the value Y = encode((_g) * y), i.e. it returns a value using the public encoding.¶
G.I = is the public encoding representation of the identity element.¶
G.scalar_mult_vfy(y,X) operates on a value using the public encoding and a scalar and is implemented as follows. If the decode(X) function fails, it returns G.I. Otherwise it returns encode( decode(X)^y ).¶
+G.scalar_mult_vfy(y,X) operates on a value using the public encoding and a scalar and is implemented as follows. If the decode(X) function fails, it returns G.I. Otherwise it returns encode( decode(X) * y ).¶
The G.calculate_generator(H, PRS,sid,CI) function SHALL return a decoded point and SHALL BE implemented as follows.¶
@@ -2280,7 +2279,7 @@G.scalar_mult(s,X) is a function that operates on a scalar s and an input point X. The input X shall use the same encoding as produced by the G.calculate_generator method above. -G.scalar_mult(s,X) SHALL return an encoding of either the point X^s or the point X^(-s) according to [SEC1]. Implementations SHOULD use the full-coordinate format without compression, as important protocols such as TLS 1.3 removed support for compression. Implementations of scalar_mult(s,X) MAY output either X^s or X^(-s) as both points X^s and X^(-s) have the same x-coordinate and +G.scalar_mult(s,X) SHALL return an encoding of either the point Xs or the point X(-s) according to [SEC1]. Implementations SHOULD use the full-coordinate format without compression, as important protocols such as TLS 1.3 removed support for compression. Implementations of scalar_mult(s,X) MAY output either Xs or X(-s) as both points Xs and X(-s) have the same x-coordinate and result in the same Diffie-Hellman shared secrets K. (This allows implementations to opt for x-coordinate-only scalar multiplication algorithms.)¶
Otherwise G.scalar_mult_vfy(s,X) SHALL return the result of the ECSVDP-DH procedure from [IEEE1363] (section 7.2.1). I.e. it shall -either return "error" (in case that X^s is the neutral element) or the secret shared value "z" (otherwise). "z" SHALL be encoded by using -the big-endian encoding of the x-coordinate of the result point X^s according to [SEC1].¶
+either return "error" (in case that Xs is the neutral element) or the secret shared value "z" (otherwise). "z" SHALL be encoded by using +the big-endian encoding of the x-coordinate of the result point Xs according to [SEC1].¶