স্বাক্ষরিত গিট কমিট যাচাই করছেন?


96

এর নতুন সংস্করণগুলির gitসাথে পিজিপি কী দিয়ে স্বতন্ত্র কমিট (ট্যাগ ছাড়াও) সাইন ইন করা সম্ভব:

git commit -m "some message" -S

এবং আপনি এই স্বাক্ষরগুলি বিকল্পের git logসাথে আউটপুটটিতে প্রদর্শন করতে পারেন --show-signature:

$ git log --show-signature
commit 93bd0a7529ef347f8dbca7efde43f7e99ab89515
gpg: Signature made Fri 28 Jun 2013 02:28:41 PM EDT using RSA key ID AC1964A8
gpg: Good signature from "Lars Kellogg-Stedman <lars@seas.harvard.edu>"
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date:   Fri Jun 28 14:28:41 2013 -0400

    this is a test

কিন্তু আউটপুট গ্রেপিং ব্যতীত অন্য প্রদত্ত প্রতিশ্রুতিতে স্বাক্ষরটি প্রোগ্রামোগ্রাফিকভাবে যাচাই করার কোনও উপায় আছে git logকি? আমি কমিটের সমতুল্যের সন্ধান করছি git tag -v- এমন একটি যা একটি প্রস্থান কোড সরবরাহ করবে যা প্রদত্ত প্রতিশ্রুতিতে বৈধ স্বাক্ষর ছিল কিনা তা নির্দেশ করে।


4
আমি মনে করি এটি হওয়া উচিত git commit ...এবং git log ...। আমি যতদূর জানি, gpgসাবকম্যান্ডগুলি যোগ করা হয়নি যা gitস্বচ্ছভাবে পাস হয় ... আমার সাথে পরীক্ষার জন্য কোনও রেপো নেই, তবে কি git show --show-signature <commitish>কাজ করে?
twalberg

show_signatureকেবলমাত্র আউটপুটগুলিতে জিনিসগুলি যুক্ত করে ( github.com/git/git/blob/master/log-tree.c#L370 দেখুন )।
এমিল সিট

দ্রষ্টব্য: শীঘ্রই আপনার --rawকাছে git verify-tag/ থাকবে git verify-commit। দেখুন নিচের আমার উত্তর
VonC

4
নোট: Git সঙ্গে 2.11 (Q4 ই 2016), git logপ্রবর্তন অতিরিক্ত স্থিতি কোডগুলি E, X, Y, Rজন্য ERRSIG, EXPSIG, EXPKEYSIG, এবং REVKEYSIG, তাই একজন ব্যবহারকারী যে %G?আরো তথ্য দেয়। দেখুন নীচের আমার সম্পাদিত উত্তর
VonC

4
Git 2.26 (Q1 2020) এর gpg.minTrustLevelসাহায্যে git verify-tag/ ব্যবহার করার সময় নতুন কনফিগারেশন সহায়তা করতে পারে verify -commit। দেখুন নীচের আমার সম্পাদিত উত্তর
ভনসি

উত্তর:


115

সন্ধান ইঞ্জিনের মাধ্যমে কেউ এই পৃষ্ঠায় আসার ক্ষেত্রে, যেমন আমি করেছি: প্রশ্ন পোস্ট হওয়ার পরে দুই বছরে নতুন সরঞ্জামগুলি উপলব্ধ করা হয়েছে: এই কাজের জন্য এখন গিট কমান্ড রয়েছে: git verify-commitএবং git verify-tagপ্রতিশ্রুতিগুলি যাচাই করতে এবং ব্যবহার করা যেতে পারে ট্যাগ যথাক্রমে।


34

দ্রষ্টব্য: 2.5 গিট পর্যন্ত git verify-commitএবং git verify-tagকেবল একটি মানব পাঠযোগ্য বার্তা প্রদর্শিত হয়েছে।
আপনি যদি চেকটি স্বয়ংক্রিয় করতে চান তবে গিট 2.6+ (Q3 2015) অন্য আউটপুট যুক্ত করে।

দেখুন e18443e কমিট , aeff29d কমিট , ca194d5 কমিট , 434060e কমিট , 8e98e5f কমিট , a4cc18f কমিট , d66aeff কমিট দ্বারা (21 জুন 2015) ব্রায়ান মি। কার্লসন ( bk2204)
( জুনিও সি হামানো দ্বারা মার্জড gitster- মধ্যে ba12cb2 কমিট , 03 আগস্ট 2015)

verify-tag/ verify-commit: কাঁচা জিপিজি স্থিতির তথ্য মুদ্রণের জন্য বিকল্প যুক্ত করুন

verify-tag/verify-commit ডিফল্টরূপে মান-ত্রুটিতে মানব-পঠনযোগ্য আউটপুট প্রদর্শন করে।
যাইহোক, কাঁচা জিপিজি স্থিতির তথ্যে অ্যাক্সেস পাওয়াও দরকারী হতে পারে, যা মেশিন-পঠনযোগ্য, স্বাক্ষর নীতিটি স্বয়ংক্রিয়ভাবে প্রয়োগের অনুমতি দেয়

মানব-পঠনযোগ্য ফর্ম্যাটের পরিবর্তে মানক ত্রুটিতে জিপিজি স্থিতির তথ্য উত্পাদন করতে একটি --rawবিকল্প যুক্ত করুন verify-tag

প্লাস:

verify-tagস্বাক্ষরটি ভাল থাকলে তবে কীটি অবিশ্বস্ত হলে সফলভাবে প্রস্থান করে। verify-commitব্যর্থতা থেকে প্রস্থান।
আচরণে এই পরিবর্তনটি অপ্রত্যাশিত এবং অযাচিত। আগে
থেকেই verify-tagবিদ্যমান তাই verify-commitভাগ করার verify-tagআচরণের জন্য একটি ব্যর্থ পরীক্ষা যুক্ত করুন ।


গিট 2.9 (জুন 2016) গিট মার্জ ডকটি আপডেট করুন :

দেখুন কমিট 05a5869 (13 মে 2016) দ্বারা কেলার Fuchs ( ``)
সহায়তায়: জুনিও সি হামানো ( gitster)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট be6ec17 , 17 মে 2016)

