private KeyManager<PublicKeyVerify> publicKeyVerifyKeyManager(String typeUrl) throws GeneralSecurityException { switch (typeUrl) { case EcdsaVerifyKeyManager.TYPE_URL: return new EcdsaVerifyKeyManager(); case Ed25519PublicKeyManager.TYPE_URL: return new Ed25519PublicKeyManager(); default: throw new GeneralSecurityException( String.format( "No support for primitive 'PublicKeyVerify' with key type '%s'.", typeUrl)); } } }
/** @param serializedKey serialized {@code EcdsaPublicKey} proto */ @Override public PublicKeyVerify getPrimitive(ByteString serializedKey) throws GeneralSecurityException { try { EcdsaPublicKey pubKey = EcdsaPublicKey.parseFrom(serializedKey); return getPrimitive(pubKey); } catch (InvalidProtocolBufferException e) { throw new GeneralSecurityException("expected serialized EcdsaPublicKey proto", e); } }
/** @param key {@code EcdsaPublicKey} proto */ @Override public PublicKeyVerify getPrimitive(MessageLite key) throws GeneralSecurityException { if (!(key instanceof EcdsaPublicKey)) { throw new GeneralSecurityException("expected EcdsaPublicKey proto"); } EcdsaPublicKey keyProto = (EcdsaPublicKey) key; validate(keyProto); ECPublicKey publicKey = EllipticCurves.getEcPublicKey( SigUtil.toCurveType(keyProto.getParams().getCurve()), keyProto.getX().toByteArray(), keyProto.getY().toByteArray()); return new EcdsaVerifyJce( publicKey, SigUtil.toHashType(keyProto.getParams().getHashType()), SigUtil.toEcdsaEncoding(keyProto.getParams().getEncoding())); }