iOS推送javaPNS源码解析四,证书管理类

证书管理类KeystoreManager

顾名思义该类用来管理推送证书的,主要作用是解析证书到适合的格式,比如InputStream流。

private static final String REVIEW_MESSAGE = ” Please review the procedure for generating a keystore for JavaPNS.”;验证证书错误提示语句

 static KeyStore loadKeystore(AppleServer server) throws KeystoreException { 通过服务器获取证书对象
        return loadKeystore(server, server.getKeystoreStream());
    }
    static KeyStore loadKeystore(AppleServer server, Object keystore) throws KeystoreException {
        return loadKeystore(server, keystore, false);通过服务器和证书对象获取证书对象
    }

上边两个方法的具体实现

public static KeyStore loadKeystore(AppleServer server, Object keystore, boolean verifyKeystore) throws KeystoreException {

//如果已经是keyStore,那么直接返回
        if (keystore instanceof KeyStore) {
            return (KeyStore) keystore;
        }

//锁定服务器,好处此服务器不会被其他线程篡改
        synchronized (server) {
            //将KeyStore转化为InputStream
            InputStream keystoreStream = streamKeystore(keystore);
            if (keystoreStream instanceof WrappedKeystore) {
                return ((WrappedKeystore) keystoreStream).getKeystore();
            }
            KeyStore keyStore;
            try {
                keyStore = KeyStore.getInstance(server.getKeystoreType());//根据服务器证书类型新建keyStore
                char[] password = KeystoreManager.getKeystorePasswordForSSL(server);
                keyStore.load(keystoreStream, password);//加载keyStore
            } catch (Exception e) {
                throw wrapKeystoreException(e);
            } finally {
                try {
                    keystoreStream.close();
                } catch (Exception e) {}
            }
            return keyStore;
        }
    }

static Object ensureReusableKeystore(AppleServer server, Object keystore) throws KeystoreException,该方法表示证书是否能够重复使用

public static void verifyKeystoreContent(AppleServer server, Object keystore) throws KeystoreException ,加载证书内容并校验是否为苹果服务器证书
public static void verifyKeystoreContent(KeyStore keystore) throws KeystoreException,解析证书信息,判断是否为苹果证书
static char[] getKeystorePasswordForSSL(AppleServer server)获取服务器中证书密码

static KeystoreException wrapKeystoreException(Exception e) 装饰keyStore异常信息。

static InputStream streamKeystore(Object keystore) throws InvalidKeystoreReferenceException,获取InputStream格式的证书格式

public static void validateKeystoreParameter(Object keystore) throws InvalidKeystoreReferenceException,校验传入的证书参数是否有效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值