--verify-signatures:
--no-verify-signatures:

মার্জ হওয়া পাশের শাখার টিপ কমিটটি একটি বৈধ কী, অর্থাৎ একটি বৈধ ইউআইডি রয়েছে এমন একটি কী
দ্বারা স্বাক্ষরিত হয়েছে তা যাচাই করুন : ডিফল্ট ট্রাস্ট মডেলে, এর অর্থ স্বাক্ষর কীটি বিশ্বস্ত কী দ্বারা স্বাক্ষরিত হয়েছে। যদি পাশের শাখার টিপ কমিট কোনও বৈধ কী সহ স্বাক্ষরিত না হয় তবে মার্জটি বাতিল করা হবে


গিট আপডেট করুন 2.10 (Q3 2016)

দেখুন b624a3e কমিট দ্বারা (16 আগস্ট 2016) লিনাস টোরভাল্ডস ( torvalds)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 83d9eb0 , 19 আগস্ট 2016)

gpg-interface: পিজিপি স্বাক্ষরগুলি যাচাই করার সময় "দীর্ঘ" কী বিন্যাসের আউটপুট পছন্দ করুন

"git log --show-signature " এবং অন্যান্য কমান্ডগুলি যা পিজিপি স্বাক্ষরটির যাচাইয়ের স্থিতি প্রদর্শন করে এখন 32-বিট কী-আইডি হিসাবে গত শতাব্দীর দীর্ঘ-কি-আইডি দেখায়।

অতীতে আটকে থাকা বাইনারি বিতরণকারীরা যদি তাদের পুরানো কোডবেজে নিয়ে যেতে চান তবে লিনাসের মূলটি রক্ষণাবেক্ষণের ট্র্যাকটিতে প্রয়োগ করতে পুনরায় চাপ দেওয়া হয়েছিল।


গিট 2.11+ (Q4 2016) এমনকি আরও সুনির্দিষ্ট হবে।

দেখুন 661a180 কমিট (12 অক্টোবর 2016) দ্বারা মাইকেল জে Gruber ( mjg)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে 56d268b কমিট 26 অক্টোবর 2016)

