Skip to content
4 changes: 2 additions & 2 deletions lib/src/impl_ffi/impl_ffi.rsa_common.dart
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ _EvpPKey _importJwkRsaPrivateOrPublicKey(
checkJwk(jwk.d != null, 'd');
final d = readBN(jwk.d!, 'd');
// If present properties p,q,dp,dq,qi enable optional optimizations, see:
// https://tools.ietf.org/html/rfc7518#section-6.3.2
// https://https://www.rfc-editor.org/rfc/rfc7518#section-6.3.2
// However, these are required by Chromes Web Crypto implementation:
// https://chromium.googlesource.com/chromium/src/+/43d62c50b705f88c67b14539e91fd8fd017f70c4/components/webcrypto/algorithms/rsa.cc#82
// They are also required by Web Crypto implementation in Firefox:
Expand Down Expand Up @@ -202,7 +202,7 @@ Map<String, dynamic> _exportJwkRsaPrivateOrPublicKey(
ssl.RSA_get0_key(rsa, ffi.nullptr, ffi.nullptr, d);

// p, q, dp, dq, qi is optional in:
// // https://tools.ietf.org/html/rfc7518#section-6.3.2
// // https://www.rfc-editor.org/rfc/rfc7518#section-6.3.2
// but explicitly required when exporting in Web Crypto.
final p = scope<ffi.Pointer<BIGNUM>>();
final q = scope<ffi.Pointer<BIGNUM>>();
Expand Down
4 changes: 2 additions & 2 deletions lib/src/impl_ffi/impl_ffi.utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ int _numBitsToBytes(int numberOfBits) =>
(numberOfBits ~/ 8) + ((7 + (numberOfBits % 8)) ~/ 8);

/// Decode url-safe base64 witout padding as specified in
/// [RFC 7515 Section 2](https://tools.ietf.org/html/rfc7515#section-2)
/// [RFC 7515 Section 2]( https://www.rfc-editor.org/rfc/rfc7515#section-2)
///
/// Throw [FormatException] mentioning JWK property [prop] on failure.
Uint8List _jwkDecodeBase64UrlNoPadding(String unpadded, String prop) {
Expand All @@ -508,7 +508,7 @@ Uint8List _jwkDecodeBase64UrlNoPadding(String unpadded, String prop) {
}

/// Encode url-safe base64 witout padding as specified in
/// [RFC 7515 Section 2](https://tools.ietf.org/html/rfc7515#section-2)
/// [RFC 7515 Section 2](https://www.rfc-editor.org/rfc/rfc7515#section-2)
String _jwkEncodeBase64UrlNoPadding(List<int> data) {
final padded = base64Url.encode(data);
final i = padded.indexOf('=');
Expand Down
2 changes: 1 addition & 1 deletion lib/src/jsonwebkey.dart
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ final class JsonWebKey {
/// See also "oth" in [RFC 7518 Section 6.3.2.7].
///
/// [1]: https://www.w3.org/TR/WebCryptoAPI/#JsonWebKey-dictionary
/// [2]: https://tools.ietf.org/html/rfc7518#section-6.3.2.7
/// [2]: https://www.rfc-editor.org/rfc/rfc7518#section-6.3.2.7
final class RsaOtherPrimesInfo {
String r;
String d;
Expand Down
2 changes: 1 addition & 1 deletion lib/src/testing/webcrypto/rsapss.dart
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ final _testData = [
/// [2]: https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60165.120.1/lib/CommonRSACryptor.c.auto.html
/// [3]: https://opensource.apple.com/source/xnu/xnu-4570.41.2/EXTERNAL_HEADERS/corecrypto/ccrsa.h.auto.html
/// [4]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
/// [5]: https://tools.ietf.org/html/rfc3447
/// [5]: https://www.rfc-editor.org/rfc/rfc3447
/// [6]: https://tools.ietf.org/html/rfc3447#section-9.1
/// [7]: https://bugs.webkit.org/show_bug.cgi?id=216750
...(nullOnSafari(_testDataWithLongSaltLength) ?? <Map>[]),
Expand Down
12 changes: 6 additions & 6 deletions lib/src/webcrypto/webcrypto.aescbc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ part of 'webcrypto.dart';
/// {@macro AesCbcSecretKey-encryptBytes/decryptBytes:example}
///
/// [1]: https://csrc.nist.gov/publications/detail/sp/800-38a/final
/// [2]: https://tools.ietf.org/html/rfc2315#section-10.3
/// [3]: https://tools.ietf.org/html/rfc7517
/// [2]: https://www.rfc-editor.org/rfc/rfc2315#section-10.3
/// [3]: https://www.rfc-editor.org/rfc/rfc7517
final class AesCbcSecretKey {
final AesCbcSecretKeyImpl _impl;

Expand Down Expand Up @@ -106,7 +106,7 @@ final class AesCbcSecretKey {
/// print(jsonEncode(keyData));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]:https://www.rfc-editor.org/rfc/rfc7517
// TODO: Decide if we want restrictions on "use" property" (we probably have it on web, if we don't strip it)
// TODO: Decide if we want place restrictions on key_ops
static Future<AesCbcSecretKey> importJsonWebKey(
Expand Down Expand Up @@ -150,7 +150,7 @@ final class AesCbcSecretKey {
///
/// {@template AesCbcSecretKey-encrypt:padding}
/// Encrypted output is always padded in PKCS#7 mode, as described in
/// [RFC 2315 Section 10.3 step 2](https://tools.ietf.org/html/rfc2315#section-10.3).
/// [RFC 2315 Section 10.3 step 2] https://www.rfc-editor.org/rfc/rfc2315#section-10.3).
/// This padding is stripped when the message is decrypted.
/// {@endtemplate}
///
Expand Down Expand Up @@ -237,7 +237,7 @@ final class AesCbcSecretKey {
/// {@template AesCbcSecretKey-decrypt:padding}
/// The encrypted [data] is always assumed to be padded in PKCS#7 mode,
/// as described in
/// [RFC 2315 Section 10.3 step 2](https://tools.ietf.org/html/rfc2315#section-10.3).
/// [RFC 2315 Section 10.3 step 2]( https://www.rfc-editor.org/rfc/rfc2315#section-10.3).
/// This padding is stripped from the decrypted return value.
/// The [encryptBytes] and [encryptStream] methods always apply this padding.
/// {@endtemplate}
Expand Down Expand Up @@ -304,6 +304,6 @@ final class AesCbcSecretKey {
/// print(jsonEncode(jwk));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]:https://www.rfc-editor.org/rfc/rfc7517
Future<Map<String, dynamic>> exportJsonWebKey() => _impl.exportJsonWebKey();
}
6 changes: 3 additions & 3 deletions lib/src/webcrypto/webcrypto.aesctr.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ part of 'webcrypto.dart';
/// {@macro AesCtrSecretKey-encryptBytes/decryptBytes:example}
///
/// [1]: https://csrc.nist.gov/publications/detail/sp/800-38a/final
/// [2]: https://tools.ietf.org/html/rfc7517
/// [2]: https://www.rfc-editor.org//rfc7517
final class AesCtrSecretKey {
final AesCtrSecretKeyImpl _impl;

Expand Down Expand Up @@ -103,7 +103,7 @@ final class AesCtrSecretKey {
/// print(jsonEncode(keyData));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]:https://www.rfc-editor.org//rfc7517
static Future<AesCtrSecretKey> importJsonWebKey(
Map<String, dynamic> jwk) async {
final impl = await webCryptImpl.aesCtrSecretKey.importJsonWebKey(jwk);
Expand Down Expand Up @@ -329,6 +329,6 @@ final class AesCtrSecretKey {
/// print(jsonEncode(jwk));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]:https://www.rfc-editor.org//rfc7517
Future<Map<String, dynamic>> exportJsonWebKey() => _impl.exportJsonWebKey();
}
6 changes: 3 additions & 3 deletions lib/src/webcrypto/webcrypto.aesgcm.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ part of 'webcrypto.dart';
/// {@macro AesGcmSecretKey-encryptBytes/decryptBytes:example}
///
/// [1]: https://csrc.nist.gov/pubs/sp/800/38/d/final
/// [2]: https://tools.ietf.org/html/rfc7517
/// [2]: https://www.rfc-editor.org/rfc/rfc7517
/// [3]: https://en.wikipedia.org/wiki/Authenticated_encryption
final class AesGcmSecretKey {
final AesGcmSecretKeyImpl _impl;
Expand Down Expand Up @@ -103,7 +103,7 @@ final class AesGcmSecretKey {
/// print(jsonEncode(keyData));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]: https://www.rfc-editor.org/rfc/rfc7517
static Future<AesGcmSecretKey> importJsonWebKey(
Map<String, dynamic> jwk) async {
final impl = await webCryptImpl.aesGcmSecretKey.importJsonWebKey(jwk);
Expand Down Expand Up @@ -282,6 +282,6 @@ final class AesGcmSecretKey {
/// print(jsonEncode(jwk));
/// ```
///
/// [1]: https://tools.ietf.org/html/rfc7517
/// [1]:https://www.rfc-editor.org/rfc/rfc7517
Future<Map<String, dynamic>> exportJsonWebKey() => _impl.exportJsonWebKey();
}
4 changes: 2 additions & 2 deletions lib/src/webcrypto/webcrypto.ecdh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,9 @@ final class EcdhPrivateKey {
// null for length (in this primitive). However, you can always know the right
// length from the curve. Note p512 can provide up to: 528 bits!!!
//
// See: https://tools.ietf.org/html/rfc6090#section-4
// See:https://www.rfc-editor.org/rfc/rfc6090#section-4
// Notice that this is not uniformly distributed, see also:
// https://tools.ietf.org/html/rfc6090#appendix-B
//https://www.rfc-editor.org/rfc/rfc6090#appendix-B
Future<Uint8List> deriveBits(int length, EcdhPublicKey publicKey) async {
final publicKeyImpl = publicKey._impl;

Expand Down