summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@pep.foundation>2020-12-15 13:05:27 +0100
committerNeal H. Walfield <neal@pep.foundation>2020-12-15 13:05:27 +0100
commitd87bf52f2bdb62d7ba466fe4d047670eaf51a309 (patch)
tree1747c5a6818e45a508aded45330c5b9c4e76f4f9
parent2310819af54cf2849861675e6f5c8783c7d55608 (diff)
openpgp: Use Feb. 1st instead of Jan. 1st as the cutoff day.
- January 1st is a holiday in much of the world. - When we disable an algorithm, things will almost certainly break somewhere. - Reduce the chance that things break when people are on vacation by using February 1st as the cutoff day instead of January 1st.
-rw-r--r--openpgp/src/policy.rs136
-rw-r--r--openpgp/src/types/timestamp.rs275
2 files changed, 206 insertions, 205 deletions
diff --git a/openpgp/src/policy.rs b/openpgp/src/policy.rs
index 2842f9cb..939fd684 100644
--- a/openpgp/src/policy.rs
+++ b/openpgp/src/policy.rs
@@ -603,18 +603,18 @@ impl<'a> From<&'a StandardPolicy<'a>> for Option<&'a dyn Policy> {
// for more details.
a_cutoff_list!(CollisionResistantHashCutoffList, HashAlgorithm, 12,
[
- REJECT, // 0. Not assigned.
- Some(Timestamp::Y1997), // 1. MD5
- Some(Timestamp::Y2013), // 2. SHA-1
- Some(Timestamp::Y2013), // 3. RIPE-MD/160
- REJECT, // 4. Reserved.
- REJECT, // 5. Reserved.
- REJECT, // 6. Reserved.
- REJECT, // 7. Reserved.
- ACCEPT, // 8. SHA256
- ACCEPT, // 9. SHA384
- ACCEPT, // 10. SHA512
- ACCEPT, // 11. SHA224
+ REJECT, // 0. Not assigned.
+ Some(Timestamp::Y1997M2), // 1. MD5
+ Some(Timestamp::Y2013M2), // 2. SHA-1
+ Some(Timestamp::Y2013M2), // 3. RIPE-MD/160
+ REJECT, // 4. Reserved.
+ REJECT, // 5. Reserved.
+ REJECT, // 6. Reserved.
+ REJECT, // 7. Reserved.
+ ACCEPT, // 8. SHA256
+ ACCEPT, // 9. SHA384
+ ACCEPT, // 10. SHA512
+ ACCEPT, // 11. SHA224
]);
// Signatures that *only* require a hash with Second Pre-image
// Resistance. See the documentation for HashAlgoSecurity for more
@@ -622,9 +622,9 @@ a_cutoff_list!(CollisionResistantHashCutoffList, HashAlgorithm, 12,
a_cutoff_list!(SecondPreImageResistantHashCutoffList, HashAlgorithm, 12,
[
REJECT, // 0. Not assigned.
- Some(Timestamp::Y2004), // 1. MD5
- Some(Timestamp::Y2023), // 2. SHA-1
- Some(Timestamp::Y2013), // 3. RIPE-MD/160
+ Some(Timestamp::Y2004M2), // 1. MD5
+ Some(Timestamp::Y2023M2), // 2. SHA-1
+ Some(Timestamp::Y2013M2), // 3. RIPE-MD/160
REJECT, // 4. Reserved.
REJECT, // 5. Reserved.
REJECT, // 6. Reserved.
@@ -680,42 +680,42 @@ a_cutoff_list!(SubpacketTagCutoffList, SubpacketTag, 36,
a_cutoff_list!(AsymmetricAlgorithmCutoffList, AsymmetricAlgorithm, 18,
[
- Some(Timestamp::Y2014), // 0. RSA1024.
- ACCEPT, // 1. RSA2048.
- ACCEPT, // 2. RSA3072.
- ACCEPT, // 3. RSA4096.
- Some(Timestamp::Y2014), // 4. ElGamal1024.
- ACCEPT, // 5. ElGamal2048.
- ACCEPT, // 6. ElGamal3072.
- ACCEPT, // 7. ElGamal4096.
- Some(Timestamp::Y2014), // 8. DSA1024.
- ACCEPT, // 9. DSA2048.
- ACCEPT, // 10. DSA3072.
- ACCEPT, // 11. DSA4096.
- ACCEPT, // 12. NistP256.
- ACCEPT, // 13. NistP384.
- ACCEPT, // 14. NistP521.
- ACCEPT, // 15. BrainpoolP256.
- ACCEPT, // 16. BrainpoolP512.
- ACCEPT, // 17. Cv25519.
+ Some(Timestamp::Y2014M2), // 0. RSA1024.
+ ACCEPT, // 1. RSA2048.
+ ACCEPT, // 2. RSA3072.
+ ACCEPT, // 3. RSA4096.
+ Some(Timestamp::Y2014M2), // 4. ElGamal1024.
+ ACCEPT, // 5. ElGamal2048.
+ ACCEPT, // 6. ElGamal3072.
+ ACCEPT, // 7. ElGamal4096.
+ Some(Timestamp::Y2014M2), // 8. DSA1024.
+ ACCEPT, // 9. DSA2048.
+ ACCEPT, // 10. DSA3072.
+ ACCEPT, // 11. DSA4096.
+ ACCEPT, // 12. NistP256.
+ ACCEPT, // 13. NistP384.
+ ACCEPT, // 14. NistP521.
+ ACCEPT, // 15. BrainpoolP256.
+ ACCEPT, // 16. BrainpoolP512.
+ ACCEPT, // 17. Cv25519.
]);
a_cutoff_list!(SymmetricAlgorithmCutoffList, SymmetricAlgorithm, 14,
[
- REJECT, // 0. Unencrypted.
- ACCEPT, // 1. IDEA.
- Some(Timestamp::Y2017), // 2. TripleDES.
- ACCEPT, // 3. CAST5.
- ACCEPT, // 4. Blowfish.
- REJECT, // 5. Reserved.
- REJECT, // 6. Reserved.
- ACCEPT, // 7. AES128.
- ACCEPT, // 8. AES192.
- ACCEPT, // 9. AES256.
- ACCEPT, // 10. Twofish.
- ACCEPT, // 11. Camellia128.
- ACCEPT, // 12. Camellia192.
- ACCEPT, // 13. Camellia256.
+ REJECT, // 0. Unencrypted.
+ ACCEPT, // 1. IDEA.
+ Some(Timestamp::Y2017M2), // 2. TripleDES.
+ ACCEPT, // 3. CAST5.
+ ACCEPT, // 4. Blowfish.
+ REJECT, // 5. Reserved.
+ REJECT, // 6. Reserved.
+ ACCEPT, // 7. AES128.
+ ACCEPT, // 8. AES192.
+ ACCEPT, // 9. AES256.
+ ACCEPT, // 10. Twofish.
+ ACCEPT, // 11. Camellia128.
+ ACCEPT, // 12. Camellia192.
+ ACCEPT, // 13. Camellia256.
]);
a_cutoff_list!(AEADAlgorithmCutoffList, AEADAlgorithm, 3,
@@ -727,27 +727,27 @@ a_cutoff_list!(AEADAlgorithmCutoffList, AEADAlgorithm, 3,
a_cutoff_list!(PacketTagCutoffList, Tag, 21,
[
- REJECT, // 0. Reserved.
- ACCEPT, // 1. PKESK.
- ACCEPT, // 2. Signature.
- ACCEPT, // 3. SKESK.
- ACCEPT, // 4. OnePassSig.
- ACCEPT, // 5. SecretKey.
- ACCEPT, // 6. PublicKey.
- ACCEPT, // 7. SecretSubkey.
- ACCEPT, // 8. CompressedData.
- Some(Timestamp::Y2004), // 9. SED.
- ACCEPT, // 10. Marker.
- ACCEPT, // 11. Literal.
- ACCEPT, // 12. Trust.
- ACCEPT, // 13. UserID.
- ACCEPT, // 14. PublicSubkey.
- REJECT, // 15. Not assigned.
- REJECT, // 16. Not assigned.
- ACCEPT, // 17. UserAttribute.
- ACCEPT, // 18. SEIP.
- ACCEPT, // 19. MDC.
- ACCEPT, // 20. AED.
+ REJECT, // 0. Reserved.
+ ACCEPT, // 1. PKESK.
+ ACCEPT, // 2. Signature.
+ ACCEPT, // 3. SKESK.
+ ACCEPT, // 4. OnePassSig.
+ ACCEPT, // 5. SecretKey.
+ ACCEPT, // 6. PublicKey.
+ ACCEPT, // 7. SecretSubkey.
+ ACCEPT, // 8. CompressedData.
+ Some(Timestamp::Y2004M2), // 9. SED.
+ ACCEPT, // 10. Marker.
+ ACCEPT, // 11. Literal.
+ ACCEPT, // 12. Trust.
+ ACCEPT, // 13. UserID.
+ ACCEPT, // 14. PublicSubkey.
+ REJECT, // 15. Not assigned.
+ REJECT, // 16. Not assigned.
+ ACCEPT, // 17. UserAttribute.
+ ACCEPT, // 18. SEIP.
+ ACCEPT, // 19. MDC.
+ ACCEPT, // 20. AED.
]);
// We need to convert a `SystemTime` to a `Timestamp` in
diff --git a/openpgp/src/types/timestamp.rs b/openpgp/src/types/timestamp.rs
index 4c630fca..a9374dcc 100644
--- a/openpgp/src/types/timestamp.rs
+++ b/openpgp/src/types/timestamp.rs
@@ -446,144 +446,145 @@ impl Timestamp {
pub(crate) const UNIX_EPOCH : Timestamp = Timestamp(0);
pub(crate) const MAX : Timestamp = Timestamp(u32::MAX);
- // for y in $(seq 1970 2106); do echo " const Y$y : Timestamp = Timestamp($(date -u --date="Jan. 1, $y" '+%s'));"; done
pub(crate) const Y1970 : Timestamp = Timestamp(0);
- pub(crate) const Y1971 : Timestamp = Timestamp(31536000);
- pub(crate) const Y1972 : Timestamp = Timestamp(63072000);
- pub(crate) const Y1973 : Timestamp = Timestamp(94694400);
- pub(crate) const Y1974 : Timestamp = Timestamp(126230400);
- pub(crate) const Y1975 : Timestamp = Timestamp(157766400);
- pub(crate) const Y1976 : Timestamp = Timestamp(189302400);
- pub(crate) const Y1977 : Timestamp = Timestamp(220924800);
- pub(crate) const Y1978 : Timestamp = Timestamp(252460800);
- pub(crate) const Y1979 : Timestamp = Timestamp(283996800);
- pub(crate) const Y1980 : Timestamp = Timestamp(315532800);
- pub(crate) const Y1981 : Timestamp = Timestamp(347155200);
- pub(crate) const Y1982 : Timestamp = Timestamp(378691200);
- pub(crate) const Y1983 : Timestamp = Timestamp(410227200);
- pub(crate) const Y1984 : Timestamp = Timestamp(441763200);
- pub(crate) const Y1985 : Timestamp = Timestamp(473385600);
- pub(crate) const Y1986 : Timestamp = Timestamp(504921600);
- pub(crate) const Y1987 : Timestamp = Timestamp(536457600);
- pub(crate) const Y1988 : Timestamp = Timestamp(567993600);
- pub(crate) const Y1989 : Timestamp = Timestamp(599616000);
- pub(crate) const Y1990 : Timestamp = Timestamp(631152000);
- pub(crate) const Y1991 : Timestamp = Timestamp(662688000);
- pub(crate) const Y1992 : Timestamp = Timestamp(694224000);
- pub(crate) const Y1993 : Timestamp = Timestamp(725846400);
- pub(crate) const Y1994 : Timestamp = Timestamp(757382400);
- pub(crate) const Y1995 : Timestamp = Timestamp(788918400);
- pub(crate) const Y1996 : Timestamp = Timestamp(820454400);
- pub(crate) const Y1997 : Timestamp = Timestamp(852076800);
- pub(crate) const Y1998 : Timestamp = Timestamp(883612800);
- pub(crate) const Y1999 : Timestamp = Timestamp(915148800);
- pub(crate) const Y2000 : Timestamp = Timestamp(946684800);
- pub(crate) const Y2001 : Timestamp = Timestamp(978307200);
- pub(crate) const Y2002 : Timestamp = Timestamp(1009843200);
- pub(crate) const Y2003 : Timestamp = Timestamp(1041379200);
- pub(crate) const Y2004 : Timestamp = Timestamp(1072915200);
- pub(crate) const Y2005 : Timestamp = Timestamp(1104537600);
- pub(crate) const Y2006 : Timestamp = Timestamp(1136073600);
- pub(crate) const Y2007 : Timestamp = Timestamp(1167609600);
- pub(crate) const Y2008 : Timestamp = Timestamp(1199145600);
- pub(crate) const Y2009 : Timestamp = Timestamp(1230768000);
- pub(crate) const Y2010 : Timestamp = Timestamp(1262304000);
- pub(crate) const Y2011 : Timestamp = Timestamp(1293840000);
- pub(crate) const Y2012 : Timestamp = Timestamp(1325376000);
- pub(crate) const Y2013 : Timestamp = Timestamp(1356998400);
- pub(crate) const Y2014 : Timestamp = Timestamp(1388534400);
- pub(crate) const Y2015 : Timestamp = Timestamp(1420070400);
- pub(crate) const Y2016 : Timestamp = Timestamp(1451606400);
- pub(crate) const Y2017 : Timestamp = Timestamp(1483228800);
- pub(crate) const Y2018 : Timestamp = Timestamp(1514764800);
- pub(crate) const Y2019 : Timestamp = Timestamp(1546300800);
- pub(crate) const Y2020 : Timestamp = Timestamp(1577836800);
- pub(crate) const Y2021 : Timestamp = Timestamp(1609459200);
- pub(crate) const Y2022 : Timestamp = Timestamp(1640995200);
- pub(crate) const Y2023 : Timestamp = Timestamp(1672531200);
- pub(crate) const Y2024 : Timestamp = Timestamp(1704067200);
- pub(crate) const Y2025 : Timestamp = Timestamp(1735689600);
- pub(crate) const Y2026 : Timestamp = Timestamp(1767225600);
- pub(crate) const Y2027 : Timestamp = Timestamp(1798761600);
- pub(crate) const Y2028 : Timestamp = Timestamp(1830297600);
- pub(crate) const Y2029 : Timestamp = Timestamp(1861920000);
- pub(crate) const Y2030 : Timestamp = Timestamp(1893456000);
- pub(crate) const Y2031 : Timestamp = Timestamp(1924992000);
- pub(crate) const Y2032 : Timestamp = Timestamp(1956528000);
- pub(crate) const Y2033 : Timestamp = Timestamp(1988150400);
- pub(crate) const Y2034 : Timestamp = Timestamp(2019686400);
- pub(crate) const Y2035 : Timestamp = Timestamp(2051222400);
- pub(crate) const Y2036 : Timestamp = Timestamp(2082758400);
- pub(crate) const Y2037 : Timestamp = Timestamp(2114380800);
- pub(crate) const Y2038 : Timestamp = Timestamp(2145916800);
- pub(crate) const Y2039 : Timestamp = Timestamp(2177452800);
- pub(crate) const Y2040 : Timestamp = Timestamp(2208988800);
- pub(crate) const Y2041 : Timestamp = Timestamp(2240611200);
- pub(crate) const Y2042 : Timestamp = Timestamp(2272147200);
- pub(crate) const Y2043 : Timestamp = Timestamp(2303683200);
- pub(crate) const Y2044 : Timestamp = Timestamp(2335219200);
- pub(crate) const Y2045 : Timestamp = Timestamp(2366841600);
- pub(crate) const Y2046 : Timestamp = Timestamp(2398377600);
- pub(crate) const Y2047 : Timestamp = Timestamp(2429913600);
- pub(crate) const Y2048 : Timestamp = Timestamp(2461449600);
- pub(crate) const Y2049 : Timestamp = Timestamp(2493072000);
- pub(crate) const Y2050 : Timestamp = Timestamp(2524608000);
- pub(crate) const Y2051 : Timestamp = Timestamp(2556144000);
- pub(crate) const Y2052 : Timestamp = Timestamp(2587680000);
- pub(crate) const Y2053 : Timestamp = Timestamp(2619302400);
- pub(crate) const Y2054 : Timestamp = Timestamp(2650838400);
- pub(crate) const Y2055 : Timestamp = Timestamp(2682374400);
- pub(crate) const Y2056 : Timestamp = Timestamp(2713910400);
- pub(crate) const Y2057 : Timestamp = Timestamp(2745532800);
- pub(crate) const Y2058 : Timestamp = Timestamp(2777068800);
- pub(crate) const Y2059 : Timestamp = Timestamp(2808604800);
- pub(crate) const Y2060 : Timestamp = Timestamp(2840140800);
- pub(crate) const Y2061 : Timestamp = Timestamp(2871763200);
- pub(crate) const Y2062 : Timestamp = Timestamp(2903299200);
- pub(crate) const Y2063 : Timestamp = Timestamp(2934835200);
- pub(crate) const Y2064 : Timestamp = Timestamp(2966371200);
- pub(crate) const Y2065 : Timestamp = Timestamp(2997993600);
- pub(crate) const Y2066 : Timestamp = Timestamp(3029529600);
- pub(crate) const Y2067 : Timestamp = Timestamp(3061065600);
- pub(crate) const Y2068 : Timestamp = Timestamp(3092601600);
- pub(crate) const Y2069 : Timestamp = Timestamp(3124224000);
- pub(crate) const Y2070 : Timestamp = Timestamp(3155760000);
- pub(crate) const Y2071 : Timestamp = Timestamp(3187296000);
- pub(crate) const Y2072 : Timestamp = Timestamp(3218832000);
- pub(crate) const Y2073 : Timestamp = Timestamp(3250454400);
- pub(crate) const Y2074 : Timestamp = Timestamp(3281990400);
- pub(crate) const Y2075 : Timestamp = Timestamp(3313526400);
- pub(crate) const Y2076 : Timestamp = Timestamp(3345062400);
- pub(crate) const Y2077 : Timestamp = Timestamp(3376684800);
- pub(crate) const Y2078 : Timestamp = Timestamp(3408220800);
- pub(crate) const Y2079 : Timestamp = Timestamp(3439756800);
- pub(crate) const Y2080 : Timestamp = Timestamp(3471292800);
- pub(crate) const Y2081 : Timestamp = Timestamp(3502915200);
- pub(crate) const Y2082 : Timestamp = Timestamp(3534451200);
- pub(crate) const Y2083 : Timestamp = Timestamp(3565987200);
- pub(crate) const Y2084 : Timestamp = Timestamp(3597523200);
- pub(crate) const Y2085 : Timestamp = Timestamp(3629145600);
- pub(crate) const Y2086 : Timestamp = Timestamp(3660681600);
- pub(crate) const Y2087 : Timestamp = Timestamp(3692217600);
- pub(crate) const Y2088 : Timestamp = Timestamp(3723753600);
- pub(crate) const Y2089 : Timestamp = Timestamp(3755376000);
- pub(crate) const Y2090 : Timestamp = Timestamp(3786912000);
- pub(crate) const Y2091 : Timestamp = Timestamp(3818448000);
- pub(crate) const Y2092 : Timestamp = Timestamp(3849984000);
- pub(crate) const Y2093 : Timestamp = Timestamp(3881606400);
- pub(crate) const Y2094 : Timestamp = Timestamp(3913142400);
- pub(crate) const Y2095 : Timestamp = Timestamp(3944678400);
- pub(crate) const Y2096 : Timestamp = Timestamp(3976214400);
- pub(crate) const Y2097 : Timestamp = Timestamp(4007836800);
- pub(crate) const Y2098 : Timestamp = Timestamp(4039372800);
- pub(crate) const Y2099 : Timestamp = Timestamp(4070908800);
- pub(crate) const Y2100 : Timestamp = Timestamp(4102444800);
- pub(crate) const Y2101 : Timestamp = Timestamp(4133980800);
- pub(crate) const Y2102 : Timestamp = Timestamp(4165516800);
- pub(crate) const Y2103 : Timestamp = Timestamp(4197052800);
- pub(crate) const Y2104 : Timestamp = Timestamp(4228588800);
- pub(crate) const Y2105 : Timestamp = Timestamp(4260211200);
- pub(crate) const Y2106 : Timestamp = Timestamp(4291747200);
+ // for y in $(seq 1970 2106); do echo " pub(crate) const Y${y}M2 : Timestamp = Timestamp($(date -u --date="Feb. 1, $y" '+%s'));"; done
+ pub(crate) const Y1970M2 : Timestamp = Timestamp(2678400);
+ pub(crate) const Y1971M2 : Timestamp = Timestamp(34214400);
+ pub(crate) const Y1972M2 : Timestamp = Timestamp(65750400);
+ pub(crate) const Y1973M2 : Timestamp = Timestamp(97372800);
+ pub(crate) const Y1974M2 : Timestamp = Timestamp(128908800);
+ pub(crate) const Y1975M2 : Timestamp = Timestamp(160444800);
+ pub(crate) const Y1976M2 : Timestamp = Timestamp(191980800);
+ pub(crate) const Y1977M2 : Timestamp = Timestamp(223603200);
+ pub(crate) const Y1978M2 : Timestamp = Timestamp(255139200);
+ pub(crate) const Y1979M2 : Timestamp = Timestamp(286675200);
+ pub(crate) const Y1980M2 : Timestamp = Timestamp(318211200);
+ pub(crate) const Y1981M2 : Timestamp = Timestamp(349833600);
+ pub(crate) const Y1982M2 : Timestamp = Timestamp(381369600);
+ pub(crate) const Y1983M2 : Timestamp = Timestamp(412905600);
+ pub(crate) const Y1984M2 : Timestamp = Timestamp(444441600);
+ pub(crate) const Y1985M2 : Timestamp = Timestamp(476064000);
+ pub(crate) const Y1986M2 : Timestamp = Timestamp(507600000);
+ pub(crate) const Y1987M2 : Timestamp = Timestamp(539136000);
+ pub(crate) const Y1988M2 : Timestamp = Timestamp(570672000);
+ pub(crate) const Y1989M2 : Timestamp = Timestamp(602294400);
+ pub(crate) const Y1990M2 : Timestamp = Timestamp(633830400);
+ pub(crate) const Y1991M2 : Timestamp = Timestamp(665366400);
+ pub(crate) const Y1992M2 : Timestamp = Timestamp(696902400);
+ pub(crate) const Y1993M2 : Timestamp = Timestamp(728524800);
+ pub(crate) const Y1994M2 : Timestamp = Timestamp(760060800);
+ pub(crate) const Y1995M2 : Timestamp = Timestamp(791596800);
+ pub(crate) const Y1996M2 : Timestamp = Timestamp(823132800);
+ pub(crate) const Y1997M2 : Timestamp = Timestamp(854755200);
+ pub(crate) const Y1998M2 : Timestamp = Timestamp(886291200);
+ pub(crate) const Y1999M2 : Timestamp = Timestamp(917827200);
+ pub(crate) const Y2000M2 : Timestamp = Timestamp(949363200);
+ pub(crate) const Y2001M2 : Timestamp = Timestamp(980985600);
+ pub(crate) const Y2002M2 : Timestamp = Timestamp(1012521600);
+ pub(crate) const Y2003M2 : Timestamp = Timestamp(1044057600);
+ pub(crate) const Y2004M2 : Timestamp = Timestamp(1075593600);
+ pub(crate) const Y2005M2 : Timestamp = Timestamp(1107216000);
+ pub(crate) const Y2006M2 : Timestamp = Timestamp(1138752000);
+ pub(crate) const Y2007M2 : Timestamp = Timestamp(1170288000);
+ pub(crate) const Y2008M2 : Timestamp = Timestamp(1201824000);
+ pub(crate) const Y2009M2 : Timestamp = Timestamp(1233446400);
+ pub(crate) const Y2010M2 : Timestamp = Timestamp(1264982400);
+ pub(crate) const Y2011M2 : Timestamp = Timestamp(1296518400);
+ pub(crate) const Y2012M2 : Timestamp = Timestamp(1328054400);
+ pub(crate) const Y2013M2 : Timestamp = Timestamp(1359676800);
+ pub(crate) const Y2014M2 : Timestamp = Timestamp(1391212800);
+ pub(crate) const Y2015M2 : Timestamp = Timestamp(1422748800);
+ pub(crate) const Y2016M2 : Timestamp = Timestamp(1454284800);
+ pub(crate) const Y2017M2 : Timestamp = Timestamp(1485907200);
+ pub(crate) const Y2018M2 : Timestamp = Timestamp(1517443200);
+ pub(crate) const Y2019M2 : Timestamp = Timestamp(1548979200);
+ pub(crate) const Y2020M2 : Timestamp = Timestamp(1580515200);
+ pub(crate) const Y2021M2 : Timestamp = Timestamp(1612137600);
+ pub(crate) const Y2022M2 : Timestamp = Timestamp(1643673600);
+ pub(crate) const Y2023M2 : Timestamp = Timestamp(1675209600);
+ pub(crate) const Y2024M2 : Timestamp = Timestamp(1706745600);
+ pub(crate) const Y2025M2 : Timestamp = Timestamp(1738368000);
+ pub(crate) const Y2026M2 : Timestamp = Timestamp(1769904000);
+ pub(crate) const Y2027M2 : Timestamp = Timestamp(1801440000);
+ pub(crate) const Y2028M2 : Timestamp = Timestamp(1832976000);
+ pub(crate) const Y2029M2 : Timestamp = Timestamp(1864598400);
+ pub(crate) const Y2030M2 : Timestamp = Timestamp(1896134400);
+ pub(crate) const Y2031M2 : Timestamp = Timestamp(1927670400);
+ pub(crate) const Y2032M2 : Timestamp = Timestamp(1959206400);
+ pub(crate) const Y2033M2 : Timestamp = Timestamp(1990828800);
+ pub(crate) const Y2034M2 : Timestamp = Timestamp(2022364800);
+ pub(crate) const Y2035M2 : Timestamp = Timestamp(2053900800);
+ pub(crate) const Y2036M2 : Timestamp = Timestamp(2085436800);
+ pub(crate) const Y2037M2 : Timestamp = Timestamp(2117059200);
+ pub(crate) const Y2038M2 : Timestamp = Timestamp(2148595200);
+ pub(crate) const Y2039M2 : Timestamp = Timestamp(2180131200);
+ pub(crate) const Y2040M2 : Timestamp = Timestamp(2211667200);
+ pub(crate) const Y2041M2 : Timestamp = Timestamp(2243289600);
+ pub(crate) const Y2042M2 : Timestamp = Timestamp(2274825600);
+ pub(crate) const Y2043M2 : Timestamp = Timestamp(2306361600);
+ pub(crate) const Y2044M2 : Timestamp = Timestamp(2337897600);
+ pub(crate) const Y2045M2 : Timestamp = Timestamp(2369520000);
+ pub(crate) const Y2046M2 : Timestamp = Timestamp(2401056000);
+ pub(crate) const Y2047M2 : Timestamp = Timestamp(2432592000);
+ pub(crate) const Y2048M2 : Timestamp = Timestamp(2464128000);
+ pub(crate) const Y2049M2 : Timestamp = Timestamp(2495750400);
+ pub(crate) const Y2050M2 : Timestamp = Timestamp(2527286400);
+ pub(crate) const Y2051M2 : Timestamp = Timestamp(2558822400);
+ pub(crate) const Y2052M2 : Timestamp = Timestamp(2590358400);
+ pub(crate) const Y2053M2 : Timestamp = Timestamp(2621980800);
+ pub(crate) const Y2054M2 : Timestamp = Timestamp(2653516800);
+ pub(crate) const Y2055M2 : Timestamp = Timestamp(2685052800);
+ pub(crate) const Y2056M2 : Timestamp = Timestamp(2716588800);
+ pub(crate) const Y2057M2 : Timestamp = Timestamp(2748211200);
+ pub(crate) const Y2058M2 : Timestamp = Timestamp(2779747200);
+ pub(crate) const Y2059M2 : Timestamp = Timestamp(2811283200);
+ pub(crate) const Y2060M2 : Timestamp = Timestamp(2842819200);
+ pub(crate) const Y2061M2 : Timestamp = Timestamp(2874441600);
+ pub(crate) const Y2062M2 : Timestamp = Timestamp(2905977600);
+ pub(crate) const Y2063M2 : Timestamp = Timestamp(2937513600);
+ pub(crate) const Y2064M2 : Timestamp = Timestamp(2969049600);
+ pub(crate) const Y2065M2 : Timestamp = Timestamp(3000672000);
+ pub(crate) const Y2066M2 : Timestamp = Timestamp(3032208000);
+ pub(crate) const Y2067M2 : Timestamp = Timestamp(3063744000);
+ pub(crate) const Y2068M2 : Timestamp = Timestamp(3095280000);
+ pub(crate) const Y2069M2 : Timestamp = Timestamp(3126902400);
+ pub(crate) const Y2070M2 : Timestamp = Timestamp(3158438400);
+ pub(crate) const Y2071M2 : Timestamp = Timestamp(3189974400);
+ pub(crate) const Y2072M2 : Timestamp = Timestamp(3221510400);
+ pub(crate) const Y2073M2 : Timestamp = Timestamp(3253132800);
+ pub(crate) const Y2074M2 : Timestamp = Timestamp(3284668800);
+ pub(crate) const Y2075M2 : Timestamp = Timestamp(3316204800);
+ pub(crate) const Y2076M2 : Timestamp = Timestamp(3347740800);
+ pub(crate) const Y2077M2 : Timestamp = Timestamp(3379363200);
+ pub(crate) const Y2078M2 : Timestamp = Timestamp(3410899200);
+ pub(crate) const Y2079M2 : Timestamp = Timestamp(3442435200);
+ pub(crate) const Y2080M2 : Timestamp = Timestamp(3473971200);
+ pub(crate) const Y2081M2 : Timestamp = Timestamp(3505593600);
+ pub(crate) const Y2082M2 : Timestamp = Timestamp(3537129600);
+ pub(crate) const Y2083M2 : Timestamp = Timestamp(3568665600);
+ pub(crate) const Y2084M2 : Timestamp = Timestamp(3600201600);
+ pub(crate) const Y2085M2 : Timestamp = Timestamp(3631824000);
+ pub(crate) const Y2086M2 : Timestamp = Timestamp(3663360000);
+ pub(crate) const Y2087M2 : Timestamp = Timestamp(3694896000);
+ pub(crate) const Y2088M2 : Timestamp = Timestamp(3726432000);
+ pub(crate) const Y2089M2 : Timestamp = Timestamp(3758054400);
+ pub(crate) const Y2090M2 : Timestamp = Timestamp(3789590400);
+ pub(crate) const Y2091M2 : Timestamp = Timestamp(3821126400);
+ pub(crate) const Y2092M2 : Timestamp = Timestamp(3852662400);
+ pub(crate) const Y2093M2 : Timestamp = Timestamp(3884284800);
+ pub(crate) const Y2094M2 : Timestamp = Timestamp(3915820800);
+ pub(crate) const Y2095M2 : Timestamp = Timestamp(3947356800);
+ pub(crate) const Y2096M2 : Timestamp = Timestamp(3978892800);
+ pub(crate) const Y2097M2 : Timestamp = Timestamp(4010515200);
+ pub(crate) const Y2098M2 : Timestamp = Timestamp(4042051200);
+ pub(crate) const Y2099M2 : Timestamp = Timestamp(4073587200);
+ pub(crate) const Y2100M2 : Timestamp = Timestamp(4105123200);
+ pub(crate) const Y2101M2 : Timestamp = Timestamp(4136659200);
+ pub(crate) const Y2102M2 : Timestamp = Timestamp(4168195200);
+ pub(crate) const Y2103M2 : Timestamp = Timestamp(4199731200);
+ pub(crate) const Y2104M2 : Timestamp = Timestamp(4231267200);
+ pub(crate) const Y2105M2 : Timestamp = Timestamp(4262889600);
+ pub(crate) const Y2106M2 : Timestamp = Timestamp(4294425600);
}
#[cfg(test)]