%G?চমত্কার ফর্ম্যাট স্পেসিফায়ারে জিপিজি যাচাইকরণের স্থিতি " " মেয়াদউত্তীর্ণ কী দ্বারা তৈরি স্বাক্ষর, প্রত্যাহারকৃত কী দ্বারা তৈরি করা একটি স্বাক্ষর ইত্যাদির পার্থক্য করার পক্ষে যথেষ্ট সমৃদ্ধ ছিল না,
তাদের প্রকাশের জন্য নতুন আউটপুট চিঠিগুলি বরাদ্দ করা হয়েছে

জিপিজি 2 এরdoc/DETAILS মতে :

প্রতিটি স্বাক্ষর কোডগুলি একমাত্র জন্য GOODSIG, BADSIG, EXPSIG, EXPKEYSIG, REVKEYSIGবা ERRSIGনির্গত করা হবে না।

git pretty-formatডকুমেন্টেশন এখন অন্তর্ভুক্ত:

  • ' %G?': শো
    • "G " একটি ভাল (বৈধ) স্বাক্ষরের জন্য,
    • Bখারাপ স্বাক্ষরের জন্য " "
    • " U" অজানা বৈধতা সহ একটি ভাল স্বাক্ষরের জন্য,
    • " X" একটি ভাল স্বাক্ষরের জন্য মেয়াদ শেষ হয়ে গেছে,
    • " Y" মেয়াদ উত্তীর্ণ কী দ্বারা তৈরি ভাল স্বাক্ষরের জন্য,
    • " R" একটি ভাল একটি প্রত্যাহার কী দ্বারা তৈরি স্বাক্ষরের জন্য,
    • " E" যদি স্বাক্ষরটি পরীক্ষা করা যায় না (যেমন অনুপস্থিত কী) এবং কোনও স্বাক্ষরের জন্য "এন"

গিট 2.12 (কিউ 1 2017) " git tag" এবং " git verify-tag" জিপিজি যাচাইয়ের স্থিতি তাদের --format=<placeholders>আউটপুট ফর্ম্যাটে রাখতে শিখেছে

দেখুন 4fea72f কমিট , কমিট 02c5433 , কমিট ff3c8c8 (17 জানুয়ারী 2017) দ্বারা সান্টিয়াগো টরেস ( SantiagoTorres)প্রতিশ্রুতিবদ্ধ 07d347c
দেখুন , 2111aa7 প্রতিশ্রুতিবদ্ধ , প্রতিশ্রুতিবদ্ধ 94240b9 (17 জানুয়ারী 2017) লুকাশ পিউহেরিঞ্জার (``) দ্বারা(দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 237bdd9 , 31 জানুয়ারী 2017)
gitster

GPG যাচাইকরণের ডিফল্ট আউটপুট নিঃশব্দে যুক্ত --formatকরা git tag -vএবং এর পরিবর্তে ফর্ম্যাট করা ট্যাগ অবজেক্টটি মুদ্রণ করে।
এটি জিপিজি যাচাইয়ের পরে কল বস্তু শিরোনামের ট্যাগ নাম সহ রেফ / ট্যাগগুলি থেকে ট্যাগনামটি ক্রস-চেক করতে দেয়।


গিট 2.16 (কিউ 1 2018) merge.verifySignaturesকনফিগারেশন ভেরিয়েবল সহ কমিটের স্বাক্ষর যাচাইকরণটিকে আরও বেশি স্বয়ংক্রিয় করার অনুমতি দেবে ।

দেখুন কমিট 7f8ca20 , ca779e8 কমিট (10 ডিসেম্বর 2017) দ্বারা ( ``) হান্স জেরি Illikainen
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 0433d53 , 28 ডিসেম্বর 2017)

merge: এর জন্য কনফিগারেশন বিকল্প যুক্ত করুন verifySignatures

git merge --verify-signatures শাখার টিপ কমিটটি মার্জ করা হচ্ছে তা যাচাই করার জন্য ব্যবহার করা যেতে পারে, তবে প্রতিবার এটি নির্দিষ্ট করা জটিল।

ডিফল্টরূপে এই আচরণটি সক্ষম করে এমন একটি কনফিগারেশন বিকল্প যুক্ত করুন, যা এর দ্বারা ওভাররাইড হয়ে যেতে পারে --no-verify-signatures

