SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
publicKey BIT STRING }
由上可知X509公钥标准包含两部分:算法标识、公钥数据。
其中算法标识algorithm部分,其实有包含了两部分:算法ID和公钥参数,不同的算法公钥参数的结构也有差别。
其中公钥数据publicKey部分,不同算法的公钥又有自己不同的结构。
RSA公钥数据结构
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER, -- e
}
ECC公钥数据结构
ECPoint ::= OCTET STRING
ECC的公钥结构就是公钥点(ECPoint)的X和Y分量编码后的OCTET STRING