001/* 002 * Copyright 2015-2024 the original author or authors 003 * 004 * This software is licensed under the Apache License, Version 2.0, 005 * the GNU Lesser General Public License version 2 or later ("LGPL") 006 * and the WTFPL. 007 * You may choose either license to govern your use of this software only 008 * upon the condition that you accept all of the terms of either 009 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. 010 */ 011package org.minidns.record; 012 013import org.minidns.util.Base64; 014 015import java.io.DataInputStream; 016import java.io.DataOutputStream; 017import java.io.IOException; 018 019public class OPENPGPKEY extends Data { 020 021 private final byte[] publicKeyPacket; 022 023 public static OPENPGPKEY parse(DataInputStream dis, int length) throws IOException { 024 byte[] publicKeyPacket = new byte[length]; 025 dis.readFully(publicKeyPacket); 026 return new OPENPGPKEY(publicKeyPacket); 027 } 028 029 OPENPGPKEY(byte[] publicKeyPacket) { 030 this.publicKeyPacket = publicKeyPacket; 031 } 032 033 @Override 034 public Record.TYPE getType() { 035 return Record.TYPE.OPENPGPKEY; 036 } 037 038 @Override 039 public void serialize(DataOutputStream dos) throws IOException { 040 dos.write(publicKeyPacket); 041 } 042 043 @Override 044 public String toString() { 045 return getPublicKeyPacketBase64(); 046 } 047 048 private transient String publicKeyPacketBase64Cache; 049 050 public String getPublicKeyPacketBase64() { 051 if (publicKeyPacketBase64Cache == null) { 052 publicKeyPacketBase64Cache = Base64.encodeToString(publicKeyPacket); 053 } 054 return publicKeyPacketBase64Cache; 055 } 056 057 public byte[] getPublicKeyPacket() { 058 return publicKeyPacket.clone(); 059 } 060}