/** * Constructor for child classes * @param cosString is greenfield COSString. * @param type child class type. */ public GFCosString(COSString cosString, final String type) { super(cosString, type); this.value = cosString.get(); this.isHex = cosString.isHexadecimal(); this.containsOnlyHex = cosString.isContainsOnlyHex(); this.hexCount = cosString.getHexCount(); }
public static COSObject construct(final byte[] initValue, final boolean isHex, final long hexCount, final boolean containsOnlyHex) { return new COSObject(new COSString(initValue, isHex, hexCount, containsOnlyHex)); }
public void visitFromString(COSString obj) { this.copy.assign(COSString.construct(obj.get(), obj.isHexadecimal())); }
@Override public String toString() { return this.isHex ? toHexString() : getString(); }
private static byte[] getBytesOfHexString(COSString s) { if (s == null) { return null; } return s.get(); }
/** * @param pkcsData {@link COSString} containing encoded PKCS#7 object. */ public GFPKCSDataObject(COSString pkcsData) { super(PKCS_DATA_OBJECT_TYPE); try { if (!pkcsData.isHexadecimal()) { pkcs7 = new PKCS7(pkcsData.get()); } else { byte[] decodedData = pkcsData.get(); pkcs7 = new PKCS7(decodedData); } } catch (IOException e) { LOGGER.log(Level.FINE, "Passed PKCS7 object can't be read", e); pkcs7 = getEmptyPKCS7(); } }
public static COSObject construct(final byte[] initValue) { return construct(initValue, false); }
@Override public String getHexContents() { if (signature != null && !signature.empty()) { COSString contents = signature.getContents(); if (contents != null) { return contents.getHexString(); } } return null; }
public void visitFromString(COSString obj) { try { this.write(obj.getPrintableString()); } catch (IOException e) { e.printStackTrace(); } }
@Override public InputStream getData() { if (signature != null && !signature.empty()) { COSString contents = signature.getContents(); return contents == null ? null : new ByteArrayInputStream(contents.get()); } return null; }
protected void generateID() { // TODO : finish this method Long idTime = System.currentTimeMillis(); MessageDigest md5; try { md5 = MessageDigest.getInstance("MD5"); md5.update(Long.toString(idTime).getBytes("ISO-8859-1")); COSObject idString = COSString.construct(md5.digest(), true); //TODO : convert to COSArray this.info.getTrailer().setID(idString); } catch (NoSuchAlgorithmException | IOException e) { e.printStackTrace(); } }
@Override public String getHexEncodedOwnerKey() { if (encryption != null && !encryption.empty()) { COSString ownerKey = encryption.getO(); if (ownerKey != null) { return ownerKey.getHexString(); } } return null; }
private static void addArrayElements(List<byte[]> res, COSArray arg) { for (COSObject element : arg) { if (element != null && element.getType() == COSObjType.COS_STRING) { res.add(((COSString) element.getDirectBase()).get()); } } }
return COSReal.construct(token.real); case TT_LITSTRING: return COSString.construct(token.getByteValue()); case TT_HEXSTRING: COSObject res = COSString.construct(token.getByteValue(), true, token.getHexCount().longValue(), token.isContainsOnlyHex()); if(this.document == null || !this.document.isEncrypted()) {
@Override public String getHexEncodedUserKey() { if (encryption != null && !encryption.empty()) { COSString userKey = encryption.getU(); if (userKey != null) { return userKey.getHexString(); } } return null; }
public static COSObject construct(final byte[] initValue, final boolean isHex) { return new COSObject(new COSString(initValue, isHex)); }
private static List<byte[]> getStrings(List<COSBase> stringArgs) { if (!stringArgs.isEmpty()) { List<byte[]> res = new ArrayList<>(); COSBase arg = stringArgs.get(0); if (arg != null) { if (arg.getType() == COSObjType.COS_ARRAY) { GFOpTextShow.addArrayElements(res, (COSArray) arg.getDirectBase()); } else { if (arg.getType() == COSObjType.COS_STRING) { res.add(((COSString) (arg.getDirectBase())).get()); } } } return res; } return Collections.emptyList(); }
return COSReal.construct(token.real); case TT_LITSTRING: return COSString.construct(token.getByteValue()); case TT_HEXSTRING: COSObject res = COSString.construct(token.getByteValue(), true, token.getHexCount().longValue(), token.isContainsOnlyHex()); if(this.document == null || !this.document.isEncrypted()) {
public void setString(final String value, final boolean isHex) { if (this.base == null || !this.base.setString(value, isHex)) { this.base = new COSString(); this.base.setString(value); } }
private static String getTrailerID(COSObject ids) { if (ids != null && ids.getType() == COSObjType.COS_ARRAY) { COSArray idArray = (COSArray) ids.getDirectBase(); StringBuilder builder = new StringBuilder(); for (COSObject id : idArray) { if (id.getType() == COSObjType.COS_STRING) { for (byte aByte : ((COSString) id.getDirectBase()).get()) { builder.append((char) (aByte & 0xFF)); } } else { LOGGER.log(Level.SEVERE, "Value of ID key is not a string. Ignoring ID"); } } // need to discard last whitespace return builder.toString(); } return null; }