Para responder a su primera pregunta, esto se basa en el RFC enlace (sección 4)
El nombre del algoritmo faltante tiene que ver con el formato de codificación utilizado al codificar, es decir, pkcs # 1 vs pkcs # 8. El primero no contiene el algorithmIdentifier y, por lo tanto, el nombre algo (EC, RSA, etc.) se incluye en la etiqueta. Sin embargo, pkcs # 8 encapsula el identificador de algoritmo y, por lo tanto, se omite en la etiqueta.
por ejemplo, el formato pkcs # 8 para clave privada es este:
PrivateKeyInfo ::= SEQUENCE {
version Version,
privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
privateKey PrivateKey,
attributes [0] IMPLICIT Attributes OPTIONAL }
Version ::= INTEGER
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
PrivateKey ::= OCTET STRING
Attributes ::= SET OF Attribute
Para aclarar, no hay nada que impida representar la clave pública en el formato pkcs # 1 y, por lo tanto, crear un encabezado del tipo: ----- BEGIN EC PUBLIC KEY -----. Así que parece que la codificación particular producida está de acuerdo con el conjunto de codificación predeterminado para la herramienta (aunque no estoy seguro de esto). Sin embargo, cualquier herramienta / biblioteca decente debe poder manejar cualquiera de los dos formatos, incluso cuando se usan formatos diferentes para las claves públicas y privadas del mismo par de claves.