feat: add --cert-file

This commit is contained in:
2024-01-05 00:28:55 +08:00
parent c8aafd0307
commit 3493ea36c3
2 changed files with 10 additions and 4 deletions

View File

@@ -53,6 +53,9 @@ public class YubikeyCaArgs {
@Option(names = {"--cert-slot"}, description = "Slot for cert")
String certSlot;
@Option(names = {"--cert-file"}, description = "File for cert(PEM)")
String certFile;
@Option(names = {"--pin"}, description = "Yubikey PIV PIN")
String pin;

View File

@@ -67,15 +67,18 @@ public class YubikeyCaMain {
final PublicKey publicKey;
PrivateKey privateKey = null;
if (StringUtil.isEmpty(args.certSlot)) {
if (StringUtil.isNotEmpty(args.certFile)) {
final String certPem = RFile.from(args.certFile).string();
publicKey = KeyUtil.parsePublicKeyPEM(certPem);
} else if (StringUtil.isNotEmpty(args.certSlot)) {
final PivMeta certPivMeta = CardCliUtil.getPivPublicKey(args.certSlot);
publicKey = certPivMeta.getPublicKey();
} else {
final PKType pkType = getPkTypeFromArgs(args);
if (pkType == null) return;
final KeyPair keyPair = KeyPairTool.instance(pkType).generateKeyPair().getKeyPair();
publicKey = keyPair.getPublic();
privateKey = keyPair.getPrivate();
} else {
final PivMeta certPivMeta = CardCliUtil.getPivPublicKey(args.certSlot);
publicKey = certPivMeta.getPublicKey();
}
final String cardCliCmd = CardCliUtil.getCardCliCmd();