git mergeকনফিগ man পৃষ্ঠা এখন লেখা আছে:

merge.verifySignatures:

যদি সত্য হয় তবে এটি --verify-signaturesকমান্ড লাইন বিকল্পের সমতুল্য ।


গিট 2.19 (Q3 2018) আরও বেশি সহায়ক, যেহেতু " git verify-tag" এবং " git verify-commit" gpg --verifyতারা খুঁজে পাওয়া খারাপ বা অবিশ্বস্ত স্বাক্ষরকে সংকেত দিতে " " অন্তর্নিহিত " " এর প্রস্থান স্থিতি ব্যবহার করতে শেখানো হয়েছে ।

নোট: গীত 2.19, সঙ্গে gpg.format"সেট করা যেতে পারে যে openpgp" বা " x509", এবং gpg.<format>.programযে নির্দিষ্ট করার মাধ্যমে "কি প্রোগ্রাম, CMS সঙ্গে X.509 শংশাপত্র করার অনুমতি) ফর্ম্যাটে সাথে মোকাবিলা করার জন্য ব্যবহার করতে ব্যবহৃত হয় gpgsm" এর পরিবর্তে ব্যবহার করা হবে openpgpমাধ্যমে " gnupg"।

জুনিও সি হামানো ( ) দ্বারা 4e5dc9c (09 আগস্ট 2018) কমিট দেখুন । সাহায্যপ্রাপ্ত: ভোজটেক মাইসলিভ ( ) , ব্রায়ান মি। কার্লসন ( ) , এবং জেফ কিং ( )(দ্বারা একীভূত junio সি Hamano - - মধ্যে কমিট 4d34122 , 20 আগস্ট 2018)gitster
VojtechMyslivecbk2204peff
gitster

gpg-interface: gpgকল থেকে কল থেকে প্রস্থান স্থিতির প্রচার করুন

জিপিজি-ইন্টারফেস এপিআই যখন স্বাক্ষরিত ট্যাগগুলির জন্য স্বাক্ষর যাচাইকরণ কোডপথের জন্য একীভূত সমর্থন করে এবং ২০১৫ এর মাঝামাঝি সময়ে v2.6.0-rc0 ~ 114-এ স্বাক্ষরিত কমিট করে, তখন আমরা দুর্ঘটনাক্রমে জিপিজি স্বাক্ষর যাচাইকরণটি ooিলা করে দিয়েছিলাম।

পরিবর্তনের আগে, স্বাক্ষরিত Gকমিটগুলি জিপিজি থেকে " " স্বাক্ষর সন্ধান করে যাচাই করা হয়েছিল , " gpg --verify" প্রক্রিয়াটির প্রস্থান স্থিতি অগ্রাহ্য করার সময়, " স্বাক্ষরিত ট্যাগগুলি কেবল "gpg --verify" মধ্য দিয়ে প্রস্থান স্থিতি দিয়ে যাচাই করা হয়েছিল ।

ইউনিফাইড কোডটি বর্তমানে আমরা " gpg --verify" এর প্রস্থান স্থিতি উপেক্ষা করে সফল কেরিফাইটি ফিরিয়ে দিই যখন স্বাক্ষরটি কী-তে রাখা বিশ্বাসকে বিবেচনা না করেই অপ্রয়োজনীয় কীটির সাথে মেলে (যেমন G" U" ওডের সংযোজনগুলি ছাড়াও , আমরা " " এনআরএসবিডিগুলি গ্রহণ করি )।

অন্তর্নিহিত যখন " gpg --verify" (অথবা gpg.programকনফিগারেশন ভেরিয়েবল দ্বারা নির্দিষ্ট কাস্টম কমান্ড ) এটি করে তখন এই কমান্ডগুলি তাদের প্রস্থান স্থিতির সাথে সংকেত ব্যর্থতা তৈরি করুন ।
এটি সঠিকভাবে যাচাই করলেও অবিশ্বস্ত চাবি দিয়ে তৈরি করা স্বাক্ষরগুলিকে প্রত্যাখ্যান করার জন্য পশ্চাদপটে বেমানান উপায়ে তাদের আচরণকে মূলত পরিবর্তন করে, যেমনটি "gpg --verify আচরণ করে "।

