parseDerSPKI function
Parses a DER SubjectPublicKeyInfo into an uncompressed P-256 point
(0x04 || x || y), verifying the fixed secp256r1 header.
Implementation
Uint8List parseDerSPKI(Uint8List derBytes) {
if (derBytes.length !=
SECP256R1_SPKI_HEADER.length + PASSKEY_UNCOMPRESSED_PUBLIC_KEY_SIZE) {
throw ArgumentError('Invalid DER length');
}
for (var i = 0; i < SECP256R1_SPKI_HEADER.length; i++) {
if (derBytes[i] != SECP256R1_SPKI_HEADER[i]) {
throw ArgumentError('Invalid spki header');
}
}
if (derBytes[SECP256R1_SPKI_HEADER.length] != 0x04) {
throw ArgumentError('Invalid point marker');
}
return Uint8List.fromList(derBytes.sublist(SECP256R1_SPKI_HEADER.length));
}