নোট করুন যে কোডটি " gpg" (বা gpg.program) থেকে প্রাপ্ত শূন্য প্রস্থান স্থিতিটিকে ওভাররাইড করে যদি আউটপুট স্বাক্ষরটি ভাল না বলে বা সঠিকভাবে গণনা করে তবে অবিশ্বস্ত কীগুলির সাহায্যে তৈরি করা হয়, "gpg " ব্যবহারকারী আমাদের পারে " ।

আমরা Uএই ফ্যালব্যাক কোড থেকে " " এনআরসিটিড সমর্থনকে বাদ দিতে পারি, তবে এটি একটি প্রতিশ্রুতিতে দুটি পশ্চাদপটে অসঙ্গতিপূর্ণ পরিবর্তন আনতে পারে, সুতরাং আপাতত তা এড়ানো যাক।
পছন্দসই একটি অনুসরণ অনুসরণ তা করতে পারে।


কোনও এনক্রিপশন করার আগে কীটি বিশ্বাসযোগ্য / স্বাক্ষরিত হওয়া দরকার

বিশ্বাসের দিক থেকে, অগ্রগতি রয়েছে:
গিট 2.26 (কিউ gpg.minTrustLevel12020 ) এর সাথে, বিভিন্ন স্বাক্ষর যাচাইকরণ কোডড প্রয়োজনীয় ন্যূনতম বিশ্বাসের স্তরটি বলতে কনফিগারেশন ভেরিয়েবল চালু করা হয়েছিল।

দেখুন কমিট 54887b4 দ্বারা (27 ডিসেম্বর 2019) হান্স জেরি Illikainen ( illikainen)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে 11ad30b কমিট , 30 জানুয়ারী 2020)

gpg-interface: একটি কনফিগারেশন বিকল্প হিসাবে minTrustLevel যোগ করুন

সাইন-অফ-বাই: হান্স জেরি ইলিকাইনেন

পূর্বে, মার্জ এবং পুল ক্রিয়াকলাপগুলির জন্য স্বাক্ষর যাচাইকরণের চেকটি যদি হয় TRUST_NEVERবা এর TRUST_UNDEFINEDমধ্যে একটি বিশ্বাসের স্তর ছিল কিনা তা পরীক্ষা করে verify_merge_signature()

যদি ঘটনাটি ছিল, প্রক্রিয়া die() 'ডি।

অন্যান্য কোড পাথ যে স্বাক্ষর যাচাই করেছে তা সম্পূর্ণরূপে থেকে ফেরত কোডের উপর নির্ভর করে check_commit_signature()

এবং একটি ভাল কী দিয়ে তৈরি স্বাক্ষর, তার বিশ্বাসের স্তরটি নির্বিশেষে, এর দ্বারা বৈধ বলে বিবেচিত হয়েছিল check_commit_signature()

আচরণের এই পার্থক্যটি ব্যবহারকারীদের ভ্রান্তভাবে অনুমান করতে পারে যে তাদের কীরিংয়ের একটি কী এর বিশ্বাসের স্তরটি সর্বদা গিট দ্বারা বিবেচিত হয়, এমনকি যেখানে এটি না হয় এমন ক্রিয়াকলাপের জন্যও (যেমন একটি verify-commitবা কোনও সময় verify-tag)

gpg-interface.cকী / স্বাক্ষর স্থিতি এবং কাঠামোর resultসদস্যের সর্বনিম্ন-দুইটি স্তর স্তর থেকে ফলাফল সংরক্ষণ করে এটি কাজ করার উপায় ছিল signature_check(এই স্থিতি রেখাগুলির শেষটি যা লিখিত হয়েছিল)result )।

এগুলি উপ-বিভাগের অধীনে জিপিজিতে নথিভুক্ত General status codesএবংKey related যথাক্রমে।

জিপিজি ডকুমেন্টেশন TRUST_ statusকোডগুলিতে নিম্নলিখিতটি বলে :


এগুলি বেশ কয়েকটি অনুরূপ স্থিতি কোড:

- TRUST_UNDEFINED <error_token>
- TRUST_NEVER     <error_token>
- TRUST_MARGINAL  [0  [<validation_model>]]
- TRUST_FULLY     [0  [<validation_model>]]
- TRUST_ULTIMATE  [0  [<validation_model>]]

ভাল স্বাক্ষরগুলির জন্য স্বাক্ষর তৈরির জন্য ব্যবহৃত কীটির বৈধতা চিহ্নিত করতে এই স্থিতি রেখার একটি নির্গত হয়।
ত্রুটি টোকেন মান বর্তমানে gpgsm দ্বারা নির্গত হয়।


আমার ব্যাখ্যাটি হ'ল বিশ্বাসের স্তরটি কী এবং / অথবা স্বাক্ষরের বৈধতার চেয়ে ধারণাগতভাবে পৃথক।

এটি পুরানো কোডের অনুমানও ছিল বলে মনে হয় check_signature()যেখানে ' G' (যেমন হিসাবে GOODSIG) এবং ' U' (যেমন হিসাবে TRUST_NEVERবাTRUST_UNDEFINED) উভয়কেই একটি সাফল্য বিবেচনা করা হয়েছিল হয়েছিল।

দুটি মামলা যেখানে 'ফলে U' বিশেষ অর্থ ছিল ছিল verify_merge_signature()(যেখানে কারণে ঘটা gitথেকে die()) এবং format_commit_one()(যেখানে এটি আউটপুট প্রভাবিত%G? বিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা)।

আমি মনে করি TRUST_ statusযে লাইনের প্রসেসিংয়ের রিফ্যাক্টরটি বুদ্ধিমান হয়ে উঠেছে যাতে ব্যবহারকারীরা স্বতন্ত্র অংশের পরিবর্তে বিশ্বব্যাপী প্রয়োগ করা ন্যূনতম বিশ্বাসের স্তরটি কনফিগার করতে পারেনgit (যেমন মার্জ করা) এটি নিজে করে (পশ্চাৎ সামঞ্জস্যের সাথে কোনও গ্রেস পিরিয়ড বাদে) do

আমি আরও মনে করি যে বিশ্বাসের স্তরটিকে কী / স্বাক্ষর স্থিতির মতো একই স্ট্রাক্ট সদস্যের মধ্যে সংরক্ষণ না করা আমাদের অর্থবোধ করে।

যদিও কোনও TRUST_ statusকোডের উপস্থিতি ইঙ্গিত দেয় যে স্বাক্ষরটি ভাল (উপরের অন্তর্ভুক্ত স্নিপেটের প্রথম অনুচ্ছেদটি দেখুন), যতদূর আমি বলতে পারি, জিপিজি থেকে স্থিতি রেখার ক্রমটি সুসংজ্ঞাযুক্ত নয়; সুতরাং এটি বিশ্বাসযোগ্য বলে মনে হয় বিশ্বাসের স্তরটি যদি signature_checkকাঠামোর একই সদস্যে সংরক্ষণ করা হয় তবে কী / স্বাক্ষরের স্থিতি দিয়ে ওভাররাইট করা যেতে পারে ।

এই প্যাচ একটি নতুন কনফিগারেশন বিকল্প প্রবর্তন: gpg.minTrustLevel

এটি আস্থা-স্তরের যাচাইকরণকে সুসংহত করে gpg-interface.cএবং কাঠামোতে একটি নতুন trust_levelসদস্য যুক্ত করে signature_check

পশ্চাদগম্য-সামঞ্জস্যতা একটি বিশেষ কেস চালু করে verify_merge_signature()যেমন যদি কোনও ব্যবহারকারী-কনফিগারযোগ্য gpg.minTrustLevelসেট না করে থাকে তবে তা প্রত্যাখ্যান করার পুরানো আচরণ TRUST_UNDEFINEDএবংTRUST_NEVER প্রয়োগ করা হয়।

অন্যদিকে, gpg.minTrustLevelসেট করা থাকলে সেই মানটি পুরানো আচরণকে ওভাররাইড করে।

একইভাবে, %G?বিন্যাস সুনির্দিষ্টভাবে উল্লেখ করা প্রদর্শনী অব্যাহত থাকবে ' U' এর একটি বিশ্বস্ত স্তর আছে একটি কী দিয়ে তৈরি স্বাক্ষরের জন্য TRUST_UNDEFINEDঅথবা TRUST_NEVER,যদিও ' U' অক্ষর আর অস্তিত্ব resultসদস্য signature_checkগঠন।

একটি নতুন ফর্ম্যাট স্পেসিফায়ার, %GTএমন ব্যবহারকারীদের জন্যও প্রবর্তিত করা হয়েছে যা স্বাক্ষরের জন্য সম্ভাব্য সমস্ত বিশ্বাসের স্তরটি দেখাতে চায়।

আরেকটি পদ্ধতির মধ্যে কেবল বিশ্বাসের স্তরের প্রয়োজনীয়তাটি হ্রাস করা উচিত verify_merge_signature()

এটি স্বাক্ষর যাচাই সম্পাদন করে এমন গিটের অন্যান্য অংশের সাথেও আচরণটি সামঞ্জস্য করে তুলত।

যাইহোক, স্বাক্ষর কীগুলির জন্য সর্বনিম্ন বিশ্বাসের স্তরের প্রয়োজনের জন্য এটি বাস্তব-বিশ্বের ব্যবহারের ক্ষেত্রে আছে বলে মনে হয়।

উদাহরণস্বরূপ, কিউবস ওএস প্রকল্পের ব্যবহৃত বিল্ড সিস্টেম বর্তমানে গিট ট্যাগগুলিতে সাইন ইন করতে ব্যবহৃত কীগুলির জন্য সর্বনিম্ন বিশ্বাসের স্তরটি দৃ to় করার জন্য যাচাই-ট্যাগ থেকে কাঁচা আউটপুট পার্স করে ।

git config gpgMan পৃষ্ঠা এখন রয়েছে:

gpg.minTrustLevel:

স্বাক্ষর যাচাইয়ের জন্য সর্বনিম্ন আস্থা স্তর নির্দিষ্ট করে।
যদি এই বিকল্পটি সেট না করা থাকে, তবে মার্জ অপারেশনের জন্য স্বাক্ষর যাচাইকরণের জন্য কমপক্ষে marginalবিশ্বাসের সাথে একটি কী প্রয়োজন ।
স্বাক্ষর যাচাই সম্পাদন করে এমন অন্যান্য ক্রিয়াকলাপগুলিতে কমপক্ষে undefinedবিশ্বাসের সাথে একটি কী প্রয়োজন ।
এই বিকল্পটি সেট করা সমস্ত ক্রিয়াকলাপের জন্য প্রয়োজনীয় আস্থা স্তরকে ওভাররাইড করে। সমর্থিত মান, তাত্পর্য ক্রমবর্ধমান:

  • undefined
  • never
  • marginal
  • fully
  • ultimate

সঙ্গে গীত 2.26 (চতুর্থাংশ 1 2020) , " git show" এবং অন্যগুলি একটি বস্তুর নাম তার ত্রুটি আউটপুট, যা হেক্স এটা দিতে সংশোধন করা হয়েছে কাঁচা বিন্যাসে দিলেন।

show_one_mergetag: হেক্স আকারে নন-প্যারেন্ট মুদ্রণ করুন।

যখন কোনও মার্জেট্যাগ অ-পিতামাতার নাম দেয়, যা অগভীর ক্লোন হওয়ার পরে ঘটতে পারে, এর হ্যাশটি এর আগে কাঁচা ডেটা হিসাবে মুদ্রিত হয়েছিল।
পরিবর্তে এটি হেক্স আকারে মুদ্রণ করুন।

git -C shallow log --graph --show-signature -n1 plain-shallowএকটি পরে পরীক্ষিতgit clone --depth 1 --no-local . shallow


গিট 2.27 (কিউ 22020) এর সাথে, GnuPG- র সাথে ইন্টারফেসের কোডটি রিফ্যাক্টর করা হয়েছে।

প্রতিশ্রুতিবদ্ধ 6794898 দেখুন , f1e3df3 (04 মার্চ 2020) হান্স জেরি ইলিকাইনেন ( illikainen) দ্বারা প্রতিশ্রুতিবদ্ধ করুন
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট fa82be9 , 27 মার্চ 2020)

gpg-interface: check_signature()জিপিজি যাচাইকরণের জন্য পছন্দ করুন

সাইন-অফ-বাই: হান্স জেরি ইলিকাইনেন

এই পরিবর্তে verify_signed_buffer()বাইরের gpg-interface.cব্যবহারের check_signature()পরিবর্তে ব্যবহারের প্রতিশ্রুতিবদ্ধ ।

এটি verify_signed_buffer()ফাইল-স্থানীয় কার্যক্রমে রূপান্তরিত হওয়ায় এটি কেবল অভ্যন্তরীণভাবেই অভ্যন্তরীণভাবে আহ্বান জানায় check_signature()

সেখানে পূর্বে দুই বিশ্বব্যাপী scoped গীত বিভিন্ন স্থানে ব্যবহৃত GPG স্বাক্ষর যাচাই সম্পাদন করতে ফাংশন ছিল: verify_signed_buffer()এবং check_signature()

এখন শুধুমাত্র check_signature()ব্যবহৃত হয়।

verify_signed_buffer()ফাংশন তাড়ান না যেমন মাইকেল Górny দ্বারা বর্ণিত ডুপ্লিকেট স্বাক্ষর

পরিবর্তে এটি কেবল জিপিজি থেকে অ-ভুলভ্রান্ত প্রস্থান কোড এবং কমপক্ষে একটি GOODSIGস্থিতির ক্ষেত্রের উপস্থিতি নিশ্চিত করে ।

এটির বিপরীতে দাঁড়িয়েছে check_signature()যদি একাধিক স্বাক্ষরের মুখোমুখি হয় তবে ত্রুটি ফিরে আসে।

verify_signed_buffer()যদি কলাররা জিপিজি স্থিতি বার্তার বিভিন্ন অংশ নিজেরাই পার্স এবং বৈধতা না দেয় তবে যাচাইয়ের নিম্ন ডিগ্রি সমস্যাযুক্ত করে তোলে ।

এবং এই বার্তাগুলি প্রক্রিয়া করা কোনও কাজটির মতো মনে gpg-interface.cহয় যা ফাংশনটির সাথে সংরক্ষিত রাখা উচিত check_signature()

তদ্ব্যতীত, verify_signed_buffer()জিপিজি স্থিতি রেখার বিষয়বস্তুর উপর নির্ভর করে এমন নতুন কার্যকারিতা প্রবর্তন করা ব্যবহারকে শক্ত করে তোলে।

এখন স্বাক্ষর যাচাইকরণ করে এমন সমস্ত ক্রিয়াকলাপ একক এন্ট্রি পয়েন্টে ভাগ করে gpg-interface.c

এটি জিপিজি স্বাক্ষর যাচাইকরণের পরিবর্তিত বা অতিরিক্ত কার্যকারিতা গিটের সমস্ত অংশে প্রচার করতে সহজ করে তোলে, একই ডিগ্রি যাচাইকরণের বৈকল্পিক প্রান্ত-কেস না করেই


4

কোডটির একটি কার্সারি পরিদর্শন পরামর্শ দেয় যে এরূপ সরাসরি কোনও পদ্ধতি নেই।

গিট উত্সের সমস্ত পরীক্ষাগুলি grepআউটপুট পিনের উপর নির্ভর করে git show(দেখুন পরীক্ষার জন্য t / t7510- সাইনড কমিট.শ দেখুন )।

--pretty "%H %G?%"পার্স করা সহজ করার জন্য এমন কিছু ব্যবহার করে আপনি আউটপুট কাস্টমাইজ করতে পারেন ।

এটি প্রদর্শিত হয় আপনি git mergeস্বাক্ষর যাচাই করতে চাইতে পারেন তবে আবার, এর পরীক্ষাগুলি নির্ভর করে grep(দেখুন টি / t7612- নিমজ্জন-verify-signatures.sh দেখুন )। দেখে মনে হচ্ছে কোনও অবৈধ স্বাক্ষর git mergeএকটি খারাপ স্বাক্ষর দিয়ে প্রস্থান করবে , সুতরাং আপনি সম্ভবত আজ কোথাও একটি পরীক্ষা মার্জ করে এবং এই মার্জটিকে ছুঁড়ে ফেলে এটিকে হ্যাক করতে পারেন তবে এটি কেবল গ্রেপ কল করার চেয়েও খারাপ বলে মনে হচ্ছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.